Files
sausage/docs/SAU-384-resume-1372.md
T

4.6 KiB
Raw Blame History

SAU-384 resume — run 1372

No live operation is authorized or performed. The existing rehearsal and target bundle are unchanged.

Read-only launcher inspection: trust prerequisite

The existing card-duration SSH grant was approved; no new credential request was filed. ssh.exec to citadel.vpn.surma.technology, login surma, with the read-only command uname -m; ps -eo pid,ppid,user,args | grep -E '([h]erdr|[s]ausage)' was refused before authentication/command execution because the host is unknown. The refusal reported:

SHA256:Fj3jS6DuV9SAo4PVQl/hTLI9SZPqWDwEd7E5hemfFkE
citadel.vpn.surma.technology ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB8gP37Pnb3EyyQnkR2VdeJNzGU3OAuyJc3E3a8XpDaV

The SSH skill permits installing this observed key without another person approval, but this card explicitly forbids worker live-configuration changes. Therefore the mediator must add the observed line to /config/known_hosts, preserving existing entries, then resume this worker. Surma does nothing. No private key was requested or fetched. ssh.hosts_status confirmed there is no already-trusted Citadel alias. The preceding run already tried the preferred read-only systemd-web route: it cannot identify the Herdr panel/native installation boundary. Do not substitute Nexus credentials, forward another host's SSH agent, bypass host checking, or treat this as permission to stop anything.

After trust is installed: reuse the attached grant, inspect launcher/process parents/Herdr config read-only; pin actual world path, architecture, executable/runtime closure and event/completion stop/start interface; then build/rehearse that specific outer host swap in a disposable box. No live stop, restart, config change or deployment is part of the resume.

Caller-store inspection (not a frozen live audit)

evidence/resume-1372-caller-inventory.json records a read-only observation via cron.list, board.hook_list, boot-file inspection and current-main schema inspection. All eight cron jobs currently have next_run:null; six are historical session.send jobs with the legacy inner detach:true. Convert their executable JSON fields once with the already-rehearsed cron procedure, preserving SQL IDs, schedule/outcome fields and prompt bytes. References to old RPCs inside their prompt strings are history/instructions, not nested executable configuration; do not rewrite or replay them.

Five board hooks were observed. Only mediator-done calls session.send; its {session,text} payload already fits the target contract without legacy detach/notify/interrupt fields. Target board supplies a fresh per-attempt input ID and follow-up kind. No rewrite is needed for that observed hook. Other hooks target mail/orchestrator and must remain intact.

The frozen operator audit must additionally include board invariant_target.data (an arbitrary RPC template without a read-only target-get API), hooks and historical hook_attempts, board subscriptions/batches, room workflow/action records, orchestrator run/skill-review/host-job records and target session event registrations if present. Distinguish resumable target inputs from old diagnostic snapshots and never infer safe replay from a stored call-looking string. Current schemas are pointers, not substitutes for predecessor decoding or the actual frozen bytes. This session does not claim that final audit complete.

Evidence/checks

  • SSH refusal/public trust metadata: evidence/resume-1372-ssh-trust.json. No secret/JWT is copied to artifacts.
  • Existing box tc-asa3yr was inspected, not restarted. Executed controllers remain absent, including Python cache contents. Inspection log: /logs/box/2026-10-31/tc-asa3yr-exec-803562803.stderr, lines 1–40; the initial directory-list command returned 2 only because optional guessed directories did not exist, next inspection succeeded.
  • Host worktree fetched origin and merged local main: already current at documentation commit 8bf2a3c661ead774689e508ed45f609b40f60dd1. Initial merge used target instead of the typed rev argument and was rejected without changes; corrected call succeeded.
  • JSON/caller/trust/manifest assertions and controller/cache-absence checks passed: /logs/box/2026-10-31/tc-asa3yr-exec-666665822.stderr. All 20 retained target file sizes/SHA-256 matched the updated manifest: /logs/box/2026-10-31/tc-asa3yr-exec-3598104138.stderr. No executable test/controller was written for these inline checks.
  • No Rust/plugin behavior changed or rebuilt. Run 1369's forced-recompile workspace pass and builds 1600–1603 remain the relevant gates. Independent plugin recovery follow-ups remain independent.