Repository navigation
Spine A Stage 0: the guarantee measurement schema (ladder-measurement-schema) - #7572
Conversation
The analysis note landed as an orphan doc: gunbc.doc_graph_roots states that "an unbound doc is an orphan, loudly", and CI duly refused at be1a001 with doc_graph_has_no_orphan_docs returning false in both the dag/test/claim and src/v2/lens consumers. Registered as two HandAuthoredDocBind rows rather than one, because the analysis binds to two independent carriers and they dissolve on different triggers: - v1.compiler.infer module_skips_direct_call_arg_check — the one named violation of the dimension contract's "no escape hatch" clause (docs/thesis/correctness-dimensions.md), exempting v2.* and v1.compiler.* from direct-call argument checking. - v2.std.constraints solve_constraints — passes graph.root as source_facts, algebra AND the sole candidate, so the grounding proof reduces to well_formed(root) and is relabelled CanonicalGrounding. Green by execution, both directions: RED is the CI failure at be1a001; GREEN is all five witnesses in dag/test/claim/doc_reachability_witness_test.dag plus doc_graph_is_clean in src/v2/lens/doc_reachability_test.dag passing locally against the live docs/ tree. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…rections adopted, receipts verified
Adopted (all verified on main this pass):
- Cardinality reclassified UNEXPRESSIBLE -> RepresentableButForgeable, not
statically propagated: v2.std.refinement exists, NonEmptyList fixture +
green cardinality_fold_propagation_test exist, and
refined_vacuous_stub_pack's Rejected arm returns Refined { base } (the
carrier proves nothing). New Sec 4b: the operator independently
re-directed this exact guarantee on 2026-07-04
(interface-summary-declared-use-arity.md Sec 3.1, "hard error in the
language") — the intent is not lost; the lattice design pass (FLAG E)
never started.
- Failure history rewritten (Sec 2): the exemption dates to 2026-06-08
(a13fb57), pre-bankruptcy; correctness-dimensions.md marked type
safety "Yes (blocking)" while return position was unchecked — so the
ledger overstated, then the auditable contract was deleted. The
pipeline_steps_empty_arm_note receipt is withdrawn: empty there is a
deliberate total semantics, not a priced-out wall.
- Status vocabulary widened to the review's 11-state lattice; v2 terminal
calibrated (validate_then_compile door + loop-bound wall are real;
InferredTree is still not a proof boundary); application-arity row added
(formal-driven walk, positional fallback for misspelled labels,
ArityMismatch is constructor-arity); PatternLookupBlocked's silent []
arm confirmed (PatternDynamic does diagnose — review corrected there).
- Sec 7b: DESIGN.md is projected from gunbc.design_document, and its "5
behaviors" is stale against v2.std.node's six (Match) — the guarantee
authority lands as .dag rows, never hand-edited prose.
- Sequencing reconciled to 7 stages: claims authority + expecting-red
probe corpus together; zero-resolution method wall now, ambiguity wall
census-first; cardinality vertical slice third.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…el (review 45299) The first HandAuthoredDocBind trigger said "re-homed into DESIGN.md as its specification half" — wording that predates the reconciliation pass's Sec 7b finding that DESIGN.md is a projection of gunbc.design_document. As written, a direct DESIGN.md edit could have satisfied the trigger, which is exactly the Sec 3 parallel-representation failure Sec 7b names. Trigger now requires .dag claim rows projected via gunbc.design_document and states explicitly that a hand edit does not satisfy it. All five doc-reachability witnesses re-run green by execution after the edit. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…the safety ladder as the organizing frame Review 45305, both findings verified correct and fixed: - doc_graph_roots: the two HandAuthoredDocBind rows shared (home, slug), which the carrier's own note defines as the symbolic identity — one doc had two independently removable authority rows. Merged to ONE row whose trigger anchors both carriers (module_skips_direct_call_arg_check, solve_constraints) and gates dissolution on BOTH conditions, with the merge provenance recorded on the carrier. (Observed, not fixed here: module-identity-storage-binding-design and accelerator-demo-roundtrip also carry same-slug duplicate rows — pre-existing, follow-up material.) - Sec 8b's example-0 block still said "unexpressible", contradicting the Sec 4 reclassification and mis-aiming the archetypal RED at inventing a carrier instead of sealing/propagating the one that exists. Rewritten: the RED exercises unforgeable construction + seam propagation, expected refusal at the 0..n -> 1..n seam. Operator direction, same pass: the safety ladder is now Sec 1b, the organizing frame — R3 structurally-impossible / R2 structural guarantee / R1 testable / R0 mitigatable / below-the-floor silent (forbidden, Sec 5). Three rules: floor absolute; climb to a STATED ceiling (mathematical / capability / price — the capability ceiling is unforgeable construction, blocked on reference-level visibility: the keyword set has no private/sealed/opaque); reported rung == measured rung, lens-checked for inflation and stalls. Includes the specimen table (the session's classes placed, cross-representation == as the exemplar full climb) and the non-goals roster (external reality, arbitrary predicates, budgets, optimality, self-governance, byte-identical self-emit — low ceilings BY DESIGN). Stage 1 claim rows gain current_rung / ceiling / next_rung_trigger. All five doc-reachability witnesses re-run green by execution after both file changes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…guarantee-ladder roadmap section
Corrections, each verified against main before adoption:
1. sole_constructor EXISTS (SoleConstructorViolation, sealed-record
specimen) — the DESIGN 4b capability claim ("no private/sealed/opaque
... every proof-carrier is presently forgeable") was false as stated;
corrected to an audited-status claim: sole_constructor is the
candidate wall, completeness for generic carriers unverified. The
earlier keyword-set inference is withdrawn in the Sec 10 ledger.
2. Subject grain: rung honesty is measured at a declared acceptance
boundary; a class's rung is the MINIMUM across in-scope paths (the
interpreter refuses the mislabeled call that order_typed_call_args
reorders for emission). DESIGN 4b meta-obligation 1 amended; Stage-1
carrier gains subject_grain/acceptance_boundary/compile_mode/
realization_target/covered_population.
3. Seed rungs demoted: return/data/generic, field-through-generics,
exhaustiveness, cardinality, full ==-class, and L4 all to
UnknownUnmeasured (compile admission proven is not runtime
disposition proven); census marked specimen-denominated; unknown-
method R0 scoped to the interpretation path.
4. Dissolution on climb amended in DESIGN 4b: production handling
dissolves; the RED + positive controls REMAIN enrolled as the
evidence the higher rung stays real.
5. HandAuthoredDocBind.work -> works: List<DeclarationRef> (40 rows +
witness-test fixture migrated); the guarantee-recovery row now
carries BOTH anchors typed, not one typed + one in prose. Carrier
note records that List admits [] — the exact cardinality gap the
ladder tracks — with the doc-graph witnesses as the interim wall.
6. cardinality_fold_propagation_test relabeled everywhere as manual
value-level specimens (length homomorphism over literals + runtime
refine_byte); "not new design" softened to the accurate scope
statement; the roadmap cardinality node re-briefed accordingly.
7. Sec 8c recast: TypeBinding carries two bespoke coordinates, not a
generic dimension mechanism; extension-vs-redesign is an open audit
question that roadmap pricing must carry.
8. Sec 1 "was not built" -> "never completed as an exhaustive
acceptance contract"; Sec 11 queue updated (correctness-dimensions
done; sole_constructor completeness audit added).
Additions (operator direction): ROADMAP gains the "Guarantee ladder —
climb plan (DESIGN 4b)" section — 13 sized, unowned, dispatchable nodes
in ticket format with dependency edges (probe corpus gates the four
floor walls; carrier gates cardinality slice, emitters, prevalence;
exemption removal gates on the call-shape + inhabitance walls). The
capability node is the sole_constructor completeness audit. State-vs-
work split recorded on the carrier: rung STATE lives in the Stage-1
claims carrier and is emitted (ladder-census-emitters node); roadmap
nodes track CLIMBS.
Verified by execution: main_wet regen (DESIGN.md + ROADMAP.md
projections, never hand-edited); drift 4/4; doc-graph 5/5; roadmap
authority 35/35, model 9/9, focus 12/12.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…bol fields, two-anchor pin, RED control review 45336 was correct: works had a typed carrier and zero readers — representation without a consumer is specification-without-execution (DESIGN 5 / E-10), the exact defect class the guarantee analysis documents, reproduced in its own fix. Consumers now executing in dag/test/claim/doc_reachability_witness_test: - doc_graph_binds_works_all_nonempty — an emptied works list reds - doc_graph_works_refs_carry_symbols — a ref stripped of module_path or decl_name reds - guarantee_recovery_bind_pins_both_anchors — deleting or renaming either of the two anchors (module_skips_direct_call_arg_check, solve_constraints) reds; row multiplicity pinned to one - doc_graph_works_empty_red_control — synthetic empty-works bind fails the predicate, proving the consumer discriminates Predicates live on the authority (gunbc.doc_graph_roots) so the witness consumes the carrier's own definition. Residue named on the carrier note: staleness against the live tree (a ref naming a decl that no longer exists) is NOT witnessed — v1.compiler.* is outside the witness compile pool, so ref-vs-tree resolution is exactly the feature:cited-symbol-resolution lens DESIGN 3 already names; the refs are symbolic citations and inherit that trigger. All 11 doc-reachability witnesses green by execution. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…name the target rung; current rung defers to the census review 45349, third correct catch in this lane: the census demoted method existence (R0 interpretation-path-only), inhabitance (UnknownUnmeasured), and cardinality (UnknownUnmeasured) — and the roadmap nodes, authored before the demotion pass, kept "R0 -> R2" headlines, re-inflating the same claims the same day at the canonical authority. The section's own note says rung STATE lives in the claims carrier, never these nodes; the headlines now name only the TARGET rung and point at the census for current state, per DESIGN 4b's minimum-across-paths rule. ROADMAP.md regenerated via main_wet; roadmap authority witnesses 35/35; drift witnesses 4/4, by execution. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ruction; rung state derived, never stored Executes the operator's 10-item merge bar on #7489 plus reviews 45356/45367 and tidy-deer-730's measured receipts: - guarantee_ladder_section() deleted; 16 nodes + 23 edges enter declared_roadmap_nodes()/declared_roadmap_edges() via guarantee_ladder_nodes()/ guarantee_ladder_edges(), owner "compiler-guarantee" (lane identity, unbound until closing contracts). Page visibility is the typed focus policy (lane added to roadmap_focus_selection). rendered⊆declared∪derived witnessed with a synthetic-ghost RED. - Graph corrections: probe corpus → carrier → baseline-prevalence → walls; prevalence split baseline/residual; new floor-generic-field-constraint-wall and floor-method-ambiguity-wall nodes; primitive-identity-join is a PREREQUISITE of the general method wall (measured: kernel algebra profiles vs interpreter dispatch fork, tidy-deer-730 on gunbc#7484); cardinality ← sole_constructor audit edge; capability node repointed off the parked visibility-grants doc. - Tickets de-stated: no current-rung transcription anywhere; carrier ticket rewritten to the four-carrier split (Requirement/Path/Measurement/derived Disposition, minimum across paths, no stored rung field) — reconciled across §12 Stage 1, DESIGN §4b tail, and the roadmap node (review 45367); five recovered vocabularies kept orthogonal. - HandAuthoredDocBind: primary_work + additional_works (zero-anchor bind unwritable); empty-works RED deleted with its validation, residue named; duplicate (home,slug) rows merged; bind-identity uniqueness witnessed with a synthetic-duplicate RED. - Census: method-existence subject-grain receipt (narrow kernel wall, gunbc#7484); parser silent-separator below-floor row; §11 items 6-8; §10 fourth-pass ledger. Witnesses: roadmap 37/37 (2 new), identity 9/9, focus 12/12, model 9/9, drift 8/8, doc-graph 11/11. ROADMAP.md/DESIGN.md regenerated via main_wet. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…icket law witness_ticket_brief_budget_holds_and_reds red on the CI floor: the carrier, method-existence, and cardinality briefs ran 169/128/111 words. The old section-local placement had escaped this law entirely (the exact ghost-universe defect the verdict named — the budget never saw those nodes); in the declared graph it applies. Briefs trimmed to 94/91/90 with every cut fact already carried in the gap analysis (sec 12 Stage 1b / Stage 2 amendment / the census), which each node links as its carrier. The budget itself is untouched — widening the declaration to satisfy the check is the DESIGN 5 tell, backwards. Page set 28/28, authority set green, regen clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…r (review 45412) document_rendered_nodes was a traversal fork beside roadmap_spawner's doc_all_nodes — same semantics, second walker. The predicates (whole-value ghost count + both RED probes) move INTO roadmap_spawner, the walker's module, because the spawner already imports roadmap_authority and the reverse import would cycle. The authority sheds the walker and its now-unused SectionElement imports; the containment note records both refused first cuts (identity-only membership, review 45406; the duplicate walker, review 45412) since each was this wall violating a law it enforces. Authority 38/38, spawner 16/16, page 28/28. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ne, FrontierAccepted, and the closure door Executes all six items of the operator's post-merge verdict on #7489, each verified against live state first (#7484 and #7485 confirmed OPEN; the anchor confirmed as the #7489 squash; Behavior confirmed six-membered): 1. Every "#7484 landed" claim replaced with open-candidate wording — main's disposition stated separately from candidate branch evidence (the ladder's rung-inflation rule applied to open-PR state; my transcription error). 2. Baseline prevalence anchored: anchor_commit 6c6e2dc (content-addressed, reproducible after in-flight merges; walls no longer race a live tree). 3. GuaranteeDisposition gains FrontierAccepted{diagnostic, accepted_boundary, evidence} — typed/located/counted but still Accepted; specimens MethodExistenceUndecided and GroundingNotDerived. 4. Graph: floor-parse-formation-wall + floor-record-construction-wall + compiler-accepted-obligation-closure added; v2-phase-carriers split into five staged nodes (self-grounding frontier → Translate refusal → inferred- tree completeness → per-kind derivation coverage → target realization gate) with the registry's FIRST TOMBSTONE (superseded_by the frontier node); method←join edge deleted per the zero-via-union nuance (join gates only the >1 wall and realization completeness); residual reroutes through the closure door. 5. DESIGN §4: closed vocabulary corrected to 6 connectives + 6 behaviors, matching v2.std.node.Behavior (the decidability denominator). 6. §1d provisional guarantee grid emitted as hand-authored interim, dissolve-on the carrier-emitted projection. Witnesses: authority 38/38, identity 9/9 (first tombstone passes the count-free tombstone claims), focus 12/12, model 9/9, page 28/28 (all 23 ladder briefs within the 100-word law), spawner 16/16, drift 8/8, doc 11/11. ROADMAP.md and DESIGN.md regenerated via main_wet. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…r (review 45545) The first edge set let compiler-accepted-obligation-closure land while floor-method-ambiguity-wall and cardinality-vertical-slice stayed open — the door would have certified "every required judgment established" over two required-open judgments (the grid marks the cardinality seam P0.2 minimum-R2 and ambiguity part of resolved identity; the verdict's spine routes ALL P0 obligations through the door). Both are now prerequisites of the closure; residual prevalence depends on the door alone. Authority 38/38, focus 12/12, page 28/28, drift 8/8; regen clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…es its subject before anyone measures gunbc.guarantee_measurement carries the vocabulary probes and claims meet through, and nothing else (roadmap node ladder-measurement-schema; operator spine verdict 2026-08-01): GuaranteeClassId/PathId/ProbeId brands; GuaranteePath over four closed minimal axes (subject grain, acceptance boundary incl. the InferToEval/InferToTranslate phase boundaries the containment workstream consumes, compile mode, realization target with GuaranteeTargetName deferred-grounding brand); GuaranteeMeasurementReceipt with every field required (subject_revision x harness_revision x probe_set_digest, reusing std.types.CommitSha and std.content_hash); ProbeObservation as the raw outcome sum with ProbeNotRunnable structurally separated from verdicts (top-as-ignorance never readable as pass/fail); exactly-one path resolution and a receipt->path join that refuses unknown and duplicate. Registry mechanism without a registry population - no probe executes, no class rows, no disposition, no rung. An initial ObservedOutcome name collided with gunbc.output_policy's process-outcome type (whole-tree census caught the bare-reference break); renamed to ProbeObservation, census back to 0 blocking. Receipts: 8/8 synthetic-row witnesses green by execution (round-trip join, unknown-path refusal, duplicate-registry refusal never-first-pick, exactly-one resolution across four boundary variants, both uniqueness REDs, digest input-determinism incl. order sensitivity, verdict/ignorance separation); whole-tree compile 0 blocking; regen_divergence_count=0; generated artifacts zero drift. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ct (review 46075) The predicate/walker dissolution rule triggers where a canonical fold already exists (nat_cata) or a substrate walk is extended; neither holds for a freshly declared domain sum whose only query this is. The note now records the named trigger: when the claims carrier lands as the sum's second consumer, a probe_observation fold becomes the canonical surface and observed_is_verdict re-expresses through it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
review 46075 (codex REQUEST_CHANGES) — verified against the rule's two sources, and the finding conflates their trigger conditions; addressed with the note-recorded trigger in the latest commit rather than new machinery. What the rule actually says: docs/plans/nat-grounding-unification-design.md (row A′) forbids a manual coproduct match where a canonical fold already exists — is_zero is forbidden because nat_cata is already the canonical fold, and migration re-expresses through it. docs/plans/e0599-implementation-proposal.md §3.0 prohibits extending hand-matched substrate walks (Node-tree/type-repr walkers). Neither trigger holds here: ProbeObservation is a freshly declared five-variant domain sum in its own module — not the substrate — and observed_is_verdict is its only query, so there is no canonical fold to route through. The same-module Bool projection over an owned sum is the merged corpus idiom (gunbc.roadmap_identity record_is_active is byte-for-byte this shape, witness-guarded). Minting a one-consumer cata to route one predicate would be the §6 purity trap — machinery priced in elegance, not displaced cost. What I did take from the review (its disposition alternative): the module note now records the named re-grounding trigger — the claims carrier's disposition derivation is this sum's expected second consumer, and when it lands, a probe_observation fold becomes the canonical surface, observed_is_verdict re-expresses through it, and the note sentence deletes with the migration. The hand-match cannot silently accumulate siblings; the discriminating witness (not_runnable_is_ignorance_never_a_verdict) stays enrolled either way. — sent from cool-badger-514 |
… breakage) The publication gate reds on current main itself: #7544 (heal-revalidation) merged after the P-B wall landed via #7560 but its CI raced the wall, so its eight new files carry no PublicFilePublishGrant rows and every PR merging current main inherits the failure. Rows added for all eight (mechanical placement declarations for files already public on main); cutover..HEAD Added/Copied/Renamed set now fully rostered, gate witnesses green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The second publication-gate failure was not this branch either — it is a live breakage on main's tip: #7544 merged after the P-B wall landed via #7560, but its CI run raced the wall, so its eight new files (the heal-revalidation family, dag/extdeps/github/workflows.dag, dag/tools/ci_heal_dispatch.dag, and the two v2 preflight-emit files) carry no PublicFilePublishGrant rows. Every PR that merges current main inherits the red — reproduced locally by running the gate's own computation (git diff --diff-filter=ACR from the pinned cutover 7ead65c against the roster; eight UNGRANTED paths, none mine). This PR now carries the mechanical fix: grant rows for all eight (placement declarations for files already public on main — exactly the rows #7544 would have added had the wall been in its merge ref), alongside the two rows for this PR's own files. Cutover-to-HEAD coverage verified complete locally; gate witnesses green. — sent from cool-badger-514 |
|
review 46159 addressed in da81298 — the canonical fold is introduced and the predicate derives through it.
— sent from cool-badger-514 |
…eview 46179) The resolver's key and both refusal-variant payloads carry the brand end-to-end; join_receipt_to_path no longer erases receipt.path to String. Measured the enforcement honestly: two executed controls show the checker accepting a bare String at a branded parameter and a branded record field, so the note records this as model-correctness and erasure-removal, with brand acceptance-enforcement handed to the probe corpus as its own class. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
review 46179 addressed in 836cc89 — One honesty finding from verifying the fix by execution rather than assuming it (DESIGN §4b: a brand is cosmetic until construction and acceptance enforce the distinction): two executed controls show today's checker ACCEPTING a bare — sent from cool-badger-514 |
…an files The alphabetized roster body on main already carried the 11 straggler paths, so #7580's tail block duplicated every one of them; the union keeps exactly one row per path, with this branch's two guarantee rows slotted alphabetically. Coverage against the cutover then caught a fourth race instance: #7550 merged two new files with no grant rows (dag/extdeps/languages/lean/overflow.dag and its witness), redding main's gate again - swept into the same roster here. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…pes dropped) Five new grant rows from the two just-merged PRs slot alphabetically; the two lean rows main re-stamped in parallel with this branch dedupe to the body copies. Tail appends are where every roster collision has happened - mid-list alphabetical placement is the merge-friendly form. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… 46287) RefusedTyped.count and AcceptedCounted.count carry the cardinal type, and the fold's arm signatures follow. An executed control shows the checker still accepting a negative at the Nat field today, so the note records the swap as model-correctness with refusal owed to the numeric-refinement acceptance class, not claimed as a wall. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
review 46287 addressed in 5b54ba1 — One honesty bound, measured the same way as the brand seam last round: an executed control ( — sent from cool-badger-514 |
…6308) InterpreterRun renames to RuntimeRun: run-level acceptance happens IN the path's realization, so which runtime is the realization axis's fact and an emitted-run path (the divergence probes' subject) is expressible rather than contradictory. The compile_mode axis deletes: every landed control derives its pipeline from its boundary, so the stored mode was a second representation whose only writable novelty was the contradiction; it returns as a stored axis with the first path measured under two pipelines at one boundary. Both review-named contradictions are now unwritable without a family coproduct, whose rows would restate the orthogonal axes per combination (the N-by-M shape DESIGN 2 folds into axes). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
review 46308 addressed in c447f53 — both named contradictions are now unconstructible, but by axis orthogonalization rather than the family coproduct the verdict proposed, and the distinction is grounded in the authority docs:
The axis-discipline note records the ruling with the review citation. 9/9 witnesses green (the synthetic paths now exercise — sent from cool-badger-514 |
Both inserted rows kept at each site in alphabetical order; #7567 adopted mid-list placement so the conflict shrank to adjacent lines. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ven re-stamps dropped Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ordered union Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The operator ruling deletes the placement gate/roster/cutover entirely (regression note carries the derived-projection re-land bar), which ends the roster-race chain; this PR shrinks to the two schema files. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The first spine increment per the operator verdict (2026-08-01): the evidence protocol probes and claims meet through, and nothing else — no probe executes, no class population, no disposition, no rung, no claims about the compiler. This breaks the probes⇄carrier protocol cycle so
ladder-probe-corpus(child work item, dispatching now) andladder-claims-carrierconsume one vocabulary instead of each minting temporary string keys.dag/gunbc/guarantee_measurement.dagGuaranteeClassId,GuaranteePathId,GuaranteeProbeId(NonEmptyStr where brand, thestd.claim_evidence/roadmap-identity idiom).GuaranteePathover four closed, minimal axes — every variant grounded on a path a real measurement exercises, per the in-module discipline note (an earlier draft's speculativePhaseCarrierAcceptancearm was deleted for exactly that reason):subject_grain: SyntheticProgram | CorpusModule | WholeCorpusacceptance_boundary: CompileAccept | InterpreterRun | InferToEval (the v2 no longer treats source identity as semantic grounding (P0: protect the replacement compiler) #7485-landed boundary) | InferToTranslate (the boundary v2-translate-underived-refusal: Translate refuses underived facts instead of swallowing the typed rejection (containment P0, guarantee lane) #7555 closes — the fact stays "grounding was not derived"; the consuming phase is named by the path, never by a second diagnostic)compile_mode: V1Pipeline | V2SelfCompilerealization_target: InterpreterRealization | EmittedTarget{language:GuaranteeTargetName} — the target brand is receipt vocabulary with declared deferred grounding (dissolve-on the identity join reaching target-realization rows)GuaranteeMeasurementReceipt— all fields required, no Optional arms: class × path × probe ×subject_revision×harness_revision×probe_set_digest× observed. The three revisions answer the baseline stage's three-way ambiguity (whose compiler, whose harness, which probe set). Reusesstd.types.CommitShaandstd.content_hash(§3 — no new revision or hash nicknames).ProbeObservation— the raw executed outcome, never the judgment (dispositions stay carrier-derived): RefusedTyped | AcceptedClean | AcceptedCounted | ExecutionDiverged | ProbeNotRunnable, withobserved_is_verdictmaking could-not-measure structurally non-readable as pass/fail (§5's ⊤-as-ignorance split, executable).probe_set_digestfolding in caller order with the canonicalization obligation explicitly assigned to the probe stage (no host-order sort smuggled in).Witnesses (
dag/test/claim/guarantee_measurement_witness_test.dag, synthetic rows only)8/8 green by execution: round-trip join resolves exactly its path · receipt naming an absent path refuses
Unknown· duplicate registry refuses with match count (never a plausible first row) · exactly-one resolution across all four boundary variants · duplicate class-id and path-id uniqueness REDs · digest input-determinism including order sensitivity · verdict/ignorance separation. The scope note states what synthetic witnesses can and cannot prove, and where the construction-by-required-fields half of the node's red_control gets its corpus-wide measurement (the record-construction census class — stated, not faked).Receipts
claim_batch(fresh post-merge seed, verified by binary content per the circular-verify lesson).ObservedOutcome, whichgunbc.output_policyalready owns for process outcomes, breaking that module's witness by ambiguity; renamed toProbeObservation, census restored to 0 blocking. (The 23 pre-existing occurrence-lane ambiguities reported earlier are gone from main.)regen_stage0 --verify: divergence 0. Generated artifacts: zero drift (main_wetclean — no ROADMAP/DESIGN change; the roadmap node stays active until its acceptance receipt).Handback per the node: schema module path
gunbc.guarantee_measurement; identity-registry witness receipt = the 8-PASS run above.🤖 Generated with Claude Code