Skip to content

Shell→dag P6 Part 1: typed SetHostnameCas host effect (adopts #6588) - #6619

Merged
briansrls merged 4 commits into
mainfrom
session/sleek-otter-89
Jul 14, 2026
Merged

briansrls merged 4 commits into
mainfrom
session/sleek-otter-89

Conversation

@briansrls

@briansrls briansrls commented Jul 14, 2026 •

Copy link
Copy Markdown
Contributor

Adopts orphaned PR #6588 (P6 Part 1). Part 2 (nbd_proxy RawLine → typed background/trap) is out of scope per operator-signed census.

Summary

Replace host_identity_converge's ad-hoc ShellCommand{script} sudo-hostnamectl string with a typed SetHostnameCas HostEffect variant, realized through the existing host_effect_apply_gated precedent. Merges main and resolves host_effect.dag / host_effect_realize.dag conflicts with landed srv3 HostEffect variants.

Test plan

  • Merged origin/main; resolved conflicts in host_effect.dag, host_effect_realize.dag; added SetHostnameCas => Absent to srv3_host_effect_script_for for exhaustiveness
  • CI floor (compile-clean gate + affected witness corpus) — pending after ready flip

Supersedes #6588.

Brian Searls and others added 3 commits July 14, 2026 06:23
Integrate SetHostnameCas typed hostname effect with main's srv3 HostEffect
variants; wire SetHostnameCas through srv3_host_effect_script_for exhaustiveness.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot gunbai-bot Bot changed the title Shell→dag P6 completion (resolves escalation adhoc-582ad284-0bf; decision on-record): (1) ADOPT orphaned PR #6588 (P6 Part 1, typed hostname effect, CI was green, author archived) — merge main, resolve host_effect.dag conflicts, re-collect approvals; (2) Part 2 RESOLVED per operator-signed census: N Shell→dag P6 Part 1: typed SetHostnameCas host effect (adopts #6588) Jul 14, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 14, 2026 18:12
Move concat-built hostnamectl transport out of host_effect_realize into a
rostered Scaffold module (srv3_host_effect_script precedent); swap roster
entry from host_identity_converge (now typed-only) to the new realize handler.

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

gunbai-bot Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Addressed REQUEST_CHANGES (scaffold discipline)

Valid finding. host_effect_set_hostname_cas_script was unmarked concat-built shell in host_effect_realize.dag after the old host_identity_set_hostname_script_scaffold was removed from host_identity_converge.dag.

Fix in 3487c53:

  • New dag/gunbc/host_effect_hostname_script.dag — host_effect_hostname_script_dissolution_trigger + host_effect_hostname_script_scaffold (srv3_host_effect_script precedent), owns host_effect_set_hostname_cas_script
  • host_effect_realize imports the script builder; realize layer stays dispatch-only
  • medium_structure_exception_roster: swap host_identity_converge.dag → host_effect_hostname_script.dag (converge is now typed-only; shell transport lives at the realize handler)

— sent from sleek-otter-89

@briansrls
briansrls merged commit b3b05f0 into main Jul 14, 2026
3 checks passed
@briansrls
briansrls deleted the session/sleek-otter-89 branch July 14, 2026 19:03
briansrls added a commit that referenced this pull request Jul 14, 2026
Remove leftover conflict markers from main merge; keep P5b dedicated
realizers alongside SetHostnameCas HostnameOnHost routing in the
exhaustive resolve_host_effect_cell / host_effect_apply folds.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Jul 14, 2026
…pplied_knob_count.

HostEffect gained SetHostnameCas in P6 Part 1 (#6619); the fleet converge CLI knob-count dispatch must enumerate all variants or compile-clean refuses.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 14, 2026
…list (FROZEN/terminal: typed observe effect retires it) + srv3_os_install_actuator_toolchain_ensure → typed extdeps apt/curl/websocat argv effects on host_effect_apply; THEN delete shell_exec_via_bash heredoc runner once no caller (#6587)

* WIP: Shell→dag P5b: the 2 HEAVY srv3 files — srv3_install_diagnostic_checklis

* WIP: Shell→dag P5b: the 2 HEAVY srv3 files — srv3_install_diagnostic_checklis

* WIP: Shell→dag P5b: the 2 HEAVY srv3 files — srv3_install_diagnostic_checklis

* WIP: Shell→dag P5b: the 2 HEAVY srv3 files — srv3_install_diagnostic_checklis

* WIP: Shell→dag P5b: the 2 HEAVY srv3 files — srv3_install_diagnostic_checklis

* Propagate host_effect NotConverged reasons and unify observe path authorities.

Checklist and toolchain entrypoints forward typed refusal reasons (including
srv3_shell_reconcile stdout/stderr and deploy_access denials) instead of
generic did-not-converge strings. Observe script wires token/SOL paths from
srv3_bmcweb_token_path and srv3_sol_console_log_path single authorities.

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

* WIP: Shell→dag P5b: the 2 HEAVY srv3 files — srv3_install_diagnostic_checklis

* Retire dead toolchain script witnesses; coalesce reconcile imports.

Witnesses now assert srv3_actuator_toolchain_* invariants on the live
host_effect_realize argv path. Delete unused bash script builders.
Coalesce duplicate srv3_os_install_diagnostic imports in reconcile modules.

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

* WIP: Shell→dag P5b: the 2 HEAVY srv3 files — srv3_install_diagnostic_checklis

* Honest toolchain scaffold: WitnessBin argv, not extdeps PM dispatch yet.

Terminal reason must not claim extdeps.apt.PackageManager.Install /
curl.Http realization while host_effect_realize still composes generic
WitnessBin.Run argv (composer 37826).

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

* WIP: Shell→dag P5b: the 2 HEAVY srv3 files — srv3_install_diagnostic_checklis

* Add toolchain transport mismatch witness for EmitArtifactThenThinRun.

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

* Resolve merge conflicts with main (P5a + P5b host_effect union).

Union P5a typed effect variants with P5b heavy entrypoints; route P5b
realizers before srv3_host_effect_script_for; reconcile apply/dry_run
stay on srv3_host_effect_apply; path authorities via srv3_actuate_shell_paths.

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

* WIP: Shell→dag P5b: the 2 HEAVY srv3 files — srv3_install_diagnostic_checklis

* WIP: Shell→dag P5b: the 2 HEAVY srv3 files — srv3_install_diagnostic_checklis

* Honest toolchain reconcile header and document SSH argv composer limits.

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

* Fix host_effect_realize merge: union P5b + SetHostnameCas (#6619)

Remove leftover conflict markers from main merge; keep P5b dedicated
realizers alongside SetHostnameCas HostnameOnHost routing in the
exhaustive resolve_host_effect_cell / host_effect_apply folds.

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

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Jul 14, 2026
…pplied_knob_count.

HostEffect gained SetHostnameCas in P6 Part 1 (#6619); the fleet converge CLI knob-count dispatch must enumerate all variants or compile-clean refuses.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 14, 2026
…nts from #6619 + #6587 landed armless) (#6634)

* shell→dag arc: record operator flag signs on the census carrier (2a(i)/2b/2c signed, B1 working-default typed-target) + tick landed slice-0/1 roadmap boxes

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

* Address #6571 review: reconcile P2/B1 consequence (for/heredoc band superseded) + clear the stale FLAG-gating text in the critical-path summary

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

* WIP: shell -> dag

* Fix #6571 CI red: ROADMAP.md is a GENERATED projection — move the slice-0/1 ticks + slice-2 in-flight note into roadmap_authority.dag (done+operator-sign rows) and regenerate via main_wet; drift gate PASS locally

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

* Fix quadratic receipt-emit fold (bare-minimum-cost ruling): left-associated concat over receipt lines → balanced pairwise join, O(len·n) → O(len·log n) copying, byte-identical output by associativity

Opus noted-and-waived the defect on #6586; the standing operator ruling (DESIGN §6, 2026-07-10) forbids the 'n is small here' waiver. Proven by srv3_typed_receipt_emit_uses_printf_not_naive_echo (content assertion) green. Root cause — no std linear join authority (N hand-rolled joins: join_slash, join_mirror_urls_for_shell, this) — goes on the Wave 4 ledger, not patched per-site here.

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

* WIP: shell -> dag

* WIP: shell -> dag

* Complete the HostEffect arm set: dedupe SetHostnameCas (merge doubled it) + add Srv3InstallDiagnosticObserve / OsInstallActuatorToolchainEnsure arms (#6587's variants landed armless — fifth composition-skew instance); whole-tree compile 0 diagnostics

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>
briansrls added a commit that referenced this pull request Jul 15, 2026
… this half is undone): nbd_proxy_serve_program's RawLine body (&/trap/$! backgrounding, 8 RawLines in dag/extdeps/bmc/webui/nbd_proxy_serve.dag) dissolves into a typed long-running-process/session-lease effect on host_effect_apply (#6629)

* WIP: Shell→dag P6 Part 2 ONLY (predecessor item closed after Part 1 #6619; th

* WIP: Shell→dag P6 Part 2 ONLY (predecessor item closed after Part 1 #6619; th

* Shell→dag P6 Part 2: typed nbd-proxy session lease on host_effect_apply

Dissolve nbd_proxy_serve_program RawLine background/trap/$! into typed
bash ShellStmt variants and route Srv3NbdProxyServe through a dedicated
NbdProxySessionOnHost realize cell with HeldSessionLease binding.

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

* WIP: Shell→dag P6 Part 2 ONLY (predecessor item closed after Part 1 #6619; th

* WIP: Shell→dag P6 Part 2 ONLY (predecessor item closed after Part 1 #6619; th

* Fix CI witnesses: serialize set -euo pipefail, Srv3NbdProxyServe actuator mapping, vocab roster, long-lane kind/path.

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

* WIP: Shell→dag P6 Part 2 ONLY (predecessor item closed after Part 1 #6619; th

* WIP: Shell→dag P6 Part 2 ONLY (predecessor item closed after Part 1 #6619; th

* Fail-closed nbd-proxy observe until port/unit read-back lands.

Returning PortAbsent from the unimplemented observe path was fail-open (always Start); refuse via PortInaccessible instead and witness the apply-path refusal.

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

* Drop unused bash_program_serialize_stmt_direct from bash emit.

Leftover from retracted ShellStmt supervision variants; no callers after P6 pivot.

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

* Match Srv3NbdProxyServe with field destructuring in script fold.

Aligns the BmcController Absent script-resolution arm with the parameterized variant shape used everywhere else in P6.

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

* Retire stale realization_vocab roster entry for nbd-proxy apply.

host_effect_nbd_proxy_serve no longer imports bash.program after the systemd pivot; keeping it on the exception roster tripped roster_soundness_holds.

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

* Discriminate supervision markers and materialize BMCWEB token at apply.

Replace tautological nbd_proxy_serve_has_no_shell_supervision_grammar with argv-surface marker scan + RED control; start_units reads srv3_bmcweb_token_path into websocat argv (no shell env-ref left at realize time).

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

---------

Co-authored-by: Brian Searls <briansearls1@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