@allocator-one/rcl 4.4.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1415 -0
- package/dist/ci.d.ts +16 -0
- package/dist/ci.js +42 -0
- package/dist/ci.js.map +1 -0
- package/dist/config/data-dir.d.ts +6 -0
- package/dist/config/data-dir.js +12 -0
- package/dist/config/data-dir.js.map +1 -0
- package/dist/config/defaults.d.ts +82 -0
- package/dist/config/defaults.js +89 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/harness.d.ts +40 -0
- package/dist/config/harness.js +151 -0
- package/dist/config/harness.js.map +1 -0
- package/dist/config/loader.d.ts +13 -0
- package/dist/config/loader.js +131 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/provider-concurrency.d.ts +4 -0
- package/dist/config/provider-concurrency.js +6 -0
- package/dist/config/provider-concurrency.js.map +1 -0
- package/dist/config/providers.d.ts +3 -0
- package/dist/config/providers.js +9 -0
- package/dist/config/providers.js.map +1 -0
- package/dist/config/schema.d.ts +179 -0
- package/dist/config/schema.js +115 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/consensus/claim-contract.d.ts +9 -0
- package/dist/consensus/claim-contract.js +307 -0
- package/dist/consensus/claim-contract.js.map +1 -0
- package/dist/consensus/claim-identity.d.ts +5 -0
- package/dist/consensus/claim-identity.js +39 -0
- package/dist/consensus/claim-identity.js.map +1 -0
- package/dist/consensus/deduper.d.ts +43 -0
- package/dist/consensus/deduper.js +1052 -0
- package/dist/consensus/deduper.js.map +1 -0
- package/dist/consensus/finding-identity.d.ts +20 -0
- package/dist/consensus/finding-identity.js +49 -0
- package/dist/consensus/finding-identity.js.map +1 -0
- package/dist/consensus/gating.d.ts +215 -0
- package/dist/consensus/gating.js +699 -0
- package/dist/consensus/gating.js.map +1 -0
- package/dist/consensus/parser.d.ts +22 -0
- package/dist/consensus/parser.js +255 -0
- package/dist/consensus/parser.js.map +1 -0
- package/dist/consensus/semantic-deduper.d.ts +10 -0
- package/dist/consensus/semantic-deduper.js +70 -0
- package/dist/consensus/semantic-deduper.js.map +1 -0
- package/dist/consensus/types.d.ts +196 -0
- package/dist/consensus/types.js +2 -0
- package/dist/consensus/types.js.map +1 -0
- package/dist/consensus/verification-contract.d.ts +8 -0
- package/dist/consensus/verification-contract.js +95 -0
- package/dist/consensus/verification-contract.js.map +1 -0
- package/dist/consensus/voter.d.ts +29 -0
- package/dist/consensus/voter.js +394 -0
- package/dist/consensus/voter.js.map +1 -0
- package/dist/converge/attempt-budget.d.ts +88 -0
- package/dist/converge/attempt-budget.js +717 -0
- package/dist/converge/attempt-budget.js.map +1 -0
- package/dist/converge/bound-fix-recovery-source.d.ts +24 -0
- package/dist/converge/bound-fix-recovery-source.js +25 -0
- package/dist/converge/bound-fix-recovery-source.js.map +1 -0
- package/dist/converge/bound-fix-recovery.d.ts +15 -0
- package/dist/converge/bound-fix-recovery.js +65 -0
- package/dist/converge/bound-fix-recovery.js.map +1 -0
- package/dist/converge/correction-anchors.d.ts +1 -0
- package/dist/converge/correction-anchors.js +2 -0
- package/dist/converge/correction-anchors.js.map +1 -0
- package/dist/converge/cycle-remote.d.ts +6 -0
- package/dist/converge/cycle-remote.js +41 -0
- package/dist/converge/cycle-remote.js.map +1 -0
- package/dist/converge/delivery-reconciliation.d.ts +17 -0
- package/dist/converge/delivery-reconciliation.js +53 -0
- package/dist/converge/delivery-reconciliation.js.map +1 -0
- package/dist/converge/finding-identity.d.ts +6 -0
- package/dist/converge/finding-identity.js +7 -0
- package/dist/converge/finding-identity.js.map +1 -0
- package/dist/converge/fresh-review.d.ts +37 -0
- package/dist/converge/fresh-review.js +351 -0
- package/dist/converge/fresh-review.js.map +1 -0
- package/dist/converge/launch-guard.d.ts +55 -0
- package/dist/converge/launch-guard.js +363 -0
- package/dist/converge/launch-guard.js.map +1 -0
- package/dist/converge/launch-preflight.d.ts +5 -0
- package/dist/converge/launch-preflight.js +41 -0
- package/dist/converge/launch-preflight.js.map +1 -0
- package/dist/converge/launch-record.d.ts +136 -0
- package/dist/converge/launch-record.js +86 -0
- package/dist/converge/launch-record.js.map +1 -0
- package/dist/converge/legacy-launch-health.d.ts +311 -0
- package/dist/converge/legacy-launch-health.js +159 -0
- package/dist/converge/legacy-launch-health.js.map +1 -0
- package/dist/converge/legacy-roster.d.ts +29 -0
- package/dist/converge/legacy-roster.js +268 -0
- package/dist/converge/legacy-roster.js.map +1 -0
- package/dist/converge/native-lock.d.ts +18 -0
- package/dist/converge/native-lock.js +122 -0
- package/dist/converge/native-lock.js.map +1 -0
- package/dist/converge/ordinary-pending-export.d.ts +67 -0
- package/dist/converge/ordinary-pending-export.js +175 -0
- package/dist/converge/ordinary-pending-export.js.map +1 -0
- package/dist/converge/ordinary-pending-package.d.ts +28 -0
- package/dist/converge/ordinary-pending-package.js +36 -0
- package/dist/converge/ordinary-pending-package.js.map +1 -0
- package/dist/converge/pending-legacy-resume.d.ts +119 -0
- package/dist/converge/pending-legacy-resume.js +720 -0
- package/dist/converge/pending-legacy-resume.js.map +1 -0
- package/dist/converge/pending-recovery-source.d.ts +131 -0
- package/dist/converge/pending-recovery-source.js +71 -0
- package/dist/converge/pending-recovery-source.js.map +1 -0
- package/dist/converge/recovery-launch.d.ts +66 -0
- package/dist/converge/recovery-launch.js +518 -0
- package/dist/converge/recovery-launch.js.map +1 -0
- package/dist/converge/retained-report.d.ts +29 -0
- package/dist/converge/retained-report.js +218 -0
- package/dist/converge/retained-report.js.map +1 -0
- package/dist/converge/retry-source.d.ts +25 -0
- package/dist/converge/retry-source.js +13 -0
- package/dist/converge/retry-source.js.map +1 -0
- package/dist/converge/review-cycle.d.ts +49 -0
- package/dist/converge/review-cycle.js +26 -0
- package/dist/converge/review-cycle.js.map +1 -0
- package/dist/converge/round-gap-schema.d.ts +66 -0
- package/dist/converge/round-gap-schema.js +51 -0
- package/dist/converge/round-gap-schema.js.map +1 -0
- package/dist/converge/round-gap.d.ts +38 -0
- package/dist/converge/round-gap.js +334 -0
- package/dist/converge/round-gap.js.map +1 -0
- package/dist/converge/run-state.d.ts +224 -0
- package/dist/converge/run-state.js +564 -0
- package/dist/converge/run-state.js.map +1 -0
- package/dist/converge/stale-report-schema.d.ts +42 -0
- package/dist/converge/stale-report-schema.js +79 -0
- package/dist/converge/stale-report-schema.js.map +1 -0
- package/dist/converge/stale-report-storage.d.ts +47 -0
- package/dist/converge/stale-report-storage.js +172 -0
- package/dist/converge/stale-report-storage.js.map +1 -0
- package/dist/converge/stale-report.d.ts +14 -0
- package/dist/converge/stale-report.js +213 -0
- package/dist/converge/stale-report.js.map +1 -0
- package/dist/converge/target-ownership.d.ts +29 -0
- package/dist/converge/target-ownership.js +95 -0
- package/dist/converge/target-ownership.js.map +1 -0
- package/dist/converge/terminal-rejection-schema.d.ts +42 -0
- package/dist/converge/terminal-rejection-schema.js +39 -0
- package/dist/converge/terminal-rejection-schema.js.map +1 -0
- package/dist/converge/terminal-rejection.d.ts +13 -0
- package/dist/converge/terminal-rejection.js +275 -0
- package/dist/converge/terminal-rejection.js.map +1 -0
- package/dist/coordination/registry-lock.d.ts +82 -0
- package/dist/coordination/registry-lock.js +498 -0
- package/dist/coordination/registry-lock.js.map +1 -0
- package/dist/discuss.d.ts +53 -0
- package/dist/discuss.js +112 -0
- package/dist/discuss.js.map +1 -0
- package/dist/dispatch/adapter.d.ts +32 -0
- package/dist/dispatch/adapter.js +2 -0
- package/dist/dispatch/adapter.js.map +1 -0
- package/dist/dispatch/anthropic.d.ts +10 -0
- package/dist/dispatch/anthropic.js +235 -0
- package/dist/dispatch/anthropic.js.map +1 -0
- package/dist/dispatch/async-lane.d.ts +127 -0
- package/dist/dispatch/async-lane.js +414 -0
- package/dist/dispatch/async-lane.js.map +1 -0
- package/dist/dispatch/capture-council.d.ts +63 -0
- package/dist/dispatch/capture-council.js +137 -0
- package/dist/dispatch/capture-council.js.map +1 -0
- package/dist/dispatch/captured-async.d.ts +67 -0
- package/dist/dispatch/captured-async.js +40 -0
- package/dist/dispatch/captured-async.js.map +1 -0
- package/dist/dispatch/captured-inputs.d.ts +50 -0
- package/dist/dispatch/captured-inputs.js +190 -0
- package/dist/dispatch/captured-inputs.js.map +1 -0
- package/dist/dispatch/checkpoint-async-context.d.ts +27 -0
- package/dist/dispatch/checkpoint-async-context.js +51 -0
- package/dist/dispatch/checkpoint-async-context.js.map +1 -0
- package/dist/dispatch/checkpoint-async-execution.d.ts +22 -0
- package/dist/dispatch/checkpoint-async-execution.js +130 -0
- package/dist/dispatch/checkpoint-async-execution.js.map +1 -0
- package/dist/dispatch/checkpoint-async-store.d.ts +134 -0
- package/dist/dispatch/checkpoint-async-store.js +534 -0
- package/dist/dispatch/checkpoint-async-store.js.map +1 -0
- package/dist/dispatch/checkpoint-async-unknown.d.ts +19 -0
- package/dist/dispatch/checkpoint-async-unknown.js +46 -0
- package/dist/dispatch/checkpoint-async-unknown.js.map +1 -0
- package/dist/dispatch/checkpoint-async.d.ts +252 -0
- package/dist/dispatch/checkpoint-async.js +270 -0
- package/dist/dispatch/checkpoint-async.js.map +1 -0
- package/dist/dispatch/checkpoint-gating-execution.d.ts +26 -0
- package/dist/dispatch/checkpoint-gating-execution.js +84 -0
- package/dist/dispatch/checkpoint-gating-execution.js.map +1 -0
- package/dist/dispatch/checkpoint-phase-limits.d.ts +5 -0
- package/dist/dispatch/checkpoint-phase-limits.js +11 -0
- package/dist/dispatch/checkpoint-phase-limits.js.map +1 -0
- package/dist/dispatch/checkpoint-verification-context.d.ts +15 -0
- package/dist/dispatch/checkpoint-verification-context.js +48 -0
- package/dist/dispatch/checkpoint-verification-context.js.map +1 -0
- package/dist/dispatch/checkpoint-verification.d.ts +213 -0
- package/dist/dispatch/checkpoint-verification.js +381 -0
- package/dist/dispatch/checkpoint-verification.js.map +1 -0
- package/dist/dispatch/checkpoint.d.ts +329 -0
- package/dist/dispatch/checkpoint.js +1418 -0
- package/dist/dispatch/checkpoint.js.map +1 -0
- package/dist/dispatch/google.d.ts +10 -0
- package/dist/dispatch/google.js +158 -0
- package/dist/dispatch/google.js.map +1 -0
- package/dist/dispatch/late-audit.d.ts +23 -0
- package/dist/dispatch/late-audit.js +133 -0
- package/dist/dispatch/late-audit.js.map +1 -0
- package/dist/dispatch/merge.d.ts +29 -0
- package/dist/dispatch/merge.js +112 -0
- package/dist/dispatch/merge.js.map +1 -0
- package/dist/dispatch/openai-compat.d.ts +30 -0
- package/dist/dispatch/openai-compat.js +166 -0
- package/dist/dispatch/openai-compat.js.map +1 -0
- package/dist/dispatch/openai.d.ts +10 -0
- package/dist/dispatch/openai.js +159 -0
- package/dist/dispatch/openai.js.map +1 -0
- package/dist/dispatch/original-execution.d.ts +30 -0
- package/dist/dispatch/original-execution.js +91 -0
- package/dist/dispatch/original-execution.js.map +1 -0
- package/dist/dispatch/original-launch.d.ts +37 -0
- package/dist/dispatch/original-launch.js +117 -0
- package/dist/dispatch/original-launch.js.map +1 -0
- package/dist/dispatch/quorum.d.ts +15 -0
- package/dist/dispatch/quorum.js +33 -0
- package/dist/dispatch/quorum.js.map +1 -0
- package/dist/dispatch/recovery-operation.d.ts +44 -0
- package/dist/dispatch/recovery-operation.js +146 -0
- package/dist/dispatch/recovery-operation.js.map +1 -0
- package/dist/dispatch/recovery-policy.d.ts +54 -0
- package/dist/dispatch/recovery-policy.js +157 -0
- package/dist/dispatch/recovery-policy.js.map +1 -0
- package/dist/dispatch/recovery.d.ts +78 -0
- package/dist/dispatch/recovery.js +299 -0
- package/dist/dispatch/recovery.js.map +1 -0
- package/dist/dispatch/retained-async.d.ts +13 -0
- package/dist/dispatch/retained-async.js +101 -0
- package/dist/dispatch/retained-async.js.map +1 -0
- package/dist/dispatch/reviewer-identity.d.ts +10 -0
- package/dist/dispatch/reviewer-identity.js +19 -0
- package/dist/dispatch/reviewer-identity.js.map +1 -0
- package/dist/dispatch/runner.d.ts +76 -0
- package/dist/dispatch/runner.js +415 -0
- package/dist/dispatch/runner.js.map +1 -0
- package/dist/dispatch/utils.d.ts +159 -0
- package/dist/dispatch/utils.js +381 -0
- package/dist/dispatch/utils.js.map +1 -0
- package/dist/dispatch/verification-execution.d.ts +48 -0
- package/dist/dispatch/verification-execution.js +252 -0
- package/dist/dispatch/verification-execution.js.map +1 -0
- package/dist/dispatch/verification-late-audit.d.ts +17 -0
- package/dist/dispatch/verification-late-audit.js +117 -0
- package/dist/dispatch/verification-late-audit.js.map +1 -0
- package/dist/evidence/claim-recovery/authenticated-carrier-projection.d.ts +30 -0
- package/dist/evidence/claim-recovery/authenticated-carrier-projection.js +100 -0
- package/dist/evidence/claim-recovery/authenticated-carrier-projection.js.map +1 -0
- package/dist/evidence/claim-recovery/authenticated-receipts.d.ts +46 -0
- package/dist/evidence/claim-recovery/authenticated-receipts.js +120 -0
- package/dist/evidence/claim-recovery/authenticated-receipts.js.map +1 -0
- package/dist/evidence/claim-recovery/carrier-inventory.d.ts +49 -0
- package/dist/evidence/claim-recovery/carrier-inventory.js +340 -0
- package/dist/evidence/claim-recovery/carrier-inventory.js.map +1 -0
- package/dist/evidence/claim-recovery/claim-index.d.ts +12 -0
- package/dist/evidence/claim-recovery/claim-index.js +56 -0
- package/dist/evidence/claim-recovery/claim-index.js.map +1 -0
- package/dist/evidence/claim-recovery/confirmation.d.ts +53 -0
- package/dist/evidence/claim-recovery/confirmation.js +151 -0
- package/dist/evidence/claim-recovery/confirmation.js.map +1 -0
- package/dist/evidence/claim-recovery/context.d.ts +15 -0
- package/dist/evidence/claim-recovery/context.js +40 -0
- package/dist/evidence/claim-recovery/context.js.map +1 -0
- package/dist/evidence/claim-recovery/proof-storage.d.ts +6 -0
- package/dist/evidence/claim-recovery/proof-storage.js +97 -0
- package/dist/evidence/claim-recovery/proof-storage.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/anchors.d.ts +20 -0
- package/dist/evidence/claim-recovery/validation/anchors.js +22 -0
- package/dist/evidence/claim-recovery/validation/anchors.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/carrier-projection.d.ts +9 -0
- package/dist/evidence/claim-recovery/validation/carrier-projection.js +364 -0
- package/dist/evidence/claim-recovery/validation/carrier-projection.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/carrier-types.d.ts +83 -0
- package/dist/evidence/claim-recovery/validation/carrier-types.js +2 -0
- package/dist/evidence/claim-recovery/validation/carrier-types.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/claim-split.d.ts +57 -0
- package/dist/evidence/claim-recovery/validation/claim-split.js +209 -0
- package/dist/evidence/claim-recovery/validation/claim-split.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/claims.d.ts +20 -0
- package/dist/evidence/claim-recovery/validation/claims.js +108 -0
- package/dist/evidence/claim-recovery/validation/claims.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/current-projection.d.ts +36 -0
- package/dist/evidence/claim-recovery/validation/current-projection.js +424 -0
- package/dist/evidence/claim-recovery/validation/current-projection.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/lexical.d.ts +18 -0
- package/dist/evidence/claim-recovery/validation/lexical.js +91 -0
- package/dist/evidence/claim-recovery/validation/lexical.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/materials.d.ts +19 -0
- package/dist/evidence/claim-recovery/validation/materials.js +160 -0
- package/dist/evidence/claim-recovery/validation/materials.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/native-material.d.ts +27 -0
- package/dist/evidence/claim-recovery/validation/native-material.js +35 -0
- package/dist/evidence/claim-recovery/validation/native-material.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/native-occurrences.d.ts +79 -0
- package/dist/evidence/claim-recovery/validation/native-occurrences.js +187 -0
- package/dist/evidence/claim-recovery/validation/native-occurrences.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/native-state.d.ts +45 -0
- package/dist/evidence/claim-recovery/validation/native-state.js +385 -0
- package/dist/evidence/claim-recovery/validation/native-state.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/obligations.d.ts +15 -0
- package/dist/evidence/claim-recovery/validation/obligations.js +65 -0
- package/dist/evidence/claim-recovery/validation/obligations.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/occurrence-source.d.ts +45 -0
- package/dist/evidence/claim-recovery/validation/occurrence-source.js +208 -0
- package/dist/evidence/claim-recovery/validation/occurrence-source.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/occurrence-types.d.ts +101 -0
- package/dist/evidence/claim-recovery/validation/occurrence-types.js +2 -0
- package/dist/evidence/claim-recovery/validation/occurrence-types.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/occurrence.d.ts +30 -0
- package/dist/evidence/claim-recovery/validation/occurrence.js +227 -0
- package/dist/evidence/claim-recovery/validation/occurrence.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/primitives.d.ts +11 -0
- package/dist/evidence/claim-recovery/validation/primitives.js +41 -0
- package/dist/evidence/claim-recovery/validation/primitives.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/receipts.d.ts +37 -0
- package/dist/evidence/claim-recovery/validation/receipts.js +83 -0
- package/dist/evidence/claim-recovery/validation/receipts.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/recovery-json.d.ts +8 -0
- package/dist/evidence/claim-recovery/validation/recovery-json.js +42 -0
- package/dist/evidence/claim-recovery/validation/recovery-json.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/semantic-cache.d.ts +3 -0
- package/dist/evidence/claim-recovery/validation/semantic-cache.js +22 -0
- package/dist/evidence/claim-recovery/validation/semantic-cache.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/semantic-validation.d.ts +9 -0
- package/dist/evidence/claim-recovery/validation/semantic-validation.js +347 -0
- package/dist/evidence/claim-recovery/validation/semantic-validation.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/sighting.d.ts +2 -0
- package/dist/evidence/claim-recovery/validation/sighting.js +15 -0
- package/dist/evidence/claim-recovery/validation/sighting.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/sources.d.ts +15 -0
- package/dist/evidence/claim-recovery/validation/sources.js +2 -0
- package/dist/evidence/claim-recovery/validation/sources.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/types.d.ts +126 -0
- package/dist/evidence/claim-recovery/validation/types.js +2 -0
- package/dist/evidence/claim-recovery/validation/types.js.map +1 -0
- package/dist/evidence/claim-split.d.ts +1 -0
- package/dist/evidence/claim-split.js +2 -0
- package/dist/evidence/claim-split.js.map +1 -0
- package/dist/evidence/event-receipts.d.ts +16 -0
- package/dist/evidence/event-receipts.js +41 -0
- package/dist/evidence/event-receipts.js.map +1 -0
- package/dist/evidence/finding-recovery.d.ts +23 -0
- package/dist/evidence/finding-recovery.js +74 -0
- package/dist/evidence/finding-recovery.js.map +1 -0
- package/dist/evidence/finding-retriage.d.ts +14 -0
- package/dist/evidence/finding-retriage.js +57 -0
- package/dist/evidence/finding-retriage.js.map +1 -0
- package/dist/evidence/format.d.ts +18 -0
- package/dist/evidence/format.js +152 -0
- package/dist/evidence/format.js.map +1 -0
- package/dist/evidence/original-run/decode.d.ts +30 -0
- package/dist/evidence/original-run/decode.js +208 -0
- package/dist/evidence/original-run/decode.js.map +1 -0
- package/dist/evidence/original-run/journal.d.ts +31 -0
- package/dist/evidence/original-run/journal.js +157 -0
- package/dist/evidence/original-run/journal.js.map +1 -0
- package/dist/evidence/original-run/lock-path.d.ts +17 -0
- package/dist/evidence/original-run/lock-path.js +116 -0
- package/dist/evidence/original-run/lock-path.js.map +1 -0
- package/dist/evidence/original-run/lock-scope.d.ts +21 -0
- package/dist/evidence/original-run/lock-scope.js +61 -0
- package/dist/evidence/original-run/lock-scope.js.map +1 -0
- package/dist/evidence/original-run/lock.d.ts +33 -0
- package/dist/evidence/original-run/lock.js +259 -0
- package/dist/evidence/original-run/lock.js.map +1 -0
- package/dist/evidence/original-run/remote.d.ts +23 -0
- package/dist/evidence/original-run/remote.js +110 -0
- package/dist/evidence/original-run/remote.js.map +1 -0
- package/dist/evidence/original-run/source.d.ts +61 -0
- package/dist/evidence/original-run/source.js +267 -0
- package/dist/evidence/original-run/source.js.map +1 -0
- package/dist/evidence/reads.d.ts +11 -0
- package/dist/evidence/reads.js +16 -0
- package/dist/evidence/reads.js.map +1 -0
- package/dist/evidence/recover-finding.d.ts +17 -0
- package/dist/evidence/recover-finding.js +65 -0
- package/dist/evidence/recover-finding.js.map +1 -0
- package/dist/evidence/recover-run.d.ts +26 -0
- package/dist/evidence/recover-run.js +180 -0
- package/dist/evidence/recover-run.js.map +1 -0
- package/dist/evidence/retained-time-budget.d.ts +9 -0
- package/dist/evidence/retained-time-budget.js +14 -0
- package/dist/evidence/retained-time-budget.js.map +1 -0
- package/dist/evidence/retriage-finding.d.ts +12 -0
- package/dist/evidence/retriage-finding.js +67 -0
- package/dist/evidence/retriage-finding.js.map +1 -0
- package/dist/evidence/reviewer-lineage.d.ts +35 -0
- package/dist/evidence/reviewer-lineage.js +293 -0
- package/dist/evidence/reviewer-lineage.js.map +1 -0
- package/dist/evidence/reviewer-original.d.ts +67 -0
- package/dist/evidence/reviewer-original.js +148 -0
- package/dist/evidence/reviewer-original.js.map +1 -0
- package/dist/evidence/reviewer-recovery.d.ts +74 -0
- package/dist/evidence/reviewer-recovery.js +179 -0
- package/dist/evidence/reviewer-recovery.js.map +1 -0
- package/dist/evidence/reviewer-status.d.ts +145 -0
- package/dist/evidence/reviewer-status.js +302 -0
- package/dist/evidence/reviewer-status.js.map +1 -0
- package/dist/evidence/show.d.ts +10 -0
- package/dist/evidence/show.js +41 -0
- package/dist/evidence/show.js.map +1 -0
- package/dist/evidence/status.d.ts +38 -0
- package/dist/evidence/status.js +73 -0
- package/dist/evidence/status.js.map +1 -0
- package/dist/evidence/target.d.ts +17 -0
- package/dist/evidence/target.js +74 -0
- package/dist/evidence/target.js.map +1 -0
- package/dist/evidence/types.d.ts +176 -0
- package/dist/evidence/types.js +109 -0
- package/dist/evidence/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2688 -0
- package/dist/index.js.map +1 -0
- package/dist/models/seed.d.ts +44 -0
- package/dist/models/seed.js +175 -0
- package/dist/models/seed.js.map +1 -0
- package/dist/models/server-stats.d.ts +80 -0
- package/dist/models/server-stats.js +109 -0
- package/dist/models/server-stats.js.map +1 -0
- package/dist/models/stats-store.d.ts +84 -0
- package/dist/models/stats-store.js +572 -0
- package/dist/models/stats-store.js.map +1 -0
- package/dist/output/artifacts.d.ts +16 -0
- package/dist/output/artifacts.js +29 -0
- package/dist/output/artifacts.js.map +1 -0
- package/dist/output/assembly-refusal.d.ts +8 -0
- package/dist/output/assembly-refusal.js +14 -0
- package/dist/output/assembly-refusal.js.map +1 -0
- package/dist/output/github.d.ts +12 -0
- package/dist/output/github.js +214 -0
- package/dist/output/github.js.map +1 -0
- package/dist/output/json.d.ts +3 -0
- package/dist/output/json.js +8 -0
- package/dist/output/json.js.map +1 -0
- package/dist/output/markdown.d.ts +3 -0
- package/dist/output/markdown.js +281 -0
- package/dist/output/markdown.js.map +1 -0
- package/dist/output/progress.d.ts +55 -0
- package/dist/output/progress.js +180 -0
- package/dist/output/progress.js.map +1 -0
- package/dist/output/sanitize.d.ts +18 -0
- package/dist/output/sanitize.js +46 -0
- package/dist/output/sanitize.js.map +1 -0
- package/dist/output/terminal.d.ts +2 -0
- package/dist/output/terminal.js +172 -0
- package/dist/output/terminal.js.map +1 -0
- package/dist/prepare/chunker.d.ts +18 -0
- package/dist/prepare/chunker.js +325 -0
- package/dist/prepare/chunker.js.map +1 -0
- package/dist/prepare/language.d.ts +1 -0
- package/dist/prepare/language.js +99 -0
- package/dist/prepare/language.js.map +1 -0
- package/dist/prepare/prompt-builder.d.ts +44 -0
- package/dist/prepare/prompt-builder.js +102 -0
- package/dist/prepare/prompt-builder.js.map +1 -0
- package/dist/prepare/unified-diff.d.ts +40 -0
- package/dist/prepare/unified-diff.js +135 -0
- package/dist/prepare/unified-diff.js.map +1 -0
- package/dist/prompts/base.d.ts +3 -0
- package/dist/prompts/base.js +53 -0
- package/dist/prompts/base.js.map +1 -0
- package/dist/prompts/hardening.d.ts +19 -0
- package/dist/prompts/hardening.js +67 -0
- package/dist/prompts/hardening.js.map +1 -0
- package/dist/prompts/languages/elixir.d.ts +1 -0
- package/dist/prompts/languages/elixir.js +13 -0
- package/dist/prompts/languages/elixir.js.map +1 -0
- package/dist/prompts/languages/generic.d.ts +1 -0
- package/dist/prompts/languages/generic.js +11 -0
- package/dist/prompts/languages/generic.js.map +1 -0
- package/dist/prompts/languages/python.d.ts +1 -0
- package/dist/prompts/languages/python.js +14 -0
- package/dist/prompts/languages/python.js.map +1 -0
- package/dist/prompts/languages/typescript.d.ts +1 -0
- package/dist/prompts/languages/typescript.js +13 -0
- package/dist/prompts/languages/typescript.js.map +1 -0
- package/dist/prompts/plan.d.ts +15 -0
- package/dist/prompts/plan.js +55 -0
- package/dist/prompts/plan.js.map +1 -0
- package/dist/report/aggregation-inputs.d.ts +52 -0
- package/dist/report/aggregation-inputs.js +114 -0
- package/dist/report/aggregation-inputs.js.map +1 -0
- package/dist/report/assembly.d.ts +43 -0
- package/dist/report/assembly.js +133 -0
- package/dist/report/assembly.js.map +1 -0
- package/dist/report/blocking-health.d.ts +64 -0
- package/dist/report/blocking-health.js +156 -0
- package/dist/report/blocking-health.js.map +1 -0
- package/dist/report/checkpoint-assembly.d.ts +10 -0
- package/dist/report/checkpoint-assembly.js +17 -0
- package/dist/report/checkpoint-assembly.js.map +1 -0
- package/dist/report/checkpoint-consensus.d.ts +59 -0
- package/dist/report/checkpoint-consensus.js +197 -0
- package/dist/report/checkpoint-consensus.js.map +1 -0
- package/dist/report/checkpoint-gating.d.ts +36 -0
- package/dist/report/checkpoint-gating.js +110 -0
- package/dist/report/checkpoint-gating.js.map +1 -0
- package/dist/report/checkpoint-projection.d.ts +76 -0
- package/dist/report/checkpoint-projection.js +122 -0
- package/dist/report/checkpoint-projection.js.map +1 -0
- package/dist/report/consensus-assembly.d.ts +37 -0
- package/dist/report/consensus-assembly.js +33 -0
- package/dist/report/consensus-assembly.js.map +1 -0
- package/dist/report/recovery-source.d.ts +7 -0
- package/dist/report/recovery-source.js +7 -0
- package/dist/report/recovery-source.js.map +1 -0
- package/dist/report/reviewer-artifact.d.ts +118 -0
- package/dist/report/reviewer-artifact.js +381 -0
- package/dist/report/reviewer-artifact.js.map +1 -0
- package/dist/report/reviewer-evidence-schema.d.ts +42 -0
- package/dist/report/reviewer-evidence-schema.js +28 -0
- package/dist/report/reviewer-evidence-schema.js.map +1 -0
- package/dist/report/reviewer-evidence.d.ts +54 -0
- package/dist/report/reviewer-evidence.js +229 -0
- package/dist/report/reviewer-evidence.js.map +1 -0
- package/dist/report/reviewer-health.d.ts +62 -0
- package/dist/report/reviewer-health.js +105 -0
- package/dist/report/reviewer-health.js.map +1 -0
- package/dist/report/run-header.d.ts +219 -0
- package/dist/report/run-header.js +307 -0
- package/dist/report/run-header.js.map +1 -0
- package/dist/report/supplemental-async.d.ts +19 -0
- package/dist/report/supplemental-async.js +85 -0
- package/dist/report/supplemental-async.js.map +1 -0
- package/dist/report/uuid.d.ts +16 -0
- package/dist/report/uuid.js +41 -0
- package/dist/report/uuid.js.map +1 -0
- package/dist/resolver/git.d.ts +16 -0
- package/dist/resolver/git.js +77 -0
- package/dist/resolver/git.js.map +1 -0
- package/dist/resolver/github-client.d.ts +82 -0
- package/dist/resolver/github-client.js +27 -0
- package/dist/resolver/github-client.js.map +1 -0
- package/dist/resolver/github.d.ts +29 -0
- package/dist/resolver/github.js +166 -0
- package/dist/resolver/github.js.map +1 -0
- package/dist/resolver/local.d.ts +3 -0
- package/dist/resolver/local.js +75 -0
- package/dist/resolver/local.js.map +1 -0
- package/dist/resolver/plan.d.ts +8 -0
- package/dist/resolver/plan.js +44 -0
- package/dist/resolver/plan.js.map +1 -0
- package/dist/resolver/target.d.ts +35 -0
- package/dist/resolver/target.js +112 -0
- package/dist/resolver/target.js.map +1 -0
- package/dist/resolver/types.d.ts +43 -0
- package/dist/resolver/types.js +2 -0
- package/dist/resolver/types.js.map +1 -0
- package/dist/roles/builtin.d.ts +4 -0
- package/dist/roles/builtin.js +282 -0
- package/dist/roles/builtin.js.map +1 -0
- package/dist/roles/dispatcher.d.ts +26 -0
- package/dist/roles/dispatcher.js +96 -0
- package/dist/roles/dispatcher.js.map +1 -0
- package/dist/roles/legacy-4.1.10.d.ts +2 -0
- package/dist/roles/legacy-4.1.10.js +320 -0
- package/dist/roles/legacy-4.1.10.js.map +1 -0
- package/dist/roles/legacy-4.4.9.d.ts +4 -0
- package/dist/roles/legacy-4.4.9.js +282 -0
- package/dist/roles/legacy-4.4.9.js.map +1 -0
- package/dist/roles/loader.d.ts +10 -0
- package/dist/roles/loader.js +104 -0
- package/dist/roles/loader.js.map +1 -0
- package/dist/roles/types.d.ts +13 -0
- package/dist/roles/types.js +2 -0
- package/dist/roles/types.js.map +1 -0
- package/dist/telemetry/abort-signal.d.ts +13 -0
- package/dist/telemetry/abort-signal.js +40 -0
- package/dist/telemetry/abort-signal.js.map +1 -0
- package/dist/telemetry/attest.d.ts +98 -0
- package/dist/telemetry/attest.js +331 -0
- package/dist/telemetry/attest.js.map +1 -0
- package/dist/telemetry/attested-retry.d.ts +79 -0
- package/dist/telemetry/attested-retry.js +195 -0
- package/dist/telemetry/attested-retry.js.map +1 -0
- package/dist/telemetry/attested-reviewer-delivery.d.ts +58 -0
- package/dist/telemetry/attested-reviewer-delivery.js +238 -0
- package/dist/telemetry/attested-reviewer-delivery.js.map +1 -0
- package/dist/telemetry/backfill.d.ts +95 -0
- package/dist/telemetry/backfill.js +460 -0
- package/dist/telemetry/backfill.js.map +1 -0
- package/dist/telemetry/credentials.d.ts +44 -0
- package/dist/telemetry/credentials.js +87 -0
- package/dist/telemetry/credentials.js.map +1 -0
- package/dist/telemetry/deliver.d.ts +152 -0
- package/dist/telemetry/deliver.js +662 -0
- package/dist/telemetry/deliver.js.map +1 -0
- package/dist/telemetry/envelope-validation.d.ts +13 -0
- package/dist/telemetry/envelope-validation.js +196 -0
- package/dist/telemetry/envelope-validation.js.map +1 -0
- package/dist/telemetry/envelope.d.ts +159 -0
- package/dist/telemetry/envelope.js +288 -0
- package/dist/telemetry/envelope.js.map +1 -0
- package/dist/telemetry/events.d.ts +68 -0
- package/dist/telemetry/events.js +79 -0
- package/dist/telemetry/events.js.map +1 -0
- package/dist/telemetry/notice.d.ts +15 -0
- package/dist/telemetry/notice.js +67 -0
- package/dist/telemetry/notice.js.map +1 -0
- package/dist/telemetry/outbox.d.ts +166 -0
- package/dist/telemetry/outbox.js +741 -0
- package/dist/telemetry/outbox.js.map +1 -0
- package/dist/telemetry/quarantine.d.ts +105 -0
- package/dist/telemetry/quarantine.js +224 -0
- package/dist/telemetry/quarantine.js.map +1 -0
- package/dist/telemetry/read-sink.d.ts +31 -0
- package/dist/telemetry/read-sink.js +25 -0
- package/dist/telemetry/read-sink.js.map +1 -0
- package/dist/telemetry/recovery/command.d.ts +16 -0
- package/dist/telemetry/recovery/command.js +70 -0
- package/dist/telemetry/recovery/command.js.map +1 -0
- package/dist/telemetry/recovery/discovery.d.ts +8 -0
- package/dist/telemetry/recovery/discovery.js +277 -0
- package/dist/telemetry/recovery/discovery.js.map +1 -0
- package/dist/telemetry/recovery/files.d.ts +20 -0
- package/dist/telemetry/recovery/files.js +123 -0
- package/dist/telemetry/recovery/files.js.map +1 -0
- package/dist/telemetry/recovery/plan.d.ts +10 -0
- package/dist/telemetry/recovery/plan.js +325 -0
- package/dist/telemetry/recovery/plan.js.map +1 -0
- package/dist/telemetry/recovery/source.d.ts +328 -0
- package/dist/telemetry/recovery/source.js +253 -0
- package/dist/telemetry/recovery/source.js.map +1 -0
- package/dist/telemetry/recovery/types.d.ts +100 -0
- package/dist/telemetry/recovery/types.js +2 -0
- package/dist/telemetry/recovery/types.js.map +1 -0
- package/dist/telemetry/recovery-request-budget.d.ts +39 -0
- package/dist/telemetry/recovery-request-budget.js +102 -0
- package/dist/telemetry/recovery-request-budget.js.map +1 -0
- package/dist/telemetry/report-consistency.d.ts +11 -0
- package/dist/telemetry/report-consistency.js +111 -0
- package/dist/telemetry/report-consistency.js.map +1 -0
- package/dist/telemetry/reviewer-delivery.d.ts +39 -0
- package/dist/telemetry/reviewer-delivery.js +279 -0
- package/dist/telemetry/reviewer-delivery.js.map +1 -0
- package/dist/telemetry/reviewer-preflight.d.ts +13 -0
- package/dist/telemetry/reviewer-preflight.js +56 -0
- package/dist/telemetry/reviewer-preflight.js.map +1 -0
- package/dist/telemetry/scrub.d.ts +53 -0
- package/dist/telemetry/scrub.js +205 -0
- package/dist/telemetry/scrub.js.map +1 -0
- package/dist/telemetry/sink.d.ts +212 -0
- package/dist/telemetry/sink.js +813 -0
- package/dist/telemetry/sink.js.map +1 -0
- package/dist/telemetry/terminal-reviewer-delivery.d.ts +18 -0
- package/dist/telemetry/terminal-reviewer-delivery.js +27 -0
- package/dist/telemetry/terminal-reviewer-delivery.js.map +1 -0
- package/dist/telemetry/transient-input.d.ts +2 -0
- package/dist/telemetry/transient-input.js +37 -0
- package/dist/telemetry/transient-input.js.map +1 -0
- package/dist/telemetry/verification.d.ts +9 -0
- package/dist/telemetry/verification.js +12 -0
- package/dist/telemetry/verification.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
import { nativeReviewCycleSchema } from '../../../converge/review-cycle.js';
|
|
2
|
+
import { deriveCurrentClaimProjection, nativeProjectionFingerprint } from './current-projection.js';
|
|
3
|
+
import { nativeMaterial, operationOccurrences, packNativeMaterial } from './native-material.js';
|
|
4
|
+
import { deriveNativeOccurrenceEvidence, occurrencePendingIdentities } from './native-occurrences.js';
|
|
5
|
+
import { createHash } from 'node:crypto';
|
|
6
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
7
|
+
import { claimDescriptorSchema } from './claims.js';
|
|
8
|
+
import { correctionAnchor } from './anchors.js';
|
|
9
|
+
import { decodeRecoveryOriginal as decodeOriginalReport } from './recovery-json.js';
|
|
10
|
+
import { object, uuidSchema } from './primitives.js';
|
|
11
|
+
import { migratedLegacyPendingRound } from './obligations.js';
|
|
12
|
+
import { validateSemanticState } from './semantic-validation.js';
|
|
13
|
+
const MAX_BYTES = 64 * 1024 * 1024;
|
|
14
|
+
export const MAX_NATIVE_RECOVERY_SNAPSHOT_BYTES = 64 * 1024 * 1024;
|
|
15
|
+
const sha = (raw) => createHash('sha256').update(raw).digest('hex');
|
|
16
|
+
const digest = (value) => typeof value === 'string' && /^[a-f0-9]{64}$/.test(value);
|
|
17
|
+
const uuid = (value) => uuidSchema.safeParse(value).success;
|
|
18
|
+
const identity = (value) => typeof value === 'string' && /^[a-f0-9]{16}$/.test(value);
|
|
19
|
+
const requireSource = (valid) => { if (!valid)
|
|
20
|
+
throw new Error('native_recovery_source_conflict'); };
|
|
21
|
+
function decode(raw) {
|
|
22
|
+
requireSource(typeof raw === 'string' && Buffer.byteLength(raw) <= MAX_BYTES);
|
|
23
|
+
const decoded = decodeOriginalReport(raw, { exactNumbers: true });
|
|
24
|
+
requireSource(decoded.transformations.length === 0 && object(decoded.value));
|
|
25
|
+
return decoded.value;
|
|
26
|
+
}
|
|
27
|
+
function nativeSource(raw, target) {
|
|
28
|
+
const state = decode(raw);
|
|
29
|
+
requireSource(state.startOverPending === undefined && (state.cycle === undefined ||
|
|
30
|
+
state.version !== 1 && nativeReviewCycleSchema.safeParse(state.cycle).success));
|
|
31
|
+
// Released cycle-v2 predates semantic sightings. A hybrid must not use its
|
|
32
|
+
// cycle metadata to bypass the separate semantic-v2 membership requirements.
|
|
33
|
+
const cycleOrigin = state.version === 2 && state.cycle !== undefined;
|
|
34
|
+
requireSource(!cycleOrigin || state.sightings === undefined && state.migration === undefined);
|
|
35
|
+
requireSource((state.version === 1 || state.version === 2 || state.version === 3) && state.target === target &&
|
|
36
|
+
Number.isSafeInteger(state.roundCap) && state.roundCap >= 2 && state.roundCap <= 99 &&
|
|
37
|
+
Array.isArray(state.rounds) && object(state.findings) && typeof state.updatedAt === 'string');
|
|
38
|
+
requireSource(state.version === 3 ? object(state.recovery) && [1, 2].includes(state.recovery.version) &&
|
|
39
|
+
Array.isArray(state.recovery.operations) && state.recovery.operations.length > 0 &&
|
|
40
|
+
state.recovery.operations.every(operation => object(operation) && uuid(operation.operationId) &&
|
|
41
|
+
[1, 2, 3].includes(operation.sourceVersion) && digest(operation.sourceSha256) &&
|
|
42
|
+
Array.isArray(operation.anchors) && operation.anchors.every(anchor => object(anchor) && identity(anchor.identity)) &&
|
|
43
|
+
Array.isArray(operation.sourceReceipts)) : state.recovery === undefined);
|
|
44
|
+
requireSource(state.migration === undefined || object(state.migration) && digest(state.migration.sourceSha256) &&
|
|
45
|
+
typeof state.migration.snapshotPath === 'string' && typeof state.migration.migratedAt === 'string');
|
|
46
|
+
requireSource(state.version !== 1 || state.sightings === undefined && state.migration === undefined);
|
|
47
|
+
const rounds = state.rounds;
|
|
48
|
+
const seen = new Set();
|
|
49
|
+
const positive = (n) => Number.isSafeInteger(n) && n > 0;
|
|
50
|
+
for (const round of rounds) {
|
|
51
|
+
requireSource(object(round) && positive(round.round) && round.round <= state.roundCap && !seen.has(round.round) && object(round.counts) &&
|
|
52
|
+
['new', 'repeat', 'suppressed', 'regating'].every(k => Number.isSafeInteger(round.counts[k]) && (round.counts[k] ?? -1) >= 0));
|
|
53
|
+
seen.add(round.round);
|
|
54
|
+
requireSource(round.runId === undefined || uuid(round.runId));
|
|
55
|
+
requireSource(round.severities === undefined || object(round.severities) && Object.entries(round.severities).every(([key, value]) => identity(key) && ['critical', 'important', 'minor', 'nitpick'].includes(value)));
|
|
56
|
+
requireSource(!cycleOrigin || round.reportBinding === undefined);
|
|
57
|
+
}
|
|
58
|
+
for (const [key, rawEntry] of Object.entries(state.findings)) {
|
|
59
|
+
requireSource(identity(key) && object(rawEntry));
|
|
60
|
+
const entry = rawEntry;
|
|
61
|
+
requireSource(entry.key === key && ['file', 'category', 'title', 'severity'].every(k => typeof entry[k] === 'string') &&
|
|
62
|
+
['critical', 'important', 'minor', 'nitpick'].includes(entry.severity) && Array.isArray(entry.models) && entry.models.every(m => typeof m === 'string') &&
|
|
63
|
+
Number.isSafeInteger(entry.startLine) && Number.isSafeInteger(entry.endLine) && entry.startLine >= 0 && entry.endLine >= entry.startLine &&
|
|
64
|
+
positive(entry.firstRound) && positive(entry.lastRound) && entry.firstRound <= entry.lastRound &&
|
|
65
|
+
seen.has(entry.firstRound) && seen.has(entry.lastRound));
|
|
66
|
+
requireSource(entry.pendingRound === undefined || positive(entry.pendingRound) && seen.has(entry.pendingRound) && entry.pendingRound <= entry.lastRound);
|
|
67
|
+
requireSource(entry.verdict === undefined ? entry.verdictRound === undefined && entry.verdictSeverity === undefined :
|
|
68
|
+
['fixed', 'dismissed'].includes(entry.verdict) && positive(entry.verdictRound) && seen.has(entry.verdictRound));
|
|
69
|
+
requireSource(entry.verdictSeverity === undefined || ['critical', 'important', 'minor', 'nitpick'].includes(entry.verdictSeverity));
|
|
70
|
+
requireSource(entry.claimDescriptor === undefined || state.version !== 1 && claimDescriptorSchema.safeParse(entry.claimDescriptor).success);
|
|
71
|
+
requireSource(!cycleOrigin || entry.claimDescriptor === undefined && entry.pendingRound === undefined);
|
|
72
|
+
}
|
|
73
|
+
// A recovered v3 descendant may omit its semantic sighting cache only
|
|
74
|
+
// provisionally. The full snapshot walk below proves its released cycle-v2
|
|
75
|
+
// root; this parser must not trust an operation's claimed source version.
|
|
76
|
+
requireSource(state.version === 1 || cycleOrigin || Array.isArray(state.sightings) ||
|
|
77
|
+
state.version === 3 && state.sightings === undefined);
|
|
78
|
+
if (state.lastAnnotations !== undefined) {
|
|
79
|
+
requireSource(object(state.lastAnnotations));
|
|
80
|
+
const annotations = state.lastAnnotations;
|
|
81
|
+
requireSource(positive(annotations.round) && seen.has(annotations.round) && Array.isArray(annotations.identities) &&
|
|
82
|
+
annotations.identities.every(row => object(row) && identity(row.identity) && Object.hasOwn(state.findings, row.identity) &&
|
|
83
|
+
['new', 'repeat', 'suppressed', 'regating'].includes(row.status) && typeof row.gating === 'string'));
|
|
84
|
+
}
|
|
85
|
+
return state;
|
|
86
|
+
}
|
|
87
|
+
function retainedFindingIdentity(current, predecessor) {
|
|
88
|
+
// Ordinary verdicts can follow recovery, and semantic sightings update their
|
|
89
|
+
// caches. Their evidence is validated by the semantic proof kernel; lineage
|
|
90
|
+
// preserves the original identity rather than freezing those later results.
|
|
91
|
+
const mutable = new Set(['pendingRound', 'verdict', 'verdictRound', 'verdictSeverity', 'verdictReason',
|
|
92
|
+
...(predecessor.claimDescriptor ? ['lastRound', 'models', 'startLine', 'endLine', 'severity'] : [])]);
|
|
93
|
+
const retained = (entry) => Object.fromEntries(Object.entries(entry).filter(([key]) => !mutable.has(key)));
|
|
94
|
+
return isDeepStrictEqual(retained(current), retained(predecessor)) && current.lastRound >= predecessor.lastRound &&
|
|
95
|
+
(predecessor.verdict === undefined || current.verdict !== undefined && current.verdictRound >= predecessor.verdictRound);
|
|
96
|
+
}
|
|
97
|
+
/** Pure snapshot lineage proof; remote acceptance is validated separately. */
|
|
98
|
+
function retainedRounds(current, predecessor) {
|
|
99
|
+
const rounds = new Map(current.rounds.map(round => [round.round, round]));
|
|
100
|
+
return predecessor.rounds.every(round => isDeepStrictEqual(rounds.get(round.round), round));
|
|
101
|
+
}
|
|
102
|
+
export function verifyNativeRecoveryLineage(sourceJson, target, nativeSourceJsons = []) {
|
|
103
|
+
try {
|
|
104
|
+
const state = nativeSource(sourceJson, target);
|
|
105
|
+
requireSource(Array.isArray(nativeSourceJsons));
|
|
106
|
+
const maximumSnapshots = (state.recovery?.operations.length ?? 0) + (state.migration ? 1 : 0);
|
|
107
|
+
requireSource(nativeSourceJsons.length <= maximumSnapshots);
|
|
108
|
+
// Bound the whole ancestry before hashing any predecessor. Oversized
|
|
109
|
+
// histories remain retained but cannot be admitted to an in-memory proof.
|
|
110
|
+
let snapshotBytes = 0;
|
|
111
|
+
for (const raw of nativeSourceJsons) {
|
|
112
|
+
requireSource(typeof raw === 'string' && raw.length <= MAX_NATIVE_RECOVERY_SNAPSHOT_BYTES - snapshotBytes);
|
|
113
|
+
snapshotBytes += Buffer.byteLength(raw);
|
|
114
|
+
requireSource(snapshotBytes <= MAX_NATIVE_RECOVERY_SNAPSHOT_BYTES);
|
|
115
|
+
}
|
|
116
|
+
const snapshots = new Map(nativeSourceJsons.map(raw => [sha(raw), raw]));
|
|
117
|
+
requireSource(snapshots.size === nativeSourceJsons.length);
|
|
118
|
+
const used = new Set();
|
|
119
|
+
const take = (digest) => {
|
|
120
|
+
requireSource(/^[a-f0-9]{64}$/.test(digest) && !used.has(digest) && snapshots.has(digest));
|
|
121
|
+
used.add(digest);
|
|
122
|
+
return nativeSource(snapshots.get(digest), target);
|
|
123
|
+
};
|
|
124
|
+
let current = state;
|
|
125
|
+
let requiresReleasedCycleRoot = false;
|
|
126
|
+
const reserved = new Set();
|
|
127
|
+
if (state.version === 3)
|
|
128
|
+
for (const anchor of recoveryAnchors(state)) {
|
|
129
|
+
requireSource(identity(anchor.identity) && !reserved.has(anchor.identity));
|
|
130
|
+
reserved.add(anchor.identity);
|
|
131
|
+
}
|
|
132
|
+
while (current.version === 3) {
|
|
133
|
+
requiresReleasedCycleRoot ||= current.sightings === undefined;
|
|
134
|
+
const operations = current.recovery.operations;
|
|
135
|
+
const operation = operations.at(-1);
|
|
136
|
+
requireSource(object(operation) && uuid(operation.operationId));
|
|
137
|
+
const predecessor = take(operation.sourceSha256);
|
|
138
|
+
requireSource(operation.sourceVersion === predecessor.version &&
|
|
139
|
+
isDeepStrictEqual(operations.slice(0, -1), predecessor.recovery?.operations ?? []) &&
|
|
140
|
+
isDeepStrictEqual(current.migration, predecessor.migration) &&
|
|
141
|
+
isDeepStrictEqual(current.cycle, predecessor.cycle) &&
|
|
142
|
+
current.roundCap === predecessor.roundCap &&
|
|
143
|
+
retainedRounds(current, predecessor) &&
|
|
144
|
+
Object.entries(predecessor.findings).every(([key, finding]) => Object.hasOwn(current.findings, key) && retainedFindingIdentity(current.findings[key], finding)));
|
|
145
|
+
current = predecessor;
|
|
146
|
+
}
|
|
147
|
+
// Every sighting-less v3 link is admissible only when its exact walked root
|
|
148
|
+
// is an authentic released cycle-v2 snapshot. The link checks above retain
|
|
149
|
+
// the cycle byte-for-byte through every recovery operation.
|
|
150
|
+
if (requiresReleasedCycleRoot)
|
|
151
|
+
requireSource(current.version === 2 && current.cycle !== undefined &&
|
|
152
|
+
current.sightings === undefined && current.migration === undefined);
|
|
153
|
+
let legacy = current.version === 1 ? current : undefined;
|
|
154
|
+
if (current.version === 2 && current.migration) {
|
|
155
|
+
legacy = take(current.migration.sourceSha256);
|
|
156
|
+
requireSource(legacy.version === 1 && current.roundCap === legacy.roundCap && retainedRounds(current, legacy) &&
|
|
157
|
+
Object.entries(legacy.findings).every(([key, finding]) => Object.hasOwn(current.findings, key) && retainedFindingIdentity(current.findings[key], finding)));
|
|
158
|
+
}
|
|
159
|
+
requireSource(used.size === snapshots.size);
|
|
160
|
+
return { state, original: current, ...(legacy ? { legacy } : {}), reservedIdentities: [...reserved].sort() };
|
|
161
|
+
}
|
|
162
|
+
catch (cause) {
|
|
163
|
+
throw new Error('native_recovery_lineage_conflict', { cause });
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
function validateAnchors(input, source) {
|
|
167
|
+
requireSource(uuid(input.operationId) && input.target.trim() === input.target && input.target.length > 0 &&
|
|
168
|
+
Array.isArray(input.anchors) && (input.anchors.length > 0 ||
|
|
169
|
+
[input.transfers, input.dispositions, input.carriers].some(rows => Array.isArray(rows) && rows.length > 0)) && Array.isArray(input.reports) && Array.isArray(input.sourceReceipts));
|
|
170
|
+
requireSource(input.transfers === undefined || Array.isArray(input.transfers));
|
|
171
|
+
requireSource(input.dispositions === undefined || Array.isArray(input.dispositions));
|
|
172
|
+
const reports = new Map(input.reports.map(raw => [sha(raw), raw]));
|
|
173
|
+
requireSource(reports.size === input.reports.length);
|
|
174
|
+
const receipts = new Map(input.sourceReceipts.map(receipt => [receipt.id, receipt]));
|
|
175
|
+
requireSource(receipts.size === input.sourceReceipts.length);
|
|
176
|
+
const usedReports = new Set();
|
|
177
|
+
const usedReceipts = new Set();
|
|
178
|
+
const identities = new Set();
|
|
179
|
+
const members = new Set();
|
|
180
|
+
const eventIds = new Set();
|
|
181
|
+
const destination = input.anchors[0]?.destination;
|
|
182
|
+
const prior = recoveryAnchors(source);
|
|
183
|
+
requireSource(validateAnchorIdentityBatch(prior, input.anchors, source.findings));
|
|
184
|
+
requireSource(source.version !== 3 || source.recovery.operations.every(operation => operation.operationId !== input.operationId));
|
|
185
|
+
for (const anchor of input.anchors) {
|
|
186
|
+
requireSource(object(anchor) && anchor.operationId === input.operationId && identity(anchor.identity));
|
|
187
|
+
identities.add(anchor.identity);
|
|
188
|
+
requireSource(['base_url', 'org_id', 'repo', 'pr_number'].every(field => anchor.destination[field] === destination[field]));
|
|
189
|
+
const event = decode(anchor.eventJson);
|
|
190
|
+
const payload = event.payload;
|
|
191
|
+
requireSource(object(payload) && Array.isArray(payload.source_event_ids) && payload.source_event_ids.length >= 1 && payload.source_event_ids.length <= 2 &&
|
|
192
|
+
payload.source_event_ids.every(uuid) && !eventIds.has(event.id));
|
|
193
|
+
eventIds.add(event.id);
|
|
194
|
+
const raw = reports.get(anchor.source.reportSha256);
|
|
195
|
+
requireSource(raw !== undefined);
|
|
196
|
+
usedReports.add(anchor.source.reportSha256);
|
|
197
|
+
const ids = payload.source_event_ids;
|
|
198
|
+
const selected = ids.map(id => { const receipt = receipts.get(id); requireSource(receipt !== undefined); usedReceipts.add(id); return receipt; });
|
|
199
|
+
const expected = correctionAnchor({ scope: anchor.destination, target: input.target, eventId: event.id,
|
|
200
|
+
occurredAt: event.occurred_at, nativeJson: input.sourceJson, reportJson: raw, findingRef: anchor.source.findingRef,
|
|
201
|
+
...(input.nativeSourceJsons ? { nativeSourceJsons: input.nativeSourceJsons } : {}),
|
|
202
|
+
previousIdentity: anchor.source.previousIdentity, identity: anchor.identity, descriptor: anchor.descriptor,
|
|
203
|
+
reason: payload.reason, expectedEventSequence: payload.expected_event_sequence,
|
|
204
|
+
classificationId: ids[0], ...(ids[1] ? { correctionId: ids[1] } : {}), sourceReceipts: selected }, anchor.receipt, anchor.receipt.actor_user_id, input.operationId);
|
|
205
|
+
requireSource(isDeepStrictEqual(expected, anchor));
|
|
206
|
+
const member = JSON.stringify([anchor.destination, anchor.source.runId, anchor.source.reportSha256, anchor.source.findingRef]);
|
|
207
|
+
requireSource(!members.has(member));
|
|
208
|
+
members.add(member);
|
|
209
|
+
}
|
|
210
|
+
requireSource(usedReports.size === reports.size && usedReceipts.size === receipts.size);
|
|
211
|
+
}
|
|
212
|
+
/** @internal Validate one new identity batch against retained anchors in linear time. */
|
|
213
|
+
export function validateAnchorIdentityBatch(prior, anchors, findings) {
|
|
214
|
+
const priorIdentities = new Set(prior.map(anchor => anchor.identity));
|
|
215
|
+
const identities = new Set();
|
|
216
|
+
for (const anchor of anchors) {
|
|
217
|
+
if (!identity(anchor.identity) || Object.hasOwn(findings, anchor.identity) ||
|
|
218
|
+
priorIdentities.has(anchor.identity) || identities.has(anchor.identity))
|
|
219
|
+
return false;
|
|
220
|
+
identities.add(anchor.identity);
|
|
221
|
+
}
|
|
222
|
+
return true;
|
|
223
|
+
}
|
|
224
|
+
/** @internal Pure retained-material projection used by validation regressions. */
|
|
225
|
+
export function recoveredDismissalsByRound(state, materials, snapshots) {
|
|
226
|
+
const dismissals = new Map();
|
|
227
|
+
for (const operation of state.recovery?.operations ?? []) {
|
|
228
|
+
const raw = snapshots.get(operation.sourceSha256);
|
|
229
|
+
requireSource(raw !== undefined);
|
|
230
|
+
const source = nativeSource(raw, state.target);
|
|
231
|
+
const sourceRound = Math.max(0, ...source.rounds.map(round => round.round));
|
|
232
|
+
const reference = operation.material;
|
|
233
|
+
const values = dismissals.get(sourceRound) ?? new Map();
|
|
234
|
+
if (!reference?.current) {
|
|
235
|
+
dismissals.set(sourceRound, values);
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
const content = nativeMaterial(reference, materials);
|
|
239
|
+
const projection = content.currentProjection;
|
|
240
|
+
if (projection && projection.residuals.length === 0)
|
|
241
|
+
for (const claim of projection.claims) {
|
|
242
|
+
const proof = content.occurrences?.dispositions.find(row => row.receipt.id === claim.dispositionEventId);
|
|
243
|
+
if (claim.standing === 'dismissed' && proof?.preparation.split.selection.identity === claim.identity &&
|
|
244
|
+
proof.preparation.verdict === 'dismissed')
|
|
245
|
+
values.set(claim.identity, proof.preparation.severity);
|
|
246
|
+
}
|
|
247
|
+
dismissals.set(sourceRound, values);
|
|
248
|
+
}
|
|
249
|
+
return dismissals;
|
|
250
|
+
}
|
|
251
|
+
export function recoveryAnchors(state) {
|
|
252
|
+
return state.version === 3 ? state.recovery.operations.flatMap(operation => operation.anchors) : [];
|
|
253
|
+
}
|
|
254
|
+
/** All native resolution consumers must count independent recovered occurrences. */
|
|
255
|
+
export function effectivePendingIdentities(state) {
|
|
256
|
+
const current = state.recovery?.operations.at(-1)?.material?.current;
|
|
257
|
+
if (current && current.nativeFingerprint === nativeProjectionFingerprint(state))
|
|
258
|
+
return [...current.actionableIdentities];
|
|
259
|
+
const pending = Object.values(state.findings).filter(entry => entry.pendingRound !== undefined ||
|
|
260
|
+
state.version === 3 && entry.claimDescriptor === undefined && migratedLegacyPendingRound(entry, state) !== undefined).map(entry => entry.key);
|
|
261
|
+
const operations = state.recovery?.operations ?? [];
|
|
262
|
+
const occurrencePending = operations.flatMap(operation => occurrencePendingIdentities(operation.occurrences));
|
|
263
|
+
const materialPending = operations.flatMap(operation => operation.material?.pendingIdentities ?? []);
|
|
264
|
+
return [...new Set([...pending, ...occurrencePending, ...materialPending,
|
|
265
|
+
...recoveryAnchors(state).filter(anchor => anchor.source.gating !== 'none').map(anchor => anchor.identity)])].sort();
|
|
266
|
+
}
|
|
267
|
+
function ancestorsOf(source, snapshots) {
|
|
268
|
+
const selected = [];
|
|
269
|
+
let current = source;
|
|
270
|
+
const seen = new Set();
|
|
271
|
+
const take = (digest) => {
|
|
272
|
+
requireSource(!seen.has(digest) && snapshots.has(digest));
|
|
273
|
+
seen.add(digest);
|
|
274
|
+
const raw = snapshots.get(digest);
|
|
275
|
+
selected.push(raw);
|
|
276
|
+
return nativeSource(raw, source.target);
|
|
277
|
+
};
|
|
278
|
+
while (current.version === 3)
|
|
279
|
+
current = take(current.recovery.operations.at(-1).sourceSha256);
|
|
280
|
+
if (current.version === 2 && current.migration)
|
|
281
|
+
take(current.migration.sourceSha256);
|
|
282
|
+
return selected;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Revalidate pinned native content, immutable report membership and v3 receipts.
|
|
286
|
+
* This never reads paths, authenticates receipts, acquires ownership, writes state,
|
|
287
|
+
* migrates a producer or acknowledges that any filesystem requirement is met.
|
|
288
|
+
*/
|
|
289
|
+
// Pure content replays recur through immutable predecessor proofs. Cache only
|
|
290
|
+
// fully validated content, keyed by every supplied byte and selector. Physical
|
|
291
|
+
// reads and authenticated authority are deliberately outside this cache.
|
|
292
|
+
const contentCache = new Map();
|
|
293
|
+
let contentCacheBytes = 0;
|
|
294
|
+
function contentKey(input) {
|
|
295
|
+
const contentHash = (text) => createHash('sha256').update(text, 'utf16le').digest('hex');
|
|
296
|
+
return sha(JSON.stringify({ version: 1, target: input.target, source: contentHash(input.sourceJson), reports: input.reports.map(contentHash),
|
|
297
|
+
ancestors: (input.nativeSourceJsons ?? []).map(contentHash), materials: (input.recoveryMaterials ?? []).map(row => [row.sha256, contentHash(row.text)]) }));
|
|
298
|
+
}
|
|
299
|
+
export function validateRetainedNativeEvidence(input) {
|
|
300
|
+
try {
|
|
301
|
+
const cacheKey = contentKey(input);
|
|
302
|
+
const cached = contentCache.get(cacheKey);
|
|
303
|
+
if (cached) {
|
|
304
|
+
contentCache.delete(cacheKey);
|
|
305
|
+
contentCache.set(cacheKey, cached);
|
|
306
|
+
return structuredClone(cached.value);
|
|
307
|
+
}
|
|
308
|
+
requireSource(Array.isArray(input.reports));
|
|
309
|
+
const lineage = verifyNativeRecoveryLineage(input.sourceJson, input.target, input.nativeSourceJsons);
|
|
310
|
+
const state = lineage.state;
|
|
311
|
+
const reports = new Map(input.reports.map(raw => {
|
|
312
|
+
requireSource(typeof raw === 'string' && Buffer.byteLength(raw) <= MAX_BYTES);
|
|
313
|
+
return [sha(raw), raw];
|
|
314
|
+
}));
|
|
315
|
+
requireSource(reports.size === input.reports.length);
|
|
316
|
+
const snapshots = new Map((input.nativeSourceJsons ?? []).map(raw => [sha(raw), raw]));
|
|
317
|
+
const sources = { reports, snapshots, usedReports: new Set(), pathRequirements: [] };
|
|
318
|
+
// Released cycle-v2 has ordinary legacy rounds, not a semantic ledger.
|
|
319
|
+
// nativeSource rejects semantic fields in that disjoint producer format.
|
|
320
|
+
if (state.version === 2 && state.cycle === undefined)
|
|
321
|
+
validateSemanticState(state, sources);
|
|
322
|
+
if (state.version === 3) {
|
|
323
|
+
for (const operation of state.recovery.operations) {
|
|
324
|
+
const sourceJson = snapshots.get(operation.sourceSha256);
|
|
325
|
+
const source = nativeSource(sourceJson, state.target);
|
|
326
|
+
const selectedReports = [...new Set(operation.anchors.map(anchor => anchor.source.reportSha256))].map(digest => {
|
|
327
|
+
const raw = reports.get(digest);
|
|
328
|
+
requireSource(raw !== undefined);
|
|
329
|
+
sources.usedReports.add(digest);
|
|
330
|
+
sources.pathRequirements.push({ kind: 'report', sha256: digest, nativePathSuffix: `.evidence/${digest}.json` });
|
|
331
|
+
return raw;
|
|
332
|
+
});
|
|
333
|
+
const storedOccurrences = operationOccurrences(operation, input.recoveryMaterials ?? []);
|
|
334
|
+
requireSource(!operation.material || state.recovery?.version === 2);
|
|
335
|
+
validateAnchors({ sourceJson, target: state.target, operationId: operation.operationId,
|
|
336
|
+
nativeSourceJsons: ancestorsOf(source, snapshots), anchors: operation.anchors,
|
|
337
|
+
sourceReceipts: operation.sourceReceipts, reports: selectedReports,
|
|
338
|
+
...(storedOccurrences ? { transfers: storedOccurrences.transfers, dispositions: storedOccurrences.dispositions,
|
|
339
|
+
carriers: storedOccurrences.carriers } : {}) }, source);
|
|
340
|
+
const occurrences = deriveNativeOccurrenceEvidence(storedOccurrences ?? {}, { target: state.target, sourceJson,
|
|
341
|
+
nativeSourceJsons: ancestorsOf(source, snapshots), anchors: [...recoveryAnchors(source), ...operation.anchors],
|
|
342
|
+
previous: source.recovery?.operations.flatMap(op => { const value = operationOccurrences(op, input.recoveryMaterials ?? []); return value ? [value] : []; }) ?? [] });
|
|
343
|
+
const currentStored = operation.material ? nativeMaterial(operation.material, input.recoveryMaterials ?? []).currentProjection : undefined;
|
|
344
|
+
const currentProjection = currentStored ? deriveCurrentClaimProjection(source, [...recoveryAnchors(source), ...operation.anchors], [...source.recovery?.operations.flatMap(op => { const value = operationOccurrences(op, input.recoveryMaterials ?? []); return value ? [value] : []; }) ?? [], ...(occurrences ? [occurrences] : [])], currentStored.history, ancestorsOf(source, snapshots), sourceJson, currentStored.version) : undefined;
|
|
345
|
+
requireSource(!currentStored || isDeepStrictEqual(currentProjection, currentStored));
|
|
346
|
+
requireSource(isDeepStrictEqual(operation, { operationId: operation.operationId,
|
|
347
|
+
sourceVersion: source.version, sourceSha256: sha(sourceJson),
|
|
348
|
+
anchors: operation.anchors, sourceReceipts: operation.sourceReceipts, ...(operation.material ? { material: packNativeMaterial({ ...(occurrences ? { occurrences } : {}), ...(currentProjection ? { currentProjection } : {}) }).reference } : occurrences ? { occurrences } : {}) }));
|
|
349
|
+
sources.pathRequirements.push({ kind: 'native-predecessor', sha256: operation.sourceSha256,
|
|
350
|
+
nativePathSuffix: `.recovery-sources/${operation.sourceSha256}.json` });
|
|
351
|
+
}
|
|
352
|
+
const legacyOrigin = lineage.original.version === 1 || lineage.original.version === 2 && lineage.original.cycle !== undefined;
|
|
353
|
+
if (!legacyOrigin)
|
|
354
|
+
validateSemanticState(lineage.original, sources);
|
|
355
|
+
// Only exact predecessor rounds are legacy; added rounds still require
|
|
356
|
+
// the full immutable report, sighting membership and cache validation.
|
|
357
|
+
validateSemanticState(state, sources, legacyOrigin ? lineage.original : undefined, recoveredDismissalsByRound(state, input.recoveryMaterials ?? [], snapshots));
|
|
358
|
+
}
|
|
359
|
+
requireSource(sources.usedReports.size === reports.size);
|
|
360
|
+
const legacyClaims = Object.values(state.findings).filter(entry => entry.claimDescriptor === undefined).map(entry => {
|
|
361
|
+
const migrationPendingRound = migratedLegacyPendingRound(entry, state);
|
|
362
|
+
return { kind: 'legacy-identity', identity: entry.key,
|
|
363
|
+
...(entry.pendingRound === undefined ? {} : { recordedPendingRound: entry.pendingRound }),
|
|
364
|
+
...(migrationPendingRound === undefined ? {} : { migrationPendingRound }) };
|
|
365
|
+
});
|
|
366
|
+
const result = { qualification: 'content-only', state, sourceSha256: sha(input.sourceJson),
|
|
367
|
+
reservedIdentities: lineage.reservedIdentities, actionableIdentities: effectivePendingIdentities(state), legacyClaims,
|
|
368
|
+
filesystemRequirements: [...new Map(sources.pathRequirements.map(row => [JSON.stringify(row), row])).values()] };
|
|
369
|
+
const bytes = Buffer.byteLength(JSON.stringify(result));
|
|
370
|
+
if (bytes <= 16 * 1024 * 1024) {
|
|
371
|
+
while (contentCache.size >= 32 || contentCacheBytes + bytes > 16 * 1024 * 1024) {
|
|
372
|
+
const oldest = contentCache.keys().next().value;
|
|
373
|
+
contentCacheBytes -= contentCache.get(oldest).bytes;
|
|
374
|
+
contentCache.delete(oldest);
|
|
375
|
+
}
|
|
376
|
+
contentCache.set(cacheKey, { value: structuredClone(result), bytes });
|
|
377
|
+
contentCacheBytes += bytes;
|
|
378
|
+
}
|
|
379
|
+
return result;
|
|
380
|
+
}
|
|
381
|
+
catch (cause) {
|
|
382
|
+
throw new Error('native_recovery_content_invalid', { cause });
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
//# sourceMappingURL=native-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-state.js","sourceRoot":"","sources":["../../../../src/evidence/claim-recovery/validation/native-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ConvergeRunState, FindingEntry } from './types.js';
|
|
2
|
+
export declare class ConvergeRunStateError extends Error {
|
|
3
|
+
readonly code = "RCL_CONVERGE_RUN_STATE";
|
|
4
|
+
constructor(message: string, options?: ErrorOptions);
|
|
5
|
+
}
|
|
6
|
+
export declare function findingGatingReason(f: {
|
|
7
|
+
severity: string;
|
|
8
|
+
gating?: {
|
|
9
|
+
reason: string;
|
|
10
|
+
};
|
|
11
|
+
}): string;
|
|
12
|
+
/** A nongating followup cannot lower the severity needed for a critical pending source. */
|
|
13
|
+
export declare function verdictClearsPending(state: ConvergeRunState, key: string, pendingRound: number, verdictRound: number, verdictSeverity: string | undefined): boolean;
|
|
14
|
+
/** Derive only the explicit migration obligation from the unchanged v1 snapshot. */
|
|
15
|
+
export declare function migratedLegacyPendingRound(entry: FindingEntry, state: ConvergeRunState): number | undefined;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export class ConvergeRunStateError extends Error {
|
|
2
|
+
code = 'RCL_CONVERGE_RUN_STATE';
|
|
3
|
+
constructor(message, options) {
|
|
4
|
+
super(message, options);
|
|
5
|
+
this.name = 'ConvergeRunStateError';
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export function findingGatingReason(f) {
|
|
9
|
+
if (f.gating)
|
|
10
|
+
return f.gating.reason;
|
|
11
|
+
return f.severity === 'critical' || f.severity === 'important' ? 'legacy-blocking' : 'none';
|
|
12
|
+
}
|
|
13
|
+
/** A nongating followup cannot lower the severity needed for a critical pending source. */
|
|
14
|
+
export function verdictClearsPending(state, key, pendingRound, verdictRound, verdictSeverity) {
|
|
15
|
+
// v1 rounds predate the per-round severity ledger. Their retained entry
|
|
16
|
+
// severity is the only evidence available, and must remain conservative.
|
|
17
|
+
const severity = state.rounds.find(round => round.round === pendingRound)?.severities?.[key] ?? state.findings[key]?.severity;
|
|
18
|
+
return verdictRound >= pendingRound && (severity !== 'critical' || verdictSeverity === 'critical');
|
|
19
|
+
}
|
|
20
|
+
/** Derive only the explicit migration obligation from the unchanged v1 snapshot. */
|
|
21
|
+
export function migratedLegacyPendingRound(entry, state) {
|
|
22
|
+
let pendingRound = entry.pendingRound;
|
|
23
|
+
const verdictSeverity = entry.verdictSeverity ?? entry.severity;
|
|
24
|
+
if (pendingRound !== undefined && entry.verdict && entry.verdictRound !== undefined &&
|
|
25
|
+
verdictClearsPending(state, entry.key, pendingRound, entry.verdictRound, verdictSeverity)) {
|
|
26
|
+
pendingRound = undefined;
|
|
27
|
+
}
|
|
28
|
+
const verdictCanClear = entry.verdict && entry.verdictRound !== undefined && entry.verdictRound >= entry.firstRound &&
|
|
29
|
+
verdictClearsPending(state, entry.key, entry.firstRound, entry.verdictRound, verdictSeverity);
|
|
30
|
+
const annotations = state.lastAnnotations?.identities.filter(a => a.identity === entry.key) ?? [];
|
|
31
|
+
const provenNonGating = entry.firstRound === entry.lastRound && entry.lastRound === state.lastAnnotations?.round &&
|
|
32
|
+
annotations.length > 0 && annotations.every(a => a.gating === 'none');
|
|
33
|
+
if (!verdictCanClear) {
|
|
34
|
+
if (!provenNonGating)
|
|
35
|
+
pendingRound ??= entry.firstRound;
|
|
36
|
+
}
|
|
37
|
+
let criticalSighting;
|
|
38
|
+
for (const round of state.rounds) {
|
|
39
|
+
// Severity alone cannot create an obligation for this proven nongating
|
|
40
|
+
// sighting. Other retained rounds still carry conservative critical vetoes.
|
|
41
|
+
if (provenNonGating && round.round === entry.firstRound)
|
|
42
|
+
continue;
|
|
43
|
+
// The round is critical. Its stored verdict can discharge it only when it
|
|
44
|
+
// is itself critical and is no earlier than this sighting; keep the scan
|
|
45
|
+
// linear for parser-accepted retained history.
|
|
46
|
+
if (round.severities?.[entry.key] === 'critical' &&
|
|
47
|
+
!(verdictSeverity === 'critical' && (entry.verdictRound ?? 0) >= round.round)) {
|
|
48
|
+
criticalSighting = criticalSighting === undefined ? round.round : Math.min(criticalSighting, round.round);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// A later pending round cannot hide an earlier critical sighting that the
|
|
52
|
+
// stored verdict does not clear. Preserve the earliest unresolved obligation.
|
|
53
|
+
if (criticalSighting !== undefined && (pendingRound === undefined || criticalSighting < pendingRound ||
|
|
54
|
+
verdictClearsPending(state, entry.key, pendingRound, entry.verdictRound ?? 0, verdictSeverity))) {
|
|
55
|
+
pendingRound = criticalSighting;
|
|
56
|
+
}
|
|
57
|
+
const regating = state.lastAnnotations?.identities.some(a => a.identity === entry.key && a.status === 'regating' && a.gating !== 'none');
|
|
58
|
+
if (regating && !verdictClearsPending(state, entry.key, state.lastAnnotations.round, entry.verdictRound ?? 0, verdictSeverity)) {
|
|
59
|
+
if (pendingRound === undefined || verdictClearsPending(state, entry.key, pendingRound, entry.verdictRound ?? 0, verdictSeverity)) {
|
|
60
|
+
pendingRound = state.lastAnnotations.round;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return pendingRound;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=obligations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"obligations.js","sourceRoot":"","sources":["../../../../src/evidence/claim-recovery/validation/obligations.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACrC,IAAI,GAAG,wBAAwB,CAAC;IAEzC,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAoD;IACtF,IAAI,CAAC,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,OAAO,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9F,CAAC;AACD,2FAA2F;AAC3F,MAAM,UAAU,oBAAoB,CAAC,KAAuB,EAAE,GAAW,EAAE,YAAoB,EAC7F,YAAoB,EAAE,eAAmC;IACzD,wEAAwE;IACxE,yEAAyE;IACzE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;IAC9H,OAAO,YAAY,IAAI,YAAY,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,eAAe,KAAK,UAAU,CAAC,CAAC;AACrG,CAAC;AACD,oFAAoF;AACpF,MAAM,UAAU,0BAA0B,CAAC,KAAmB,EAAE,KAAuB;IACrF,IAAI,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACtC,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,QAAQ,CAAC;IAChE,IAAI,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;QAC/E,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,eAAe,CAAC,EAAE,CAAC;QAC9F,YAAY,GAAG,SAAS,CAAC;IAC3B,CAAC;IACD,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,UAAU;QACjH,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAChG,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAClG,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,eAAe,EAAE,KAAK;QAC9G,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACxE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,IAAI,CAAC,eAAe;YAAE,YAAY,KAAK,KAAK,CAAC,UAAU,CAAC;IAC1D,CAAC;IACD,IAAI,gBAAoC,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,uEAAuE;QACvE,4EAA4E;QAC5E,IAAI,eAAe,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU;YAAE,SAAS;QAClE,0EAA0E;QAC1E,yEAAyE;QACzE,+CAA+C;QAC/C,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,UAAU;YAC5C,CAAC,CAAC,eAAe,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAClF,gBAAgB,GAAG,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5G,CAAC;IACH,CAAC;IACD,0EAA0E;IAC1E,8EAA8E;IAC9E,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,gBAAgB,GAAG,YAAY;QAChG,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;QACpG,YAAY,GAAG,gBAAgB,CAAC;IAClC,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACzI,IAAI,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,eAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC;QAChI,IAAI,YAAY,KAAK,SAAS,IAAI,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC;YACjI,YAAY,GAAG,KAAK,CAAC,eAAgB,CAAC,KAAK,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type StoredEventReceipt } from './receipts.js';
|
|
2
|
+
import type { ClaimSeverity, OccurrenceContext, OccurrenceSource } from './occurrence-types.js';
|
|
3
|
+
export declare const hash: (raw: string) => string;
|
|
4
|
+
export declare const key: (v: unknown) => v is string;
|
|
5
|
+
export declare const counter: (v: unknown) => v is number;
|
|
6
|
+
export declare function requireSource(valid: unknown): asserts valid;
|
|
7
|
+
export declare function requireReason(value: unknown): asserts value is string;
|
|
8
|
+
export interface OccurrenceMember {
|
|
9
|
+
ref: string;
|
|
10
|
+
raw: Record<string, unknown>;
|
|
11
|
+
stored: Record<string, unknown>;
|
|
12
|
+
mapping?: Record<string, unknown>;
|
|
13
|
+
/** Status is independent from identity: corrections prove identity, not a row choice. */
|
|
14
|
+
classificationStanding: {
|
|
15
|
+
kind: 'known';
|
|
16
|
+
status: 'new' | 'repeat' | 'suppressed' | 'regating';
|
|
17
|
+
} | {
|
|
18
|
+
kind: 'unknown';
|
|
19
|
+
};
|
|
20
|
+
identity?: string;
|
|
21
|
+
unresolvedReason?: 'classification-unavailable' | 'classification-ambiguous';
|
|
22
|
+
correction?: StoredEventReceipt;
|
|
23
|
+
severity: ClaimSeverity;
|
|
24
|
+
gating: string;
|
|
25
|
+
}
|
|
26
|
+
export interface ValidatedOccurrenceSource {
|
|
27
|
+
input: OccurrenceSource;
|
|
28
|
+
digest: string;
|
|
29
|
+
head: string;
|
|
30
|
+
target: string;
|
|
31
|
+
round: number;
|
|
32
|
+
members: OccurrenceMember[];
|
|
33
|
+
}
|
|
34
|
+
/** Selected receipt content, not authentication or proof of inventory completeness. */
|
|
35
|
+
export declare function receiptFor(receipt: StoredEventReceipt, source: ValidatedOccurrenceSource): void;
|
|
36
|
+
/** Sequence is per run; timestamps retain microseconds and never use client occurred_at for acceptance order. */
|
|
37
|
+
export declare function before(first: StoredEventReceipt, last: StoredEventReceipt): void;
|
|
38
|
+
/**
|
|
39
|
+
* Bind supplied original bytes to every stored positional finding and selected
|
|
40
|
+
* classification. Unsupported headerless/reversed-range sources refuse; this
|
|
41
|
+
* helper neither normalizes their history nor claims to fetch/authenticate it.
|
|
42
|
+
*/
|
|
43
|
+
export declare function validateOccurrenceSource(input: OccurrenceSource): ValidatedOccurrenceSource;
|
|
44
|
+
export declare function contextFor(context: OccurrenceContext, source: ValidatedOccurrenceSource, actor: string): void;
|
|
45
|
+
export declare function sameTarget(a: ValidatedOccurrenceSource, b: ValidatedOccurrenceSource): void;
|