Skip to content

Roadmap convergence: three-gate v1-delete progress on the live srv1 dashboard - #6931

Merged
briansrls merged 30 commits into
mainfrom
session/sharp-bee-290-roadmap-converge
Jul 21, 2026
Merged

briansrls merged 30 commits into
mainfrom
session/sharp-bee-290-roadmap-converge

Conversation

@briansrls

@briansrls briansrls commented Jul 20, 2026 •

Copy link
Copy Markdown
Contributor

Roadmap convergence onto the live srv1 dashboard

Renders the v1-delete three-gate progress (Gate 1 emitter fixed point · Gate 2 honest frontier · Gate 3 ledger green) directly on the srv1 roadmap dashboard / and /roadmap pages, driven from gunbc.v1_deletion_plan as the single authority (no data duplication). This gives live visibility into "where we are and what remains" and retires the throwaway claude.ai artifact in favor of the existing srv1 deploy process (operator request).

Convergence delta (the review surface here)

  • dag/gunbc/roadmap_page.dag — three-gate section, rendered on the authority pages only via a private _impl + main_prefix param. The generic roadmap_page(doc, merged) renderer stays clean (empty doc → empty <main>), because three-gate progress is authority content (it renders v1_deletion_plan), not a property of an arbitrary doc.
  • dag/gunbc/roadmap_style.dag — progress-bar CSS.
  • dag/test/claim/roadmap_page_witness_test.dag — witness_authority_shows_three_gate_progress (authority page HAS it; empty page is the discriminating RED control).
  • .github/live-deploy-srv1-apply.sh — regenerated golden (embeds the rendered dashboard pages via server.js).

Both witnesses proven green by execution: roadmap_page_keystone_holds PASS, live_deploy_emit_holds PASS. CI green.

Merge ordering — built on top of #6922 (no fork)

This branch descends from #6922 (session/sharp-bee-290-plan-cycle4, the plan-authority PR, 2 approvals). Its v1_deletion_plan.dag is byte-identical to #6922's — it is NOT a second edit of the authority. Merge #6922 first; once it lands, this PR's diff reduces to just the four convergence files above.

🤖 Generated with Claude Code

Brian Searls and others added 21 commits July 20, 2026 14:39
…t-closure root fix

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

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…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>
…tion

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>
…244)

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>
…rity 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>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 20, 2026 21:48
@gunbai-bot gunbai-bot Bot changed the title Weak Self Host -> Strong Self Host (Wave 1 -> 4, on 1 exit) Roadmap convergence: three-gate v1-delete progress on the live srv1 dashboard Jul 20, 2026
@gunbai-bot

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Thanks for the review (review 40383) — approval noted, no code findings to address.

On the title observation: you saw the branch's generic auto-WIP session title ("Weak Self Host → Strong Self Host …"), which did oversell self-host work not in this diff. It's since been renamed to "Roadmap convergence: three-gate v1-delete progress on the live srv1 dashboard", which matches the actual surface — the plan-authority + projection work you reviewed. Your read is exactly right: the diff is v1_deletion_plan.dag as the three-gate model + a derived dashboard projection (roadmap_page_for_authority() / three_gate_progress_markup()), with the non-authority roadmap_page() path unchanged, and the .sh is regenerated golden output.

— sent from sharp-bee-290

@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.

Brian Searls and others added 3 commits July 20, 2026 22:18
…rogress + 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>
…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>
@gunbai-bot

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Both findings in review 40401 are valid — verified against the authority. Thanks for catching them.

Finding 2 (GateDeletion rendered as a 4th "gate") — FIXED (commit 2e0f7a7). three_gate_progress_markup() now filters to the three proving gates via tg_is_bar_gate (GateDeletion => false), so the heading "three gates" is literally true. GateDeletion is downstream cutover/delete ("proves nothing on its own" per the authority), not a peer proving gate. The witness now asserts Gate 1 and Gate 3 render and that "Cutover and delete" (GateDeletion's name) does not; the apply-script golden is regenerated (zero cutover rows). roadmap_page_keystone_holds PASS by execution.

Finding 1 (probe_flip_fanout in Gate 2's denominator) — agreed, fix in flight. You're right that it's a documented non-bar-brick (its own lane_state and frontier_dispositioned both say the flip wave is "not itself a bar-brick / seed-shrink beyond the minimum"), and the clean fix is a typed discriminator on PlanMilestone so the count derives from the authority rather than the projection hardcoding an id. That edits v1_deletion_plan.dag (the plan authority), which is under a standing operator directive not to edit unilaterally while the plan-authority PR #6922 holds its approvals — so I'm confirming placement with the operator before landing it, rather than forking the authority. It lands as a follow-up commit here; I'll ping this thread when it does.

— sent from sharp-bee-290

Brian Searls and others added 2 commits July 20, 2026 22:45
…hrink 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>
@gunbai-bot

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Finding 1 (review 40401) now landed too (commit 3644226).

Added a typed BrickRole = BarBrick | SeedShrink discriminator on PlanMilestone in the plan authority (operator cleared editing it here). probe_flip_fanout is the one SeedShrink; the projection's tg_gate_bricks filters to bar-bricks, so tg_gate_total / tg_gate_placed / the remaining list all exclude seed-shrink. Gate 2 now reads 3/4, not 3/5, so the bar can reach 100% once the real bar-bricks place. The witness asserts the seed-shrink brick's title does not render in the three-gate section (discriminating — dropping the filter reds it). Golden regenerated; roadmap_page_keystone_holds and live_deploy_emit_holds both PASS by execution.

Both findings from your REQUEST_CHANGES are now addressed. Thanks for the review — the non-bar-brick catch in particular kept the widget honest about the bar.

— sent from sharp-bee-290

Brian Searls and others added 2 commits July 20, 2026 23:41
…ration

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

gunbai-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

CI red root-caused — main-inherited, not a #6931 defect. The failing check was declared_gap_steps_carry_interim_realization_authority (dag/test/claim/host_standup_spine_witness_test.dag) → returned Bool(false), 1 of 2096 discovery witnesses. My branch touches zero host_standup files.

Cause: #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). The witness required every DeclaredGap to cite ctrl: OR (extdeps. AND gunbc.); the now-purely-gunbc realization broke the conjunction. Owner session (crisp-bat-221) is archived, no fix was in flight.

Fix (3340a20): 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 preserved (a gap citing none still reds; ModeledCompose arm unchanged). RED proven by CI execution; this greens it.

— sent from sharp-bee-290

@briansrls
briansrls merged commit bfd3e6b into main Jul 21, 2026
3 checks passed
@briansrls
briansrls deleted the session/sharp-bee-290-roadmap-converge branch July 21, 2026 02:05
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