@allocator-one/rcl 4.5.8 → 4.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +5 -4
  2. package/dist/consensus/semantic-deduper.d.ts +2 -1
  3. package/dist/consensus/semantic-deduper.js +21 -10
  4. package/dist/consensus/semantic-deduper.js.map +1 -1
  5. package/dist/converge/attempt-budget.d.ts +11 -0
  6. package/dist/converge/attempt-budget.js +119 -61
  7. package/dist/converge/attempt-budget.js.map +1 -1
  8. package/dist/converge/delivery-reconciliation.d.ts +2 -1
  9. package/dist/converge/delivery-reconciliation.js +17 -9
  10. package/dist/converge/delivery-reconciliation.js.map +1 -1
  11. package/dist/converge/launch-guard.d.ts +3 -0
  12. package/dist/converge/launch-guard.js +53 -17
  13. package/dist/converge/launch-guard.js.map +1 -1
  14. package/dist/converge/recovered-production.d.ts +14 -0
  15. package/dist/converge/recovered-production.js +61 -0
  16. package/dist/converge/recovered-production.js.map +1 -0
  17. package/dist/converge/recovery-launch.js +82 -35
  18. package/dist/converge/recovery-launch.js.map +1 -1
  19. package/dist/converge/run-state.d.ts +2 -0
  20. package/dist/converge/run-state.js +26 -12
  21. package/dist/converge/run-state.js.map +1 -1
  22. package/dist/converge/semantic-state.js +18 -4
  23. package/dist/converge/semantic-state.js.map +1 -1
  24. package/dist/coordination/registry-lock.d.ts +2 -0
  25. package/dist/coordination/registry-lock.js +42 -13
  26. package/dist/coordination/registry-lock.js.map +1 -1
  27. package/dist/evidence/claim-recovery/delivery.d.ts +25 -0
  28. package/dist/evidence/claim-recovery/delivery.js +100 -0
  29. package/dist/evidence/claim-recovery/delivery.js.map +1 -0
  30. package/dist/evidence/claim-recovery/public-adoption.d.ts +31 -0
  31. package/dist/evidence/claim-recovery/public-adoption.js +177 -0
  32. package/dist/evidence/claim-recovery/public-adoption.js.map +1 -0
  33. package/dist/evidence/claim-recovery/public-manifest.d.ts +114 -0
  34. package/dist/evidence/claim-recovery/public-manifest.js +11 -0
  35. package/dist/evidence/claim-recovery/public-manifest.js.map +1 -0
  36. package/dist/evidence/claim-recovery/public-model.d.ts +85 -0
  37. package/dist/evidence/claim-recovery/public-model.js +177 -0
  38. package/dist/evidence/claim-recovery/public-model.js.map +1 -0
  39. package/dist/evidence/original-run/journal.d.ts +10 -0
  40. package/dist/evidence/original-run/journal.js +55 -3
  41. package/dist/evidence/original-run/journal.js.map +1 -1
  42. package/dist/evidence/original-run/lock.js +22 -9
  43. package/dist/evidence/original-run/lock.js.map +1 -1
  44. package/dist/evidence/recover-claim.d.ts +21 -0
  45. package/dist/evidence/recover-claim.js +504 -0
  46. package/dist/evidence/recover-claim.js.map +1 -0
  47. package/dist/index.js +228 -136
  48. package/dist/index.js.map +1 -1
  49. package/dist/report/assembly.d.ts +2 -0
  50. package/dist/report/assembly.js +1 -0
  51. package/dist/report/assembly.js.map +1 -1
  52. package/dist/report/consensus-assembly.d.ts +2 -0
  53. package/dist/report/consensus-assembly.js +6 -3
  54. package/dist/report/consensus-assembly.js.map +1 -1
  55. package/dist/report/reviewer-artifact.js +3 -1
  56. package/dist/report/reviewer-artifact.js.map +1 -1
  57. package/dist/report/run-header.js +2 -0
  58. package/dist/report/run-header.js.map +1 -1
  59. package/dist/telemetry/deliver.d.ts +8 -0
  60. package/dist/telemetry/deliver.js +55 -8
  61. package/dist/telemetry/deliver.js.map +1 -1
  62. package/dist/telemetry/events.js +2 -0
  63. package/dist/telemetry/events.js.map +1 -1
  64. package/dist/telemetry/outbox.d.ts +20 -0
  65. package/dist/telemetry/outbox.js +324 -103
  66. package/dist/telemetry/outbox.js.map +1 -1
  67. package/dist/telemetry/reviewer-delivery.d.ts +95 -3
  68. package/dist/telemetry/reviewer-delivery.js +600 -12
  69. package/dist/telemetry/reviewer-delivery.js.map +1 -1
  70. package/dist/telemetry/sink.d.ts +14 -0
  71. package/dist/telemetry/sink.js +44 -2
  72. package/dist/telemetry/sink.js.map +1 -1
  73. package/dist/telemetry/terminal-reviewer-delivery.d.ts +154 -5
  74. package/dist/telemetry/terminal-reviewer-delivery.js +196 -21
  75. package/dist/telemetry/terminal-reviewer-delivery.js.map +1 -1
  76. package/package.json +1 -1
@@ -0,0 +1,504 @@
1
+ import { manifestSchema } from './claim-recovery/public-manifest.js';
2
+ import { prepareClaimAdoption, verifyAdoptionFiles, verifyReplacedAbsence } from './claim-recovery/public-adoption.js';
3
+ import { readClaimProof, writeClaimProof } from './claim-recovery/proof-storage.js';
4
+ import { scrubDeep } from '../telemetry/scrub.js';
5
+ import { randomUUID } from 'node:crypto';
6
+ import { lstat, realpath } from 'node:fs/promises';
7
+ import { dirname } from 'node:path';
8
+ import { isDeepStrictEqual } from 'node:util';
9
+ import { resolveGitCommonDir } from '../converge/attempt-budget.js';
10
+ import { loadConvergeRunStateEvidence, convergeRunStatePath } from '../converge/run-state.js';
11
+ import { withRecoveryTarget } from '../converge/target-ownership.js';
12
+ import { applyNativeRecovery, deriveNativeRecovery, nativeRecoveryPlanProjectionVersion, readNativeRecoverySourceJsons, readNativeRecoveryMaterials, recoveryAnchors } from '../converge/recovery-state.js';
13
+ import { correctionAnchor } from '../converge/correction-anchors.js';
14
+ import { prepareClaimSplit } from './claim-split.js';
15
+ import { prepareObligationTransfer, prepareClaimDisposition, validatePreservedDispositionSubject } from './claim-recovery/validation/occurrence.js';
16
+ import { validateOccurrenceSource } from './claim-recovery/validation/occurrence-source.js';
17
+ import { projectOccurrenceCarrier } from './claim-recovery/validation/carrier-projection.js';
18
+ import { readClaimTargetHistory, claimHistoryContent, sameClaimHistoryEvidence } from './claim-recovery/carrier-inventory.js';
19
+ import { publicClaimSelectionSchema, historySource, historyContext, claimRunHistory, claimCarriers, assertHistoryExtension, assertUnusedClaimIdentity } from './claim-recovery/public-model.js';
20
+ import { deliverPreparedClaimEvent } from './claim-recovery/delivery.js';
21
+ import { decodeRecoveryDocument, decodeOriginalReport } from './original-run/decode.js';
22
+ import { inspectRecoveryDirectory } from './original-run/lock-path.js';
23
+ import { openJournal, writeExclusive, MAX_RECOVERY_DOCUMENT_BYTES } from './original-run/journal.js';
24
+ import { platformPath, readStable, sha256 } from '../telemetry/recovery/files.js';
25
+ import { matchesPreparedEventReceipt } from './event-receipts.js';
26
+ import { openSink } from './status.js';
27
+ import { RecoveryRequestBudget } from '../telemetry/recovery-request-budget.js';
28
+ const MAX_MATERIAL = 64 * 1024 * 1024;
29
+ function decode(text) { return decodeRecoveryDocument(text); }
30
+ async function exists(path) {
31
+ try {
32
+ await lstat(path);
33
+ return true;
34
+ }
35
+ catch (e) {
36
+ if (e.code === 'ENOENT')
37
+ return false;
38
+ throw e;
39
+ }
40
+ }
41
+ function splitInput(selection, material, manifest, history) {
42
+ const source = historySource(history, selection.source);
43
+ const bound = validateOccurrenceSource(source);
44
+ const member = bound.members.find(m => m.ref === selection.findingRef);
45
+ if (!member || member.unresolvedReason || member.identity !== selection.previousIdentity)
46
+ throw new Error('claim_original_mapping_unavailable');
47
+ return {
48
+ scope: selection.source.scope, target: selection.source.target, eventId: manifest.stages[0].id, occurredAt: manifest.createdAt,
49
+ nativeJson: material.nativeJson, nativeSourceJsons: material.nativeSourceJsons, recoveryMaterials: material.recoveryMaterials, reportJson: source.reportJson, findingRef: selection.findingRef,
50
+ previousIdentity: selection.previousIdentity, identity: selection.identity, descriptor: selection.descriptor, reason: selection.reason,
51
+ expectedEventSequence: historyContext(history, selection.source).eventSequence, classificationId: source.classification.id,
52
+ ...(member.correction ? { correctionId: member.correction.id } : {}), sourceReceipts: [source.classification, ...(member.correction ? [member.correction] : [])]
53
+ };
54
+ }
55
+ function errorCode(e) { const m = e instanceof Error ? e.message : ''; return /^[a-z][a-z0-9_]+$/.test(m) ? m : 'claim_recovery_refused'; }
56
+ /** Public Mode B. Ordinary authenticated reads, exact durable events and the
57
+ * same native target; no review, accounting reset, outbox or original rewrite. */
58
+ export async function runPublicClaimRecovery(options, deps) {
59
+ let stage = 'input';
60
+ const requestBudget = new RecoveryRequestBudget(deps.requestClock, ms => deps.stderr(`Recovery request budget: waiting ${Math.ceil(ms / 1000)}s before the next request.`));
61
+ try {
62
+ if ([options.preview, options.apply, options.resume].filter(Boolean).length !== 1)
63
+ throw new Error('choose_exactly_one_recovery_mode');
64
+ const path = platformPath(options.manifest);
65
+ const pool = `${path}.proofs`;
66
+ await inspectRecoveryDirectory(dirname(path), true);
67
+ const commonDir = await realpath(await resolveGitCommonDir(deps.cwd));
68
+ let manifest;
69
+ let material;
70
+ let manifestSha;
71
+ if (options.preview) {
72
+ if (options.manifestSha256 || Boolean(options.selection) === Boolean(options.adoptManifest) || Boolean(options.adoptManifest) !== Boolean(options.adoptManifestSha256))
73
+ throw new Error('preview_requires_selection_or_adoption');
74
+ if (await exists(path) || await exists(`${path}.material`))
75
+ throw new Error('manifest_already_exists');
76
+ const oldPath = options.adoptManifest ? platformPath(options.adoptManifest) : undefined;
77
+ const oldRaw = oldPath ? await readStable(oldPath, MAX_RECOVERY_DOCUMENT_BYTES) : undefined;
78
+ if (oldRaw && oldRaw.sha256 !== options.adoptManifestSha256)
79
+ throw new Error('manifest_digest_mismatch');
80
+ const oldManifest = oldRaw ? manifestSchema.parse(decode(oldRaw.text)) : undefined;
81
+ if (oldManifest && oldManifest.gitCommonDir !== commonDir)
82
+ throw new Error('native_repository_conflict');
83
+ const selection = oldManifest?.selection ?? publicClaimSelectionSchema.parse(decodeOriginalReport((await readStable(platformPath(options.selection), MAX_RECOVERY_DOCUMENT_BYTES)).text, { exactNumbers: true }).value);
84
+ const native = await loadConvergeRunStateEvidence(commonDir, selection.source.target);
85
+ if (!native)
86
+ throw new Error('native_target_unavailable');
87
+ const nativeRaw = await readStable(convergeRunStatePath(commonDir, selection.source.target), MAX_MATERIAL);
88
+ if (nativeRaw.sha256 !== native.sha256)
89
+ throw new Error('native_source_changed');
90
+ const ancestors = await readNativeRecoverySourceJsons(commonDir, native.state);
91
+ stage = 'remote';
92
+ const sink = await openSink(deps, requestBudget);
93
+ if (!sink)
94
+ return 3;
95
+ const read = await readClaimTargetHistory(sink, selection.source);
96
+ if (read.kind !== 'ok')
97
+ throw new Error('claim_history_unanswered');
98
+ const history = claimHistoryContent(read.value);
99
+ if (selection.action === 'split' && !oldManifest)
100
+ assertUnusedClaimIdentity(history, selection.identity);
101
+ material = { nativeJson: nativeRaw.text, nativeSourceJsons: ancestors, recoveryMaterials: await readNativeRecoveryMaterials(commonDir, native.state), history };
102
+ const carriers = claimCarriers(history, selection);
103
+ if (!carriers.length)
104
+ throw new Error('claim_carrier_unavailable');
105
+ if (selection.action === 'disposition' && !selection.disposition || selection.action === 'refresh' && selection.disposition)
106
+ throw new Error('claim_action_disposition_conflict');
107
+ let stages = [...(selection.action === 'split' ? [{ id: randomUUID(), kind: 'split' }, ...carriers.map((_, carrierIndex) => ({ id: randomUUID(), kind: 'transfer', carrierIndex }))] : []),
108
+ ...(selection.disposition ? [{ id: randomUUID(), kind: 'disposition' }] : [])];
109
+ const createdAt = new Date().toISOString();
110
+ if (oldManifest) {
111
+ if (oldManifest.nativeSha256 !== nativeRaw.sha256)
112
+ throw new Error('native_source_changed');
113
+ const adoption = await prepareClaimAdoption({ path: oldPath, manifest: oldManifest, manifestSha: oldRaw.sha256, current: history, stages, sink, validate: validatePreparation, splitEvidence });
114
+ material.adoption = adoption.proof;
115
+ stages = adoption.stages;
116
+ }
117
+ const adoptedSplit = stages[0]?.kind === 'split' ? material.adoption?.accepted.find(s => s.id === stages[0]?.id) : undefined;
118
+ const prepared = adoptedSplit ? prepareClaimSplit(adoptedSplit.preparation) : selection.action === 'split' ? prepareClaimSplit(splitInput(selection, material, { stages, createdAt }, history)) :
119
+ prepareClaimSplit(existingSplit(selection, material, history).selection);
120
+ if (adoptedSplit && selection.disposition && !material.adoption?.accepted.some(a => a.id === stages.at(-1)?.id))
121
+ prepareClaimDisposition(dispositionInput(selection, history, splitEvidence(material, selection, adoptedSplit.preparation, adoptedSplit.receipt), stages.at(-1).id, createdAt, history.actorUserId));
122
+ else if (!adoptedSplit)
123
+ validateDispositionIntent(selection, history, stages.at(-1)?.id, material, createdAt);
124
+ const preview = {
125
+ source: prepared.source, newIdentity: selection.identity, carriers: carriers.map(carrier => projectOccurrenceCarrier({
126
+ carrier,
127
+ inventoryStatus: 'complete', sources: history.sources, transfers: [], nativePredecessors: [{ sourceJson: material.nativeJson, nativeSourceJsons: ancestors }]
128
+ })),
129
+ disposition: selection.disposition ?? null, legacyVerdicts: 'retained without inherited semantic approval', accounting: 'unchanged; same target and rounds',
130
+ ...(material.adoption ? { adoption: { previous_manifest: oldPath, previous_manifest_sha256: oldRaw.sha256, accepted_event_ids: material.adoption.accepted.map(a => a.id), replacements: material.adoption.replacements } } : {})
131
+ };
132
+ if ((await readStable(convergeRunStatePath(commonDir, selection.source.target), MAX_MATERIAL)).sha256 !== nativeRaw.sha256)
133
+ throw new Error('native_source_changed');
134
+ stage = 'journal';
135
+ await writeClaimProof(`${path}.material`, pool, material);
136
+ const stored = await readStable(`${path}.material`, MAX_MATERIAL);
137
+ manifest = {
138
+ kind: 'rcl-public-claim-recovery', version: material.adoption ? 3 : 2, operationId: randomUUID(), createdAt, rclVersion: deps.rclVersion, gitCommonDir: commonDir,
139
+ selection, actorUserId: history.actorUserId, materialSha256: stored.sha256, nativeSha256: nativeRaw.sha256, stages, preview
140
+ };
141
+ await writeExclusive(path, manifest, MAX_RECOVERY_DOCUMENT_BYTES);
142
+ manifestSha = (await readStable(path, MAX_RECOVERY_DOCUMENT_BYTES)).sha256;
143
+ deps.stdout(JSON.stringify({ status: 'prepared', manifest: path, manifest_sha256: manifestSha, operation_id: manifest.operationId, preview }));
144
+ return 0;
145
+ }
146
+ if (options.selection || options.adoptManifest || options.adoptManifestSha256 || !options.manifestSha256)
147
+ throw new Error('apply_requires_exact_manifest');
148
+ const retained = await readStable(path, MAX_RECOVERY_DOCUMENT_BYTES);
149
+ if (retained.sha256 !== options.manifestSha256)
150
+ throw new Error('manifest_digest_mismatch');
151
+ manifest = manifestSchema.parse(decode(retained.text));
152
+ manifestSha = retained.sha256;
153
+ if (manifest.gitCommonDir !== commonDir)
154
+ throw new Error('native_repository_conflict');
155
+ const rawMaterial = await readStable(`${path}.material`, MAX_MATERIAL);
156
+ if (rawMaterial.sha256 !== manifest.materialSha256)
157
+ throw new Error('claim_material_changed');
158
+ material = await readClaimProof(`${path}.material`, pool);
159
+ if (sha256(material.nativeJson) !== manifest.nativeSha256)
160
+ throw new Error('native_source_conflict');
161
+ const selection = manifest.selection;
162
+ if (Boolean(material.adoption) !== (manifest.version === 3))
163
+ throw new Error('claim_adoption_version_conflict');
164
+ if (material.adoption)
165
+ await verifyAdoptionFiles(material.adoption);
166
+ const adoptedSplit = manifest.stages[0]?.kind === 'split' ? material.adoption?.accepted.find(s => s.id === manifest.stages[0]?.id) : undefined;
167
+ if (selection.action === 'split' && !adoptedSplit)
168
+ assertUnusedClaimIdentity(material.history, selection.identity);
169
+ const carriers = claimCarriers(material.history, selection);
170
+ const expectedKinds = [...(selection.action === 'split' ? ['split', ...carriers.map(() => 'transfer')] : []), ...(selection.disposition ? ['disposition'] : [])];
171
+ if (!isDeepStrictEqual(manifest.stages.map(s => s.kind), expectedKinds) || new Set(manifest.stages.map(s => s.id)).size !== manifest.stages.length ||
172
+ selection.action === 'split' && carriers.some((_, i) => manifest.stages[i + 1].carrierIndex !== i))
173
+ throw new Error('claim_manifest_stage_conflict');
174
+ if (!adoptedSplit)
175
+ validateDispositionIntent(selection, material.history, manifest.stages.at(-1)?.id, material, manifest.createdAt);
176
+ // Re-prove the pinned original before acquiring authority or contacting HTTP.
177
+ if (selection.action === 'split')
178
+ prepareClaimSplit(adoptedSplit ? adoptedSplit.preparation : splitInput(selection, material, manifest, material.history));
179
+ else
180
+ existingSplit(selection, material, material.history);
181
+ stage = 'remote';
182
+ const sink = await openSink(deps, requestBudget);
183
+ if (!sink)
184
+ return 3;
185
+ const output = await withRecoveryTarget(commonDir, selection.source.target, async (ownership) => {
186
+ stage = 'journal';
187
+ const journal = await openJournal(`${path}.journal`, manifestSha, manifest.operationId, options.apply ? 'apply' : 'resume', deps.beforeCheckpoint);
188
+ const owned = new Map(material.adoption?.accepted.map(a => [a.id, a.eventJson]));
189
+ // Existing packets are immutable and are the only receipts permitted to
190
+ // extend the preview. Never regenerate a payload after uncertain delivery.
191
+ for (const item of manifest.stages) {
192
+ const packetPath = `${path}.${item.id}.packet`;
193
+ if (await exists(packetPath)) {
194
+ const packet = decode((await readStable(packetPath, MAX_RECOVERY_DOCUMENT_BYTES)).text);
195
+ owned.set(item.id, packet.event_json);
196
+ }
197
+ }
198
+ let history = material.history;
199
+ let historyToken;
200
+ const fresh = async () => {
201
+ if ((await readStable(path, MAX_RECOVERY_DOCUMENT_BYTES)).sha256 !== manifestSha ||
202
+ (await readStable(`${path}.material`, MAX_MATERIAL)).sha256 !== manifest.materialSha256)
203
+ throw new Error('claim_manifest_changed');
204
+ if (material.adoption) {
205
+ await verifyAdoptionFiles(material.adoption);
206
+ await verifyReplacedAbsence(material.adoption, sink);
207
+ }
208
+ const read = await readClaimTargetHistory(sink, selection.source, manifest.actorUserId);
209
+ if (read.kind !== 'ok')
210
+ throw new Error('claim_history_unanswered');
211
+ const current = claimHistoryContent(read.value);
212
+ assertHistoryExtension(material.history, current, owned);
213
+ for (const h of current.histories)
214
+ for (const receipt of h.receipts) {
215
+ const event = owned.get(receipt.id);
216
+ if (event &&
217
+ !matchesPreparedEventReceipt(receipt, event, { ...selection.source.scope, run_id: h.runId }, manifest.actorUserId))
218
+ throw new Error('claim_receipt_conflict');
219
+ }
220
+ history = current;
221
+ historyToken = read.value;
222
+ };
223
+ await fresh();
224
+ const stateBefore = await readStable(convergeRunStatePath(commonDir, selection.source.target), MAX_MATERIAL);
225
+ const savedPlanPath = `${path}.native-plan`;
226
+ if (stateBefore.sha256 !== manifest.nativeSha256 && !(await exists(savedPlanPath)))
227
+ throw new Error('native_source_changed');
228
+ const transfers = [];
229
+ const dispositions = [];
230
+ let acceptedSplit = selection.action === 'split' ? undefined : existingSplit(selection, material, history);
231
+ for (const item of manifest.stages) {
232
+ stage = 'remote';
233
+ await fresh();
234
+ const inputPath = `${path}.${item.id}.input`;
235
+ let preparation;
236
+ const inputExists = await exists(inputPath);
237
+ const adopted = material.adoption?.accepted.find(a => a.id === item.id);
238
+ if (adopted) {
239
+ preparation = adopted.preparation;
240
+ if (inputExists && !isDeepStrictEqual(await readClaimProof(inputPath, pool), preparation))
241
+ throw new Error('claim_preparation_conflict');
242
+ }
243
+ else if (inputExists)
244
+ preparation = await readClaimProof(inputPath, pool);
245
+ else if (item.kind === 'split')
246
+ preparation = splitInput(selection, material, manifest, history);
247
+ else {
248
+ if (!acceptedSplit)
249
+ throw new Error('claim_split_receipt_missing');
250
+ const common = { eventId: item.id, occurredAt: manifest.createdAt, actorUserId: manifest.actorUserId, split: acceptedSplit, sourceContext: historyContext(history, selection.source) };
251
+ if (item.kind === 'transfer') {
252
+ const carrier = carriers[item.carrierIndex];
253
+ preparation = { ...common, carrier: historySource(history, carrier), carrierContext: historyContext(history, carrier), carrierKind: carrier.kind, carrierIdentity: carrier.identity, reason: selection.reason };
254
+ }
255
+ else {
256
+ preparation = dispositionInput(selection, history, acceptedSplit, item.id, manifest.createdAt, manifest.actorUserId);
257
+ }
258
+ }
259
+ validatePreparation(manifest, material, adopted?.validationStage ?? item, preparation, adopted?.history ?? history, acceptedSplit, adopted?.createdAt ?? manifest.createdAt);
260
+ const event = item.kind === 'split' ? prepareClaimSplit(preparation).event :
261
+ item.kind === 'transfer' ? prepareObligationTransfer(preparation).event : prepareClaimDisposition(preparation).event;
262
+ const eventJson = JSON.stringify(event);
263
+ if (adopted && eventJson !== adopted.eventJson)
264
+ throw new Error('claim_adoption_event_conflict');
265
+ const packetPath = `${path}.${item.id}.packet`;
266
+ if (!inputExists)
267
+ await writeClaimProof(inputPath, pool, preparation);
268
+ owned.set(item.id, eventJson);
269
+ const receipt = await deliverPreparedClaimEvent({
270
+ gitCommonDir: commonDir, target: selection.source.target, ownership,
271
+ operationId: manifest.operationId, manifestSha256: manifestSha, packetPath, mode: await exists(packetPath) ? 'resume' : 'apply',
272
+ scope: { ...selection.source.scope, run_id: event.run_id }, actor: manifest.actorUserId, eventJson, sink, journal, verifyContext: fresh, allowPost: !adopted
273
+ });
274
+ if (item.kind === 'split') {
275
+ const p = preparation;
276
+ acceptedSplit = {
277
+ selection: p, receipt, actorUserId: manifest.actorUserId,
278
+ source: historySource(history, selection.source), native: {
279
+ sourceJson: material.nativeJson, target: selection.source.target, nativeSourceJsons: material.nativeSourceJsons, recoveryMaterials: material.recoveryMaterials,
280
+ reports: nativeReports(material)
281
+ }
282
+ };
283
+ }
284
+ else if (item.kind === 'transfer')
285
+ transfers.push({ preparation: preparation, receipt, actorUserId: manifest.actorUserId });
286
+ else
287
+ dispositions.push({ preparation: preparation, receipt, actorUserId: manifest.actorUserId });
288
+ }
289
+ await fresh();
290
+ if (!acceptedSplit)
291
+ throw new Error('claim_split_receipt_missing');
292
+ let projectionVersion = 2;
293
+ if (await exists(savedPlanPath)) {
294
+ const saved = await readClaimProof(savedPlanPath, pool);
295
+ if (!saved.currentHistory || !sameClaimHistoryEvidence(saved.currentHistory, history))
296
+ throw new Error('native_plan_history_changed');
297
+ projectionVersion = nativeRecoveryPlanProjectionVersion(saved);
298
+ history = { ...history, readWindow: saved.currentHistory.readWindow };
299
+ }
300
+ const input = {
301
+ sourceJson: material.nativeJson, externalMaterial: true, recoveryMaterials: material.recoveryMaterials, currentHistory: history, nativeSourceJsons: material.nativeSourceJsons, target: selection.source.target, operationId: manifest.operationId,
302
+ anchors: selection.action === 'split' ? [correctionAnchor(acceptedSplit.selection, acceptedSplit.receipt, manifest.actorUserId, manifest.operationId)] : [], reports: selection.action === 'split' ? [acceptedSplit.source.reportJson] : [],
303
+ sourceReceipts: selection.action === 'split' ? acceptedSplit.selection.sourceReceipts : [], transfers, dispositions, carriers: carriers.map(carrier => ({ carrier, inventoryStatus: 'complete', sources: history.sources }))
304
+ };
305
+ const plan = deriveNativeRecovery(input, projectionVersion);
306
+ if (await exists(savedPlanPath)) {
307
+ if (!isDeepStrictEqual(await readClaimProof(savedPlanPath, pool), plan))
308
+ throw new Error('native_plan_conflict');
309
+ }
310
+ else
311
+ await writeClaimProof(savedPlanPath, pool, plan);
312
+ await journal.append('claim_native_intent', { source_sha256: plan.sourceSha256, result_sha256: plan.resultSha256 });
313
+ await fresh();
314
+ const result = await applyNativeRecovery({ gitCommonDir: commonDir, plan, ownership, history: historyToken });
315
+ await journal.append('claim_native_verified', result);
316
+ return {
317
+ status: 'acknowledged', operation_id: manifest.operationId, native: result, actionable_identities: plan.actionableIdentities,
318
+ accounting: 'rounds, attempts and original findings unchanged', projection_freshness: { read_window: plan.currentHistory?.readWindow, qualification: 'authenticated snapshot; not current server approval' }, receipt_ids: manifest.stages.map(s => s.id)
319
+ };
320
+ });
321
+ deps.stdout(JSON.stringify(output));
322
+ return 0;
323
+ }
324
+ catch (error) {
325
+ deps.stdout(JSON.stringify({ status: 'refused', reason: errorCode(error), stage }));
326
+ return stage === 'input' ? 2 : stage === 'journal' ? 5 : 4;
327
+ }
328
+ }
329
+ function nativeReports(material) {
330
+ const states = [material.nativeJson, ...material.nativeSourceJsons].map(s => decode(s));
331
+ const digests = new Set();
332
+ for (const state of states) {
333
+ for (const round of state.rounds ?? [])
334
+ if (round.reportBinding?.reportSha256)
335
+ digests.add(round.reportBinding.reportSha256);
336
+ for (const op of state.recovery?.operations ?? [])
337
+ for (const anchor of op.anchors ?? [])
338
+ digests.add(anchor.source.reportSha256);
339
+ }
340
+ return [...digests].map(digest => {
341
+ const source = material.history.sources.find(s => s.selector.reportSha256 === digest);
342
+ if (!source?.reportJson)
343
+ throw new Error('native_original_report_unavailable');
344
+ return source.reportJson;
345
+ });
346
+ }
347
+ function existingSplit(selection, material, history) {
348
+ const state = decode(material.nativeJson);
349
+ const candidates = recoveryAnchors(state).filter(a => a.identity === selection.identity);
350
+ if (candidates.length !== 1)
351
+ throw new Error('existing_claim_anchor_unavailable');
352
+ const anchor = candidates[0];
353
+ if (anchor.source.findingRef !== selection.findingRef || anchor.source.previousIdentity !== selection.previousIdentity ||
354
+ anchor.source.reportSha256 !== selection.source.reportSha256 || anchor.source.runId !== selection.source.scope.run_id ||
355
+ !isDeepStrictEqual(anchor.descriptor, selection.descriptor) || !isDeepStrictEqual(anchor.destination, selection.source.scope))
356
+ throw new Error('existing_claim_anchor_conflict');
357
+ const receipt = history.histories.flatMap(h => h.receipts).find(r => r.id === anchor.receipt.id);
358
+ if (!receipt || !isDeepStrictEqual(receipt, anchor.receipt) || !receipt.actor_user_id)
359
+ throw new Error('existing_claim_receipt_unavailable');
360
+ const snapshotMap = new Map([material.nativeJson, ...material.nativeSourceJsons].map(text => [sha256(text), text]));
361
+ const nativeJson = snapshotMap.get(anchor.nativeSource.sha256);
362
+ if (!nativeJson)
363
+ throw new Error('existing_claim_native_source_unavailable');
364
+ const snapshots = [];
365
+ let sourceState = decode(nativeJson);
366
+ const seen = new Set();
367
+ for (;;) {
368
+ const digest = sourceState.version === 3 ? sourceState.recovery?.operations?.at(-1)?.sourceSha256 : sourceState.version === 2 ? sourceState.migration?.sourceSha256 : undefined;
369
+ if (!digest)
370
+ break;
371
+ const text = snapshotMap.get(digest);
372
+ if (!text || seen.has(digest))
373
+ throw new Error('existing_claim_native_source_unavailable');
374
+ seen.add(digest);
375
+ snapshots.push(text);
376
+ sourceState = decode(text);
377
+ }
378
+ const event = decode(anchor.eventJson);
379
+ const payload = event.payload;
380
+ const source = historySource(history, selection.source);
381
+ const eventIds = payload.source_event_ids;
382
+ const sourceReceipts = eventIds.map(id => {
383
+ const r = history.histories.flatMap(h => h.receipts).find(r => r.id === id);
384
+ if (!r)
385
+ throw new Error('existing_claim_receipt_unavailable');
386
+ return r;
387
+ });
388
+ const input = {
389
+ scope: anchor.destination, target: selection.source.target, eventId: event.id, occurredAt: event.occurred_at, nativeJson, nativeSourceJsons: snapshots,
390
+ recoveryMaterials: material.recoveryMaterials, reportJson: source.reportJson, findingRef: selection.findingRef, previousIdentity: selection.previousIdentity,
391
+ identity: selection.identity, descriptor: selection.descriptor, reason: payload.reason, expectedEventSequence: payload.expected_event_sequence,
392
+ classificationId: eventIds[0], ...(eventIds[1] ? { correctionId: eventIds[1] } : {}), sourceReceipts
393
+ };
394
+ if (!isDeepStrictEqual(correctionAnchor(input, receipt, receipt.actor_user_id, anchor.operationId), anchor))
395
+ throw new Error('existing_claim_anchor_conflict');
396
+ const oldMaterial = { ...material, nativeJson, nativeSourceJsons: snapshots };
397
+ return {
398
+ selection: input, receipt, actorUserId: receipt.actor_user_id, source, native: {
399
+ sourceJson: nativeJson, nativeSourceJsons: snapshots,
400
+ recoveryMaterials: material.recoveryMaterials, target: selection.source.target, reports: nativeReports(oldMaterial)
401
+ }
402
+ };
403
+ }
404
+ function validateDispositionIntent(selection, history, eventId, material, occurredAt) {
405
+ const request = selection.disposition;
406
+ if (!request)
407
+ return;
408
+ if (!isDeepStrictEqual(scrubDeep(request), request))
409
+ throw new Error('claim_disposition_redaction_conflict');
410
+ const source = validateOccurrenceSource(historySource(history, selection.source));
411
+ const member = source.members.find(m => m.ref === selection.findingRef);
412
+ if (!member || member.unresolvedReason)
413
+ throw new Error('claim_original_mapping_unavailable');
414
+ if (request.mode === 'fresh' && request.originalVerdictEventId)
415
+ throw new Error('fresh_disposition_has_original_verdict');
416
+ if (selection.action !== 'split') {
417
+ prepareClaimDisposition(dispositionInput(selection, history, existingSplit(selection, material, history), eventId, occurredAt, history.actorUserId));
418
+ return;
419
+ }
420
+ if (member.severity === 'critical' && member.gating !== 'none' && request.severity !== 'critical')
421
+ throw new Error('claim_critical_disposition_required');
422
+ if (request.mode === 'fresh')
423
+ return;
424
+ const receipt = history.histories.find(h => h.runId === selection.source.scope.run_id)?.receipts.find(r => r.id === request.originalVerdictEventId);
425
+ validatePreservedDispositionSubject({
426
+ source, member, descriptor: selection.descriptor, eventId: eventId, verdict: request.verdict,
427
+ severity: request.severity, reason: request.reason, originalVerdict: receipt, originalVerdictActorUserId: receipt?.actor_user_id ?? undefined
428
+ });
429
+ }
430
+ function dispositionInput(selection, history, split, eventId, occurredAt, actorUserId) {
431
+ const request = selection.disposition;
432
+ const rows = claimRunHistory(history, selection.source).receipts;
433
+ const prior = rows.filter(r => r.kind === 'finding_claim_disposition' && r.payload.claim_identity === selection.identity).at(-1);
434
+ const original = request.originalVerdictEventId ? rows.find(r => r.id === request.originalVerdictEventId) : undefined;
435
+ return {
436
+ eventId, occurredAt, actorUserId, split, sourceContext: historyContext(history, selection.source),
437
+ mode: request.mode, verdict: request.verdict, severity: request.severity, reason: request.reason,
438
+ previousDispositionEventId: prior?.id ?? null, ...(prior ? { previousDisposition: prior } : {}),
439
+ ...(original ? { originalVerdict: original, originalVerdictActorUserId: original.actor_user_id ?? undefined } : {}),
440
+ laterSources: history.sources.filter(s => s.selector.round > selection.source.round).flatMap(s => {
441
+ let source;
442
+ try {
443
+ source = historySource(history, s.selector);
444
+ }
445
+ catch {
446
+ return [];
447
+ }
448
+ return validateOccurrenceSource(source).members.some(m => m.identity === selection.identity) ? [source] : [];
449
+ })
450
+ };
451
+ }
452
+ function validatePreparation(manifest, material, item, preparation, history, acceptedSplit, createdAt = manifest.createdAt) {
453
+ const selection = manifest.selection;
454
+ const carriers = claimCarriers(history, selection);
455
+ if (preparation.eventId !== item.id || preparation.occurredAt !== createdAt)
456
+ throw new Error('claim_preparation_conflict');
457
+ if (item.kind === 'split') {
458
+ const p = preparation;
459
+ const expected = splitInput(selection, material, { ...manifest, createdAt }, history);
460
+ if (!isDeepStrictEqual({ ...p, expectedEventSequence: expected.expectedEventSequence }, expected))
461
+ throw new Error('claim_preparation_conflict');
462
+ }
463
+ else {
464
+ const p = preparation;
465
+ if (!isDeepStrictEqual(p.split, acceptedSplit) || p.actorUserId !== manifest.actorUserId ||
466
+ !isDeepStrictEqual({ ...p.sourceContext, eventSequence: 0 }, { ...historyContext(history, selection.source), eventSequence: 0 }))
467
+ throw new Error('claim_preparation_conflict');
468
+ if (item.kind === 'transfer') {
469
+ const t = p;
470
+ const carrier = carriers[item.carrierIndex];
471
+ if (t.reason !== selection.reason || t.carrierKind !== carrier.kind || t.carrierIdentity !== carrier.identity ||
472
+ !isDeepStrictEqual(t.carrier, historySource(history, carrier)) || !isDeepStrictEqual({ ...t.carrierContext, eventSequence: 0 }, { ...historyContext(history, carrier), eventSequence: 0 }))
473
+ throw new Error('claim_preparation_conflict');
474
+ }
475
+ else {
476
+ const d = p;
477
+ const request = selection.disposition;
478
+ if (d.mode !== request.mode || d.verdict !== request.verdict || d.severity !== request.severity || d.reason !== request.reason ||
479
+ (d.originalVerdict?.id ?? null) !== (request.originalVerdictEventId ?? null))
480
+ throw new Error('claim_preparation_conflict');
481
+ const rows = history.histories.find(h => h.runId === selection.source.scope.run_id).receipts;
482
+ const prior = rows.filter(r => r.kind === 'finding_claim_disposition' && r.payload.claim_identity === selection.identity &&
483
+ r.sequence <= d.sourceContext.eventSequence).at(-1);
484
+ const original = request.originalVerdictEventId ? rows.find(r => r.id === request.originalVerdictEventId) : undefined;
485
+ const later = history.sources.filter(s => s.selector.round > selection.source.round).flatMap(s => {
486
+ let source;
487
+ try {
488
+ source = historySource(history, s.selector);
489
+ }
490
+ catch {
491
+ return [];
492
+ }
493
+ return validateOccurrenceSource(source).members.some(m => m.identity === selection.identity) ? [source] : [];
494
+ });
495
+ if (d.previousDispositionEventId !== (prior?.id ?? null) || !isDeepStrictEqual(d.previousDisposition, prior) ||
496
+ !isDeepStrictEqual(d.originalVerdict, original) || !isDeepStrictEqual(d.laterSources ?? [], later))
497
+ throw new Error('claim_preparation_conflict');
498
+ }
499
+ }
500
+ }
501
+ function splitEvidence(material, selection, p, receipt) {
502
+ return { selection: p, receipt, actorUserId: material.history.actorUserId, source: historySource(material.history, selection.source), native: { sourceJson: material.nativeJson, target: selection.source.target, nativeSourceJsons: material.nativeSourceJsons, recoveryMaterials: material.recoveryMaterials, reports: nativeReports(material) } };
503
+ }
504
+ //# sourceMappingURL=recover-claim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recover-claim.js","sourceRoot":"","sources":["../../src/evidence/recover-claim.ts"],"names":[],"mappings":"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"}