@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,363 @@
|
|
|
1
|
+
import { terminalRejectionForLaunch, verifyTerminalRejections } from './terminal-rejection.js';
|
|
2
|
+
import { inspectLegacyRetry, retainLegacyRetry } from './legacy-launch-health.js';
|
|
3
|
+
import { hasSuccessfulQuorum } from '../dispatch/quorum.js';
|
|
4
|
+
import { completionSchema, launchSchema, ordinaryLaunchInputsBindingSchema } from './launch-record.js';
|
|
5
|
+
export { launchSchema } from './launch-record.js';
|
|
6
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
7
|
+
import { assertNoPendingFreshReview, freshReviewCompletionPending, freshReviewRequestVersion, prepareFreshReview, finishFreshReview, verifyReviewCycle } from './fresh-review.js';
|
|
8
|
+
import { withNativeTarget } from './target-ownership.js';
|
|
9
|
+
import { RegistryCleanupError } from '../coordination/registry-lock.js';
|
|
10
|
+
import { convergeAttemptStatePath } from './attempt-budget.js';
|
|
11
|
+
import { realpath } from 'node:fs/promises';
|
|
12
|
+
import { resolve } from 'node:path';
|
|
13
|
+
import { claimConvergeAttempt, previewConvergeAttemptState, ConvergeAttemptBudgetExceededError, } from './attempt-budget.js';
|
|
14
|
+
import { initialConvergeRunState, loadConvergeRunState, resolveRoundResolution, validateRoundCap, writeState, ConvergeRoundCapError, } from './run-state.js';
|
|
15
|
+
import { staleManifest, StaleReportAuditError } from './stale-report-schema.js';
|
|
16
|
+
import { verifyStaleReportReceipts } from './stale-report.js';
|
|
17
|
+
import { scrubText } from '../telemetry/scrub.js';
|
|
18
|
+
import { verifyBoundFixRecovery } from './bound-fix-recovery.js';
|
|
19
|
+
import { boundFixRecoverySourceSchema } from './bound-fix-recovery-source.js';
|
|
20
|
+
import { createOriginalLaunch, encodeOriginalLaunch, remainingOriginalBudget } from '../dispatch/original-launch.js';
|
|
21
|
+
export class ReviewLaunchRefused extends Error {
|
|
22
|
+
code;
|
|
23
|
+
constructor(code, message) {
|
|
24
|
+
super(`${code}: ${message}`);
|
|
25
|
+
this.code = code;
|
|
26
|
+
this.name = 'ReviewLaunchRefused';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function refuse(code, message) {
|
|
30
|
+
throw new ReviewLaunchRefused(code, message);
|
|
31
|
+
}
|
|
32
|
+
function nextRound(state) {
|
|
33
|
+
validateRoundCap(state.roundCap);
|
|
34
|
+
if (state.rounds.some(entry => !Number.isSafeInteger(entry.round) || entry.round < 1)) {
|
|
35
|
+
refuse('invalid_round_state', 'Native admitted rounds are invalid; refusing to reset them.');
|
|
36
|
+
}
|
|
37
|
+
return state.rounds.reduce((latest, entry) => Math.max(latest, entry.round), 0) + 1;
|
|
38
|
+
}
|
|
39
|
+
async function requireLaunch(options, state, attemptsUsed) {
|
|
40
|
+
const intent = options.intent ?? 'review';
|
|
41
|
+
if (!['review', 'stop-upstream', 'stop-review', 'retry-delivery'].includes(intent)) {
|
|
42
|
+
refuse('invalid_intent', 'Choose review, stop-upstream, stop-review, or retry-delivery.');
|
|
43
|
+
}
|
|
44
|
+
if (intent === 'stop-review')
|
|
45
|
+
refuse('review_stopped', 'No review will launch. Stop only the recorded host task when cancellation was requested.');
|
|
46
|
+
if (intent === 'retry-delivery')
|
|
47
|
+
refuse('delivery_only', 'Retry evidence delivery with rcl telemetry flush, not another review.');
|
|
48
|
+
if (!/^[a-f0-9]{40}$/.test(options.headSha) || !/^[a-f0-9]{64}$/.test(options.inputSha256)) {
|
|
49
|
+
refuse('invalid_input_identity', 'A guarded launch needs an exact head and effective-input SHA256.');
|
|
50
|
+
}
|
|
51
|
+
if (options.retryReason !== undefined && (options.retryReason.trim() === '' || options.retryReason.length > 500)) {
|
|
52
|
+
refuse('invalid_retry_reason', 'An explicit bounded retry needs a nonempty reason of at most 500 characters.');
|
|
53
|
+
}
|
|
54
|
+
const round = nextRound(state);
|
|
55
|
+
if (options.round !== undefined && options.round !== round) {
|
|
56
|
+
refuse('wrong_round', `Native admitted state requires round ${round}, not ${options.round}.`);
|
|
57
|
+
}
|
|
58
|
+
if (round > state.roundCap)
|
|
59
|
+
throw new ConvergeRoundCapError(options.target, round, state.roundCap);
|
|
60
|
+
const resolution = round > 1 ? resolveRoundResolution(state, round - 1) : undefined;
|
|
61
|
+
if (round > 1 && (!resolution || resolution.status === 'unresolved')) {
|
|
62
|
+
refuse('triage_required', 'Resolve the existing native gating findings before another launch.');
|
|
63
|
+
}
|
|
64
|
+
const previous = state.lastLaunch === undefined ? undefined : launchSchema.parse(state.lastLaunch);
|
|
65
|
+
const terminalRejected = previous?.status === 'completed' && await terminalRejectionForLaunch(options.gitCommonDir, state);
|
|
66
|
+
if (previous?.deliveryFailure === 'local-invalid' && !terminalRejected) {
|
|
67
|
+
refuse('terminal_rejection_proof_required', 'Inspect the original quarantine and preview rcl converge-rejected; a local-invalid marker is not recovery proof.');
|
|
68
|
+
}
|
|
69
|
+
let boundFixRecoverySource;
|
|
70
|
+
if (options.boundFixRecovery) {
|
|
71
|
+
const recovery = options.boundFixRecovery;
|
|
72
|
+
if (options.startOver || options.legacyRetry || options.originalLaunch ||
|
|
73
|
+
options.retryReason !== undefined || intent !== 'review') {
|
|
74
|
+
refuse('bound_fix_recovery_incompatible', 'Bound fix recovery cannot be combined with a fresh review or another retry mode.');
|
|
75
|
+
}
|
|
76
|
+
if (!/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/.test(recovery.runId) ||
|
|
77
|
+
!/^[^/\s]{1,100}\/[^/\s]{1,100}$/.test(recovery.repo) || !Number.isSafeInteger(recovery.prNumber) || recovery.prNumber < 1 ||
|
|
78
|
+
!previous || previous.status !== 'completed' || previous.attempt !== attemptsUsed ||
|
|
79
|
+
previous.round !== round - 1 || previous.runId !== recovery.runId || previous.headSha !== options.headSha ||
|
|
80
|
+
previous.inputSha256 !== options.inputSha256 || previous.deliveryPending || previous.hardFailure ||
|
|
81
|
+
!hasHealthyGuardedLaunch(previous) ||
|
|
82
|
+
!state.rounds.some(entry => entry.round === previous.round && entry.runId === recovery.runId) ||
|
|
83
|
+
resolution?.status !== 'converged-dismissal-only' || resolution.fixedThisRound !== 0) {
|
|
84
|
+
refuse('bound_fix_recovery_ineligible', 'Recovery requires the latest completed, healthy, delivered and admitted native dismissal-only round on these exact inputs.');
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
const proof = await verifyBoundFixRecovery(recovery, options.target, options.headSha, previous.round);
|
|
88
|
+
boundFixRecoverySource = boundFixRecoverySourceSchema.parse({
|
|
89
|
+
version: 1, runId: recovery.runId, target: options.target, repo: recovery.repo,
|
|
90
|
+
prNumber: recovery.prNumber, headSha: options.headSha, inputSha256: options.inputSha256,
|
|
91
|
+
round: previous.round, attempt: previous.attempt, ...proof,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
refuse('bound_fix_recovery_invalid', 'Live Harness evidence did not prove the selected exact-head bound fix obligation; no attempt was claimed.');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (options.legacyRetry && (!options.retryReason || options.startOver || intent !== 'review' ||
|
|
99
|
+
!previous || previous.status !== 'completed' || previous.attempt !== attemptsUsed)) {
|
|
100
|
+
refuse('retry_report_ineligible_launch', 'Select a completed original legacy launch and provide its explicit bounded retry reason.');
|
|
101
|
+
}
|
|
102
|
+
if (!previous) {
|
|
103
|
+
if (attemptsUsed > 0 && !options.retryReason) {
|
|
104
|
+
refuse('legacy_dispatch_unknown', 'Existing claims remain spent; supply an explicit retry reason after checking their original outcomes.');
|
|
105
|
+
}
|
|
106
|
+
return { round };
|
|
107
|
+
}
|
|
108
|
+
if (state.staleReportAudit?.some(e => staleManifest(e).attempt === previous.attempt) && previous.attempt !== attemptsUsed) {
|
|
109
|
+
refuse('stale_report_attempt_mismatch', 'Attempt accounting changed after the inspected stale disposition.');
|
|
110
|
+
}
|
|
111
|
+
if (previous.attempt !== attemptsUsed) {
|
|
112
|
+
if (!options.retryReason)
|
|
113
|
+
refuse('untracked_claim', 'Native attempt accounting changed outside the guard; reconcile the original claim and provide an explicit retry reason.');
|
|
114
|
+
return { round };
|
|
115
|
+
}
|
|
116
|
+
if (previous.status !== 'completed') {
|
|
117
|
+
if (!options.retryReason)
|
|
118
|
+
refuse('dispatch_unknown', 'Previous dispatch is unknown; no automatic retry. Supply a bounded retry reason only after recovery.');
|
|
119
|
+
return { round };
|
|
120
|
+
}
|
|
121
|
+
if (terminalRejected && !options.retryReason)
|
|
122
|
+
refuse('terminal_rejection_retry_reason', 'The rejected attempt remains spent; provide an explicit bounded retry reason.');
|
|
123
|
+
if (previous.deliveryPending && ((previous.headSha === options.headSha && previous.inputSha256 === options.inputSha256) ||
|
|
124
|
+
!state.rounds.some(entry => entry.round === previous.round && entry.runId === previous.runId))) {
|
|
125
|
+
refuse('delivery_pending', `Run ${previous.runId} already completed; retry delivery with rcl telemetry flush --run ${previous.runId}.`);
|
|
126
|
+
}
|
|
127
|
+
let retryProof;
|
|
128
|
+
if (options.legacyRetry) {
|
|
129
|
+
try {
|
|
130
|
+
retryProof = await inspectLegacyRetry(options.legacyRetry, options.gitCommonDir, state, previous, attemptsUsed, round);
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
refuse('retry_report_invalid', 'The original report does not prove an inconclusive launch under its bound policy.');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
const healthy = retryProof ? hasSuccessfulQuorum(retryProof.binding.reviewerHealth.policy, retryProof.binding.reviewerHealth.successfulSeats) : hasHealthyGuardedLaunch(previous);
|
|
137
|
+
let disposed = terminalRejected;
|
|
138
|
+
if (healthy && !terminalRejected && !state.rounds.some(entry => entry.round === previous.round && entry.runId === previous.runId)) {
|
|
139
|
+
const candidates = (state.staleReportAudit ?? []).filter(e => staleManifest(e).attempt === previous.attempt);
|
|
140
|
+
const entry = candidates.find(e => {
|
|
141
|
+
const m = staleManifest(e);
|
|
142
|
+
return m.headSha === options.headSha && m.inputSha256 === options.inputSha256;
|
|
143
|
+
});
|
|
144
|
+
if (candidates.length > 0 && !entry)
|
|
145
|
+
refuse('stale_report_input_mismatch', `Inspect these replacement inputs, then preview rcl converge-stale with --head ${options.headSha} --input-sha256 ${options.inputSha256}.`);
|
|
146
|
+
if (!entry)
|
|
147
|
+
refuse('report_not_admitted', `Process the existing report for run ${previous.runId}. If materially stale, preview rcl converge-stale with current --head ${options.headSha} --input-sha256 ${options.inputSha256}; never admit stale findings.`);
|
|
148
|
+
const disposition = staleManifest(entry);
|
|
149
|
+
disposed = true;
|
|
150
|
+
if (disposition.runId !== previous.runId || disposition.reportSha256 !== previous.reportJsonSha256 ||
|
|
151
|
+
disposition.previousHeadSha !== previous.headSha || disposition.previousInputSha256 !== previous.inputSha256 ||
|
|
152
|
+
disposition.round !== previous.round)
|
|
153
|
+
refuse('stale_report_launch_mismatch', 'The audited original launch changed.');
|
|
154
|
+
if (disposition.headSha !== options.headSha || disposition.inputSha256 !== options.inputSha256) {
|
|
155
|
+
refuse('stale_report_input_mismatch', 'The stale disposition is bound to different current review inputs.');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (healthy && !disposed && !boundFixRecoverySource && previous.headSha === options.headSha && previous.inputSha256 === options.inputSha256) {
|
|
159
|
+
refuse('inputs_unchanged', (resolution?.fixedThisRound ?? 0) > 0
|
|
160
|
+
? 'A real fix needs changed review inputs and a fresh resulting head.'
|
|
161
|
+
: 'These inputs were already reviewed; upstream tip movement alone needs no new council.');
|
|
162
|
+
}
|
|
163
|
+
// A disposed unadmitted report may already follow the fixed round's commit.
|
|
164
|
+
if (healthy && !disposed && (resolution?.fixedThisRound ?? 0) > 0 && previous.headSha === options.headSha) {
|
|
165
|
+
refuse('fix_head_unchanged', 'Commit and push the real fix before reviewing its resulting head.');
|
|
166
|
+
}
|
|
167
|
+
if ((previous.hardFailure || !healthy) && !options.retryReason) {
|
|
168
|
+
refuse('infrastructure_failure', 'A head change cannot cure the previous infrastructure failure; supply an explicit bounded retry reason after recovery.');
|
|
169
|
+
}
|
|
170
|
+
if (!healthy && !previous.reviewerHealth && !retryProof) {
|
|
171
|
+
refuse('legacy_health_unknown', 'Aggregate counts do not prove blocking health. Select the original report with --retry-report and preserve its original inputs.');
|
|
172
|
+
}
|
|
173
|
+
return { round, retryProof, boundFixRecoverySource };
|
|
174
|
+
}
|
|
175
|
+
/** Shared launch-health decision; recovery paths must use the guard's policy. */
|
|
176
|
+
export function hasHealthyGuardedLaunch(previous) {
|
|
177
|
+
return previous.reviewerHealth
|
|
178
|
+
? hasSuccessfulQuorum(previous.reviewerHealth.policy, previous.reviewerHealth.successfulSeats)
|
|
179
|
+
: previous.successfulReviews >= Math.max(2, Math.ceil(2 * previous.totalReviews / 3));
|
|
180
|
+
}
|
|
181
|
+
export async function guardReviewLaunch(input) {
|
|
182
|
+
const original = input.originalLaunch;
|
|
183
|
+
if (original !== undefined && (!original || typeof original.beforeClaim !== 'function' ||
|
|
184
|
+
original.nowMs !== undefined && typeof original.nowMs !== 'function')) {
|
|
185
|
+
refuse('invalid_original_preflight', 'Original launch preflight must be callable.');
|
|
186
|
+
}
|
|
187
|
+
const options = { ...input, target: input.target.trim(), originalLaunch: original === undefined ? undefined : {
|
|
188
|
+
input: structuredClone(original.input), beforeClaim: original.beforeClaim, nowMs: original.nowMs,
|
|
189
|
+
},
|
|
190
|
+
...(input.legacyRetry ? { legacyRetry: { ...structuredClone(input.legacyRetry), reportPath: resolve(input.legacyRetry.reportPath) } } : {}) };
|
|
191
|
+
options.gitCommonDir = await realpath(resolve(options.gitCommonDir));
|
|
192
|
+
const requestVersion = options.startOver ? await freshReviewRequestVersion(options.gitCommonDir, options.target) : undefined;
|
|
193
|
+
let completed;
|
|
194
|
+
try {
|
|
195
|
+
return await withNativeTarget(options.gitCommonDir, options.target, async (ownership) => {
|
|
196
|
+
if (options.startOver && await freshReviewRequestVersion(options.gitCommonDir, options.target) !== requestVersion) {
|
|
197
|
+
refuse('fresh_review_request_changed', 'Another launch handled the pending fresh request; inspect its outcome before requesting another cycle.');
|
|
198
|
+
}
|
|
199
|
+
completed = await guardReviewLaunchOwned(options, ownership);
|
|
200
|
+
return completed;
|
|
201
|
+
}, { lockTimeoutMs: 5_000 });
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
if (!(error instanceof RegistryCleanupError) || !completed || error.result !== completed)
|
|
205
|
+
throw error;
|
|
206
|
+
completed.warning = `Attempt ${completed.attempt}/${completed.cap} is durably recorded; target lock cleanup failed. Do not repeat the claim: ${error.message}`;
|
|
207
|
+
return completed;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
async function guardReviewLaunchOwned(options, ownership) {
|
|
211
|
+
let preparedOriginal;
|
|
212
|
+
const assertOriginalLive = () => {
|
|
213
|
+
if (preparedOriginal && remainingOriginalBudget(preparedOriginal.launch, (options.originalLaunch?.nowMs ?? Date.now)()).remainingMs === 0) {
|
|
214
|
+
refuse('original_launch_expired', 'The original launch deadline expired before its claim was spent.');
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
let state;
|
|
218
|
+
let failure;
|
|
219
|
+
let freshOperation;
|
|
220
|
+
if (options.startOver) {
|
|
221
|
+
if (!options.cycleRemote)
|
|
222
|
+
refuse('fresh_review_remote_required', 'A fresh review needs a connected Harness PR.');
|
|
223
|
+
if (options.round !== undefined)
|
|
224
|
+
refuse('fresh_review_ordinal', 'A fresh review assigns its own round.');
|
|
225
|
+
await requireLaunch(options, initialConvergeRunState(options.target), 0);
|
|
226
|
+
const completionPending = await freshReviewCompletionPending(options.gitCommonDir, options.target);
|
|
227
|
+
if (!completionPending)
|
|
228
|
+
await options.validate();
|
|
229
|
+
const fresh = await prepareFreshReview({ ...options, remote: options.cycleRemote, ownership });
|
|
230
|
+
freshOperation = fresh.operationId;
|
|
231
|
+
const resumed = await loadConvergeRunState(options.gitCommonDir, options.target);
|
|
232
|
+
const attempts = await previewConvergeAttemptState(options.gitCommonDir, options.target);
|
|
233
|
+
if (resumed?.lastLaunch?.status === 'completed' && attempts?.cycle?.id === fresh.cycle.id &&
|
|
234
|
+
resumed.lastLaunch.attempt === attempts.attemptsUsed) {
|
|
235
|
+
await finishFreshReview(options.gitCommonDir, options.target, freshOperation, ownership);
|
|
236
|
+
return { target: options.target, attempt: attempts.attemptsUsed, attemptsUsed: attempts.attemptsUsed,
|
|
237
|
+
cap: attempts.cap, cycle: fresh.cycle, stateFile: convergeAttemptStatePath(options.gitCommonDir, options.target),
|
|
238
|
+
resumedCompletion: completionSchema.parse(resumed.lastLaunch) };
|
|
239
|
+
}
|
|
240
|
+
if (completionPending)
|
|
241
|
+
await options.validate();
|
|
242
|
+
if (attempts && attempts.attemptsUsed > 0 && options.retryReason === undefined) {
|
|
243
|
+
options.retryReason = 'Resuming an explicitly requested fresh review after interrupted local dispatch; previous attempts remain spent.';
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
await assertNoPendingFreshReview(options.gitCommonDir, options.target);
|
|
248
|
+
}
|
|
249
|
+
const claim = await claimConvergeAttempt({
|
|
250
|
+
gitCommonDir: options.gitCommonDir,
|
|
251
|
+
target: options.target,
|
|
252
|
+
maxAttempts: options.maxAttempts,
|
|
253
|
+
ownership,
|
|
254
|
+
freshReviewOperation: freshOperation,
|
|
255
|
+
beforeClaim: async () => {
|
|
256
|
+
try {
|
|
257
|
+
state = await loadConvergeRunState(options.gitCommonDir, options.target) ?? initialConvergeRunState(options.target);
|
|
258
|
+
await verifyStaleReportReceipts(options.gitCommonDir, state.staleReportAudit ?? []);
|
|
259
|
+
await verifyTerminalRejections(options.gitCommonDir, state);
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
if (!(error instanceof StaleReportAuditError))
|
|
263
|
+
throw error;
|
|
264
|
+
refuse('stale_report_audit_invalid', 'Retained stale-report evidence is missing or inconsistent; no attempt was claimed.');
|
|
265
|
+
}
|
|
266
|
+
if (options.maxRounds !== undefined)
|
|
267
|
+
state.roundCap = validateRoundCap(options.maxRounds);
|
|
268
|
+
const attempts = await previewConvergeAttemptState(options.gitCommonDir, options.target);
|
|
269
|
+
const recovery = options.boundFixRecovery;
|
|
270
|
+
if (recovery && attempts?.attempts.some(({ boundFixRecoverySource: source }) => source && source.target === options.target && source.repo.toLowerCase() === recovery.repo.toLowerCase() &&
|
|
271
|
+
source.prNumber === recovery.prNumber && source.headSha === options.headSha)) {
|
|
272
|
+
refuse('bound_fix_recovery_already_claimed', 'A bound fix recovery attempt was already claimed for this target, PR and head; inspect the server obligation before requesting further review.');
|
|
273
|
+
}
|
|
274
|
+
if (!isDeepStrictEqual(state.cycle, attempts?.cycle))
|
|
275
|
+
refuse('fresh_review_state_pair_mismatch', 'The native cycle files disagree.');
|
|
276
|
+
if (state.cycle) {
|
|
277
|
+
await verifyReviewCycle(options.gitCommonDir, options.target, state.cycle);
|
|
278
|
+
const remote = options.cycleRemote;
|
|
279
|
+
if (!remote || remote.repo.toLowerCase() !== state.cycle.repo || remote.prNumber !== state.cycle.prNumber || remote.url !== state.cycle.url) {
|
|
280
|
+
refuse('fresh_review_remote_mismatch', 'Continue this cycle against its original Harness PR.');
|
|
281
|
+
}
|
|
282
|
+
if ((await remote.current())?.id !== state.cycle.id)
|
|
283
|
+
refuse('fresh_review_superseded', 'This review cycle has been replaced.');
|
|
284
|
+
}
|
|
285
|
+
const { round, retryProof, boundFixRecoverySource } = await requireLaunch(options, state, attempts?.attemptsUsed ?? 0);
|
|
286
|
+
const cap = options.maxAttempts ?? attempts?.cap;
|
|
287
|
+
if (cap !== undefined && attempts && attempts.attemptsUsed >= cap) {
|
|
288
|
+
throw new ConvergeAttemptBudgetExceededError(options.target, attempts.attemptsUsed, cap);
|
|
289
|
+
}
|
|
290
|
+
if (!options.startOver)
|
|
291
|
+
await options.validate();
|
|
292
|
+
if (options.originalLaunch) {
|
|
293
|
+
const launch = createOriginalLaunch({ ...options.originalLaunch.input, target: options.target,
|
|
294
|
+
originalNativeClaim: { attempt: (attempts?.attemptsUsed ?? 0) + 1, round } });
|
|
295
|
+
preparedOriginal = Object.freeze({ launch, launchBytes: encodeOriginalLaunch(launch) });
|
|
296
|
+
assertOriginalLive();
|
|
297
|
+
await options.originalLaunch.beforeClaim(preparedOriginal, ownership);
|
|
298
|
+
assertOriginalLive();
|
|
299
|
+
}
|
|
300
|
+
// Pending-package export covers ordinary launches only. Special launch
|
|
301
|
+
// modes keep their own recovery contract and must not inherit this
|
|
302
|
+
// capture's size or storage requirements.
|
|
303
|
+
const ordinaryLaunch = !options.startOver && !state.cycle && !options.originalLaunch &&
|
|
304
|
+
!options.legacyRetry && !options.boundFixRecovery;
|
|
305
|
+
const retained = ordinaryLaunch ? await options.beforeClaim?.(Object.freeze({ target: options.target, round,
|
|
306
|
+
attempt: (attempts?.attemptsUsed ?? 0) + 1 }), ownership) : undefined;
|
|
307
|
+
const ordinaryInputs = retained === undefined ? undefined : ordinaryLaunchInputsBindingSchema.parse(retained.ordinaryInputs);
|
|
308
|
+
if (retryProof)
|
|
309
|
+
await retainLegacyRetry(options.gitCommonDir, retryProof);
|
|
310
|
+
assertOriginalLive();
|
|
311
|
+
state.lastLaunch = {
|
|
312
|
+
status: 'pending', attempt: (attempts?.attemptsUsed ?? 0) + 1, round,
|
|
313
|
+
headSha: options.headSha, inputSha256: options.inputSha256,
|
|
314
|
+
startedAt: new Date().toISOString(), pid: process.pid,
|
|
315
|
+
...(ordinaryInputs ? { ordinaryInputs } : {}),
|
|
316
|
+
...(preparedOriginal ? { retainedOriginal: { version: 1, runId: preparedOriginal.launch.runId,
|
|
317
|
+
planDigest: preparedOriginal.launch.planDigest, capturedInputsSha256: preparedOriginal.launch.capturedInputsSha256 } } : {}),
|
|
318
|
+
...(options.retryReason ? { retryReason: scrubText(options.retryReason.trim(), 500) } : {}),
|
|
319
|
+
...(options.boundFixRecovery ? { retryReason: `Bound fix recovery from conclusive dismissal-only run ${options.boundFixRecovery.runId} for ${options.boundFixRecovery.repo}#${options.boundFixRecovery.prNumber}.` } : {}),
|
|
320
|
+
};
|
|
321
|
+
return retryProof ? { retrySource: retryProof.binding }
|
|
322
|
+
: boundFixRecoverySource ? { boundFixRecoverySource } : undefined;
|
|
323
|
+
},
|
|
324
|
+
afterClaim: async (claimed, ownership) => {
|
|
325
|
+
if (preparedOriginal && (preparedOriginal.launch.originalNativeClaim.attempt !== claimed.attempt ||
|
|
326
|
+
preparedOriginal.launch.originalNativeClaim.round !== state.lastLaunch.round)) {
|
|
327
|
+
refuse('original_launch_claim_mismatch', 'The spent claim differs from the prepared original launch.');
|
|
328
|
+
}
|
|
329
|
+
state.lastLaunch.attempt = claimed.attempt;
|
|
330
|
+
await writeState(options.gitCommonDir, state, ownership);
|
|
331
|
+
try {
|
|
332
|
+
await options.onClaim?.(claimed);
|
|
333
|
+
const context = { target: options.target, round: state.lastLaunch.round, attempt: claimed.attempt,
|
|
334
|
+
...(state.cycle ? { cycleId: state.cycle.id } : {}) };
|
|
335
|
+
const completion = completionSchema.parse(await (preparedOriginal
|
|
336
|
+
? options.run(context, ownership, preparedOriginal) : options.run(context, ownership)));
|
|
337
|
+
if (preparedOriginal && completion.runId !== preparedOriginal.launch.runId) {
|
|
338
|
+
refuse('original_launch_run_mismatch', 'The completion differs from the prepared original run.');
|
|
339
|
+
}
|
|
340
|
+
state.lastLaunch = { ...state.lastLaunch, ...completion, status: 'completed' };
|
|
341
|
+
}
|
|
342
|
+
catch (error) {
|
|
343
|
+
state.lastLaunch.status = 'failed';
|
|
344
|
+
failure = { error };
|
|
345
|
+
}
|
|
346
|
+
state.updatedAt = new Date().toISOString();
|
|
347
|
+
await writeState(options.gitCommonDir, state, ownership);
|
|
348
|
+
if (freshOperation)
|
|
349
|
+
await finishFreshReview(options.gitCommonDir, options.target, freshOperation, ownership);
|
|
350
|
+
},
|
|
351
|
+
}).catch(async (error) => {
|
|
352
|
+
if (freshOperation && error instanceof ConvergeAttemptBudgetExceededError) {
|
|
353
|
+
// End only this exhausted operation; the spent/unknown dispatch stays intact.
|
|
354
|
+
// A later deliberate fresh request may allocate another cycle.
|
|
355
|
+
await finishFreshReview(options.gitCommonDir, options.target, freshOperation, ownership);
|
|
356
|
+
}
|
|
357
|
+
throw error;
|
|
358
|
+
});
|
|
359
|
+
if (failure)
|
|
360
|
+
throw failure.error;
|
|
361
|
+
return claim;
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=launch-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-guard.js","sourceRoot":"","sources":["../../src/converge/launch-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { constants } from 'node:fs';
|
|
2
|
+
import { access, lstat, realpath } from 'node:fs/promises';
|
|
3
|
+
import { basename, dirname, join } from 'node:path';
|
|
4
|
+
import { missingProviders } from '../config/harness.js';
|
|
5
|
+
import { ReviewLaunchRefused } from './launch-guard.js';
|
|
6
|
+
export function validateLaunchProviders(providers, env = process.env) {
|
|
7
|
+
const missing = missingProviders(env).filter(provider => providers.includes(provider));
|
|
8
|
+
if (missing.length > 0) {
|
|
9
|
+
throw new ReviewLaunchRefused('missing_provider_credentials', `Missing nonempty credentials for: ${missing.join(', ')}. No attempt claimed.`);
|
|
10
|
+
}
|
|
11
|
+
if (providers.includes('openai-compat')) {
|
|
12
|
+
const base = new URL(env['OPENAI_COMPAT_BASE_URL'] ?? 'http://localhost:11434/v1');
|
|
13
|
+
if (!['http:', 'https:'].includes(base.protocol)) {
|
|
14
|
+
throw new ReviewLaunchRefused('invalid_provider_url', 'An OpenAI-compatible endpoint must use HTTP or HTTPS.');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export async function validateLaunchOutputs(paths, requireJson = true) {
|
|
19
|
+
if (requireJson && !paths.jsonFile)
|
|
20
|
+
throw new ReviewLaunchRefused('report_required', 'Guarded convergence requires --json-file to retain the original report.');
|
|
21
|
+
const outputs = await Promise.all([paths.jsonFile, paths.markdown].filter((path) => path !== undefined).map(async (path) => {
|
|
22
|
+
const parent = dirname(path);
|
|
23
|
+
await access(parent, constants.W_OK);
|
|
24
|
+
return join(await realpath(parent), basename(path));
|
|
25
|
+
}));
|
|
26
|
+
if (new Set(outputs).size !== outputs.length) {
|
|
27
|
+
throw new ReviewLaunchRefused('output_collision', 'JSON and Markdown reports need distinct output paths.');
|
|
28
|
+
}
|
|
29
|
+
for (const path of outputs) {
|
|
30
|
+
try {
|
|
31
|
+
await lstat(path);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (error.code === 'ENOENT')
|
|
35
|
+
continue;
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
throw new ReviewLaunchRefused('output_exists', 'A report output already exists; preserve it and choose a new output path.');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=launch-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-preflight.js","sourceRoot":"","sources":["../../src/converge/launch-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,UAAU,uBAAuB,CAAC,SAA4B,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG;IACrF,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,mBAAmB,CAAC,8BAA8B,EAAE,qCAAqC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAChJ,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,2BAA2B,CAAC,CAAC;QACnF,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,EAAE,uDAAuD,CAAC,CAAC;QACjH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAA+C,EAAE,WAAW,GAAG,IAAI;IAC7G,IAAI,WAAW,IAAI,CAAC,KAAK,CAAC,QAAQ;QAAE,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,EAAE,yEAAyE,CAAC,CAAC;IAChK,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;QACrG,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CACH,CAAC;IACF,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,uDAAuD,CAAC,CAAC;IAC7G,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS;YACjE,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,mBAAmB,CAAC,eAAe,EAAE,2EAA2E,CAAC,CAAC;IAC9H,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** Blocking-seat health of the completed report; guard metadata, never admission. */
|
|
3
|
+
export declare const reviewerHealthSchema: z.ZodObject<{
|
|
4
|
+
version: z.ZodLiteral<1>;
|
|
5
|
+
policy: z.ZodObject<{
|
|
6
|
+
version: z.ZodLiteral<1>;
|
|
7
|
+
fraction: z.ZodNumber;
|
|
8
|
+
seatCount: z.ZodNumber;
|
|
9
|
+
minimumSuccessful: z.ZodNumber;
|
|
10
|
+
}, z.core.$strict>;
|
|
11
|
+
successfulSeats: z.ZodNumber;
|
|
12
|
+
}, z.core.$strict>;
|
|
13
|
+
/** Exact retained ordinary launch packet bound before its native claim was dispatched. */
|
|
14
|
+
export declare const ordinaryLaunchInputsBindingSchema: z.ZodObject<{
|
|
15
|
+
version: z.ZodLiteral<1>;
|
|
16
|
+
packetSha256: z.ZodString;
|
|
17
|
+
baseSha: z.ZodNullable<z.ZodString>;
|
|
18
|
+
}, z.core.$strict>;
|
|
19
|
+
export type OrdinaryLaunchInputsBinding = z.infer<typeof ordinaryLaunchInputsBindingSchema>;
|
|
20
|
+
export declare const completionSchema: z.ZodObject<{
|
|
21
|
+
runId: z.ZodString;
|
|
22
|
+
reportJsonSha256: z.ZodString;
|
|
23
|
+
successfulReviews: z.ZodNumber;
|
|
24
|
+
totalReviews: z.ZodNumber;
|
|
25
|
+
deliveryPending: z.ZodBoolean;
|
|
26
|
+
deliveryFailure: z.ZodOptional<z.ZodLiteral<"local-invalid">>;
|
|
27
|
+
hardFailure: z.ZodOptional<z.ZodBoolean>;
|
|
28
|
+
exitCode: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
reportPath: z.ZodOptional<z.ZodString>;
|
|
30
|
+
reviewerHealth: z.ZodOptional<z.ZodObject<{
|
|
31
|
+
version: z.ZodLiteral<1>;
|
|
32
|
+
policy: z.ZodObject<{
|
|
33
|
+
version: z.ZodLiteral<1>;
|
|
34
|
+
fraction: z.ZodNumber;
|
|
35
|
+
seatCount: z.ZodNumber;
|
|
36
|
+
minimumSuccessful: z.ZodNumber;
|
|
37
|
+
}, z.core.$strict>;
|
|
38
|
+
successfulSeats: z.ZodNumber;
|
|
39
|
+
}, z.core.$strict>>;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
export declare const launchSchema: z.ZodObject<{
|
|
42
|
+
status: z.ZodEnum<{
|
|
43
|
+
pending: "pending";
|
|
44
|
+
failed: "failed";
|
|
45
|
+
completed: "completed";
|
|
46
|
+
}>;
|
|
47
|
+
attempt: z.ZodNumber;
|
|
48
|
+
round: z.ZodNumber;
|
|
49
|
+
headSha: z.ZodString;
|
|
50
|
+
inputSha256: z.ZodString;
|
|
51
|
+
startedAt: z.ZodString;
|
|
52
|
+
pid: z.ZodNumber;
|
|
53
|
+
retryReason: z.ZodOptional<z.ZodString>;
|
|
54
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
55
|
+
reportJsonSha256: z.ZodOptional<z.ZodString>;
|
|
56
|
+
successfulReviews: z.ZodOptional<z.ZodNumber>;
|
|
57
|
+
totalReviews: z.ZodOptional<z.ZodNumber>;
|
|
58
|
+
deliveryPending: z.ZodOptional<z.ZodBoolean>;
|
|
59
|
+
deliveryFailure: z.ZodOptional<z.ZodLiteral<"local-invalid">>;
|
|
60
|
+
hardFailure: z.ZodOptional<z.ZodBoolean>;
|
|
61
|
+
exitCode: z.ZodOptional<z.ZodNumber>;
|
|
62
|
+
reportPath: z.ZodOptional<z.ZodString>;
|
|
63
|
+
reviewerHealth: z.ZodOptional<z.ZodObject<{
|
|
64
|
+
version: z.ZodLiteral<1>;
|
|
65
|
+
policy: z.ZodObject<{
|
|
66
|
+
version: z.ZodLiteral<1>;
|
|
67
|
+
fraction: z.ZodNumber;
|
|
68
|
+
seatCount: z.ZodNumber;
|
|
69
|
+
minimumSuccessful: z.ZodNumber;
|
|
70
|
+
}, z.core.$strict>;
|
|
71
|
+
successfulSeats: z.ZodNumber;
|
|
72
|
+
}, z.core.$strict>>;
|
|
73
|
+
ordinaryInputs: z.ZodOptional<z.ZodObject<{
|
|
74
|
+
version: z.ZodLiteral<1>;
|
|
75
|
+
packetSha256: z.ZodString;
|
|
76
|
+
baseSha: z.ZodNullable<z.ZodString>;
|
|
77
|
+
}, z.core.$strict>>;
|
|
78
|
+
retainedOriginal: z.ZodOptional<z.ZodObject<{
|
|
79
|
+
version: z.ZodLiteral<1>;
|
|
80
|
+
runId: z.ZodString;
|
|
81
|
+
planDigest: z.ZodString;
|
|
82
|
+
capturedInputsSha256: z.ZodString;
|
|
83
|
+
}, z.core.$strict>>;
|
|
84
|
+
pendingResume: z.ZodOptional<z.ZodObject<{
|
|
85
|
+
version: z.ZodLiteral<1>;
|
|
86
|
+
runId: z.ZodString;
|
|
87
|
+
planDigest: z.ZodString;
|
|
88
|
+
capturedInputsSha256: z.ZodString;
|
|
89
|
+
originalPid: z.ZodNumber;
|
|
90
|
+
pid: z.ZodNumber;
|
|
91
|
+
phase: z.ZodEnum<{
|
|
92
|
+
running: "running";
|
|
93
|
+
finished: "finished";
|
|
94
|
+
}>;
|
|
95
|
+
startedAtMs: z.ZodNumber;
|
|
96
|
+
expiresAtMs: z.ZodNumber;
|
|
97
|
+
maxPhysicalCalls: z.ZodNumber;
|
|
98
|
+
maxAttemptsPerCell: z.ZodNumber;
|
|
99
|
+
}, z.core.$strict>>;
|
|
100
|
+
pendingRecovery: z.ZodOptional<z.ZodObject<{
|
|
101
|
+
version: z.ZodLiteral<1>;
|
|
102
|
+
sourceDigest: z.ZodString;
|
|
103
|
+
pendingAttempt: z.ZodNumber;
|
|
104
|
+
round: z.ZodNumber;
|
|
105
|
+
originalPid: z.ZodNumber;
|
|
106
|
+
originalStartedAt: z.ZodString;
|
|
107
|
+
blockingOutcome: z.ZodLiteral<"unknown">;
|
|
108
|
+
reason: z.ZodLiteral<"coordinator_exited_without_durable_blocking_receipts">;
|
|
109
|
+
nativeStateSha256: z.ZodString;
|
|
110
|
+
attemptStateSha256: z.ZodString;
|
|
111
|
+
retainedAsyncSha256: z.ZodArray<z.ZodString>;
|
|
112
|
+
migrationPackageSha256: z.ZodOptional<z.ZodString>;
|
|
113
|
+
}, z.core.$strict>>;
|
|
114
|
+
recovery: z.ZodOptional<z.ZodObject<{
|
|
115
|
+
operationId: z.ZodOptional<z.ZodString>;
|
|
116
|
+
sourceRunId: z.ZodString;
|
|
117
|
+
originalNativeClaim: z.ZodObject<{
|
|
118
|
+
attempt: z.ZodNumber;
|
|
119
|
+
round: z.ZodNumber;
|
|
120
|
+
}, z.core.$strict>;
|
|
121
|
+
sourceNativeClaim: z.ZodObject<{
|
|
122
|
+
attempt: z.ZodNumber;
|
|
123
|
+
round: z.ZodNumber;
|
|
124
|
+
}, z.core.$strict>;
|
|
125
|
+
resume: z.ZodOptional<z.ZodObject<{
|
|
126
|
+
pid: z.ZodNumber;
|
|
127
|
+
phase: z.ZodEnum<{
|
|
128
|
+
running: "running";
|
|
129
|
+
finished: "finished";
|
|
130
|
+
}>;
|
|
131
|
+
}, z.core.$strict>>;
|
|
132
|
+
}, z.core.$strict>>;
|
|
133
|
+
}, z.core.$strict>;
|
|
134
|
+
export type GuardedLaunchState = z.infer<typeof launchSchema>;
|
|
135
|
+
export type GuardedLaunchCompletion = z.infer<typeof completionSchema>;
|
|
136
|
+
export type GuardedReviewerHealth = z.infer<typeof reviewerHealthSchema>;
|