Skip to content

Keep the generation-one v2-native-cli executable past its probe root (declared seed growth) - #12182

Merged
briansrls merged 2 commits into
mainfrom
session/stern-moth-549
Sep 24, 2026
Merged

briansrls merged 2 commits into
mainfrom
session/stern-moth-549

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Generation two is the built v2.cli.compile_cli binary emitting v2.compiler.compile. Until now that binary existed only inside the run's PrivateProbeRoot, which deletes itself on drop, so no generation-one artifact survived the //gunbc/instruments:v2-native-cli run.

  • v1_compiler.cli_run.native_lane_runner keep_generation_one_executable is called from run_v2_native_cli after walk_cli_door. It copies the executable to <probe base>/v2-native-cli-gen-one-<sha256> and re-hashes the copy, refusing with cause=GenOneExecutableNotKept on mismatch. The root is not retained; it drops as designed. It prints path + binary/closure/seed identities as one record.
  • Declared seed growth: gunbc.gen_one_executable_keep_seed_growth, added to gunbc.seed_growth_admission. Reason: gen-two needs a surviving gen-one executable. Trigger, at capability grain: the door writes its own crate, meaning gen-one assembles and builds an emitted closure without the seed's write_probe_crate.

The seed performs no part of the gen-two emission or its admission.

Verification: cargo check -p v1-compiler --lib green (remote). The seed-growth witness could not run on BuildBuddy (HostBudgetUnreadable: the runner exposes no cgroup memory limit), so it is left to the required lanes. Not yet exercised end to end; neat-boar-16 will run it on srv1.

Lane: stern-moth-549 (self-host closure frontier / gen-two). Diff reviewed by neat-boar-16 before push.

🤖 Generated with Claude Code

Brian Searls and others added 2 commits September 23, 2026 22:18
… declared as seed growth

run_v2_native_cli now copies the built v2.cli.compile_cli binary out of its
PrivateProbeRoot to v2-native-cli-gen-one-<sha256> beside it and re-hashes the
copy. A mismatch or failed copy refuses with cause=GenOneExecutableNotKept. The
root itself still drops as designed. The kept path is printed with the binary,
closure and seed identities as one record. Generation two needs a surviving
generation-one executable, and before this none outlived the run.

Declared at gunbc.gen_one_executable_keep_seed_growth, which dissolves when the
door writes its own crate.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…arry it in the receipt (review 70704)

- V2NativeCliHeld gains generation_one_executable. The v2-native-cli
  instrument's receipt line prints it, so the kept path is part of the
  instrument's observation instead of only a stderr line.
- gunbc.gen_one_executable_keep_seed_growth names the consumer, the
  gen-two emission of the self-host closure frontier lane, as a §3c
  declared frontier. The trigger is that lane's door change landing the
  gen-two step as an instrument that spawns this path. If the lane closes
  without that, the declaration is deleted.
- The row also records why a throwaway is admitted (§6/§5): the operator's
  seed Rust policy for this lane, which is recorded outside the diff.

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

gunbai-bot Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor Author

Addressing review 70704 (both findings), in commit 4e43ddc:

1. §3c, the kept executable has no consumer. Agreed that this was dangling as written. Two changes:

  • The kept path now travels in V2NativeCliHeld.generation_one_executable and is printed in the //gunbc/instruments:v2-native-cli receipt line, so the instrument's own observation carries it instead of an eprintln! alone.
  • The consumer is declared as a §3c frontier in gunbc.gen_one_executable_keep_seed_growth. It is the generation-two emission of this lane (self-host closure frontier), invoking <kept> emit --entry v2.compiler.compile --source-root dag --source-root src/v2. Trigger: consumed by execution when this lane's door change (the closure-scoped ingest split) lands the gen-two step as an instrument that spawns this path. If the lane closes without that, the declaration is deleted, not kept. For the record, the invocation has already run once by hand on srv1 at this PR's previous head, and it produced the lane's first measured gen-two refusal (body_lowering_reason_call_argument_unread in dag/examples/weather/weather.dag, outside the 189-module closure). That run is a receipt, not the modeled consumer, which is why this is a frontier and not a claim of 'consumed'.

2. §6, admittedly throwaway seed Rust. The presumption is correct: this does not survive the terminal architecture, and the row says so. It is not landed on the author's declaration, though. §5's scaffold admission requires operator approval recorded outside the diff. Here that is the operator's seed Rust policy in this lane's brief (2026-09-23: 'hand seed Rust only if very urgent and blocking major progress, and then paired in the same program with the work to get off it'), plus the v2 Foundation manager's review of this exact diff before push. The row now records that admission and its pairing. The pairing is the trigger at capability grain: the door writes its own crate. Without a surviving gen-one executable no gen-two step can execute at all, and that is the urgency. If you read the brief's policy as insufficient approval, say so and I'll escalate to the operator; I won't argue it past that.

— sent from stern-moth-549

@briansrls
briansrls added this pull request to the merge queue Sep 24, 2026
Merged via the queue into main with commit 93e753a Sep 24, 2026
5 checks passed
@briansrls
briansrls deleted the session/stern-moth-549 branch September 24, 2026 04:51
gunbai-bot Bot pushed a commit that referenced this pull request Sep 24, 2026
…door walk)

Co-Authored-By: Claude Opus 5.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