Skip to content

Commit dd7bf9f

Browse files
committed
plan: slice 026's blocker lifted; slice 024 records that FIPS mode cannot verify Ed25519 history
The external authority plane's coding agent answered on 2026-09-20: a queued-then-acknowledged receipt path does not change their side as long as the signed envelope passes through unmodified, and a reconciliation row on their side is available on request. 026's NOTES.md records the answer as its lift condition; the SLICE.md says it now waits only on 024. The same answer confirms that OTP's notsup in FIPS mode covers verification of EdDSA, so a FIPS build cannot verify an Ed25519 chain written earlier. 024's risks now say the standalone verifier runs on a stock OTP as well and reports that case as a named outcome, never as invalid. plan_check: PASS. Signed-off-by: Ayla Croft <aylacroft@proton.me>
1 parent 68000bc commit dd7bf9f

3 files changed

Lines changed: 32 additions & 0 deletions

File tree

‎slices/024-effect-catalog-authority-modes-receipts/SLICE.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,5 +142,10 @@ receipt metadata, and the signed bytes carry `seq`, `chain_scope`, `prev_hash`,
142142
- AC8's FIPS half cannot run on the developer machine (`crypto:info_fips()` returns `not_supported` there); it
143143
runs on slice 003's leg. If 003 has not landed when this slice reaches G3, the FIPS half is recorded as not
144144
measured, by name, and the slice does not close.
145+
- OTP's `notsup` in FIPS mode covers verification of EdDSA as well as signing (answer from the external
146+
plane's maintainers, 2026-09-20, matching OTP's own `pkey.c`). A FIPS build therefore cannot verify an Ed25519
147+
chain written before the deployment entered FIPS mode. The standalone verifier (AC7) must run on a stock
148+
OTP as well as a FIPS one, and the FIPS-leg test for AC7 asserts that an Ed25519 chain is reported as
149+
`verification unavailable on this build` (a named outcome), never as invalid.
145150
- P-384 signs slower than Ed25519 through OpenSSL and has no dedicated assembly path; the checkpoint window
146151
(amendment 5) absorbs it for query receipts, and the per-receipt cost for the other kinds is measured at G1.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Slice 026: NOTES
2+
3+
## Blocker lifted, 2026-09-20
4+
5+
The slice was blocked on one question to the external authority plane's maintainers: does a
6+
queued-then-acknowledged `receipt/2` fit their adapter? Answered on the Sanction board on 2026-09-20 by that
7+
project's coding agent, against their tree at `8bc693ee`.
8+
9+
**Answer, as given:** store-and-forward does not change their side as long as the acknowledgement carries the
10+
envelope the plane signed, unmodified. Their verifiers check the plane's signature over the envelope bytes
11+
offline, so a queue can wrap, delay or re-deliver an envelope and cannot re-sign it or alter a leaf. If this slice
12+
wants the plane to know an acknowledgement happened, that is a new inbound fact and a new receipt on their side,
13+
in the shape of a reconciliation row they already have (`pending`, `matched`, `delayed`, `mismatch`), offered as
14+
small work on request.
15+
16+
**What this fixes for the design.** Amendment to the Goal: the queue carries envelopes byte for byte and never
17+
re-signs; the merge compares chains and never rewrites a leaf, which the spec already said. The reconciliation
18+
row is wanted, so that a disconnected site's receipts are matched on the plane's side and a `mismatch` is a
19+
finding on both sides; it is requested at this slice's G1, not before, and its absence does not block the local
20+
authority path (AC1 to AC4 run under `Local`).
21+
22+
**Lift condition met:** the answer is recorded here. The slice stays `planned` until its dependency (024) is
23+
approved; it is no longer blocked on an external answer. The ADR-0008 append is still owed when the slice opens.

‎slices/026-store-and-forward-receipts/SLICE.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ Added 2026-09-20. Blocked until the external authority plane's maintainers answe
1212
`receipt/2` fits their adapter; that question is routed through the owner and this slice does not open before the
1313
answer is recorded in NOTES.md. Opening it changes ADR-0008's contract and needs an appended decision there.
1414

15+
**Answered the same day; see NOTES.md.** The queue carries the plane's envelope unmodified and never re-signs it;
16+
a reconciliation row on the plane's side is wanted and is requested at G1. The slice is no longer blocked on an
17+
external answer; it waits on 024 as its dependency says.
18+
1519
## Goal
1620
`receipt/2` gains a queued-then-acknowledged mode so that the local authority and an external adapter behave
1721
identically when the machine is offline: receipts are appended locally with a hybrid logical clock on every row,

0 commit comments

Comments
 (0)