#[non_exhaustive]pub enum GateExtra {
Show 14 variants
DuplicateStems {
divergent: usize,
baselined: usize,
unbaselined: Vec<String>,
stale: Vec<String>,
divergent_stems: Vec<String>,
},
Sigma {
entity_types: usize,
roles: usize,
symbols: usize,
contracts_checked: usize,
violations: usize,
formal_total: usize,
formal_prose: usize,
},
Relations {
relations_n: usize,
contracts_with_relations: usize,
roles_used: Vec<String>,
cycles: Vec<String>,
legacy_depends_on: usize,
legacy_unresolved_depends_on: usize,
violations: usize,
},
Evidence {
contracts_checked: usize,
contracts_with_evidence: usize,
entity_types_checked: usize,
entity_types: Vec<String>,
levels_source: String,
by_level: Vec<String>,
census_git_sha: Option<String>,
unresolved_git_shas: usize,
violations: usize,
},
ValidUnder {
worlds: Vec<String>,
contracts_checked: usize,
kernel_contracts: usize,
contracts_with_valid_under: usize,
contracts_without_valid_under: usize,
baseline: Option<usize>,
by_world: Vec<String>,
violations: usize,
},
TheoremPairing {
lean_base: String,
book_pages: usize,
theorem_modules: usize,
paired: usize,
unpaired_theorem_modules: usize,
baseline: Option<usize>,
unpaired: Vec<String>,
violations: usize,
},
DependsOnPresent {
contracts_checked: usize,
kernel_contracts: usize,
contracts_without_depends_on: usize,
baseline: Option<usize>,
violations: usize,
},
ProvedIsDerived {
summary: Option<String>,
summary_error: Option<String>,
summary_green: bool,
contracts_checked: usize,
proved_claims: usize,
underived_proved_claims: usize,
baseline: Option<usize>,
underived: Vec<String>,
violations: usize,
},
ChallengeFresh {
lean_dir: String,
files: usize,
stale: Vec<String>,
unrestated: Vec<String>,
},
Shapes {Show 25 fields
shapes_n: usize,
focus_nodes_n: usize,
pc_shape: String,
plant_violations: usize,
violations: usize,
warnings: usize,
by_shape: Vec<String>,
triples: usize,
armed_shapes: Vec<String>,
not_armed_shapes: Vec<String>,
declines: Vec<String>,
unarmed_violations: usize,
by_entity_type: BTreeMap<String, usize>,
controls: Box<ShapesControls>,
receipts: usize,
witnesses: usize,
hex_mismatches: usize,
unmeasured_rows: usize,
w3c_cases_passed: usize,
w3c_cases_n: usize,
counters: Box<ShapesCounters>,
release: Option<Box<ReleaseStats>>,
readme: MeasuredSet,
claude_md: MeasuredSet,
ratchets: Ratchets,
},
Consistency {
checkable_n: usize,
units: usize,
unencoded_edges: usize,
pc_checker: String,
core: Vec<String>,
violations: usize,
witness: WitnessReport,
},
Refines(Box<RefinesCounters>),
Bindings(Box<BindingsCounters>),
Refinement(Box<RefinementCounters>),
}Expand description
Out-of-band structured detail for gates that post-date the frozen GateDetail
vocabulary.
This type did not exist in provable-contracts 0.3.1, so no 0.3.1 program names
it and none can match it. That is what makes it extensible where GateDetail is
not, and it is #[non_exhaustive] from birth so the next post-0.3.1 gate does
not have to repeat this exercise.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
DuplicateStems
PV-DUP-001: contract stems claimed by several files with divergent content.
Fields
Sigma
ONT-2b: what Σ declares and what the corpus was checked against.
Fields
Relations
ONT-4: the corpus’s typed relations, checked against Σ’s roles.
Fields
Evidence
ONT-8: one evidence block — PROV-O names, one L-enum, every entity type.
Fields
entity_types_checked: usizeDistinct entity.type among the contracts carrying evidence — counted, never branched on (R-17).
levels_source: Stringenum: levels are parsed through ProofLevel, never matched against a list kept in the gate.
census_git_sha: Option<String>The census git_sha a [V] claim binds to; None (the 2026-09-16 ruling) binds it to the repository.
ValidUnder
ONT-7: kernel-kind contracts carry a world index (metadata.valid_under.world, a key of Σ’s worlds).
Fields
contracts_without_valid_under: usizeKernel-kind contracts carrying none — the debt, shrink-only against the baseline.
TheoremPairing
PVL-001 EV-11: Lean theorem modules named by a book page — the unpaired_theorem_modules ratchet.
Fields
DependsOnPresent
PVL-001 EV-11: kernel-kind contracts with an empty metadata.depends_on — the ratchet.
Fields
contracts_without_depends_on: usizeKernel-kind contracts whose metadata.depends_on is empty — the debt, shrink-only.
ProvedIsDerived
PVL-001 EV-8a (#4202): status: proved claims no green discharge-summary.json derives — the ratchet.
Fields
underived_proved_claims: usizeOf those, not derived — the debt, shrink-only against the baseline, and it must reach 0.
ChallengeFresh
PVL-001 EV-7a (#4200): <lean>/Challenge/ against its regeneration (pv challenge check).
Fields
Shapes
ONT-4b: the shapes gate — every shape: block over the extracted graph, with the plant.
Fields
armed_shapes: Vec<String>ONT-4c1 (§3.9 per-shape arming): shapes that feed the verdict, in corpus order.
not_armed_shapes: Vec<String>Shapes computed and reported but not armed — their violations are in unarmed_violations.
declines: Vec<String>#3610: shapes that graded ZERO focus nodes, named — the reach the gate did not have.
A separate list from not_armed_shapes on purpose. “Not armed by policy” and “armed and
measured nothing” are different facts, and folding the second into the first would file a
vacuity as a deliberate choice — which is how the defect hid in the first place.
This carries EVERY shape that graded zero, armed or unarmed, and it is the only list
any of them appears in: a vacuity is in neither armed_shapes (the tool’s claim about
what it MEASURED) nor not_armed_shapes (a policy choice it never made).
The two differ in what they do to the verdict, not in whether they are listed here. An
ARMED vacuity drives the verdict to Unknown(NoFocus) and the run declines — unless an
armed shape that DID grade something found a violation, in which case the verdict is
Fail (a measured violation outranks a vacuity, #3622). An UNARMED one leaves the
verdict alone, because it never fed it. Both are named, because a reader
needs to know the gate looked at nothing for them either way.
An earlier draft of this comment said an armed vacuity “does not reach here at all”, which was false — nothing returns early at the verdict, and both kinds reach this field. A quorum lane caught the sentence; the code beside it had the matching bug.
unarmed_violations: usizeViolations from unarmed shapes (named in the findings as warnings; never in the meet).
by_entity_type: BTreeMap<String, usize>Focus nodes each extractor produced: pv-contract, gguf, apr-model.
controls: Box<ShapesControls>The positive controls (pc_extract, pc_shapes) and ONT-4c5’s capability_cells, boxed and
FLATTENED: the JSON keys stay top-level where the §5 probes read them, and the variant stays under
clippy’s large-enum-variant bound (it sat exactly at it before ONT-4c5).
w3c_cases_passed: usizeONT-4b2: vendored W3C SHACL-Core cases that passed this run, and how many are vendored.
counters: Box<ShapesCounters>The ONT-4b2 extractor counters and ONT-4d’s inheritance, FLATTENED into this object: the JSON keys
(symbols_resolved, …, inherited_shapes_applied) are unchanged. They are boxed only so the variant
stays under clippy’s large_enum_variant once ONT-4d’s two fields joined it.
release: Option<Box<ReleaseStats>>aprender#3715: what extract:release-evidence derived — absent unless a release subject was given.
readme: MeasuredSetONT-4c (v4.14): the README claim commands a merge-path workflow runs — the MEASURED set F-33 compares.
claude_md: MeasuredSetONT-4c (v4.14): the same for CLAUDE.md (extract:llm-context).
Consistency
ONT-5: the typed relations are jointly satisfiable, by a witness pv-sat wrote and this run re-checked.
Fields
checkable_n: usizeClauses a typed relation produced (depends_on/refines implications, contradicts conflicts).
witness: WitnessReportThe witness this run checked.
Refines(Box<RefinesCounters>)
ONT-4e (R-20): every A refines B is Liskov, by a witness pv-sat wrote and this run re-checked.
Bindings(Box<BindingsCounters>)
ONT-3a: every implemented/partial binding resolves to workspace code, or the allowlist names it.
Refinement(Box<RefinementCounters>)
ONT-3b: every model_of resolves, and the unrefined-module count holds its shrink-only baseline.