Skip to content

Model gunbc pinned-tree as host_converge ConvergeTarget (spawn SPOF fix) - #5948

Merged
briansrls merged 13 commits into
mainfrom
session/nimble-koi-42
Jun 29, 2026
Merged

briansrls merged 13 commits into
mainfrom
session/nimble-koi-42

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jun 29, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Add GunbcPinnedTree as a new ConvergeTarget arm and GunbcSlice as a new ConvergeSlice in gunbc.host_converge, with fleet-wide authority data for $HOME/gunbc and the known-good commit SHA.
  • Wire a pinned_tree_sha knob as the first host converge row (before runner/sessions caps) so fleet apply resets the mutable bootstrap checkout before spawn-critical work.
  • Emit converge_gunbc_pinned_tree() in .github/fleet-converge.sh (fetch origin → detached checkout → rev-parse receipt); extend fleet_converge_emit_test witnesses.

Fixes the 2026-06-14 fleet-wide spawn SPOF: a broken branch checked out in ~/gunbc made std fail to compile and refused every session spawn. Host converge now pins the tree to a single authority SHA instead of leaving it mutable.

Test plan

  • gunbc run --source-root dsl --entry dsl/test/claim/fleet_converge_emit_test.dag --function fleet_converge_emit_holds --claim-run → true
  • gunbc run --source-root dsl --entry dsl/tools/generated_artifact_gate.dag --function run_generated_artifact_drift_gate → ExitSuccess
  • CI floor (awaiting run on PR)

briansrls and others added 2 commits June 29, 2026 14:56
The last_runner_knob_name fold must ignore the new gunbc pinned-tree knob
when locating the terminal runner_count row.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot gunbai-bot Bot changed the title Model the gunbc pinned-tree as a host_converge ConvergeTarget to fix the fleet-wide spawn SPOF (2026-06-14 incident: mutable ~/gunbc on a non-v2-green branch -> std failed to compile -> every session spawn refused fleet-wide). (1) Add a NEW ConvergeTarget arm in dsl/gunbc/host_converge.dag (e.g. Gun Model gunbc pinned-tree as host_converge ConvergeTarget (spawn SPOF fix) Jun 29, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review June 29, 2026 14:59
briansrls and others added 7 commits June 29, 2026 15:04
Add ConvergeApplyMode + ConvergeNoOpPolicy on ConvergeKnob (GunbcPinnedTree
is first consumer: skip_when_converged + per-host fresh_standup/srv3 vs
existing_host/srv1-srv2). Model GUNBC_ROOT hard pin, DSL defer-to-submodule,
and binary provenance (CAS pull steady-state, build_bin_if_absent fallback).
Emit refuses blind apply on live-host drift; keen-dove owns drain reload seam.

Co-authored-by: Cursor <cursoragent@cursor.com>
Reframe the converge gate per keen-dove: check live process pin (readPin
authority, not env file), require green-place receipt before no-op, and
use quiescent reload mode for existing hosts instead of blind apply.

Co-authored-by: Cursor <cursoragent@cursor.com>
Process-effective no-op requires a live dashboard pin match (empty/unreadable
probe never no-ops). Green-place done-condition reads keen-dove's timestamped
marker with pin= sha binding so stale receipts cannot satisfy a new pin.

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

Keen-dove srv2 finding: binary@54dd5f73 vs DSL@60b137cf7 skew must report
DRIFT. No-op requires triple sha-coherent (binary=dsl=ctrl=desired) plus
timestamped green-place marker. Extended drift receipt carries drift/reason,
gunbc_root, target_sha, dsl_mode for consume-side quiescent restart.

Co-authored-by: Cursor <cursoragent@cursor.com>
Replace bare [-f] green-place check with sha-stamped receipt compare
(gunbc_binary_sha/submodule_dsl_sha vs derived ctrl gitlink, verdict=green).
Drop hardcoded fleet pin constant; desired pin is read from third_party/gunbc
at converge time. Wire quiescent reload hook path for live-apply seam.

Co-authored-by: Cursor <cursoragent@cursor.com>
Gate reads .dashboard/converge-green-place.marker (pin= + first_green_at=)
against derived ctrl_pin. existing_host_quiescent invokes
gunbc-pin-quiescent-reload.mjs with --gunbc-root/--target-sha/--dsl-mode/--ctrl.

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

gunbai-bot Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

Reviewed claude-opus-4-7 findings against current HEAD (8e8428a4f0):

1. Variant name mismatch (ExistingHostReConverge vs ExistingHostQuiescentReload) — already addressed before this thread. host_converge.dag declares and uses ExistingHostQuiescentReload consistently (converge_apply_mode_label, gunbc_apply_mode_for_host, emit label existing_host_quiescent). The review snapshot at b8c80e6 predates the rename.

2. SkipApplyWhenConverged arity mismatch — already addressed. The variant is the structured record { effective_source, done }; gunbc_pinned_noop_policy() supplies ProcessEffective + PinCoherentAndGreenPlaceReceipt, and converge_no_op_policy_label pattern-matches both fields. Emit consumes skip_process_pin_coherent_and_receipt.

3. Bash positional $10–$14 broken — valid; fixed in 8e8428a4f0. converge_gunbc_pinned_tree now uses ${10}–${18} throughout (checkout ${10}, pin script ${14}, receipt ${15}/${16}, bin ${13}, reload hook ${18}). Witness fleet_converge_emit_holds green locally; regenerated .github/fleet-converge.sh.

CI re-running on latest push.

— sent from nimble-koi-42

briansrls and others added 3 commits June 29, 2026 15:59
Witness fleet_converge_emit_holds greps for quiescent-window restart and
spawn-retry backstop documentation in the emitted shell header.

Co-authored-by: Cursor <cursoragent@cursor.com>
Commit 8e8428 moved fleet_converge_emit to GreenPlaceReadinessMarker and
Option A reload, but host_converge still exported the receipt types —
dsl_compile_clean_gate failed on unresolved GreenPlaceReadinessMarker.

Co-authored-by: Cursor <cursoragent@cursor.com>
Use unescaped {40} in converge_read_gunbc_host_pin stamp grep so dsl-version
reads match. Require non-empty process_pin matching ctrl_pin for no-op (align
emit with gunbc_pinned_noop_satisfied). Ground spawn-retry backstop on Second.

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

gunbai-bot Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

Addressed all three REQUEST_CHANGES findings in e4b53b4:

  1. Stamp grep — converge_read_gunbc_host_pin now emits grep -Eo '[0-9a-f]{40}' (unescaped braces). Witness asserts the pattern; regen .github/fleet-converge.sh:119 matches marker read at :191.

  2. Empty process_pin no-op — emit gate now requires [ -n "$process_pin" ] && [ "$process_pin" = "$ctrl_pin" ], matching gunbc_process_effective_converged / gunbc_pinned_noop_satisfied and the witness that empty process_pin must not satisfy.

  3. Duration carrier — gunbc_spawn_retry_backstop_cadence: Second = second(count: 600); SpawnRetryBackstop.cadence: Second replaces bare Int.

fleet_converge_emit_holds green locally.

— sent from nimble-koi-42

@gunbai-bot

gunbai-bot Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

Re: claude-opus APPROVE — verified, no commit needed:

  • Digest placeholder: confirmed gunbc_fleet_pinned_binary_digest_marker scaffold is in place; ${12} digest arg is passed through knob emit but unused inside converge_gunbc_pinned_tree today (fresh_standup path logs registry@sha:$ctrl_pin only). CAS/ghcr fetch keyed by digest is intentionally TBD — scaffold disposition covers it.

  • gunbc_pin_match / gunbc_pin_skewed: intentional fail-closed — empty pin neither matches nor skews; host_converge composition is consistent.

  • Shell emit transport: pre-existing fleet_converge_emit Doc-lines pattern; this PR follows established shape; witness_gunbc_pinned_tree_emitted() pins emit↔.sh equivalence.

Prior REQUEST_CHANGES items fixed in e4b53b4 (stamp grep, process_pin gate, Second carrier).

— sent from nimble-koi-42

@gunbai-bot

gunbai-bot Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

Re: composer-2.5 APPROVE — verified against e4b53b4905, no further commit:

Prior REQUEST_CHANGES items remain fixed (stamp {40} grep, non-empty process_pin gate aligned with gunbc_pinned_noop_satisfied, Second carrier on backstop). Model derives desired pin from ctrl gitlink; marker gate + Option A invoke + witnesses green locally (fleet_converge_emit_holds).

Agree with verdict — no blocking DESIGN violations on changed lines.

— sent from nimble-koi-42

gunbai-bot Bot pushed a commit that referenced this pull request Jun 29, 2026
host_standup_p3_gunbc_pinned_tree_landed=false forces InputGap on
green_place_pin; effective gap count includes P3 while scaffold open.
Witness proves P5 blocks on #5948 pending, not green.

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

Regenerated via main_wet; committed file had an extra EOF newline causing
generated_artifact_drift_gate_passes to fail on FleetConvergeArtifact.

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

gunbai-bot Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

Re: claude-opus APPROVE (post-09207c0353) — verified, no commit:

  • Medium-as-string bash emit: confirmed this PR follows the pre-existing fleet_converge_emit Doc-string-literal lane; intent is modeled in GunbcPinnedTree + predicates, shell is transport handler. No new violation; medium_structure_containment dissolution is tracked corpus-wide (not re-scaffolded per-row here).

  • BOOTSTRAP_DIGEST_PLACEHOLDER: gunbc_fleet_pinned_binary_digest_marker scaffold present; digest arg unused in shell today (CAS lane TBD) — unchanged.

  • gunbc_apply_mode_for_host: bounded host-identity dispatch (operator_host_srv3 → FreshStandup, else ExistingHostQuiescentReload); acceptable for this slice — fleet_intent host-role row is the dissolve target when greenfield/existing becomes a declared host property.

Prior CI fix: 09207c0353 removed trailing EOF newline on .github/fleet-converge.sh (generated_artifact_drift gate).

— sent from nimble-koi-42

@gunbai-bot

gunbai-bot Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

Re: composer-2.5 APPROVE (no findings, 09207c0353) — verified, no commit:

Agree with verdict. GunbcPinnedTree is modeled as ConvergeTarget, emitted via fleet_converge_generate path, witnesses cover process-pin fail-closed + marker gate + derived ctrl gitlink. Second carrier + digest scaffold markers in place. Drift gate fix landed in 09207c0.

— sent from nimble-koi-42

@briansrls
briansrls merged commit 9db9381 into main Jun 29, 2026
2 checks passed
@briansrls
briansrls deleted the session/nimble-koi-42 branch June 29, 2026 17:46
gunbai-bot Bot pushed a commit that referenced this pull request Jun 29, 2026
host_standup_p3_gunbc_pinned_tree_landed=true now routes P5 green_place
through GreenPlaceFromGunbcGate authority refs; gap ledger marks P3
modeled; witnesses assert P3 contributes to gate and P0/P2/P4 still
fail-closed.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Jun 29, 2026
briansrls added a commit that referenced this pull request Jun 29, 2026
…rence) (#5955)

* Add canonical host_standup spine composing assimilation phases by reference.

Single operator entry point that chains BMC/OS prefix phases and P0–P5
assimilation steps without re-declaring phase logic: modeled steps cite
DeclarationRef authorities; unmodeled steps are fail-closed GAP rows with
interim ctrl .mjs paths. Introduces AssimilationCompleteGate (P5 composite
AND) as new spine-owned authority pending review with keen-dove/nimble-koi.

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

* P3 green-place: fail-closed until GunbcPinnedTree lands (#5948).

host_standup_p3_gunbc_pinned_tree_landed=false forces InputGap on
green_place_pin; effective gap count includes P3 while scaffold open.
Witness proves P5 blocks on #5948 pending, not green.

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

* Lock P5 green_place_pin_coherent to gunbc gate authority refs (keen-dove).

GreenPlacePinCoherentWitness references gunbc_pinned_noop_satisfied,
gunbc_green_place_marker_satisfied, and read-gunbc-pin.sh — no pin
re-derivation in spine. Default gate_verdict=false fail-closed. P3 ledger
notes green_place.dag writer path (#1848 closed).

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

* Flip P3 landed after #5948 merge: effective gaps 4→3.

host_standup_p3_gunbc_pinned_tree_landed=true now routes P5 green_place
through GreenPlaceFromGunbcGate authority refs; gap ledger marks P3
modeled; witnesses assert P3 contributes to gate and P0/P2/P4 still
fail-closed.

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

* Add missing GreenPlacePinRefused import in spine witness test.

Exhaustive match on GreenPlacePinCoherentWitness requires all variant
constructors to be explicitly imported per claim corpus rules.

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

* Fix P0 interim path citation and P3 ctrl green-place PR ref.

P0 bind-dir prep lives in container_runtime.mjs#prepareHostBindDirs,
not the nonexistent lib/prepare_host_bind_dirs.mjs. Gap ledger P3
cross-ref updated to ctrl #1852 (supersedes #1851). Doc strings only.

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

---------

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