4.6 KiB
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-asa3yrwas 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 commit8bf2a3c661ead774689e508ed45f609b40f60dd1. Initial merge usedtargetinstead of the typedrevargument 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.