@real-life/trust-protocol 0.3.2 → 0.5.0
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.
- package/CHANGELOG.md +97 -0
- package/README.md +209 -78
- package/dist/ack.d.ts +84 -0
- package/dist/ack.d.ts.map +1 -0
- package/dist/ack.js +114 -0
- package/dist/ack.js.map +1 -0
- package/dist/adapters/vti-mediator.d.ts +169 -0
- package/dist/adapters/vti-mediator.d.ts.map +1 -0
- package/dist/adapters/vti-mediator.js +659 -0
- package/dist/adapters/vti-mediator.js.map +1 -0
- package/dist/anchor.d.ts +226 -0
- package/dist/anchor.d.ts.map +1 -0
- package/dist/anchor.js +347 -0
- package/dist/anchor.js.map +1 -0
- package/dist/{holder.d.ts → carrier-holder.d.ts} +1 -1
- package/dist/carrier-holder.d.ts.map +1 -0
- package/dist/{holder.js → carrier-holder.js} +5 -4
- package/dist/carrier-holder.js.map +1 -0
- package/dist/carrier-identity.js +4 -4
- package/dist/carrier-identity.js.map +1 -1
- package/dist/carrier.d.ts.map +1 -1
- package/dist/carrier.js +4 -3
- package/dist/carrier.js.map +1 -1
- package/dist/ceremony.d.ts +3 -2
- package/dist/ceremony.d.ts.map +1 -1
- package/dist/ceremony.js +16 -26
- package/dist/ceremony.js.map +1 -1
- package/dist/codec.d.ts +54 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +494 -0
- package/dist/codec.js.map +1 -0
- package/dist/continuity.d.ts +67 -0
- package/dist/continuity.d.ts.map +1 -0
- package/dist/continuity.js +110 -0
- package/dist/continuity.js.map +1 -0
- package/dist/core.d.ts +4 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js.map +1 -1
- package/dist/crypto.d.ts +23 -7
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +54 -20
- package/dist/crypto.js.map +1 -1
- package/dist/delivery.d.ts +31 -3
- package/dist/delivery.d.ts.map +1 -1
- package/dist/delivery.js +75 -28
- package/dist/delivery.js.map +1 -1
- package/dist/encounter/ceremony.d.ts +37 -0
- package/dist/encounter/ceremony.d.ts.map +1 -0
- package/dist/encounter/ceremony.js +662 -0
- package/dist/encounter/ceremony.js.map +1 -0
- package/dist/encounter.d.ts +91 -1
- package/dist/encounter.d.ts.map +1 -1
- package/dist/encounter.js +191 -12
- package/dist/encounter.js.map +1 -1
- package/dist/engine.d.ts +303 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +1509 -0
- package/dist/engine.js.map +1 -0
- package/dist/entropy.d.ts +28 -0
- package/dist/entropy.d.ts.map +1 -0
- package/dist/entropy.js +96 -0
- package/dist/entropy.js.map +1 -0
- package/dist/events.d.ts +198 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +2 -0
- package/dist/events.js.map +1 -0
- package/dist/fixtures.d.ts +30 -0
- package/dist/fixtures.d.ts.map +1 -0
- package/dist/fixtures.js +155 -0
- package/dist/fixtures.js.map +1 -0
- package/dist/forge.d.ts +47 -0
- package/dist/forge.d.ts.map +1 -0
- package/dist/forge.js +20 -0
- package/dist/forge.js.map +1 -0
- package/dist/group-star.d.ts +251 -0
- package/dist/group-star.d.ts.map +1 -0
- package/dist/group-star.js +348 -0
- package/dist/group-star.js.map +1 -0
- package/dist/holder-api.d.ts +165 -0
- package/dist/holder-api.d.ts.map +1 -0
- package/dist/holder-api.js +142 -0
- package/dist/holder-api.js.map +1 -0
- package/dist/holder-state-v1.d.ts +801 -0
- package/dist/holder-state-v1.d.ts.map +1 -0
- package/dist/holder-state-v1.js +2 -0
- package/dist/holder-state-v1.js.map +1 -0
- package/dist/holder-state-v2.d.ts +858 -0
- package/dist/holder-state-v2.d.ts.map +1 -0
- package/dist/holder-state-v2.js +2 -0
- package/dist/holder-state-v2.js.map +1 -0
- package/dist/identity-state.d.ts +43 -0
- package/dist/identity-state.d.ts.map +1 -0
- package/dist/identity-state.js +345 -0
- package/dist/identity-state.js.map +1 -0
- package/dist/identity.d.ts +24 -2
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +70 -11
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +27 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +81 -29
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +37 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +22 -0
- package/dist/internal.js.map +1 -0
- package/dist/introduction/holder.d.ts +18 -0
- package/dist/introduction/holder.d.ts.map +1 -0
- package/dist/introduction/holder.js +764 -0
- package/dist/introduction/holder.js.map +1 -0
- package/dist/introduction.d.ts +101 -0
- package/dist/introduction.d.ts.map +1 -0
- package/dist/introduction.js +132 -0
- package/dist/introduction.js.map +1 -0
- package/dist/invariants.d.ts +43 -0
- package/dist/invariants.d.ts.map +1 -0
- package/dist/invariants.js +953 -0
- package/dist/invariants.js.map +1 -0
- package/dist/keys-seed.d.ts +7 -0
- package/dist/keys-seed.d.ts.map +1 -0
- package/dist/keys-seed.js +133 -0
- package/dist/keys-seed.js.map +1 -0
- package/dist/log-memory.d.ts +12 -0
- package/dist/log-memory.d.ts.map +1 -0
- package/dist/log-memory.js +101 -0
- package/dist/log-memory.js.map +1 -0
- package/dist/membership/holder.d.ts +33 -0
- package/dist/membership/holder.d.ts.map +1 -0
- package/dist/membership/holder.js +929 -0
- package/dist/membership/holder.js.map +1 -0
- package/dist/membership.d.ts +123 -0
- package/dist/membership.d.ts.map +1 -0
- package/dist/membership.js +180 -0
- package/dist/membership.js.map +1 -0
- package/dist/message/holder.d.ts +49 -0
- package/dist/message/holder.d.ts.map +1 -0
- package/dist/message/holder.js +290 -0
- package/dist/message/holder.js.map +1 -0
- package/dist/message.d.ts +43 -0
- package/dist/message.d.ts.map +1 -0
- package/dist/message.js +51 -0
- package/dist/message.js.map +1 -0
- package/dist/ports.d.ts +237 -0
- package/dist/ports.d.ts.map +1 -0
- package/dist/ports.js +2 -0
- package/dist/ports.js.map +1 -0
- package/dist/profile.d.ts +56 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +193 -0
- package/dist/profile.js.map +1 -0
- package/dist/prompts.d.ts +14 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +69 -0
- package/dist/prompts.js.map +1 -0
- package/dist/receive.d.ts +134 -0
- package/dist/receive.d.ts.map +1 -0
- package/dist/receive.js +317 -0
- package/dist/receive.js.map +1 -0
- package/dist/results.d.ts +173 -0
- package/dist/results.d.ts.map +1 -0
- package/dist/results.js +21 -0
- package/dist/results.js.map +1 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +45 -38
- package/dist/schemas.js.map +1 -1
- package/dist/sha256.d.ts +3 -0
- package/dist/sha256.d.ts.map +1 -0
- package/dist/sha256.js +69 -0
- package/dist/sha256.js.map +1 -0
- package/dist/star.d.ts +31 -0
- package/dist/star.d.ts.map +1 -0
- package/dist/star.js +56 -0
- package/dist/star.js.map +1 -0
- package/dist/state-builder.d.ts +42 -0
- package/dist/state-builder.d.ts.map +1 -0
- package/dist/state-builder.js +100 -0
- package/dist/state-builder.js.map +1 -0
- package/dist/state.d.ts +914 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +37 -0
- package/dist/state.js.map +1 -0
- package/dist/store-contract.d.ts +11 -0
- package/dist/store-contract.d.ts.map +1 -0
- package/dist/store-contract.js +189 -0
- package/dist/store-contract.js.map +1 -0
- package/dist/store-memory.d.ts +8 -0
- package/dist/store-memory.d.ts.map +1 -0
- package/dist/store-memory.js +17 -0
- package/dist/store-memory.js.map +1 -0
- package/dist/testing.d.ts +22 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +21 -0
- package/dist/testing.js.map +1 -0
- package/dist/trust/continuity.d.ts +71 -0
- package/dist/trust/continuity.d.ts.map +1 -0
- package/dist/trust/continuity.js +1222 -0
- package/dist/trust/continuity.js.map +1 -0
- package/dist/trust/duties.d.ts +67 -0
- package/dist/trust/duties.d.ts.map +1 -0
- package/dist/trust/duties.js +179 -0
- package/dist/trust/duties.js.map +1 -0
- package/dist/trust/entries.d.ts +139 -0
- package/dist/trust/entries.d.ts.map +1 -0
- package/dist/trust/entries.js +795 -0
- package/dist/trust/entries.js.map +1 -0
- package/dist/trust/group-star.d.ts +43 -0
- package/dist/trust/group-star.d.ts.map +1 -0
- package/dist/trust/group-star.js +188 -0
- package/dist/trust/group-star.js.map +1 -0
- package/dist/trust/mapping.d.ts +56 -0
- package/dist/trust/mapping.d.ts.map +1 -0
- package/dist/trust/mapping.js +584 -0
- package/dist/trust/mapping.js.map +1 -0
- package/dist/trust/profile.d.ts +25 -0
- package/dist/trust/profile.d.ts.map +1 -0
- package/dist/trust/profile.js +249 -0
- package/dist/trust/profile.js.map +1 -0
- package/dist/trust/star.d.ts +208 -0
- package/dist/trust/star.d.ts.map +1 -0
- package/dist/trust/star.js +588 -0
- package/dist/trust/star.js.map +1 -0
- package/dist/trust/state.d.ts +83 -0
- package/dist/trust/state.d.ts.map +1 -0
- package/dist/trust/state.js +154 -0
- package/dist/trust/state.js.map +1 -0
- package/dist/util-freeze.d.ts +3 -0
- package/dist/util-freeze.d.ts.map +1 -0
- package/dist/util-freeze.js +11 -0
- package/dist/util-freeze.js.map +1 -0
- package/dist/views.d.ts +179 -0
- package/dist/views.d.ts.map +1 -0
- package/dist/views.js +286 -0
- package/dist/views.js.map +1 -0
- package/dist/visibility.d.ts +5 -5
- package/dist/visibility.d.ts.map +1 -1
- package/dist/visibility.js +22 -28
- package/dist/visibility.js.map +1 -1
- package/dist/wire.d.ts +218 -83
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js.map +1 -1
- package/package.json +60 -10
- package/schemas/holder-state-v1.schema.json +3880 -0
- package/schemas/holder-state-v2.schema.json +4123 -0
- package/dist/holder.d.ts.map +0 -1
- package/dist/holder.js.map +0 -1
- package/dist/probe/acks.d.ts +0 -27
- package/dist/probe/acks.d.ts.map +0 -1
- package/dist/probe/acks.js +0 -152
- package/dist/probe/acks.js.map +0 -1
- package/dist/probe/continuity.d.ts +0 -20
- package/dist/probe/continuity.d.ts.map +0 -1
- package/dist/probe/continuity.js +0 -805
- package/dist/probe/continuity.js.map +0 -1
- package/dist/probe/deps.d.ts +0 -61
- package/dist/probe/deps.d.ts.map +0 -1
- package/dist/probe/deps.js +0 -54
- package/dist/probe/deps.js.map +0 -1
- package/dist/probe/encounter.d.ts +0 -26
- package/dist/probe/encounter.d.ts.map +0 -1
- package/dist/probe/encounter.js +0 -938
- package/dist/probe/encounter.js.map +0 -1
- package/dist/probe/introduce.d.ts +0 -62
- package/dist/probe/introduce.d.ts.map +0 -1
- package/dist/probe/introduce.js +0 -306
- package/dist/probe/introduce.js.map +0 -1
- package/dist/probe/membership.d.ts +0 -96
- package/dist/probe/membership.d.ts.map +0 -1
- package/dist/probe/membership.js +0 -467
- package/dist/probe/membership.js.map +0 -1
- package/dist/probe/trust.d.ts +0 -156
- package/dist/probe/trust.d.ts.map +0 -1
- package/dist/probe/trust.js +0 -1233
- package/dist/probe/trust.js.map +0 -1
- package/dist/probe.d.ts +0 -7
- package/dist/probe.d.ts.map +0 -1
- package/dist/probe.js +0 -42
- package/dist/probe.js.map +0 -1
package/dist/carrier.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carrier.js","sourceRoot":"","sources":["../src/carrier.ts"],"names":[],"mappings":"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","sourcesContent":["// carrier — Delivery §4.4 + §5a: the carrier side of the port, as one\n// transport-agnostic state machine.\n//\n// What this module is: the executable form of the five guarantees, the\n// proof rule of §5a.3, the total binding lifecycle (unbound → live →\n// closing → released), the verdict sets with their normative evaluation\n// orders (s1–s6, r1–r5), the wind-up whose deadline IS the release, and\n// the binding tombstones with their normative eviction order.\n//\n// What it deliberately is NOT: a resource manager. A carrier's own\n// budgets are policy (the 0.65 scope re-cast) and enter through hooks —\n// and the CALL GRAPH enforces the guarantees: a request naming a held\n// binding never invokes the shared gate (guarantee 4), a below-floor\n// submission never reaches the cross-queue hooks (guarantee 5). What no\n// library can prevent is a policy wiring two hooks to one counter; such\n// a policy is a nonconformant carrier, and the port-review triage says\n// so out loud rather than claiming otherwise.\n//\n// Linearization (§4.4 atomicity): every public operation does its\n// asynchronous work (crypto) FIRST and then commits in one synchronous\n// block that re-reads state — the commit is the linearization point, no\n// await crosses it, and time-driven transitions are applied from the\n// operation's own `now` before it reads anything (so a late tick cannot\n// lend a released queue an afterlife).\n//\n// The clock is injected. Nothing here reads Date.now().\nimport { jcs } from './core.js'\nimport type { Json } from './core.js'\nimport { b64uOf, fromB64u, base58, fromBase58, sha } from './crypto.js'\nimport { validCarrierIdentifier } from './carrier-identity.js'\n\nconst S = globalThis.crypto.subtle\nconst te = new TextEncoder()\n\n// ── declared constants (guarantee 1: the declaration binds) ─────────────\nexport interface CarrierDeclaration {\n carrier: string // C, byte-exact (Identity §7a.2)\n orphanHorizonMs: number // [P7D, P365D]\n giveUpHorizonMs: number // [P1D, P90D]\n challengeLifetimeMs: number // [PT5S, PT5M]\n queueFloorBytes: number // [65536, maxQueueBytes]\n maxQueueBytes: number // [1048576, 1073741824]\n maxBindingTombstones: number // [1, 2^53−1]\n statusHorizonMs: number // [PT5S, PT5M]\n}\n\nconst DAY = 86_400_000\nconst DOMAINS: Array<[keyof CarrierDeclaration, number, number]> = [\n ['orphanHorizonMs', 7 * DAY, 365 * DAY],\n ['giveUpHorizonMs', 1 * DAY, 90 * DAY],\n ['challengeLifetimeMs', 5_000, 300_000],\n ['statusHorizonMs', 5_000, 300_000],\n ['maxQueueBytes', 1_048_576, 1_073_741_824],\n ['maxBindingTombstones', 1, Number.MAX_SAFE_INTEGER],\n]\n\n/** §11: an out-of-domain declaration REJECTS — it never half-applies. */\nexport function validateDeclaration (d: CarrierDeclaration): string[] {\n const errs: string[] = []\n if (!validCarrierIdentifier(d.carrier)) errs.push('carrier identifier violates Identity 7a.2')\n for (const [k, lo, hi] of DOMAINS) {\n const v = d[k] as number\n if (!Number.isSafeInteger(v) || v < lo || v > hi) errs.push(`${k} outside [${lo}, ${hi}]`)\n }\n if (!Number.isSafeInteger(d.queueFloorBytes) ||\n d.queueFloorBytes < 65_536 || d.queueFloorBytes > d.maxQueueBytes) {\n errs.push('queueFloorBytes outside [65536, maxQueueBytes]')\n }\n if (d.orphanHorizonMs < d.giveUpHorizonMs) errs.push('orphan-horizon < give-up-horizon')\n return errs\n}\n\n// the role key of the registry declaration — a role URI and never a\n// document type (round-44 B-1)\nexport const CARRIER_ROLE_URI = 'https://real-life.org/trust-tasks/delivery-carrier/0.1'\nexport const PROOF_V = 'rltp-carrier-proof/0.3'\n\n// ── policy hooks ────────────────────────────────────────────────────────\nexport interface CarrierPolicy {\n /** shared admission gate — the one unknown-address traffic competes\n * for. NEVER invoked for a request naming a held binding. */\n admitNew?: () => boolean\n /** per-binding gate for requests naming a HELD rkid (guarantee 4). */\n admitHeld?: (rkid: string) => boolean\n /** per-queue submission meter — the only resource hook reachable below\n * the floor (guarantee 5); DO-6 lives here. A duplicate charges it\n * like an admitted submission (§5a.5) and stores nothing. */\n meterQueue?: (rkid: string, bytes: number) => boolean\n /** global occupancy — s6, unreachable below the floor. */\n hasCapacity?: (bytes: number) => boolean\n /** room for one more binding — r4, never consulted for a held one. */\n hasBindingRoom?: () => boolean\n}\n\n// ── verdicts ────────────────────────────────────────────────────────────\nexport type RegistrationVerdict =\n | { verdict: 'registered' | 'registered(idempotent)' | 'rebound' }\n | { verdict: 'refused(malformed)' | 'refused(possession-failed)' }\n | { verdict: 'refused(stale-generation)', heldGeneration: number } // §5a.3: the disclosure\n | { verdict: 'registration-refused(capacity)' | 'refused(admission-resource)', retriable: true }\n\nexport type SessionVerdict =\n | { verdict: 'served' }\n | { verdict: 'refused(no-such-queue)' | 'refused(malformed)' | 'refused(possession-failed)' }\n | { verdict: 'refused(admission-resource)', retriable: true }\n\nexport type SubmissionVerdict =\n | { verdict: 'admitted' | 'duplicate' }\n | { verdict: 'refused(no-such-queue)' | 'refused(bounds)' }\n | { verdict: 'refused(admission-resource)' | 'refused(queue-saturated)' | 'refused(capacity)', retriable: true }\n\n// ── the proof object (§5a.3, wire 0.3) ──────────────────────────────────\nexport interface CarrierProof {\n v: string, type: string\n purpose: 'register' | 'rebind' | 'collect' | 'conclude'\n carrier: string, principal: string, rkid: string\n generation?: number\n principalChallenge: string\n addressChallenge?: string\n sig: string\n}\nconst REGISTRATION_FIELDS = new Set(['v', 'type', 'purpose', 'carrier', 'principal', 'rkid',\n 'generation', 'principalChallenge', 'addressChallenge', 'sig'])\nconst SESSION_FIELDS = new Set(['v', 'type', 'purpose', 'carrier', 'principal', 'rkid',\n 'principalChallenge', 'sig'])\n\n// canonical decimal spelling, checked on the RECEIVED bytes (§5a.3):\n// `1.0` and `1e0` parse and JCS-canonicalize to `1`, so the signature\n// verifies over them — only the lexical check catches the spelling.\nexport const canonicalGenerationSpelling = (raw: string): boolean =>\n /^[1-9][0-9]*$/.test(raw) && Number.isSafeInteger(Number(raw))\n\nconst canonicalB64u32 = (s: unknown): boolean => {\n if (typeof s !== 'string' || s.length !== 43) return false\n try { const b = fromB64u(s); return b.length === 32 && b64uOf(b) === s } catch { return false }\n}\n\n// decode-and-check: schema validity is not acceptance (§11)\nconst decodedEd = (did: unknown): Uint8Array | null => {\n if (typeof did !== 'string' || !did.startsWith('did:key:z')) return null\n const b = fromBase58(did.slice('did:key:z'.length))\n return b && b.length === 34 && b[0] === 0xed && b[1] === 0x01 ? b.subarray(2) : null\n}\nconst decodedX = (mk: unknown): Uint8Array | null => {\n if (typeof mk !== 'string' || mk[0] !== 'z') return null\n const b = fromBase58(mk.slice(1))\n return b && b.length === 34 && b[0] === 0xec && b[1] === 0x01 ? b.subarray(2) : null\n}\nconst cmpRkidBytes = (a: string, b: string): number => {\n const ka = decodedX(a); const kb = decodedX(b)\n if (!ka || !kb) return a < b ? -1 : 1\n for (let i = 0; i < 32; i++) if (ka[i] !== kb[i]) return ka[i]! - kb[i]!\n return 0\n}\nconst decodedSig = (zsig: unknown): Uint8Array | null => {\n if (typeof zsig !== 'string' || zsig[0] !== 'z') return null\n const b = fromBase58(zsig.slice(1))\n if (!b || b.length !== 64) return null\n return 'z' + base58(b) === zsig ? b : null\n}\n\n/** r1, the SYNTACTIC half only — no cryptography happens here, so a\n * request refused at r1 or r2 has cost the carrier no key operation\n * (guarantee 3). `rawGeneration` is REQUIRED for register/rebind: a\n * parsed number cannot carry its own spelling, and an adapter that\n * cannot supply the received bytes cannot claim the check (round-44\n * M-4 of the port review: optional was fail-open). */\nexport function checkProofShape (\n p: CarrierProof, expectedCarrier: string, rawGeneration?: string,\n): 'refused(malformed)' | null {\n if (typeof p !== 'object' || p === null) return 'refused(malformed)'\n if (p.v !== PROOF_V || p.type !== 'carrier-registration-proof') return 'refused(malformed)'\n if (!['register', 'rebind', 'collect', 'conclude'].includes(p.purpose)) return 'refused(malformed)'\n if (p.carrier !== expectedCarrier) return 'refused(malformed)'\n const sessionScoped = p.purpose === 'collect' || p.purpose === 'conclude'\n // the wire format is CLOSED: an extra field is not this artifact\n const allowed = sessionScoped ? SESSION_FIELDS : REGISTRATION_FIELDS\n for (const k of Object.keys(p)) if (!allowed.has(k)) return 'refused(malformed)'\n if (!decodedEd(p.principal) || !decodedX(p.rkid) || !decodedSig(p.sig)) return 'refused(malformed)'\n if (!canonicalB64u32(p.principalChallenge)) return 'refused(malformed)'\n if (sessionScoped) {\n if (p.generation !== undefined || p.addressChallenge !== undefined) return 'refused(malformed)'\n } else {\n if (!Number.isSafeInteger(p.generation) || (p.generation as number) < 1) return 'refused(malformed)'\n if (rawGeneration === undefined || !canonicalGenerationSpelling(rawGeneration) ||\n Number(rawGeneration) !== p.generation) return 'refused(malformed)'\n if (!canonicalB64u32(p.addressChallenge)) return 'refused(malformed)'\n }\n return null\n}\n\n/** the asymmetric half of r3 — called only past r1, r2 and the challenge\n * consumption, so one challenge buys at most one verification. */\nasync function verifySignature (p: CarrierProof): Promise<boolean> {\n const pub = decodedEd(p.principal)!; const sig = decodedSig(p.sig)!\n const { sig: _omit, ...signed } = p\n const key = await S.importKey('raw', pub as Uint8Array<ArrayBuffer>, { name: 'Ed25519' }, false, ['verify'])\n return S.verify({ name: 'Ed25519' }, key, sig as Uint8Array<ArrayBuffer>, te.encode(jcs(signed as unknown as Json)))\n}\n\n/** compatibility shim for the shape+signature question alone (tests,\n * tooling): stateless, no challenge semantics. */\nexport async function verifyProofShape (\n p: CarrierProof, expectedCarrier: string, rawGeneration?: string,\n): Promise<'refused(malformed)' | 'refused(possession-failed)' | null> {\n const sessionScoped = p?.purpose === 'collect' || p?.purpose === 'conclude'\n const raw = rawGeneration ?? (sessionScoped || p?.generation === undefined ? undefined : String(p.generation))\n const shape = checkProofShape(p, expectedCarrier, raw)\n if (shape) return shape\n return await verifySignature(p) ? null : 'refused(possession-failed)'\n}\n\n// ── envelope shape for submissions (§5, s2) ─────────────────────────────\n// A carrier is key-blind but not shape-blind: a submission is a Section-5\n// envelope whose rkid names the queue it is submitted to.\nconst canonicalB64uAny = (s: unknown): Uint8Array | null => {\n if (typeof s !== 'string' || s.length === 0) return null\n try { const b = fromB64u(s); return b64uOf(b) === s ? b : null } catch { return null }\n}\nexport function checkEnvelopeBytes (bytes: Uint8Array, rkid: string): boolean {\n let doc: unknown\n try { doc = JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(bytes)) } catch { return false }\n if (typeof doc !== 'object' || doc === null) return false\n const e = doc as Record<string, unknown>\n if (Object.keys(e).length !== 4) return false\n if (e.rkid !== rkid) return false\n const epk = canonicalB64uAny(e.epk); const nonce = canonicalB64uAny(e.nonce)\n const ct = canonicalB64uAny(e.ciphertext)\n // > 16: exactly the GCM tag is an EMPTY plaintext, which §5 forbids\n return !!epk && epk.length === 32 && !!nonce && nonce.length === 12 && !!ct && ct.length > 16\n}\n\n// ── state ───────────────────────────────────────────────────────────────\ninterface Deposit { bytes: Uint8Array, digest: string, admittedAt: number, lifeEndsAt: number }\ninterface Binding {\n state: 'live' | 'closing'\n generation: number\n principal: string\n deposits: Deposit[]\n lastCollectionAt: number\n deadline?: number // = closing instant + give-up-horizon; it does not move\n}\ninterface Tombstone { generation: number, releaseSeq: number }\n\nexport interface CarrierEvents {\n onRelease?: (rkid: string, tombstoneGeneration: number) => void\n onGiveUp?: (rkid: string, digest: string) => void\n onEvict?: (rkid: string) => void // a local hook; the port reports eviction to no one\n}\n\ninterface Challenge { rkid: string, addressValue: string | null, expiresAt: number }\n\nexport class Carrier {\n #decl: CarrierDeclaration\n /** the declaration as published — a copy; mutating it changes nothing\n * (port-review-2 M-3: the validated state must not be reachable from\n * outside the validated paths). */\n get decl (): CarrierDeclaration { return { ...this.#decl } }\n private policy: CarrierPolicy\n private events: CarrierEvents\n private bindings = new Map<string, Binding>()\n private tombstones = new Map<string, Tombstone>()\n private releaseSeq = 0\n private challenges = new Map<string, Challenge>()\n // the carrier's clock high-water mark: async completions commit at the\n // NEWEST time the carrier has seen, never at their caller's stale now\n // (port-review-2 M-1) — normative time is monotone\n private clock = 0\n\n constructor (decl: CarrierDeclaration, policy: CarrierPolicy = {}, events: CarrierEvents = {}) {\n const errs = validateDeclaration(decl)\n if (errs.length) throw new Error(`declaration rejects (§11): ${errs.join('; ')}`)\n this.#decl = { ...decl }; this.policy = policy; this.events = events\n }\n\n // ── time (§5a.9): transitions fire at their NORMATIVE instants ───────\n // A late tick applies them retroactively — the closing instant is\n // lastCollection + orphan-horizon and the deadline is that + give-up,\n // never \"whenever tick happened to run\" (port-review B-5). Every\n // public operation advances time to its own `now` before reading, so\n // the port never serves from a state the clock has already ended.\n private advance (rawNow: number): void {\n // fail-closed time (port-review-4 M-3): NaN would poison the\n // high-water mark forever, Infinity would fire every deadline at once\n if (!Number.isFinite(rawNow) || rawNow < 0) throw new Error('now must be a finite non-negative instant')\n this.clock = Math.max(this.clock, rawNow)\n const now = this.clock\n for (const [rkid, b] of this.bindings) {\n if (b.state === 'live') {\n // give-up: a deposit's life ends at its own horizon (§5a.8 —\n // carrier-side storage release; the sender learns through its\n // adapter's ordinary path, never through a new verdict)\n for (const d of b.deposits.filter((d) => now >= d.lifeEndsAt)) this.events.onGiveUp?.(rkid, d.digest)\n b.deposits = b.deposits.filter((d) => now < d.lifeEndsAt)\n const closingAt = b.lastCollectionAt + this.#decl.orphanHorizonMs\n if (now >= closingAt) {\n b.state = 'closing'\n b.deadline = closingAt + this.#decl.giveUpHorizonMs\n for (const d of b.deposits) d.lifeEndsAt = Math.min(d.lifeEndsAt, b.deadline)\n }\n }\n }\n // releases due at this advance, ordered by their NORMATIVE instants\n // (port-review-4 B-2: visit order is Map order, and a late tick made\n // the younger release evict as if it were the older one)\n const due: Array<{ rkid: string, b: Binding }> = []\n for (const [rkid, b] of this.bindings) {\n if (b.state === 'closing' && now >= (b.deadline as number)) due.push({ rkid, b })\n }\n due.sort((x, y) => (x.b.deadline! - y.b.deadline!) || cmpRkidBytes(x.rkid, y.rkid))\n for (const { rkid, b } of due) {\n // the deadline IS the release — one transition (round-43 B-1)\n for (const d of b.deposits) this.events.onGiveUp?.(rkid, d.digest)\n this.bindings.delete(rkid)\n this.installTombstone(rkid, b.generation, b.deadline as number)\n this.events.onRelease?.(rkid, b.generation)\n }\n for (const [id, ch] of this.challenges) if (now >= ch.expiresAt) this.challenges.delete(id)\n this.pendingSeqInstant = null\n }\n tick (now: number): void { this.advance(now) }\n\n // ── challenges (§5a.3) ───────────────────────────────────────────────\n /** The gated challenge entry — guarantee 3 BY CONSTRUCTION\n * (port-review-3 M-3): the admission gate runs INSIDE, before any\n * entropy is drawn, so a refused request costs neither randomness nor\n * sealing. `draw` is invoked only past the gate; its `addressValue`\n * (for registration challenges) is the value the adapter will seal to\n * the rkid — the carrier remembers it and a proof must return exactly\n * it. Every challenge is BOUND to its rkid (port-review-3 B-1: a\n * null-rkid challenge disabled the address proof).\n * Returns null when the gate refuses — retriable, guarantee 2. */\n issueChallenge (\n now: number, rkid: string,\n draw: () => { entropy: Uint8Array, addressValue?: string },\n ): string | null {\n this.advance(now)\n // syntax BEFORE policy and draw (port-review-5 B-1): a syntactically\n // impossible address buys neither a gate consultation nor a single\n // random byte — §5a.3's order is syntax → admission → randomness\n if (!decodedX(rkid)) throw new Error('malformed rkid — refuse before any work (5a.3)')\n const held = this.bindings.has(rkid)\n const admitted = held ? (this.policy.admitHeld?.(rkid) ?? true) : (this.policy.admitNew?.() ?? true)\n if (!admitted) return null\n const { entropy, addressValue } = draw()\n if (entropy.length !== 32) throw new Error('challenge entropy is 32 bytes')\n const value = b64uOf(entropy)\n this.challenges.set(value, {\n rkid, addressValue: addressValue ?? null,\n expiresAt: this.clock + this.#decl.challengeLifetimeMs, // M-2: the monotone clock, never a stale now\n })\n return value\n }\n\n /** consume-first (§5a.3): the first attempt takes the challenge before\n * anything is verified; expiry and rkid binding are checked HERE, so a\n * stale or transplanted challenge dies without buying a verification. */\n private consume (value: string, rkid: string, now: number): Challenge | null {\n const ch = this.challenges.get(value)\n this.challenges.delete(value)\n if (!ch || Math.max(now, this.clock) >= ch.expiresAt) return null\n if (ch.rkid !== rkid) return null // bound, always (B-1)\n return ch\n }\n\n // ── registration / rebind: r1–r5 (§5a.3, rounds 43/44) ───────────────\n async register (proof: CarrierProof, opts: { now: number, rawGeneration: string }): Promise<RegistrationVerdict> {\n // SNAPSHOT at entry (port-review-4 B-1): the caller's object stays\n // the caller's — what was verified is what commits, whatever the\n // caller mutates while the crypto runs\n const p = { ...proof }\n this.advance(opts.now)\n // r1 — syntax and canonical encodings; no crypto has happened yet.\n // The PURPOSE binds the operation (port-review-2 B-2): a session\n // proof at register() is not this artifact, whatever it signs.\n if (p?.purpose !== 'register' && p?.purpose !== 'rebind') return { verdict: 'refused(malformed)' }\n if (checkProofShape(p, this.#decl.carrier, opts.rawGeneration)) return { verdict: 'refused(malformed)' }\n const heldAtGate = this.bindings.has(p.rkid)\n // r2 — the carrier's own admission metering, subject to guarantee 4:\n // a held binding's request has its own gate (round-44 B-2)\n const admitted = heldAtGate ? (this.policy.admitHeld?.(p.rkid) ?? true) : (this.policy.admitNew?.() ?? true)\n if (!admitted) return { verdict: 'refused(admission-resource)', retriable: true }\n // r3 — consume, then verify: the challenge is taken by this attempt\n // before the response is verified, checked for expiry and rkid\n // binding at the same instant (port-review B-1/B-2)\n const ch = this.consume(p.principalChallenge, p.rkid, opts.now)\n if (!ch) return { verdict: 'refused(possession-failed)' }\n // fail-closed (port-review-2 B-1): a challenge issued WITHOUT a\n // sealed address value cannot prove address possession — it refuses,\n // it never waves through\n if (ch.addressValue === null || p.addressChallenge !== ch.addressValue) {\n return { verdict: 'refused(possession-failed)' }\n }\n if (!await verifySignature(p)) return { verdict: 'refused(possession-failed)' }\n // ── the commit block: synchronous from here — the linearization\n // point of §4.4. State is RE-read; no await crosses this line.\n this.advance(opts.now)\n const held = this.bindings.get(p.rkid)\n // r2, re-established (port-review-3 B-3): the gate CLASS (held vs\n // new) may have changed while the crypto ran — a binding that\n // released mid-verify makes this a NEW-binding request, and it must\n // pass the gate a new binding passes, in this same sync block\n if ((held !== undefined) !== heldAtGate) {\n const readmit = held ? (this.policy.admitHeld?.(p.rkid) ?? true) : (this.policy.admitNew?.() ?? true)\n if (!readmit) return { verdict: 'refused(admission-resource)', retriable: true }\n }\n // r4 — capacity: only a transition that creates a binding consults it\n if (!held && !(this.policy.hasBindingRoom?.() ?? true)) {\n return { verdict: 'registration-refused(capacity)', retriable: true }\n }\n // r5 — the state table\n const g = p.generation as number\n const tomb = this.tombstones.get(p.rkid)\n if (held) {\n if (g > held.generation) {\n held.generation = g; held.principal = p.principal\n this.reopen(held, this.clock)\n return { verdict: 'rebound' }\n }\n if (g === held.generation && p.principal === held.principal) {\n this.reopen(held, this.clock)\n return { verdict: 'registered(idempotent)' }\n }\n return { verdict: 'refused(stale-generation)', heldGeneration: held.generation }\n }\n if (tomb) {\n if (g > tomb.generation) {\n this.tombstones.delete(p.rkid) // consumed\n this.bindings.set(p.rkid, this.freshBinding(g, p.principal, this.clock))\n return { verdict: 'registered' }\n }\n return { verdict: 'refused(stale-generation)', heldGeneration: tomb.generation }\n }\n this.bindings.set(p.rkid, this.freshBinding(g, p.principal, this.clock))\n return { verdict: 'registered' }\n }\n\n private freshBinding (generation: number, principal: string, now: number): Binding {\n return { state: 'live', generation, principal, deposits: [], lastCollectionAt: now }\n }\n private reopen (b: Binding, now: number): void {\n if (b.state === 'closing') {\n b.state = 'live'; b.deadline = undefined\n // the return ends the wind-up: deposits revert to their own\n // admission-dated horizons (§5a.9)\n for (const d of b.deposits) d.lifeEndsAt = d.admittedAt + this.#decl.giveUpHorizonMs\n }\n b.lastCollectionAt = now\n }\n\n // ── collection / conclusion (§5a.3/5a.7/5a.8) ────────────────────────\n // purpose is part of the signed bytes AND of the dispatch: a proof for\n // one operation is not a proof for the other (port-review B-3).\n async collect (proof: CarrierProof, opts: { now: number }): Promise<SessionVerdict & { deposits?: Array<{ bytes: Uint8Array, digest: string }> }> {\n const p = { ...proof }\n const s = await this.session(p, 'collect', opts.now)\n if (s) return s\n const b = this.bindings.get(p.rkid)\n if (!b || b.principal !== p.principal) return { verdict: 'refused(no-such-queue)' }\n b.lastCollectionAt = this.clock\n return { verdict: 'served', deposits: b.deposits.map((d) => ({ bytes: d.bytes.slice(), digest: d.digest })) }\n }\n\n async conclude (proof: CarrierProof, digest: string, opts: { now: number }): Promise<SessionVerdict> {\n const p = { ...proof }\n const s = await this.session(p, 'conclude', opts.now)\n if (s) return s\n const b = this.bindings.get(p.rkid)\n if (!b || b.principal !== p.principal) return { verdict: 'refused(no-such-queue)' }\n b.deposits = b.deposits.filter((d) => d.digest !== digest)\n // deliberately NOT lastCollectionAt: orphan-expiry counts collections\n // (§5a.9), and a principal must not keep a never-collected queue out\n // of its wind-up by concluding (port-review-2 M-2)\n return { verdict: 'served' }\n }\n\n private async session (proofArg: CarrierProof, expected: 'collect' | 'conclude', now: number): Promise<SessionVerdict | null> {\n const p = { ...proofArg }\n this.advance(now)\n if (p.purpose !== expected) return { verdict: 'refused(malformed)' }\n if (checkProofShape(p, this.#decl.carrier)) return { verdict: 'refused(malformed)' }\n const held = this.bindings.get(p.rkid)\n const admitted = held ? (this.policy.admitHeld?.(p.rkid) ?? true) : (this.policy.admitNew?.() ?? true)\n if (!admitted) return { verdict: 'refused(admission-resource)', retriable: true }\n const ch = this.consume(p.principalChallenge, p.rkid, now)\n if (!ch) return { verdict: 'refused(possession-failed)' }\n if (!await verifySignature(p)) return { verdict: 'refused(possession-failed)' }\n // commit side re-reads (the caller checks binding + principal after\n // this returns null, synchronously)\n this.advance(now)\n if (!this.bindings.has(p.rkid)) return { verdict: 'refused(no-such-queue)' }\n return null\n }\n\n // ── submission: s1–s6 (§5a.5) ────────────────────────────────────────\n async submit (rkid: string, callerBytes: Uint8Array, opts: { now: number }): Promise<SubmissionVerdict> {\n // SNAPSHOT at entry (port-review-4 M-1/M-2): the bytes are copied\n // before anything reads them, and the declaration is pinned for the\n // whole operation — a concurrent revision governs the NEXT\n // submission, never one already running\n const bytes = callerBytes.slice()\n const decl = this.#decl\n this.advance(opts.now)\n // s1 — queue lookup FIRST: no hashing for an address the carrier\n // does not hold (port-review-2 M-4 — s3 work ran before s1/s2 and\n // let an unauthenticated blob buy a full SHA pass)\n if (!this.bindings.has(rkid)) return { verdict: 'refused(no-such-queue)' }\n // s2 — shape and size: a Section-5 envelope naming this queue,\n // within declared bounds\n if (bytes.length > decl.maxQueueBytes || !checkEnvelopeBytes(bytes, rkid)) {\n return { verdict: 'refused(bounds)' }\n }\n // s3 needs the digest — hash now, then RE-read state (the await may\n // have crossed a deadline; the commit block below is synchronous)\n const digest = b64uOf(await sha(bytes))\n this.advance(opts.now)\n const b = this.bindings.get(rkid)\n if (!b) return { verdict: 'refused(no-such-queue)' }\n // s3 — byte-identity. The digest indexes; the BYTES decide (M-6).\n const same = b.deposits.find((d) => d.digest === digest &&\n d.bytes.length === bytes.length && d.bytes.every((x, i) => x === bytes[i]))\n if (same) {\n // §5a.5: a duplicate consumes admission work exactly like an\n // admitted submission — and stores nothing\n this.policy.meterQueue?.(rkid, bytes.length)\n return { verdict: 'duplicate' }\n }\n const occupancy = b.deposits.reduce((a, d) => a + d.bytes.length, 0) + bytes.length\n const withinFloor = occupancy <= decl.queueFloorBytes\n // s4 — the queue's own meter (below the floor: the only one, g5)\n if (!(this.policy.meterQueue?.(rkid, bytes.length) ?? true)) {\n return { verdict: 'refused(admission-resource)', retriable: true }\n }\n if (!withinFloor) {\n // s5 — the queue's own bound\n if (occupancy > decl.maxQueueBytes) return { verdict: 'refused(queue-saturated)', retriable: true }\n // s6 — global occupancy, unreachable below the floor\n if (!(this.policy.hasCapacity?.(bytes.length) ?? true)) {\n return { verdict: 'refused(capacity)', retriable: true }\n }\n }\n const lifeEndsAt = b.state === 'closing' && b.deadline !== undefined\n ? b.deadline // inherits the remaining time\n : this.clock + decl.giveUpHorizonMs\n b.deposits.push({ bytes, digest, admittedAt: this.clock, lifeEndsAt })\n return { verdict: 'admitted' }\n }\n\n // ── tombstones (§5a.3): normative order, bookkeeping-free ────────────\n // Releases that fall on the SAME normative instant share one release\n // rank, so the bytewise tie-break genuinely decides between them\n // (port-review M-7) — the advance() loop batches them per call.\n private pendingSeqInstant: { instant: number, seq: number } | null = null\n private installTombstone (rkid: string, generation: number, releasedAt: number): void {\n if (this.pendingSeqInstant?.instant !== releasedAt) {\n this.pendingSeqInstant = { instant: releasedAt, seq: ++this.releaseSeq }\n }\n this.tombstones.set(rkid, { generation, releaseSeq: this.pendingSeqInstant.seq })\n this.trimTombstones(this.#decl.maxBindingTombstones)\n }\n private trimTombstones (bound: number): void {\n while (this.tombstones.size > bound) {\n const victim = [...this.tombstones.entries()].sort((a, b) =>\n (a[1].releaseSeq - b[1].releaseSeq) || cmpRkidBytes(a[0], b[0]))[0][0]\n this.tombstones.delete(victim)\n this.events.onEvict?.(victim)\n }\n }\n /** guarantee 1: the declaration binds, and a revision is itself\n * validated; a lowered tombstone bound trims in the same step\n * (round-45 B-3 — standing state is not a running act). */\n reviseDeclaration (next: Partial<CarrierDeclaration>): void {\n // C is the carrier's IDENTITY, not an operational constant: every\n // principal is derived from it (Identity §7a.4), so \"the same\n // carrier under a new C\" is a contradiction — a new C is a new\n // carrier with no bindings (port-review-3 B-2)\n if (next.carrier !== undefined && next.carrier !== this.#decl.carrier) {\n throw new Error('the carrier identifier is not revisable — a different C is a different carrier (7a.4)')\n }\n const revised = { ...this.#decl, ...next }\n const errs = validateDeclaration(revised)\n if (errs.length) throw new Error(`revision rejects (§11): ${errs.join('; ')}`)\n this.#decl = revised\n this.trimTombstones(revised.maxBindingTombstones)\n }\n\n // ── introspection (tests and adapters; not port surface) ─────────────\n stateOf (rkid: string): 'unbound' | 'live' | 'closing' | 'released' {\n const b = this.bindings.get(rkid)\n if (b) return b.state\n return this.tombstones.has(rkid) ? 'released' : 'unbound'\n }\n tombstoneOf (rkid: string): number | null { return this.tombstones.get(rkid)?.generation ?? null }\n bindingOf (rkid: string): { generation: number, principal: string, deposits: number, deadline?: number } | null {\n const b = this.bindings.get(rkid)\n return b ? { generation: b.generation, principal: b.principal, deposits: b.deposits.length, deadline: b.deadline } : null\n }\n tombstoneLabels (): string[] { return [...this.tombstones.keys()] }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"carrier.js","sourceRoot":"","sources":["../src/carrier.ts"],"names":[],"mappings":"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","sourcesContent":["// carrier — Delivery §4.4 + §5a: the carrier side of the port, as one\n// transport-agnostic state machine.\n//\n// What this module is: the executable form of the five guarantees, the\n// proof rule of §5a.3, the total binding lifecycle (unbound → live →\n// closing → released), the verdict sets with their normative evaluation\n// orders (s1–s6, r1–r5), the wind-up whose deadline IS the release, and\n// the binding tombstones with their normative eviction order.\n//\n// What it deliberately is NOT: a resource manager. A carrier's own\n// budgets are policy (the 0.65 scope re-cast) and enter through hooks —\n// and the CALL GRAPH enforces the guarantees: a request naming a held\n// binding never invokes the shared gate (guarantee 4), a below-floor\n// submission never reaches the cross-queue hooks (guarantee 5). What no\n// library can prevent is a policy wiring two hooks to one counter; such\n// a policy is a nonconformant carrier, and the port-review triage says\n// so out loud rather than claiming otherwise.\n//\n// Linearization (§4.4 atomicity): every public operation does its\n// asynchronous work (crypto) FIRST and then commits in one synchronous\n// block that re-reads state — the commit is the linearization point, no\n// await crosses it, and time-driven transitions are applied from the\n// operation's own `now` before it reads anything (so a late tick cannot\n// lend a released queue an afterlife).\n//\n// The clock is injected. Nothing here reads Date.now().\nimport { jcs } from './core.js'\nimport type { Json } from './core.js'\nimport { b64uOf, fromB64u, base58, fromBase58, sha } from './crypto.js'\nimport { validCarrierIdentifier } from './carrier-identity.js'\nimport { platformSubtle } from './crypto.js'\n\nconst S = platformSubtle\nconst te = new TextEncoder()\n\n// ── declared constants (guarantee 1: the declaration binds) ─────────────\nexport interface CarrierDeclaration {\n carrier: string // C, byte-exact (Identity §7a.2)\n orphanHorizonMs: number // [P7D, P365D]\n giveUpHorizonMs: number // [P1D, P90D]\n challengeLifetimeMs: number // [PT5S, PT5M]\n queueFloorBytes: number // [65536, maxQueueBytes]\n maxQueueBytes: number // [1048576, 1073741824]\n maxBindingTombstones: number // [1, 2^53−1]\n statusHorizonMs: number // [PT5S, PT5M]\n}\n\nconst DAY = 86_400_000\nconst DOMAINS: Array<[keyof CarrierDeclaration, number, number]> = [\n ['orphanHorizonMs', 7 * DAY, 365 * DAY],\n ['giveUpHorizonMs', 1 * DAY, 90 * DAY],\n ['challengeLifetimeMs', 5_000, 300_000],\n ['statusHorizonMs', 5_000, 300_000],\n ['maxQueueBytes', 1_048_576, 1_073_741_824],\n ['maxBindingTombstones', 1, Number.MAX_SAFE_INTEGER],\n]\n\n/** §11: an out-of-domain declaration REJECTS — it never half-applies. */\nexport function validateDeclaration (d: CarrierDeclaration): string[] {\n const errs: string[] = []\n if (!validCarrierIdentifier(d.carrier)) errs.push('carrier identifier violates Identity 7a.2')\n for (const [k, lo, hi] of DOMAINS) {\n const v = d[k] as number\n if (!Number.isSafeInteger(v) || v < lo || v > hi) errs.push(`${k} outside [${lo}, ${hi}]`)\n }\n if (!Number.isSafeInteger(d.queueFloorBytes) ||\n d.queueFloorBytes < 65_536 || d.queueFloorBytes > d.maxQueueBytes) {\n errs.push('queueFloorBytes outside [65536, maxQueueBytes]')\n }\n if (d.orphanHorizonMs < d.giveUpHorizonMs) errs.push('orphan-horizon < give-up-horizon')\n return errs\n}\n\n// the role key of the registry declaration — a role URI and never a\n// document type (round-44 B-1)\nexport const CARRIER_ROLE_URI = 'https://real-life.org/trust-tasks/delivery-carrier/0.1'\nexport const PROOF_V = 'rltp-carrier-proof/0.3'\n\n// ── policy hooks ────────────────────────────────────────────────────────\nexport interface CarrierPolicy {\n /** shared admission gate — the one unknown-address traffic competes\n * for. NEVER invoked for a request naming a held binding. */\n admitNew?: () => boolean\n /** per-binding gate for requests naming a HELD rkid (guarantee 4). */\n admitHeld?: (rkid: string) => boolean\n /** per-queue submission meter — the only resource hook reachable below\n * the floor (guarantee 5); DO-6 lives here. A duplicate charges it\n * like an admitted submission (§5a.5) and stores nothing. */\n meterQueue?: (rkid: string, bytes: number) => boolean\n /** global occupancy — s6, unreachable below the floor. */\n hasCapacity?: (bytes: number) => boolean\n /** room for one more binding — r4, never consulted for a held one. */\n hasBindingRoom?: () => boolean\n}\n\n// ── verdicts ────────────────────────────────────────────────────────────\nexport type RegistrationVerdict =\n | { verdict: 'registered' | 'registered(idempotent)' | 'rebound' }\n | { verdict: 'refused(malformed)' | 'refused(possession-failed)' }\n | { verdict: 'refused(stale-generation)', heldGeneration: number } // §5a.3: the disclosure\n | { verdict: 'registration-refused(capacity)' | 'refused(admission-resource)', retriable: true }\n\nexport type SessionVerdict =\n | { verdict: 'served' }\n | { verdict: 'refused(no-such-queue)' | 'refused(malformed)' | 'refused(possession-failed)' }\n | { verdict: 'refused(admission-resource)', retriable: true }\n\nexport type SubmissionVerdict =\n | { verdict: 'admitted' | 'duplicate' }\n | { verdict: 'refused(no-such-queue)' | 'refused(bounds)' }\n | { verdict: 'refused(admission-resource)' | 'refused(queue-saturated)' | 'refused(capacity)', retriable: true }\n\n// ── the proof object (§5a.3, wire 0.3) ──────────────────────────────────\nexport interface CarrierProof {\n v: string, type: string\n purpose: 'register' | 'rebind' | 'collect' | 'conclude'\n carrier: string, principal: string, rkid: string\n generation?: number\n principalChallenge: string\n addressChallenge?: string\n sig: string\n}\nconst REGISTRATION_FIELDS = new Set(['v', 'type', 'purpose', 'carrier', 'principal', 'rkid',\n 'generation', 'principalChallenge', 'addressChallenge', 'sig'])\nconst SESSION_FIELDS = new Set(['v', 'type', 'purpose', 'carrier', 'principal', 'rkid',\n 'principalChallenge', 'sig'])\n\n// canonical decimal spelling, checked on the RECEIVED bytes (§5a.3):\n// `1.0` and `1e0` parse and JCS-canonicalize to `1`, so the signature\n// verifies over them — only the lexical check catches the spelling.\nexport const canonicalGenerationSpelling = (raw: string): boolean =>\n /^[1-9][0-9]*$/.test(raw) && Number.isSafeInteger(Number(raw))\n\nconst canonicalB64u32 = (s: unknown): boolean => {\n if (typeof s !== 'string' || s.length !== 43) return false\n try { const b = fromB64u(s); return b.length === 32 && b64uOf(b) === s } catch { return false }\n}\n\n// decode-and-check: schema validity is not acceptance (§11)\nconst decodedEd = (did: unknown): Uint8Array | null => {\n if (typeof did !== 'string' || !did.startsWith('did:key:z')) return null\n const b = fromBase58(did.slice('did:key:z'.length))\n return b && b.length === 34 && b[0] === 0xed && b[1] === 0x01 ? b.subarray(2) : null\n}\nconst decodedX = (mk: unknown): Uint8Array | null => {\n if (typeof mk !== 'string' || mk[0] !== 'z') return null\n const b = fromBase58(mk.slice(1))\n return b && b.length === 34 && b[0] === 0xec && b[1] === 0x01 ? b.subarray(2) : null\n}\nconst cmpRkidBytes = (a: string, b: string): number => {\n const ka = decodedX(a); const kb = decodedX(b)\n if (!ka || !kb) return a < b ? -1 : 1\n for (let i = 0; i < 32; i++) if (ka[i] !== kb[i]) return ka[i]! - kb[i]!\n return 0\n}\nconst decodedSig = (zsig: unknown): Uint8Array | null => {\n if (typeof zsig !== 'string' || zsig[0] !== 'z') return null\n const b = fromBase58(zsig.slice(1))\n if (!b || b.length !== 64) return null\n return 'z' + base58(b) === zsig ? b : null\n}\n\n/** r1, the SYNTACTIC half only — no cryptography happens here, so a\n * request refused at r1 or r2 has cost the carrier no key operation\n * (guarantee 3). `rawGeneration` is REQUIRED for register/rebind: a\n * parsed number cannot carry its own spelling, and an adapter that\n * cannot supply the received bytes cannot claim the check (round-44\n * M-4 of the port review: optional was fail-open). */\nexport function checkProofShape (\n p: CarrierProof, expectedCarrier: string, rawGeneration?: string,\n): 'refused(malformed)' | null {\n if (typeof p !== 'object' || p === null) return 'refused(malformed)'\n if (p.v !== PROOF_V || p.type !== 'carrier-registration-proof') return 'refused(malformed)'\n if (!['register', 'rebind', 'collect', 'conclude'].includes(p.purpose)) return 'refused(malformed)'\n if (p.carrier !== expectedCarrier) return 'refused(malformed)'\n const sessionScoped = p.purpose === 'collect' || p.purpose === 'conclude'\n // the wire format is CLOSED: an extra field is not this artifact\n const allowed = sessionScoped ? SESSION_FIELDS : REGISTRATION_FIELDS\n for (const k of Object.keys(p)) if (!allowed.has(k)) return 'refused(malformed)'\n if (!decodedEd(p.principal) || !decodedX(p.rkid) || !decodedSig(p.sig)) return 'refused(malformed)'\n if (!canonicalB64u32(p.principalChallenge)) return 'refused(malformed)'\n if (sessionScoped) {\n if (p.generation !== undefined || p.addressChallenge !== undefined) return 'refused(malformed)'\n } else {\n if (!Number.isSafeInteger(p.generation) || (p.generation as number) < 1) return 'refused(malformed)'\n if (rawGeneration === undefined || !canonicalGenerationSpelling(rawGeneration) ||\n Number(rawGeneration) !== p.generation) return 'refused(malformed)'\n if (!canonicalB64u32(p.addressChallenge)) return 'refused(malformed)'\n }\n return null\n}\n\n/** the asymmetric half of r3 — called only past r1, r2 and the challenge\n * consumption, so one challenge buys at most one verification. */\nasync function verifySignature (p: CarrierProof): Promise<boolean> {\n const pub = decodedEd(p.principal)!; const sig = decodedSig(p.sig)!\n const { sig: _omit, ...signed } = p\n const key = await S().importKey('raw', pub as Uint8Array<ArrayBuffer>, { name: 'Ed25519' }, false, ['verify'])\n return S().verify({ name: 'Ed25519' }, key, sig as Uint8Array<ArrayBuffer>, te.encode(jcs(signed as unknown as Json)))\n}\n\n/** compatibility shim for the shape+signature question alone (tests,\n * tooling): stateless, no challenge semantics. */\nexport async function verifyProofShape (\n p: CarrierProof, expectedCarrier: string, rawGeneration?: string,\n): Promise<'refused(malformed)' | 'refused(possession-failed)' | null> {\n const sessionScoped = p?.purpose === 'collect' || p?.purpose === 'conclude'\n const raw = rawGeneration ?? (sessionScoped || p?.generation === undefined ? undefined : String(p.generation))\n const shape = checkProofShape(p, expectedCarrier, raw)\n if (shape) return shape\n return await verifySignature(p) ? null : 'refused(possession-failed)'\n}\n\n// ── envelope shape for submissions (§5, s2) ─────────────────────────────\n// A carrier is key-blind but not shape-blind: a submission is a Section-5\n// envelope whose rkid names the queue it is submitted to.\nconst canonicalB64uAny = (s: unknown): Uint8Array | null => {\n if (typeof s !== 'string' || s.length === 0) return null\n try { const b = fromB64u(s); return b64uOf(b) === s ? b : null } catch { return null }\n}\nexport function checkEnvelopeBytes (bytes: Uint8Array, rkid: string): boolean {\n let doc: unknown\n try { doc = JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(bytes)) } catch { return false }\n if (typeof doc !== 'object' || doc === null) return false\n const e = doc as Record<string, unknown>\n if (Object.keys(e).length !== 4) return false\n if (e.rkid !== rkid) return false\n const epk = canonicalB64uAny(e.epk); const nonce = canonicalB64uAny(e.nonce)\n const ct = canonicalB64uAny(e.ciphertext)\n // > 16: exactly the GCM tag is an EMPTY plaintext, which §5 forbids\n return !!epk && epk.length === 32 && !!nonce && nonce.length === 12 && !!ct && ct.length > 16\n}\n\n// ── state ───────────────────────────────────────────────────────────────\ninterface Deposit { bytes: Uint8Array, digest: string, admittedAt: number, lifeEndsAt: number }\ninterface Binding {\n state: 'live' | 'closing'\n generation: number\n principal: string\n deposits: Deposit[]\n lastCollectionAt: number\n deadline?: number // = closing instant + give-up-horizon; it does not move\n}\ninterface Tombstone { generation: number, releaseSeq: number }\n\nexport interface CarrierEvents {\n onRelease?: (rkid: string, tombstoneGeneration: number) => void\n onGiveUp?: (rkid: string, digest: string) => void\n onEvict?: (rkid: string) => void // a local hook; the port reports eviction to no one\n}\n\ninterface Challenge { rkid: string, addressValue: string | null, expiresAt: number }\n\nexport class Carrier {\n #decl: CarrierDeclaration\n /** the declaration as published — a copy; mutating it changes nothing\n * (port-review-2 M-3: the validated state must not be reachable from\n * outside the validated paths). */\n get decl (): CarrierDeclaration { return { ...this.#decl } }\n private policy: CarrierPolicy\n private events: CarrierEvents\n private bindings = new Map<string, Binding>()\n private tombstones = new Map<string, Tombstone>()\n private releaseSeq = 0\n private challenges = new Map<string, Challenge>()\n // the carrier's clock high-water mark: async completions commit at the\n // NEWEST time the carrier has seen, never at their caller's stale now\n // (port-review-2 M-1) — normative time is monotone\n private clock = 0\n\n constructor (decl: CarrierDeclaration, policy: CarrierPolicy = {}, events: CarrierEvents = {}) {\n const errs = validateDeclaration(decl)\n if (errs.length) throw new Error(`declaration rejects (§11): ${errs.join('; ')}`)\n this.#decl = { ...decl }; this.policy = policy; this.events = events\n }\n\n // ── time (§5a.9): transitions fire at their NORMATIVE instants ───────\n // A late tick applies them retroactively — the closing instant is\n // lastCollection + orphan-horizon and the deadline is that + give-up,\n // never \"whenever tick happened to run\" (port-review B-5). Every\n // public operation advances time to its own `now` before reading, so\n // the port never serves from a state the clock has already ended.\n private advance (rawNow: number): void {\n // fail-closed time (port-review-4 M-3): NaN would poison the\n // high-water mark forever, Infinity would fire every deadline at once\n if (!Number.isFinite(rawNow) || rawNow < 0) throw new Error('now must be a finite non-negative instant')\n this.clock = Math.max(this.clock, rawNow)\n const now = this.clock\n for (const [rkid, b] of this.bindings) {\n if (b.state === 'live') {\n // give-up: a deposit's life ends at its own horizon (§5a.8 —\n // carrier-side storage release; the sender learns through its\n // adapter's ordinary path, never through a new verdict)\n for (const d of b.deposits.filter((d) => now >= d.lifeEndsAt)) this.events.onGiveUp?.(rkid, d.digest)\n b.deposits = b.deposits.filter((d) => now < d.lifeEndsAt)\n const closingAt = b.lastCollectionAt + this.#decl.orphanHorizonMs\n if (now >= closingAt) {\n b.state = 'closing'\n b.deadline = closingAt + this.#decl.giveUpHorizonMs\n for (const d of b.deposits) d.lifeEndsAt = Math.min(d.lifeEndsAt, b.deadline)\n }\n }\n }\n // releases due at this advance, ordered by their NORMATIVE instants\n // (port-review-4 B-2: visit order is Map order, and a late tick made\n // the younger release evict as if it were the older one)\n const due: Array<{ rkid: string, b: Binding }> = []\n for (const [rkid, b] of this.bindings) {\n if (b.state === 'closing' && now >= (b.deadline as number)) due.push({ rkid, b })\n }\n due.sort((x, y) => (x.b.deadline! - y.b.deadline!) || cmpRkidBytes(x.rkid, y.rkid))\n for (const { rkid, b } of due) {\n // the deadline IS the release — one transition (round-43 B-1)\n for (const d of b.deposits) this.events.onGiveUp?.(rkid, d.digest)\n this.bindings.delete(rkid)\n this.installTombstone(rkid, b.generation, b.deadline as number)\n this.events.onRelease?.(rkid, b.generation)\n }\n for (const [id, ch] of this.challenges) if (now >= ch.expiresAt) this.challenges.delete(id)\n this.pendingSeqInstant = null\n }\n tick (now: number): void { this.advance(now) }\n\n // ── challenges (§5a.3) ───────────────────────────────────────────────\n /** The gated challenge entry — guarantee 3 BY CONSTRUCTION\n * (port-review-3 M-3): the admission gate runs INSIDE, before any\n * entropy is drawn, so a refused request costs neither randomness nor\n * sealing. `draw` is invoked only past the gate; its `addressValue`\n * (for registration challenges) is the value the adapter will seal to\n * the rkid — the carrier remembers it and a proof must return exactly\n * it. Every challenge is BOUND to its rkid (port-review-3 B-1: a\n * null-rkid challenge disabled the address proof).\n * Returns null when the gate refuses — retriable, guarantee 2. */\n issueChallenge (\n now: number, rkid: string,\n draw: () => { entropy: Uint8Array, addressValue?: string },\n ): string | null {\n this.advance(now)\n // syntax BEFORE policy and draw (port-review-5 B-1): a syntactically\n // impossible address buys neither a gate consultation nor a single\n // random byte — §5a.3's order is syntax → admission → randomness\n if (!decodedX(rkid)) throw new Error('malformed rkid — refuse before any work (5a.3)')\n const held = this.bindings.has(rkid)\n const admitted = held ? (this.policy.admitHeld?.(rkid) ?? true) : (this.policy.admitNew?.() ?? true)\n if (!admitted) return null\n const { entropy, addressValue } = draw()\n if (entropy.length !== 32) throw new Error('challenge entropy is 32 bytes')\n const value = b64uOf(entropy)\n this.challenges.set(value, {\n rkid, addressValue: addressValue ?? null,\n expiresAt: this.clock + this.#decl.challengeLifetimeMs, // M-2: the monotone clock, never a stale now\n })\n return value\n }\n\n /** consume-first (§5a.3): the first attempt takes the challenge before\n * anything is verified; expiry and rkid binding are checked HERE, so a\n * stale or transplanted challenge dies without buying a verification. */\n private consume (value: string, rkid: string, now: number): Challenge | null {\n const ch = this.challenges.get(value)\n this.challenges.delete(value)\n if (!ch || Math.max(now, this.clock) >= ch.expiresAt) return null\n if (ch.rkid !== rkid) return null // bound, always (B-1)\n return ch\n }\n\n // ── registration / rebind: r1–r5 (§5a.3, rounds 43/44) ───────────────\n async register (proof: CarrierProof, opts: { now: number, rawGeneration: string }): Promise<RegistrationVerdict> {\n // SNAPSHOT at entry (port-review-4 B-1): the caller's object stays\n // the caller's — what was verified is what commits, whatever the\n // caller mutates while the crypto runs\n const p = { ...proof }\n this.advance(opts.now)\n // r1 — syntax and canonical encodings; no crypto has happened yet.\n // The PURPOSE binds the operation (port-review-2 B-2): a session\n // proof at register() is not this artifact, whatever it signs.\n if (p?.purpose !== 'register' && p?.purpose !== 'rebind') return { verdict: 'refused(malformed)' }\n if (checkProofShape(p, this.#decl.carrier, opts.rawGeneration)) return { verdict: 'refused(malformed)' }\n const heldAtGate = this.bindings.has(p.rkid)\n // r2 — the carrier's own admission metering, subject to guarantee 4:\n // a held binding's request has its own gate (round-44 B-2)\n const admitted = heldAtGate ? (this.policy.admitHeld?.(p.rkid) ?? true) : (this.policy.admitNew?.() ?? true)\n if (!admitted) return { verdict: 'refused(admission-resource)', retriable: true }\n // r3 — consume, then verify: the challenge is taken by this attempt\n // before the response is verified, checked for expiry and rkid\n // binding at the same instant (port-review B-1/B-2)\n const ch = this.consume(p.principalChallenge, p.rkid, opts.now)\n if (!ch) return { verdict: 'refused(possession-failed)' }\n // fail-closed (port-review-2 B-1): a challenge issued WITHOUT a\n // sealed address value cannot prove address possession — it refuses,\n // it never waves through\n if (ch.addressValue === null || p.addressChallenge !== ch.addressValue) {\n return { verdict: 'refused(possession-failed)' }\n }\n if (!await verifySignature(p)) return { verdict: 'refused(possession-failed)' }\n // ── the commit block: synchronous from here — the linearization\n // point of §4.4. State is RE-read; no await crosses this line.\n this.advance(opts.now)\n const held = this.bindings.get(p.rkid)\n // r2, re-established (port-review-3 B-3): the gate CLASS (held vs\n // new) may have changed while the crypto ran — a binding that\n // released mid-verify makes this a NEW-binding request, and it must\n // pass the gate a new binding passes, in this same sync block\n if ((held !== undefined) !== heldAtGate) {\n const readmit = held ? (this.policy.admitHeld?.(p.rkid) ?? true) : (this.policy.admitNew?.() ?? true)\n if (!readmit) return { verdict: 'refused(admission-resource)', retriable: true }\n }\n // r4 — capacity: only a transition that creates a binding consults it\n if (!held && !(this.policy.hasBindingRoom?.() ?? true)) {\n return { verdict: 'registration-refused(capacity)', retriable: true }\n }\n // r5 — the state table\n const g = p.generation as number\n const tomb = this.tombstones.get(p.rkid)\n if (held) {\n if (g > held.generation) {\n held.generation = g; held.principal = p.principal\n this.reopen(held, this.clock)\n return { verdict: 'rebound' }\n }\n if (g === held.generation && p.principal === held.principal) {\n this.reopen(held, this.clock)\n return { verdict: 'registered(idempotent)' }\n }\n return { verdict: 'refused(stale-generation)', heldGeneration: held.generation }\n }\n if (tomb) {\n if (g > tomb.generation) {\n this.tombstones.delete(p.rkid) // consumed\n this.bindings.set(p.rkid, this.freshBinding(g, p.principal, this.clock))\n return { verdict: 'registered' }\n }\n return { verdict: 'refused(stale-generation)', heldGeneration: tomb.generation }\n }\n this.bindings.set(p.rkid, this.freshBinding(g, p.principal, this.clock))\n return { verdict: 'registered' }\n }\n\n private freshBinding (generation: number, principal: string, now: number): Binding {\n return { state: 'live', generation, principal, deposits: [], lastCollectionAt: now }\n }\n private reopen (b: Binding, now: number): void {\n if (b.state === 'closing') {\n b.state = 'live'; b.deadline = undefined\n // the return ends the wind-up: deposits revert to their own\n // admission-dated horizons (§5a.9)\n for (const d of b.deposits) d.lifeEndsAt = d.admittedAt + this.#decl.giveUpHorizonMs\n }\n b.lastCollectionAt = now\n }\n\n // ── collection / conclusion (§5a.3/5a.7/5a.8) ────────────────────────\n // purpose is part of the signed bytes AND of the dispatch: a proof for\n // one operation is not a proof for the other (port-review B-3).\n async collect (proof: CarrierProof, opts: { now: number }): Promise<SessionVerdict & { deposits?: Array<{ bytes: Uint8Array, digest: string }> }> {\n const p = { ...proof }\n const s = await this.session(p, 'collect', opts.now)\n if (s) return s\n const b = this.bindings.get(p.rkid)\n if (!b || b.principal !== p.principal) return { verdict: 'refused(no-such-queue)' }\n b.lastCollectionAt = this.clock\n return { verdict: 'served', deposits: b.deposits.map((d) => ({ bytes: d.bytes.slice(), digest: d.digest })) }\n }\n\n async conclude (proof: CarrierProof, digest: string, opts: { now: number }): Promise<SessionVerdict> {\n const p = { ...proof }\n const s = await this.session(p, 'conclude', opts.now)\n if (s) return s\n const b = this.bindings.get(p.rkid)\n if (!b || b.principal !== p.principal) return { verdict: 'refused(no-such-queue)' }\n b.deposits = b.deposits.filter((d) => d.digest !== digest)\n // deliberately NOT lastCollectionAt: orphan-expiry counts collections\n // (§5a.9), and a principal must not keep a never-collected queue out\n // of its wind-up by concluding (port-review-2 M-2)\n return { verdict: 'served' }\n }\n\n private async session (proofArg: CarrierProof, expected: 'collect' | 'conclude', now: number): Promise<SessionVerdict | null> {\n const p = { ...proofArg }\n this.advance(now)\n if (p.purpose !== expected) return { verdict: 'refused(malformed)' }\n if (checkProofShape(p, this.#decl.carrier)) return { verdict: 'refused(malformed)' }\n const held = this.bindings.get(p.rkid)\n const admitted = held ? (this.policy.admitHeld?.(p.rkid) ?? true) : (this.policy.admitNew?.() ?? true)\n if (!admitted) return { verdict: 'refused(admission-resource)', retriable: true }\n const ch = this.consume(p.principalChallenge, p.rkid, now)\n if (!ch) return { verdict: 'refused(possession-failed)' }\n if (!await verifySignature(p)) return { verdict: 'refused(possession-failed)' }\n // commit side re-reads (the caller checks binding + principal after\n // this returns null, synchronously)\n this.advance(now)\n if (!this.bindings.has(p.rkid)) return { verdict: 'refused(no-such-queue)' }\n return null\n }\n\n // ── submission: s1–s6 (§5a.5) ────────────────────────────────────────\n async submit (rkid: string, callerBytes: Uint8Array, opts: { now: number }): Promise<SubmissionVerdict> {\n // SNAPSHOT at entry (port-review-4 M-1/M-2): the bytes are copied\n // before anything reads them, and the declaration is pinned for the\n // whole operation — a concurrent revision governs the NEXT\n // submission, never one already running\n const bytes = callerBytes.slice()\n const decl = this.#decl\n this.advance(opts.now)\n // s1 — queue lookup FIRST: no hashing for an address the carrier\n // does not hold (port-review-2 M-4 — s3 work ran before s1/s2 and\n // let an unauthenticated blob buy a full SHA pass)\n if (!this.bindings.has(rkid)) return { verdict: 'refused(no-such-queue)' }\n // s2 — shape and size: a Section-5 envelope naming this queue,\n // within declared bounds\n if (bytes.length > decl.maxQueueBytes || !checkEnvelopeBytes(bytes, rkid)) {\n return { verdict: 'refused(bounds)' }\n }\n // s3 needs the digest — hash now, then RE-read state (the await may\n // have crossed a deadline; the commit block below is synchronous)\n const digest = b64uOf(await sha(bytes))\n this.advance(opts.now)\n const b = this.bindings.get(rkid)\n if (!b) return { verdict: 'refused(no-such-queue)' }\n // s3 — byte-identity. The digest indexes; the BYTES decide (M-6).\n const same = b.deposits.find((d) => d.digest === digest &&\n d.bytes.length === bytes.length && d.bytes.every((x, i) => x === bytes[i]))\n if (same) {\n // §5a.5: a duplicate consumes admission work exactly like an\n // admitted submission — and stores nothing\n this.policy.meterQueue?.(rkid, bytes.length)\n return { verdict: 'duplicate' }\n }\n const occupancy = b.deposits.reduce((a, d) => a + d.bytes.length, 0) + bytes.length\n const withinFloor = occupancy <= decl.queueFloorBytes\n // s4 — the queue's own meter (below the floor: the only one, g5)\n if (!(this.policy.meterQueue?.(rkid, bytes.length) ?? true)) {\n return { verdict: 'refused(admission-resource)', retriable: true }\n }\n if (!withinFloor) {\n // s5 — the queue's own bound\n if (occupancy > decl.maxQueueBytes) return { verdict: 'refused(queue-saturated)', retriable: true }\n // s6 — global occupancy, unreachable below the floor\n if (!(this.policy.hasCapacity?.(bytes.length) ?? true)) {\n return { verdict: 'refused(capacity)', retriable: true }\n }\n }\n const lifeEndsAt = b.state === 'closing' && b.deadline !== undefined\n ? b.deadline // inherits the remaining time\n : this.clock + decl.giveUpHorizonMs\n b.deposits.push({ bytes, digest, admittedAt: this.clock, lifeEndsAt })\n return { verdict: 'admitted' }\n }\n\n // ── tombstones (§5a.3): normative order, bookkeeping-free ────────────\n // Releases that fall on the SAME normative instant share one release\n // rank, so the bytewise tie-break genuinely decides between them\n // (port-review M-7) — the advance() loop batches them per call.\n private pendingSeqInstant: { instant: number, seq: number } | null = null\n private installTombstone (rkid: string, generation: number, releasedAt: number): void {\n if (this.pendingSeqInstant?.instant !== releasedAt) {\n this.pendingSeqInstant = { instant: releasedAt, seq: ++this.releaseSeq }\n }\n this.tombstones.set(rkid, { generation, releaseSeq: this.pendingSeqInstant.seq })\n this.trimTombstones(this.#decl.maxBindingTombstones)\n }\n private trimTombstones (bound: number): void {\n while (this.tombstones.size > bound) {\n const victim = [...this.tombstones.entries()].sort((a, b) =>\n (a[1].releaseSeq - b[1].releaseSeq) || cmpRkidBytes(a[0], b[0]))[0][0]\n this.tombstones.delete(victim)\n this.events.onEvict?.(victim)\n }\n }\n /** guarantee 1: the declaration binds, and a revision is itself\n * validated; a lowered tombstone bound trims in the same step\n * (round-45 B-3 — standing state is not a running act). */\n reviseDeclaration (next: Partial<CarrierDeclaration>): void {\n // C is the carrier's IDENTITY, not an operational constant: every\n // principal is derived from it (Identity §7a.4), so \"the same\n // carrier under a new C\" is a contradiction — a new C is a new\n // carrier with no bindings (port-review-3 B-2)\n if (next.carrier !== undefined && next.carrier !== this.#decl.carrier) {\n throw new Error('the carrier identifier is not revisable — a different C is a different carrier (7a.4)')\n }\n const revised = { ...this.#decl, ...next }\n const errs = validateDeclaration(revised)\n if (errs.length) throw new Error(`revision rejects (§11): ${errs.join('; ')}`)\n this.#decl = revised\n this.trimTombstones(revised.maxBindingTombstones)\n }\n\n // ── introspection (tests and adapters; not port surface) ─────────────\n stateOf (rkid: string): 'unbound' | 'live' | 'closing' | 'released' {\n const b = this.bindings.get(rkid)\n if (b) return b.state\n return this.tombstones.has(rkid) ? 'released' : 'unbound'\n }\n tombstoneOf (rkid: string): number | null { return this.tombstones.get(rkid)?.generation ?? null }\n bindingOf (rkid: string): { generation: number, principal: string, deposits: number, deadline?: number } | null {\n const b = this.bindings.get(rkid)\n return b ? { generation: b.generation, principal: b.principal, deposits: b.deposits.length, deadline: b.deadline } : null\n }\n tombstoneLabels (): string[] { return [...this.tombstones.keys()] }\n}\n"]}
|
package/dist/ceremony.d.ts
CHANGED
package/dist/ceremony.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ceremony.d.ts","sourceRoot":"","sources":["../src/ceremony.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ceremony.d.ts","sourceRoot":"","sources":["../src/ceremony.ts"],"names":[],"mappings":"AAeA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA"}
|
package/dist/ceremony.js
CHANGED
|
@@ -1,29 +1,19 @@
|
|
|
1
|
-
// @real-life/trust-protocol — ceremony: the
|
|
2
|
-
//
|
|
1
|
+
// @real-life/trust-protocol — ceremony: the wire forms of the encounter,
|
|
2
|
+
// the group and the introduction, pure builders and verifiers, no state.
|
|
3
3
|
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// the
|
|
7
|
-
//
|
|
4
|
+
// encounter the registered ceremony encounter-scan@0.25 (Encounter
|
|
5
|
+
// 0.31; cards 0.25, credentials 0.26): challenges, cards,
|
|
6
|
+
// credentials, the enactment binding, the 5.6 acceptance
|
|
7
|
+
// checks, the forms of encounter-bundle/0.1 and
|
|
8
|
+
// encounter-credential-delivery/0.1
|
|
9
|
+
// membership Membership 0.19: invite, accept, evidence, vouch@2, the
|
|
10
|
+
// member label, oids
|
|
11
|
+
// introduction Trust §8: the act's artifacts and checks, the act
|
|
12
|
+
// window, the registry declaration's ack-delay
|
|
8
13
|
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
//
|
|
15
|
-
// The machine: the own-challenge state model with its lock-free aging
|
|
16
|
-
// latch (5.3), the enactment record as the one serialization point (5.5),
|
|
17
|
-
// the eight-step acceptance (5.6), connected and offline path of 5.8 with
|
|
18
|
-
// free switching, and ONE commit discipline for every effect —
|
|
19
|
-
// prepare (async, no mutation) → verify (sync, under the 6.2 lock set) →
|
|
20
|
-
// commit (sync). `delivered` is the sender's status only on a valid ack.
|
|
21
|
-
//
|
|
22
|
-
// The module operates on the probe WORLD (a `Person`); the host owns
|
|
23
|
-
// storage and transport and carries the duties listed in the handoff
|
|
24
|
-
// (atomic writes, resume before flush, UI correlation).
|
|
25
|
-
//
|
|
26
|
-
// show · scan · counter · captureSentCard · receiveEncounter ·
|
|
27
|
-
// resumeEncounter · flushEncounter · resolve · constants
|
|
28
|
-
export * from './probe/encounter.js';
|
|
14
|
+
// The stateful acts (show, scan, the counter-step, founding, invite and
|
|
15
|
+
// admission, the introduction's roles) are the holder's (createHolder).
|
|
16
|
+
export * from './encounter.js';
|
|
17
|
+
export * from './membership.js';
|
|
18
|
+
export * from './introduction.js';
|
|
29
19
|
//# sourceMappingURL=ceremony.js.map
|
package/dist/ceremony.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ceremony.js","sourceRoot":"","sources":["../src/ceremony.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"ceremony.js","sourceRoot":"","sources":["../src/ceremony.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,yEAAyE;AACzE,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,0EAA0E;AAC1E,iEAAiE;AACjE,qDAAqD;AACrD,2EAA2E;AAC3E,sCAAsC;AACtC,qEAAqE;AACrE,gEAAgE;AAChE,EAAE;AACF,wEAAwE;AACxE,wEAAwE;AACxE,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA","sourcesContent":["// @real-life/trust-protocol — ceremony: the wire forms of the encounter,\n// the group and the introduction, pure builders and verifiers, no state.\n//\n// encounter the registered ceremony encounter-scan@0.25 (Encounter\n// 0.31; cards 0.25, credentials 0.26): challenges, cards,\n// credentials, the enactment binding, the 5.6 acceptance\n// checks, the forms of encounter-bundle/0.1 and\n// encounter-credential-delivery/0.1\n// membership Membership 0.19: invite, accept, evidence, vouch@2, the\n// member label, oids\n// introduction Trust §8: the act's artifacts and checks, the act\n// window, the registry declaration's ack-delay\n//\n// The stateful acts (show, scan, the counter-step, founding, invite and\n// admission, the introduction's roles) are the holder's (createHolder).\nexport * from './encounter.js'\nexport * from './membership.js'\nexport * from './introduction.js'\n"]}
|
package/dist/codec.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { Duty, HolderState, KnownDuty } from './state.js';
|
|
2
|
+
/** The codec this library writes. */
|
|
3
|
+
export declare const CODEC = 2;
|
|
4
|
+
/**
|
|
5
|
+
* Migrations keyed by the codec they read: MIGRATIONS[n] maps a valid
|
|
6
|
+
* codec-n state to a codec-(n+1) state. Pure, never async, never keys.
|
|
7
|
+
*
|
|
8
|
+
* 1 → 2 (lib 0.5.0, Message Tasks 0.1, Membership 0.20): the message
|
|
9
|
+
* state starts empty (no block, no rate, no record, no inbox) but for the
|
|
10
|
+
* ready tuples, read from what the state shows a counterpart's document
|
|
11
|
+
* did (readyOf1); every invitation a codec-1 holder received was
|
|
12
|
+
* surfaced, so their credential digests seed the permanent record of
|
|
13
|
+
* RLTP-MT-3130; the register of declined invitations starts empty (codec 1
|
|
14
|
+
* knew no block).
|
|
15
|
+
*/
|
|
16
|
+
export declare const MIGRATIONS: Readonly<Record<number, (state: any) => any>>;
|
|
17
|
+
/** A codec's structural validator: throws StateCodecError('shape') or returns. */
|
|
18
|
+
export type StateValidator = (raw: unknown) => void;
|
|
19
|
+
/** One codec chain: the target codec, its migrations and a validator for
|
|
20
|
+
* every codec from the oldest readable one up to the target. */
|
|
21
|
+
export interface CodecChain {
|
|
22
|
+
codec: number;
|
|
23
|
+
migrations: Readonly<Record<number, (state: any) => any>>;
|
|
24
|
+
validators: Readonly<Record<number, StateValidator>>;
|
|
25
|
+
}
|
|
26
|
+
export type StateCodecErrorCode = 'not-json' | 'codec-unknown' | 'codec-newer' | 'shape';
|
|
27
|
+
/** A stored state the library will not load (or a state it will not write). */
|
|
28
|
+
export declare class StateCodecError extends Error {
|
|
29
|
+
readonly code: StateCodecErrorCode;
|
|
30
|
+
/** JSON path of the offending value, for 'shape' */
|
|
31
|
+
readonly path?: string;
|
|
32
|
+
constructor(code: StateCodecErrorCode, message: string, path?: string);
|
|
33
|
+
}
|
|
34
|
+
/** Is this a duty kind and version this library handles? Unknown ones are kept as they are. */
|
|
35
|
+
export declare const isKnownDuty: (d: Duty) => d is KnownDuty;
|
|
36
|
+
/** Structural validators per codec version; every readable codec has one. */
|
|
37
|
+
export declare const VALIDATORS: Readonly<Record<number, StateValidator>>;
|
|
38
|
+
/**
|
|
39
|
+
* Decode under an explicit chain: JSON purity, codec gate, then
|
|
40
|
+
* validate(c) → migrate(c) → validate(c+1) … up to chain.codec. Returns
|
|
41
|
+
* an independent copy. decodeState is this function over the library's
|
|
42
|
+
* own chain; tests drive it with fake chains.
|
|
43
|
+
*/
|
|
44
|
+
export declare function decodeChain(raw: unknown, chain: CodecChain): unknown;
|
|
45
|
+
/**
|
|
46
|
+
* Load a stored state: a JSON string or an already parsed value. Returns
|
|
47
|
+
* an independent copy at the current codec, or throws StateCodecError.
|
|
48
|
+
*/
|
|
49
|
+
export declare function decodeState(raw: unknown): HolderState;
|
|
50
|
+
/** Serialize a state for storage: canonical JSON, validated first. */
|
|
51
|
+
export declare function encodeState(state: HolderState): string;
|
|
52
|
+
/** Deterministic equality of two states (their JCS forms). */
|
|
53
|
+
export declare const sameState: (a: HolderState, b: HolderState) => boolean;
|
|
54
|
+
//# sourceMappingURL=codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAG9D,qCAAqC;AACrC,eAAO,MAAM,KAAK,IAAI,CAAA;AAkBtB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAOnE,CAAA;AAEF,kFAAkF;AAClF,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;AAEnD;iEACiE;AACjE,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAA;IACzD,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;CACrD;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,eAAe,GAAG,aAAa,GAAG,OAAO,CAAA;AAExF,+EAA+E;AAC/E,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC,oDAAoD;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;gBACT,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAMvE;AAsKD,+FAA+F;AAC/F,eAAO,MAAM,WAAW,GAAI,GAAG,IAAI,KAAG,CAAC,IAAI,SACiD,CAAA;AAsK5F,6EAA6E;AAC7E,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAG9D,CAAA;AAeF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAmBrE;AAID;;;GAGG;AACH,wBAAgB,WAAW,CAAE,GAAG,EAAE,OAAO,GAAG,WAAW,CAEtD;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAIvD;AAED,8DAA8D;AAC9D,eAAO,MAAM,SAAS,GAAI,GAAG,WAAW,EAAE,GAAG,WAAW,KAAG,OAA4B,CAAA"}
|