Skip to content

unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materialization_carriers, program_assembly, source_authority, 02_parse, 03_ingest) refuse with UNRESOLVED_CompilerError in curated probes — census + receipts in #6872 TSVs (calm-boar-697). Read the actual probe error output per module - #6906

Merged
briansrls merged 36 commits into
mainfrom
session/neat-swift-795-freemonoid
Jul 20, 2026

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session neat-swift-795.
Pushing to session/neat-swift-795-freemonoid advances this PR.

Worker attestation

Before flipping this PR to ready for review, confirm each item:

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (replace the TODO below).
  • Tests run: name the command (e.g. npm test, cargo test) and the result.
  • If this closes a work item, the body contains a Closes #N directive.
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.

Test plan

  • TODO: list the commands that ran (or "no tests changed; relied on CI") and the outcome.

Brian Searls and others added 19 commits July 20, 2026 03:18
…es).

Faithful-corpus carrier imports clear FreeMonoid E0425 on all 6 wave modules;
materialization_carriers v2_std_nat E0433 fixed via stub that avoids v2_std_nat.
Remaining blocker: Int E0425 (next emitter registration grain).

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

DAG lexer treated the escaped single-quote sequence inside the concat
string as StrEnd (expected RParen), panicking CI module-path index build.
Use char::from_u32(0).unwrap() in emitted stub instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
DAG string literals cannot contain raw `{`/`}` (lexer expects RParen,
found StrEnd). Move stub source inline in emit_v2_std_text_closure_stub_module
with brace fragments as separate concat operands (same pattern as clap import).

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 20, 2026 07:14
@cursor

cursor Bot commented Jul 20, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@gunbai-bot

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

All three findings in review 40169 are valid — thank you for catching them.

They were accidental collateral from restoring src/v1/stage0/src/ from an older commit while fixing the List/Map host-emit regression (36e2136); unrelated to the FreeMonoid / closure-stub emitter work in 05_emit_rust.dag.

v1_interpreter.rs — CallContractMismatch (finding 1): Confirmed. The revert dropped named-arg contract checks and surplus-positional refusal; stray labels were silently bound and extra positionals dropped. Restored from origin/main in 54f08b51dc — CallContractMismatch is back at the application site and matches cross_representation_equality_test.rs.

memory_governor.rs — per-unit width ramp (findings 2–3): Confirmed. The revert removed CompletionKind (IncreasePoint vs ObserveOnly), the headroom_hold gate on increase, and made note_unit_complete call note_unit_complete_growth unconditionally. Restored from origin/main in 54f08b51dc.

PR diff vs main in src/v1/stage0/src/ is now limited to the intended emitter surface: v1_compiler_emit_rust.rs + v1_compiler_infer_emit_info.rs (regen sync).

— sent from neat-swift-795

@gunbai-bot

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Verified review 40172 — agree with APPROVE; no code change required.

Spot-check on 54f08b51dc:

  • Scope: stage0 diff vs main is only v1_compiler_emit_rust.rs + v1_compiler_infer_emit_info.rs (emitter/regen). Interpreter + memory-governor regressions from review 40169 are already restored from origin/main in the same commit.
  • Alias preservation: render_rust_decl_type applied-overlay peel matches the fn-sig path (outer_name != "fn", !is_container_type(name: outer_name)).
  • Faithful carriers + stubs: blanket corpus_repr_is_faithful carrier imports at emit_module_full; v2_std_text / v2_std_integer closure stubs with dissolve-on headers; note at 04_emit_info.dag:408.
  • Dead code note: module_needs_freemonoid_import / node_tree_references_type_name (05_emit_rust.dag:3189–3210) have zero call sites after the blanket carrier gate (1946). Left in place as dissolve-on interim residue — will delete when ref-set-driven registration lands, not blocking this PR.

CI green on 54f08b51dc (build + ci).

— sent from neat-swift-795

Brian Searls and others added 2 commits July 20, 2026 08:01
…modules.

Addresses review 40173 medium-as-string finding: stub bodies now live in
v1.compiler.closure_stub_v2_std_{text,integer}_rust (same pattern as
runtime_rust/compiler_tests_rust) with escaped-brace strings instead of
inline concat fragments in 05_emit_rust.dag. Clarify dissolve-on prose:
stubs are closure projections, not parallel modeling authorities.

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

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Addressed review 40173 in a3676ff31d + ef822bead9.

Finding 1 (medium-as-string in emit_rust): Valid. The brace-split concat(...) blobs in emit_v2_std_*_closure_stub_module were a .dag ingester workaround, not the §4 translate path. Fix: moved stub Rust sources to dedicated modules v1.compiler.closure_stub_v2_std_text_rust and v1.compiler.closure_stub_v2_std_integer_rust (same pattern as runtime_rust.dag / compiler_tests_rust.dag — fn …_source() -> String with \{-escaped Rust). 05_emit_rust.dag now only calls those authorities and wires TextFile.path/content. Does not claim grammar-owned emission for these stubs; full serialize_target ∘ translate dissolution remains on the ref-set registration note.

Finding 2 (parallel authority vs v2.std.text / v2.std.integer): Partially valid framing, but the stubs are not competing modeling rows — they are closure projections for narrow typed.modules that omit the real module while emitted refs still need crate::v2_std_text:: / v2_std_integer::Int. The canonical authorities remain src/v2/std/text.dag and src/v2/std/integer.dag; projections dissolve when emit_lib_rs_from_files derives pub-mod membership from the emitted ref set and includes the real module. Updated 04_emit_info.dag:408 and per-stub dissolve_on_note rows to state this explicitly (scaffold with named trigger, not silent fork).

regen_stage0 --verify divergence 0 on ef822bead9.

— sent from neat-swift-795

@gunbai-bot
gunbai-bot Bot marked this pull request as draft July 20, 2026 08:58
@gunbai-bot

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Emitter-wall receipts (head 067704afc9)

Touched paths (10, final)

04_emit_info.dag, 05_emit_rust.dag, closure_stub_v2_std_{text,integer}_rust.dag, regen_stage0.rs, lib.rs, v1_compiler_closure_stub_v2_std_{text,integer}_rust.rs, v1_compiler_emit_rust.rs, v1_compiler_infer_emit_info.rs

Curated probes (CSSL_STD_SEED_LINK=1)

module emit cargo first error
02_parse.dag 72 files, 0 diag refuse E0422 CatalogKeyDerivationFacts (FreeMonoid layer cleared)
materialization_carriers.dag 41 files, 0 diag refuse E0422 CatalogKeyDerivationFacts — v2_std_text.rs + pub mod v2_std_text now in closure
04_infer.dag 49 files, 0 diag refuse E0432 crate::std_measure (narrow-closure roster)

regen_stage0

regen_divergence_count=0
regen_stage0 --emit-fresh --verify: committed stage0 matches fresh self-compile

Fresh-crate cargo build --release --lib in /tmp/regen-fresh-6906: refuse — libc unresolved in hand-pinned v1_interpreter.rs (NO CANDIDATE in verify roster).

review 40176

Addressed: per-module carrier gate restored; integer stub ref-gated; exact path check for stub suppression; closure stubs extracted to dedicated modules; dead freemonoid predicate removed.

Status: draft retained — probe cargo-green not met (next blocker: synthesized struct-literal import closure for CatalogKeyDerivationFacts).

— sent from neat-swift-795

@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 20, 2026 10:31
@gunbai-bot

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

review 40189 — addressed in 8a06749

Verified the finding: stage0 was out of sync with 05_emit_rust.dag (supplement wiring diverged; wildcard arm over-supplemented).

Fix: regen_stage0 from the authored .dag (now includes module_data_field_struct_import_names per-import-module supplementation + rust_use_crate_marker/rust_use_after_crate dedupe for plain use crate:: lines). Stage0 v1_compiler_emit_rust.rs now projects the same helpers and wiring as the graph.

CI @ 27793ac: build failed on cargo fmt --check — lib.rs had closure-stub pub mod lines out of alphabetical order (v1_compiler_coercion before v1_compiler_closure_stub_*). Fixed in 8a06749; build gate green on that commit.

cargo build -p v1-compiler --release passes locally post-regen.

— sent from neat-swift-795

@gunbai-bot

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

review 40193 — verified, no code change (non-blocking debt acknowledged)

Finding 1 (string-scan stub gate, 05_emit_rust.dag:1779-1793) — Confirmed as written. module_files_reference_v2_std_text / _integer grep already-emitted Rust text (string_contains(..., "crate::v2_std_text::") / "v2_std_integer::" at :1807-1812). Agree this is validation-standing-where-construction-was-available; the structured fact is "emitted ref set ∩ modules absent from narrow closure." Tracked: emit_dependency_registration_dissolve_on_note at 04_emit_info.dag:408 names the dissolution (collect refs during emit → derive pub-mod membership + carrier imports). Not patching further in this PR — the note is the counted trigger.

Finding 2 (closure stub projections) — Confirmed. closure_stub_v2_std_{text,integer}_rust.dag are labeled projections with per-carrier *_dissolve_on_note (not parallel authorities). Exclusive emit path verified: stubs emit only when corpus_repr_is_faithful && references && !includes (:1779-1792), where module_files_include_* checks exact path equality (f.path == expected, :1815-1822) — no double-definition at any point. Follow-up for the closure-narrowing lane to land ref-set derivation is noted; until then stubs stay gated siblings, not accreting unchecked.

Finding 3 (emitter cleanup) — Confirmed scoped: rust_use_crate_marker / rust_use_after_crate dedup three parsers; module_data_field_struct_import_names per-import supplementation; import-line dedupe extended to plain use crate:: (fixed the E0252 duplicate-import regression in stage0 regen).

Verdict accepted — APPROVE stands.

— sent from neat-swift-795

@gunbai-bot

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

review 40194 — verified, no code change

Confirmed against current tree:

Verdict accepted — APPROVE stands.

— sent from neat-swift-795

@briansrls
briansrls merged commit 3a43aa9 into main Jul 20, 2026
3 checks passed
@briansrls
briansrls deleted the session/neat-swift-795-freemonoid branch July 20, 2026 12:14
@briansrls
briansrls restored the session/neat-swift-795-freemonoid branch July 20, 2026 12:20
gunbai-bot Bot pushed a commit that referenced this pull request Jul 20, 2026
…t-closure root fix

Delta-first refresh of the v1-deletion plan authority against this session's landings:
- witness_family_fanout -> DONE (all 9 families green + trustworthy controls: #6912/#6917/#6918)
- new milestone emit_import_closure_root: the multi-layer emit-import peel root-caused into
  ONE transitive-closure derivation (operator ruling 2026-07-20); FreeMonoid was one layer, not the gate
- probe_flip_fanout + deep_module_lanes -> both GATED on emit_import_closure_root (flip wave is
  NOT orthogonal; it shares the import-closure root and fans out in parallel with deep lanes on cargo-green)
- unresolved_error_diagnosis -> diagnosis DONE, partial fix landed #6906 (mid-peel)
- ci_floor_cutover -> ledger overlap-started #6915 with a §3 hand-declared-disposition defect to root-cause
- rulings recorded: root-cause not face-by-face; cargo-green + witness-green always (no mid-peel merges)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 20, 2026
…admap; artifact projects it (#6922)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Plan cycle-4: chain B DONE, chain A single gate = comprehensive import-closure root fix

Delta-first refresh of the v1-deletion plan authority against this session's landings:
- witness_family_fanout -> DONE (all 9 families green + trustworthy controls: #6912/#6917/#6918)
- new milestone emit_import_closure_root: the multi-layer emit-import peel root-caused into
  ONE transitive-closure derivation (operator ruling 2026-07-20); FreeMonoid was one layer, not the gate
- probe_flip_fanout + deep_module_lanes -> both GATED on emit_import_closure_root (flip wave is
  NOT orthogonal; it shares the import-closure root and fans out in parallel with deep lanes on cargo-green)
- unresolved_error_diagnosis -> diagnosis DONE, partial fix landed #6906 (mid-peel)
- ci_floor_cutover -> ledger overlap-started #6915 with a §3 hand-declared-disposition defect to root-cause
- rulings recorded: root-cause not face-by-face; cargo-green + witness-green always (no mid-peel merges)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Plan cycle-5: v1_deletion_plan.dag becomes the FULL three-gate roadmap; artifact is its projection

Operator: "your job is to get us to a full and confident plan — we can antagonize
it — make this a roadmap and the artifact a projection of it." The plan authority
now models the three-gate v1-delete bar directly (§3 single authority; the
selfhost-dashboard.html artifact projects it, delta-first):

- PlanGate enum groups every milestone under Gate 1 (emitter fixed point),
  Gate 2 (honest frontier), Gate 3 (ledger green), or GateDeletion.
- BrickState (Placed|InFlight|Gated) per milestone.
- ConfidenceBasis{basis, risk, antagonize} per milestone — the attack surface
  that makes the plan antagonizable item by item (the confidence-probe lane
  fills in risk/antagonize).
- PlanGateSpec rows carry each gate's name + what it proves.
- 23 bricks (was 13): adds generic_t_rendering, the Gate-2 property bricks
  (typed_frontier/frontier_dispositioned/no_frontier_lies), the Gate-3 ledger
  bricks (ledger_modeled/ledger_projection + the 3 spine receipts), and
  emit_representation_mismatch — the E0308 layer (~4400/deep module) the
  confidence-probe just exposed once generic-T cleared (quiet-bee #6924
  residual histogram). Rewired the Gate-1 chain so E0308 sits between the two
  known roots and the deep-module lanes.

NOT "27/27 modules flipped" — the doc string states the bar is emitter fixed
point + honest frontier + ledger green; some modules stay SeedRetained by
necessity.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Fix parse error in roadmap: in-string braces trigger string interpolation

The cycle-5 remodel put literal braces in prose strings (SeedRetained{reason,
migration_trigger}). In the seed grammar `{...}` inside a string is
interpolation (render.dag escapes them as \{ \}; the seed has ExprStringInterp),
so `{reason, migration_trigger}` parsed as an interpolation expression and blew
the top-level item parser: "expected item declaration". The known-good cycle-4
file had zero in-string braces.

Fix: replaced the 3 occurrences with parens — SeedRetained(reason,
migration_trigger). Verified by execution with a discriminating control:
v1_src_dag_parse reds the pre-fix version with the exact CI error and greens
the fix.

Also folds quiet-bee's E0308 type-pair sizing into emit_representation_mismatch:
206 pairs but TOP 5 = 82% (Symbol/String ~2100 = one std fork, FreeMonoid/String
~1038, Vector/FreeMonoid ~150, Optional/Option ~150) — the layer is TRACTABLE
(3-4 construction walls at the authority, not 206 one-offs), so Gate-1 depth is
now bounded. Risk downgraded from "could dominate Gate 1" accordingly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Roadmap: wire Gate 3's ledger receipts to gate the cutover (review 40244)

cursor/composer-2.5 REQUEST_CHANGES caught a real §3 gap: the prose
(ci_floor_cutover lane_state + critical_path_note) says the cutover is gated on
the ledger receipts, but no PlanDependency wired ledger_projection / the 3 spine
receipts into ci_floor_cutover — they pointed only at v1_delete. So the modeled
DAG allowed CI cutover (and transitively quarantine) before Gate 3 completed.

Fix: retarget the 4 Gate-3 receipt edges from v1_delete to ci_floor_cutover, so
Gate 3 -> ci_floor_cutover -> v1_quarantine -> v1_delete. Now every Gate-3
receipt transitively gates BOTH quarantine and delete (verified by execution:
reachability holds for all 4), with no redundant edge (the old direct
receipt->v1_delete edges are subsumed by the chain). Updated v1_quarantine and
v1_delete lane_state prose to state the transitive gating explicitly, so a reader
of the dependency list cannot treat either as reachable without the ledger green.

DAG re-verified acyclic (Kahn over all 23 milestones); parse-checked by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 21, 2026
…ashboard (#6931)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Plan cycle-4: chain B DONE, chain A single gate = comprehensive import-closure root fix

Delta-first refresh of the v1-deletion plan authority against this session's landings:
- witness_family_fanout -> DONE (all 9 families green + trustworthy controls: #6912/#6917/#6918)
- new milestone emit_import_closure_root: the multi-layer emit-import peel root-caused into
  ONE transitive-closure derivation (operator ruling 2026-07-20); FreeMonoid was one layer, not the gate
- probe_flip_fanout + deep_module_lanes -> both GATED on emit_import_closure_root (flip wave is
  NOT orthogonal; it shares the import-closure root and fans out in parallel with deep lanes on cargo-green)
- unresolved_error_diagnosis -> diagnosis DONE, partial fix landed #6906 (mid-peel)
- ci_floor_cutover -> ledger overlap-started #6915 with a §3 hand-declared-disposition defect to root-cause
- rulings recorded: root-cause not face-by-face; cargo-green + witness-green always (no mid-peel merges)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Plan cycle-5: v1_deletion_plan.dag becomes the FULL three-gate roadmap; artifact is its projection

Operator: "your job is to get us to a full and confident plan — we can antagonize
it — make this a roadmap and the artifact a projection of it." The plan authority
now models the three-gate v1-delete bar directly (§3 single authority; the
selfhost-dashboard.html artifact projects it, delta-first):

- PlanGate enum groups every milestone under Gate 1 (emitter fixed point),
  Gate 2 (honest frontier), Gate 3 (ledger green), or GateDeletion.
- BrickState (Placed|InFlight|Gated) per milestone.
- ConfidenceBasis{basis, risk, antagonize} per milestone — the attack surface
  that makes the plan antagonizable item by item (the confidence-probe lane
  fills in risk/antagonize).
- PlanGateSpec rows carry each gate's name + what it proves.
- 23 bricks (was 13): adds generic_t_rendering, the Gate-2 property bricks
  (typed_frontier/frontier_dispositioned/no_frontier_lies), the Gate-3 ledger
  bricks (ledger_modeled/ledger_projection + the 3 spine receipts), and
  emit_representation_mismatch — the E0308 layer (~4400/deep module) the
  confidence-probe just exposed once generic-T cleared (quiet-bee #6924
  residual histogram). Rewired the Gate-1 chain so E0308 sits between the two
  known roots and the deep-module lanes.

NOT "27/27 modules flipped" — the doc string states the bar is emitter fixed
point + honest frontier + ledger green; some modules stay SeedRetained by
necessity.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Fix parse error in roadmap: in-string braces trigger string interpolation

The cycle-5 remodel put literal braces in prose strings (SeedRetained{reason,
migration_trigger}). In the seed grammar `{...}` inside a string is
interpolation (render.dag escapes them as \{ \}; the seed has ExprStringInterp),
so `{reason, migration_trigger}` parsed as an interpolation expression and blew
the top-level item parser: "expected item declaration". The known-good cycle-4
file had zero in-string braces.

Fix: replaced the 3 occurrences with parens — SeedRetained(reason,
migration_trigger). Verified by execution with a discriminating control:
v1_src_dag_parse reds the pre-fix version with the exact CI error and greens
the fix.

Also folds quiet-bee's E0308 type-pair sizing into emit_representation_mismatch:
206 pairs but TOP 5 = 82% (Symbol/String ~2100 = one std fork, FreeMonoid/String
~1038, Vector/FreeMonoid ~150, Optional/Option ~150) — the layer is TRACTABLE
(3-4 construction walls at the authority, not 206 one-offs), so Gate-1 depth is
now bounded. Risk downgraded from "could dominate Gate 1" accordingly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Roadmap: wire Gate 3's ledger receipts to gate the cutover (review 40244)

cursor/composer-2.5 REQUEST_CHANGES caught a real §3 gap: the prose
(ci_floor_cutover lane_state + critical_path_note) says the cutover is gated on
the ledger receipts, but no PlanDependency wired ledger_projection / the 3 spine
receipts into ci_floor_cutover — they pointed only at v1_delete. So the modeled
DAG allowed CI cutover (and transitively quarantine) before Gate 3 completed.

Fix: retarget the 4 Gate-3 receipt edges from v1_delete to ci_floor_cutover, so
Gate 3 -> ci_floor_cutover -> v1_quarantine -> v1_delete. Now every Gate-3
receipt transitively gates BOTH quarantine and delete (verified by execution:
reachability holds for all 4), with no redundant edge (the old direct
receipt->v1_delete edges are subsumed by the chain). Updated v1_quarantine and
v1_delete lane_state prose to state the transitive gating explicitly, so a reader
of the dependency list cannot treat either as reachable without the ledger green.

DAG re-verified acyclic (Kahn over all 23 milestones); parse-checked by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Roadmap convergence: three-gate progress on the srv1 dashboard (authority pages only) + regen golden

Render the v1-delete three-gate progress (Gate 1 emitter fixed point ·
Gate 2 honest frontier · Gate 3 ledger green) driven from
gunbc.v1_deletion_plan on the live srv1 roadmap dashboard `/` and
`/roadmap` pages — a single authority, no data duplication.

Fixes two CI-red witnesses from the first cut:
- roadmap_page_keystone_holds: the three-gate section had been spliced
  into the GENERIC roadmap_page(doc, merged) renderer, so it injected
  into every doc incl. the empty test doc, breaking the
  "empty doc -> empty <main>" invariant. Three-gate progress is
  AUTHORITY content (renders v1_deletion_plan), so route it through
  the _for_authority variants via a private _impl + main_prefix param
  (authority output byte-identical). Add
  witness_authority_shows_three_gate_progress as the positive
  coverage assertion (authority page HAS it; empty page is the
  discriminating RED control).
- live_deploy_emit_holds / witness_apply_script_matches_committed_golden:
  regenerate .github/live-deploy-srv1-apply.sh so the embedded server.js
  dashboard pages carry the three-gate content.

Proven green by execution: roadmap_page_keystone_holds PASS,
live_deploy_emit_holds PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Resolve #6942 merge: combine dispatch launch-button with three-gate progress + regen golden

Belt A (#6942) landed the roadmap launch button + /dispatch client
script on the same three dashboard files this branch touches. Combined
both in roadmap_page.dag: the _impl/main_prefix three-gate feeds
#6942's conditional dispatch_client_script() body path (empty doc still
yields a bare <main> with no script). The witness file auto-merged into
one roadmap_page_keystone_holds carrying both feature families.
Regenerated .github/live-deploy-srv1-apply.sh from the merged sources so
it carries three-gate progress AND the dispatch button (the auto-WIP
checkpoint had committed the in-progress merge with conflict markers).

Proven green by execution on the merged tree: roadmap_page_keystone_holds
PASS (three-gate + dispatch + all prior conjuncts), live_deploy_emit_holds
PASS (golden matches).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Review 40401 finding 2: three-gate widget renders only the 3 proving gates

cursor/composer-2.5 (REQUEST_CHANGES) correctly flagged that
three_gate_progress_markup() mapped all of v1_deletion_gates including
GateDeletion, rendering 4 rows under the "three gates" heading.
GateDeletion is downstream cutover/delete ("proves nothing on its own"
per the authority), not one of the three proving gates.

Filter to the proving gates via tg_is_bar_gate (GateDeletion => false);
the heading is now literally true. Witness asserts Gate 1/Gate 3 render
and "Cutover and delete" (GateDeletion's name) does NOT. Regenerated the
apply-script golden (cutover_rows=0). roadmap_page_keystone_holds PASS.

Finding 1 (exclude the non-bar-brick probe_flip_fanout from Gate 2's
count) needs a typed discriminator on PlanMilestone in the plan
authority — landing separately pending authority-edit confirmation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Review 40401 finding 1: typed bar-brick discriminator excludes seed-shrink from gate counts

cursor/composer-2.5 correctly flagged that the gate progress counted
probe_flip_fanout in Gate 2's denominator even though the authority
declares the flip wave "not itself a bar-brick" (seed-shrink beyond the
fixed-point minimum) — so Gate 2 could never read 100%.

Fix (operator-cleared to edit the authority in this PR): add a typed
BrickRole = BarBrick | SeedShrink discriminator on PlanMilestone
(v1_deletion_plan.dag); probe_flip_fanout is the one SeedShrink, the
other 22 are BarBrick. The projection's tg_gate_bricks now filters to
bar-bricks, so tg_gate_total / tg_gate_placed / the remaining list all
exclude seed-shrink. Gate 2 reads 3/4, not 3/5.

Witness asserts the seed-shrink brick's title ("std_dup-gated modules")
does NOT render in the three-gate section (discriminating: removing the
filter reds it). Regenerated golden (seedshrink_leak=0).
roadmap_page_keystone_holds PASS, live_deploy_emit_holds PASS by
execution. Merged main (#6922 plan authority now landed).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Fix host_standup witness stale after #6947 nbd_proxy typed-effect migration

declared_gap_steps_carry_interim_realization_authority required every
DeclaredGap's interim_realization to cite `ctrl:` OR (`extdeps.` AND
`gunbc.`). #6947 (Wave C3, merged to main) correctly migrated the
os-install-actuated gap's nbd_proxy realization from the extdeps shell
transport (`extdeps.bmc.webui.nbd_proxy_serve ShellProgram`) to a gunbc
typed host-effect (`gunbc.host_effect_nbd_proxy_serve`), a more-grounded
authority that no longer routes through an extdeps dep. The now-purely-
gunbc realization made the `(extdeps. AND gunbc.)` conjunction fail, so
the fold returned Bool(false) — a main-inherited CI red (owner session
crisp-bat-221 archived; no fix in flight).

Relax the over-specific conjunction to the invariant's actual intent: a
DeclaredGap must cite >=1 grounded authority — `ctrl:` OR `extdeps.` OR
`gunbc.`. Fail-closed property preserved: a gap citing NONE still reds;
ModeledCompose arm unchanged. RED proven by CI execution on 3644226
(returned Bool(false)); this greens it.

Also restores dag/test/fixture/m4_universal_governed_corpus.dag to
origin/main (a phantom auto-WIP edit had crept in during local repro).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 22, 2026
…ion + full 21-module probe sweep (#7040)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Plan cycle-4: chain B DONE, chain A single gate = comprehensive import-closure root fix

Delta-first refresh of the v1-deletion plan authority against this session's landings:
- witness_family_fanout -> DONE (all 9 families green + trustworthy controls: #6912/#6917/#6918)
- new milestone emit_import_closure_root: the multi-layer emit-import peel root-caused into
  ONE transitive-closure derivation (operator ruling 2026-07-20); FreeMonoid was one layer, not the gate
- probe_flip_fanout + deep_module_lanes -> both GATED on emit_import_closure_root (flip wave is
  NOT orthogonal; it shares the import-closure root and fans out in parallel with deep lanes on cargo-green)
- unresolved_error_diagnosis -> diagnosis DONE, partial fix landed #6906 (mid-peel)
- ci_floor_cutover -> ledger overlap-started #6915 with a §3 hand-declared-disposition defect to root-cause
- rulings recorded: root-cause not face-by-face; cargo-green + witness-green always (no mid-peel merges)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Plan cycle-5: v1_deletion_plan.dag becomes the FULL three-gate roadmap; artifact is its projection

Operator: "your job is to get us to a full and confident plan — we can antagonize
it — make this a roadmap and the artifact a projection of it." The plan authority
now models the three-gate v1-delete bar directly (§3 single authority; the
selfhost-dashboard.html artifact projects it, delta-first):

- PlanGate enum groups every milestone under Gate 1 (emitter fixed point),
  Gate 2 (honest frontier), Gate 3 (ledger green), or GateDeletion.
- BrickState (Placed|InFlight|Gated) per milestone.
- ConfidenceBasis{basis, risk, antagonize} per milestone — the attack surface
  that makes the plan antagonizable item by item (the confidence-probe lane
  fills in risk/antagonize).
- PlanGateSpec rows carry each gate's name + what it proves.
- 23 bricks (was 13): adds generic_t_rendering, the Gate-2 property bricks
  (typed_frontier/frontier_dispositioned/no_frontier_lies), the Gate-3 ledger
  bricks (ledger_modeled/ledger_projection + the 3 spine receipts), and
  emit_representation_mismatch — the E0308 layer (~4400/deep module) the
  confidence-probe just exposed once generic-T cleared (quiet-bee #6924
  residual histogram). Rewired the Gate-1 chain so E0308 sits between the two
  known roots and the deep-module lanes.

NOT "27/27 modules flipped" — the doc string states the bar is emitter fixed
point + honest frontier + ledger green; some modules stay SeedRetained by
necessity.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Fix parse error in roadmap: in-string braces trigger string interpolation

The cycle-5 remodel put literal braces in prose strings (SeedRetained{reason,
migration_trigger}). In the seed grammar `{...}` inside a string is
interpolation (render.dag escapes them as \{ \}; the seed has ExprStringInterp),
so `{reason, migration_trigger}` parsed as an interpolation expression and blew
the top-level item parser: "expected item declaration". The known-good cycle-4
file had zero in-string braces.

Fix: replaced the 3 occurrences with parens — SeedRetained(reason,
migration_trigger). Verified by execution with a discriminating control:
v1_src_dag_parse reds the pre-fix version with the exact CI error and greens
the fix.

Also folds quiet-bee's E0308 type-pair sizing into emit_representation_mismatch:
206 pairs but TOP 5 = 82% (Symbol/String ~2100 = one std fork, FreeMonoid/String
~1038, Vector/FreeMonoid ~150, Optional/Option ~150) — the layer is TRACTABLE
(3-4 construction walls at the authority, not 206 one-offs), so Gate-1 depth is
now bounded. Risk downgraded from "could dominate Gate 1" accordingly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Roadmap: wire Gate 3's ledger receipts to gate the cutover (review 40244)

cursor/composer-2.5 REQUEST_CHANGES caught a real §3 gap: the prose
(ci_floor_cutover lane_state + critical_path_note) says the cutover is gated on
the ledger receipts, but no PlanDependency wired ledger_projection / the 3 spine
receipts into ci_floor_cutover — they pointed only at v1_delete. So the modeled
DAG allowed CI cutover (and transitively quarantine) before Gate 3 completed.

Fix: retarget the 4 Gate-3 receipt edges from v1_delete to ci_floor_cutover, so
Gate 3 -> ci_floor_cutover -> v1_quarantine -> v1_delete. Now every Gate-3
receipt transitively gates BOTH quarantine and delete (verified by execution:
reachability holds for all 4), with no redundant edge (the old direct
receipt->v1_delete edges are subsumed by the chain). Updated v1_quarantine and
v1_delete lane_state prose to state the transitive gating explicitly, so a reader
of the dependency list cannot treat either as reachable without the ledger green.

DAG re-verified acyclic (Kahn over all 23 milestones); parse-checked by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Roadmap convergence: three-gate progress on the srv1 dashboard (authority pages only) + regen golden

Render the v1-delete three-gate progress (Gate 1 emitter fixed point ·
Gate 2 honest frontier · Gate 3 ledger green) driven from
gunbc.v1_deletion_plan on the live srv1 roadmap dashboard `/` and
`/roadmap` pages — a single authority, no data duplication.

Fixes two CI-red witnesses from the first cut:
- roadmap_page_keystone_holds: the three-gate section had been spliced
  into the GENERIC roadmap_page(doc, merged) renderer, so it injected
  into every doc incl. the empty test doc, breaking the
  "empty doc -> empty <main>" invariant. Three-gate progress is
  AUTHORITY content (renders v1_deletion_plan), so route it through
  the _for_authority variants via a private _impl + main_prefix param
  (authority output byte-identical). Add
  witness_authority_shows_three_gate_progress as the positive
  coverage assertion (authority page HAS it; empty page is the
  discriminating RED control).
- live_deploy_emit_holds / witness_apply_script_matches_committed_golden:
  regenerate .github/live-deploy-srv1-apply.sh so the embedded server.js
  dashboard pages carry the three-gate content.

Proven green by execution: roadmap_page_keystone_holds PASS,
live_deploy_emit_holds PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Resolve #6942 merge: combine dispatch launch-button with three-gate progress + regen golden

Belt A (#6942) landed the roadmap launch button + /dispatch client
script on the same three dashboard files this branch touches. Combined
both in roadmap_page.dag: the _impl/main_prefix three-gate feeds
#6942's conditional dispatch_client_script() body path (empty doc still
yields a bare <main> with no script). The witness file auto-merged into
one roadmap_page_keystone_holds carrying both feature families.
Regenerated .github/live-deploy-srv1-apply.sh from the merged sources so
it carries three-gate progress AND the dispatch button (the auto-WIP
checkpoint had committed the in-progress merge with conflict markers).

Proven green by execution on the merged tree: roadmap_page_keystone_holds
PASS (three-gate + dispatch + all prior conjuncts), live_deploy_emit_holds
PASS (golden matches).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Review 40401 finding 2: three-gate widget renders only the 3 proving gates

cursor/composer-2.5 (REQUEST_CHANGES) correctly flagged that
three_gate_progress_markup() mapped all of v1_deletion_gates including
GateDeletion, rendering 4 rows under the "three gates" heading.
GateDeletion is downstream cutover/delete ("proves nothing on its own"
per the authority), not one of the three proving gates.

Filter to the proving gates via tg_is_bar_gate (GateDeletion => false);
the heading is now literally true. Witness asserts Gate 1/Gate 3 render
and "Cutover and delete" (GateDeletion's name) does NOT. Regenerated the
apply-script golden (cutover_rows=0). roadmap_page_keystone_holds PASS.

Finding 1 (exclude the non-bar-brick probe_flip_fanout from Gate 2's
count) needs a typed discriminator on PlanMilestone in the plan
authority — landing separately pending authority-edit confirmation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Review 40401 finding 1: typed bar-brick discriminator excludes seed-shrink from gate counts

cursor/composer-2.5 correctly flagged that the gate progress counted
probe_flip_fanout in Gate 2's denominator even though the authority
declares the flip wave "not itself a bar-brick" (seed-shrink beyond the
fixed-point minimum) — so Gate 2 could never read 100%.

Fix (operator-cleared to edit the authority in this PR): add a typed
BrickRole = BarBrick | SeedShrink discriminator on PlanMilestone
(v1_deletion_plan.dag); probe_flip_fanout is the one SeedShrink, the
other 22 are BarBrick. The projection's tg_gate_bricks now filters to
bar-bricks, so tg_gate_total / tg_gate_placed / the remaining list all
exclude seed-shrink. Gate 2 reads 3/4, not 3/5.

Witness asserts the seed-shrink brick's title ("std_dup-gated modules")
does NOT render in the three-gate section (discriminating: removing the
filter reds it). Regenerated golden (seedshrink_leak=0).
roadmap_page_keystone_holds PASS, live_deploy_emit_holds PASS by
execution. Merged main (#6922 plan authority now landed).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Fix host_standup witness stale after #6947 nbd_proxy typed-effect migration

declared_gap_steps_carry_interim_realization_authority required every
DeclaredGap's interim_realization to cite `ctrl:` OR (`extdeps.` AND
`gunbc.`). #6947 (Wave C3, merged to main) correctly migrated the
os-install-actuated gap's nbd_proxy realization from the extdeps shell
transport (`extdeps.bmc.webui.nbd_proxy_serve ShellProgram`) to a gunbc
typed host-effect (`gunbc.host_effect_nbd_proxy_serve`), a more-grounded
authority that no longer routes through an extdeps dep. The now-purely-
gunbc realization made the `(extdeps. AND gunbc.)` conjunction fail, so
the fold returned Bool(false) — a main-inherited CI red (owner session
crisp-bat-221 archived; no fix in flight).

Relax the over-specific conjunction to the invariant's actual intent: a
DeclaredGap must cite >=1 grounded authority — `ctrl:` OR `extdeps.` OR
`gunbc.`. Fail-closed property preserved: a gap citing NONE still reds;
ModeledCompose arm unchanged. RED proven by CI execution on 3644226
(returned Bool(false)); this greens it.

Also restores dag/test/fixture/m4_universal_governed_corpus.dag to
origin/main (a phantom auto-WIP edit had crept in during local repro).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* Honest frontier refresh 2026-07-22: namespace-terminal trigger refuted by execution; full 21-module probe sweep

Operator-directed disentangle: a blocker edge without a named MEASURED reason is removed.

- 03_resolve + 03_name_resolve re-declared knowledge_attributed -> execution_measured:
  03_resolve = generic-T render class (E0425 cannot find type T; new reason row
  curated_cargo_probe_generic_type_render), 03_name_resolve = cssl_assemble refuse
  (unroutable gunbc_plans_md_helpers closure reach). Both triggers ->
  migrate_when_closure_self_emits_cargo_green (the 04_infer pattern); the
  migrate_when_namespace_only_resolution_lands trigger no longer appears anywhere.
- Full-frontier sweep TSV (21/21 modules, deduped, provenance header): 4 generic-T
  (03_resolve, 04_infer, 05_eval, fold_lowering), 1 value-qualified
  (materialization_carriers), 2 render residues (02_parse dotted, 01_tokenize
  struct-literal-path), 13 HARNESS_REFUSE on ONE root (test_claim_materialization_ladder_witness
  pulled into compiler closures; + gunbc.plans on 03_name_resolve), 1 false-red
  (03_normalize, lane shim required).
- Verified by execution: frontier compile differential clean (135 pre-existing on
  entry, 0 added), frontier_classify_unlisted_reason_refuses_holds green, 10/10
  compiler_frontier_census witnesses green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 22, 2026
…missing named as successor class; 05_eval + 06_translate upgraded to execution_measured (#7058)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Plan cycle-4: chain B DONE, chain A single gate = comprehensive import-closure root fix

Delta-first refresh of the v1-deletion plan authority against this session's landings:
- witness_family_fanout -> DONE (all 9 families green + trustworthy controls: #6912/#6917/#6918)
- new milestone emit_import_closure_root: the multi-layer emit-import peel root-caused into
  ONE transitive-closure derivation (operator ruling 2026-07-20); FreeMonoid was one layer, not the gate
- probe_flip_fanout + deep_module_lanes -> both GATED on emit_import_closure_root (flip wave is
  NOT orthogonal; it shares the import-closure root and fans out in parallel with deep lanes on cargo-green)
- unresolved_error_diagnosis -> diagnosis DONE, partial fix landed #6906 (mid-peel)
- ci_floor_cutover -> ledger overlap-started #6915 with a §3 hand-declared-disposition defect to root-cause
- rulings recorded: root-cause not face-by-face; cargo-green + witness-green always (no mid-peel merges)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Plan cycle-5: v1_deletion_plan.dag becomes the FULL three-gate roadmap; artifact is its projection

Operator: "your job is to get us to a full and confident plan — we can antagonize
it — make this a roadmap and the artifact a projection of it." The plan authority
now models the three-gate v1-delete bar directly (§3 single authority; the
selfhost-dashboard.html artifact projects it, delta-first):

- PlanGate enum groups every milestone under Gate 1 (emitter fixed point),
  Gate 2 (honest frontier), Gate 3 (ledger green), or GateDeletion.
- BrickState (Placed|InFlight|Gated) per milestone.
- ConfidenceBasis{basis, risk, antagonize} per milestone — the attack surface
  that makes the plan antagonizable item by item (the confidence-probe lane
  fills in risk/antagonize).
- PlanGateSpec rows carry each gate's name + what it proves.
- 23 bricks (was 13): adds generic_t_rendering, the Gate-2 property bricks
  (typed_frontier/frontier_dispositioned/no_frontier_lies), the Gate-3 ledger
  bricks (ledger_modeled/ledger_projection + the 3 spine receipts), and
  emit_representation_mismatch — the E0308 layer (~4400/deep module) the
  confidence-probe just exposed once generic-T cleared (quiet-bee #6924
  residual histogram). Rewired the Gate-1 chain so E0308 sits between the two
  known roots and the deep-module lanes.

NOT "27/27 modules flipped" — the doc string states the bar is emitter fixed
point + honest frontier + ledger green; some modules stay SeedRetained by
necessity.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Fix parse error in roadmap: in-string braces trigger string interpolation

The cycle-5 remodel put literal braces in prose strings (SeedRetained{reason,
migration_trigger}). In the seed grammar `{...}` inside a string is
interpolation (render.dag escapes them as \{ \}; the seed has ExprStringInterp),
so `{reason, migration_trigger}` parsed as an interpolation expression and blew
the top-level item parser: "expected item declaration". The known-good cycle-4
file had zero in-string braces.

Fix: replaced the 3 occurrences with parens — SeedRetained(reason,
migration_trigger). Verified by execution with a discriminating control:
v1_src_dag_parse reds the pre-fix version with the exact CI error and greens
the fix.

Also folds quiet-bee's E0308 type-pair sizing into emit_representation_mismatch:
206 pairs but TOP 5 = 82% (Symbol/String ~2100 = one std fork, FreeMonoid/String
~1038, Vector/FreeMonoid ~150, Optional/Option ~150) — the layer is TRACTABLE
(3-4 construction walls at the authority, not 206 one-offs), so Gate-1 depth is
now bounded. Risk downgraded from "could dominate Gate 1" accordingly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Roadmap: wire Gate 3's ledger receipts to gate the cutover (review 40244)

cursor/composer-2.5 REQUEST_CHANGES caught a real §3 gap: the prose
(ci_floor_cutover lane_state + critical_path_note) says the cutover is gated on
the ledger receipts, but no PlanDependency wired ledger_projection / the 3 spine
receipts into ci_floor_cutover — they pointed only at v1_delete. So the modeled
DAG allowed CI cutover (and transitively quarantine) before Gate 3 completed.

Fix: retarget the 4 Gate-3 receipt edges from v1_delete to ci_floor_cutover, so
Gate 3 -> ci_floor_cutover -> v1_quarantine -> v1_delete. Now every Gate-3
receipt transitively gates BOTH quarantine and delete (verified by execution:
reachability holds for all 4), with no redundant edge (the old direct
receipt->v1_delete edges are subsumed by the chain). Updated v1_quarantine and
v1_delete lane_state prose to state the transitive gating explicitly, so a reader
of the dependency list cannot treat either as reachable without the ledger green.

DAG re-verified acyclic (Kahn over all 23 milestones); parse-checked by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Roadmap convergence: three-gate progress on the srv1 dashboard (authority pages only) + regen golden

Render the v1-delete three-gate progress (Gate 1 emitter fixed point ·
Gate 2 honest frontier · Gate 3 ledger green) driven from
gunbc.v1_deletion_plan on the live srv1 roadmap dashboard `/` and
`/roadmap` pages — a single authority, no data duplication.

Fixes two CI-red witnesses from the first cut:
- roadmap_page_keystone_holds: the three-gate section had been spliced
  into the GENERIC roadmap_page(doc, merged) renderer, so it injected
  into every doc incl. the empty test doc, breaking the
  "empty doc -> empty <main>" invariant. Three-gate progress is
  AUTHORITY content (renders v1_deletion_plan), so route it through
  the _for_authority variants via a private _impl + main_prefix param
  (authority output byte-identical). Add
  witness_authority_shows_three_gate_progress as the positive
  coverage assertion (authority page HAS it; empty page is the
  discriminating RED control).
- live_deploy_emit_holds / witness_apply_script_matches_committed_golden:
  regenerate .github/live-deploy-srv1-apply.sh so the embedded server.js
  dashboard pages carry the three-gate content.

Proven green by execution: roadmap_page_keystone_holds PASS,
live_deploy_emit_holds PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Resolve #6942 merge: combine dispatch launch-button with three-gate progress + regen golden

Belt A (#6942) landed the roadmap launch button + /dispatch client
script on the same three dashboard files this branch touches. Combined
both in roadmap_page.dag: the _impl/main_prefix three-gate feeds
#6942's conditional dispatch_client_script() body path (empty doc still
yields a bare <main> with no script). The witness file auto-merged into
one roadmap_page_keystone_holds carrying both feature families.
Regenerated .github/live-deploy-srv1-apply.sh from the merged sources so
it carries three-gate progress AND the dispatch button (the auto-WIP
checkpoint had committed the in-progress merge with conflict markers).

Proven green by execution on the merged tree: roadmap_page_keystone_holds
PASS (three-gate + dispatch + all prior conjuncts), live_deploy_emit_holds
PASS (golden matches).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Review 40401 finding 2: three-gate widget renders only the 3 proving gates

cursor/composer-2.5 (REQUEST_CHANGES) correctly flagged that
three_gate_progress_markup() mapped all of v1_deletion_gates including
GateDeletion, rendering 4 rows under the "three gates" heading.
GateDeletion is downstream cutover/delete ("proves nothing on its own"
per the authority), not one of the three proving gates.

Filter to the proving gates via tg_is_bar_gate (GateDeletion => false);
the heading is now literally true. Witness asserts Gate 1/Gate 3 render
and "Cutover and delete" (GateDeletion's name) does NOT. Regenerated the
apply-script golden (cutover_rows=0). roadmap_page_keystone_holds PASS.

Finding 1 (exclude the non-bar-brick probe_flip_fanout from Gate 2's
count) needs a typed discriminator on PlanMilestone in the plan
authority — landing separately pending authority-edit confirmation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Review 40401 finding 1: typed bar-brick discriminator excludes seed-shrink from gate counts

cursor/composer-2.5 correctly flagged that the gate progress counted
probe_flip_fanout in Gate 2's denominator even though the authority
declares the flip wave "not itself a bar-brick" (seed-shrink beyond the
fixed-point minimum) — so Gate 2 could never read 100%.

Fix (operator-cleared to edit the authority in this PR): add a typed
BrickRole = BarBrick | SeedShrink discriminator on PlanMilestone
(v1_deletion_plan.dag); probe_flip_fanout is the one SeedShrink, the
other 22 are BarBrick. The projection's tg_gate_bricks now filters to
bar-bricks, so tg_gate_total / tg_gate_placed / the remaining list all
exclude seed-shrink. Gate 2 reads 3/4, not 3/5.

Witness asserts the seed-shrink brick's title ("std_dup-gated modules")
does NOT render in the three-gate section (discriminating: removing the
filter reds it). Regenerated golden (seedshrink_leak=0).
roadmap_page_keystone_holds PASS, live_deploy_emit_holds PASS by
execution. Merged main (#6922 plan authority now landed).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Fix host_standup witness stale after #6947 nbd_proxy typed-effect migration

declared_gap_steps_carry_interim_realization_authority required every
DeclaredGap's interim_realization to cite `ctrl:` OR (`extdeps.` AND
`gunbc.`). #6947 (Wave C3, merged to main) correctly migrated the
os-install-actuated gap's nbd_proxy realization from the extdeps shell
transport (`extdeps.bmc.webui.nbd_proxy_serve ShellProgram`) to a gunbc
typed host-effect (`gunbc.host_effect_nbd_proxy_serve`), a more-grounded
authority that no longer routes through an extdeps dep. The now-purely-
gunbc realization made the `(extdeps. AND gunbc.)` conjunction fail, so
the fold returned Bool(false) — a main-inherited CI red (owner session
crisp-bat-221 archived; no fix in flight).

Relax the over-specific conjunction to the invariant's actual intent: a
DeclaredGap must cite >=1 grounded authority — `ctrl:` OR `extdeps.` OR
`gunbc.`. Fail-closed property preserved: a gap citing NONE still reds;
ModeledCompose arm unchanged. RED proven by CI execution on 3644226
(returned Bool(false)); this greens it.

Also restores dag/test/fixture/m4_universal_governed_corpus.dag to
origin/main (a phantom auto-WIP edit had crept in during local repro).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* Honest frontier refresh 2026-07-22: namespace-terminal trigger refuted by execution; full 21-module probe sweep

Operator-directed disentangle: a blocker edge without a named MEASURED reason is removed.

- 03_resolve + 03_name_resolve re-declared knowledge_attributed -> execution_measured:
  03_resolve = generic-T render class (E0425 cannot find type T; new reason row
  curated_cargo_probe_generic_type_render), 03_name_resolve = cssl_assemble refuse
  (unroutable gunbc_plans_md_helpers closure reach). Both triggers ->
  migrate_when_closure_self_emits_cargo_green (the 04_infer pattern); the
  migrate_when_namespace_only_resolution_lands trigger no longer appears anywhere.
- Full-frontier sweep TSV (21/21 modules, deduped, provenance header): 4 generic-T
  (03_resolve, 04_infer, 05_eval, fold_lowering), 1 value-qualified
  (materialization_carriers), 2 render residues (02_parse dotted, 01_tokenize
  struct-literal-path), 13 HARNESS_REFUSE on ONE root (test_claim_materialization_ladder_witness
  pulled into compiler closures; + gunbc.plans on 03_name_resolve), 1 false-red
  (03_normalize, lane shim required).
- Verified by execution: frontier compile differential clean (135 pre-existing on
  entry, 0 added), frontier_classify_unlisted_reason_refuses_holds green, 10/10
  compiler_frontier_census witnesses green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* Post-merge honest frontier re-sweep (13 modules): generic-T class DEAD, type-ref-import-missing is the successor class on 5 modules (3 unique symbols); 05_eval + 06_translate knowledge_attributed -> execution_measured; emit-shape + struct-literal-body classes named; materialization_carriers advanced off import-closure. Receipts in TSV + honest_frontier_refresh_2026_07_22_post_merge_note

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* review 41418: upgrade compiler_frontier_row_05_emit knowledge_attributed -> execution_measured (TSV row 05_emit E0433 UriScheme landed by the resumed background sweep after the 13-row read) — roster and receipt back to one authority

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* Remove scratch rank probe swept in by auto-WIP commit (probe served its purpose: sweep-order ranks verified against frontier authority)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
briansrls pushed a commit that referenced this pull request Jul 23, 2026
…ion receipts (#7092)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Plan cycle-4: chain B DONE, chain A single gate = comprehensive import-closure root fix

Delta-first refresh of the v1-deletion plan authority against this session's landings:
- witness_family_fanout -> DONE (all 9 families green + trustworthy controls: #6912/#6917/#6918)
- new milestone emit_import_closure_root: the multi-layer emit-import peel root-caused into
  ONE transitive-closure derivation (operator ruling 2026-07-20); FreeMonoid was one layer, not the gate
- probe_flip_fanout + deep_module_lanes -> both GATED on emit_import_closure_root (flip wave is
  NOT orthogonal; it shares the import-closure root and fans out in parallel with deep lanes on cargo-green)
- unresolved_error_diagnosis -> diagnosis DONE, partial fix landed #6906 (mid-peel)
- ci_floor_cutover -> ledger overlap-started #6915 with a §3 hand-declared-disposition defect to root-cause
- rulings recorded: root-cause not face-by-face; cargo-green + witness-green always (no mid-peel merges)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Plan cycle-5: v1_deletion_plan.dag becomes the FULL three-gate roadmap; artifact is its projection

Operator: "your job is to get us to a full and confident plan — we can antagonize
it — make this a roadmap and the artifact a projection of it." The plan authority
now models the three-gate v1-delete bar directly (§3 single authority; the
selfhost-dashboard.html artifact projects it, delta-first):

- PlanGate enum groups every milestone under Gate 1 (emitter fixed point),
  Gate 2 (honest frontier), Gate 3 (ledger green), or GateDeletion.
- BrickState (Placed|InFlight|Gated) per milestone.
- ConfidenceBasis{basis, risk, antagonize} per milestone — the attack surface
  that makes the plan antagonizable item by item (the confidence-probe lane
  fills in risk/antagonize).
- PlanGateSpec rows carry each gate's name + what it proves.
- 23 bricks (was 13): adds generic_t_rendering, the Gate-2 property bricks
  (typed_frontier/frontier_dispositioned/no_frontier_lies), the Gate-3 ledger
  bricks (ledger_modeled/ledger_projection + the 3 spine receipts), and
  emit_representation_mismatch — the E0308 layer (~4400/deep module) the
  confidence-probe just exposed once generic-T cleared (quiet-bee #6924
  residual histogram). Rewired the Gate-1 chain so E0308 sits between the two
  known roots and the deep-module lanes.

NOT "27/27 modules flipped" — the doc string states the bar is emitter fixed
point + honest frontier + ledger green; some modules stay SeedRetained by
necessity.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Fix parse error in roadmap: in-string braces trigger string interpolation

The cycle-5 remodel put literal braces in prose strings (SeedRetained{reason,
migration_trigger}). In the seed grammar `{...}` inside a string is
interpolation (render.dag escapes them as \{ \}; the seed has ExprStringInterp),
so `{reason, migration_trigger}` parsed as an interpolation expression and blew
the top-level item parser: "expected item declaration". The known-good cycle-4
file had zero in-string braces.

Fix: replaced the 3 occurrences with parens — SeedRetained(reason,
migration_trigger). Verified by execution with a discriminating control:
v1_src_dag_parse reds the pre-fix version with the exact CI error and greens
the fix.

Also folds quiet-bee's E0308 type-pair sizing into emit_representation_mismatch:
206 pairs but TOP 5 = 82% (Symbol/String ~2100 = one std fork, FreeMonoid/String
~1038, Vector/FreeMonoid ~150, Optional/Option ~150) — the layer is TRACTABLE
(3-4 construction walls at the authority, not 206 one-offs), so Gate-1 depth is
now bounded. Risk downgraded from "could dominate Gate 1" accordingly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Roadmap: wire Gate 3's ledger receipts to gate the cutover (review 40244)

cursor/composer-2.5 REQUEST_CHANGES caught a real §3 gap: the prose
(ci_floor_cutover lane_state + critical_path_note) says the cutover is gated on
the ledger receipts, but no PlanDependency wired ledger_projection / the 3 spine
receipts into ci_floor_cutover — they pointed only at v1_delete. So the modeled
DAG allowed CI cutover (and transitively quarantine) before Gate 3 completed.

Fix: retarget the 4 Gate-3 receipt edges from v1_delete to ci_floor_cutover, so
Gate 3 -> ci_floor_cutover -> v1_quarantine -> v1_delete. Now every Gate-3
receipt transitively gates BOTH quarantine and delete (verified by execution:
reachability holds for all 4), with no redundant edge (the old direct
receipt->v1_delete edges are subsumed by the chain). Updated v1_quarantine and
v1_delete lane_state prose to state the transitive gating explicitly, so a reader
of the dependency list cannot treat either as reachable without the ledger green.

DAG re-verified acyclic (Kahn over all 23 milestones); parse-checked by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Roadmap convergence: three-gate progress on the srv1 dashboard (authority pages only) + regen golden

Render the v1-delete three-gate progress (Gate 1 emitter fixed point ·
Gate 2 honest frontier · Gate 3 ledger green) driven from
gunbc.v1_deletion_plan on the live srv1 roadmap dashboard `/` and
`/roadmap` pages — a single authority, no data duplication.

Fixes two CI-red witnesses from the first cut:
- roadmap_page_keystone_holds: the three-gate section had been spliced
  into the GENERIC roadmap_page(doc, merged) renderer, so it injected
  into every doc incl. the empty test doc, breaking the
  "empty doc -> empty <main>" invariant. Three-gate progress is
  AUTHORITY content (renders v1_deletion_plan), so route it through
  the _for_authority variants via a private _impl + main_prefix param
  (authority output byte-identical). Add
  witness_authority_shows_three_gate_progress as the positive
  coverage assertion (authority page HAS it; empty page is the
  discriminating RED control).
- live_deploy_emit_holds / witness_apply_script_matches_committed_golden:
  regenerate .github/live-deploy-srv1-apply.sh so the embedded server.js
  dashboard pages carry the three-gate content.

Proven green by execution: roadmap_page_keystone_holds PASS,
live_deploy_emit_holds PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Resolve #6942 merge: combine dispatch launch-button with three-gate progress + regen golden

Belt A (#6942) landed the roadmap launch button + /dispatch client
script on the same three dashboard files this branch touches. Combined
both in roadmap_page.dag: the _impl/main_prefix three-gate feeds
#6942's conditional dispatch_client_script() body path (empty doc still
yields a bare <main> with no script). The witness file auto-merged into
one roadmap_page_keystone_holds carrying both feature families.
Regenerated .github/live-deploy-srv1-apply.sh from the merged sources so
it carries three-gate progress AND the dispatch button (the auto-WIP
checkpoint had committed the in-progress merge with conflict markers).

Proven green by execution on the merged tree: roadmap_page_keystone_holds
PASS (three-gate + dispatch + all prior conjuncts), live_deploy_emit_holds
PASS (golden matches).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Review 40401 finding 2: three-gate widget renders only the 3 proving gates

cursor/composer-2.5 (REQUEST_CHANGES) correctly flagged that
three_gate_progress_markup() mapped all of v1_deletion_gates including
GateDeletion, rendering 4 rows under the "three gates" heading.
GateDeletion is downstream cutover/delete ("proves nothing on its own"
per the authority), not one of the three proving gates.

Filter to the proving gates via tg_is_bar_gate (GateDeletion => false);
the heading is now literally true. Witness asserts Gate 1/Gate 3 render
and "Cutover and delete" (GateDeletion's name) does NOT. Regenerated the
apply-script golden (cutover_rows=0). roadmap_page_keystone_holds PASS.

Finding 1 (exclude the non-bar-brick probe_flip_fanout from Gate 2's
count) needs a typed discriminator on PlanMilestone in the plan
authority — landing separately pending authority-edit confirmation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Review 40401 finding 1: typed bar-brick discriminator excludes seed-shrink from gate counts

cursor/composer-2.5 correctly flagged that the gate progress counted
probe_flip_fanout in Gate 2's denominator even though the authority
declares the flip wave "not itself a bar-brick" (seed-shrink beyond the
fixed-point minimum) — so Gate 2 could never read 100%.

Fix (operator-cleared to edit the authority in this PR): add a typed
BrickRole = BarBrick | SeedShrink discriminator on PlanMilestone
(v1_deletion_plan.dag); probe_flip_fanout is the one SeedShrink, the
other 22 are BarBrick. The projection's tg_gate_bricks now filters to
bar-bricks, so tg_gate_total / tg_gate_placed / the remaining list all
exclude seed-shrink. Gate 2 reads 3/4, not 3/5.

Witness asserts the seed-shrink brick's title ("std_dup-gated modules")
does NOT render in the three-gate section (discriminating: removing the
filter reds it). Regenerated golden (seedshrink_leak=0).
roadmap_page_keystone_holds PASS, live_deploy_emit_holds PASS by
execution. Merged main (#6922 plan authority now landed).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Fix host_standup witness stale after #6947 nbd_proxy typed-effect migration

declared_gap_steps_carry_interim_realization_authority required every
DeclaredGap's interim_realization to cite `ctrl:` OR (`extdeps.` AND
`gunbc.`). #6947 (Wave C3, merged to main) correctly migrated the
os-install-actuated gap's nbd_proxy realization from the extdeps shell
transport (`extdeps.bmc.webui.nbd_proxy_serve ShellProgram`) to a gunbc
typed host-effect (`gunbc.host_effect_nbd_proxy_serve`), a more-grounded
authority that no longer routes through an extdeps dep. The now-purely-
gunbc realization made the `(extdeps. AND gunbc.)` conjunction fail, so
the fold returned Bool(false) — a main-inherited CI red (owner session
crisp-bat-221 archived; no fix in flight).

Relax the over-specific conjunction to the invariant's actual intent: a
DeclaredGap must cite >=1 grounded authority — `ctrl:` OR `extdeps.` OR
`gunbc.`. Fail-closed property preserved: a gap citing NONE still reds;
ModeledCompose arm unchanged. RED proven by CI execution on 3644226
(returned Bool(false)); this greens it.

Also restores dag/test/fixture/m4_universal_governed_corpus.dag to
origin/main (a phantom auto-WIP edit had crept in during local repro).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* Honest frontier refresh 2026-07-22: namespace-terminal trigger refuted by execution; full 21-module probe sweep

Operator-directed disentangle: a blocker edge without a named MEASURED reason is removed.

- 03_resolve + 03_name_resolve re-declared knowledge_attributed -> execution_measured:
  03_resolve = generic-T render class (E0425 cannot find type T; new reason row
  curated_cargo_probe_generic_type_render), 03_name_resolve = cssl_assemble refuse
  (unroutable gunbc_plans_md_helpers closure reach). Both triggers ->
  migrate_when_closure_self_emits_cargo_green (the 04_infer pattern); the
  migrate_when_namespace_only_resolution_lands trigger no longer appears anywhere.
- Full-frontier sweep TSV (21/21 modules, deduped, provenance header): 4 generic-T
  (03_resolve, 04_infer, 05_eval, fold_lowering), 1 value-qualified
  (materialization_carriers), 2 render residues (02_parse dotted, 01_tokenize
  struct-literal-path), 13 HARNESS_REFUSE on ONE root (test_claim_materialization_ladder_witness
  pulled into compiler closures; + gunbc.plans on 03_name_resolve), 1 false-red
  (03_normalize, lane shim required).
- Verified by execution: frontier compile differential clean (135 pre-existing on
  entry, 0 added), frontier_classify_unlisted_reason_refuses_holds green, 10/10
  compiler_frontier_census witnesses green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* Post-merge honest frontier re-sweep (13 modules): generic-T class DEAD, type-ref-import-missing is the successor class on 5 modules (3 unique symbols); 05_eval + 06_translate knowledge_attributed -> execution_measured; emit-shape + struct-literal-body classes named; materialization_carriers advanced off import-closure. Receipts in TSV + honest_frontier_refresh_2026_07_22_post_merge_note

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* review 41418: upgrade compiler_frontier_row_05_emit knowledge_attributed -> execution_measured (TSV row 05_emit E0433 UriScheme landed by the resumed background sweep after the 13-row read) — roster and receipt back to one authority

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* Remove scratch rank probe swept in by auto-WIP commit (probe served its purpose: sweep-order ranks verified against frontier authority)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* Fix dual-milestone drift: re-base six v1-deletion plan rows on 2026-07-22 execution receipts

The plan-milestone rows lagged the frontier/probe carriers (the staleness the
operator saw on the freshly deployed srv1 roadmap). Re-based on receipts, both
directions — two flips forward, one flip BACK:

- generic_t_rendering InFlight -> Placed: class extinct by execution (#7033 +
  21-module re-sweep, zero curated_cargo_probe_generic_type_render rows); Phase-2
  typed-REFUSE residue named as non-bar hardening.
- trigger_renegotiation InFlight -> Placed: the mechanical frontier-row update
  landed (#7040 trigger refutation + #7058 refresh); no namespace-gated trigger
  remains on the frontier.
- std_dup_assembly_fix Placed -> InFlight (honest-green rule): E0255 resurfaced
  post type-surface regen as first-error on the curated 4-module baseline —
  suspected different root (emitter-synthesized std use-lines, #7068 pub-use
  family). Now the single first-error blocker for the cargo-green fan-out.
- emit_import_closure_root: type-surface arm landed (#7057), E0422/E0433 class
  cleared by execution; representative cargo-green bar still unmet behind E0255.
- emit_representation_mismatch: the ~4400-sized layer measured GONE on 04_infer
  (e0308_all=0); gate premise re-pointed to std_dup + post-clear re-histogram.
- deep_module_lanes: gate premise re-based accordingly.

Verified by execution: plan closure compiles 0 diagnostics; roadmap_page,
roadmap_frontier, roadmap_register witnesses all true; generated_artifact_gate
main_wet ExitSuccess with zero drift.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
briansrls pushed a commit that referenced this pull request Jul 23, 2026
…eletion bricks (#7110)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Plan cycle-4: chain B DONE, chain A single gate = comprehensive import-closure root fix

Delta-first refresh of the v1-deletion plan authority against this session's landings:
- witness_family_fanout -> DONE (all 9 families green + trustworthy controls: #6912/#6917/#6918)
- new milestone emit_import_closure_root: the multi-layer emit-import peel root-caused into
  ONE transitive-closure derivation (operator ruling 2026-07-20); FreeMonoid was one layer, not the gate
- probe_flip_fanout + deep_module_lanes -> both GATED on emit_import_closure_root (flip wave is
  NOT orthogonal; it shares the import-closure root and fans out in parallel with deep lanes on cargo-green)
- unresolved_error_diagnosis -> diagnosis DONE, partial fix landed #6906 (mid-peel)
- ci_floor_cutover -> ledger overlap-started #6915 with a §3 hand-declared-disposition defect to root-cause
- rulings recorded: root-cause not face-by-face; cargo-green + witness-green always (no mid-peel merges)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Plan cycle-5: v1_deletion_plan.dag becomes the FULL three-gate roadmap; artifact is its projection

Operator: "your job is to get us to a full and confident plan — we can antagonize
it — make this a roadmap and the artifact a projection of it." The plan authority
now models the three-gate v1-delete bar directly (§3 single authority; the
selfhost-dashboard.html artifact projects it, delta-first):

- PlanGate enum groups every milestone under Gate 1 (emitter fixed point),
  Gate 2 (honest frontier), Gate 3 (ledger green), or GateDeletion.
- BrickState (Placed|InFlight|Gated) per milestone.
- ConfidenceBasis{basis, risk, antagonize} per milestone — the attack surface
  that makes the plan antagonizable item by item (the confidence-probe lane
  fills in risk/antagonize).
- PlanGateSpec rows carry each gate's name + what it proves.
- 23 bricks (was 13): adds generic_t_rendering, the Gate-2 property bricks
  (typed_frontier/frontier_dispositioned/no_frontier_lies), the Gate-3 ledger
  bricks (ledger_modeled/ledger_projection + the 3 spine receipts), and
  emit_representation_mismatch — the E0308 layer (~4400/deep module) the
  confidence-probe just exposed once generic-T cleared (quiet-bee #6924
  residual histogram). Rewired the Gate-1 chain so E0308 sits between the two
  known roots and the deep-module lanes.

NOT "27/27 modules flipped" — the doc string states the bar is emitter fixed
point + honest frontier + ledger green; some modules stay SeedRetained by
necessity.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Fix parse error in roadmap: in-string braces trigger string interpolation

The cycle-5 remodel put literal braces in prose strings (SeedRetained{reason,
migration_trigger}). In the seed grammar `{...}` inside a string is
interpolation (render.dag escapes them as \{ \}; the seed has ExprStringInterp),
so `{reason, migration_trigger}` parsed as an interpolation expression and blew
the top-level item parser: "expected item declaration". The known-good cycle-4
file had zero in-string braces.

Fix: replaced the 3 occurrences with parens — SeedRetained(reason,
migration_trigger). Verified by execution with a discriminating control:
v1_src_dag_parse reds the pre-fix version with the exact CI error and greens
the fix.

Also folds quiet-bee's E0308 type-pair sizing into emit_representation_mismatch:
206 pairs but TOP 5 = 82% (Symbol/String ~2100 = one std fork, FreeMonoid/String
~1038, Vector/FreeMonoid ~150, Optional/Option ~150) — the layer is TRACTABLE
(3-4 construction walls at the authority, not 206 one-offs), so Gate-1 depth is
now bounded. Risk downgraded from "could dominate Gate 1" accordingly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Roadmap: wire Gate 3's ledger receipts to gate the cutover (review 40244)

cursor/composer-2.5 REQUEST_CHANGES caught a real §3 gap: the prose
(ci_floor_cutover lane_state + critical_path_note) says the cutover is gated on
the ledger receipts, but no PlanDependency wired ledger_projection / the 3 spine
receipts into ci_floor_cutover — they pointed only at v1_delete. So the modeled
DAG allowed CI cutover (and transitively quarantine) before Gate 3 completed.

Fix: retarget the 4 Gate-3 receipt edges from v1_delete to ci_floor_cutover, so
Gate 3 -> ci_floor_cutover -> v1_quarantine -> v1_delete. Now every Gate-3
receipt transitively gates BOTH quarantine and delete (verified by execution:
reachability holds for all 4), with no redundant edge (the old direct
receipt->v1_delete edges are subsumed by the chain). Updated v1_quarantine and
v1_delete lane_state prose to state the transitive gating explicitly, so a reader
of the dependency list cannot treat either as reachable without the ledger green.

DAG re-verified acyclic (Kahn over all 23 milestones); parse-checked by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Roadmap convergence: three-gate progress on the srv1 dashboard (authority pages only) + regen golden

Render the v1-delete three-gate progress (Gate 1 emitter fixed point ·
Gate 2 honest frontier · Gate 3 ledger green) driven from
gunbc.v1_deletion_plan on the live srv1 roadmap dashboard `/` and
`/roadmap` pages — a single authority, no data duplication.

Fixes two CI-red witnesses from the first cut:
- roadmap_page_keystone_holds: the three-gate section had been spliced
  into the GENERIC roadmap_page(doc, merged) renderer, so it injected
  into every doc incl. the empty test doc, breaking the
  "empty doc -> empty <main>" invariant. Three-gate progress is
  AUTHORITY content (renders v1_deletion_plan), so route it through
  the _for_authority variants via a private _impl + main_prefix param
  (authority output byte-identical). Add
  witness_authority_shows_three_gate_progress as the positive
  coverage assertion (authority page HAS it; empty page is the
  discriminating RED control).
- live_deploy_emit_holds / witness_apply_script_matches_committed_golden:
  regenerate .github/live-deploy-srv1-apply.sh so the embedded server.js
  dashboard pages carry the three-gate content.

Proven green by execution: roadmap_page_keystone_holds PASS,
live_deploy_emit_holds PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Resolve #6942 merge: combine dispatch launch-button with three-gate progress + regen golden

Belt A (#6942) landed the roadmap launch button + /dispatch client
script on the same three dashboard files this branch touches. Combined
both in roadmap_page.dag: the _impl/main_prefix three-gate feeds
#6942's conditional dispatch_client_script() body path (empty doc still
yields a bare <main> with no script). The witness file auto-merged into
one roadmap_page_keystone_holds carrying both feature families.
Regenerated .github/live-deploy-srv1-apply.sh from the merged sources so
it carries three-gate progress AND the dispatch button (the auto-WIP
checkpoint had committed the in-progress merge with conflict markers).

Proven green by execution on the merged tree: roadmap_page_keystone_holds
PASS (three-gate + dispatch + all prior conjuncts), live_deploy_emit_holds
PASS (golden matches).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Review 40401 finding 2: three-gate widget renders only the 3 proving gates

cursor/composer-2.5 (REQUEST_CHANGES) correctly flagged that
three_gate_progress_markup() mapped all of v1_deletion_gates including
GateDeletion, rendering 4 rows under the "three gates" heading.
GateDeletion is downstream cutover/delete ("proves nothing on its own"
per the authority), not one of the three proving gates.

Filter to the proving gates via tg_is_bar_gate (GateDeletion => false);
the heading is now literally true. Witness asserts Gate 1/Gate 3 render
and "Cutover and delete" (GateDeletion's name) does NOT. Regenerated the
apply-script golden (cutover_rows=0). roadmap_page_keystone_holds PASS.

Finding 1 (exclude the non-bar-brick probe_flip_fanout from Gate 2's
count) needs a typed discriminator on PlanMilestone in the plan
authority — landing separately pending authority-edit confirmation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Review 40401 finding 1: typed bar-brick discriminator excludes seed-shrink from gate counts

cursor/composer-2.5 correctly flagged that the gate progress counted
probe_flip_fanout in Gate 2's denominator even though the authority
declares the flip wave "not itself a bar-brick" (seed-shrink beyond the
fixed-point minimum) — so Gate 2 could never read 100%.

Fix (operator-cleared to edit the authority in this PR): add a typed
BrickRole = BarBrick | SeedShrink discriminator on PlanMilestone
(v1_deletion_plan.dag); probe_flip_fanout is the one SeedShrink, the
other 22 are BarBrick. The projection's tg_gate_bricks now filters to
bar-bricks, so tg_gate_total / tg_gate_placed / the remaining list all
exclude seed-shrink. Gate 2 reads 3/4, not 3/5.

Witness asserts the seed-shrink brick's title ("std_dup-gated modules")
does NOT render in the three-gate section (discriminating: removing the
filter reds it). Regenerated golden (seedshrink_leak=0).
roadmap_page_keystone_holds PASS, live_deploy_emit_holds PASS by
execution. Merged main (#6922 plan authority now landed).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit)

* Fix host_standup witness stale after #6947 nbd_proxy typed-effect migration

declared_gap_steps_carry_interim_realization_authority required every
DeclaredGap's interim_realization to cite `ctrl:` OR (`extdeps.` AND
`gunbc.`). #6947 (Wave C3, merged to main) correctly migrated the
os-install-actuated gap's nbd_proxy realization from the extdeps shell
transport (`extdeps.bmc.webui.nbd_proxy_serve ShellProgram`) to a gunbc
typed host-effect (`gunbc.host_effect_nbd_proxy_serve`), a more-grounded
authority that no longer routes through an extdeps dep. The now-purely-
gunbc realization made the `(extdeps. AND gunbc.)` conjunction fail, so
the fold returned Bool(false) — a main-inherited CI red (owner session
crisp-bat-221 archived; no fix in flight).

Relax the over-specific conjunction to the invariant's actual intent: a
DeclaredGap must cite >=1 grounded authority — `ctrl:` OR `extdeps.` OR
`gunbc.`. Fail-closed property preserved: a gap citing NONE still reds;
ModeledCompose arm unchanged. RED proven by CI execution on 3644226
(returned Bool(false)); this greens it.

Also restores dag/test/fixture/m4_universal_governed_corpus.dag to
origin/main (a phantom auto-WIP edit had crept in during local repro).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* Honest frontier refresh 2026-07-22: namespace-terminal trigger refuted by execution; full 21-module probe sweep

Operator-directed disentangle: a blocker edge without a named MEASURED reason is removed.

- 03_resolve + 03_name_resolve re-declared knowledge_attributed -> execution_measured:
  03_resolve = generic-T render class (E0425 cannot find type T; new reason row
  curated_cargo_probe_generic_type_render), 03_name_resolve = cssl_assemble refuse
  (unroutable gunbc_plans_md_helpers closure reach). Both triggers ->
  migrate_when_closure_self_emits_cargo_green (the 04_infer pattern); the
  migrate_when_namespace_only_resolution_lands trigger no longer appears anywhere.
- Full-frontier sweep TSV (21/21 modules, deduped, provenance header): 4 generic-T
  (03_resolve, 04_infer, 05_eval, fold_lowering), 1 value-qualified
  (materialization_carriers), 2 render residues (02_parse dotted, 01_tokenize
  struct-literal-path), 13 HARNESS_REFUSE on ONE root (test_claim_materialization_ladder_witness
  pulled into compiler closures; + gunbc.plans on 03_name_resolve), 1 false-red
  (03_normalize, lane shim required).
- Verified by execution: frontier compile differential clean (135 pre-existing on
  entry, 0 added), frontier_classify_unlisted_reason_refuses_holds green, 10/10
  compiler_frontier_census witnesses green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* Post-merge honest frontier re-sweep (13 modules): generic-T class DEAD, type-ref-import-missing is the successor class on 5 modules (3 unique symbols); 05_eval + 06_translate knowledge_attributed -> execution_measured; emit-shape + struct-literal-body classes named; materialization_carriers advanced off import-closure. Receipts in TSV + honest_frontier_refresh_2026_07_22_post_merge_note

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* review 41418: upgrade compiler_frontier_row_05_emit knowledge_attributed -> execution_measured (TSV row 05_emit E0433 UriScheme landed by the resumed background sweep after the 13-row read) — roster and receipt back to one authority

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* Remove scratch rank probe swept in by auto-WIP commit (probe served its purpose: sweep-order ranks verified against frontier authority)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* Fix dual-milestone drift: re-base six v1-deletion plan rows on 2026-07-22 execution receipts

The plan-milestone rows lagged the frontier/probe carriers (the staleness the
operator saw on the freshly deployed srv1 roadmap). Re-based on receipts, both
directions — two flips forward, one flip BACK:

- generic_t_rendering InFlight -> Placed: class extinct by execution (#7033 +
  21-module re-sweep, zero curated_cargo_probe_generic_type_render rows); Phase-2
  typed-REFUSE residue named as non-bar hardening.
- trigger_renegotiation InFlight -> Placed: the mechanical frontier-row update
  landed (#7040 trigger refutation + #7058 refresh); no namespace-gated trigger
  remains on the frontier.
- std_dup_assembly_fix Placed -> InFlight (honest-green rule): E0255 resurfaced
  post type-surface regen as first-error on the curated 4-module baseline —
  suspected different root (emitter-synthesized std use-lines, #7068 pub-use
  family). Now the single first-error blocker for the cargo-green fan-out.
- emit_import_closure_root: type-surface arm landed (#7057), E0422/E0433 class
  cleared by execution; representative cargo-green bar still unmet behind E0255.
- emit_representation_mismatch: the ~4400-sized layer measured GONE on 04_infer
  (e0308_all=0); gate premise re-pointed to std_dup + post-clear re-histogram.
- deep_module_lanes: gate premise re-based accordingly.

Verified by execution: plan closure compiles 0 diagnostics; roadmap_page,
roadmap_frontier, roadmap_register witnesses all true; generated_artifact_gate
main_wet ExitSuccess with zero drift.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

* Prereq-drift ruling on 5-collapse-v1: restore HAND-queue drain, test-migration, seed-honesty as GateDeletion bricks

The superseded roadmap row 5-collapse-v1 required four prereqs; the
cycle-5 three-gate remodel carried forward only the fixed point. Ruling
(operator-delegated via the PR #7104 PREREQ-DRIFT flag): the three gates
are the interpreter-deletion bar and correctly omit them; the terminal
claims (v1_quarantine products-still-build, v1_delete) do require them.
hand_queue_drain lands before quarantine (the gunbc CLI is a HAND src/v1
file — products-still-build is unwritable undrained), test_migration and
seed_honesty_decision before delete. The seed-honesty witness fail-open
defect is flagged as owed regardless of the decision outcome.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* WIP: Weak Self Host -> Strong Self Host (Gates 1-3, i guess)

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: gunbai-bot[bot] <289086189+gunbai-bot[bot]@users.noreply.github.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