Repository navigation
PASS (the design is silent)
Baseline. This is a re-review of d58b95f0 against the PASS by absence on 9df26b7f (this PR). I confirmed that since.diff equals git diff 9df26b7f d58b95f0, and pr.diff equals git diff 4fcfa9c2 d58b95f0. The compare is large because it carries two merges of main. In the three files this PR changes, the compare has four commits: 7cff8a30 (ask before the post-swap stop ends a session in a respawned daemon), eabf7fcb (report a failed post-swap stop --force), 147ca8c4 (a pre-swap yes covers only the sessions it listed, and a new session or a failed min ls --raw makes the stop graceful again), and d58b95f0 (the post-swap no-terminal path does not tell the user to rerun with --force-stop). The compare also moves the post-swap stop into stop_stale_daemon and runs it from the EXIT trap after the first executable swap. R5.5 in docs/specs/07-spec-installer changes with the code in the same commits.
Governs: nothing. This checkout (109541a4) has no arch-map.md, so I worked from the architecture.md headings. I searched architecture.md and specs/ again for installer, install.sh, min stop, stop --force, force stop, consent, autospawn, version skew and mismatch. The nearest text is Client maintenance (line 549, version skew for the client↔minimald protocol and min update) and the session lifecycle story (line 169, stop versus stop --force). Neither one is a rule for when an installer script stops a daemon or asks before it ends sessions. The networking spec says only that the installer stays root-free, and this change does not add a root step.
Ruling: PASS by absence (rubric rule 1), the same as the ruling on 9df26b7f. No departure from precedent. As an observation outside the design: the new paths fail toward the safe side. A failed session listing counts every live session as new, and the stop is then graceful. A refused or declined graceful stop leaves the daemon running and does not end a session.
Not checked: I did not run the installer suite (install_test.sh through shell_harnesses), because the instructions do not allow a build. findings.json was not staged.
Ruled at d58b95f against gominimal/arch@109541a48c31 by claude-opus-5-5; arch_rulings 144, job d47fee91-c3c7-45d2-921a-8ee6597b4995.