Skip to content

Pole A-2 (parallel with neat-swift-795's import-closure lane) — GENERIC-T RENDERING FIX for the deep/emitter modules. THE BLOCKER: E0425 'cannot find type T' blocks 04_infer/06_translate/05_emit from self-emitting (gates emitter_fixed_point — the emitter re-emitting itself, the real critical path to - #6924

Merged
briansrls merged 21 commits into
mainfrom
pole-a2-generic-t-rendering
Jul 21, 2026

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session quiet-bee-205.
Pushing to pole-a2-generic-t-rendering 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.

@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 20, 2026 15:45
@gunbai-bot
gunbai-bot Bot marked this pull request as draft July 20, 2026 15:48
gunbai-bot Bot pushed a commit that referenced this pull request Jul 20, 2026
…p; 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>
@gunbai-bot

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Review 40233 (cursor/composer-2.5, APPROVE): Verified against current HEAD — no code changes required.

The review accurately describes the diff:

  • Out-of-scope TypeVariable leaves render as _ via type_var_in_fn_generic_scope at render_rust_type / render_rust_applied_type_arg
  • Structural recursion through type_node_has_unbound_type_variable (including Resolved unwrapping and __applied_type_args children)
  • Fold-lambda belt-and-suspenders via rust_rendered_type_needs_infer_wildcard on lambda_acc_type_str / safe_acc_type
  • Collection types always route element/key rendering through render_rust_type (not only when fn_generic_param_names is non-empty)

Receipts on this branch: regen_stage0 --verify divergence 0; nested_fold_threads_generic_param_into_element_type green; genuinely_unresolved_type_arg_still_refuses green; cannot find type \T`` on 04_infer emit = 0.

Merge readiness (not met — intentional hold):

Will not undraft without explicit emitter-wall sign-off. Standing by on consolidation decision.

— sent from quiet-bee-205

@gunbai-bot

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Intentionally remaining draft — not abandoned.

Per sharp-bee-290 emitter-wall hold (2026-07-20): generic-T layer is verified and banked on this branch, but deep-module cargo-green is not met (E0308 ~4400/deep module exposed post-fix). Operator ruling: no mid-peel merges; this lands via consolidated integration with #6919 + E0308 fix, not standalone.

Dashboard flip-ready nudges acknowledged; parent hold explicitly says not to undraft on nudge. Awaiting consolidation decision.

Receipts on e65127b: regen divergence 0, nested_fold generic-param witnesses green, unbound-T E0425 cleared (0 on 04_infer emit). build CI job green; floor ci job in progress at last check.

— sent from quiet-bee-205

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>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 20, 2026 23:29
@gunbai-bot

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

review 40440 (soft observation — grep witness vs behavioral consumer)

Verified against current HEAD (3488a778): the observation is accurate and already reflected in how the witnesses are layered.

  • dag/test/claim/symbol_opaque_kernel_alias_emit_test.dag is a construction-era substring receipt on the v1 seed source (05_emit_rust.dag): it pins that Symbol routes through rust_opaque_kernel_alias_type_eligible / rust_opaque_kernel_alias_type_decl and that the parallel rust_nominal_identity_carrier_type_eligible fork for Symbol is retired. It is intentionally not an executing emit consumer — a source refactor that preserves those substrings but changes behavior would not be caught here.
  • src/v1/tests/src/symbol_opaque_kernel_alias_emit_test.rs is the enrolled behavioral witness (green-by-execution): compiles a fixture through the live emitter and asserts pub type Symbol = String;, no newtype carrier, and String grounding in fields/sigs. That is the discriminating consumer that goes red on wrong emit.

No change in this PR: the .dag row is a cheap, located construction pin during the v1-seed era (same pattern as other dag/test/claim/* source receipts); the .rs test carries the behavioral contract. Dissolve trigger for the grep row is when the v2 emit path self-hosts and this authority lives entirely in executed emission receipts.

— sent from quiet-bee-205

@gunbai-bot

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

review 40443 (note — pipeline.rs ignored Symbol carrier test)

Verified on 3488a778: accurate, and already scoped as non-blocking.

rust_set_nominal_ord_decl_emits_carriers_before_btree_set_use (src/v1/tests/src/pipeline.rs:4093) is #[ignore] with an explicit bucket tag (emit-rust-render) and reason: "failing: Symbol data does not preserve authored identity… fix as follow-up". It predates this PR (#5427 widening surfaced it) and asserts the retired nominal-newtype shape (pub struct Symbol(pub String)). It is not in the CI witness roster.

This PR intentionally replaces that path: Symbol now grounds through the opaque-kernel alias authority (pub type Symbol = String;), with the enrolled behavioral witness in symbol_opaque_kernel_alias_emit_test.rs. Updating or deleting the ignored pipeline.rs test is follow-up hygiene once the nominal-Ord/BTreeSet<DiffId> story is re-grounded on the alias model — out of scope for the generic-T / E0425 unblock lane.

No change in this PR.

— sent from quiet-bee-205

@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 21, 2026

Copy link
Copy Markdown
Contributor

review 40457 (soft observation — rust_nominal_identity_carrier_type_eligible dead branches)

Verified on 057c5ba454: accurate.

rust_nominal_identity_carrier_type_eligible (05_emit_rust.dag:925, regen'd seed) now unconditionally returns false because the only former inhabitant (Symbol) was dissolved onto rust_opaque_kernel_alias_type_eligible / coerce_primitive_type in this PR. The remaining call sites (e.g. type_item_has_rust_nominal_shell_authority, emit_typed_item type-decl arms, rust_nominal_ord_type_eligible) are therefore dead branches today.

Intentionally left in place for this PR — not an oversight:

  • Minimize blast radius: deleting the predicate + unwinding ~6 call sites across .dag + seed is a separate regen/review cycle, orthogonal to the generic-T / E0425 unblock.
  • Counted dissolution frontier: the dag/test/claim/symbol_opaque_kernel_alias_emit_test.dag witness explicitly receipts rust_nominal_identity_carrier_type_eligible … false and the absence of type_name == "Symbol" in that path, so the retirement is located and grep-visible until the dead-code delete lands.
  • Behavioral authority moved: symbol_opaque_kernel_alias_emit_test.rs is the executing consumer for the new grounding.

Follow-up (post-merge): delete rust_nominal_identity_carrier_type_eligible, rust_nominal_identity_carrier_def, and the unreachable arms; regen seed; drop the grep witness rows that only pin the retirement.

No change in this PR.

— sent from quiet-bee-205

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

review 40458 (cursor APPROVE — no findings)

Verified on 057c5ba454: agree with all points, no code change required.

  • Generic-T path (type_var_in_fn_generic_scope / type_node_has_unbound_type_variable + rust_rendered_type_needs_infer_wildcard backstop) matches implementation at 05_emit_rust.dag:831-858 and regen'd seed.
  • Symbol opaque-kernel alias authority is the enrolled behavioral contract (symbol_opaque_kernel_alias_emit_test.rs); grep witness is companion only (see review 40440 reply).
  • pipeline.rs:4094 #[ignore] test is pre-existing, out of diff, already noted in review 40443 reply.

Merge gates on this HEAD: 2/2 dashboard APPROVE (claude review 40457, cursor review 40458), mergeable=CLEAN, CI run 29788815242 in progress at last check.

— sent from quiet-bee-205

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

review 40480 — verified and fixed in 4f1e95ae29.

rust_set_nominal_ord_decl_emits_carriers_before_btree_set_use was still asserting the retired nominal-carrier shape (pub struct Symbol(pub String), Symbol("…") ctor, DiffId { id: Symbol }). That contradicted the PR's opaque-kernel alias authority and the dedicated regression in symbol_opaque_kernel_alias_emit_test.rs.

Updated the pipeline test (renamed rust_symbol_opaque_alias_emits_string_and_btree_set, #[ignore] removed):

  • asserts pub type Symbol = String; and rejects pub struct Symbol(pub String)
  • asserts Symbol data/fields ground to String (root_fix_symbol() -> String, DiffId.id: String)
  • keeps the Set lowering receipt (BTreeSet + DiffId in DiffBag)

Green locally: cargo test -p v1-compiler-tests rust_symbol_opaque_alias_emits_string_and_btree_set.

— sent from quiet-bee-205

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

review 40487 — agreed on the non-blocking note; fixed in 0db936ae3c.

Verified: dag/test/claim/symbol_opaque_kernel_alias_emit_test.dag was a source-string grep over 05_emit_rust.dag (src_has(..., "name == \"Symbol\""), etc.) with no emit execution — the §5 spec-without-execution shape. The real consumer is src/v1/tests/src/symbol_opaque_kernel_alias_emit_test.rs, which compiles a fixture and asserts pub type Symbol = String (and rejects the retired newtype carrier).

Deleted the redundant .dag witness; behavioral receipt stands alone.

— sent from quiet-bee-205

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

review 40495 — verified on 0db936ae3c; no code change required.

Spot-checked against current tree:

  • Symbol/Json/Bytes route through rust_opaque_kernel_alias_type_eligible → coerce_primitive_type (05_emit_rust.dag:355-361); nominal Symbol(pub String) carrier path retired (rust_nominal_identity_carrier_type_eligible → false).
  • Unbound type variables outside fn generic scope render _ via type_node_has_unbound_type_variable at render sites; rust_rendered_type_needs_infer_wildcard is a fold-lambda backstop only (widens toward _, never toward bare T).
  • Behavioral receipts: symbol_opaque_kernel_alias_emit_test.rs (compile-and-assert) and unignored rust_symbol_opaque_alias_emits_string_and_btree_set in pipeline.rs. Redundant .dag grep witness removed in 0db936ae3c.

— sent from quiet-bee-205

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

review 40498 — verified on 0db936ae3c; no code change required.

No findings to address. Confirmed:

  • Authority change in 05_emit_rust.dag with regen'd seed (v1_compiler_emit_rust.rs)
  • Unbound type variables outside fn_generic_param_names render _; type-decl paths still use render_rust_decl_type with per-type generic_param_names (preserves in-scope (i64, T) shapes)
  • Symbol/Json/Bytes ground via coerce_primitive_type at rust_opaque_kernel_alias_type_eligible
  • Executing receipts: symbol_opaque_kernel_alias_emit_test.rs, unignored rust_symbol_opaque_alias_emits_string_and_btree_set in pipeline.rs (grep witness removed)

— sent from quiet-bee-205

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

review 40510 — verified on ada3406a66; no code change required.

Confirmed against current tree:

  • Out-of-scope type variables render _ via type_node_has_unbound_type_variable at render_rust_type, render_rust_applied_type_arg, and render_rust_decl_type (fail-closed toward compiler-checked placeholder, not bare T).
  • Symbol grounds through rust_opaque_kernel_alias_type_eligible → coerce_primitive_type (Symbol = String); nominal newtype carrier retired.
  • Behavioral receipt in pipeline.rs (rust_symbol_opaque_alias_emits_string_and_btree_set, unignored) covers type alias, field/value/fn-sig grounding, and Set/BTreeSet lowering; standalone module folded in ada3406a66 to satisfy migration-debt ratchet.

— sent from quiet-bee-205

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>
@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

review 40511 — both findings addressed in c9d8160d2f (dag authority in d0247e954c).

Finding 1 (string scan): Valid. Deleted rust_rendered_type_needs_infer_wildcard from 05_emit_rust.dag + regen'd seed. Fold acc-type fallback now uses only the structural path: type_node_has_unbound_type_variable on acc_type_node (plus existing bare-container / direct-TV guards) — no post-render substring grep of "<T>" / ", T>" / "<T,". Green: nested_fold_generic_param_emit_test (2/2) + rust_symbol_opaque_alias_emits_string_and_btree_set.

Finding 2 (_ vs REFUSE): Valid reconciliation needed. Updated ^generic_t_rendering lane_state in v1_deletion_plan.dag: Phase 1 (this PR) = structural fn_generic_param_names threading + out-of-scope TVs emit _ (fail-closed toward inference, unblocks E0425); Phase 2 (follow-up) = typed REFUSE once deep modules cargo-green on Phase 1. _ is the accepted interim, not silent widen to bare T.

— sent from quiet-bee-205

Brian Searls and others added 10 commits July 21, 2026 02:15
Fold lambda acc types fall back to `_` when rendered types carry unbound
`<T>` markers; render paths refuse unbound TypeVariable/Resolved leaves.

Co-authored-by: Cursor <cursoragent@cursor.com>
Covers the new v1-compiler-tests module so test_migration_debt_module_count
ratchet stays green; witnesses the Symbol→String construction wall in 05_emit_rust.dag.

Co-authored-by: Cursor <cursoragent@cursor.com>
Completes regen after Symbol/String construction wall — regen_verify_gate
requires regen_divergence_count=0 across all generated stage0 files.

Co-authored-by: Cursor <cursoragent@cursor.com>
Brian Searls and others added 9 commits July 21, 2026 02:15
The dag claim only source-grepped 05_emit_rust.dag and would false-green
on string moves; symbol_opaque_kernel_alias_emit_test.rs already compiles
and asserts the emitted type alias shape green-by-execution.

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

Delete rust_rendered_type_needs_infer_wildcard — the ^generic_t_rendering
milestone requires construction via type_node_has_unbound_type_variable at
render sites, not a substring grep of emitted text. Fold acc-type fallback
now relies solely on the node walk (plus existing bare-container guards).

Update v1_deletion_plan lane_state: Phase 1 = structural threading + `_`
placeholder; typed REFUSE deferred to Phase 2 after deep modules cargo-green.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot
gunbai-bot Bot force-pushed the pole-a2-generic-t-rendering branch from 667aa90 to 4ada44a Compare July 21, 2026 02:16
@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Merge conflict already resolved — branch rebased onto main (9b1a0ee9a6) and force-pushed as 4ada44a1bc.

GitHub API: mergeable=true, mergeable_state=blocked (CI/reviews, not conflicts). Simulated merge with origin/main is clean ("Already up to date"). Dashboard conflict notice referenced stale head c9d8160; current HEAD is 4ada44a1bc.

— sent from quiet-bee-205

Fixes cargo fmt --check CI failure on the fold lambda_acc_type_str guard.

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

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

review 40522 — verified on 79a17898e5; no code change required.

Confirmed:

  • Structural generic-T path: type_node_has_unbound_type_variable + fn_generic_param_names at render sites in 05_emit_rust.dag (seed regen'd); rust_rendered_type_needs_infer_wildcard string scan removed (79a17898e5).
  • Phase 1/2 split documented in v1_deletion_plan.dag (^generic_t_rendering): interim _ now, typed REFUSE follow-up.
  • Symbol opaque-kernel alias + executing consumer rust_symbol_opaque_alias_emits_string_and_btree_set in pipeline.rs:4094.
  • Non-blocking follow-ups (Phase 2 REFUSE, dedicated generic-T regression) acknowledged — already in plan.

— sent from quiet-bee-205

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

review 40524 — verified on 79a17898e5; no code change required.

Confirmed:

  • Phase 1 _ interim is bounded scaffold with named Phase 2 dissolution trigger in v1_deletion_plan.dag (^generic_t_rendering); construction path is type_node_has_unbound_type_variable (no post-render string scan).
  • Symbol/Json/Bytes opaque-kernel grounding: rust_nominal_identity_carrier_type_eligible → false, rust_opaque_kernel_alias_type_eligible includes Symbol; seed std_types.rs aligns with coerce authority.
  • Executing receipt: rust_symbol_opaque_alias_emits_string_and_btree_set in pipeline.rs:4094 (rejects old newtype, asserts pub type Symbol = String).

— sent from quiet-bee-205

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

review 40535 — verified on 66709efeeaf; no code change required.

APPROVE acknowledged. Spot-checked:

  • Structural type_node_has_unbound_type_variable at render sites; string scan removed; Phase 1/2 split in v1_deletion_plan.dag:58.
  • Symbol/Json/Bytes opaque-kernel grounding via coerce_primitive_type; rust_nominal_identity_carrier_type_eligible → false.
  • Executing receipt: rust_symbol_opaque_alias_emits_string_and_btree_set at pipeline.rs:4355 (unignored, matches new alias shape).

Minor observation (non-blocking): type_node_has_unbound_type_variable uses if n.inferred != none { match n.inferred.value { ... } } rather than match n.inferred { Present { value: ... } => ... Absent => ... }. Valid stylistic note — left as-is for this PR: the != none guard matches the adjacent fold-site predicates in the same function block (acc_type_is_type_var uses the same idiom at :6232), and changing only this walker would be a cosmetic-only regen churn with no behavioral delta. Happy to normalize to Present/Absent in a follow-up if we sweep the emit file for Option-style consistency.

— sent from quiet-bee-205

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

review 40538 — verified on 66709efeeaf; no code change required.

No findings to address. Confirmed:

  • Construction-first generic-T: type_var_in_fn_generic_scope + type_node_has_unbound_type_variable threaded through render/fold sites in 05_emit_rust.dag (seed regen'd); post-render string scan removed.
  • Phase 2 typed REFUSE deferred per v1_deletion_plan.dag:58.
  • Symbol opaque-kernel alias + executing receipt rust_symbol_opaque_alias_emits_string_and_btree_set at pipeline.rs:4355.
  • std_types.rs Json/Bytes align with coerce authority; hand-Rust tracks .dag regen.

— sent from quiet-bee-205

@briansrls
briansrls merged commit d975e10 into main Jul 21, 2026
3 checks passed
@briansrls
briansrls deleted the pole-a2-generic-t-rendering branch July 21, 2026 04:58
briansrls added a commit that referenced this pull request Jul 21, 2026
briansrls added a commit that referenced this pull request Jul 21, 2026
…6924 residual)

Extend #6924's fold-lambda unbound-type guards to catch applied-type atoms
(lookup-based, not name-shape heuristic) and rendered `<T>` residuals on
non-generic fns; thread local_type_names into emit_prelude for Witness-dup
E0255; route emit_var_ref through qualified_last_segment for value position.

Proof: repr_mismatch_emitted_e0308_probe EMITTED_namespace on 04_infer and
06_translate — E0425(T)=0, E0255=0; regen_stage0 --verify divergence=0.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 21, 2026
Restore dag_collect_support/infer/infer_resolve to main — only
05_emit_rust.dag + v1_compiler_emit_rust.rs carry the #6924 fix.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 22, 2026
…6924 residual)

Extend #6924's fold-lambda unbound-type guards to catch applied-type atoms
(lookup-based, not name-shape heuristic) and rendered `<T>` residuals on
non-generic fns; thread local_type_names into emit_prelude for Witness-dup
E0255; route emit_var_ref through qualified_last_segment for value position.

Proof: repr_mismatch_emitted_e0308_probe EMITTED_namespace on 04_infer and
06_translate — E0425(T)=0, E0255=0; regen_stage0 --verify divergence=0.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 22, 2026
Restore dag_collect_support/infer/infer_resolve to main — only
05_emit_rust.dag + v1_compiler_emit_rust.rs carry the #6924 fix.

Co-authored-by: Cursor <cursoragent@cursor.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
…6924 residual) (#7033)

* emit: fold-closure generic-T, Witness prelude, value-qualified refs (#6924 residual)

Extend #6924's fold-lambda unbound-type guards to catch applied-type atoms
(lookup-based, not name-shape heuristic) and rendered `<T>` residuals on
non-generic fns; thread local_type_names into emit_prelude for Witness-dup
E0255; route emit_var_ref through qualified_last_segment for value position.

Proof: repr_mismatch_emitted_e0308_probe EMITTED_namespace on 04_infer and
06_translate — E0425(T)=0, E0255=0; regen_stage0 --verify divergence=0.

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

* emit: drop incidental regen noise from emitter PR

Restore dag_collect_support/infer/infer_resolve to main — only
05_emit_rust.dag + v1_compiler_emit_rust.rs carry the #6924 fix.

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

* regen: sync stage0 fixed-point after emitter fold-closure guards

Run regen_stage0 so dag_collect_support/infer/infer_resolve closure
annotations match fresh self-compile (regen_divergence_count=0).

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

* regen: sync full stage0 fixed-point for fold-closure emitter guards

Fresh self-compile diverged on 7 emitted modules (closure param
annotations + emit_rust/stage0_crates drift from fold-lambda generic-T
guards). regen_divergence_count=0 verified via cargo-built regen_stage0.

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

* generated-artifacts: sync live-deploy scripts after main merge

Regen via generated_artifact_gate main_wet — comment drift
(historical roster grants → roster grants) was failing
generated_artifact_drift_gate_passes on CI.

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

* WIP: Emitted deep-module cargo-green validation (pre-staged for fan-out gate)

* WIP: Emitted deep-module cargo-green validation (pre-staged for fan-out gate)

* fix: remove accidental regen manifest file; finish fn-value import closure

Addresses review 41357 on 8e9eba9: wire emit_value_ref_ident(this_module_name)
at all call sites, regen stage0 for reference_derived_use_lines scope change
(value refs on import-bearing modules), and update reference_derived_use_lines_note.
Deletes stray --verify manifest committed by mistaken regen_stage0 argv.

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

* WIP: Emitted deep-module cargo-green validation (pre-staged for fan-out gate)

* WIP: Emitted deep-module cargo-green validation (pre-staged for fan-out gate)

* fix: sync stage0 regen for corpus_repr_is_faithful value-ref gate

Addresses review 41361: seed emit_module_full now matches .dag authority —
import-bearing HostNative (v1 seed) modules skip reference_derived_use_lines;
FaithfulFreeMonoid import-bearing modules run value-ref closure only.
regen_stage0 --verify divergence=0; scope note corrected to document the gate.

Also reverts bare-name emit_value_ref_ident qualification (homonym locals
like resolved_type/second were mis-qualified on full regen).

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

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Cursor <cursoragent@cursor.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