Skip to content

shell→dag D2 (census §5.B, host-state cluster): migrate host_converge_slice1, host_identity_adopt/assimilation, live_deploy/apply off the retained_runtime/retained_srvn bridges to typed host_effect_apply ops — INCLUDING the #7004/#7006 relocation debt (concats were moved-not-deleted; delete them, do - #7192

Merged
briansrls merged 10 commits into
mainfrom
session/snappy-lynx-832
Jul 25, 2026

Conversation

@briansrls

@briansrls briansrls commented Jul 25, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Shell→dag D2 (census §5.B, host-state cluster): migrates the host-state modules off retained_runtime / inline shell bridges to typed service ops and first-class host_effect_apply dispatch.

  • host_converge_slice1: clock_now_probed_at, systemctl_set_property_local, systemctl_list_units_active_services (typed SetProperty / ListUnits + first-field parsing); phantom transport scaffold retired
  • host_identity_adopt/assimilation: probed-at + receipt emit via host_effect_apply / clock_read; hostname write via gunbc.hostname_set (os.Hostname.ReadShort CAS + os.Hostname.Set, with sudo -n /usr/bin/hostnamectl over SSH)
  • live_deploy (partial — dispatch relocation, not concat dissolution): deletes #7004/#7006 dispatch sidecar (live_deploy/host_effect_script.dag) and promotes LiveDeploy*OnHost typed variants in host_effect_realize — but apply/retract/ensure/digest still realize through retained_srvn wrapping concat-built scripts from live_deploy/emit / roadmap_static_site. Progress = typed dispatch + no Absent-fallback chain; not end-to-end typing (that stays on the shell-emit / A4 lane). Marked frontier: live_deploy_unit_status_emit_scaffold_note + live_deploy_unit_status_tail_scaffold in intent.dag
  • live_deploy readiness unit-diagnosis: poll-bound capture routes through gunbc.systemctl_status_read (typed Systemctl.Status); deleted the exit 0 / | tail mask. Residual live_deploy_unit_status_tail_command in emit.dag tree_sync restart is scaffold-bound with dissolution trigger
  • meta_exec_confinement: roster rows removed for graduated host-state modules (host_converge_slice1, host_identity_adopt, host_identity_assimilation)

Test plan

Hermetic witness runs (all PASS):

  • claim_batch … --entry dag/test/claim/host_converge_slice1_witness_test.dag --function host_converge_slice1_wires_srv1_memory_cap --hermetic
  • claim_batch … --entry dag/test/claim/host_converge_slice1_witness_test.dag --function host_converge_slice1_wires_srv3_multi_unit_generalization --hermetic
  • claim_batch … --entry dag/test/claim/host_identity_observation_witness_test.dag --function host_identity_observation_holds --hermetic
  • claim_batch … --entry dag/test/claim/live_deploy/apply_witness_test.dag --function live_deploy_apply_witnesses --hermetic
  • claim_batch … --entry dag/test/claim/systemctl_status_read_scaffold_witness_test.dag --function systemctl_status_read_scaffold_witnesses --hermetic

Worker attestation

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (live_deploy partial migration named explicitly per reviews 42449/42523).
  • Tests run: claim_batch --hermetic on affected witness modules — all PASS.
  • If this closes a work item, the body contains a Closes #N directive.
  • No commits on this branch are surprises.
  • No secrets / credentials / large binaries staged.

@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 25, 2026 02:13
@gunbai-bot
gunbai-bot Bot force-pushed the session/snappy-lynx-832 branch from 33ffb5f to db367ca Compare July 25, 2026 03:33
Brian Searls and others added 9 commits July 25, 2026 05:49
The typed ListUnits consumer must mirror the old awk '{print $1}'
behavior — systemctl --plain still emits multi-column rows on live
hosts. Update the hermetic mock to multi-column output and strengthen
the witness so a regression to full-line trim goes red.

Co-authored-by: Cursor <cursoragent@cursor.com>
Wire host_identity adopt/assimilation hostname writes via gunbc.hostname_set:
CAS-guarded read (ReadShort) then typed Set, replacing the
host_effect_hostname_script concat bridge. Delete the relocation module;
add discriminating witnesses for argv authority and CAS base mismatch.

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

Declare the exit-0/tail concat as scaffold with a dissolution trigger, route
poll-bound readiness capture through typed Systemctl.Status observation (exit
code as data, never masked), and witness that dead-unit failure text survives.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot
gunbai-bot Bot force-pushed the session/snappy-lynx-832 branch from f6a19af to 8a90a7e Compare July 25, 2026 05:55
@briansrls
briansrls merged commit 31b1dbc into main Jul 25, 2026
5 checks passed
@briansrls
briansrls deleted the session/snappy-lynx-832 branch July 25, 2026 13:28
briansrls added a commit that referenced this pull request Jul 25, 2026
…y; meta-exec roster 3->0 + per-PR emptiness wall; census true-up

- host_runner_memory_cap_verify probed_at: retained_runtime shell.Exec.Run(date -Iseconds)
  -> typed extdeps.clock Clock.Now via gunbc.clock_read (host_converge_slice1 precedent).
  extdeps.shell import, retained_shell_script bridge and the transport-script scaffold all deleted.
  Refusal decision refactored to runner_memory_cap_verify_result_from_live_read so the
  read-absent arm is executable hermetically; RED control proves a widen fails.
- meta_exec_confinement_exception_roster 3 -> 0: tools/review.dag and ci_deploy_target_host.dag
  verified stale (0 shell.Exec); host_runner_memory_cap_verify dissolved above.
- Per-PR enforcement is a construction wall (empty roster => stale_count 0, no scan);
  live receipt measured 13.5s cold vs a 5s fast-lane budget, homed in the long lane
  with a non-degeneracy control.
- Census section 4/5 + ledger trued up to main (#7184/#7192/#7193/#7194/#7215/#7231/#7233).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 25, 2026
…; meta-exec roster 3→0 + per-PR emptiness wall (#7241)

* WIP: shell→dag bucket A cleanup (one PR): (1) host_runner_memory_cap_verify 2

* WIP: shell→dag bucket A cleanup (one PR): (1) host_runner_memory_cap_verify 2

* WIP: shell→dag bucket A cleanup (one PR): (1) host_runner_memory_cap_verify 2

* WIP: shell→dag bucket A cleanup (one PR): (1) host_runner_memory_cap_verify 2

* WIP: shell→dag bucket A cleanup (one PR): (1) host_runner_memory_cap_verify 2

* shell->dag bucket A: last shell.Exec off host_runner_memory_cap_verify; meta-exec roster 3->0 + per-PR emptiness wall; census true-up

- host_runner_memory_cap_verify probed_at: retained_runtime shell.Exec.Run(date -Iseconds)
  -> typed extdeps.clock Clock.Now via gunbc.clock_read (host_converge_slice1 precedent).
  extdeps.shell import, retained_shell_script bridge and the transport-script scaffold all deleted.
  Refusal decision refactored to runner_memory_cap_verify_result_from_live_read so the
  read-absent arm is executable hermetically; RED control proves a widen fails.
- meta_exec_confinement_exception_roster 3 -> 0: tools/review.dag and ci_deploy_target_host.dag
  verified stale (0 shell.Exec); host_runner_memory_cap_verify dissolved above.
- Per-PR enforcement is a construction wall (empty roster => stale_count 0, no scan);
  live receipt measured 13.5s cold vs a 5s fast-lane budget, homed in the long lane
  with a non-degeneracy control.
- Census section 4/5 + ledger trued up to main (#7184/#7192/#7193/#7194/#7215/#7231/#7233).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Opus 5 (1M context) <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