Skip to content

docs(secrets): name the second recipient's holder, and fix the roadmap's rejection (#294) - #397

Merged
Gerrrt merged 1 commit into
mainfrom
gerrrt/second-recipient-holder-294
Sep 8, 2026
Merged

docs(secrets): name the second recipient's holder, and fix the roadmap's rejection (#294)#397
Gerrrt merged 1 commit into
mainfrom
gerrrt/second-recipient-holder-294

Conversation

@Gerrrt

@Gerrrt Gerrrt commented Sep 8, 2026

Copy link
Copy Markdown
Owner

The decision half of #294: where the second age recipient lives. The mechanism is already built (ADR-0024, #297, under #106); this PR writes down the holder and fixes the one document that still contradicted the ADR.

Decided 2026-09-08: the second recipient is held by the technical second named on the break-glass card, generated where they keep it, never on the monitoring host. Satisfies ADR-0023's off-estate constraint and the handover case in one move; oracle stays struck, per ADR-0023/0024.

Changed:

  • back-up-the-age-key.md §What this still does not solve — the "One person" paragraph becomes the decision, in the form that reads the key's presence from .sops.yaml rather than asserting it.
  • successor-handover.md §If you do not have the age key — the recovery path is a call to that role; a successor adds a third recipient, not a first.
  • docs/roadmap.md — the Decide what oracle is for #94 entry's flat "Rejected: a second age recipient" narrowed to what was rejected (a recipient on oracle) with a pointer to ADR-0024.

Not in this PR, and cannot be: the keypair and the re-key. Steps are on the issue. .sops.yaml still carries one real recipient until they are done.

Checks: make check-docs, scripts/lint.sh.

Refs #294, #106.

🤖 Generated with Claude Code

…p's rejection (#294)

ADR-0024 built the mechanism — make secrets-add-recipient, per-recipient
proof, the runbook text — under #106, and deliberately left one question
open: who else should be able to open the estate's secrets. #294 exists to
answer it, and the answer is the technical second named on the break-glass
card, holding a recipient of their own generated where they keep it. That
satisfies ADR-0023's off-estate constraint and the successor-handover case
in one move. The location stays out of the repository, as the first key's
does.

Written in the honest form: whether their key is in .sops.yaml is read from
the file, not from the paragraph, because the keypair is generated offline
by hand and this commit cannot add it. The handover runbook's recovery path
becomes a call to a named role rather than "obtain the key from the person
you are replacing", which fails in exactly the case a trustee exists for.

The roadmap's #94 entry still read "Rejected: a second age recipient" with
no pointer to ADR-0024 — the one place in the documents that contradicted
it. Narrowed to what was actually rejected: a recipient on oracle.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Gerrrt
Gerrrt force-pushed the gerrrt/second-recipient-holder-294 branch from 8631827 to 6ae61f4 Compare September 8, 2026 06:26
@Gerrrt
Gerrrt merged commit c262208 into main Sep 8, 2026
3 checks passed
@Gerrrt
Gerrrt deleted the gerrrt/second-recipient-holder-294 branch September 8, 2026 13:43
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