@real-life/trust-protocol 0.1.1 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/probe/trust.ts"],"names":[],"mappings":"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","sourcesContent":["// trust.mjs — Stufe 2 des Redesigns: der EXPLIZITE VERTRAUENSAKT\n// (aufgeschobene Anker-Offenlegung), der geblendete Stern und die\n// Pause-Semantik. PROBE, DOM-frei, auf rltp-core + rltp-crypto.\n//\n// DAS MODELL (portiert aus graph-web.mjs auf den WebCrypto-Stack):\n// Vertrauensakt = EINSEITIGE Offenlegungsentscheidung. A liefert an B:\n// 1. das kreuz-MAC-te anchor-mapping pair→self (Designated Verifier:\n// BEIDE MACs könnte auch B selbst berechnen — ein geleaktes\n// Mapping beweist Dritten NICHTS; forgeMapping demonstriert das),\n// 2. die eigene Self-Card (stabiler Anker + keyAgreement),\n// 3. den geblendeten Stern-Schnappschuss.\n// B VERIFIZIERT das Mapping mit den eigenen Geheimnissen, bevor die\n// Verknüpfung akzeptiert wird. Pausieren stoppt nur KÜNFTIGE\n// Lieferungen — Geliefertes bleibt (Einweg-Tür, irreversibles Wissen).\n//\n// Stern (Publikums-Prinzip, Klasse D): der Sender leitet NIE rohe\n// Dritt-Anker weiter. Jeder gehaltene Self-Anker reist als\n// HMAC(k, anchor) unter dem Beziehungs-Schlüssel k; der Empfänger kann\n// nur Anker testen, die er selbst legitim hält („gemeinsame Kontakte\"),\n// und sonst nichts. Epochales Blenden: salt = monotone Sequenznummer\n// pro Beziehung; Listen SORTIERT (Lieferreihenfolge leakt nichts).\n// Ehrlicher Rest: 1-Bit-Orakel über gehaltene Anker + die Zählung.\nimport { jcs } from '../core.js'\nimport * as C from './deps.js'\nimport type { Person } from './deps.js'\n\nconst te = new TextEncoder()\nconst S = globalThis.crypto.subtle\nconst TT = 'https://real-life.org/trust-tasks/'\nconst say = (p: Person, m: string) => p.log.push(m)\nconst uuid = (ent?: any) => ent ?? globalThis.crypto.randomUUID()\n\n// ── Primitiven ──────────────────────────────────────────────────────────\nexport async function hmac (keyBytes: Uint8Array, msg: string) {\n const k = await S.importKey('raw', keyBytes, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign'])\n return C.b64uOf(new Uint8Array(await S.sign('HMAC', k, te.encode(msg))))\n}\n// der stabile soziale Anker = COMMUNITY-ANKER (Identity 0.13, S-DID-Schnitt):\n// gewöhnlicher Gruppen-Kontext über die Genesis der persönlichen Community —\n// nie mehr die zero-input-Recovery-Strings\nexport async function communityContext (p: Person) {\n if (!p.selfCtx) p.selfCtx = await C.communityContext(p.rootIkm, p.communityGenesis)\n return p.selfCtx\n}\nexport const selfCard = async (p: Person, whenIso: string) => {\n const s = await communityContext(p)\n return C.signCard(s, C.cardBody(s, { name: p.name }), whenIso)\n}\n// Beziehungs-Schlüssel: X25519 zwischen den pair-Kontexten des Kanals\nconst chShared = (contact: any) => C.ecdh(contact.channel.own.x.priv, C.xRawOfMk(contact.channel.counterpartKa)!)\nconst relKey = async (contact: any, info: string) => C.hkdf(await chShared(contact), info)\n\n// ── anchor-mapping@2 (Designated Verifier, Doppel-MAC) ──────────────────\n// mac1: Kanal-DH (pairA × pairB) · mac2: selfA × pairB — der Empfänger\n// rechnet mac2 mit SEINEM pair-Privkey gegen die Self-Card nach. Beide\n// Schlüssel kann auch der Empfänger allein ableiten: Abstreitbarkeit.\nconst mappingBody = (pairAnchor: string, selfAnchor: string, toPairAnchor: string, whenIso: string) =>\n ({ type: 'anchor-mapping@2', pair: pairAnchor, self: selfAnchor, to: toPairAnchor, issuedAt: whenIso })\nexport async function makeMapping (p: Person, counterpartAnchor: string, when: number) {\n const contact = p.contacts.get(counterpartAnchor)\n const s = await communityContext(p)\n const whenIso = C.iso(when)\n const card = await selfCard(p, whenIso)\n const body = mappingBody(contact.channel.own.anchor, s.anchor, counterpartAnchor, whenIso)\n const msg = jcs(body)\n const theirKa = C.xRawOfMk(contact.channel.counterpartKa)!\n return { body, card,\n mac1: await hmac(await relKey(contact, 'rltp/trust/mac/map1'), msg),\n mac2: await hmac(await C.hkdf(await C.ecdh(s.x.priv, theirKa), 'rltp/trust/mac/map2'), msg) }\n}\n// Verifikation ist EMPFÄNGER-PRIVAT: sie BRAUCHT die eigenen Geheimnisse\n// (das ist der Punkt — ein Dritter kann nicht einmal die Gültigkeit prüfen)\nexport async function verifyMapping (p: Person, m: any) {\n try {\n const b = m?.body\n if (!b || b.type !== 'anchor-mapping@2') return false\n const entry = p.contacts.get(b.pair)\n if (!entry?.channel?.own) return false\n if (b.to !== entry.channel.own.anchor) return false\n const card = m.card\n if (card?.anchor !== b.self || !(await C.diVerify(card, b.self))) return false\n const msg = jcs(b)\n if ((await hmac(await relKey(entry, 'rltp/trust/mac/map1'), msg)) !== m.mac1) return false\n const k2 = await C.hkdf(await C.ecdh(entry.channel.own.x.priv, C.xRawOfMk(card.keyAgreement)!), 'rltp/trust/mac/map2')\n if ((await hmac(k2, msg)) !== m.mac2) return false\n return true\n } catch { return false }\n}\n// die Abstreitbarkeits-Demo: der EMPFÄNGER fabriziert ein Mapping, das\n// einen beliebigen pair-Anker an ein beliebiges Self bindet, dessen Card\n// er hält — es verifiziert identisch. Genau darum überzeugt ein\n// geleaktes Mapping niemanden.\nexport async function forgeMapping (forger: Person, victimCard: any, pairAnchor: string, when: number) {\n const entry = forger.contacts.get(pairAnchor)\n const whenIso = C.iso(when)\n const body = mappingBody(pairAnchor, victimCard.anchor, entry.channel.own.anchor, whenIso)\n const msg = jcs(body)\n const k2 = await C.hkdf(await C.ecdh(entry.channel.own.x.priv, C.xRawOfMk(victimCard.keyAgreement)!), 'rltp/trust/mac/map2')\n return { body, card: victimCard,\n mac1: await hmac(await relKey(entry, 'rltp/trust/mac/map1'), msg),\n mac2: await hmac(k2, msg) }\n}\n\n// ── der geblendete Stern ────────────────────────────────────────────────\n// Sequenz-Reservierung: SYNCHRON vor jedem await, damit zwei\n// nebenläufige Aufrufe nie denselben Salt ziehen (Review 6, B-1).\n// Ein bei Fehlschlag verbrannter Salt ist erlaubt — die Sequenz ist\n// strikt monoton, nicht lückenlos.\nconst reserveStarSeq = (contact: any): number => {\n contact.starSeqNext = Math.max(contact.starSeqNext ?? 0, contact.starSeq ?? 0) + 1\n return contact.starSeqNext\n}\nconst commitStar = (contact: any, seq: number, snap: any): void => {\n // das Journal hält NUR den High-Water-Stern: ein verspätet fertig\n // gewordener kleinerer Salt rollt sentStar nicht zurück (Review 7, B-2)\n if (seq > (contact.starSeq ?? 0)) { contact.starSeq = seq; contact.sentStar = snap }\n}\n// Produktion pro Kontakt SERIALISIERT: die Reservierung macht Salts\n// eindeutig, erst die Kette macht ihre AUSLIEFERUNG streng steigend —\n// der Empfänger verwirft normativ jeden nicht strikt größeren Salt\nconst withStarLock = <T>(contact: any, fn: () => Promise<T>): Promise<T> => {\n const run = (contact.starLock ?? Promise.resolve()).then(fn, fn)\n contact.starLock = run.catch(() => {})\n return run\n}\n// reine Berechnung — mutiert NICHTS; Sequenz kommt aus reserveStarSeq\nasync function buildStarPure (p: Person, contact: any, seq: number) {\n const salt = String(seq)\n const k = await relKey(contact, 'rltp/trust/blind/star/' + salt)\n const blinded = []\n let count = 0\n for (const e of p.contacts.values()) {\n if (!e.selfAnchor) continue\n count++\n blinded.push(await hmac(k, e.selfAnchor))\n }\n blinded.sort()\n return { salt, count, blinded }\n}\nexport function buildStar (p: Person, contact: any) {\n return withStarLock(contact, async () => {\n const seq = reserveStarSeq(contact)\n const snap = await buildStarPure(p, contact, seq)\n commitStar(contact, seq, snap) // Sender-Journal: was ich hier zuletzt geliefert habe\n return snap\n })\n}\n// Empfängerseite: denselben Lieferschlüssel nachrechnen, EINEN Anker testen\nexport async function starMatch (p: Person, entry: any, snap: any, anchor: string) {\n const k = await relKey(entry, 'rltp/trust/blind/star/' + snap.salt)\n return snap.blinded.includes(await hmac(k, anchor))\n}\n// Cache für die synchrone UI: pro Kontakt { count, knownNames } aus dem\n// empfangenen Schnappschuss gegen die EIGENEN gehaltenen Self-Anker.\nexport async function refreshStarInfo (p: Person) {\n for (const [key, entry] of p.contacts) {\n if (!entry.starReceived || !entry.channel?.own) continue\n const known = []\n const seen = new Set()\n for (const [k2, e] of p.contacts) {\n if (k2 === key || !e.selfAnchor || seen.has(e.selfAnchor)) continue\n seen.add(e.selfAnchor)\n if (await starMatch(p, entry, entry.starReceived, e.selfAnchor)) known.push(e.name)\n }\n entry.starInfo = { count: entry.starReceived.count, knownNames: known.sort() }\n }\n}\n\n// ── der Vertrauensakt ───────────────────────────────────────────────────\n// Erlaubt für ✓ (Zeremonie) UND ⇄ (vorgestellt, beidseitig) — Vertrauen\n// ist eine OFFENLEGUNGS-Entscheidung, keine Verifikations-Behauptung\n// (Antons Entscheid 24.08.); die UI benennt bei ⇄ ehrlich die\n// Vermittler-Abhängigkeit. Gesperrt bleibt ◇: einseitig hast du nichts\n// freigegeben — es existiert kein eigener Kanal-Kontext für das Mapping.\n// Einweg-Tür: trustGiven bleibt; Pausieren stoppt nur das Abo.\nexport async function setTrust (p: Person, counterpartAnchor: string, when: number, ent: any = {}) {\n const contact = p.contacts.get(counterpartAnchor)\n if (!contact) return { error: 'kein Kontakt' }\n if (!contact.channel?.own) return { error: 'kein eigener Kanal — einseitig (◇) hast du nichts freigegeben' }\n if (contact.trustGiven) return { error: 'bereits geschenkt (Einweg-Tür)' }\n // In-flight-Latch (Review 6, B-1): der Latch fällt SYNCHRON — zwei\n // nebenläufige Aufrufe können die offene Tür nicht beide bestehen\n if (contact.trustPending) return { error: 'bereits unterwegs (Einweg-Tür)' }\n contact.trustPending = true\n try {\n // ALLES Fehlbare — auch die Zeitform (when=NaN wirft) — liegt im\n // try, dessen finally den Latch räumt (Review 7, B-1)\n const whenIso = C.iso(when)\n // die Tür schließt erst, wenn die Disclosure WIRKLICH existiert\n // (Review 5, B-5): alles Fehlbare läuft vor den Journal-Mutationen\n const mapping = await makeMapping(p, counterpartAnchor, when)\n // Stern-Abschnitt unter dem Kontakt-Lock: Reservierung, Bau, Siegel\n // und Commit in EINEM geordneten Zug (Review 7, B-2)\n const { env, star, seq } = await withStarLock(contact, async () => {\n const seq = reserveStarSeq(contact)\n const star = await buildStarPure(p, contact, seq)\n const body = {\n id: uuid(ent.id), type: TT + 'trust-disclosure@probe',\n issuer: contact.channel.own.anchor, recipient: counterpartAnchor,\n issuedAt: whenIso, payload: { mapping, star },\n }\n const doc = await C.diSign(contact.channel.own, body, whenIso)\n const env = await C.seal(doc, contact.channel.counterpartKa, ent)\n commitStar(contact, seq, star)\n return { env, star, seq }\n })\n contact.trustGiven = whenIso\n contact.sentMapping = mapping // Sender-Journal: die geöffnete Einweg-Tür\n say(p, `Vertrauen geschenkt an ${contact.name}: stabiler Anker offengelegt (DV-Mapping) + Kontakt-Updates aktiv`)\n return { to: contact, env }\n } finally { contact.trustPending = false }\n}\nexport function setTrustPaused (p: Person, counterpartAnchor: string, paused: boolean) {\n const contact = p.contacts.get(counterpartAnchor)\n if (!contact?.trustGiven) return\n contact.trustPaused = !!paused\n say(p, paused ? `Kontakt-Updates an ${contact.name} pausiert (Geliefertes bleibt)` : `Kontakt-Updates an ${contact.name} wieder aktiv`)\n}\n// Bestand geändert (neuer Self-Anker gehalten) → Stern überall auffrischen,\n// wo ich vertraue und nicht pausiert habe. Ohne das frieren Sterne in der\n// Toggle-Reihenfolge ein (Antons Erstlauf-Befund im Graph-Simulator).\n/**\n * Refresh every deliverable star. Per-recipient resilience (review 5,\n * M-1): a failure for ONE recipient never discards the stars already\n * built for others — the result carries the sealed outbound plus a\n * named failure list. THE CONTRACT: the caller (host application) owns\n * redelivery of failed refreshes, e.g. by calling this again; a failed\n * refresh is a SEND problem, never grounds to redeliver the inbound\n * document (its effect is complete and cached).\n */\nexport async function starRefreshAll (p: Person, when: number, ent: any = {}) {\n const outbound = []\n const failures: { to: string, error: string }[] = []\n for (const [anchor, contact] of p.contacts) {\n if (!contact.trustGiven || contact.trustPaused) continue\n try {\n const env = await withStarLock(contact, async () => {\n const seq = reserveStarSeq(contact)\n const star = await buildStarPure(p, contact, seq)\n const whenIso = C.iso(when)\n const body = {\n id: uuid(), type: TT + 'trust-star@probe',\n issuer: contact.channel.own.anchor, recipient: anchor,\n issuedAt: whenIso, payload: { star },\n }\n const sealed = await C.seal(await C.diSign(contact.channel.own, body, whenIso), contact.channel.counterpartKa, ent)\n commitStar(contact, seq, star)\n return sealed\n })\n outbound.push({ to: contact, env })\n } catch (e: any) { failures.push({ to: contact.name ?? anchor, error: String(e?.message ?? e) }) }\n }\n return Object.assign(outbound, { failures })\n}\n\n// ── Empfangs-Dispatch (Form wie groups.receiveDoc) ──────────────────────\nexport async function receiveTrustDoc (p: Person, env: any, when: number, ent: any = {}) {\n const opened = await C.openEnvelope(p, env) // Stufen 1–4, Cache-Lesung\n if (opened.duplicate) return { handled: true, duplicate: true }\n if (opened.error) return { handled: false }\n const r = await receiveTrustDocInner(p, env, opened.doc, when, ent)\n if (r?.handled && !(r as any).error) C.effectDone(p, opened.digest)\n return r\n}\nasync function receiveTrustDocInner (p: Person, env: any, doc: any, when: number, ent: any = {}) {\n const ctx = p.contexts.get(env.rkid)\n if (!ctx) return { handled: false }\n if (typeof doc?.type !== 'string' || !doc.type.startsWith(TT + 'trust-')) return { handled: false, doc }\n // form BEFORE fields (M-3): issuer, proof and payload as used below\n // form BEFORE fields (M-3, verschärft in Runde 3): jeder Typ verlangt\n // SEIN Payload — star@probe ohne star ist formwidrig, nicht ein Throw\n const kind = doc.type.slice((TT + 'trust-').length)\n const starOk = C.shaped(doc.payload ?? {}, { star: 'object' }) && C.shaped(doc.payload.star, { salt: 'string', count: 'number', blinded: 'array' })\n && C.intStr(doc.payload.star.salt) && Number.isInteger(doc.payload.star.count) && doc.payload.star.count >= 0\n && doc.payload.star.count === doc.payload.star.blinded.length\n && doc.payload.star.blinded.every((b: any) => typeof b === 'string')\n const mappingOk = C.shaped(doc.payload ?? {}, { mapping: 'object' }) && C.shaped(doc.payload.mapping, { mac1: 'string', mac2: 'string', card: 'object' })\n if (!C.shaped(doc, { issuer: 'string', proof: 'object', payload: 'object' })\n || (kind === 'disclosure@probe' && !(mappingOk && starOk))\n || (kind === 'star@probe' && !starOk)) return { handled: true, error: 'malformed' }\n const fromEntry = [...p.contacts.entries()].find(([, c]) => c.channel?.own?.anchor === ctx.anchor)\n if (!fromEntry) return { handled: true, error: 'kein Kanal' }\n const [fromKey, from] = fromEntry\n if (doc.issuer !== fromKey || !(await C.diVerify(doc, doc.issuer))) return { handled: true, error: 'trust doc proof' }\n switch (doc.type.slice((TT + 'trust-').length)) {\n case 'disclosure@probe': {\n const m = doc.payload?.mapping\n if (!(await verifyMapping(p, m))) { say(p, `Mapping von ${from.name} verifiziert NICHT — verworfen`); return { handled: true, error: 'mapping' } }\n from.selfAnchor = m.body.self\n from.mapping = m\n from.trustReceived = doc.issuedAt\n from.starReceived = doc.payload.star\n await refreshStarInfo(p)\n say(p, `${from.name} vertraut dir: stabiler Anker geprüft übernommen (nur für dich beweisend)`)\n // mein Bestand wuchs → mein lieferbarer Stern auch: auffrischen.\n // Der INBOUND-Effekt ist hier komplett und bleibt cached;\n // starRefreshAll ist pro Empfänger resilient — Teilergebnisse\n // gehen nie verloren, Fehlschläge stehen benannt in failures und\n // gehören dem HOST (Nachliefer-Vertrag, Review 5 M-1)\n const outbound = await starRefreshAll(p, when, ent)\n const outboundError = outbound.failures.length ? outbound.failures.map((f: any) => `${f.to}: ${f.error}`).join(' · ') : undefined\n return { handled: true, disclosed: m.body.self, fromName: from.name, outbound: [...outbound], outboundError }\n }\n case 'star@probe': {\n from.starReceived = doc.payload.star\n await refreshStarInfo(p)\n say(p, `Kontakt-Update von ${from.name}: ${doc.payload.star.count} Kontakte (geblendet)`)\n return { handled: true, star: true }\n }\n }\n return { handled: false, doc }\n}\n"]}
1
+ {"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/probe/trust.ts"],"names":[],"mappings":"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","sourcesContent":["// trust — der GRADUIERTE Vertrauensakt: seit dem Nachzug auf Visibility\n// 0.29 + Delivery 0.79 baut dieses Modul die ECHTEN Wire-Artefakte\n// (anchor-mapping@2 · grade-declaration@1 · star@1 mit 5.2a-Chunks),\n// getragen von den registrierten Task-Dokumenten (Delivery §4.4:\n// anchor-mapping/0.1 · grade-declaration/0.1 · star/0.1 — Payload = das\n// Artefakt, Dokument proof-frei, ein Träger), quittiert mit dem\n// deniablen delivery-ack (4.2-Klassenregel). Formen und Schlüssel sind\n// byte-kompatibel zu vectors/visibility.json (vectors3.test.mjs rechnet\n// sie unabhängig nach).\n//\n// Die Zustandsmaschinen sind die konvergierten:\n// · Admissionsschicht (Sektion 2): Promotion-Commit beim ERSTEN\n// verifizierten anchor-mapping@2 einer BEZIEHUNG (relId = die\n// Kette, der Idempotenzschlüssel); genau ein Eintrag je Beziehung,\n// self-Korrektur per höherer Revision in place; gleiche self auf\n// zweiter Beziehung = Weg-2-Merge (früheste Position überlebt,\n// Aliase); EINE totale Verifikations-Commit-Ordnung (a.seq).\n// · Rekonziliation (5.4): Sicht = {(member, grade)} der admittierten,\n// unmaskierten Mitglieder (Maske: 24h grade-wait ab Admission, fällt\n// mit verifizierter Declaration oder Ablauf → fail-closed count);\n// Baseline-Automat monoton über Ack-Completions, highWater überlebt\n// ⊥, kein Failure-Ereignis, nie Rollback.\n// · Byte-identische Redelivery (4.2): jede unquittierte Zustellung\n// wird als DASSELBE Dokument erneut gesendet (outbox hält die Envs);\n// der Empfänger re-ackt duplicate-known byte-identisch (ackStore).\nimport { jcs, makeValidator } from '../core.js'\nimport { SCHEMAS } from '../schemas.js'\nimport * as C from './deps.js'\nimport type { Person } from './deps.js'\nimport { buildAck, verifyAck, ACK_TYPE } from './acks.js'\n\nconst te = new TextEncoder()\nconst S = globalThis.crypto.subtle\nconst TT = 'https://real-life.org/trust-tasks/'\nconst say = (p: Person, m: string) => p.log.push(m)\nconst uuid = (ent?: any) => ent ?? globalThis.crypto.randomUUID()\nconst V = makeValidator(SCHEMAS)\nconst schemaOk = (file: string, data: any) => V.validate(data, SCHEMAS[file], SCHEMAS[file]).length === 0\nexport const GRADE_WAIT = 86_400_000 // 5.4: PT24H, in when-Millisekunden\nexport const ADMISSION_BOUND = 10n ** 18n - 1n // Sektion 2 — unerreichbar, geführt für die Totalität\nconst CHUNK_MAX = 1024 // 5.2a: blinded[] je Chunk\n\n// ── Primitiven ──────────────────────────────────────────────────────────\nexport async function hmac (keyBytes: Uint8Array, msg: string) {\n const k = await S.importKey('raw', keyBytes, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign'])\n return C.b64uOf(new Uint8Array(await S.sign('HMAC', k, te.encode(msg))))\n}\nexport const hmacU = async (keyBytes: Uint8Array, msg: string) => 'u' + await hmac(keyBytes, msg)\nexport async function communityContext (p: Person) {\n if (!p.selfCtx) p.selfCtx = await C.communityContext(p.rootIkm, p.communityGenesis)\n return p.selfCtx\n}\nexport const selfCard = async (p: Person, whenIso: string) => {\n const s = await communityContext(p)\n return C.signCard(s, C.cardBody(s, { name: p.name }), whenIso)\n}\n// self-card@1 (§6.2): { body: {type, anchor, keyAgreement}, proof:\n// {proofValue} } — ROHE Ed25519-Signatur über JCS(body), 'z'+base58\n// (§2.1: bewusst KEINE DI-Suite; zwei Artefakt-Familien)\nexport async function selfCard1 (p: Person) {\n const s = await communityContext(p)\n const body = { type: 'self-card@1', anchor: s.anchor, keyAgreement: s.keyAgreement }\n const sig = new Uint8Array(await S.sign({ name: 'Ed25519' }, s.ed.priv, te.encode(jcs(body))))\n return { body, proof: { proofValue: 'z' + C.base58(sig) } }\n}\nconst verifyRawSig = async (did: string, body: any, proofValue: any) => {\n try {\n if (typeof proofValue !== 'string' || proofValue[0] !== 'z') return false\n const raw = C.edRawOfAnchor(did)\n const sig = C.fromBase58(proofValue.slice(1))\n if (!raw || !sig || sig.length !== 64) return false\n const key = await S.importKey('raw', raw, { name: 'Ed25519' }, false, ['verify'])\n return await S.verify({ name: 'Ed25519' }, key, sig, te.encode(jcs(body)))\n } catch { return false }\n}\nconst chShared = (contact: any) => C.ecdh(contact.channel.own.x.priv, C.xRawOfMk(contact.channel.counterpartKa)!)\nconst relKey = async (contact: any, info: string) => C.hkdf(await chShared(contact), info)\n\n// ── anchor-mapping@2 — die normative Wire-Form (§6.1–6.3) ──────────────\n// body = { type, pair, self, to, card, revision, issuedAt } ·\n// proof = { mac1 (Kanal-DH, info map1) · mac2 (selfX × pairX-Adressat,\n// info map2) }, beide 'u'-MACs über JCS(body). Die Card reist IM Body.\n// der reine BAU (fehlbar, mutiert nichts) — modul-lokal: nur Aufrufer,\n// die den Issue-Lock halten und selbst committen (setTrust/\n// reissueTrust), erreichen ihn mit vorreservierter Revision. Der\n// explizite Revisionspfad ist NICHT mehr exportiert (Review 9, B-2:\n// er umging Lock, Deaktivierungs-Check und Persistenz).\nasync function buildMappingArtifact (p: Person, contact: any, counterpartAnchor: string, when: number, revision: string) {\n const s = await communityContext(p)\n const whenIso = C.iso(when)\n const card = await selfCard1(p)\n const body = { type: 'anchor-mapping@2', pair: contact.channel.own.anchor, self: s.anchor, to: counterpartAnchor, card, revision, issuedAt: whenIso }\n const msg = jcs(body)\n const theirKa = C.xRawOfMk(contact.channel.counterpartKa)!\n return { body, proof: {\n mac1: await hmacU(await relKey(contact, 'rltp/visibility/mac/map1'), msg),\n mac2: await hmacU(await C.hkdf(await C.ecdh(s.x.priv, theirKa), 'rltp/visibility/mac/map2'), msg) } }\n}\nexport async function makeMapping (p: Person, counterpartAnchor: string, when: number) {\n const contact = p.contacts.get(counterpartAnchor)\n // Ausstellungs-Disziplin (Review 8/9): Peek → fehlbar bauen →\n // Zähler UND Body synchron committen (sentMapping = der persistierte\n // ausgestellte Body, §6.4: one step per scope), seriell je Kontakt;\n // ein deaktiviertes Tupel stellt nichts aus\n return withIssueLock(contact, async () => {\n if (contact.deactivated) throw new Error('tuple deactivated — issues nothing (§6.4)')\n const revision = peekRev(contact, 'mapRevOut')\n const m = await buildMappingArtifact(p, contact, counterpartAnchor, when, revision)\n if (contact.deactivated) throw new Error('tuple deactivated — issues nothing (§6.4)')\n contact.mapRevOut = revision\n contact.sentMapping = m\n return m\n })\n}\n// Verifikation ist EMPFÄNGER-PRIVAT (§6.3, geschlossene Liste) — und\n// die Liste wird IN IHRER REIHENFOLGE ausgewertet (Review 19, B-1:\n// „all of the following hold, evaluated in this order\"): 1 Schema ·\n// 2 to · 3 pair · 4 Card verifiziert unter IHREM Anker · 5\n// card.anchor == self · 6 k2 aus card.keyAgreement · 7 MACs.\n// arrivalKey = das Ankunftstupel (Empfangspfad); standalone wählt\n// body.pair (Schritt 3 dann trivial).\nexport async function verifyMapping (p: Person, m: any, arrivalKey?: string) {\n try {\n if (!schemaOk('visibility-anchor-mapping.schema.json', m)) return false // 1\n const b = m.body\n if (!C.calOK(b.issuedAt)) return false // Kalender-Validität gehört zur Parse-Ebene (Review 12, B-3)\n const key = arrivalKey ?? b.pair\n const entry = p.contacts.get(key)\n if (!entry?.channel?.own || entry.deactivated) return false\n if (b.to !== entry.channel.own.anchor) return false // 2\n if (b.pair !== key) return false // 3 (Cross-Tupel-Bindung, Review 9)\n if (!(await verifyRawSig(b.card?.body?.anchor, b.card?.body, b.card?.proof?.proofValue))) return false // 4: unter IHREM Anker\n if (b.card.body.anchor !== b.self) return false // 5\n const msg = jcs(b)\n const k2 = await C.hkdf(await C.ecdh(entry.channel.own.x.priv, C.xRawOfMk(b.card.body.keyAgreement)!), 'rltp/visibility/mac/map2') // 6: k2 aus card.keyAgreement — VOR den MACs (Review 20, B-1)\n if ((await hmacU(await relKey(entry, 'rltp/visibility/mac/map1'), msg)) !== m.proof.mac1) return false // 7 (mac1)\n if ((await hmacU(k2, msg)) !== m.proof.mac2) return false // 7 (mac2)\n return true\n } catch { return false }\n}\n// Abstreitbarkeits-Demo: der Empfänger fabriziert ein identisch\n// verifizierendes Mapping — ein Leak beweist Dritten nichts (Klasse V)\nexport async function forgeMapping (forger: Person, victimCard: any, pairAnchor: string, when: number) {\n const entry = forger.contacts.get(pairAnchor)\n const whenIso = C.iso(when)\n const body = { type: 'anchor-mapping@2', pair: pairAnchor, self: victimCard.body.anchor, to: entry.channel.own.anchor, card: victimCard, revision: '1', issuedAt: whenIso }\n const msg = jcs(body)\n const k2 = await C.hkdf(await C.ecdh(entry.channel.own.x.priv, C.xRawOfMk(victimCard.body.keyAgreement)!), 'rltp/visibility/mac/map2')\n return { body, proof: {\n mac1: await hmacU(await relKey(entry, 'rltp/visibility/mac/map1'), msg),\n mac2: await hmacU(k2, msg) } }\n}\n\n// ── die Admissionsschicht (Sektion 2) ───────────────────────────────────\nconst relIdOf = (p: Person, contactKey: string): string => {\n const c = p.contacts.get(contactKey)\n return c ? (c.relId ??= contactKey) : contactKey\n}\n// Bound testbar: p.admissionBound (BigInt) überschreibt den\n// unerreichbaren Spec-Bound — die MECHANIK (pending, k−1, Departure)\n// ist dieselbe (Sektion 2, „the rule exists for totality\")\nconst admission = (p: Person): { seq: bigint, byRel: Map<string, any>, admitted: bigint } =>\n ((p as any).admission ??= { seq: 0n, byRel: new Map(), admitted: 0n })\nconst boundOf = (p: Person): bigint => (p as any).admissionBound ?? ADMISSION_BOUND\n// grade-wait läuft nur ab, wenn ein Admissionszeitpunkt EXISTIERT\n// (Review 5, MAJOR): jede Zustandsoperation verlangt eine endliche Uhr\nconst finite = (when: number): number => {\n if (!Number.isFinite(when)) throw new Error('admission requires a finite clock (5.4 grade-wait)')\n return when\n}\n// Scope-Preflight (Review 5, B-5): prüft OHNE zu verbrauchen — ein Akt,\n// der in einem erschöpften Scope ausstellen müsste, suspendiert atomar\nconst scopeOk = (cur?: string) => BigInt(cur ?? '0') < ADMISSION_BOUND\n// EIN atomarer Merge zweier Einträge: früheste Position überlebt,\n// Aliase lösen auf, Grade nach commitOrder; k admitted → k−1 Slots\n// frei → die nächsten Pending admittieren (Set-Änderung via reconcile)\nfunction mergeEntries (p: Person, a: any, survivorIn: any, goneIn: any, when: number) {\n const survivor = goneIn.pos < survivorIn.pos ? goneIn : survivorIn\n const gone = survivor === goneIn ? survivorIn : goneIn\n for (const rid of gone.relIds) { survivor.relIds.add(rid); a.byRel.set(rid, survivor) }\n for (const ck of gone.rels) survivor.rels.add(ck)\n // Declarations bleiben je Herkunftstupel (B-2): höchste order je Tupel\n for (const [ck, g] of gone.grades ?? []) {\n const cur = survivor.grades?.get(ck)\n if (!cur || g.order > cur.order) (survivor.grades ??= new Map()).set(ck, g)\n }\n // NUMERISCHES Minimum (Review 22): admittedAt ist eine Zahl — der\n // Default-Sort verglich Strings (9 > 10) und konnte den grade-wait\n // des verschmolzenen Members fälschlich verlängern\n survivor.admittedAt = [survivor.admittedAt, gone.admittedAt].filter((x) => x !== undefined).sort((x: number, y: number) => x - y)[0]\n if (survivor.status === 'admitted' && gone.status === 'admitted') { a.admitted -= 1n; admitPending(p, a, when) }\n else if (gone.status === 'admitted') { survivor.status = 'admitted' }\n return survivor\n}\nconst admitPending = (p: Person, a: any, when: number) => {\n // k−1-Nachrücken in Promotion-Commit-Ordnung (Sektion 2)\n while (a.admitted < boundOf(p)) {\n const next = [...new Set(a.byRel.values())].filter((x: any) => x.status === 'pending').sort((x: any, y: any) => x.pos < y.pos ? -1 : 1)[0]\n if (!next) break\n ;(next as any).status = 'admitted'\n // grade-wait ankert an der ADMISSION (Review 4, B-3): Nachrücker\n // sind provisorisch maskiert, bis Declaration oder Fensterablauf\n ;(next as any).admittedAt = when\n a.admitted += 1n\n }\n}\n/** Departure (Sektion 2): der Abgang EINER Beziehung entfernt nur\n * ihren Alias — „the relationships themselves remain fully active\"\n * (Review 16, B-3): der verschmolzene Eintrag (und sein Slot) stirbt\n * erst mit der LETZTEN Beziehung */\nexport function departMember (p: Person, relId: string, when: number) {\n finite(when)\n const a = admission(p)\n const e = a.byRel.get(relId)\n if (!e) return\n // die KETTE ist EINE Beziehung (Review 35): ihr Abgang entfernt auch\n // die Ketten-Aliase (byRel-Schlüssel, deren Kontakt sich als DIESE\n // Beziehung identifiziert — z. B. der frische Tupelschlüssel nach\n // einer Kettung mit vorbestehendem Eintrag); Aliase ANDERER\n // Beziehungen (Weg-2-Merge) bleiben\n for (const rid of [...e.relIds]) {\n if (rid === relId || (p.contacts.get(rid)?.relId ?? rid) === relId) { e.relIds.delete(rid); a.byRel.delete(rid) }\n }\n e.relIds.delete(relId)\n a.byRel.delete(relId)\n // der Grade-Strang der GEGANGENEN Beziehung stirbt mit ihr (Review\n // 17, B-1): „across the member's LIVE relationships' active heads\" —\n // Kontaktschlüssel dieser Beziehung verlassen die effektive\n // Grade-Auswertung atomar mit dem Departure\n for (const ck of [...e.rels]) {\n const c = p.contacts.get(ck)\n if ((c?.relId ?? ck) === relId) { e.rels.delete(ck); e.grades?.delete(ck) }\n }\n if (e.relIds.size > 0) return // Aliase bleiben, der Member bleibt admittiert\n if (e.status === 'admitted') { a.admitted -= 1n; admitPending(p, a, when) }\n}\nexport function promotionCommit (p: Person, relId: string, self: string, contactKey: string, when: number) {\n finite(when)\n const a = admission(p)\n let e = a.byRel.get(relId)\n if (e) {\n // spätere Verifikation derselben Beziehung: in place — auch eine\n // self-KORREKTUR per höherer Revision ändert nur den Inhalt, nie\n // Position oder Status (Sektion 2). Trifft die Korrektur die self\n // einer ANDEREN Beziehung, ist das der Weg-2-Merge\n if (e.self !== self) {\n const twin = [...a.byRel.values()].find((x) => x !== e && x.self === self)\n if (twin) { e.self = self; e = mergeEntries(p, a, e, twin, when) }\n else e.self = self\n }\n e.rels.add(contactKey)\n } else {\n // gleiche self auf einer ANDEREN Beziehung = der Weg-2-Merge\n const twin = [...a.byRel.values()].find((x) => x.self === self)\n if (twin) { twin.relIds.add(relId); twin.rels.add(contactKey); a.byRel.set(relId, twin); e = twin }\n else {\n // Admission ist TOTAL: unter dem Bound admitted (der Normalfall —\n // die Promotion selbst ist die Admission), am Bound\n // deliverable-pending (triggert nichts, rückt bei Abgang nach)\n const status = a.admitted < boundOf(p) ? 'admitted' : 'pending'\n if (status === 'admitted') a.admitted += 1n\n e = { id: relId, pos: (a.seq += 1n), relIds: new Set([relId]), self, rels: new Set([contactKey]), status, admittedAt: status === 'admitted' ? when : undefined, grades: new Map() } // id = kanonische Identität (Review 36)\n a.byRel.set(relId, e)\n }\n }\n return e\n}\n/** Kettung (B-4): der neue Kopf löst über die überlebende Beziehung auf;\n * hält die frische Beziehung schon einen EIGENEN Eintrag, verschmilzt\n * er atomar mit dem der alten (früheste Position, Aliase, k−1) */\nexport function chainAdmission (p: Person, survivingRelId: string, freshRelId: string, newContactKey: string, when: number) {\n finite(when)\n const a = admission(p)\n const oldE = a.byRel.get(survivingRelId)\n const freshE = a.byRel.get(freshRelId)\n let e = oldE\n if (oldE && freshE && oldE !== freshE) e = mergeEntries(p, a, oldE, freshE, when)\n else if (!oldE && freshE) { e = freshE; freshE.relIds.add(survivingRelId); a.byRel.set(survivingRelId, freshE) }\n if (e) { e.relIds.add(freshRelId); a.byRel.set(freshRelId, e); e.rels.add(newContactKey) }\n return e\n}\n// Declarations je HERKUNFTSTUPEL (Review 5, B-2): §6.4 — „a deactivated\n// head's declarations are dead with their tuple\". order = dieselbe\n// totale Verifikations-Commit-Ordnung wie die Promotions.\n// order stammt aus dem Moment der VERIFIKATION (Review 6, B-2): eine\n// vor dem Mapping verifizierte Declaration trägt ihren Stempel schon\n// und erhält beim späteren Commit KEINEN neuen — sonst schlüge sie\n// nach einem Merge eine echt später verifizierte Declaration\nconst declCommit = (p: Person, relId: string, grade: string, contactKey: string, order?: bigint) => {\n const e = admission(p).byRel.get(relId)\n if (e) (e.grades ??= new Map()).set(contactKey, { grade, order: order ?? (admission(p).seq += 1n) })\n return e\n}\n// die effektive Grade beim LESEN über die aktiven Köpfe berechnet —\n// Deaktivierung tötet die Declaration ohne Migrations- oder Aufräumlogik\nconst effectiveGrade = (p: Person, e: any): { grade: string, order: bigint } | null => {\n let best = null\n for (const [ck, g] of e.grades ?? []) {\n const c = p.contacts.get(ck)\n if (!c || c.deactivated) continue\n if (!best || g.order > best.order) best = g\n }\n return best\n}\n/**\n * Die Rekonziliations-Sicht (5.4): {(member, grade)} der admittierten,\n * unmaskierten Mitglieder. Maske: keine verifizierte Declaration UND\n * grade-wait (24h ab Admission) offen → nicht in der Sicht; nach\n * Ablauf fail-closed 'count'.\n */\nexport function viewOf (p: Person, when: number): { member: string, grade: string }[] {\n const seen = new Set<any>()\n const out: { member: string, grade: string }[] = []\n for (const e of admission(p).byRel.values()) {\n if (seen.has(e)) continue\n seen.add(e)\n if (e.status !== 'admitted') continue // deliverable-pending triggert nichts (Sektion 2)\n const g = effectiveGrade(p, e) // nur AKTIVE Köpfe zählen (B-2)\n if (g) out.push({ member: e.self, grade: g.grade })\n // Grenzzeitpunkt: „the window elapses only strictly afterwards\" —\n // bei exakter Gleichheit bleibt maskiert (Review 11, B-4)\n else if (e.admittedAt === undefined || when <= e.admittedAt + GRADE_WAIT) continue // provisorisch maskiert (B-3)\n else out.push({ member: e.self, grade: 'count' })\n }\n return out.sort((x, y) => x.member < y.member ? -1 : x.member > y.member ? 1 : 0)\n}\n\n// ── star@1 — die normative Wire-Form (5.2/5.2a) ────────────────────────\nconst kStar = (contact: any, counterpartAnchor: string, salt: string) =>\n relKey(contact, `rltp/visibility/blind/star/${contact.channel.own.anchor}/${counterpartAnchor}/${salt}`)\nconst kStarIn = (contact: any, counterpartAnchor: string, salt: string) =>\n relKey(contact, `rltp/visibility/blind/star/${counterpartAnchor}/${contact.channel.own.anchor}/${salt}`)\n// reine Berechnung: die 5.2a-Chunk-Serie einer Zustellung — count zählt\n// ALLE Mitglieder der Sicht, blinded[] nur die blinded-graded Teilmenge\nasync function buildStarChunks (contact: any, counterpartAnchor: string, salt: string, view: { member: string, grade: string }[]) {\n const k = await kStar(contact, counterpartAnchor, salt)\n const blinded: string[] = []\n for (const v of view) if (v.grade === 'blinded') blinded.push(await hmacU(k, v.member))\n blinded.sort()\n const count = String(view.length)\n const n = Math.max(1, Math.ceil(blinded.length / CHUNK_MAX))\n const chunks = []\n for (let i = 0; i < n; i++) {\n const body = { type: 'star@1', salt, seq: String(i + 1), last: i === n - 1, count, blinded: blinded.slice(i * CHUNK_MAX, (i + 1) * CHUNK_MAX) }\n chunks.push({ body, proof: { mac: await hmacU(k, jcs(body)) } })\n }\n return chunks\n}\nexport async function buildStar (p: Person, contact: any, when: number) {\n if (contact.deactivated) return null // deaktivierte Tupel stellen nichts aus (Review 9, B-3)\n return withStarLock(contact, async () => {\n if (contact.deactivated) return null // Re-Check nach dem Lock-Erwerb\n const salt = peekStarSeq(contact) // nur gepeekt (Review 25)\n const key = [...p.contacts.entries()].find(([, c]) => c === contact)?.[0]\n // dieselbe Commit-Revalidierung wie reconcile (Review 26): wanderte\n // die Sicht während der MAC-Awaits, wird mit der aktuellen neu\n // gebaut — „every delivery carries the set current at its\n // production commit\"\n for (;;) {\n const view = viewOf(p, when)\n const chunks = await buildStarChunks(contact, key!, salt, view)\n if (contact.deactivated) return null // Re-Check nach den MAC-Awaits (Review 10) — danach kein await\n if (!sameView(view, viewOf(p, when))) continue\n contact.starSeqNext = salt // COMMIT synchron mit der Ausgabe\n return chunks[0].body\n }\n })\n}\n// Empfängerseite: denselben Lieferschlüssel nachrechnen, EINEN Anker testen\nexport async function starMatch (p: Person, entry: any, snap: any, anchor: string) {\n const key = [...p.contacts.entries()].find(([, c]) => c === entry)?.[0]\n const k = await kStarIn(entry, key!, snap.salt)\n return snap.blinded.includes(await hmacU(k, anchor))\n}\nexport async function refreshStarInfo (p: Person) {\n for (const [key, entry] of p.contacts) {\n if (!entry.starReceived || !entry.channel?.own) continue\n const known = []\n const seen = new Set()\n for (const [k2, e] of p.contacts) {\n if (k2 === key || !e.selfAnchor || seen.has(e.selfAnchor)) continue\n seen.add(e.selfAnchor)\n if (await starMatch(p, entry, entry.starReceived, e.selfAnchor)) known.push(e.name)\n }\n entry.starInfo = { count: entry.starReceived.count, knownNames: known.sort() } // count bleibt String — 18 Stellen exakt\n }\n}\n\n// ── grade-declaration@1 (5.5) ──────────────────────────────────────────\nconst kGrade = (subjectCtx: any, holderKa: string, subjectAnchor: string, holderAnchor: string) =>\n C.ecdh(subjectCtx.x.priv, C.xRawOfMk(holderKa)!).then((sh) => C.hkdf(sh, `rltp/visibility/mac/grade/${subjectAnchor}/${holderAnchor}`))\n// revision IMMER vorreserviert (gepeekt) vom Aufrufer, der den\n// Issue-Lock hält und den Zähler synchron committet (Review 8, B-1:\n// kein Defaultpfad, der vor fehlbarer Arbeit verbraucht)\nasync function buildGradeDecl (p: Person, counterpartAnchor: string, grade: string, when: number, revision: string) {\n const contact = p.contacts.get(counterpartAnchor)\n const body = { type: 'grade-declaration@1', subject: contact.channel.own.anchor, holder: counterpartAnchor, grade, revision, issuedAt: C.iso(when) }\n const k = await kGrade(contact.channel.own, contact.channel.counterpartKa, body.subject, body.holder)\n return { body, proof: { mac: await hmacU(k, jcs(body)) } }\n}\n\n// ── Dokumente, Outbox, byte-identische Redelivery (Delivery §3/4.2/4.4) ─\n// Payload = das Artefakt selbst; das Dokument trägt KEINEN Proof (die\n// Artefakt-MACs sind der eine Träger). threadId frisch je Zustellung;\n// Chunks eines Salts teilen sie. Die outbox hält jede unquittierte\n// Zustellung als DENSELBEN Env — Redelivery ist byte-identisch (4.2).\nconst outboxOf = (contact: any) => (contact.outbox ??= new Map<string, any>())\nasync function sendDoc (p: Person, counterpartAnchor: string, slug: string, payload: any, when: number, threadId: string, meta: any = {}, ent: any = {}) {\n const contact = p.contacts.get(counterpartAnchor)\n const doc = {\n id: uuid(ent.id), type: TT + slug + '/0.1',\n issuer: contact.channel.own.anchor, recipient: counterpartAnchor,\n threadId, issuedAt: C.iso(when), payload,\n }\n const env = await C.seal(doc, contact.channel.counterpartKa, ent)\n const digest = await C.digestDoc(doc)\n outboxOf(contact).set(digest, { env, threadId, kind: slug, ...meta })\n return { to: contact, kind: slug + '/0.1', env }\n}\n// ── die Ausstellungs-Disziplin (Review 7, B-1/B-2) ─────────────────────\n// „Assigning a revision and persisting the issued body are one step per\n// scope\" (§6.4): je Kontakt serialisiert EIN Issue-Lock alle\n// Revisions-Producer; die Revision wird nur GEPEEKT, alles Fehlbare\n// (Bau, Seal, Digest) läuft davor, und Zähler + Outbox + Zustand\n// committen in EINEM synchronen Zug am Ende — ein Fehlschlag\n// verbraucht NICHTS, und gradeOutLast folgt der Ausstellungsordnung.\nexport const withIssueLock = <T>(contact: any, fn: () => Promise<T>): Promise<T> => {\n const run = (contact.issueLock ?? Promise.resolve()).then(fn, fn)\n contact.issueLock = run.catch(() => {})\n return run\n}\nexport const peekRev = (contact: any, field: string): string => {\n const next = BigInt(contact[field] ?? '0') + 1n\n if (next > ADMISSION_BOUND) throw new Error('scope exhausted — issues nothing further (2.1)')\n return String(next)\n}\n// prepare (fehlbar: Seal + Digest) / commit (synchron: Outbox-Eintrag)\nasync function prepareDoc (p: Person, counterpartAnchor: string, slug: string, payload: any, when: number, threadId: string, meta: any = {}, ent: any = {}) {\n const contact = p.contacts.get(counterpartAnchor)\n const doc = {\n id: uuid(ent.id), type: TT + slug + '/0.1',\n issuer: contact.channel.own.anchor, recipient: counterpartAnchor,\n threadId, issuedAt: C.iso(when), payload,\n }\n const env = await C.seal(doc, contact.channel.counterpartKa, ent)\n const digest = await C.digestDoc(doc)\n return { contact, digest, entry: { env, threadId, kind: slug, ...meta }, out: { to: contact, kind: slug + '/0.1', env } }\n}\nconst commitDoc = (prep: any) => { outboxOf(prep.contact).set(prep.digest, prep.entry); return prep.out }\n// Salt nur GEPEEKT (Review 25): strikt monoton, nie dicht (5.2) —\n// aber „taking the set snapshot, assigning the salt, and committing\n// are one step\": ein Bau-Fehler verbraucht nichts, auch am letzten\n// Wert entsteht nie falsche Erschöpfung. Der Aufrufer committet\n// synchron mit der Persistenz (unter dem Star-Lock serialisiert).\nconst peekStarSeq = (contact: any): string => {\n const next = BigInt(contact.starSeqNext ?? '0') + 1n\n if (next > ADMISSION_BOUND) throw new Error('scope exhausted — issues nothing further (2.1)')\n return String(next)\n}\n// EIN Lock je Kontakt für Produktion UND Empfang, geteilt mit dem\n// Continuity-Pfad (Review 4, B-1/B-2: Trust- und Continuity-Effekte\n// desselben Kontakts serialisieren gemeinsam; Reentry-Checks im Lock)\nexport const withContactLock = <T>(contact: any, fn: () => Promise<T>): Promise<T> => {\n const run = (contact.contLock ?? Promise.resolve()).then(fn, fn)\n contact.contLock = run.catch(() => {})\n return run\n}\nconst withStarLock = withContactLock\n// der Baseline-Automat (5.4, totale Tabelle): completion(salt), sobald\n// JEDER Chunk-Digest des Salts quittiert ist\nconst subOf = (contact: any) => (contact.sub ??= { highWater: 0n, baseline: null as null | { member: string, grade: string }[], inFlight: new Map<string, any>() })\nconst sameView = (a: any[], b: any[]) => a.length === b.length && a.every((x, i) => x.member === b[i].member && x.grade === b[i].grade)\n\n/**\n * reconcile (5.4 — die eine Regel): divergiert die Sicht von der\n * Baseline (⊥ = divergent, das New-Head-Korollar), und ist nicht\n * pausiert, wird der AKTUELLE Stand geliefert — an JEDEM weiteren\n * Delivery-Kontakt unter frischem, höherem Salt (5.4 wörtlich,\n * Review 23; Salts sind ausdrücklich nicht dicht). Es gibt keinen\n * Same-View-Retry; die 4.4-Byte-Identität ist eine Formvorschrift\n * für Chunk-Retries, keine Anordnung.\n */\nexport async function reconcile (p: Person, counterpartAnchor: string, when: number, ent: any = {}) {\n const contact = p.contacts.get(counterpartAnchor)\n if (!contact || contact.deactivated || !contact.trustGiven || contact.trustPaused) return null\n return withStarLock(contact, async () => {\n // Re-Check nach dem Lock-Erwerb (Review 9 B-3 / Review 11 B-1):\n // auch die Pause — „while paused, the delivery duty is suppressed\"\n if (contact.deactivated || contact.trustPaused) return null\n let view = viewOf(p, when)\n const s = subOf(contact)\n if (s.baseline && sameView(s.baseline, view)) return null\n // überholte In-Flight-Salts (≤ highWater) sind tot: der Empfänger\n // MUSS sie ablehnen — purgen, nie wiederverwenden (Review 2, B-7)\n for (const [salt, f] of [...s.inFlight]) {\n if (BigInt(salt) <= s.highWater) { for (const d of f.pending.keys()) outboxOf(contact).delete(d); s.inFlight.delete(salt) }\n }\n // KEIN Same-View-Retry (Review 23, B-1): 5.4 wörtlich — „a\n // delivery whose chunks are never all acknowledged … simply never\n // completes … and the next available delivery contact ships the\n // current view under a fresh, higher salt.\" Die 4.4-Byte-\n // Identitäts-Regel ist eine FORMVORSCHRIFT für den Fall eines\n // Chunk-Retries, keine Anordnung eines solchen — jeder weitere\n // Delivery-Kontakt prägt frisch und höher (Salts sind ausdrücklich\n // nicht dicht). So löst der Sender auch ein beim Empfänger\n // vergiftetes in-flight-Salt ab, ohne je vom Gift zu wissen; alte\n // Ack-Referenzen bleiben bis zur Completion-Purge sicher stehen.\n const salt = peekStarSeq(contact) // nur gepeekt (Review 25) — committet synchron mit Outbox + inFlight\n const threadId = ent.threadId ?? globalThis.crypto.randomUUID()\n // „taking the set snapshot, assigning the salt, and committing are\n // one step\" (Review 9, B-4): der Bau ist fehlbar und wartet — am\n // Commit wird die Sicht SYNCHRON neu verglichen; wanderte sie\n // während des Baus (Promotion/Declaration eines ANDEREN Kontakts),\n // wird mit der aktuellen Sicht neu gebaut, unter demselben Salt\n // (nichts wurde persistiert). Jede Zustellung trägt so den Stand\n // ihres Production-Commits.\n for (;;) {\n const chunks = await buildStarChunks(contact, counterpartAnchor, salt, view)\n const preps = []\n for (const chunk of chunks) preps.push(await prepareDoc(p, counterpartAnchor, 'star', chunk, when, threadId, { salt }, ent))\n // Re-Check (Review 9 B-3 / Review 11 B-1), danach kein await:\n // eine während des Baus gesetzte Pause supprimiert die Zustellung\n if (contact.deactivated || contact.trustPaused) return null\n const now = viewOf(p, when)\n if (!sameView(view, now)) {\n view = now\n if (s.baseline && sameView(s.baseline, view)) return null // konvergiert während des Baus → Schweigen\n continue\n }\n // COMMIT — ein synchroner Zug: Salt + Outbox + inFlight + Sicht\n contact.starSeqNext = salt\n const pending = new Map<string, any>()\n const envs = []\n for (const prep of preps) { const out = commitDoc(prep); pending.set(prep.digest, { env: out.env }); envs.push(out.env) }\n s.inFlight.set(salt, { view, pending, threadId })\n return { to: contact, kind: 'star/0.1', envs, salt }\n }\n })\n}\n\n// die eigene Grade-ENTSCHEIDUNG trägt einen Ausstellungs-Ordnungsstempel\n// (Review 27): beim Chaining gewinnt die ZULETZT AUSGESTELLTE („MUST\n// re-issue its most recently issued grade\"), nie die des zufällig\n// frischeren Kopfs\nexport const stampGradeOut = (p: Person, contact: any, grade: string) => {\n contact.gradeOutLast = grade\n contact.gradeOutOrder = ((p as any).gradeIssueSeq = ((p as any).gradeIssueSeq ?? 0n) + 1n)\n}\n// ── der Vertrauensakt (register no. 3: EIN menschlicher Akt) ────────────\n// setTrust stellt aus: anchor-mapping@2 (Offenlegung) + grade-\n// declaration@1 'blinded' (die Wahl) — zwei registrierte Dokumente.\n// Der Stern folgt über reconcile (5.4: die Promotion der Gegenseite\n// erzeugt dort die Divergenz; hier entsteht nur die eigene Sicht).\nexport async function setTrust (p: Person, counterpartAnchor: string, when: number, ent: any = {}) {\n const contact = p.contacts.get(counterpartAnchor)\n if (!contact) return { error: 'kein Kontakt' }\n if (!contact.channel?.own) return { error: 'kein eigener Kanal — einseitig (◇) hast du nichts freigegeben' }\n // GANZER Akt unter dem Issue-Lock (Review 7, B-1/B-2): Revisionen\n // werden nur gepeekt, alles Fehlbare läuft davor, Zähler + Outbox +\n // Zustand committen synchron am Ende — ein Seal-Fehler verbraucht\n // NICHTS, und kein Producer schiebt sich zwischen Peek und Commit\n return withIssueLock(contact, async () => {\n // ein deaktiviertes Tupel stellt nichts aus (Review 8, B-2 —\n // §6.4/„a chain append is atomic with the deactivation\"): geprüft\n // nach dem Lock-Erwerb UND synchron vor dem Commit\n if (contact.deactivated) return { error: 'tuple deactivated — Kopf der Beziehung ist gewandert' }\n if (contact.trustGiven) return { error: 'bereits geschenkt (Einweg-Tür)' }\n if (contact.trustPending) return { error: 'bereits unterwegs (Einweg-Tür)' } // Latch (Review 6, B-1)\n if (!scopeOk(contact.mapRevOut) || !scopeOk(contact.gradeRevOut)) return { error: 'scope exhausted — act suspended (2.1)' }\n contact.trustPending = true\n try {\n const mapRev = peekRev(contact, 'mapRevOut')\n const gradeRev = peekRev(contact, 'gradeRevOut')\n const whenIso = C.iso(when)\n const mapping = await buildMappingArtifact(p, contact, counterpartAnchor, when, mapRev)\n const grade = await buildGradeDecl(p, counterpartAnchor, 'blinded', when, gradeRev)\n const prepM = await prepareDoc(p, counterpartAnchor, 'anchor-mapping', mapping, when, uuid(ent.threadId), {}, ent)\n const prepG = await prepareDoc(p, counterpartAnchor, 'grade-declaration', grade, when, uuid(), {}, ent)\n if (contact.deactivated) return { error: 'tuple deactivated — Kopf der Beziehung ist gewandert' } // Re-Check (B-2), danach kein await\n // COMMIT — ein synchroner Zug (§6.4: assigning + persisting = one step)\n contact.mapRevOut = mapRev\n contact.gradeRevOut = gradeRev\n const outbound = [commitDoc(prepM), commitDoc(prepG)]\n contact.trustGiven = whenIso\n stampGradeOut(p, contact, 'blinded') // die zuletzt ausgestellte Entscheidung (für V2), mit Ordnungsstempel\n contact.sentMapping = mapping\n say(p, `Vertrauen geschenkt an ${contact.name}: Anker offengelegt (anchor-mapping@2) + Grade 'blinded' erklärt`)\n return { to: contact, outbound, env: outbound[0].env }\n } finally { contact.trustPending = false }\n })\n}\n/**\n * setGrade (5.5): die spätere Grade-Entscheidung des Subjekts — auch\n * 'count' (die Wahl gehört dem Kontakt; register no. 3 kollabiert sie\n * nur im Default-UX). Producer der Declaration, Revision monoton.\n */\nexport async function setGrade (p: Person, counterpartAnchor: string, grade: 'count' | 'blinded', when: number, ent: any = {}) {\n const contact = p.contacts.get(counterpartAnchor)\n if (!contact?.channel?.own || contact.deactivated) return { error: 'kein aktiver Kanal' }\n return withIssueLock(contact, async () => {\n // Re-Check nach dem Lock-Erwerb (Review 8, B-2): eine Kettung\n // während der Wartezeit deaktiviert dieses Tupel — es stellt nichts\n // mehr aus, gradeOutLast des neuen Kopfs bleibt die Wahrheit\n if (contact.deactivated) return { error: 'tuple deactivated — Kopf der Beziehung ist gewandert' }\n const gradeRev = peekRev(contact, 'gradeRevOut') // wirft bei Erschöpfung, verbraucht nichts (B-1)\n const g = await buildGradeDecl(p, counterpartAnchor, grade, when, gradeRev)\n const prep = await prepareDoc(p, counterpartAnchor, 'grade-declaration', g, when, uuid(), {}, ent)\n if (contact.deactivated) return { error: 'tuple deactivated — Kopf der Beziehung ist gewandert' } // Re-Check (B-2), danach kein await\n // COMMIT — ein synchroner Zug (Review 7, B-1)\n contact.gradeRevOut = gradeRev\n const out = commitDoc(prep)\n stampGradeOut(p, contact, grade)\n say(p, `Grade '${grade}' erklärt an ${contact.name}`)\n return { to: contact, outbound: [out] }\n })\n}\n// Pause (5.4): initial unpaused, EINZIGE Transition ist dieser Akt;\n// Unpause re-evaluiert die Divergenz (Producer: starRefreshAll)\nexport function setTrustPaused (p: Person, counterpartAnchor: string, paused: boolean) {\n const contact = p.contacts.get(counterpartAnchor)\n if (!contact?.trustGiven) return\n contact.trustPaused = !!paused\n say(p, paused ? `Kontakt-Updates an ${contact.name} pausiert (Geliefertes bleibt)` : `Kontakt-Updates an ${contact.name} wieder aktiv`)\n}\n/**\n * V2 (5.5): auf dem neuen Kopf stellt das Subjekt seinen zuletzt\n * ausgestellten Grade neu aus — Revision startet im neuen Tupel-Scope,\n * keine Nutzerfrage; das Mapping reist als MAY (6a.4) mit. Die Pause\n * supprimiert dies NICHT (5.5 kennt keine Pause-Ausnahme — sie\n * supprimiert nur die Stern-Delivery); die Pflicht (trustReissueDue)\n * stirbt erst mit der QUITTIERTEN Zustellung der Declaration.\n */\nexport async function reissueTrust (p: Person, counterpartAnchor: string, when: number, ent: any = {}) {\n const contact = p.contacts.get(counterpartAnchor)\n // Gate: eine AUSGESTELLTE Declaration ODER der Trust-Akt trägt die\n // Pflicht (Review 33, B-1) — nie nur trustGiven\n if (!contact?.channel?.own || contact.deactivated || (!contact.trustGiven && contact.gradeOutLast === undefined)) return null\n // KEINE Pause-Suppression (Review 12, B-4): 5.4 supprimiert die\n // DELIVERY-Pflicht (Stern); die Register-5-Neuausstellung läuft\n // „on the next available delivery contact\" ohne Pause-Ausnahme (5.5)\n if (contact.reissuePending) return null // Single-Flight\n contact.reissuePending = true\n try {\n return await withIssueLock(contact, async () => {\n if (contact.deactivated) return null // Re-Check nach dem Lock-Erwerb (Review 8, B-2)\n // unquittierte Neuausstellung → byte-identischer Retry\n for (const [digest, o] of outboxOf(contact)) if (o.kind === 'grade-declaration' && o.v2) {\n return { to: contact, outbound: [{ to: contact, kind: 'grade-declaration/0.1 (Retry, byte-identisch)', env: o.env }] }\n }\n // die MUST-Grade hängt NIE am MAY-Mapping (Review 5, B-5): Grade-\n // Scope erschöpft → Pflicht suspendiert (2.1, trustReissueDue\n // bleibt); Revisionen nur gepeekt, Commit synchron (Review 7, B-1)\n if (!scopeOk(contact.gradeRevOut)) return null\n const gradeRev = peekRev(contact, 'gradeRevOut')\n const grade = await buildGradeDecl(p, counterpartAnchor, contact.gradeOutLast ?? 'blinded', when, gradeRev)\n const prepG = await prepareDoc(p, counterpartAnchor, 'grade-declaration', grade, when, uuid(), { v2: true }, ent)\n let prepM: any, mapping: any, mapRev: string | undefined\n if (contact.trustGiven && scopeOk(contact.mapRevOut)) { // das MAY-Mapping gehört zum TRUST-Akt (6a.4)\n try {\n mapRev = peekRev(contact, 'mapRevOut')\n mapping = await buildMappingArtifact(p, contact, counterpartAnchor, when, mapRev)\n prepM = await prepareDoc(p, counterpartAnchor, 'anchor-mapping', mapping, when, uuid(), {}, ent)\n } catch { prepM = undefined /* MAY (6a.4) — ein Mapping-Fehler suspendiert nur das Mapping, verbraucht nichts */ }\n }\n if (contact.deactivated) return null // Re-Check (B-2), danach kein await\n // COMMIT — ein synchroner Zug (§6.4)\n contact.gradeRevOut = gradeRev\n stampGradeOut(p, contact, grade.body.grade) // die Neuausstellung IST eine Ausstellung (Review 27)\n const outbound = [commitDoc(prepG)]\n if (prepM) { contact.mapRevOut = mapRev; outbound.push(commitDoc(prepM)); contact.sentMapping = mapping }\n say(p, `Vertrauen auf dem neuen Kopf neu ausgestellt an ${contact.name} (5.5 — ohne neue Nutzerfrage)`)\n return { to: contact, outbound }\n })\n } finally { contact.reissuePending = false }\n}\n/**\n * Der Producer-Sweep (Host-Vertrag): erst die V2-Pflichten, dann die\n * 5.4-Rekonziliation je Empfänger. Idempotent, per-recipient resilient,\n * Retries byte-identisch.\n */\nexport async function starRefreshAll (p: Person, when: number, ent: any = {}) {\n const outbound: any[] = []\n const failures: { to: string, error: string }[] = []\n for (const [anchor, contact] of p.contacts) {\n if (contact.deactivated) continue\n try {\n // die V2-Pflicht läuft AUCH pausiert (Review 12, B-4) und AUCH\n // ohne Trust-Akt (Review 33, B-1: eine ausgestellte Declaration\n // genügt); nur die Stern-Delivery braucht trustGiven\n if (contact.trustReissueDue) {\n const r = await reissueTrust(p, anchor, when, ent)\n if (r) outbound.push(...r.outbound)\n }\n if (!contact.trustGiven || contact.trustPaused) continue\n const r = await reconcile(p, anchor, when, ent)\n if (r) for (const env of r.envs) outbound.push({ to: contact, kind: r.kind, env })\n } catch (e: any) { failures.push({ to: contact.name ?? anchor, error: String(e?.message ?? e) }) }\n }\n return Object.assign(outbound, { failures })\n}\n\n// ── Empfang: registrierte Dokumente, Schema-validiert, atomar geackt ────\nconst asmOf = (contact: any) => contact.asm\nexport async function receiveTrustDoc (p: Person, env: any, when: number, ent: any = {}) {\n const opened = await C.openEnvelope(p, env)\n if (opened.error) return { handled: false }\n const ctx = p.contexts.get(env.rkid)\n const fromEntry = ctx && [...p.contacts.entries()].find(([, c]) => c.channel?.own?.anchor === ctx.anchor)\n if (!fromEntry) return { handled: false }\n const [fromKey, from] = fromEntry\n const doc = opened.doc\n if (opened.duplicate) {\n // 4.2: innerhalb der Retention wird EXAKT der gespeicherte Ack\n // byte-identisch erneut gesendet — nie ein neu erzeugter\n const stored = from.ackStore?.get(opened.digest)\n return { handled: true, duplicate: true, ack: stored ? { to: from, kind: 'delivery-ack/0.1 (Re-Ack, byte-identisch)', env: stored } : undefined }\n }\n // Acks laufen durch dieselbe kritische Sektion (Delivery §6.2:\n // „stage 9 is a critical section whose lock set is the document\n // digest … it re-enters at stage 4\"): der Verlierer zweier\n // gleichzeitiger identischer Acks sieht nach der Lock-Wartezeit den\n // completed-effect cache und meldet duplicate-known — nie\n // 'ack unknown ref' (Review 13, B-3)\n if (doc?.type === ACK_TYPE) {\n // deaktivierte Tupel nehmen auch keine NEUEN Acks an (Review 37,\n // B-3: „not the active head … MUST be rejected\" — die Ausnahmen\n // betreffen Continuity-prior und gepinnte Introduction, nie Acks)\n if (from.deactivated) return { handled: true, error: 'tuple deactivated' }\n // Stufe 5 VOR dem Payload-Gate auch für Acks (Review 33, B-2):\n // recipient = eigener Anker (Empfänger-Prinzip)\n if (doc.recipient !== from.channel.own.anchor) return { handled: true, error: 'outer binding (recipient)' }\n return withContactLock(from, async () => {\n if (from.deactivated) return { handled: true, error: 'tuple deactivated' } // Re-Check nach dem Lock-Erwerb\n if ((p.deliveryCache ?? new Set()).has(opened.digest!)) return { handled: true, duplicate: true }\n return receiveAckInner(p, fromKey, from, opened)\n })\n }\n if (typeof doc?.type !== 'string' || !doc.type.startsWith(TT)) return { handled: false, doc }\n const slug = doc.type.slice(TT.length)\n if (!['anchor-mapping/0.1', 'grade-declaration/0.1', 'star/0.1'].includes(slug)) return { handled: false, doc }\n // Dokumentprofil (Delivery §3): Schema-validiert, proof-frei, Bindungen\n if (!schemaOk('rltp-delivery-document.schema.json', doc)) return { handled: true, error: 'malformed document' }\n if (doc.proof !== undefined) return { handled: true, error: 'document proof forbidden (one carrier)' }\n // Stufe 5: recipient = eigener Anker (Empfänger-Prinzip). Die\n // issuer-Bindung ist eine TYP-Konsistenzregel (Stufe 8) und läuft je\n // Zweig NACH dem Payload-Schema (Review 32)\n if (doc.recipient !== from.channel.own.anchor) return { handled: true, error: 'outer binding (recipient)' }\n // Kalender-Validität des DOKUMENTS (Review 12, B-3): „a verifier\n // MUST reject a date its RFC 3339 parser refuses\" — das Dokument-\n // Schema lief bereits; die PAYLOAD-Kalenderprüfung sitzt je Typ NACH\n // dem Payload-Schema (Review 31: Stufe 7 vor Stufe 8)\n if (!C.calOK(doc.issuedAt)) return { handled: true, error: 'calendar-invalid issuedAt' }\n // Ack erst NACH der Payload-Validierung bauen (M-3: keine Krypto\n // für formwidrige Fracht), aber VOR jeder Zustandsmutation\n // (poisoning rule: ein Ack-Bau-Fehler konsumiert nichts); Effekt +\n // Cache + ackStore committen in EINEM synchronen Zug (4.2/§6.2)\n const mkAck = () => buildAck(p, from, opened.digest!, doc.threadId, when).then((a) => a.env)\n const commit = (result: any, ackEnv: any) => {\n C.effectDone(p, opened.digest)\n ;(from.ackStore ??= new Map()).set(opened.digest, ackEnv)\n return { ...result, ack: { to: from, kind: 'delivery-ack/0.1', env: ackEnv } }\n }\n const r0: any = await (async () => { switch (slug) {\n case 'anchor-mapping/0.1': {\n return withContactLock(from, async () => {\n // Reentry (B-1/B-2): Kopf noch aktiv? Duplikat inzwischen? Revision noch frisch?\n if (from.deactivated) return { handled: true, error: 'tuple deactivated' }\n if ((p.deliveryCache ?? new Set()).has(opened.digest!)) {\n const stored = from.ackStore?.get(opened.digest)\n return { handled: true, duplicate: true, ack: stored ? { to: from, kind: 'delivery-ack/0.1 (Re-Ack, byte-identisch)', env: stored } : undefined }\n }\n const m = doc.payload\n // Stufe 7 zuerst: Payload-Schema → failed(malformed) (Review 30)\n if (!schemaOk('visibility-anchor-mapping.schema.json', m)) return { handled: true, error: 'malformed mapping' }\n if (doc.issuer !== fromKey) return { handled: true, error: 'outer binding (issuer, Stufe 8)' }\n if (!C.calOK(m.body.issuedAt)) return { handled: true, error: 'calendar-invalid issuedAt' } // Stufe 8, nach dem Schema (Review 31)\n if (doc.ceremony?.enactment !== undefined) return { handled: true, error: 'ceremony.enactment kann nicht nachrechnen (validation-failed)' } // Stufe 8 — NACH dem Payload-Schema (Review 30)\n // §6.3 in Spec-REIHENFOLGE (Review 19, B-1), Tupel = Ankunftskanal\n // (Review 9, B-1: Cross-Tupel-Bindung = Schritt 3 der Liste)\n if (!(await verifyMapping(p, m, fromKey))) { say(p, `Mapping von ${from.name} verifiziert NICHT — verworfen`); return { handled: true, error: 'mapping' } }\n // 6.4, die GENERISCHE Revisionsregel (Review 11, B-2): höher\n // ersetzt · gleich + JCS-identischer Body = idempotenter Repeat\n // (No-op-Effekt, geackt — resends bleiben harmlos) · gleich +\n // anderer Body = Äquivokation (reject, Zustand bleibt) ·\n // niedriger = reject\n if (BigInt(m.body.revision) === BigInt(from.mapRevIn ?? '0')) {\n if (from.mapping && jcs(m.body) === jcs(from.mapping.body)) {\n const ackEnv = await mkAck()\n if (from.deactivated) return { handled: true, error: 'tuple deactivated' }\n return commit({ handled: true, idempotent: true }, ackEnv)\n }\n return { handled: true, error: 'equivocation (gleiche Revision, anderer Body)' }\n }\n if (BigInt(m.body.revision) < BigInt(from.mapRevIn ?? '0')) return { handled: true, error: 'mapping revision (niedriger)' }\n const ackEnv = await mkAck() // fehlbar VOR jeder Mutation\n // synchroner Re-Check nach dem LETZTEN await (Review 5, B-1): eine\n // Kettung unter dem Lock eines ANDEREN Kontakts kann dieses Tupel\n // während verify/mkAck deaktiviert haben — danach kein await mehr\n if (from.deactivated) return { handled: true, error: 'tuple deactivated' }\n if (BigInt(m.body.revision) <= BigInt(from.mapRevIn ?? '0')) return { handled: true, error: 'mapping revision (nicht strikt größer)' }\n from.mapRevIn = m.body.revision\n from.selfAnchor = m.body.self\n from.mapping = m\n from.trustReceived = doc.issuedAt\n const e = promotionCommit(p, relIdOf(p, fromKey), m.body.self, fromKey, when)\n e.admittedAt ??= when // grade-wait ankert an der Admission (5.4)\n // eine VOR dem Mapping verifizierte Declaration steht und wirkt\n // bei der Admission sofort (Sektion 2 / 5.4)\n if (from.gradeIn && !e.grades?.has(fromKey)) declCommit(p, relIdOf(p, fromKey), from.gradeIn, fromKey, from.gradeInOrder)\n say(p, `${from.name} vertraut dir: stabiler Anker geprüft übernommen (nur für dich beweisend)`)\n // der Producer-Sweep läuft NACH der Lock-Sektion (Reentranz!)\n return commit({ handled: true, disclosed: m.body.self, fromName: from.name, __sweep: true }, ackEnv)\n })\n }\n case 'grade-declaration/0.1': {\n return withContactLock(from, async () => {\n if (from.deactivated) return { handled: true, error: 'tuple deactivated' }\n if ((p.deliveryCache ?? new Set()).has(opened.digest!)) {\n const stored = from.ackStore?.get(opened.digest)\n return { handled: true, duplicate: true, ack: stored ? { to: from, kind: 'delivery-ack/0.1 (Re-Ack, byte-identisch)', env: stored } : undefined }\n }\n const g = doc.payload\n if (!schemaOk('visibility-grade-declaration.schema.json', g)) return { handled: true, error: 'malformed grade' }\n if (doc.issuer !== fromKey) return { handled: true, error: 'outer binding (issuer, Stufe 8)' }\n if (!C.calOK(g.body.issuedAt)) return { handled: true, error: 'calendar-invalid issuedAt' } // Stufe 8, nach dem Schema (Review 31)\n if (doc.ceremony?.enactment !== undefined) return { handled: true, error: 'ceremony.enactment kann nicht nachrechnen (validation-failed)' } // Stufe 8 — NACH dem Payload-Schema (Review 30)\n if (g.body.subject !== fromKey || g.body.holder !== from.channel.own.anchor) return { handled: true, error: 'grade binding' }\n const k = await kGrade(from.channel.own, from.channel.counterpartKa, g.body.subject, g.body.holder)\n if ((await hmacU(k, jcs(g.body))) !== g.proof.mac) return { handled: true, error: 'grade mac' }\n // 6.4, die GENERISCHE Revisionsregel (Review 11, B-2):\n // dreiteilig — siehe Mapping-Pfad\n if (BigInt(g.body.revision) === BigInt(from.gradeRevIn ?? '0')) {\n if (from.gradeBodyIn && jcs(g.body) === from.gradeBodyIn) {\n const ackEnv = await mkAck()\n if (from.deactivated) return { handled: true, error: 'tuple deactivated' }\n return commit({ handled: true, idempotent: true }, ackEnv)\n }\n return { handled: true, error: 'equivocation (gleiche Revision, anderer Body)' }\n }\n if (BigInt(g.body.revision) < BigInt(from.gradeRevIn ?? '0')) return { handled: true, error: 'grade revision (niedriger)' }\n const ackEnv = await mkAck() // fehlbar VOR jeder Mutation\n if (from.deactivated) return { handled: true, error: 'tuple deactivated' } // Re-Check (B-1), danach kein await\n if (BigInt(g.body.revision) <= BigInt(from.gradeRevIn ?? '0')) return { handled: true, error: 'grade revision (nicht strikt größer)' }\n from.gradeRevIn = g.body.revision\n from.gradeBodyIn = jcs(g.body) // für den Idempotenz-Vergleich (Review 11, B-2)\n from.gradeIn = g.body.grade\n from.gradeInOrder = (admission(p).seq += 1n) // Verifikations-Commit-Ordnung JETZT (B-2)\n if (from.selfAnchor) declCommit(p, relIdOf(p, fromKey), g.body.grade, fromKey, from.gradeInOrder)\n say(p, `${from.name} erklärt Grade '${g.body.grade}'`)\n return commit({ handled: true, grade: g.body.grade, __sweep: true }, ackEnv)\n })\n }\n case 'star/0.1': {\n // Stage-9-Lockmenge in kind: konkurrierende Chunks derselben\n // Assembly serialisieren über den Kontakt-Lock (§4.4)\n return withStarLock(from, async () => {\n if (from.deactivated) return { handled: true, error: 'tuple deactivated' } // §6.4 — auch der Star-Pfad (Review 5, B-1)\n // Stage-4-Reentry nach Lock-Wartezeit (§6.2): ein inzwischen\n // verarbeitetes Duplikat erhält den gespeicherten Ack byte-identisch\n if ((p.deliveryCache ?? new Set()).has(opened.digest!)) {\n const stored = from.ackStore?.get(opened.digest)\n return { handled: true, duplicate: true, ack: stored ? { to: from, kind: 'delivery-ack/0.1 (Re-Ack, byte-identisch)', env: stored } : undefined }\n }\n const chunk = doc.payload\n if (!schemaOk('visibility-star.schema.json', chunk)) return { handled: true, error: 'malformed star' }\n if (doc.issuer !== fromKey) return { handled: true, error: 'outer binding (issuer, Stufe 8)' }\n if (doc.ceremony?.enactment !== undefined) return { handled: true, error: 'ceremony.enactment kann nicht nachrechnen (validation-failed)' } // Stufe 8 — NACH dem Payload-Schema (Review 30)\n const b = chunk.body\n // Empfänger-Monotonie (5.2): nicht strikt größer als der\n // completed High-Water → verworfen\n if (BigInt(b.salt) <= BigInt(from.starSaltIn ?? '0')) return { handled: true, error: 'star replay (nicht strikt größer)' }\n // VERGIFTETER Salt (Review 21): nach einem Assembly-Konflikt\n // wird KEIN weiterer Chunk dieser Lieferung quittiert — sonst\n // kombinieren früh geackte, verlorene Pufferwirkungen mit\n // späteren Acks zu einer falschen Completion („the delivery\n // simply cannot complete until every seq is held\")\n if (from.starPoison?.has(b.salt)) return { handled: true, error: 'star salt vergiftet (assembly conflict)' }\n const k = await kStarIn(from, fromKey, b.salt)\n if ((await hmacU(k, jcs(b))) !== chunk.proof.mac) return { handled: true, error: 'star mac' }\n // Re-Check nach den MAC-Awaits (Review 6, B-1): ab hier wird bis\n // zum jeweils nächsten await NUR NOCH LOKAL entschieden — die\n // Assembly ist Tupel-Zustand und darf nach einer Deaktivierung\n // keinen Chunk mehr aufnehmen („dies, atomically, with its\n // tuple's deactivation\")\n if (from.deactivated) return { handled: true, error: 'tuple deactivated' }\n // 5.2a-Entscheidungen auf LOCALS (Review 6, B-1): höherer Salt\n // verdrängt, niedrigerer wird verworfen, threadId-Dissens\n // verwirft, Lücken puffern — GESCHRIEBEN wird erst nach Ack-Bau\n // und letztem Re-Check, in einem synchronen Zug\n const cur = asmOf(from)\n const displaced = cur && BigInt(b.salt) > BigInt(cur.salt)\n if (cur && !displaced && BigInt(b.salt) < BigInt(cur.salt)) return { handled: true, error: 'below open assembly' }\n const a = (!cur || displaced) ? { salt: b.salt, threadId: doc.threadId, count: b.count, chunks: new Map(), lastSeq: undefined as string | undefined } : cur\n if (doc.threadId !== a.threadId || b.count !== a.count) { from.asm = undefined; (from.starPoison ??= new Set()).add(b.salt); return { handled: true, error: 'assembly conflict (threadId/count)' } }\n const seq = b.seq\n if (a.chunks.has(seq)) { from.asm = undefined; (from.starPoison ??= new Set()).add(b.salt); return { handled: true, error: 'assembly conflict (seq)' } }\n if (b.last && a.lastSeq !== undefined) { from.asm = undefined; (from.starPoison ??= new Set()).add(b.salt); return { handled: true, error: 'assembly conflict (two last)' } }\n const candLast = b.last ? seq : a.lastSeq\n if (candLast !== undefined && BigInt(seq) > BigInt(candLast)) { from.asm = undefined; (from.starPoison ??= new Set()).add(b.salt); return { handled: true, error: 'seq beyond last' } }\n // auch BEREITS GEPUFFERTE Chunks oberhalb von last verwerfen die\n // Assembly (Review 16, B-1): „a seq greater than the held last\n // chunk's … reject\" gilt unabhängig von der Ankunftsreihenfolge\n if (candLast !== undefined) for (const s of a.chunks.keys()) if (BigInt(s) > BigInt(candLast)) { from.asm = undefined; (from.starPoison ??= new Set()).add(b.salt); return { handled: true, error: 'seq beyond last (gepuffert)' } }\n let ackEnv: any\n const complete0 = candLast !== undefined && (() => { for (let i = 1n; i <= BigInt(candLast); i++) if (String(i) !== seq && !a.chunks.has(String(i))) return false; return true })()\n if (!complete0) {\n ackEnv = await mkAck()\n if (from.deactivated) return { handled: true, error: 'tuple deactivated' } // Re-Check (B-1), danach kein await\n from.asm = a // Übernahme JETZT — synchron mit dem Puffern\n if (b.last) a.lastSeq = seq\n a.chunks.set(seq, b)\n return commit({ handled: true, partial: true }, ackEnv)\n }\n // der KOMPLETTIERENDE Chunk: Union aus Puffer + aktuellem Chunk\n // OHNE Mutation berechnen und validieren, dann Ack + Re-Check,\n // dann Übernahme + completed-salt + Cache + Ack in EINEM\n // SYNCHRONEN Zug (§4.4); die UI-Auffrischung läuft NACH dem Commit\n const union: string[] = []\n for (let i = 1n; i <= BigInt(candLast!); i++) union.push(...(String(i) === seq ? b : a.chunks.get(String(i))).blinded)\n const sorted = [...union].every((x, i, arr) => i === 0 || arr[i - 1] < x)\n if (!sorted || BigInt(union.length) > BigInt(a.count)) { from.asm = undefined; (from.starPoison ??= new Set()).add(a.salt); return { handled: true, error: 'assembly invalid (order/|union|>count)' } }\n ackEnv = await mkAck() // JETZT ist alles validiert (M-2), vor der Übernahme\n if (from.deactivated) return { handled: true, error: 'tuple deactivated' } // Re-Check (B-1), danach kein await\n from.asm = undefined\n from.starSaltIn = a.salt\n from.starReceived = { salt: a.salt, count: a.count, blinded: union }\n if (from.starPoison) for (const ps of from.starPoison) if (BigInt(ps) <= BigInt(a.salt)) from.starPoison.delete(ps) // Gift unterhalb des High-Water ist gegenstandslos\n const out = commit({ handled: true, star: true }, ackEnv)\n await refreshStarInfo(p)\n say(p, `Kontakt-Update von ${from.name}: ${a.count} Kontakte (geblendet: ${union.length})`)\n return out\n })\n }\n }\n return { handled: false, doc } })()\n // Effekt fertig, Lock frei — jetzt der Producer-Sweep (5.4), dessen\n // reconcile die Empfänger-Locks selbst nimmt\n if (r0?.__sweep) {\n delete r0.__sweep\n const outbound = await starRefreshAll(p, when, ent)\n r0.outbound = [...outbound]\n if (outbound.failures.length) r0.outboundError = outbound.failures.map((f: any) => `${f.to}: ${f.error}`).join(' · ')\n }\n return r0\n}\n// completion (5.4-Automat): jeder Chunk-Ack streicht seinen Digest;\n// der letzte lässt den Automaten laufen\nasync function receiveAckInner (p: Person, fromKey: string, from: any, opened: any) {\n const v = await verifyAck(p, from, opened.doc)\n if (!v) return { handled: true, error: 'ack invalid' }\n if (from.deactivated) return { handled: true, error: 'tuple deactivated' } // Re-Check nach den Awaits (Review 37, B-3), danach kein await\n const o = outboxOf(from).get(v.ref)\n if (!o || o.threadId !== v.threadId) return { handled: true, error: 'ack unknown ref' }\n // ZWEI Pflicht-Ebenen (Review 19, B-3): der Delivery-Ack erledigt den\n // TRANSPORT — die Visibility-Pflicht eines choice/report-Mappings\n // („resent … until answered by the counterpart's aligned mapping\")\n // lebt weiter: der Eintrag bleibt für byte-identische Resends, bis\n // die Alignment-Antwort ihn retired. Die ALIGNMENT-Pflicht selbst\n // stirbt mit dem Ack (completed delivery, §6a.3).\n if (o.kind === 'continuity-mapping' && o.duty !== 'align' && !o.retired) o.acked = true\n else outboxOf(from).delete(v.ref)\n C.effectDone(p, opened.digest)\n if (o.kind === 'star') {\n const s = subOf(from)\n const f = s.inFlight.get(o.salt)\n if (f) {\n f.pending.delete(v.ref)\n if (f.pending.size === 0) {\n s.inFlight.delete(o.salt)\n if (BigInt(o.salt) > s.highWater) { s.highWater = BigInt(o.salt); s.baseline = f.view }\n // Completion räumt alle niedrigeren In-Flights (tot beim Empfänger)\n for (const [salt2, f2] of [...s.inFlight]) if (BigInt(salt2) < s.highWater) { for (const d of f2.pending.keys()) outboxOf(from).delete(d); s.inFlight.delete(salt2) }\n return { handled: true, completed: o.salt, advanced: true }\n }\n return { handled: true, partialAck: true }\n }\n }\n if (o.v2) delete from.trustReissueDue // die V2-Pflicht stirbt mit der QUITTIERTEN Zustellung\n if (o.duty === 'align') from.contAligned = true // 6a.3: Alignment-Pflicht stirbt mit der Completion\n return { handled: true, acked: o.kind }\n}\nexport async function receiveAck (p: Person, env: any) {\n return receiveTrustDoc(p, env, 0)\n}"]}
package/dist/probe.d.ts CHANGED
@@ -3,7 +3,5 @@ export { SCHEMAS } from './schemas.js';
3
3
  export { COMMUNITY_GENESIS } from './probe/deps.js';
4
4
  export type * as wire from './wire.js';
5
5
  export * as introduce from './probe/introduce.js';
6
- export * as trust from './probe/trust.js';
7
- export * as continuity from './probe/continuity.js';
8
6
  export * as membership from './probe/membership.js';
9
7
  //# sourceMappingURL=probe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../src/probe.ts"],"names":[],"mappings":"AA+BA,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAK7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAKnD,YAAY,KAAK,IAAI,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../src/probe.ts"],"names":[],"mappings":"AA+BA,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAK7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAKnD,YAAY,KAAK,IAAI,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA"}
package/dist/probe.js CHANGED
@@ -14,11 +14,11 @@
14
14
  // The modules map onto two specifications:
15
15
  //
16
16
  // Network Visibility introduce (mediated introductions over a
17
- // rendezvous drop) · trust (the explicit trust
18
- // act: anchor-mapping@2, the blinded star,
19
- // pause) · continuity (§6a: probe + mapping —
20
- // re-recognizing a relationship after a fresh
21
- // enactment, chains instead of duplicates)
17
+ // rendezvous drop) — the trust act, the blinded
18
+ // star, §6a continuity and the deniable ack
19
+ // GRADUATED to the root entry point on
20
+ // 04.09.2026 (`visibility.trust/.continuity/
21
+ // .acks`, design/probe-nachzug-konvergenz-2026-09.md)
22
22
  // Membership + Access membership (founding, prelude, VIC invite,
23
23
  // consent, admission, welcome, vouch@2)
24
24
  //
@@ -35,7 +35,5 @@
35
35
  export { SCHEMAS } from './schemas.js';
36
36
  export { COMMUNITY_GENESIS } from './probe/deps.js';
37
37
  export * as introduce from './probe/introduce.js';
38
- export * as trust from './probe/trust.js';
39
- export * as continuity from './probe/continuity.js';
40
38
  export * as membership from './probe/membership.js';
41
39
  //# sourceMappingURL=probe.js.map
package/dist/probe.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"probe.js","sourceRoot":"","sources":["../src/probe.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,EAAE;AACF,iEAAiE;AACjE,uEAAuE;AACvE,EAAE;AACF,2CAA2C;AAC3C,EAAE;AACF,kEAAkE;AAClE,sEAAsE;AACtE,kEAAkE;AAClE,qEAAqE;AACrE,qEAAqE;AACrE,kEAAkE;AAClE,oEAAoE;AACpE,+DAA+D;AAC/D,EAAE;AACF,qEAAqE;AACrE,sEAAsE;AACtE,qDAAqD;AACrD,EAAE;AACF,uEAAuE;AACvE,wEAAwE;AAGxE,uEAAuE;AACvE,oEAAoE;AACpE,uEAAuE;AACvE,wDAAwD;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAMnD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA","sourcesContent":["// @real-life/trust-protocol/probe — the layers still being cast.\n//\n// ┌──────────────────────────────────────────────────────────────────┐\n// │ NOT WIRE-NORMATIVE. These forms are probes: they exercise the │\n// │ converged semantics of their layer, but their transport shapes │\n// │ carry @probe and WILL change. Experiment with them; do not │\n// │ ship them as if they were the standard, and do not treat their │\n// │ wire forms as an interoperability target. │\n// └──────────────────────────────────────────────────────────────────┘\n//\n// The separation is structural on purpose: a subpath import is a\n// decision someone has to make, not a name they can reach by accident.\n//\n// The modules map onto two specifications:\n//\n// Network Visibility introduce (mediated introductions over a\n// rendezvous drop) · trust (the explicit trust\n// act: anchor-mapping@2, the blinded star,\n// pause) · continuity (§6a: probe + mapping —\n// re-recognizing a relationship after a fresh\n// enactment, chains instead of duplicates)\n// Membership + Access membership (founding, prelude, VIC invite,\n// consent, admission, welcome, vouch@2)\n//\n// Everything operates on the probe WORLD: a Person (deps.js) holding\n// contexts, contacts, groups — DOM-free and storage-free, so the same\n// code drives tests, simulators and future adapters.\n//\n// When a layer converges, its module graduates to the main entry point\n// and this file loses a line. That is the intended direction of travel.\n\nexport type { Person } from './probe/deps.js'\n// the LIVE schema bundle (deep-frozen): it tracks the running castings\n// and therefore belongs to the probe surface, not the pinned root —\n// the root pins each module to a named casting (see README, Versions),\n// this bundle moves with the repository (review 4, M-1)\nexport { SCHEMAS } from './schemas.js'\nexport { COMMUNITY_GENESIS } from './probe/deps.js'\n// the wire-artifact types GENERATED from the same schemas (wire.ts):\n// structural projections only — satisfying a type is necessary for\n// conformance, never sufficient; the schemas remain normative. They\n// live here for the same reason SCHEMAS does: they track the castings.\nexport type * as wire from './wire.js'\nexport * as introduce from './probe/introduce.js'\nexport * as trust from './probe/trust.js'\nexport * as continuity from './probe/continuity.js'\nexport * as membership from './probe/membership.js'\n"]}
1
+ {"version":3,"file":"probe.js","sourceRoot":"","sources":["../src/probe.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,EAAE;AACF,iEAAiE;AACjE,uEAAuE;AACvE,EAAE;AACF,2CAA2C;AAC3C,EAAE;AACF,kEAAkE;AAClE,uEAAuE;AACvE,mEAAmE;AACnE,8DAA8D;AAC9D,oEAAoE;AACpE,6EAA6E;AAC7E,oEAAoE;AACpE,+DAA+D;AAC/D,EAAE;AACF,qEAAqE;AACrE,sEAAsE;AACtE,qDAAqD;AACrD,EAAE;AACF,uEAAuE;AACvE,wEAAwE;AAGxE,uEAAuE;AACvE,oEAAoE;AACpE,uEAAuE;AACvE,wDAAwD;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAMnD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA","sourcesContent":["// @real-life/trust-protocol/probe — the layers still being cast.\n//\n// ┌──────────────────────────────────────────────────────────────────┐\n// │ NOT WIRE-NORMATIVE. These forms are probes: they exercise the │\n// │ converged semantics of their layer, but their transport shapes │\n// │ carry @probe and WILL change. Experiment with them; do not │\n// │ ship them as if they were the standard, and do not treat their │\n// │ wire forms as an interoperability target. │\n// └──────────────────────────────────────────────────────────────────┘\n//\n// The separation is structural on purpose: a subpath import is a\n// decision someone has to make, not a name they can reach by accident.\n//\n// The modules map onto two specifications:\n//\n// Network Visibility introduce (mediated introductions over a\n// rendezvous drop) — the trust act, the blinded\n// star, §6a continuity and the deniable ack\n// GRADUATED to the root entry point on\n// 04.09.2026 (`visibility.trust/.continuity/\n// .acks`, design/probe-nachzug-konvergenz-2026-09.md)\n// Membership + Access membership (founding, prelude, VIC invite,\n// consent, admission, welcome, vouch@2)\n//\n// Everything operates on the probe WORLD: a Person (deps.js) holding\n// contexts, contacts, groups — DOM-free and storage-free, so the same\n// code drives tests, simulators and future adapters.\n//\n// When a layer converges, its module graduates to the main entry point\n// and this file loses a line. That is the intended direction of travel.\n\nexport type { Person } from './probe/deps.js'\n// the LIVE schema bundle (deep-frozen): it tracks the running castings\n// and therefore belongs to the probe surface, not the pinned root —\n// the root pins each module to a named casting (see README, Versions),\n// this bundle moves with the repository (review 4, M-1)\nexport { SCHEMAS } from './schemas.js'\nexport { COMMUNITY_GENESIS } from './probe/deps.js'\n// the wire-artifact types GENERATED from the same schemas (wire.ts):\n// structural projections only — satisfying a type is necessary for\n// conformance, never sufficient; the schemas remain normative. They\n// live here for the same reason SCHEMAS does: they track the castings.\nexport type * as wire from './wire.js'\nexport * as introduce from './probe/introduce.js'\nexport * as membership from './probe/membership.js'\n"]}