Skip to content

Exact witness admission: one function-grain authority replacing the exclusion/probe_red dual representation - #7719

Merged
briansrls merged 6 commits into
mainfrom
session/calm-bee-513
Aug 3, 2026
Merged

briansrls merged 6 commits into
mainfrom
session/calm-bee-513

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Aug 3, 2026 •

Copy link
Copy Markdown
Contributor

What this does

One operational fact was represented twice in dag/gunbc/ci_layer_roots.dag, in two hand-synchronized rows: a WitnessExclusionRow { pattern: FILE.dag, classification: QuarantineProbeExpectRed } saying the FILE must not run through green-only discovery, beside a probe_red(entry, f) row saying that exact FUNCTION must execute on the expected-red lane. Neither derived from the other.

gunbc.explicit_witness_admission is now the single function-grain authority:

ExplicitWitnessAdmission { witness: ScheduleWitnessEntry,
                           cadence: WitnessConsumerCadence,
                           reason: NonEmptyStr, dissolve_on: NonEmptyStr }

Everything else derives from it — known_red_probe_roster() (CorpusWitnessKind projection), seed_emitter_behavioral_wet_known_red_entries (ExecutionWitnessKind projection; hand rows deleted, decl name kept so no consumer changed), the discovery exclusion (read off the rows by floor_discovery_producer per test declaration rather than per file), the consumer manifest, and the reconciliation. 13 pattern rows deleted. A deletion now removes admission, roster entry and exclusion in one edit.

witness_exclusion_frontier becomes a path-policy carrier and witness_exclusion_row_well_formed REFUSES QuarantineProbeExpectRed there, so the fused shape is unwritable rather than reconciled. Precedence is total: exact admission decides the functions it covers, path policy applies only to functions with none.

Status

DONE and green by execution. The known-red cadence is fully migrated; all walls execute. Nothing in this PR is a stub or a placeholder.

IN FLIGHT: nothing. All work is committed and pushed. There is no local state.

BLOCKED: nothing. No question is outstanding for the parent or the operator.

CI: on the pre-merge head, build, regen (10m2s — the self-host fixed point) and heal_generated_artifacts all passed; the floor ci job had not finished before main moved and the branch had to be re-merged. It needs a fresh run on the current head. If it is red, the surfaces to look at first are the seven files that re-enter the discovery walk now that their path rows are gone — logic_ground_truth_test.dag, english_emit_add_test.dag, and the five self_host_*_behavioral_witness_test.dag files — where the producer now reads each file and drops only the admitted functions rather than skipping the file wholesale.

What I would do next if I continued: resolve the expected ci_layer_roots.dag conflict with #7688 (see below), then nothing else on this lane. The remaining migration is deliberately not next; see the residue section.

Two findings that the diff does not show

1. The bad state had exactly ONE live instance, and only under a specific condition.

Window: the pre-change tree at 434e217. Denominator: all 13 QuarantineProbeExpectRed pattern rows and all 33 exclusion rows carrying an executing cadence (BinWitnessWet 23, QuarantineProbeExpectRed 13, FalsifierSubstrateLongLane 4, FalsifierRehomedBinWet 3). Method: for each such pattern, expand it against every *_test.dag in the tree, enumerate that file's test fn/test data declarations, and subtract the (entry, function) pairs covered by any function-grain roster — treating the empty-function form as covering every declaration in its entry, which is what expand_explicit_entries does at execution time.

Result: 8 unscheduled functions, all in one file — seed_honesty_discharge_unavailable_test.dag, 8 of whose 9 functions had no probe row while the file's classification named the whole file QuarantineProbeExpectRed. They were absorbed as OfflineLocalRecipe by the test/claim/execution/ path policy, which is why the Phase 0(b) orphan refusal never saw them.

The condition matters more than the count: absorption happens only where an explicit-cadence file exclusion also sits under a broad path policy. That is the exact-admission/path-policy fusion, confirmed by measurement rather than assumed. Everywhere else the file-grain roster form or the Phase 0(b) refusal already covered it.

2. A hypothesis I was handed, refuted. I was told six quarantine patterns had no matching probe_red and asked to establish whether they were the bad state or a different classification. They are a different classification, not a defect: five self_host_*_behavioral_witness_test.dag files plus 03_normalize are SelfEmitted wet assemble-red receipts whose function-grain roster is falsifier_self_host_wet_known_red_entries, not known_red_probe_entries. Each of those files carries exactly one test fn and it is on that roster, so no orphan exists. They are the same dual representation at a different WitnessKind, which is why this PR migrates them in beside the hermetic rows rather than leaving them.

3. A design mistake, caught in review, worth not re-deriving. My first discriminating RED was anchored to the real live defect above — hardcoded entry, admitted function, named green sibling, reading the live roster. Anchoring to a real defect is normally the stronger move, and here it was wrong: it binds the evidence to the defect's continued existence, which is the one thing a wall exists to end. #7688 dissolves that quarantine, which would have left the assertion with no subject — passing vacuously, or redding for a reason unrelated to the wall. DESIGN §4b(4) says a climb deletes the production machinery and keeps the evidence enrolled; a live-anchored assertion cannot satisfy that clause because the machinery and the subject are the same rows. Re-anchored to a synthetic fixture, with a file-grain control running the same predicate to show it DOES reach the sibling, so the false is a decision about grain and not a predicate that never matches. Same fix on the Rust side. The live instance survives as a past-tense provenance note.

Note for whoever reads the approvals: one review praised the live anchor as "a real green→red flip, not a synthetic". It reviewed the commit before the re-anchoring, and that praise was for precisely the property that had to be removed.

Residue I deliberately did not close

BinWitnessWet, FalsifierRehomedBinWet, FalsifierSubstrateLongLane and FalsifierSelfHostWet still author a path row beside their function-grain rosters. Measured on this change's tree, none of them is the bad state — every one is either a file-grain roster row or fully enumerated. Migrating ~70 more rows through the load-bearing floor in one PR is where I judged risk to outrun benefit. It is carried as a counted frontier with a dissolve-on in explicit_witness_admission_separation_note, not left silent: when each cadence's roster moves to the admission authority, witness_exclusion_row_well_formed widens to refuse that cadence too, and the last enum arm that can appear in the path carrier is gone.

Merge hazard — encountered three times, resolved

main is merged in (through #7709). The conflict predicted here happened on every merge and always in the same shape: main holds the pre-migration dual representation, this branch holds it migrated, so the representation comes from this side while main's substance is carried by hand. Taking either side wholesale would have silently dropped or resurrected admission rows with no conflict marker — the hazard that motivated this lane, met three times in one evening.

Two §4b(4) climbs landed on main while this was open and are carried across, each as a single row deletion where main needed two:

Known-red admissions: 19 → 17 (11 CorpusWitnessKind + 6 ExecutionWitnessKind). No evidence moved with either climb — the discriminating RED was re-anchored to a synthetic fixture in b353eb9 precisely so a climb could not take the witness's subject with it, which is the anchoring fix paying for itself twice within the hour.

The inherited main breakage — diagnosed here, repaired on main, now merged in

For a period this PR's build failed with error[E0061]: v1_compiler_emit_rust.rs:14088 called v1_generic_params_needing_clone_bound with 6 arguments where v1_compiler_trait_derive_emit.rs:321 declares 9. It was never caused here — both files were byte-identical to origin/main, and main's own runs failed identically.

Cause, and it is worth keeping: a generated-artifact merge collision. #7708 changed that function from 6 params to 9 and updated its one call site, touching both the hand file and the generated v1_compiler_emit_rust.rs. #7709 then rewrote 372 lines of that same generated file, regenerated from a base predating #7708, reverting the call site to 6 args. Git merged both without a conflict because the hunks were textually disjoint. There is exactly one call site in the file, which forecloses the missed-second-caller reading: this was one lane's regen output silently clobbering another lane's substance inside a derived artifact. Two changes to one generated file, merged clean, one dropping the other, no marker and no gate. Structurally the same hazard as the roster hazard above — which is what this PR removes for admission rows.

A finding that outlives the incident: the heal path has a hole exactly where it is needed. heal_generated_artifacts is the job that would regenerate a drifted artifact, but it is gated behind build. So it repairs every class of generated-artifact drift except the one that breaks compilation — the one case where build cannot pass to let it run. On this PR's failing run, build failed at 1m8s and ci, regen and heal_generated_artifacts all showed skipping. A regen cannot rescue it either, because regen runs the seed binary and the seed binary is what fails to build. That makes this class of break permanently manual. It is a property of the heal wiring, not of this PR, and is recorded separately for the operator.

Repaired on main by #7733 (main 19cc776d4e, run 30787387741 with build and regen both success), and merged into this branch at 6c6a7b4. Verified rather than assumed:

  • Clean merge, zero conflicts.
  • git diff origin/main...HEAD -- src/v1/stage0/src/v1_compiler_emit_rust.rs is empty — this branch contributes no change to that generated file, so the merge cannot have reverted the repair. (The three-dot merge-base diff is the right oracle; a direct compare against main produces false alarms when a branch is merely behind.)
  • No file this branch touches is regen-owned: checked every changed path against the 118 entries of gunbc.stage0_emit_plan_generated.generated_stage0_files; cli_run.rs and claim_executor.rs are hand-Rust and appear in neither.
  • The exact gate that had been failing, cargo check -p v1-compiler-tests --tests, now passes locally on the merged tree.

No content changed in this merge — the approvals stand against the same work, and CI reruns on the new head.

A blind spot this PR found the hard way

review 47781 caught a broken caller I had missed: v2.lens.enforcement.inventory still called witness_row_excluded_from_discovery with entry: alone after it gained its function parameter. Fixed in f8029b9 by threading function through (it was already in scope), verified by enforcement_inventory_witness_test.dag 10/10 PASS.

The part worth keeping is why no automated check would have caught it. src/v2/lens/enforcement/inventory.dag is outside the compiled import closure — the whole-tree --target dag compile reports it among the 1180 census-only modules, which are name-censused and not typechecked — and its only witness is corpus-denominated and path-excluded from per-PR discovery under enforcement_coverage_exclusion_note. A census-only module whose only witness is offline is a structural blind spot for the re-signature class: neither the compile nor the floor sees it. On this PR the review was the only mechanism that did.

Evidence, by execution

  • dag/test/claim/exact_witness_admission_witness_test.dag — 9/9 PASS. Discriminating RED plus a file-grain control so the sibling claim cannot pass vacuously; duplicate-row and non-executing-cadence controls.
  • cli_run.rs witness_admission unit tests — 6/6 PASS, including the host-side discriminator against synthetic source and a population-independent companion (no live known-red admission uses the file-grain form).
  • witness_exclusion_reconciliation_test 8/8 · witness_admission_test 15/15 · ci_floor_plan_witness_test 31/31 · floor_discovery_hand_rust_equivalence_witness_test 23/23 · proactive_verification_ledger_witness_test 1/1.
  • Whole-tree --target dag compile: 4 hard diagnostics, identical to the same compile on main (434e217) run in a clean worktree with the same binary — pre-existing unresolved type 'Empty' rows in 06_translate.dag, unchanged by this PR.

— sent from calm-bee-513

…xclusion/probe_red dual representation

One operational fact was represented twice, in two hand-synchronized rows: a
`WitnessExclusionRow { pattern: FILE.dag, classification: QuarantineProbeExpectRed }`
saying the FILE must not run through green-only discovery, beside a
`probe_red(entry, f)` row saying that exact FUNCTION must execute on the
expected-red lane. Neither derived from the other, and the reconciliation
guarding them was weaker than its name: it asked only whether SOME scheduled
row's entry CONTAINED the exclusion pattern as a substring. It proved neither
exact identity, nor one schedule row per exclusion, nor reverse coverage, nor
that every function hidden by the file-level exclusion had a consumer, nor
that the pair deleted atomically.

The bad state that remained expressible: a file holds an expected-red function
and an ordinary green one, the file-level exclusion hides both, the schedule
names only the red one, and the green one executes nowhere while the check
still passes. MEASURED on the pre-change tree, it had exactly one live
instance: seed_honesty_discharge_unavailable_test.dag, 8 of whose 9 functions
had no probe row while the file's classification named the whole file
QuarantineProbeExpectRed. Everywhere else the file-grain roster form or the
Phase 0(b) orphan refusal already covered it. The same imprecision forced a
documented workaround: self_host_03_normalize's exclusion row records that
QuarantineProbeExpectRed on the file would orphan its sibling, so the file was
downgraded to OfflineLocalRecipe in prose instead.

ROOT FIX - `gunbc.explicit_witness_admission`, one row per admitted witness:

  ExplicitWitnessAdmission { witness: ScheduleWitnessEntry,
                             cadence: WitnessConsumerCadence,
                             reason: NonEmptyStr, dissolve_on: NonEmptyStr }

Everything else derives from it. `known_red_probe_roster()` is its
CorpusWitnessKind projection; `seed_emitter_behavioral_wet_known_red_entries`
is its ExecutionWitnessKind projection (its hand rows are deleted, the decl
name kept so no consumer changed); the discovery exclusion is read straight
off the rows by `floor_discovery_producer` at exact (entry, function) grain,
per test declaration rather than per file; the consumer manifest and the
admission reconciliation read the same rows. 13 pattern rows are deleted.
A deletion now removes admission, roster entry and exclusion in one edit -
the merge hazard #7688 paid for by hand.

SEPARATION. `witness_exclusion_frontier` is now a PATH POLICY carrier
(`test/claim/long/` is a home, `test/manual/` is offline). Exact admission and
broad path policy no longer share a substring representation:
`witness_exclusion_row_well_formed` REFUSES a QuarantineProbeExpectRed row
there outright, so the fused shape is unwritable rather than reconciled.
Precedence is total - exact admission decides the functions it covers, path
policy applies only to functions with none - which is why a path-offline file
may legitimately contain an exact-admitted function without either fact
restating the other. The four remaining executing cadences still author a path
row beside their rosters; that residue is named and counted in
`explicit_witness_admission_separation_note` with its dissolve-on, and it is
not the bad state today (each is file-grain or fully enumerated, measured).

WALLS, all executing: exactly one admission per witness; every admission names
a cadence that executes (DiscoverySelection / OfflineLocalRecipe /
FixtureExplicitRoster / NoConsumer refused, so an admission cannot satisfy the
has-a-consumer rule while running nowhere); every admission is reached by its
cadence's derived roster; every admission is excluded by derivation; no
admission is restated as a path-policy row. Admitted witnesses stay COUNTED in
the deferred-discovery receipt - with the pattern rows gone they would
otherwise have vanished from it, the uncounted degradation DESIGN 5 forbids in
the mechanism whose job is making deferral visible.

Evidence, by execution:
- dag/test/claim/exact_witness_admission_witness_test.dag - 9/9 PASS. The
  discriminating RED asserts the admission reaches the admitted function and
  NOT the named sibling (false by construction under the old shape), with a
  file-grain control proving that shape does reach the sibling so the claim
  cannot pass vacuously; plus duplicate-row and non-executing-cadence controls.
- cli_run.rs `explicit_witness_admission_is_exact_not_file_grain` - the same
  discriminator on the host side; 5/5 witness_admission unit tests PASS.
- witness_exclusion_reconciliation_test 8/8, witness_admission_test 15/15,
  ci_floor_plan_witness_test 31/31, floor_discovery_hand_rust_equivalence
  23/23, proactive_verification_ledger_witness_test 1/1.
- whole-tree `--target dag` compile: 4 hard diagnostics, byte-identical to the
  same compile on main (434e217) in a clean worktree - pre-existing, unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review August 3, 2026 02:58
@gunbai-bot
gunbai-bot Bot force-pushed the session/calm-bee-513 branch from 6e99e2d to 8b27217 Compare August 3, 2026 02:58
gunbc-ci-auto-heal and others added 4 commits August 3, 2026 02:58
…dmission authority that a stash cycle resurrected into the branch

It was the first-round shape of this lane's carrier (known-red rows only, no
cadence field, no path-policy separation) and was replaced by
gunbc.explicit_witness_admission before any consumer referenced it. Nothing
imports it. Leaving it would have shipped a second copy of the authority whose
whole purpose is that there is one — the violation this PR closes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ored assertion loses its subject when the wall works

Review caught a real defect before merge: the discriminating assertion was
anchored to live rows that gunbc#7688 deletes tonight. It hardcoded the
seed-honesty entry, its admitted function and a named green sibling, and read
the live roster — so when the operator's verdict lands, the closing contract
greens and the quarantine climbs out under DESIGN 4b(4), the assertion would
have had no subject left: passing vacuously, or redding for a reason with
nothing to do with the wall.

The instinct behind it was the right one in general — a wall is better
evidenced by a defect that actually happened than by a synthetic one — but it
binds the evidence to the defect's CONTINUED EXISTENCE, which is precisely
what the wall exists to end. 4b(4) says a climb deletes the production
machinery and keeps the evidence enrolled; a live-anchored assertion cannot
satisfy that clause, because the machinery and the subject are the same rows.
Same shape as the vacuous-green trap a sibling lane hit on G1 an hour ago: a
gate whose population reached zero could not be distinguished from a predicate
returning true unconditionally.

So the primary assertion now runs against a fixture this witness authors
itself — one admission over a fixture entry holding an expected-red function
and an ordinary green one — asserting the admission reaches the first and not
the second, with the file-grain control running the SAME predicate over the
file-grain shape to show it DOES reach the sibling. Both arms are synthetic,
so neither can lose its subject. The Rust discriminator is re-anchored the
same way, against synthetic source rather than the live authority, and gains
a population-independent companion: no live known-red admission uses the
file-grain form.

The three remaining live-row claims are universals and a projection identity —
true at any roster size including zero — and a note says so explicitly, so
nobody later mistakes them for where the discrimination lives.

The seed-honesty instance survives as a past-tense provenance note in the
witness and on the row itself, stating that no evidence is anchored to it and
it deletes cleanly. That keeps the measurement that justifies the wall without
making the wall depend on it.

Evidence: witness 9/9 PASS after re-anchoring; 6/6 Rust witness_admission unit
tests PASS (one new).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…nforcement lens inventory

TWO CLIMBS CARRIED ACROSS. #7709 landed the emit repair that greens
cross_module_same_leaf_emits_qualifier_module_not_registry_winner, so main
deleted its QuarantineProbeExpectRed exclusion row and its probe_red row —
the same §4b(4) climb #7688 performed for seed-honesty one merge earlier. On
this branch each of those pairs is ONE explicit_witness_admissions row, so
each climb is one deletion. Known-red admissions go 18 -> 17 (11
CorpusWitnessKind + 6 ExecutionWitnessKind). Both conflict hunks are again the
pre-migration shape versus the migrated one, so the representation comes from
this side while main's substance is carried by hand — which is the hazard this
lane exists to remove, and it is now the third merge in a row where taking a
side wholesale would have silently dropped or resurrected admission rows.

BROKEN CALLER, found by review (review 47781), verified and fixed.
`witness_row_excluded_from_discovery` gained a `function` parameter so it can
consult the admission authority at the grain the authority is written in.
`v2.lens.enforcement.inventory` `cadence_scheduling_rows_for_witness` still
called it with `entry:` alone — an arity mismatch that refuses at typecheck,
and worse than that: it would have left the lens inventory disagreeing with
`floor_discovery_producer` about grain, which is precisely what wall (4) says
cannot happen. `function` was already in scope there and is now threaded
through, so both readers ask the same question.

WHY MY OWN CHECKS MISSED IT, recorded so the next person does not assume the
gate covers this. `src/v2/lens/enforcement/inventory.dag` is outside the
compiled import closure — the whole-tree `--target dag` compile reports it in
the 1180 census-only modules, which are name-censused and not typechecked —
and its witness, `enforcement_inventory_witness_test.dag`, is
corpus-denominated and path-excluded from per-PR discovery
(enforcement_coverage_exclusion_note). So neither the compile I ran nor the
floor would have caught it; an offline witness plus a census-only module is a
blind spot for exactly the re-signature class, and here the reviewer was the
only mechanism that saw it.

Green by execution after the fix, including the witness that reaches the
repaired caller: enforcement_inventory_witness_test 10/10,
exact_witness_admission_witness_test 9/9,
witness_exclusion_reconciliation_test 8/8, witness_admission_test 15/15.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

review 47781 — confirmed and fixed in f8029b9.

v2.lens.enforcement.inventory cadence_scheduling_rows_for_witness was calling witness_row_excluded_from_discovery(entry: entry) after the function gained its function parameter. function was already in scope there; it is now threaded through, so the lens inventory and floor_discovery_producer ask the same question at the same grain. You were right that this is wall (4)'s own invariant, not just an arity slip — two readers disagreeing about grain is the thing the wall says cannot happen.

Verified by execution rather than by typecheck alone: enforcement_inventory_witness_test.dag 10/10 PASS, which is the witness that actually reaches the repaired caller.

Worth recording why neither my whole-tree compile nor CI would have caught it. src/v2/lens/enforcement/inventory.dag sits outside the compiled import closure — the --target dag compile reports it among the 1180 census-only modules, which are name-censused and not typechecked — and its witness is corpus-denominated and path-excluded from per-PR discovery under enforcement_coverage_exclusion_note. A census-only module whose only witness is offline is a blind spot for exactly the re-signature class. On this PR the review was the only mechanism that saw it.

Also in the same push: main's #7709 climbed the qualified-leaf quarantine out, so its admission row is deleted here (known-red admissions 18 → 17), the same one-row deletion #7688's seed-honesty climb needed one merge earlier.

— sent from calm-bee-513

@briansrls
briansrls merged commit 835ea0d into main Aug 3, 2026
5 checks passed
@briansrls
briansrls deleted the session/calm-bee-513 branch August 3, 2026 13:36
gunbai-bot Bot pushed a commit that referenced this pull request Aug 3, 2026
Resolve ci_layer_roots conflicts by keeping explicit_witness_admission
single authority; repoint direct-rust-door quarantine to long path.
Sync stage0 after rebase (regen_divergence_count=0).

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Aug 3, 2026
Resolve ci_layer_roots conflicts by keeping explicit_witness_admission
single authority; repoint direct-rust-door quarantine to long path.
Sync stage0 after rebase (regen_divergence_count=0).

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Aug 3, 2026
Resolve ci_layer_roots conflicts by keeping explicit_witness_admission
single authority; repoint direct-rust-door quarantine to long path.
Sync stage0 after rebase (regen_divergence_count=0).

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls pushed a commit that referenced this pull request Aug 3, 2026
* Reconcile generated artifacts for occurrence identity debt receipt test.

#7559 landed v1_tests_claim_occurrence_identity_debt_receipt_test.rs without
lib.rs registration, .gitattributes merge driver row, or regenerated ci.yml
heal exclude list — regen_verify_gate_passes failed on main.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: Lane B: direct v2 Rust door — emit one provenanced Rust artifact

* Lane B: write v2-emitted Rust to disk with compile receipt.

Extend candidate_generation through emit, Filesystem.Write, and a wet
cargo smoke transport so the direct rust door proves provenance, disk
write, and compilation without v1.compiler.emit_rust in the closure.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix direct rust door proof plan to return WalkPlan.

claim_executor requires WalkPlan with finalization field, not a bare batch list.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix direct rust door contract imports for v2 std modules.

Use length from v2.std.algebra and split Bool/Int/List/String across
v2.std.logic, v2.std.integer, v2.std.collection, and v2.std.text so
discovery resolve succeeds on the acceptance witnesses.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Exclude wet direct-rust-door compile witness from hermetic discovery.

Hermetic CI cannot mock Filesystem.Write or shell.Mktemp.Dir; provenance
and closing-contract witnesses stay on the discovery path while the cargo
compile smoke runs via the offline wet recipe in tools.direct_rust_door_transport.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Address review: scaffold Cargo.toml debt, drop golden-string gate.

Mark direct_rust_door_cargo_toml with feature:medium_structure_containment
and a named dissolve-on trigger. WrittenSourceIndependentOfSeedEmitter
now checks only seed-free closure provenance; byte oracle stays on the
discriminating provenance witness.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix v2_interpreted_emitter_closure module path for honest provenance.

Record v2.compiler.self_host.candidate_generation (the real module
authority) instead of the fabricated v2.compiler.candidate_generation
path minted receipts were carrying.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Route wet transport through candidate_generation write authority.

direct_rust_door_transport now calls mint_written_provenanced_rust_artifact
instead of duplicating Filesystem.Write of Cargo.toml and src/main.rs.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: Lane B: direct v2 Rust door — emit one provenanced Rust artifact

* Operator freeze: monotonic receipts, ingest path, run closure.

SourceProduced-only mint before cargo; advance_written after compile.
Witnesses and wet transport use generate_*_from_ingest; closure from
realized_closure_for_v2_direct_rust_door_emit_run() not static data.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: Lane B: direct v2 Rust door — emit one provenanced Rust artifact

* WIP: Lane B: direct v2 Rust door — emit one provenanced Rust artifact

* Route wet transport through mint_written/write_rust_workspace authority.

Review 47560: collapse parallel Filesystem.Write in transport; wet smoke
calls candidate_generation.mint_written_provenanced_rust_artifact only.
Fixture scaffold uses lib crate so emitted add fn compiles; CargoGreen
advances only after cargo build executes (SourceProduced first).

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: Lane B: direct v2 Rust door — emit one provenanced Rust artifact

* WIP: Lane B: direct v2 Rust door — emit one provenanced Rust artifact

* Meet review-ready conditions: merge main, closure post-emit, quarantine.

Merge main (#7704 landed). Bind realized_closure inside candidate_generation
only after generate_rust_emission_candidate succeeds; remove caller-supplied
closure parameters. Point acceptance quarantine probe to long-lane witness;
update roadmap authority entry. Wet smoke still PASS on write_rust_workspace path.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Rebase onto main (#7719 witness admission, #7720).

Resolve ci_layer_roots conflicts by keeping explicit_witness_admission
single authority; repoint direct-rust-door quarantine to long path.
Sync stage0 after rebase (regen_divergence_count=0).

Co-authored-by: Cursor <cursoragent@cursor.com>

* Sync stage0_std_core crate index after rebase regen.

Removes std_keyed_row/std_keyed_roster module paths dropped by main;
required for regen_stage0 --verify split-crate boundary check.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Sync stage0 measure/schedule emit after trait-derive Clone bounds.

Fresh self-emit adds Clone generic param bounds on std_measure helpers;
regen_stage0 --verify was failing on CI regen_verify_gate_passes.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: Lane B: direct v2 Rust door — emit one provenanced Rust artifact

* WIP: Lane B: direct v2 Rust door — emit one provenanced Rust artifact

* WIP: Lane B: direct v2 Rust door — emit one provenanced Rust artifact

* Address review 47861: drop orphan proof plan, fix long-lane reasons.

Delete unused direct_rust_door_proof_plan (enrollment is falsifier_substrate_long_lane_rows). Witness notes cite that authority with local recipes. SubstrateLongLaneRow reasons separate eval-budget routing from the ingest-path functional gap on closing-contract witnesses.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: gunbc-ci-auto-heal <gunbc-ci-auto-heal@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant