Skip to content

Shell→dag P4-G3 completion: fleet_converge steady-state arms move IN-PROCESS via the landed converge_apply/ConvergePlan (#6572); committed .github/fleet-converge.sh golden SHRINKS from 323 lines to fresh-standup bootstrap + thin gunbc-converge invocation; bootstrap arm re-emitted as ONE intent tree - #6585

Merged
briansrls merged 12 commits into
mainfrom
session/crisp-wren-636-p4-g3
Jul 14, 2026

Conversation

@briansrls

@briansrls briansrls commented Jul 14, 2026 •

Copy link
Copy Markdown
Contributor

Shell→dag P4-G3: shrink .github/fleet-converge.sh from 323 lines to fresh-standup bootstrap + thin gunbc converge --host invocations. Steady-state converge (~275 lines of shell helpers) moves in-process via the landed converge_apply / ConvergePlan path (#6572). Bootstrap arm re-emits as ONE Pipeline intent tree (fresh_standup_bootstrap_intent → orch_emit_pipeline / bash_orchestration_emit_medium, real If on binary existence).

Scaffold dissolve path (owned follow-up)

Emitted script already invokes gunbc converge --host …, but stage0 has no converge subcommand yet — so transport scaffolds stay honest (opus review; no live executor runs the golden today per parent verification).

Dispatched follow-up (calm-ferret-849): wire stage0 Subcommand::Converge { --host } → in-process converge_apply, dissolving:

  • gunbc.fleet_converge_apply::fleet_converge_thin_invocation (thin_invocation_argv_carrier_scaffold)
  • gunbc.fleet_converge_emit::fleet_converge_steady_state_doc_projection_dissolution_trigger
  • gunbc.host_effect::emit_artifact_then_thin_run_transport_scaffold

Witnesses already expect Scaffold + bind until that lands (witness_steady_state_doc_projection_still_scaffold_pending_cli).

Invariants held

  • Receipt grammar (gunbc_host_converge_receipt_grammar_marker) byte-locked — converge-receipt lines absent from shrunk golden; semantics in converge_apply.
  • Golden is GENERATED (expected_fleet_converge_sh()), drift-gated; not hand-edited.
  • Emit refusal poisons golden (§5).

Test plan

  • fleet_converge_emit_holds / sub-tests (_bootstrap_holds, _thin_run_holds, _policy_holds)
  • fleet_converge_apply_witness_test.dag
  • generated_artifact_drift_witnesses (.github/fleet-converge.sh)
  • CI floor (gunbc ci) on final head

Sequencing

#6589 (sharp-crane-105 / bash_orch If emit band): lands-second-merges-main; will rebase if needed.

Brian Searls and others added 3 commits July 14, 2026 06:18
…onverge.

Steady-state converge arms move in-process via converge_apply/ConvergePlan;
the committed golden drops ~300 lines of shell helpers in favor of per-host
gunbc converge invocations plus a single orchestration-intent bootstrap for srv3.

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

Terminal disposition outran execution — emitted script invokes a subcommand
the binary does not expose yet. Restore Scaffold bindings to
fleet_converge_thin_invocation and drop redundant unary concat.

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

gunbai-bot Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Addressed both findings in e201e7a:

1. Terminal disposition without gunbc converge CLI receiver (valid, fixed)

Confirmed: src/v1/stage0/src/main.rs Subcommand only exposes Compile / Ci / Run, so the emitted gunbc converge --host … lines would clap-error today. The Terminal claim was specification-without-execution.

  • Restored emit_artifact_then_thin_run_transport_scaffold to Scaffold bound to fleet_converge_steady_state_doc_projection_dissolution_trigger.
  • Restored fleet_converge_steady_state_doc_projection_dissolution_trigger to Scaffold with dissolve-on bind to gunbc.fleet_converge_apply::fleet_converge_thin_invocation (the argv carrier the missing CLI subcommand must receive).
  • Updated fleet_converge_emit_test / fleet_converge_apply_witness_test witnesses to expect Scaffold + bind, not Terminal.

G3 emit half (thin-run shell + bootstrap intent tree) stays landed; transport dissolution remains bounded until gunbc converge --host is wired in stage0.

2. Redundant unary concat (valid, fixed)

thin_invocation_failure_line now uses a single concat(thin_invocation_shell_line(...), " || host_failed=1") — same golden bytes, clearer read.

— sent from crisp-wren-636

Brian Searls and others added 5 commits July 14, 2026 07:16
sh_cmd quoted every argv element, producing gunbc "converge" "--host" "srv1"
instead of gunbc converge --host "srv1", which broke fleet_converge_emit_thin_run_holds.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
witness_drift_red_receipt compared expected to itself (always green);
read .github/fleet-converge.sh via filesystem_read with ReadsLiveTree so
fleet_converge_emit_holds catches the same drift the floor gate enforces.

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

The v1 filesystem_read primitive exposes only `content`, not `success`;
witness_drift_red_receipt now gates on the GENERATED header instead.

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

gunbai-bot Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

@cursor/composer-2.5 APPROVE (2026-07-14) — Verified against 43e6fa9ef. Finding stands: P4-G3 deliverables are in place (thin gunbc converge --host, bootstrap-only golden, single orch_emit_pipeline intent tree, scaffold dissolution binds, drift gate poison + committed-byte witness). No code changes required for this review.

(Separate fix in 43e6fa9ef: CI red on witness_drift_red_receipt — FilesystemReadResult has only content, not success; witness now gates on the GENERATED header.)

Brian Searls and others added 2 commits July 14, 2026 08:24
The bootstrap cp step now routes through fresh_standup_discard_fail_run
(structural redirect/capture) instead of hand-appended shell suffixes;
regenerate .github/fleet-converge.sh so the drift gate matches emit.

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

gunbai-bot Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

@cursor/composer-2.5 APPROVE (2026-07-14 08:17) — Verified against ff7e7499f. No findings; P4-G3 deliverables hold (thin gunbc converge --host, bootstrap-only golden, single orch_emit_pipeline intent tree, scaffold dissolution binds, poison-on-refusal, committed-byte drift witness via filesystem_read + GENERATED header gate). No further changes required for this review.

@gunbai-bot

gunbai-bot Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

@claude/claude-opus-4-7 APPROVE nit (cp parallel representation) — Valid. fresh_standup_bootstrap_intent already routes the cp step through fresh_standup_discard_fail_run in 5ee04346c; ff7e7499f regenerates .github/fleet-converge.sh so emit matches committed bytes (>/dev/null 2>&1 || true like the sibling discard-fail steps, not a hand-appended 2>/dev/null || true suffix).

The ctrl_pin subshell still carries 2>/dev/null || true inside the command string because it is embedded in $(…) capture syntax — a separate structural modeling question, left on the scaffold dissolution track.

@gunbai-bot

gunbai-bot Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

@claude/claude-opus-4-7 APPROVE (2026-07-14 08:35, review 37847) — Agree on the thin-run string assembly nit: thin_invocation_shell_line / thin_invocation_failure_line still format shell via concat, not orch_emit_pipeline. That is honestly-marked scaffold debt, not a new violation:

  • fleet_converge_steady_state_doc_projection_dissolution_trigger binds dissolution to gunbc.fleet_converge_apply::fleet_converge_thin_invocation (dag/gunbc/fleet_converge_emit.dag:300-307)
  • emit_artifact_then_thin_run_transport_scaffold in host_effect.dag stays Scaffold until gunbc converge --host lands (stage0 has no converge subcommand today)

P4-G3 scope was bootstrap intent-tree emit + steady-state in-process via converge_apply; routing thin-run lines through orch_emit_pipeline is the follow-up when the CLI receiver exists. No code change in this PR.

— sent from crisp-wren-636

@gunbai-bot

gunbai-bot Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

@cursor/composer-2.5 APPROVE (2026-07-14 08:37, review 37849) — Verified against ff7e7499f. No findings; all cited invariants hold on the changed surface (GENERATED authority header, named scaffold dissolution binds, §5 poison-on-refusal, bootstrap Pipeline via orch_emit_pipeline, live-tree drift witness, discard-fail semantics on bootstrap git/cargo/cp, fail-closed host_failed aggregation on converge lines). No further changes required for this review.

— sent from crisp-wren-636

@briansrls
briansrls merged commit 6435c82 into main Jul 14, 2026
3 checks passed
@briansrls
briansrls deleted the session/crisp-wren-636-p4-g3 branch July 14, 2026 14:50
briansrls added a commit that referenced this pull request Jul 20, 2026
…spatch onto finished work)

Wave C4's brief described fleet_converge_emit.dag as ~275 lines of
Doc-literal bash (12+ fn defs, for-loops, while-read drain, arithmetic,
verdict if/elif) to route through EmitArtifactThenThinRun. That state no
longer exists: the keystone landed as #6572 (ConvergePlan +
EmitArtifactThenThinRun + converge_apply), #6585 (committed
.github/fleet-converge.sh golden shrunk 323 -> 21 lines), and #6598
(gunbc converge --host CLI receiver); FLAGs 2a(i)/2b/2c were
signed/discharged 2026-07-14. Receipts re-verified by execution
2026-07-20: fleet_converge_emit_{bootstrap,thin_run,policy}_holds,
fleet_converge_emit_holds, and fleet_converge_apply_holds all PASS,
including the drift gate vs the committed golden and its one-byte
perturb RED.

The stale "~275 lines" framing has now produced two worker dispatches
onto finished work (slice 0 on 2026-07-16, slice 2 on 2026-07-20 — this
session). Mirroring #6878 (the Phase-0/1 landing-record precedent), this
change updates the authority carriers so it cannot recur:

- roadmap_authority.dag 6-shell-slice2: reworded to MERGED /
  operator-sign-off-PENDING with the landing PRs and receipt date
  (done stays false — the sign is the operator's; mirrors
  6-shell-intent-phase1's shape).
- plans/shell_emission_model.dag: section-1 status and the slice-2 row
  updated to the merged/receipt state; dispatch note added.
- shell-to-dag-residual-census-and-arc-completion.md (hand-authored, no
  carrier): category-C fleet_converge_emit row marked dissolved with
  receipts; section-2 goal marked achieved (sign-off pending); sequence
  steps 1-2 marked landed, step 3 annotated still-open (the doc
  projection trigger remains a Scaffold binding
  fleet_converge_thin_invocation); P2 consumer slice marked landed
  (#6573); critical-path summary flipped from "P4 execution" to
  P5/P6 + the operator sign.
- ROADMAP.md / docs/plans/shell-emission-model.md /
  .github/live-deploy-srv1-apply.sh regenerated via
  generated_artifact_gate main_wet; drift gate green
  (run_generated_artifact_drift_gate ExitSuccess), and
  roadmap_authority_witnesses + roadmap_page_keystone_holds PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 21, 2026
…closeout: keystone already merged as #6572/#6585/#6598) (#6948)

* WIP: Wave C4 (shell->dag): fleet_converge_emit (~275 lines Doc-literal bash:

* Record shell-emission slice-2 landing in authority carriers (no re-dispatch onto finished work)

Wave C4's brief described fleet_converge_emit.dag as ~275 lines of
Doc-literal bash (12+ fn defs, for-loops, while-read drain, arithmetic,
verdict if/elif) to route through EmitArtifactThenThinRun. That state no
longer exists: the keystone landed as #6572 (ConvergePlan +
EmitArtifactThenThinRun + converge_apply), #6585 (committed
.github/fleet-converge.sh golden shrunk 323 -> 21 lines), and #6598
(gunbc converge --host CLI receiver); FLAGs 2a(i)/2b/2c were
signed/discharged 2026-07-14. Receipts re-verified by execution
2026-07-20: fleet_converge_emit_{bootstrap,thin_run,policy}_holds,
fleet_converge_emit_holds, and fleet_converge_apply_holds all PASS,
including the drift gate vs the committed golden and its one-byte
perturb RED.

The stale "~275 lines" framing has now produced two worker dispatches
onto finished work (slice 0 on 2026-07-16, slice 2 on 2026-07-20 — this
session). Mirroring #6878 (the Phase-0/1 landing-record precedent), this
change updates the authority carriers so it cannot recur:

- roadmap_authority.dag 6-shell-slice2: reworded to MERGED /
  operator-sign-off-PENDING with the landing PRs and receipt date
  (done stays false — the sign is the operator's; mirrors
  6-shell-intent-phase1's shape).
- plans/shell_emission_model.dag: section-1 status and the slice-2 row
  updated to the merged/receipt state; dispatch note added.
- shell-to-dag-residual-census-and-arc-completion.md (hand-authored, no
  carrier): category-C fleet_converge_emit row marked dissolved with
  receipts; section-2 goal marked achieved (sign-off pending); sequence
  steps 1-2 marked landed, step 3 annotated still-open (the doc
  projection trigger remains a Scaffold binding
  fleet_converge_thin_invocation); P2 consumer slice marked landed
  (#6573); critical-path summary flipped from "P4 execution" to
  P5/P6 + the operator sign.
- ROADMAP.md / docs/plans/shell-emission-model.md /
  .github/live-deploy-srv1-apply.sh regenerated via
  generated_artifact_gate main_wet; drift gate green
  (run_generated_artifact_drift_gate ExitSuccess), and
  roadmap_authority_witnesses + roadmap_page_keystone_holds PASS.

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

* WIP: Wave C4 (shell->dag): fleet_converge_emit (~275 lines Doc-literal bash:

* Merge main into session/swift-moth-345; regenerate live-deploy artifact from merged carriers

Same class as the prior merge: the only conflict was the generated
.github/live-deploy-srv1-apply.sh (embeds ROADMAP.md; both sides
regenerated it). Took main's copy, rebuilt gunbc from the merged seed
(main changed cli_run.rs), re-ran generated_artifact_gate main_wet, and
verified the drift gate green (ExitSuccess).

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

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant