Skip to content

Concept: trust-root custody and succession for v1.0 (for review) - #113

Open
avrabe wants to merge 1 commit into
mainfrom
design/root-custody
Open

Concept: trust-root custody and succession for v1.0 (for review)#113
avrabe wants to merge 1 commit into
mainfrom
design/root-custody

Conversation

@avrabe

@avrabe avrabe commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Draft for review — nothing here is decided. Four persona reviewers are reading it now.

The custody decisions were being made incrementally across #110, #112 and sigil#268 in a dozen comments. That is not a form anybody can review, including me. This is one document: the problem, the options, the trade-offs, and the questions we cannot answer ourselves.

The document's only actual position: order

Every argument in the earlier discussion collapsed into "the first choice is forever" — and each time, that pushed toward spending more to avoid being stuck (buy the €1130 FIPS device because validation cannot be retrofitted; agonise over the algorithm because consumers pin it by hand).

That constraint is removable, cheaply. Build succession first (REQ-SUCCESSION-001) and the hardware choice, the validation level and nearly the algorithm all stop being permanent. It needs no hardware, no budget and no upstream decision.

The signing seam (REQ-SIGNERSEAM-001) lands alongside, because both v1.0 paths need it: wsc-dsse already exposes trait DsseSigner { fn sign(&self, pae: &[u8]); … } taking arbitrary PAE bytes, and varve bypasses it by hardcoding Ed25519DsseSigner::from_bytes.

Tracked, not just prose

artifact status holds
DD-027 proposed the ordering — not the answers
REQ-SUCCESSION-001 draft, v1.0.0 a root can be succeeded without stranding consumers
REQ-SIGNERSEAM-001 draft, v0.31.0 signing through DsseSigner

rivet validate PASS. The trace already earned its keep: it flagged that REQ-SIGNERSEAM-001 mentioned DD-027 in prose without a typed link.

What I most want challenged

§10 lists five questions I cannot answer myself — including whether CI-signed publication is acceptable at all for a qualified channel, which decides whether Path A's weakness is fatal. Reviewers are being asked to attack the succession mechanism specifically.

Also corrected here: DD-026 rejected keyless partly because the upstream verifier was a stub that failed open. Verified against wsc 0.11.0 source — that premise expired. The question is reopened, not reversed; DD-026's structural half still stands.

The decisions were being made incrementally across three issues and a dozen
comments, which is not a form anybody can review -- including the person
writing them. This states the problem, the options, the trade-offs and the
questions we cannot answer ourselves, in one place, and backs it with typed
artifacts rather than prose alone.

Nothing here is decided. The document's own position is only about ORDER:
build succession first (REQ-SUCCESSION-001), because it is what makes every
other custody choice reversible. Every argument in the earlier discussion
collapsed into "the first choice is forever" and pushed toward spending more to
avoid being stuck -- which is a constraint we can simply remove, cheaply, with
no hardware and no upstream dependency.

The signing seam (REQ-SIGNERSEAM-001) lands alongside it: `wsc-dsse` already
exposes `trait DsseSigner` taking arbitrary PAE bytes, and varve bypasses it by
hardcoding `Ed25519DsseSigner::from_bytes`. Both v1.0 paths need that seam, so
neither can be evaluated without it.

DD-027 records the ordering as `proposed`, not accepted -- it goes to persona
review before it goes to a decision.
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