Skip to content

07: expose the deadman timer as a standalone NixOS module - #6

Merged
jrcruciani merged 4 commits into
mainfrom
jrcruciani-07-standalone-deadman
Sep 21, 2026
Merged

jrcruciani merged 4 commits into
mainfrom
jrcruciani-07-standalone-deadman

Conversation

@jrcruciani

@jrcruciani jrcruciani commented Sep 21, 2026 •

Copy link
Copy Markdown
Owner

What changed

  • Added ADR 0003 before implementation, then exported nixosModules.deadman while preserving the full aether and default bundle.
  • Kept the timer helper bodies in one module. Private composition includes Python transaction cancellation, recovery completion, token revocation and status only in the full bundle; standalone needs no agent/host configuration or policy state.
  • Added the high-up human-only timer walkthrough and a standalone link target. Successful arming gates a scoped test; fresh SSH precedes manual disarm, which never grants apply confirmation.
  • Extended the existing deadman VM check with an actual standalone node, closed-PATH helpers, configured-timeout recovery, absent agent state, full-bundle hook-failure recovery and package/export assertions. Existing full-bundle scenarios remain; the restricted apply fixture imports the aggregator with its exact fixture/preload layout unchanged.
  • Merged item06 mode documentation without rewriting history or changing its scope.

Actual Linux evidence

Run 35639932541 passed at code SHA aa1f5bf299ce5235be670791b0c300a06cd1589d:

  • All 11 deadman VM subtests, including actual standalone recovery of running path/profile/SSH, no policy state, full-bundle recovery despite failing state hooks, and the existing eight regression scenarios.
  • All 17 policy tests and 13 actual restricted-account apply VM scenarios, including cancellation of a blocked activation independently of apply.lock, confirmation/token lifecycle, profile failure and reboot recovery.
  • Both actual host-pinned options builds: 22,116 options at 25.05 and 23,290 at 25.11, including closed-PATH/helper failures preserving the old index.

Final SHA f52eb4e517ffd200f0ad91c276771076f478fd4e only appends the changelog evidence; its code tree is unchanged from the successful run. No live-host timer test and no local Nix evaluation. Superseded run 35639387864 was cancelled, not counted as passing evidence.

Scope

Only item07. Item08 timer edge hardening remains separate. No merge; parent coordinates integration.

JL Revilla and others added 4 commits September 21, 2026 20:35
Keep the full aether/default bundle and transaction recovery hooks, and exercise both module exports in the existing Linux VM check.

Co-authored-by: Copilot App <[email protected]>
Name manual disarm in standalone arming output without implying apply approval, and assert the standalone-only guidance in the VM.

Co-authored-by: Copilot App <[email protected]>
All 11 deadman scenarios, 17 policy tests, 13 restricted apply scenarios and both host-pinned index builds passed in run 35639932541.

Co-authored-by: Copilot App <[email protected]>
@jrcruciani
jrcruciani merged commit 74a6182 into main Sep 21, 2026
6 checks passed
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