@cello-protocol/daemon 0.0.211 → 0.0.212

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/dist/agent-admin-handlers.d.ts.map +1 -1
  2. package/dist/agent-admin-handlers.js +3 -0
  3. package/dist/agent-admin-handlers.js.map +1 -1
  4. package/dist/agent-handlers.d.ts.map +1 -1
  5. package/dist/agent-handlers.js +44 -0
  6. package/dist/agent-handlers.js.map +1 -1
  7. package/dist/agent-id-migration.d.ts.map +1 -1
  8. package/dist/agent-id-migration.js +11 -2
  9. package/dist/agent-id-migration.js.map +1 -1
  10. package/dist/assignment-verify.d.ts.map +1 -1
  11. package/dist/assignment-verify.js +2 -2
  12. package/dist/assignment-verify.js.map +1 -1
  13. package/dist/attendance-wiring.d.ts +2 -21
  14. package/dist/attendance-wiring.d.ts.map +1 -1
  15. package/dist/attendance-wiring.js +57 -251
  16. package/dist/attendance-wiring.js.map +1 -1
  17. package/dist/away-detection.d.ts +16 -21
  18. package/dist/away-detection.d.ts.map +1 -1
  19. package/dist/away-detection.js +34 -23
  20. package/dist/away-detection.js.map +1 -1
  21. package/dist/boot-agents.d.ts.map +1 -1
  22. package/dist/close-session-handler.d.ts.map +1 -1
  23. package/dist/close-session-handler.js +47 -1
  24. package/dist/close-session-handler.js.map +1 -1
  25. package/dist/co-attendance.d.ts +1 -1
  26. package/dist/co-attendance.js +1 -1
  27. package/dist/consortium-fingerprint.d.ts +115 -0
  28. package/dist/consortium-fingerprint.d.ts.map +1 -0
  29. package/dist/consortium-fingerprint.js +175 -0
  30. package/dist/consortium-fingerprint.js.map +1 -0
  31. package/dist/content-park.d.ts.map +1 -1
  32. package/dist/content-park.js +80 -0
  33. package/dist/content-park.js.map +1 -1
  34. package/dist/daemon-handle.d.ts +1 -1
  35. package/dist/daemon-handle.d.ts.map +1 -1
  36. package/dist/daemon-status-report.d.ts +10 -2
  37. package/dist/daemon-status-report.d.ts.map +1 -1
  38. package/dist/daemon-status-report.js +6 -3
  39. package/dist/daemon-status-report.js.map +1 -1
  40. package/dist/daemon.d.ts.map +1 -1
  41. package/dist/daemon.js +41 -13
  42. package/dist/daemon.js.map +1 -1
  43. package/dist/directory-bootstrap.d.ts +3 -1
  44. package/dist/directory-bootstrap.d.ts.map +1 -1
  45. package/dist/directory-bootstrap.js +3 -1
  46. package/dist/directory-bootstrap.js.map +1 -1
  47. package/dist/directory-connect.d.ts.map +1 -1
  48. package/dist/directory-connect.js +10 -2
  49. package/dist/directory-connect.js.map +1 -1
  50. package/dist/disconnect-cleanup.d.ts +7 -0
  51. package/dist/disconnect-cleanup.d.ts.map +1 -1
  52. package/dist/disconnect-cleanup.js +16 -1
  53. package/dist/disconnect-cleanup.js.map +1 -1
  54. package/dist/document-notify.d.ts +0 -1
  55. package/dist/document-notify.d.ts.map +1 -1
  56. package/dist/document-notify.js +0 -1
  57. package/dist/document-notify.js.map +1 -1
  58. package/dist/document-store.d.ts +0 -1
  59. package/dist/document-store.d.ts.map +1 -1
  60. package/dist/document-store.js +0 -1
  61. package/dist/document-store.js.map +1 -1
  62. package/dist/document-write-path.d.ts.map +1 -1
  63. package/dist/document-write-path.js +2 -9
  64. package/dist/document-write-path.js.map +1 -1
  65. package/dist/inbound-sessions.d.ts +3 -1
  66. package/dist/inbound-sessions.d.ts.map +1 -1
  67. package/dist/inbound-sessions.js +12 -4
  68. package/dist/inbound-sessions.js.map +1 -1
  69. package/dist/index.d.ts +3 -0
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +7 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/initiate-session-handler.d.ts.map +1 -1
  74. package/dist/initiate-session-handler.js +5 -1
  75. package/dist/initiate-session-handler.js.map +1 -1
  76. package/dist/park-envelope.d.ts +68 -0
  77. package/dist/park-envelope.d.ts.map +1 -1
  78. package/dist/park-envelope.js +86 -1
  79. package/dist/park-envelope.js.map +1 -1
  80. package/dist/park-recovery.d.ts +46 -0
  81. package/dist/park-recovery.d.ts.map +1 -1
  82. package/dist/park-recovery.js +100 -1
  83. package/dist/park-recovery.js.map +1 -1
  84. package/dist/relay-only.d.ts.map +1 -1
  85. package/dist/relay-only.js +7 -4
  86. package/dist/relay-only.js.map +1 -1
  87. package/dist/relay-receipt-store.d.ts +48 -17
  88. package/dist/relay-receipt-store.d.ts.map +1 -1
  89. package/dist/relay-receipt-store.js +77 -27
  90. package/dist/relay-receipt-store.js.map +1 -1
  91. package/dist/seal-escalation.d.ts.map +1 -1
  92. package/dist/seal-escalation.js +25 -0
  93. package/dist/seal-escalation.js.map +1 -1
  94. package/dist/seal-settle.d.ts +38 -0
  95. package/dist/seal-settle.d.ts.map +1 -0
  96. package/dist/seal-settle.js +33 -0
  97. package/dist/seal-settle.js.map +1 -0
  98. package/dist/session-assignment-parser.d.ts.map +1 -1
  99. package/dist/session-assignment-parser.js +5 -0
  100. package/dist/session-assignment-parser.js.map +1 -1
  101. package/dist/session-ceremony.d.ts +21 -14
  102. package/dist/session-ceremony.d.ts.map +1 -1
  103. package/dist/session-ceremony.js +25 -15
  104. package/dist/session-ceremony.js.map +1 -1
  105. package/dist/session-content-context.d.ts +11 -2
  106. package/dist/session-content-context.d.ts.map +1 -1
  107. package/dist/session-content-ingest.d.ts +0 -3
  108. package/dist/session-content-ingest.d.ts.map +1 -1
  109. package/dist/session-content-ingest.js +18 -111
  110. package/dist/session-content-ingest.js.map +1 -1
  111. package/dist/session-content-send.d.ts +5 -0
  112. package/dist/session-content-send.d.ts.map +1 -1
  113. package/dist/session-content-send.js +58 -0
  114. package/dist/session-content-send.js.map +1 -1
  115. package/dist/session-delivery-acks.d.ts +195 -0
  116. package/dist/session-delivery-acks.d.ts.map +1 -0
  117. package/dist/session-delivery-acks.js +674 -0
  118. package/dist/session-delivery-acks.js.map +1 -0
  119. package/dist/session-leaf-records.d.ts +19 -1
  120. package/dist/session-leaf-records.d.ts.map +1 -1
  121. package/dist/session-leaf-records.js +67 -1
  122. package/dist/session-leaf-records.js.map +1 -1
  123. package/dist/session-lifecycle.js +3 -3
  124. package/dist/session-lifecycle.js.map +1 -1
  125. package/dist/session-node-manager.d.ts +36 -21
  126. package/dist/session-node-manager.d.ts.map +1 -1
  127. package/dist/session-node-manager.js +99 -29
  128. package/dist/session-node-manager.js.map +1 -1
  129. package/dist/session-node-types.d.ts +18 -12
  130. package/dist/session-node-types.d.ts.map +1 -1
  131. package/dist/session-node-types.js +1 -9
  132. package/dist/session-node-types.js.map +1 -1
  133. package/dist/session-read-handlers.d.ts.map +1 -1
  134. package/dist/session-read-handlers.js +125 -4
  135. package/dist/session-read-handlers.js.map +1 -1
  136. package/dist/session-records.d.ts +17 -0
  137. package/dist/session-records.d.ts.map +1 -1
  138. package/dist/session-records.js +32 -0
  139. package/dist/session-records.js.map +1 -1
  140. package/dist/session-relay-client.d.ts +103 -6
  141. package/dist/session-relay-client.d.ts.map +1 -1
  142. package/dist/session-relay-client.js +369 -27
  143. package/dist/session-relay-client.js.map +1 -1
  144. package/dist/session-relay.d.ts +24 -2
  145. package/dist/session-relay.d.ts.map +1 -1
  146. package/dist/session-relay.js +21 -6
  147. package/dist/session-relay.js.map +1 -1
  148. package/dist/session-schema.d.ts.map +1 -1
  149. package/dist/session-schema.js +43 -0
  150. package/dist/session-schema.js.map +1 -1
  151. package/dist/session-seal-leaf-store.d.ts +6 -0
  152. package/dist/session-seal-leaf-store.d.ts.map +1 -1
  153. package/dist/session-seal-leaf-store.js +21 -4
  154. package/dist/session-seal-leaf-store.js.map +1 -1
  155. package/dist/session-seal.d.ts +12 -0
  156. package/dist/session-seal.d.ts.map +1 -1
  157. package/dist/session-seal.js +92 -3
  158. package/dist/session-seal.js.map +1 -1
  159. package/dist/session-views.d.ts +1 -0
  160. package/dist/session-views.d.ts.map +1 -1
  161. package/dist/session-views.js +81 -1
  162. package/dist/session-views.js.map +1 -1
  163. package/dist/signaling-connect.d.ts +1 -0
  164. package/dist/signaling-connect.d.ts.map +1 -1
  165. package/dist/signaling-connect.js +0 -1
  166. package/dist/signaling-connect.js.map +1 -1
  167. package/dist/status-handler.d.ts +9 -1
  168. package/dist/status-handler.d.ts.map +1 -1
  169. package/dist/status-handler.js +5 -2
  170. package/dist/status-handler.js.map +1 -1
  171. package/dist/test-handlers.js +4 -3
  172. package/dist/test-handlers.js.map +1 -1
  173. package/dist/trust-signal-store.d.ts +4 -2
  174. package/dist/trust-signal-store.d.ts.map +1 -1
  175. package/dist/trust-signal-store.js +4 -2
  176. package/dist/trust-signal-store.js.map +1 -1
  177. package/dist/types.d.ts +64 -0
  178. package/dist/types.d.ts.map +1 -1
  179. package/dist/types.js.map +1 -1
  180. package/package.json +5 -5
@@ -16,6 +16,14 @@ export interface RelayReceipt {
16
16
  sequenceNumber: number;
17
17
  /** Unix ms timestamp embedded in the ACK TBS. */
18
18
  timestamp: number;
19
+ /**
20
+ * 069-ORDERPROOF — hex of the 32-byte running root of this session's tree AFTER this leaf was
21
+ * appended, as the relay signed it. The position alone says where a leaf sits in a COUNTER; the
22
+ * root says where it sits in a CHAIN, which is what lets a party prove a prefix once the relay is
23
+ * gone. Optional on the TYPE only so rows written before this order still read; every row this
24
+ * build writes has one.
25
+ */
26
+ runningRootHex?: string;
19
27
  /** Hex of the 64-byte Ed25519 signature over the ACK TBS. */
20
28
  signatureHex: string;
21
29
  /** The relay's committed Structure2 (CBOR) for this leaf (DOD-MSG-4 hash_submit_ack). */
@@ -36,37 +44,60 @@ export interface SealLeaf extends RelayReceipt {
36
44
  leafKind: number;
37
45
  }
38
46
  /**
39
- * Verify a relay ACK signature against the (relayId-derived) relay pubkey. Returns true iff the signature
40
- * is exactly 64 bytes and Ed25519-verifies over TBS = SHA-256(hash_bytes || seq_BE4 || ts_BE8) — the same
41
- * TBS the relay signs (`buildRelayAckTbs`). A forged sequence number changes the TBS, so its signature fails.
47
+ * Verify a relay ordering attestation against a relay pubkey the CALLER supplies — and the caller
48
+ * must have got it from the directory-signed assignment, never from the frame.
49
+ *
50
+ * Returns true iff every field is well-formed and the 64-byte Ed25519 signature verifies over
51
+ * TBS = SHA-256(DOMAIN ‖ session_id ‖ content_hash ‖ seq_BE4 ‖ running_root ‖ ts_BE8) — the same
52
+ * statement the relay signs. A forged sequence, a swapped session or a rewritten prefix all change
53
+ * the TBS, so each fails.
54
+ *
55
+ * A wrong-length field returns FALSE rather than throwing: these bytes come off a wire the relay
56
+ * controls, and a malformed length must refuse this attestation, not take down the frame handler.
42
57
  */
43
- export declare function verifyRelayAck(contentHash: Uint8Array, sequenceNumber: number, timestamp: number, signature: Uint8Array, relayPubkey: Uint8Array): boolean;
58
+ export declare function verifyRelayAck(sessionId: Uint8Array, contentHash: Uint8Array, sequenceNumber: number, runningRoot: Uint8Array, timestamp: number, signature: Uint8Array, relayPubkey: Uint8Array): boolean;
59
+ /** Why an attestation was refused. For the LOG — the protocol outcome is identical for all of them. */
60
+ export type AckRefusalCause =
61
+ /** This session has no directory-named relay key recorded, so nothing can anchor the check. */
62
+ "no_anchor"
63
+ /** The frame named a relay other than the one the directory assigned to this session. */
64
+ | "relay_not_assigned"
65
+ /** `relay_id` was present but is not a 64-hex Ed25519 pubkey. */
66
+ | "bad_relay_id"
67
+ /** No signature, no timestamp, or no running root — the relay attested nothing. */
68
+ | "attestation_absent"
69
+ /** The signature does not bind (session, hash, sequence, root, timestamp) under the assigned key. */
70
+ | "signature_invalid";
44
71
  /** The decision for one `hash_submit_ack` — pure + directly unit-testable (the verify-gates-store wiring). */
45
72
  export type AckEvaluation = {
46
73
  kind: "store";
47
74
  receipt: RelayReceipt;
48
75
  }
49
- /** The ACK carried no relay_id/signature/timestamp (a keyless/legacy relay) — nothing to attest. */
50
- | {
51
- kind: "unsigned";
52
- }
53
- /** relay_id is not a 64-hex Ed25519 pubkey. */
54
- | {
55
- kind: "bad_relay_id";
56
- }
57
- /** The signature does NOT bind (content_hash, sequence, timestamp) — a forged/corrupt ACK. REJECT. */
76
+ /**
77
+ * REFUSED. One outcome for missing, malformed and mismatched — the caller must treat all three
78
+ * identically, and `cause` exists so the LOG can still name which one it was. A caller that
79
+ * branches on `cause` to soften any of them reintroduces exactly the hole this closes.
80
+ */
58
81
  | {
59
- kind: "invalid_signature";
82
+ kind: "refused";
83
+ cause: AckRefusalCause;
60
84
  };
61
85
  /**
62
- * Evaluate a relay ACK: decide whether it yields a storable, signature-verified receipt. This is the
63
- * verify-gates-store decision in isolation (so it is unit-testable without the relay stream) — a forged
64
- * signature returns `invalid_signature` and MUST NOT be stored (DoD: "a forged sequence is rejected").
86
+ * Evaluate a relay ordering attestation: decide whether it yields a storable, signature-verified
87
+ * receipt. This is the verify-gates-store decision in isolation, so it is unit-testable without the
88
+ * relay stream.
89
+ *
90
+ * `expectedRelayPubkeyHex` is the anchor and it is REQUIRED in substance: `undefined` refuses. It
91
+ * must come from `relay_id` on an assignment whose FROST signature has been verified.
65
92
  */
66
93
  export declare function evaluateRelayAck(params: {
94
+ sessionId: Uint8Array;
67
95
  contentHash: Uint8Array;
96
+ runningRoot: Uint8Array | undefined;
68
97
  sessionIdHex: string;
69
98
  agentPubkeyHex: string;
99
+ /** The relay the DIRECTORY assigned to this session, hex. Absent ⇒ nothing to anchor to ⇒ refuse. */
100
+ expectedRelayPubkeyHex: string | undefined;
70
101
  relayId: string | undefined;
71
102
  relaySignature: Uint8Array | undefined;
72
103
  timestamp: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"relay-receipt-store.d.ts","sourceRoot":"","sources":["../src/relay-receipt-store.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,yFAAyF;AACzF,MAAM,WAAW,YAAY;IAC3B,qGAAqG;IACrG,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,cAAc,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,YAAY,EAAE,MAAM,CAAC;IACrB,yFAAyF;IACzF,OAAO,EAAE,MAAM,CAAC;IAChB,6GAA6G;IAC7G,cAAc,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,cAAc,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IAMrB,yFAAyF;IACzF,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,yDAAyD;IACzD,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAS,SAAQ,YAAY;IAC5C,cAAc,EAAE,UAAU,CAAC;IAC3B,cAAc,EAAE,UAAU,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,UAAU,EACvB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,UAAU,GACtB,OAAO,CAIT;AAED,8GAA8G;AAC9G,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE;AAC1C,oGAAoG;GAClG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE;AACtB,+CAA+C;GAC7C;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE;AAC1B,sGAAsG;GACpG;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAElC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,cAAc,EAAE,UAAU,GAAG,SAAS,CAAC;IACvC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,aAAa,CAqBhB;AAqBD,qBAAa,iBAAiB;;gBAIhB,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM;IA6B9C;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAsCzD,8FAA8F;IAC9F,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAUnG,wGAAwG;IACxG,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IAiBrE;;;;;OAKG;IACH,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,EAAE;CA6BxE"}
1
+ {"version":3,"file":"relay-receipt-store.d.ts","sourceRoot":"","sources":["../src/relay-receipt-store.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * CELLO Daemon — RelayReceiptStore (M8B DOD-RELAYSIG-1)
2
+ * CELLO Daemon — RelayReceiptStore (DOD-M15-ORDERPROOF-1, was M8B DOD-RELAYSIG-1)
3
3
  *
4
4
  * The relay is the ordering/witness authority: it assigns a canonical sequence number to each submitted
5
- * content-hash leaf and signs an ACK over it (PERSIST-012, relay-node `buildRelayAckTbs`). This store is the
5
+ * content-hash leaf and signs an ATTESTATION over it (relay-node `buildRelayAckTbs`). This store is the
6
6
  * client's IMMUTABLE record of those signed attestations — durable evidence that the relay assigned a
7
7
  * specific sequence to a specific hash at a specific time. The receipt is what lets the client later prove
8
8
  * (or dispute) the relay's ordering, and is the building block the client carries to the directory at seal
@@ -10,6 +10,18 @@
10
10
  *
11
11
  * Verification is an Ed25519 check that MUST stay byte-compatible with the relay's signer.
12
12
  *
13
+ * ⚠️ **THE KEY IT IS CHECKED AGAINST IS THE POINT — 069-ORDERPROOF.** This module used to verify the
14
+ * signature against `relay_id`, a key carried inside the very frame being checked, and its own comment
15
+ * called that "SELF-CONSISTENCY". It is not a check: anyone who can write the frame can mint a key, sign
16
+ * any ordering they like with it, and put the key in the field we verify against. The key now comes from
17
+ * `relay_id` on the **directory-signed `SessionAssignment`**, which is inside the FROST-signed TBS the
18
+ * client already verifies — something neither the relay nor either participant can rewrite.
19
+ *
20
+ * ⚠️ **AND ABSENT IS NOT FINE.** Missing, malformed and mismatched are ONE outcome (`refused`), because
21
+ * a party holding no attestation for a message is in exactly the state a corrupted one leaves them in.
22
+ * Whoever can cause the absence must not get a softer answer than whoever can cause the corruption — and
23
+ * the party who can cause the absence is the relay, the party the check exists to constrain.
24
+ *
13
25
  * IMMUTABILITY (SI-003): the unique unit of a relay attestation is a POSITION — (agent, session, sequence)
14
26
  * — not a content hash. The same plaintext ("ok") legitimately produces the same content hash at DIFFERENT
15
27
  * sequences (per-session relay counter; repeated content within a session), so the table is keyed on the
@@ -21,30 +33,59 @@
21
33
  */
22
34
  import { verify, buildRelayAckTbs } from "@cello-protocol/crypto";
23
35
  /**
24
- * Verify a relay ACK signature against the (relayId-derived) relay pubkey. Returns true iff the signature
25
- * is exactly 64 bytes and Ed25519-verifies over TBS = SHA-256(hash_bytes || seq_BE4 || ts_BE8) — the same
26
- * TBS the relay signs (`buildRelayAckTbs`). A forged sequence number changes the TBS, so its signature fails.
36
+ * Verify a relay ordering attestation against a relay pubkey the CALLER supplies — and the caller
37
+ * must have got it from the directory-signed assignment, never from the frame.
38
+ *
39
+ * Returns true iff every field is well-formed and the 64-byte Ed25519 signature verifies over
40
+ * TBS = SHA-256(DOMAIN ‖ session_id ‖ content_hash ‖ seq_BE4 ‖ running_root ‖ ts_BE8) — the same
41
+ * statement the relay signs. A forged sequence, a swapped session or a rewritten prefix all change
42
+ * the TBS, so each fails.
43
+ *
44
+ * A wrong-length field returns FALSE rather than throwing: these bytes come off a wire the relay
45
+ * controls, and a malformed length must refuse this attestation, not take down the frame handler.
27
46
  */
28
- export function verifyRelayAck(contentHash, sequenceNumber, timestamp, signature, relayPubkey) {
47
+ export function verifyRelayAck(sessionId, contentHash, sequenceNumber, runningRoot, timestamp, signature, relayPubkey) {
29
48
  if (signature.length !== 64)
30
49
  return false;
31
- const tbs = buildRelayAckTbs(contentHash, sequenceNumber, timestamp);
50
+ if (sessionId.length !== 16 || contentHash.length !== 32 || runningRoot.length !== 32)
51
+ return false;
52
+ const tbs = buildRelayAckTbs(sessionId, contentHash, sequenceNumber, runningRoot, timestamp);
32
53
  return verify(relayPubkey, tbs, signature);
33
54
  }
34
55
  /**
35
- * Evaluate a relay ACK: decide whether it yields a storable, signature-verified receipt. This is the
36
- * verify-gates-store decision in isolation (so it is unit-testable without the relay stream) — a forged
37
- * signature returns `invalid_signature` and MUST NOT be stored (DoD: "a forged sequence is rejected").
56
+ * Evaluate a relay ordering attestation: decide whether it yields a storable, signature-verified
57
+ * receipt. This is the verify-gates-store decision in isolation, so it is unit-testable without the
58
+ * relay stream.
59
+ *
60
+ * `expectedRelayPubkeyHex` is the anchor and it is REQUIRED in substance: `undefined` refuses. It
61
+ * must come from `relay_id` on an assignment whose FROST signature has been verified.
38
62
  */
39
63
  export function evaluateRelayAck(params) {
40
- const { contentHash, sessionIdHex, agentPubkeyHex, relayId, relaySignature, timestamp, sequenceNumber } = params;
41
- if (!relayId || !relaySignature || timestamp === undefined)
42
- return { kind: "unsigned" };
43
- if (!/^[0-9a-fA-F]{64}$/.test(relayId))
44
- return { kind: "bad_relay_id" };
45
- const relayPubkey = new Uint8Array(Buffer.from(relayId, "hex"));
46
- if (!verifyRelayAck(contentHash, sequenceNumber, timestamp, relaySignature, relayPubkey)) {
47
- return { kind: "invalid_signature" };
64
+ const { sessionId, contentHash, runningRoot, sessionIdHex, agentPubkeyHex, expectedRelayPubkeyHex, relayId, relaySignature, timestamp, sequenceNumber, } = params;
65
+ if (!expectedRelayPubkeyHex || !/^[0-9a-fA-F]{64}$/.test(expectedRelayPubkeyHex)) {
66
+ return { kind: "refused", cause: "no_anchor" };
67
+ }
68
+ /**
69
+ * THE FRAME'S OWN CLAIM IS COMPARED, NEVER TRUSTED. The signature below is verified against the
70
+ * directory's key regardless, so this comparison adds no security on its own — what it adds is a
71
+ * NAMED cause. A relay that has been replaced mid-session produces a valid signature under a key
72
+ * the directory never named, and "this is not the relay you were assigned" is the sentence an
73
+ * operator can act on. `undefined` is not a mismatch: a relay omitting the field does not get to
74
+ * skip the check, it simply gets checked against the anchor with no label.
75
+ */
76
+ if (relayId !== undefined) {
77
+ if (!/^[0-9a-fA-F]{64}$/.test(relayId))
78
+ return { kind: "refused", cause: "bad_relay_id" };
79
+ if (relayId.toLowerCase() !== expectedRelayPubkeyHex.toLowerCase()) {
80
+ return { kind: "refused", cause: "relay_not_assigned" };
81
+ }
82
+ }
83
+ if (!relaySignature || timestamp === undefined || !runningRoot) {
84
+ return { kind: "refused", cause: "attestation_absent" };
85
+ }
86
+ const relayPubkey = new Uint8Array(Buffer.from(expectedRelayPubkeyHex, "hex"));
87
+ if (!verifyRelayAck(sessionId, contentHash, sequenceNumber, runningRoot, timestamp, relaySignature, relayPubkey)) {
88
+ return { kind: "refused", cause: "signature_invalid" };
48
89
  }
49
90
  return {
50
91
  kind: "store",
@@ -52,11 +93,12 @@ export function evaluateRelayAck(params) {
52
93
  hashHex: Buffer.from(contentHash).toString("hex"),
53
94
  agentPubkeyHex,
54
95
  sessionIdHex,
55
- relayId,
56
- relayPubkeyHex: relayId,
96
+ relayId: expectedRelayPubkeyHex,
97
+ relayPubkeyHex: expectedRelayPubkeyHex,
57
98
  sequenceNumber,
58
99
  timestamp,
59
100
  signatureHex: Buffer.from(relaySignature).toString("hex"),
101
+ runningRootHex: Buffer.from(runningRoot).toString("hex"),
60
102
  },
61
103
  };
62
104
  }
@@ -71,6 +113,9 @@ const CREATE_RELAY_RECEIPTS_SQL = `
71
113
  relay_timestamp INTEGER NOT NULL,
72
114
  signature_hex TEXT NOT NULL,
73
115
  stored_at INTEGER NOT NULL,
116
+ -- 069-ORDERPROOF: the running root the relay signed alongside the position (nullable — rows
117
+ -- written before this order have none, and they stay readable and sealable exactly as they are).
118
+ running_root_hex TEXT,
74
119
  -- FED-OPTIONB-SEAL-001: per-leaf carry bytes for the unilateral-seal offline rebuild (nullable).
75
120
  structure2_cbor BLOB,
76
121
  structure1_cbor BLOB,
@@ -100,6 +145,10 @@ export class RelayReceiptStore {
100
145
  ["structure2_cbor", "BLOB"],
101
146
  ["structure1_cbor", "BLOB"],
102
147
  ["leaf_kind", "INTEGER"],
148
+ // 069-ORDERPROOF. NULLABLE, like the three above: a session that predates this order keeps
149
+ // every receipt it already holds, opens, reads and seals unchanged, and simply has no root
150
+ // recorded for those positions.
151
+ ["running_root_hex", "TEXT"],
103
152
  ]) {
104
153
  if (!cols.has(name)) {
105
154
  this.#db.exec(`ALTER TABLE relay_ack_receipts ADD COLUMN ${name} ${decl}`);
@@ -116,11 +165,11 @@ export class RelayReceiptStore {
116
165
  const existing = this.get(receipt.agentPubkeyHex, receipt.sessionIdHex, receipt.sequenceNumber);
117
166
  const info = this.#db
118
167
  .prepare(`INSERT OR IGNORE INTO relay_ack_receipts
119
- (agent_pubkey, session_id, sequence_number, hash_hex, relay_id, relay_pubkey_hex, relay_timestamp, signature_hex, stored_at, structure2_cbor, structure1_cbor, leaf_kind)
120
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
168
+ (agent_pubkey, session_id, sequence_number, hash_hex, relay_id, relay_pubkey_hex, relay_timestamp, signature_hex, stored_at, structure2_cbor, structure1_cbor, leaf_kind, running_root_hex)
169
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
121
170
  .run(receipt.agentPubkeyHex, receipt.sessionIdHex, receipt.sequenceNumber, receipt.hashHex, receipt.relayId, receipt.relayPubkeyHex, receipt.timestamp, receipt.signatureHex, storedAtMs,
122
171
  // FED-OPTIONB-SEAL-001: carry bytes (null when absent — receipt-only rows).
123
- receipt.structure2Cbor ? Buffer.from(receipt.structure2Cbor) : null, receipt.structure1Cbor ? Buffer.from(receipt.structure1Cbor) : null, receipt.leafKind ?? null);
172
+ receipt.structure2Cbor ? Buffer.from(receipt.structure2Cbor) : null, receipt.structure1Cbor ? Buffer.from(receipt.structure1Cbor) : null, receipt.leafKind ?? null, receipt.runningRootHex ?? null);
124
173
  const wrote = Number(info.changes) > 0;
125
174
  if (!wrote && existing && existing.hashHex !== receipt.hashHex) {
126
175
  // EQUIVOCATION: a relay re-attesting a DIFFERENT hash at an already-recorded position. The first
@@ -138,7 +187,7 @@ export class RelayReceiptStore {
138
187
  /** The stored receipt at an attestation position (agent, session, sequence), or undefined. */
139
188
  get(agentPubkeyHex, sessionIdHex, sequenceNumber) {
140
189
  const row = this.#db
141
- .prepare(`SELECT agent_pubkey, session_id, sequence_number, hash_hex, relay_id, relay_pubkey_hex, relay_timestamp, signature_hex
190
+ .prepare(`SELECT agent_pubkey, session_id, sequence_number, hash_hex, relay_id, relay_pubkey_hex, relay_timestamp, signature_hex, running_root_hex
142
191
  FROM relay_ack_receipts WHERE agent_pubkey = ? AND session_id = ? AND sequence_number = ?`)
143
192
  .get(agentPubkeyHex, sessionIdHex, sequenceNumber);
144
193
  return row ? this.#rowToReceipt(row) : undefined;
@@ -147,11 +196,11 @@ export class RelayReceiptStore {
147
196
  getAll(agentPubkeyHex, sessionIdHex) {
148
197
  const rows = sessionIdHex
149
198
  ? this.#db
150
- .prepare(`SELECT agent_pubkey, session_id, sequence_number, hash_hex, relay_id, relay_pubkey_hex, relay_timestamp, signature_hex
199
+ .prepare(`SELECT agent_pubkey, session_id, sequence_number, hash_hex, relay_id, relay_pubkey_hex, relay_timestamp, signature_hex, running_root_hex
151
200
  FROM relay_ack_receipts WHERE agent_pubkey = ? AND session_id = ? ORDER BY sequence_number ASC`)
152
201
  .all(agentPubkeyHex, sessionIdHex)
153
202
  : this.#db
154
- .prepare(`SELECT agent_pubkey, session_id, sequence_number, hash_hex, relay_id, relay_pubkey_hex, relay_timestamp, signature_hex
203
+ .prepare(`SELECT agent_pubkey, session_id, sequence_number, hash_hex, relay_id, relay_pubkey_hex, relay_timestamp, signature_hex, running_root_hex
155
204
  FROM relay_ack_receipts WHERE agent_pubkey = ? ORDER BY session_id, sequence_number ASC`)
156
205
  .all(agentPubkeyHex);
157
206
  return rows.map((r) => this.#rowToReceipt(r));
@@ -164,7 +213,7 @@ export class RelayReceiptStore {
164
213
  */
165
214
  getSealLeaves(agentPubkeyHex, sessionIdHex) {
166
215
  const rows = this.#db
167
- .prepare(`SELECT agent_pubkey, session_id, sequence_number, hash_hex, relay_id, relay_pubkey_hex, relay_timestamp, signature_hex, structure2_cbor, structure1_cbor, leaf_kind
216
+ .prepare(`SELECT agent_pubkey, session_id, sequence_number, hash_hex, relay_id, relay_pubkey_hex, relay_timestamp, signature_hex, running_root_hex, structure2_cbor, structure1_cbor, leaf_kind
168
217
  FROM relay_ack_receipts
169
218
  WHERE agent_pubkey = ? AND session_id = ? AND structure2_cbor IS NOT NULL AND structure1_cbor IS NOT NULL AND leaf_kind IS NOT NULL
170
219
  ORDER BY sequence_number ASC`)
@@ -186,6 +235,7 @@ export class RelayReceiptStore {
186
235
  sequenceNumber: row.sequence_number,
187
236
  timestamp: row.relay_timestamp,
188
237
  signatureHex: row.signature_hex,
238
+ ...(typeof row.running_root_hex === "string" ? { runningRootHex: row.running_root_hex } : {}),
189
239
  };
190
240
  }
191
241
  }
@@ -1 +1 @@
1
- {"version":3,"file":"relay-receipt-store.js","sourceRoot":"","sources":["../src/relay-receipt-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay-receipt-store.js","sourceRoot":"","sources":["../src/relay-receipt-store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"seal-escalation.d.ts","sourceRoot":"","sources":["../src/seal-escalation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3G,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC,CAAC;IACrE,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAC/D,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,kBAAkB;AACxB;;yDAEyD;AACzD,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,EAC/D,aAAa,EAAE,MAAM;AACrB;;;;;;;GAOG;AACH,IAAI,GAAE;IAAE,qBAAqB,EAAE,OAAO,CAAA;CAAqC,GAC1E,OAAO,CACN;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAChF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAChF,CA4MA"}
1
+ {"version":3,"file":"seal-escalation.d.ts","sourceRoot":"","sources":["../src/seal-escalation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3G,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC,CAAC;IACrE,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAC/D,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,kBAAkB;AACxB;;yDAEyD;AACzD,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,EAC/D,aAAa,EAAE,MAAM;AACrB;;;;;;;GAOG;AACH,IAAI,GAAE;IAAE,qBAAqB,EAAE,OAAO,CAAA;CAAqC,GAC1E,OAAO,CACN;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAChF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAChF,CAyOA"}
@@ -65,6 +65,9 @@ opts = { refuseOnUnusableCarry: false }) {
65
65
  relay_id: l.relayId,
66
66
  relay_timestamp: l.relayTimestamp,
67
67
  relay_signature: l.relaySignatureHex ? new Uint8Array(Buffer.from(l.relaySignatureHex, "hex")) : undefined,
68
+ // 069-ORDERPROOF: the running root travels with the signature it is bound into. Carrying one
69
+ // without the other would present a leaf the directory cannot check as though it were witnessed.
70
+ relay_running_root: l.relayRunningRootHex ? new Uint8Array(Buffer.from(l.relayRunningRootHex, "hex")) : undefined,
68
71
  }));
69
72
  // REFUSE LOCALLY FOR A LOCALLY-KNOWABLE FAILURE, rather than spending 30 s to be told nothing.
70
73
  //
@@ -140,6 +143,28 @@ opts = { refuseOnUnusableCarry: false }) {
140
143
  guidance: "Both parties have posted their SEAL leaf, so the relay has what it needs to notarize this BILATERALLY — a better receipt than a unilateral one, and asking for a unilateral seal now would be refused. Wait for the seal to land (cello_sessions shows the status) and read the receipt with cello_sealed_receipt.",
141
144
  };
142
145
  }
146
+ /**
147
+ * ─── A CARRY THAT PREDATES 069-ORDERPROOF IS REFUSED HERE, BY NAME ────────────────────────────
148
+ *
149
+ * A leaf recorded before this order has a relay id, a timestamp and a signature and NO running
150
+ * root, because the statement the relay signed then did not bind one. The directory's decoder
151
+ * treats a partial receipt as a malformed FRAME and voids the whole submission — which reaches
152
+ * the operator as `not_authenticated` on a stream that is authenticated, and then as a timeout.
153
+ * That is this milestone's founding error-fidelity defect, reproduced one order later.
154
+ *
155
+ * So it is caught here, where the cause is known, and named. The evidence itself is not lost:
156
+ * `cello_transcript` still shows the conversation, and a BILATERAL close — where the counterparty
157
+ * co-signs rather than the directory rebuilding from a carry — is unaffected.
158
+ */
159
+ const preOrderproof = seal_leaves.filter((l) => l.relay_signature !== undefined && l.relay_running_root === undefined);
160
+ if (opts.refuseOnUnusableCarry && preOrderproof.length > 0) {
161
+ pendingUnilateralWaiters.delete(sealKey(agentName, sessionId));
162
+ return {
163
+ ok: false,
164
+ reason: "seal_carry_pre_orderproof",
165
+ guidance: "This session's relay evidence was recorded before the relay started signing the position a message sits at, so the directory cannot rebuild it and this side cannot seal alone. Close it WITH your counterparty instead — an ordinary cello_close_session on both sides still produces a receipt. cello_transcript shows the conversation either way.",
166
+ };
167
+ }
143
168
  const sent = await sendOver(agentName, {
144
169
  type: "seal_unilateral",
145
170
  session_id: new Uint8Array(Buffer.from(sessionId, "hex")),
@@ -1 +1 @@
1
- {"version":3,"file":"seal-escalation.js","sourceRoot":"","sources":["../src/seal-escalation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seal-escalation.js","sourceRoot":"","sources":["../src/seal-escalation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * DOD-M15-SEALPRECOND-1 — wait for this side's own record to stop moving before signing it.
3
+ *
4
+ * ⚠️ THIS IS NOT A DELAY, AND THE DISTINCTION IS THE WHOLE UNIT. On 2026-09-11 the daemon held the
5
+ * relay's ordering confirmation for 352 milliseconds and signed without it; a 14-millisecond gap
6
+ * and a 14-second gap fail identically, so nothing here may be tuned to a window. What is waited
7
+ * ON is a condition of state — `sealReadiness().ownLeavesOrdered`, the leaves of ours the relay has
8
+ * already ordered and this tree has not placed. The bound exists only so a send that never
9
+ * resolves cannot hold the operator's close forever; it is the escape, not the mechanism.
10
+ *
11
+ * The condition is re-read every poll and the wait returns the instant it clears, which is what a
12
+ * fixed sleep cannot do and what the tests assert.
13
+ */
14
+ import type { SessionNodeManager } from "./session-node-manager.js";
15
+ /**
16
+ * How long a close may wait for its own in-flight send to take its place in the record.
17
+ *
18
+ * Two seconds against a condition that resolved in 14ms when it was measured. Generous on purpose:
19
+ * the cost of waiting too long is an operator's close taking a moment, and the cost of not waiting
20
+ * is a signature no directory can verify and a receipt that is gone for both parties permanently.
21
+ */
22
+ export declare const SEAL_SETTLE_DEADLINE_MS = 2000;
23
+ export type SealSettleOutcome = {
24
+ settled: true;
25
+ waitedMs: number;
26
+ } | {
27
+ settled: false;
28
+ waitedMs: number;
29
+ ownLeavesOrdered: number;
30
+ };
31
+ /**
32
+ * Block until this session has no own leaf the relay has ordered and the tree has not placed.
33
+ *
34
+ * Returns immediately — no timer, no microtask hop beyond the read — when the record is already
35
+ * level, which is every ordinary close.
36
+ */
37
+ export declare function awaitOwnRecordSettled(sessionNodeManager: Pick<SessionNodeManager, "sealReadiness">, agentName: string, sessionId: string, deadlineMs?: number): Promise<SealSettleOutcome>;
38
+ //# sourceMappingURL=seal-settle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seal-settle.d.ts","sourceRoot":"","sources":["../src/seal-settle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAK7C,MAAM,MAAM,iBAAiB,GACzB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC,EAC7D,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,MAAgC,GAC3C,OAAO,CAAC,iBAAiB,CAAC,CAe5B"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * How long a close may wait for its own in-flight send to take its place in the record.
3
+ *
4
+ * Two seconds against a condition that resolved in 14ms when it was measured. Generous on purpose:
5
+ * the cost of waiting too long is an operator's close taking a moment, and the cost of not waiting
6
+ * is a signature no directory can verify and a receipt that is gone for both parties permanently.
7
+ */
8
+ export const SEAL_SETTLE_DEADLINE_MS = 2_000;
9
+ /** How often the condition is re-read. Short enough that a settled record is not made to wait. */
10
+ const SEAL_SETTLE_POLL_MS = 20;
11
+ /**
12
+ * Block until this session has no own leaf the relay has ordered and the tree has not placed.
13
+ *
14
+ * Returns immediately — no timer, no microtask hop beyond the read — when the record is already
15
+ * level, which is every ordinary close.
16
+ */
17
+ export async function awaitOwnRecordSettled(sessionNodeManager, agentName, sessionId, deadlineMs = SEAL_SETTLE_DEADLINE_MS) {
18
+ const started = Date.now();
19
+ let readiness = sessionNodeManager.sealReadiness(agentName, sessionId);
20
+ while (readiness.ownLeavesOrdered > 0 && Date.now() - started < deadlineMs) {
21
+ await new Promise((resolve) => {
22
+ const t = setTimeout(resolve, SEAL_SETTLE_POLL_MS);
23
+ // Never hold the process — or a test runner — open on a session that is going nowhere.
24
+ t.unref?.();
25
+ });
26
+ readiness = sessionNodeManager.sealReadiness(agentName, sessionId);
27
+ }
28
+ const waitedMs = Date.now() - started;
29
+ return readiness.ownLeavesOrdered > 0
30
+ ? { settled: false, waitedMs, ownLeavesOrdered: readiness.ownLeavesOrdered }
31
+ : { settled: true, waitedMs };
32
+ }
33
+ //# sourceMappingURL=seal-settle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seal-settle.js","sourceRoot":"","sources":["../src/seal-settle.ts"],"names":[],"mappings":"AAeA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAE7C,kGAAkG;AAClG,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAM/B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,kBAA6D,EAC7D,SAAiB,EACjB,SAAiB,EACjB,aAAqB,uBAAuB;IAE5C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,SAAS,GAAG,kBAAkB,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACvE,OAAO,SAAS,CAAC,gBAAgB,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,UAAU,EAAE,CAAC;QAC3E,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YACnD,uFAAuF;YACvF,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QACH,SAAS,GAAG,kBAAkB,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IACtC,OAAO,SAAS,CAAC,gBAAgB,GAAG,CAAC;QACnC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,EAAE;QAC5E,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-assignment-parser.d.ts","sourceRoot":"","sources":["../src/session-assignment-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAcxE;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,wBAAwB,GAAG,qBAAqB,CAAC;AAkE9E;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;AAC5B;;;;GAIG;AACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAC5C,iBAAiB,GAAG,IAAI,CAgH1B;AAID,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,eAAe,CAAC;IAC9C,uFAAuF;IACvF,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,2BAA2B,GAAG,IAAI,CAK7G;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAIlF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA0BhF;AAMD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACnE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC9C,CAeA;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAGtF"}
1
+ {"version":3,"file":"session-assignment-parser.d.ts","sourceRoot":"","sources":["../src/session-assignment-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAcxE;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,wBAAwB,GAAG,qBAAqB,CAAC;AAkE9E;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;AAC5B;;;;GAIG;AACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAC5C,iBAAiB,GAAG,IAAI,CAqH1B;AAID,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,eAAe,CAAC;IAC9C,uFAAuF;IACvF,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,2BAA2B,GAAG,IAAI,CAK7G;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAIlF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA0BhF;AAMD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACnE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC9C,CAeA;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAGtF"}
@@ -181,6 +181,10 @@ onTolerated) {
181
181
  */
182
182
  const highStakes = typeof raw["high_stakes"] === "boolean" ? raw["high_stakes"] : undefined;
183
183
  const priorRelayId = typeof raw["prior_relay_id"] === "string" ? raw["prior_relay_id"] : undefined;
184
+ // 069-ORDERPROOF: read the same way and for the same reason — `""` is the ANSWER "this session
185
+ // has no relay", not an absence. Mapping it to `undefined` would take the verifier to the
186
+ // 12-field layout while the directory signed 13, and every direct session would fail to verify.
187
+ const relayId = typeof raw["relay_id"] === "string" ? raw["relay_id"] : undefined;
184
188
  const common = {
185
189
  session_id: sessionId,
186
190
  participant_a: participantA,
@@ -198,6 +202,7 @@ onTolerated) {
198
202
  transport_mode: transportMode,
199
203
  high_stakes: highStakes,
200
204
  prior_relay_id: priorRelayId,
205
+ relay_id: relayId,
201
206
  };
202
207
  if (sigType === "frost") {
203
208
  const signerPubkey = toU8Safe(raw["signer_pubkey"]);
@@ -1 +1 @@
1
- {"version":3,"file":"session-assignment-parser.js","sourceRoot":"","sources":["../src/session-assignment-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-assignment-parser.js","sourceRoot":"","sources":["../src/session-assignment-parser.ts"],"names":[],"mappings":"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"}