Skip to content

Commit 7514a7b

Browse files
authored
Merge pull request #16 from ScriptKittyOS/plan/answers-2026-09-20
Signed-off-by: Ayla Croft <aylacroft@proton.me>
2 parents 68000bc + 034bbea commit 7514a7b

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 shared cross-project 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)