Skip to content

Cut the seed out of the emitted closure's dependency graph - #10988

Merged
briansrls merged 6 commits into
mainfrom
session/proud-wren-154
Sep 11, 2026
Merged

briansrls merged 6 commits into
mainfrom
session/proud-wren-154

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 11, 2026 •

Copy link
Copy Markdown
Contributor

The edge

v1_compiler.emitted_closure_compile_host probe_manifest minted

v1-compiler = { path = <workspace>/src/v1/stage0 }

into the manifest of every crate the emit-compile phase and the required-v2-native lane write (write_probe_crate_files is the one writer; write_probe_crate is what cli_run::native_lane_runner prepares the emitted-native compiler through). Its stated justification was "the runtime surface the emitted closure does not emit (v1_rt and friends)".

Two consequences, both named in the brief and both real: a fixed point measured on emitted bytes says nothing about that edge — "v2 emits itself" can be true while the emitted compiler cannot build without src/v1 — and building any probe pulled the seed into the shared target directory the executing claim_executor runs from.

The denominator, measured before the cut

The brief asked for the exact list of seed symbols the emitted code reaches. It is empty, and the emitter says why:

  • v1.compiler.emit_rust emit_v2_rt_module writes src/v1_rt.rs into every emission — it is in the unconditional all_mod_files list in emit_rust_selected, not behind a predicate.
  • the same module renders the NonEmptyVec / NonEmptyBTreeSet wrappers into the emitted lib.rs (the wrapper_use / wrapper-struct block), so crate::NonEmptyVec resolves inside the emitted crate.
  • emit_rust_selected binds the emitted crate name to v1_compiler only when compiler_pipeline_entry_is_retained_host — i.e. only when emitting the seed itself. Every other entry emits v1_compiled, and emit_main_rs renders use v1_compiled::…. The direct-ingest / source-root-eval driver branch returns before any retained-host rendering precisely so that a self-emitted crate never names v1_compiler.cli_run.

Receipts, on this branch's parent (main 38fde6682a8), local arm64, RUSTC_WRAPPER= unset, private CARGO_TARGET_DIR:

subject emitted files v1_compiler:: references cargo build, no seed in manifest
dag/std/node.dag 15 0 status=0, 26s
src/v2/compiler/00_compile.dag (the native lane's NATIVE_COMPILE_ENTRY) 172 0 status=0 under RUSTFLAGS=-D warnings, 2m43s

The 172-file closure is the whole emitted v2 compiler. Its manifest carries [dependencies] = im, unicode-ident, unicode-properties, serde, serde_json, stacker, lazy_static, ureq — registry rows only. cargo metadata over the resolved graph reports no package whose manifest path is inside the repository, and the produced v1_compiled binary runs, refusing correctly: REFUSED: no universe file given -- usage: v1_compiled <universe.tsv> <source-root>....

So the runtime surface did not need carving into a non-seed crate and did not need emitting: it is already emitted. The seed edge was a dead dependency whose only effects were the two failures above. (v1-stage0-runtime, the modeled partition crate in v2.workflow.rust_crate_partition that owns v1_rt, is a view over the seed's src/ via #[path] and is a fact about how the SEED is built — not about the emitted crate, which carries its own v1_rt.rs.)

The change

probe_manifest no longer takes a workspace: &Path. That is the construction rather than the check (DESIGN §5): a function handed no repository path cannot render one into a manifest, and stage0_foundation_runtime_dependencies (v1.compiler.stage0_crates) carries registry rows only. The only route back to a seed dependency here is a diff that reintroduces the parameter.

manifest_carries_the_modeled_dependency_rows flips from assert!(manifest.contains("/repo/src/v1/stage0")) to refusing any src/v1 or v1-compiler substring. It is a regression control, not the wall.

Executed evidence

  • Discriminating RED established by mutation: re-added the dependency to probe_manifest → the unit test panics the emitted probe crate must not depend on the seed; removed it again → green. Not asserted, run both ways.
  • The real phase, with the changed binary: claim_executor --required-emit-compile --source-root dag --source-root src/v2 — all 8 rostered entries baseline=[Completed status=0] and mutation=[Discriminated subject=EntryOwnModule …], i.e. the phase's own baseline/mutate/restore triple is green over seed-free manifests. The manifests it wrote contain zero v1-compiler rows.
  • cargo clippy --all-targets -- -D warnings clean; cargo fmt --all --check clean.

Authority

The producer is seed-retained hand Rust and no .dag row governs it today — stated plainly as the brief asked. It is registered as SeedRetainedIntrinsicRegistration { basename: "emitted_closure_compile_host", has_pub_mod: false } in v2.compiler.self_host.stage0_crate_layout, and its declarations are rostered in gunbc.emitted_closure_compile_seed_growth emitted_closure_compile_seed_growth_justification (which carries probe_manifest as a hand-authored declaration). No row there is added or removed: the declaration survives, its body loses a dependency.

There is a standing §3 fork this change does not close and should be named rather than left silent: the emitted crate's dependency set has two authorities. The emitter derives it from what it emitted (v1.compiler.emit_rust emitted_crate_dependency_lines, whose own header argues that a fixed list beside the emission "is a SECOND AUTHORITY for the crate's dependencies, free to disagree with the sources the same run just wrote"), and probe_manifest renders a second, fixed list — plus the [features] block the emitted manifest lacks even though the emitted v1_rt.rs gates on text_lookup_work_counter. The terminal shape is for the host to consume the emission's own Cargo.toml and override only the per-entry package name; that needs the emitter to declare its feature block, which is a separate change with its own regen surface. Flagged, not smuggled in here.

Census

Removing this edge retires no committed row, and that is itself a finding worth recording against gunbc.v1_consumer_census: the edge was invisible to producer_cargo_manifest_graph, whose instrument is git grep -n 'path = "\.\./stage0' -- '*/Cargo.toml' over tracked manifests. This dependency was never in a tracked manifest — it was minted at run time into a crate written outside the repository — so no census producer could have discovered it, and the census's population claim is a lower bound by one class it cannot see rather than one it measured as empty.

The missing producer, named so it can be written. Every existing DiscoveryProducer on that census reads committed bytes — tracked manifests, tracked .rs, tracked workflow YAML. None reads a MINTED manifest: a cargo manifest a v1 host writes at run time into a crate that never enters the working tree. Its subject is the set of manifest-rendering sites in src/v1 — v1_compiler.emitted_closure_compile_host probe_manifest, tools.self_host_curated_seed_linked_harness, tools.self_host_logic_behavioral_transport, gunbc.emit_copy_qualification_fixture_gen, v1_compiler.cssl_seed_linked_closure_assembly — each joined to whether the manifest it renders puts the seed into the dependency graph of code the emitter produced (a real v1 consumer edge) or beside it as a comparison oracle (not one). That distinction is exactly what this PR turns on and is not derivable from any tracked file. Written as its own PR against the census, not here.

v1_shim_disposition's closing condition ("the emitted crate compiles without a v1_rt path rather than merely cargo-checking with one") is about the four hand-authored self_host_*_shims/lib.rs bridge crates and is not discharged by this change.

Not touched, deliberately

Three other sites render a v1-compiler path dependency, and all three are correct: tools.self_host_curated_seed_linked_harness, tools.self_host_logic_behavioral_transport and v1_compiler.cssl_seed_linked_closure_assembly's stale-RED control link the seed as the comparison oracle (use v1_compiler::std_logic as seed), not as a dependency of the emitted code. gunbc.emit_copy_qualification_fixture_gen builds a fixture runner, not an emitted closure.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DHjB4qGMsejnXWhdejjmU8

`v1_compiler.emitted_closure_compile_host` `probe_manifest` minted
`v1-compiler = { path = <workspace>/src/v1/stage0 }` into the manifest of
every crate the emit-compile phase and the required-v2-native lane write.
So a fixed point measured on emitted BYTES said nothing about whether the
emitted compiler can BUILD: "v2 emits itself" could be true while the
emitted crate needed src/v1 present to link. It also meant building any
probe rebuilt the seed into the shared target directory the running
claim_executor was executing from.

MEASURED FIRST, and the denominator is zero. The emitter writes
`src/v1_rt.rs` into every emission (`v1.compiler.emit_rust`
`emit_v2_rt_module`, unconditional) and renders the NonEmptyVec /
NonEmptyBTreeSet wrappers into the emitted lib.rs; the emitted crate is
named `v1_compiled` for every entry that is not the retained-host
pipeline, so no emitted line paths into `v1_compiler`. The closure of
src/v2/compiler/00_compile.dag -- the native lane's own entry -- emits
172 files with zero `v1_compiler::` references and builds to a running
binary under RUSTFLAGS=-D warnings against a manifest naming no path
into the repository.

THE WORKSPACE ROOT IS NO LONGER A PARAMETER of `probe_manifest`, which
is the construction rather than the check (DESIGN section 5): a function
that is handed no repository path cannot render one into a manifest, and
`stage0_foundation_runtime_dependencies` carries registry rows only. The
unit test's seed assertion flips from requiring the path dependency to
refusing any `src/v1` substring, and was confirmed discriminating by
re-adding the dependency (red) and removing it again (green).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DHjB4qGMsejnXWhdejjmU8
Brian Searls and others added 2 commits September 11, 2026 02:35
… deleted CI job

Three prose corrections to the same annotation, none changing a rendered byte.

THE OVERCLAIM. The doc comment called the parameter's removal "the
construction rather than the check", so that a repository path "cannot be
rendered into a manifest by a function that is not handed one". That is a
wall this change does not build. `CargoDependency` still admits
`CargoDepSource::LocalPathDep { path }`, so a local path remains authorable
here from a literal -- which is how this commit's own discriminating red was
established, with a hardcoded `/repo/src/v1/stage0`. Claiming otherwise is
rung inflation (DESIGN 4b(1)) in the compiler's self-description. What the
removal actually buys is stated instead: it eliminates the live producer
route that minted the seed path dependency, and the witness beside it
additionally refuses a rendered `src/v1` / `v1-compiler` row as a second,
independent reader of the same output. A type-level registry-only boundary
is explicitly NOT claimed; it belongs to the terminal shape, where the host
consumes the emission's own manifest rather than authoring a second one.

THE DEAD CITATION. The `[lib]`-name paragraph measured its E0433 on "the
required-v2-native lane's first preparation". #11003 deleted that job; the
route survives as the operator-invoked `--v2-native-route` instrument. The
paragraph now names the two consumers this manifest actually has -- that
instrument and the `emit-compile` phase -- rather than a job main no longer
declares.

Five further "native lane" references in this file name OTHER declarations
and are #11003's own unswept residue on main, not this change's subject;
they are left for that sweep rather than widened into here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DHjB4qGMsejnXWhdejjmU8
The annotation added by this PR's first commit copied two figures into
prose -- "emits 15 files" and "completes at status 0" for the
`dag/std/node.dag` closure. DESIGN section 6 forbids exactly that: name the
producer that re-derives a measurement, never copy its numbers, because a
transcribed number is unreachable from the thing that owns it and rots
without anyone touching either end. Section 4c adds that an annotation is
never evidence a machine claim holds, since no Accepted program can read
one.

The point lands with unusual force here, and the reviewer said so: this
PR's SECOND commit exists because a comparable transcribed citation in this
same doc comment -- the required-v2-native CI job, deleted by #11003 --
had already rotted.

So the counts go and the entry point stays. The replacement names
`run_required_emit_compile` over `gunbc.ci_layer_roots`
`required_emit_compile_entries` as the producer that re-derives the claim on
every run, emitting each entry's closure through this writer and handing the
result to `run_cargo`. A seed symbol the emission failed to cover refuses
there, on the acceptance path, rather than in a sentence.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DHjB4qGMsejnXWhdejjmU8
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Targeted evidence, re-run at the merged head

Re-derived after merging main (0ab33d7aaa0, which includes #11003) and applying the prose corrections. Run at 42f97f2c1f9; the only commit after it, 0ddaac9366e, is the review-63393 doc-comment fix, which changes no rendered byte and no executed path.

The figures below are a run receipt, not a citation — the producer that re-derives them is run_required_emit_compile over gunbc.ci_layer_roots required_emit_compile_entries, invoked as:

claim_executor --required-emit-compile --source-root dag --source-root src/v2

1. All 8 required-emit-compile entries — baseline green, mutation discriminated, restore green

Every entry's manifest is rendered by the changed probe_manifest, and none of the eight contains a v1-compiler row or any src/v1 path.

required-emit-compile: dag/gunbc/ci/ci_layer_roots.dag Measured files=36 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=gunbc_ci_layer_roots red=1875
required-emit-compile: dag/gunbc/scm/load_standing.dag Measured files=9 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=gunbc_scm_load_standing red=49
required-emit-compile: dag/extdeps/uri.dag Measured files=10 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=extdeps_uri red=835
required-emit-compile: dag/std/measure.dag Measured files=24 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=std_measure red=1716
required-emit-compile: dag/std/node.dag Measured files=15 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=std_node red=121
required-emit-compile: dag/std/content_hash.dag Measured files=9 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=std_content_hash red=289
required-emit-compile: dag/extdeps/abi.dag Measured files=17 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=extdeps_abi red=48
required-emit-compile: dag/std/logic.dag Measured files=6 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=std_logic red=40

2. The emitted v2 compiler closure builds seed-free under -D warnings

src/v2/compiler/00_compile.dag — the entry the surviving --v2-native-route instrument emits:

gunbc compile --source-root dag --source-root src/v2 \
  --entry src/v2/compiler/00_compile.dag --output-dir OUT \
  --target rust --dependency-pool-index primary-precedence
# 172 files emitted, 0 blocking errors
# grep -rl 'v1_compiler::' OUT/src  ->  0 files

cd OUT && RUSTFLAGS='-D warnings' cargo build --release
#   Finished `release` profile [optimized] target(s) in 2m 37s

3. cargo metadata — no repository-local package in the resolved graph

repo-local packages in resolved graph: NONE
total packages: 92

4. The produced binary runs

$ OUT_TARGET/release/v1_compiled
REFUSED: no universe file given -- usage: v1_compiled <universe.tsv> <source-root>...
$ echo $?
2

A typed refusal with a usage line, not a link error — the emitted compiler is a working binary whose dependency graph never reaches src/v1.

CI ran this too, before the fleet cancelled the job

On the pre-merge head ff1d4da, the then-required required-v2-native job independently built the same closure from the same seed-free manifest — emitted 172 files … (closure 408687f30e47928e066c3d82fff2bce61a3b45e81a6b2d061c12b80c4740fb3d), then emitted compiler at …/gunbc-emitted-closure-src-v2-compiler-00-compile-dag (sha256 6fc5accc4a15698213e3c9f0887d55b436238950cf79a3c7453676f8783c4c87) — before being cancelled 42 minutes into the universe run at 61m against a 180m timeout. #11003 has since deleted that job.

— sent from proud-wren-154

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Review 63393 — fixed in 0ddaac9366e, not argued with.

The finding is correct and lands harder than it might look: the annotation said the dag/std/node.dag closure "emits 15 files" and "completes at status 0", which is precisely the transcription DESIGN §6 forbids — and this PR's own second commit exists because a comparable transcribed citation in the same doc comment had already rotted (the required-v2-native CI job, deleted by #11003). Citing a stale number in the paragraph next to a stale job name is not a defensible place to stop.

The counts are gone; the producer stays. The replacement names run_required_emit_compile over gunbc.ci_layer_roots required_emit_compile_entries as the thing that re-derives the claim on every run — emitting each entry's closure through this writer and handing it to run_cargo — so a seed symbol the emission failed to cover refuses on the acceptance path rather than in a sentence. The measured figures now live in the run receipt comment above, bound to a sha, which is where a receipt belongs rather than in a comment that outlives its run.

Thanks also for checking process_workspace_root and Path are still used elsewhere in the file — they are (the workspace root at three other call sites), which is why removing the parameter left no unused import.

— sent from proud-wren-154

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

State of the head — mirrored here because the dashboard has been stalled on both sends and reads for ~15 minutes (two POST /api/messages timed out at 420s; messages mine timed out at 120s). eager-raven-113: read this rather than waiting on my message, and treat any duplicate that arrives late as the same content.

FROZEN at 0ddaac9366e7147f17eb5bc9dbf382878fac8e57. Not pushing again.

sha what
42f97f2c1f9 merge of main 0ab33d7aaa0 (includes #11003) + the three prose corrections. The evidence comment above was run at this head.
0ddaac9366e review 63393's finding, fixed. Comment-only: no rendered byte, no executed path. clippy -D warnings clean.

Tally state, so nothing is claimed that isn't true:

  • review 63393 is CHANGES REQUESTED, addressed at the frozen head, and will read as open until it is re-run against it;
  • GitHub reports no checks on the branch yet for the new head; mergeStateStatus BLOCKED.

Those two are the whole remaining distance.

One residue deliberately not swept: five further "native lane" references in emitted_closure_compile_host.rs name other declarations (write_probe_crate, run_cargo, cargo_verdict_summary, two test comments). They are #11003's unswept residue and sit on main independently of this PR; sweeping them would turn a one-function diff into a five-comment sweep. A real §3 citation defect, just not this change's — happy to take it as a follow-up.

— sent from proud-wren-154

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

srv2 closure recovery baseline (post-D1+G main), not the combined census

Classification. This is the inherited-state observation for the out-of-order landings of D1 (#10946) and G (#10961), taken under the post-#11003 producer. It is NOT the program-closing combined closure census (which stays after D4), does not establish whole-v2.test.* admission, and does not retire the drop gunbc.rung_drop v2_native_route_off_the_merge_path.

Provenance. main 267d69b86c (D1+G landed); overlay = this PR's diff on that main (overlay commit 92087a72, PR head at run time 42f97f2c; 0ddaac93 since differs by prose only); producer = pinned claim_executor sha256 b35e8f5c772220fd built from the overlaid tree, invoked as --v2-native-route --source-root dag --source-root src/v2; closure fold wall 290.8 s, rss 1.23 GB. #10988 touches no closure member, so this run measures main's state.

Result against the immutable 68-row reference (2fb67b41). 68 -> 66 refusing closure members; 0 regressed (nothing previously accepted now refuses).

file reference cause now
dag/std/cache_identity.dag (refusing) accepted
dag/std/unicode/types.dag (refusing) accepted
src/v2/std/compilers/target_model.dag parse_g0_tokens_remain body_lowering_reason_match_arm_navigation_refused (advanced to a later cause)

After-histogram: namespace_graft_body_dissolved_refused 25, parse_g0_tokens_remain 23, body_lowering_reason_match_arm_navigation_refused 9, tokenize_lex_e1_unrecognized_char 8, normalized_tree_reason_wrapper_retention_not_normalized 1.

The 66-row after-set is the base D2's binding receipt is compared against (landed post-#10988 main vs D2 overlay, same pinned producer). Independent corroboration: the #11019 overlay run on the same main and route produced an identical 66-row after-set.

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

The brief's literal acceptance test, now executed

The request named a specific executable test: "cargo build of the emitted crate with src/v1 moved aside must succeed." Everything posted so far argued that structurally — the manifest names no repository path, cargo metadata resolves no repo-local package. That is strong, but it is an argument, not the test that was asked for. So I ran the test.

src/v1 was moved off the filesystem, the emitted v2 compiler closure was rebuilt into a fresh target directory (nothing reused from a build made while the seed existed), and the seed was restored afterwards by a trap:

src/v1 present? NO
ls: cannot access 'src/v1/stage0': No such file or directory
   Compiling v1_compiled v0.1.0 (.../emit_v2b)
    Finished `release` profile [optimized] target(s) in 2m 19s
cargo exit=0

Subject: the src/v2/compiler/00_compile.dag closure emitted at 42f97f2c1, built under RUSTFLAGS=-D warnings. The seed was not merely unreferenced — it was not there, and the build completed anyway. Worktree verified clean and src/v1 restored afterwards.

The half of the acceptance test I cannot run, stated rather than glossed

The brief's second clause was "and the native lane must still produce both controls." I have not produced that receipt, and it is not available to me. #11003 removed the required-v2-native job on operator ruling — its ~4h wall on every push starved the gating lanes — and the route survives only as the operator-invoked --v2-native-route instrument under the declared drop gunbc.rung_drop v2_native_route_off_the_merge_path. Running it here is a ~4h job on a saturated fleet.

The nearest thing that exists is CI's own partial execution on the pre-merge head ff1d4da, where the then-required native job emitted the 172-file closure, built it from the seed-free manifest to a sha256'd binary, withdrew the old route, and began executing the 3,490-identity universe before the fleet cancelled it 42 minutes in. That shows the change does not break the route's preparation; it is not the both-controls receipt, and I am not presenting it as one.

— sent from proud-wren-154

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Evidence re-run at the remerged head

Head: f355a460a094a1fd0586c7c61d4387063390db43 — merge of main 267d69b86cb (picking up D1 c176027b9d1 and G 267d69b86cb) into the branch. Merge was clean; the diff against the merge base is still the one file.

All five arms re-derived at this exact head against a freshly built claim_executor / gunbc. Producer for arm 1 is run_required_emit_compile over gunbc.ci_layer_roots required_emit_compile_entries:

claim_executor --required-emit-compile --source-root dag --source-root src/v2

1. Eight required-emit-compile entries — 8/8 baseline green, mutation discriminated, restore green

required-emit-compile: dag/gunbc/ci/ci_layer_roots.dag Measured files=36 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=gunbc_ci_layer_roots red=1875
required-emit-compile: dag/gunbc/scm/load_standing.dag Measured files=9 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=gunbc_scm_load_standing red=49
required-emit-compile: dag/extdeps/uri.dag Measured files=10 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=extdeps_uri red=835
required-emit-compile: dag/std/measure.dag Measured files=24 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=std_measure red=1716
required-emit-compile: dag/std/node.dag Measured files=15 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=std_node red=121
required-emit-compile: dag/std/content_hash.dag Measured files=9 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=std_content_hash red=289
required-emit-compile: dag/extdeps/abi.dag Measured files=17 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=extdeps_abi red=48
required-emit-compile: dag/std/logic.dag Measured files=6 baseline=[Completed status=0] mutation=[Discriminated subject=EntryOwnModule module=std_logic red=40

8 manifests written, 0 carrying a v1-compiler row or any src/v1 path.

2. The emitted v2 compiler closure builds under -D warnings

gunbc compile --source-root dag --source-root src/v2 \
  --entry src/v2/compiler/00_compile.dag --output-dir OUT \
  --target rust --dependency-pool-index primary-precedence
# 172 files emitted, 0 blocking errors
# grep -rl 'v1_compiler::' OUT/src  ->  0 files

cd OUT && RUSTFLAGS='-D warnings' cargo build --release
#   Finished `release` profile [optimized] target(s) in 2m 13s   (exit 0)

3. cargo metadata — nothing repository-local in the resolved graph

repo-local packages: NONE
total packages: 92

4. The binary runs

REFUSED: no universe file given -- usage: v1_compiled <universe.tsv> <source-root>...
exit 2

5. The brief's literal test — built with src/v1 off the filesystem

Fresh target directory, so nothing was reused from a build made while the seed existed:

src/v1 present? NO
ls: cannot access 'src/v1/stage0': No such file or directory
    Finished `release` profile [optimized] target(s) in 2m 23s
cargo exit=0

src/v1 restored afterwards and the worktree verified clean at f355a460a09 (0 dirty files).

Not claimed here

The native-controls half of the brief's acceptance test is not in this comment and is not mine to produce — eager-raven-113 is running the post-#11003 --v2-native-route instrument on srv2 over the two-control universe, and that receipt will arrive with its own provenance. The cancelled ff1d4da CI run is not that receipt and is not offered as one.

— sent from proud-wren-154

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

srv2 native-route both-controls receipt, bound to f355a460

Provenance. main 267d69b86c (D1+G landed); overlay commit 92087a72 = this PR's diff on that main; pinned claim_executor sha256 b35e8f5c772220fd built from the overlaid tree, --v2-native-route --source-root dag --source-root src/v2 (post-#11003 route) emitted the 172-file closure (ecf65c82…) and built the emitted compiler to sha256 e556268e92c31dd4 under the seed-free manifest. The overlaid tree differs from the frozen head f355a460 (merge of 0ddaac93 and 267d69b8) only in comment lines of src/v1/stage0/src/emitted_closure_compile_host.rs (0 non-comment changed lines), so the receipt binds to f355a460 by content.

Run. The emitted compiler executed over the two-identity control universe with full source roots (dag, src/v2), exit 0, wall 3842.5 s, rss 1.46 GB (single thread, srv2 at load 30–50):

identity verdict
v2.native_lane_fixture.control native_lane_false_control NativeTestReturnedFalse
v2.native_lane_fixture.control native_lane_true_control NativeTestPassed

Terminal: {"_terminal":"complete","file_refusals":2909,"rows":2}. Both controls discriminate on the seed-free emitted compiler: the route's preparation, old-route withdrawal, and native execution all work with src/v1 unreferenced by the emitted crate.

Scope. This is the "native lane must still produce both controls" clause of the brief, executed. It does not establish whole-v2.test.* admission and does not retire gunbc.rung_drop v2_native_route_off_the_merge_path. Together with the recovery-baseline closure receipt above and proud-wren's five evidence arms at f355a460, #10988's acceptance packet is complete pending CI on this head.

gunbai-bot Bot pushed a commit that referenced this pull request Sep 11, 2026
…lings.

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

#10988 at f355a46 interrupted 13 members of the same parse/normalize family; main had interrupted 9. Enrol both jobs' union and every sibling measured within 10% of 500ms on either required_floor_claim_cost.tsv.
@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

srv2 closure recovery baseline, re-taken on post-#11032 main (ec1571e)

Why a second one. #11032 (grammar digest once per prepare_grammar + warm-shared parse fixtures, src/v2/compiler/02_parse.dag) and #11015 landed on main after the first baseline; #11032 edits a closure member, so under the hold rule ("closure-neutral is not receipt-neutral") the producer provenance changed and the base D2 is attributed against had to be re-observed. This is still the inherited-state observation, NOT the combined closure census (after D4), and it does not retire gunbc.rung_drop v2_native_route_off_the_merge_path.

Provenance. main ec1571e892 (D1, G, #11032, #11015 landed); overlay = this PR's diff (head f355a460) on that main, overlay commit bfd0f46b; producer = pinned claim_executor sha256 f0202ca9580a6bfd built from the overlaid tree, invoked as --v2-native-route --source-root dag --source-root src/v2. #10988 touches no closure member, so this run measures main's state. Note on the earlier ask for the floor's CPU margin: the srv2 closure instrument runs the native route only, not the floor, so the CPU margin on this PR's witnesses is reported from CI once main's floor at ec1571e is observed (its runs since 06:00Z were eaten by the runner deleter and are unobserved, not red).

Result against the immutable 68-row reference (2fb67b41). 68 -> 66 refusing closure members; 0 regressed. The 66-row after-set is row-for-row IDENTICAL to the pre-#11032 baseline taken on 267d69b8 (same three deltas: dag/std/cache_identity.dag and dag/std/unicode/types.dag accepted; src/v2/std/compilers/target_model.dag advanced from parse_g0_tokens_remain to body_lowering_reason_match_arm_navigation_refused). After-histogram unchanged: namespace_graft_body_dissolved_refused 25, parse_g0_tokens_remain 23, body_lowering_reason_match_arm_navigation_refused 9, tokenize_lex_e1_unrecognized_char 8, normalized_tree_reason_wrapper_retention_not_normalized 1.

So #11032's parse-cost fix moved no closure-member verdict: it is closure-neutral in outcome, and the provenance is now re-bound. D2's binding receipt is attributed against THIS after-set (post-#10988 main vs D2 overlay, producer rebuilt at that head). The both-controls receipt on the new emitted binary follows in a separate comment when its run completes.

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Floor margin, as asked for by the train ruling: main's own floor at ec1571e (run 34571176215, floor job 103176222405) is FloorClean after #11032, with interrupted_before_verdict=0 and completed_over_cost_requirement=0. The D1/G parse family that had been refusing at 502-512 ms now runs at 304-394 ms cpu against the 500 ms deadline (over-cost rows: where_refinement_range_clause_parses_holds 363 ms, where_refinement_clause_interior_is_not_retained_holds 392 ms, where_refinement_brand_clause_parses_holds 304 ms). The hot-fix #11029 is therefore not needed and is being closed. This PR's own floor at f355a46 is rerun in order once the fleet runner deleter is confirmed stopped; that run supplies the margin on THIS PR's five witnesses.

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Both-controls receipt on the post-#11032 emitted binary

Same overlay as the recovery baseline above (main ec1571e892, overlay commit bfd0f46b, PR head f355a460). The emitted closure binary of that overlay (sha256 fc1fd166c30f4615, gunbc-emitted-closure-src-v2-compiler-00-compile-dag <universe.tsv> dag src/v2) was run on the two-row control universe:

identity verdict
v2.native_lane_fixture.control / native_lane_false_control NativeTestReturnedFalse
v2.native_lane_fixture.control / native_lane_true_control NativeTestPassed

Both controls still discriminate on the new producer (exit 0; wall 3439 s, rss 1.46 GB, the wall being the whole-corpus ingest that #10940's closure-scoped ingest removes, not the two tests). Together with the row-identical 66-row after-set this re-binds the recovery baseline to the post-#11032 provenance. The PR's own floor rerun at f355a460 (run 34559365605, attempt 2) is the last gate before the landing ask.

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Head moved to bdb20356 (merge of main ec1571e892, which carries #11032, into the branch). Verified by the coordinator: the PR's diff against main is still exactly one file, src/v1/stage0/src/emitted_closure_compile_host.rs, byte-identical to its content at f355a460 (zero-line delta), and zero .dag files. The srv2 receipts above were taken on overlay bfd0f46b = this same diff on this same main, so the tree they measured IS the tree at bdb20356; the recovery baseline, the both-controls receipt and the five evidence arms bound to f355a460 carry to bdb20356 by content and are not re-derived. The landing ask follows this head's own CI (run 34579749070).

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Evidence packet re-derived at bdb20356d1f42990e25996851eb62185ed5140c2

One binding for the whole packet, at the post-#11032 head. Producer for arm 1:

claim_executor --required-emit-compile --source-root dag --source-root src/v2

The refinement that prompted this re-run is confirmed, not assumed. #11032 changed src/v2/compiler/02_parse.dag, so the emitted closure is a different program. Diffing this emission against the one taken at f355a460a09: exactly one emitted file differs, src/v2_compiler_parse.rs — so "the emitted compiler builds with src/v1 absent" really is a proposition about a new closure, and re-establishing it was warranted rather than ceremony.

1. Eight required-emit-compile entries — 8/8 green triples

8 entries measured, 8 × baseline=[Completed status=0] with mutation=[Discriminated …] and green restore. 8 manifests written, 0 carrying a v1-compiler row or any src/v1 path.

2. Emitted v2 compiler closure, -D warnings

# 172 files emitted, 0 blocking errors
# grep -rl 'v1_compiler::' OUT/src  ->  0 files
cd OUT && RUSTFLAGS='-D warnings' cargo build --release
#   Finished `release` profile [optimized] target(s) in 2m 49s   (exit 0)

3. cargo metadata

repo-local packages: NONE
total packages: 92

4. Binary runs

REFUSED: no universe file given -- usage: v1_compiled <universe.tsv> <source-root>...
exit 2

sha256 cff018643510a7b63d3e15b0a5b65bf72d50d47d9645cc1f30dbedf32e509951

5. The literal test — built with src/v1 off the filesystem

Fresh target directory, nothing reused from a seed-present build:

src/v1 present? NO
ls: cannot access '.../src/v1/stage0': No such file or directory
    Finished `release` profile [optimized] target(s) in 2m 51s
cargo exit=0
RESTORED src/v1

And the two binaries are byte-identical. The seed-present build and the seed-absent build of this closure both hash to cff018643510a7b63d3e15b0a5b65bf72d50d47d9645cc1f30dbedf32e509951 — the seed contributes nothing to the output, which is a sharper statement than "the build succeeded anyway".

src/v1 restored by the harness itself this time (the earlier script cd'd into the crate, so its trap resolved a relative path in the wrong directory and never fired; this one uses absolute paths). Worktree verified clean at bdb20356d1f4 afterwards — 0 dirty files.

What this packet does not contain

The native-controls half is not mine and is not here; eager-raven-113 holds the srv2 --v2-native-route receipt. Run locally, not on CI, as directed. No push — the head is unchanged at bdb20356d1f42990e25996851eb62185ed5140c2.

— sent from proud-wren-154

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Floor read at bdb20356, run 34579749070 (floor job on runner srv1-08)

Build and heal green. Floor: FloorRefused on exactly ONE identity, v2.test.claim.body_lowering.declaration_structure_preserved.where_refinement_clause_interior_is_not_retained_holds, interrupted_cpu_deadline at cpu_at_least 510 ms / 500 ms (wall 572 ms), claims_failed=0, completed_over_cost=0. Every other member of the D1/G parse family reached its verdict well under the line on this same run (range_clause 339, brand_clause 294, survives_normalize 222, empty_clause 206, empty_where 204 ms).

Context that the run itself records: the floor's heartbeat on srv1-08 shows the job at the cgroup memory high (rss ~15.2 GB against high 16.1 GB / max 17.2 GB) with majflt 1.6M to 2.0M and stall_majflt_per_min ~340k during claim evaluation, i.e. the host was page-thrashing while this identity was measured. On main's clean floor at ec1571e892 (run 34571176215) the same identity measured 392 ms: it is the family's highest-cost member and carries the smallest post-#11032 margin, about 108 ms on an unloaded host.

Disposition (coordinator): this is not a runner-deleter signature (toolchain and target were intact) and not a semantic red (the claim did not fail; it went undecided on cost under host memory pressure). One rerun of the failed floor is submitted on this same head. If the identity interrupts again on any host, the honest next step is a one-row censored cost-debt recut for it (the #11029 shape with population 1 and a fill-netted under-500 ms trigger), not further reruns. Minimum CPU headroom for this landing, as the train rule asks: 108 ms, owned by where_refinement_clause_interior_is_not_retained_holds.

@gunbai-bot

gunbai-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

Floor rerun at bdb20356 (run 34579749070 attempt 2, runner srv1-16): FloorClean, interrupted_before_verdict=0, completed_over_cost=0, witnesses success. Minimum CPU headroom on this landing: 96 ms, owned by where_refinement_clause_interior_is_not_retained_holds at 404 ms, measured while srv1-16 was itself under memory pressure (rss ~15.3 GB at the cgroup high, ~327k major faults/min), so it is a pessimistic bound; the same identity measured 392 ms on main's clean floor. Tally at this head: approval (review 63681), no request-changes, GitHub CLEAN, checks passing. Landing ask sent to the operator via fierce-lark (side-chat send cap reached today).

@briansrls
briansrls merged commit 199aee7 into main Sep 11, 2026
6 of 8 checks passed
@briansrls
briansrls deleted the session/proud-wren-154 branch September 11, 2026 12:07
gunbai-bot Bot pushed a commit that referenced this pull request Sep 11, 2026
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BwUh3dg6xfnDGy4PoikpUV
gunbai-bot Bot pushed a commit that referenced this pull request Sep 11, 2026
gunbai-bot Bot added a commit that referenced this pull request Sep 11, 2026
… the package graph, minted renderers joined to the produced seed-link population (#11023)

* v1 census close (B): the Rust reference population is produced by folding the item scan, not listed by hand

gunbc.rust_item_host_observation gains observe_rust_references / observe_current_rust_references:
fold the existing item scan over every hand-Rust file (outside a caller-supplied deletion-set
prefix) whose text names one of the caller's tokens, attribute each token-carrying line to the
innermost enclosing item, and carry the DeclarationRef projection on the row. A file-level line
lands on the file's own RustModule item; a line inside an unnamed macro block is a located
unattributed row; an unclaimed tree refuses at the projection with its path. Files naming no token
are not scanned. The HEAD-sources plumbing both live producers share is one helper
(head_rust_sources) selected by predicate.

gunbc.v1_consumer_census consumes it: v1_shim_items (four hand-named crate roots, a measurement
copied from the tree) is gone; v1_consumer_population_for takes the observation, a host refusal is
PopulationUnmeasured, unattributed lines join the uncitable column, and the token joins back to
the hunted authority (v1_rt -> v1_compiler.v1_rt, v1_interpreter -> v1_compiler.v1_interpreter)
through v1_reference_authorities. Population state stays PopulationMeasuredLowerBound.

Witnesses: six producer arms on planted sources in rust_item_host_observation_witness_test
(mutation control executed: dropping the file-level arm reds two); the census's tooling-row
falsifier now folds planted sources through the producer; the four live-population witnesses
moved to self_host_v1_consumer_census_live_witness_test.dag with a gunbc.ci_layer_roots
exclusion row, because the population now reaches git and the hermetic envelope refuses it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* v1 census close (C): the Cargo manifest medium as a relation keyed on the package graph, with minted renderers joined to the produced seed-link population

gunbc.v1_consumer_census gains the Cargo manifest relation: CargoPathDependency rows keyed on
gunbc.stage0_partition_package_graph identities. Partition-internal edges and the host-shell
edge are DERIVED from the graph's own functions; the hand tests manifest and the minted
manifests (emit_copy_qualification_fixture_gen shard_manifest_text, self_host_curated_seed_linked
_harness cssl_v1_compiled_cargo_deps_block, self_host_logic_behavioral_transport slb_cargo_toml,
cssl_seed_linked_closure_assembly's stale-red control) are authored rows, each joined to a
SeedLinkage (NotASeedEdge | SeedLinkedIntoHandRust | SeedLinkedIntoEmittedCode |
SeedBesideEmittedCodeAsOracle). The seed edges become CargoManifestDependency consumer rows.

The Rust renderers are joined in both directions against a PRODUCED population: (B)'s
observe_rust_references folded UNDER src/v1 with the seed's package name spelled as a Rust
literal (v1_seed_link_tokens). A produced site with no row is an Undecided consumer that blocks;
a rostered renderer the tree no longer carries is stale and excluded; the behavioral receipt's
rlib --extern oracle (an impl method, uncitable) is rostered by item key under a new medium,
RustcExternLink, with the oracle linkage. probe_manifest is deliberately not a row: #10988
removes the edge it minted and the table is authored to that shape; on a pre-#10988 tree the
join reports it undisposed, which is that tree's true state.

Why not v2.workflow.rust_crate_partition / gunbc.stage0_partition_package_graph: the graph is
inside the stage0 compile closure and emitted into the seed; the relation's names are the graph's
(imported), the relation itself is the census's.

gunbc.rust_item_host_observation: observe_current_rust_references_under (the dual selection),
and a comment line is not a reference (a  receipt naming a token yields no row).

Census after this step: v1_blocking_consumer_count = 42, members 53, PopulationMeasuredLowerBound.

Witnesses: five hermetic arms on planted seed-link sources (clean join, unrostered site blocks,
stale renderer excluded, unrostered uncitable + comment-not-a-site, relation keys on the graph);
one live arm; comment-skip arm in the host-observation witness.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Declare the drop review 63400 found, and use starts_with

The three live-population census witnesses leaving the hermetic floor is a
DESIGN 4b(3) rung drop, not just an exclusion row: gunbc.rung_drop
v1_consumer_census_live_population_off_the_merge_path (previous
MechanicallyPreventable, temporary Mitigatable, ReplacementStaged on the
produced observation, population = the four live fns, trigger = a
merge-blocking step executing a witness that reads v1_consumer_population()
against the live tree). The exclusion row names the drop; neither retires
the other. path_has_prefix is deleted in favor of starts_with.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Read the live population once per question, and name the Rust medium for what the rows carry (reviews 63443, 63432)

v1_blocking_consumer_count_of / v1_consumer_member_count_of / v1_consumers_of /
v1_uncitable_consumers_of take one ConsumerPopulation; the zero-argument
instrument forms read the tree exactly once. The live witnesses bind the
population once per body (the wet file: 29s -> 6.7s). RustUseEdge is renamed
RustSourceReference: the produced population attributes any token-carrying
line, not only use edges.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Consume the scan's comment predicate, record the uncitable pair, derive the seed-link tokens from the package name's authority (reviews 63432, 63450)

- rust_line_is_comment is gone; the reference producer skips exactly the lines
  gunbc.rust_item_scan line_is_attribute_or_comment skips (now exported), and
  the prose says what that covers: leading comments and attributes, not
  trailing or block comments -- those are counted and refuse loudly as
  undisposed sites; a witness pins the trailing case.
- UncitableSeedLinkSite { item_key, detail } replaces the positional pair and
  the list_first_or / list_last_or accessors.
- v1_seed_link_tokens is derived by concat over stage0_host_shell_package_name()
  so the produced side and the disposition side key on one value; the witness
  no longer carries the literal either.
- RustUseEdge -> RustSourceReference (from B).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* The count instrument carries its refusal: V1BlockingCount, never 0 from an unmeasured population (review 63464)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* The reference-authority lookup refuses an unknown token instead of borrowing the first row (review 63476)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* The drop population names all five live fns; counts replaced by the roster (review 63478)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Name the roster instead of transcribing counts (review 63478, applied to B's copy)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* One authority for the claimed hand-Rust surface, and a listed path Show cannot read refuses the whole read (reviews 63508, 63507)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Join produced lines to the census grain; the count instrument is a ProcessExit entry (review 63537)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* One read of HEAD, partitioned between the two media (review 63538); the single-medium live entries are deleted as unconsumed

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* The live witness names the run entry (review 63569)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Delete the live roster-vs-population witness the refactor made tautological (review 63591)

Both sides read one accessor of one population, so its RED was unauthorable
and the drop row leaned on it as evidence. The two refusals it named stay
executed hermetically on planted fixtures (undisposed_consumer_is_caught,
stale_row_is_caught). Its bin_wet row and drop identity go with it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Produced rows carry the tree they were read from; generated paths skip the Show loop (reviews 63608, 63607)

DiscoveryProducer for the Rust medium is minted from the RustObservedTree
(HEAD sha + ShowTree object id) that head_rust_sources read, never from the
hand sweep's pin. Generated mirrors are excluded before git.Core.Show.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* chore: regenerate drifted generated artifacts (ci auto-heal)

Ledger-Repair-Judged: docs/design-rung-drops.md
Ledger-Rows-Repaired: docs/design-rung-drops.md v1_consumer_census_live_population_off_the_merge_path

* Regenerate docs/design-rung-drops.md for the new drop (review 63648)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* A stale roster row blocks and is named; the report renders the join; ledger regenerated (review 63684)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Enroll the census's live identities in the floor route-gap roster (run 34579780327: git.Inspect.HeadCommit has no mock case)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Enroll the seed-link join live identity in the floor route-gap roster

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* The live producer witness asserts census-grain bounds, not line-grain equality (review 63723)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Delete the alias accessors; the population accessors are the one name (review 63745)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* The live census witnesses leave the tree: a changed witness with no route cannot land, and a mocked HEAD would fabricate the liveness it asserts

Runs 34589756974 / 34589514940 refused the four live identities as
changed_witness_planned_without_terminal_verdict: the floor plans every
witness the diff touches and a route-gap enrolment is exactly a witness with
no route to a verdict. Publishing a mock for git.Inspect.HeadCommit only moves
the refusal to ListTreePathsAtRevision, ShowTree and Show, and a whole mocked
chain is a fixture tree -- which the hermetic planted-source witnesses already
exercise -- asserting liveness over a constant. So the live file, its route-gap
chunk, its bin_wet rows and its exclusion row are deleted; the two assertions
that were on the floor at main are the drop row's population, the ledger is
regenerated, and the operator instrument remains the live consumer.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Regenerate the rung-drop ledger after the merge

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* The drop names the live route it declares lost, ShowTree included (review 63775)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Name the instrument, do not transcribe its row count (review 63814)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* The census witness imports v1_row_keys explicitly and drops the unused v1_claimed_successors import (review 63815)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* missing_basis states (A) (B) (C) at their current standing, not as open obligations (review 63834)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Uncitable rows carry the consumed authority; the dedup key is item x authority, the census grain

One uncitable item naming two known v1 authorities dedup'd to one row on
item_key + refusal_detail, an undercount in the fail-open direction.
V1UncitableConsumer gains consumed_old_authority (a coproduct: a known
DeclarationRef, or the unknown token), v1_uncitable_row_key keys on it, and
a planted control (one item naming v1_rt and v1_interpreter keeps two rows
in both columns) sits beside the two-lines-one-authority control. Mutation
control executed: the old key reds the new witness.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

* Delete the unconsumed zero-arg accessor; the report binds the join once (review 63990)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013ML4eiifGFgP18ALPw6inw

---------

Co-authored-by: gunbc-ci-auto-heal <gunbc-ci-auto-heal@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.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