harnery 0.38.0 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +32 -8
- package/dist/commands/artifacts.d.ts.map +1 -1
- package/dist/commands/artifacts.js +97 -6
- package/dist/commands/backup.d.ts +16 -0
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +239 -33
- package/dist/commands/browse.d.ts +8 -0
- package/dist/commands/browse.d.ts.map +1 -1
- package/dist/commands/browse.js +466 -231
- package/dist/commands/diagnostics.d.ts.map +1 -1
- package/dist/commands/diagnostics.js +6 -3
- package/dist/commands/ledger-v3.d.ts.map +1 -1
- package/dist/commands/ledger-v3.js +20 -4
- package/dist/commands/qa-run.d.ts.map +1 -1
- package/dist/commands/qa-run.js +26 -3
- package/dist/commands/qa-status.d.ts.map +1 -1
- package/dist/commands/qa-status.js +7 -2
- package/dist/commands/resources.d.ts.map +1 -1
- package/dist/commands/resources.js +23 -3
- package/dist/commands/review-pack.d.ts.map +1 -1
- package/dist/commands/review-pack.js +98 -23
- package/dist/commands/tunnel.d.ts.map +1 -1
- package/dist/commands/tunnel.js +2 -2
- package/dist/core/adapters/profiles.d.ts +1 -1
- package/dist/core/agents/canonical-emit.d.ts +3 -2
- package/dist/core/agents/canonical-emit.d.ts.map +1 -1
- package/dist/core/agents/canonical-emit.js +2 -0
- package/dist/core/agents/cli.js +13 -6
- package/dist/core/agents/live-authority-v3.d.ts.map +1 -1
- package/dist/core/agents/live-authority-v3.js +5 -3
- package/dist/core/agents/live-lifecycle-v3.d.ts +2 -2
- package/dist/core/agents/live-lifecycle-v3.d.ts.map +1 -1
- package/dist/core/agents/render/prompt-context.d.ts +7 -5
- package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
- package/dist/core/agents/render/prompt-context.js +63 -8
- package/dist/core/agents/session-finalizer-v3.d.ts +2 -2
- package/dist/core/agents/session-finalizer-v3.d.ts.map +1 -1
- package/dist/core/agents/state/live-coordination-view.d.ts +3 -3
- package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -1
- package/dist/core/agents/state/live-coordination-view.js +2 -1
- package/dist/core/agents/state/names.d.ts +35 -2
- package/dist/core/agents/state/names.d.ts.map +1 -1
- package/dist/core/agents/state/names.js +80 -5
- package/dist/core/agents/state/stale-sweep.d.ts +2 -1
- package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
- package/dist/core/agents/state/stale-sweep.js +23 -6
- package/dist/core/agents/turn-elapsed.d.ts +51 -0
- package/dist/core/agents/turn-elapsed.d.ts.map +1 -0
- package/dist/core/agents/turn-elapsed.js +91 -0
- package/dist/core/artifacts/activity.d.ts +14 -0
- package/dist/core/artifacts/activity.d.ts.map +1 -0
- package/dist/core/artifacts/activity.js +52 -0
- package/dist/core/artifacts/delivery-card.d.ts +39 -0
- package/dist/core/artifacts/delivery-card.d.ts.map +1 -0
- package/dist/core/artifacts/delivery-card.js +282 -0
- package/dist/core/artifacts/index.d.ts +42 -7
- package/dist/core/artifacts/index.d.ts.map +1 -1
- package/dist/core/artifacts/index.js +288 -76
- package/dist/core/artifacts/mutation-lock.d.ts +2 -0
- package/dist/core/artifacts/mutation-lock.d.ts.map +1 -0
- package/dist/core/artifacts/mutation-lock.js +91 -0
- package/dist/core/backup/host-snapshot.d.ts +18 -0
- package/dist/core/backup/host-snapshot.d.ts.map +1 -0
- package/dist/core/backup/host-snapshot.js +64 -0
- package/dist/core/config.d.ts +20 -5
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +44 -10
- package/dist/core/diagnostics/advice.d.ts +38 -3
- package/dist/core/diagnostics/advice.d.ts.map +1 -1
- package/dist/core/diagnostics/advice.js +103 -99
- package/dist/core/diagnostics/bundle.d.ts.map +1 -1
- package/dist/core/diagnostics/bundle.js +111 -47
- package/dist/core/diagnostics/comparison.d.ts.map +1 -1
- package/dist/core/diagnostics/comparison.js +3 -2
- package/dist/core/diagnostics/contract.d.ts +15 -31
- package/dist/core/diagnostics/contract.d.ts.map +1 -1
- package/dist/core/diagnostics/contract.js +2 -5
- package/dist/core/diagnostics/index.d.ts +2 -0
- package/dist/core/diagnostics/index.d.ts.map +1 -1
- package/dist/core/diagnostics/index.js +2 -0
- package/dist/core/diagnostics/pressure-contract.d.ts +260 -0
- package/dist/core/diagnostics/pressure-contract.d.ts.map +1 -0
- package/dist/core/diagnostics/pressure-contract.js +70 -0
- package/dist/core/diagnostics/pressure.d.ts +25 -0
- package/dist/core/diagnostics/pressure.d.ts.map +1 -0
- package/dist/core/diagnostics/pressure.js +1138 -0
- package/dist/core/diagnostics/replay.d.ts.map +1 -1
- package/dist/core/diagnostics/replay.js +90 -10
- package/dist/core/events/v3/adapter-id.d.ts +6 -0
- package/dist/core/events/v3/adapter-id.d.ts.map +1 -0
- package/dist/core/events/v3/adapter-id.js +7 -0
- package/dist/core/events/v3/archive-retention.d.ts.map +1 -1
- package/dist/core/events/v3/archive-retention.js +3 -2
- package/dist/core/events/v3/bootstrap.d.ts +41 -4
- package/dist/core/events/v3/bootstrap.d.ts.map +1 -1
- package/dist/core/events/v3/bootstrap.js +120 -17
- package/dist/core/events/v3/capabilities.d.ts +16 -9
- package/dist/core/events/v3/capabilities.d.ts.map +1 -1
- package/dist/core/events/v3/capabilities.js +37 -2
- package/dist/core/events/v3/capability-drift.d.ts +2 -2
- package/dist/core/events/v3/capability-drift.d.ts.map +1 -1
- package/dist/core/events/v3/control-witness.d.ts +48 -5
- package/dist/core/events/v3/control-witness.d.ts.map +1 -1
- package/dist/core/events/v3/control-witness.js +91 -36
- package/dist/core/events/v3/control.d.ts.map +1 -1
- package/dist/core/events/v3/control.js +22 -2
- package/dist/core/events/v3/index.d.ts +2 -1
- package/dist/core/events/v3/index.d.ts.map +1 -1
- package/dist/core/events/v3/index.js +2 -1
- package/dist/core/events/v3/live-feed.d.ts +7 -1
- package/dist/core/events/v3/live-feed.d.ts.map +1 -1
- package/dist/core/events/v3/live-feed.js +21 -3
- package/dist/core/events/v3/live-routing.d.ts.map +1 -1
- package/dist/core/events/v3/live-routing.js +10 -2
- package/dist/core/events/v3/producers/command-recorder.d.ts +2 -2
- package/dist/core/events/v3/producers/command-recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/command-recorder.js +2 -1
- package/dist/core/events/v3/producers/coordination-recorder.d.ts +2 -2
- package/dist/core/events/v3/producers/coordination-recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/coordination-recorder.js +2 -1
- package/dist/core/events/v3/producers/hook-base.d.ts +2 -2
- package/dist/core/events/v3/producers/hook-base.d.ts.map +1 -1
- package/dist/core/events/v3/producers/hook-base.js +15 -5
- package/dist/core/events/v3/producers/hook.d.ts.map +1 -1
- package/dist/core/events/v3/producers/hook.js +17 -4
- package/dist/core/events/v3/producers/intake.d.ts +4 -4
- package/dist/core/events/v3/producers/intake.d.ts.map +1 -1
- package/dist/core/events/v3/producers/intake.js +3 -2
- package/dist/core/events/v3/producers/producer-state-observer.d.ts.map +1 -1
- package/dist/core/events/v3/producers/producer-state-observer.js +2 -1
- package/dist/core/events/v3/producers/recorder.d.ts +16 -5
- package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/recorder.js +31 -9
- package/dist/core/events/v3/reader.d.ts.map +1 -1
- package/dist/core/events/v3/reader.js +10 -13
- package/dist/core/events/v3/runtime-build.d.ts.map +1 -1
- package/dist/core/events/v3/runtime-build.js +3 -2
- package/dist/core/events/v3/runtime-telemetry-capabilities.d.ts +2 -2
- package/dist/core/events/v3/runtime-telemetry-capabilities.d.ts.map +1 -1
- package/dist/core/events/v3/turn-telemetry.d.ts +2 -2
- package/dist/core/events/v3/turn-telemetry.d.ts.map +1 -1
- package/dist/core/hooks/adapter/output.d.ts +16 -14
- package/dist/core/hooks/adapter/output.d.ts.map +1 -1
- package/dist/core/hooks/adapter/output.js +36 -38
- package/dist/core/hooks/backup-schedule.d.ts +34 -0
- package/dist/core/hooks/backup-schedule.d.ts.map +1 -0
- package/dist/core/hooks/backup-schedule.js +114 -0
- package/dist/core/hooks/cli.js +61 -18
- package/dist/core/hooks/codex-wsl-bridge.d.ts +2 -0
- package/dist/core/hooks/codex-wsl-bridge.d.ts.map +1 -1
- package/dist/core/hooks/codex-wsl-bridge.js +18 -4
- package/dist/core/hooks/index.d.ts +1 -0
- package/dist/core/hooks/index.d.ts.map +1 -1
- package/dist/core/hooks/index.js +1 -0
- package/dist/core/hooks/prompt-context/contract.d.ts +61 -0
- package/dist/core/hooks/prompt-context/contract.d.ts.map +1 -0
- package/dist/core/hooks/prompt-context/contract.js +102 -0
- package/dist/core/hooks/prompt-context/index.d.ts +5 -0
- package/dist/core/hooks/prompt-context/index.d.ts.map +1 -0
- package/dist/core/hooks/prompt-context/index.js +2 -0
- package/dist/core/hooks/prompt-context/runner.d.ts +24 -0
- package/dist/core/hooks/prompt-context/runner.d.ts.map +1 -0
- package/dist/core/hooks/prompt-context/runner.js +249 -0
- package/dist/core/qa-artifacts.d.ts +3 -0
- package/dist/core/qa-artifacts.d.ts.map +1 -1
- package/dist/core/qa-artifacts.js +25 -3
- package/dist/core/resources/contract.d.ts +69 -3
- package/dist/core/resources/contract.d.ts.map +1 -1
- package/dist/core/resources/contract.js +1 -1
- package/dist/core/resources/index.d.ts +1 -0
- package/dist/core/resources/index.d.ts.map +1 -1
- package/dist/core/resources/index.js +1 -0
- package/dist/core/resources/native.d.ts +36 -0
- package/dist/core/resources/native.d.ts.map +1 -0
- package/dist/core/resources/native.js +418 -0
- package/dist/core/resources/sampler.d.ts +2 -0
- package/dist/core/resources/sampler.d.ts.map +1 -1
- package/dist/core/resources/sampler.js +31 -1
- package/dist/core/resources/status.d.ts +61 -0
- package/dist/core/resources/status.d.ts.map +1 -0
- package/dist/core/resources/status.js +536 -0
- package/dist/core/resources/system.d.ts +27 -0
- package/dist/core/resources/system.d.ts.map +1 -0
- package/dist/core/resources/system.js +439 -0
- package/dist/core/semantic/contract.d.ts +13 -13
- package/dist/core/semantic/service.d.ts +2 -0
- package/dist/core/semantic/service.d.ts.map +1 -1
- package/dist/core/semantic/service.js +27 -4
- package/dist/core/storage/builtins.js +41 -0
- package/dist/core/supervisor/contract.d.ts +41 -3
- package/dist/core/supervisor/contract.d.ts.map +1 -1
- package/dist/core/supervisor/contract.js +3 -2
- package/dist/core/supervisor/findings.d.ts +3 -0
- package/dist/core/supervisor/findings.d.ts.map +1 -1
- package/dist/core/supervisor/findings.js +88 -0
- package/dist/core/supervisor/history.d.ts.map +1 -1
- package/dist/core/supervisor/history.js +14 -0
- package/dist/core/supervisor/ledger-state.d.ts +55 -0
- package/dist/core/supervisor/ledger-state.d.ts.map +1 -0
- package/dist/core/supervisor/ledger-state.js +0 -0
- package/dist/core/supervisor/service.d.ts.map +1 -1
- package/dist/core/supervisor/service.js +120 -7
- package/dist/core/supervisor/storage.d.ts +3 -1
- package/dist/core/supervisor/storage.d.ts.map +1 -1
- package/dist/core/supervisor/storage.js +4 -0
- package/dist/core/workflow/admission.d.ts +3 -0
- package/dist/core/workflow/admission.d.ts.map +1 -1
- package/dist/core/workflow/admission.js +28 -16
- package/dist/core/workflow/engine.js +2 -2
- package/dist/core/workflow/live-session-v3.d.ts.map +1 -1
- package/dist/core/workflow/live-session-v3.js +6 -1
- package/dist/core/workflow/proof.d.ts.map +1 -1
- package/dist/core/workflow/proof.js +4 -3
- package/dist/lib/browser/capture-fidelity.d.ts +7 -0
- package/dist/lib/browser/capture-fidelity.d.ts.map +1 -1
- package/dist/lib/browser/capture-fidelity.js +17 -0
- package/dist/lib/browser/client.d.ts +9 -0
- package/dist/lib/browser/client.d.ts.map +1 -1
- package/dist/lib/browser/client.js +85 -37
- package/dist/lib/browser/index.d.ts +3 -1
- package/dist/lib/browser/index.d.ts.map +1 -1
- package/dist/lib/browser/index.js +2 -1
- package/dist/lib/browser/page-review-budget.d.ts +13 -0
- package/dist/lib/browser/page-review-budget.d.ts.map +1 -0
- package/dist/lib/browser/page-review-budget.js +251 -0
- package/dist/lib/browser/page-review-contracts.d.ts +127 -0
- package/dist/lib/browser/page-review-contracts.d.ts.map +1 -0
- package/dist/lib/browser/page-review-contracts.js +5 -0
- package/dist/lib/browser/page-review-evidence.d.ts +48 -0
- package/dist/lib/browser/page-review-evidence.d.ts.map +1 -0
- package/dist/lib/browser/page-review-evidence.js +340 -0
- package/dist/lib/browser/page-review-judge.d.ts +1 -1
- package/dist/lib/browser/page-review-judge.d.ts.map +1 -1
- package/dist/lib/browser/page-review-judge.js +46 -38
- package/dist/lib/browser/page-review-pack.d.ts +44 -22
- package/dist/lib/browser/page-review-pack.d.ts.map +1 -1
- package/dist/lib/browser/page-review-pack.js +116 -36
- package/dist/lib/browser/page-review-source.d.ts +12 -0
- package/dist/lib/browser/page-review-source.d.ts.map +1 -0
- package/dist/lib/browser/page-review-source.js +22 -0
- package/dist/lib/browser/qa-run-contracts.d.ts +35 -9
- package/dist/lib/browser/qa-run-contracts.d.ts.map +1 -1
- package/dist/lib/browser/qa-run-contracts.js +48 -14
- package/dist/lib/browser/qa-run.d.ts.map +1 -1
- package/dist/lib/browser/qa-run.js +215 -68
- package/dist/lib/browser/qa-snapshot.d.ts +6 -0
- package/dist/lib/browser/qa-snapshot.d.ts.map +1 -1
- package/dist/lib/browser/qa-snapshot.js +259 -48
- package/dist/lib/browser/review-capture-transaction.d.ts +13 -0
- package/dist/lib/browser/review-capture-transaction.d.ts.map +1 -0
- package/dist/lib/browser/review-capture-transaction.js +79 -0
- package/dist/lib/browser/standalone-html.d.ts.map +1 -1
- package/dist/lib/browser/standalone-html.js +4 -2
- package/dist/lib/browser/thumbnail-association.d.ts +34 -0
- package/dist/lib/browser/thumbnail-association.d.ts.map +1 -0
- package/dist/lib/browser/thumbnail-association.js +158 -0
- package/dist/lib/browser/tiling.d.ts +30 -0
- package/dist/lib/browser/tiling.d.ts.map +1 -1
- package/dist/lib/browser/tiling.js +38 -0
- package/dist/lib/docs-metadata-managed.d.ts.map +1 -1
- package/dist/lib/docs-metadata-managed.js +4 -1
- package/dist/lib/identities/assume.d.ts.map +1 -1
- package/dist/lib/identities/assume.js +7 -1
- package/dist/lib/instructions/templates.d.ts.map +1 -1
- package/dist/lib/instructions/templates.js +1 -0
- package/dist/lib/local-file-url.d.ts +12 -0
- package/dist/lib/local-file-url.d.ts.map +1 -1
- package/dist/lib/local-file-url.js +16 -2
- package/dist/lib/tunnel/state.d.ts +19 -4
- package/dist/lib/tunnel/state.d.ts.map +1 -1
- package/dist/lib/tunnel/state.js +53 -13
- package/package.json +7 -4
- package/schemas/config.schema.json +69 -2
- package/src/commands/agents.ts +42 -9
- package/src/commands/artifacts.ts +130 -6
- package/src/commands/backup.ts +287 -34
- package/src/commands/browse.ts +564 -267
- package/src/commands/diagnostics.ts +6 -3
- package/src/commands/ledger-v3.ts +20 -3
- package/src/commands/qa-run.ts +37 -3
- package/src/commands/qa-status.ts +11 -2
- package/src/commands/resources.ts +23 -3
- package/src/commands/review-pack.ts +165 -62
- package/src/commands/tunnel.ts +2 -1
- package/src/core/agents/canonical-emit.ts +4 -2
- package/src/core/agents/cli.ts +14 -6
- package/src/core/agents/live-authority-v3.ts +7 -3
- package/src/core/agents/live-lifecycle-v3.ts +2 -2
- package/src/core/agents/render/prompt-context.ts +68 -14
- package/src/core/agents/session-finalizer-v3.ts +2 -2
- package/src/core/agents/state/live-coordination-view.ts +4 -4
- package/src/core/agents/state/names.ts +92 -7
- package/src/core/agents/state/stale-sweep.ts +22 -8
- package/src/core/agents/turn-elapsed.ts +135 -0
- package/src/core/artifacts/activity.ts +71 -0
- package/src/core/artifacts/delivery-card.ts +375 -0
- package/src/core/artifacts/index.ts +385 -91
- package/src/core/artifacts/mutation-lock.ts +106 -0
- package/src/core/backup/host-snapshot.ts +76 -0
- package/src/core/config.ts +66 -13
- package/src/core/diagnostics/advice.ts +148 -120
- package/src/core/diagnostics/bundle.ts +138 -52
- package/src/core/diagnostics/comparison.ts +6 -2
- package/src/core/diagnostics/contract.ts +39 -42
- package/src/core/diagnostics/index.ts +2 -0
- package/src/core/diagnostics/pressure-contract.ts +294 -0
- package/src/core/diagnostics/pressure.ts +1361 -0
- package/src/core/diagnostics/replay.ts +116 -11
- package/src/core/events/v3/adapter-id.ts +12 -0
- package/src/core/events/v3/archive-retention.ts +3 -6
- package/src/core/events/v3/bootstrap.ts +163 -16
- package/src/core/events/v3/capabilities.ts +75 -25
- package/src/core/events/v3/capability-drift.ts +2 -2
- package/src/core/events/v3/control-witness.ts +172 -41
- package/src/core/events/v3/control.ts +34 -2
- package/src/core/events/v3/index.ts +3 -0
- package/src/core/events/v3/live-feed.ts +23 -5
- package/src/core/events/v3/live-routing.ts +14 -2
- package/src/core/events/v3/producers/command-recorder.ts +4 -4
- package/src/core/events/v3/producers/coordination-recorder.ts +4 -4
- package/src/core/events/v3/producers/hook-base.ts +21 -16
- package/src/core/events/v3/producers/hook.ts +21 -4
- package/src/core/events/v3/producers/intake.ts +6 -6
- package/src/core/events/v3/producers/producer-state-observer.ts +2 -1
- package/src/core/events/v3/producers/recorder.ts +50 -21
- package/src/core/events/v3/reader.ts +14 -13
- package/src/core/events/v3/runtime-build.ts +3 -2
- package/src/core/events/v3/runtime-telemetry-capabilities.ts +3 -3
- package/src/core/events/v3/turn-telemetry.ts +4 -4
- package/src/core/hooks/adapter/output.ts +50 -36
- package/src/core/hooks/backup-schedule.ts +147 -0
- package/src/core/hooks/cli.ts +65 -14
- package/src/core/hooks/codex-wsl-bridge.ts +21 -5
- package/src/core/hooks/index.ts +1 -0
- package/src/core/hooks/prompt-context/contract.ts +177 -0
- package/src/core/hooks/prompt-context/index.ts +22 -0
- package/src/core/hooks/prompt-context/runner.ts +303 -0
- package/src/core/qa-artifacts.ts +29 -3
- package/src/core/resources/contract.ts +76 -3
- package/src/core/resources/index.ts +1 -0
- package/src/core/resources/native.ts +481 -0
- package/src/core/resources/sampler.ts +46 -1
- package/src/core/resources/status.ts +717 -0
- package/src/core/resources/system.ts +530 -0
- package/src/core/semantic/service.ts +37 -3
- package/src/core/storage/builtins.ts +41 -0
- package/src/core/supervisor/contract.ts +45 -3
- package/src/core/supervisor/findings.ts +159 -0
- package/src/core/supervisor/history.ts +15 -0
- package/src/core/supervisor/ledger-state.ts +0 -0
- package/src/core/supervisor/service.ts +133 -5
- package/src/core/supervisor/storage.ts +7 -0
- package/src/core/workflow/admission.ts +33 -17
- package/src/core/workflow/engine.ts +2 -2
- package/src/core/workflow/live-session-v3.ts +6 -8
- package/src/core/workflow/proof.ts +4 -3
- package/src/lib/browser/capture-fidelity.ts +23 -0
- package/src/lib/browser/client.ts +96 -44
- package/src/lib/browser/index.ts +15 -1
- package/src/lib/browser/page-review-budget.ts +309 -0
- package/src/lib/browser/page-review-contracts.ts +129 -0
- package/src/lib/browser/page-review-evidence.ts +465 -0
- package/src/lib/browser/page-review-judge.ts +56 -40
- package/src/lib/browser/page-review-pack.ts +181 -43
- package/src/lib/browser/page-review-source.ts +30 -0
- package/src/lib/browser/qa-run-contracts.ts +62 -18
- package/src/lib/browser/qa-run.ts +259 -71
- package/src/lib/browser/qa-snapshot.ts +289 -48
- package/src/lib/browser/review-capture-transaction.ts +106 -0
- package/src/lib/browser/standalone-html.ts +4 -2
- package/src/lib/browser/thumbnail-association.ts +190 -0
- package/src/lib/browser/tiling.ts +63 -0
- package/src/lib/docs-metadata-managed.ts +4 -1
- package/src/lib/identities/assume.ts +12 -4
- package/src/lib/instructions/templates.ts +1 -0
- package/src/lib/local-file-url.ts +17 -2
- package/src/lib/tunnel/state.ts +70 -13
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { EventAdapterIdV3 } from "./adapter-id.js";
|
|
2
2
|
import { type AdapterSignalV3 } from "./capabilities.js";
|
|
3
3
|
import type { EventPayloadV3, EventV3 } from "./contract.js";
|
|
4
4
|
export interface CapabilityDeliveryV3 {
|
|
@@ -15,7 +15,7 @@ export type CapabilityDriftPayloadV3 = EventPayloadV3<"health.capability_drift">
|
|
|
15
15
|
* opportunity existed, keeping a quiet generation from manufacturing health
|
|
16
16
|
* failures.
|
|
17
17
|
*/
|
|
18
|
-
export declare function capabilityDriftPayloadsV3(adapter:
|
|
18
|
+
export declare function capabilityDriftPayloadsV3(adapter: EventAdapterIdV3, events: readonly EventV3[], options?: {
|
|
19
19
|
generation_ended?: boolean;
|
|
20
20
|
}): CapabilityDriftPayloadV3[];
|
|
21
21
|
export declare function measurableDeliveriesV3(events: readonly EventV3[]): CapabilityDeliveryV3[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-drift.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/capability-drift.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"capability-drift.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/capability-drift.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,eAAe,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAC,yBAAyB,CAAC,CAAC;AAEjF;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,SAAS,OAAO,EAAE,EAC1B,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3C,wBAAwB,EAAE,CAsB5B;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,oBAAoB,EAAE,CAEzF"}
|
|
@@ -1,33 +1,76 @@
|
|
|
1
1
|
import type { ActivationManifestV3, CandidateGenesisManifestV3 } from "./control.js";
|
|
2
2
|
import { EVENT_V3_CONTROL_CHECKPOINT_RELATIVE_PATH, EVENT_V3_CONTROL_WITNESS_RELATIVE_PATH, type EventV3AppendValidationCheckpointV3, type EventV3AuthorityStorageVersionV3 } from "./reader.js";
|
|
3
3
|
export { EVENT_V3_CONTROL_CHECKPOINT_RELATIVE_PATH, EVENT_V3_CONTROL_WITNESS_RELATIVE_PATH };
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* A witness answers one question cheaply: does an authenticated record already
|
|
6
|
+
* name this exact control pair over this exact storage? Both control states get
|
|
7
|
+
* one, because a hook must never pay a whole-history parse for either.
|
|
8
|
+
*
|
|
9
|
+
* `control_state` is the discriminator, and it is authenticated with the rest of
|
|
10
|
+
* the payload. A candidate witness therefore cannot be replayed as an active
|
|
11
|
+
* one, and an active witness cannot survive its activation being removed.
|
|
12
|
+
*/
|
|
13
|
+
export type EventV3ControlWitnessControlStateV3 = "active" | "candidate";
|
|
14
|
+
interface EventV3ControlWitnessPayloadCommonV3 {
|
|
5
15
|
format: "harnery-event-v3-control-witness";
|
|
6
|
-
format_version:
|
|
16
|
+
format_version: 2;
|
|
7
17
|
genesis_id: `gex_${string}`;
|
|
8
|
-
activation_id: `act_${string}`;
|
|
9
18
|
genesis_event_id: `evt_${string}`;
|
|
10
|
-
activation_event_id: `evt_${string}`;
|
|
11
19
|
genesis_manifest_digest: `sha256:${string}`;
|
|
12
|
-
activation_manifest_digest: `sha256:${string}`;
|
|
13
20
|
candidate_manifest_digest: `sha256:${string}`;
|
|
14
21
|
privacy_key_epoch: `pep_${string}`;
|
|
15
22
|
root_id: `root_${string}`;
|
|
16
23
|
storage: EventV3AuthorityStorageVersionV3;
|
|
17
24
|
checkpoint_digest: `sha256:${string}`;
|
|
18
25
|
}
|
|
26
|
+
interface EventV3ActiveControlWitnessPayloadV3 extends EventV3ControlWitnessPayloadCommonV3 {
|
|
27
|
+
control_state: "active";
|
|
28
|
+
activation_id: `act_${string}`;
|
|
29
|
+
activation_event_id: `evt_${string}`;
|
|
30
|
+
activation_manifest_digest: `sha256:${string}`;
|
|
31
|
+
}
|
|
32
|
+
interface EventV3CandidateControlWitnessPayloadV3 extends EventV3ControlWitnessPayloadCommonV3 {
|
|
33
|
+
control_state: "candidate";
|
|
34
|
+
}
|
|
35
|
+
type EventV3ControlWitnessPayload = EventV3ActiveControlWitnessPayloadV3 | EventV3CandidateControlWitnessPayloadV3;
|
|
19
36
|
export interface ActiveControlWitnessBindingV3 {
|
|
20
37
|
genesis: CandidateGenesisManifestV3;
|
|
21
38
|
activation: ActivationManifestV3;
|
|
22
39
|
candidate_manifest_digest: `sha256:${string}`;
|
|
23
40
|
}
|
|
41
|
+
/** The candidate equivalent: a validated genesis with no activation yet. */
|
|
42
|
+
export interface CandidateControlWitnessBindingV3 {
|
|
43
|
+
genesis: CandidateGenesisManifestV3;
|
|
44
|
+
candidate_manifest_digest: `sha256:${string}`;
|
|
45
|
+
}
|
|
24
46
|
/** True only when one authenticated witness names this exact active control pair and storage. */
|
|
25
47
|
export declare function activeControlWitnessMatchesV3(coordRoot: string, binding: ActiveControlWitnessBindingV3): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* True only when one authenticated witness names this exact candidate control
|
|
50
|
+
* pair and storage.
|
|
51
|
+
*
|
|
52
|
+
* A candidate epoch is not a degraded active one: its gate is narrower, but a
|
|
53
|
+
* hook still has to resolve it, and paying a whole-history parse for that
|
|
54
|
+
* answer is what made a stranded epoch cost seconds and hundreds of megabytes
|
|
55
|
+
* per process. The tamper coverage is the active witness's, unchanged: the
|
|
56
|
+
* authenticated payload names the storage version, so a corrupt append, a
|
|
57
|
+
* same-size rewrite, a changed sealed segment, and a replaced inode all miss
|
|
58
|
+
* and fall back to canonical validation. Because `control_state` is inside the
|
|
59
|
+
* authenticated payload, an active witness can never answer here and a
|
|
60
|
+
* candidate witness can never answer the active gate.
|
|
61
|
+
*/
|
|
62
|
+
export declare function candidateControlWitnessMatchesV3(coordRoot: string, binding: CandidateControlWitnessBindingV3): boolean;
|
|
26
63
|
/**
|
|
27
64
|
* Publish a witness only when the storage validated by the caller is still current.
|
|
28
65
|
* Failure is intentionally silent: the next read retains the canonical full-scan fallback.
|
|
29
66
|
*/
|
|
30
67
|
export declare function publishActiveControlWitnessV3(coordRoot: string, binding: ActiveControlWitnessBindingV3, validatedStorage: EventV3AuthorityStorageVersionV3, checkpoint: EventV3AppendValidationCheckpointV3): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* The candidate equivalent, published on the same terms: only when the storage
|
|
70
|
+
* the caller validated is still current, and silently skipped otherwise so the
|
|
71
|
+
* next read keeps the canonical full-scan fallback.
|
|
72
|
+
*/
|
|
73
|
+
export declare function publishCandidateControlWitnessV3(coordRoot: string, binding: CandidateControlWitnessBindingV3, validatedStorage: EventV3AuthorityStorageVersionV3, checkpoint: EventV3AppendValidationCheckpointV3): boolean;
|
|
31
74
|
/**
|
|
32
75
|
* Capture a previously authenticated witness before the append lease mutates storage.
|
|
33
76
|
* The returned payload is safe to advance only while the caller continues to hold that lease.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-witness.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/control-witness.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAErF,OAAO,EAEL,yCAAyC,EACzC,sCAAsC,EACtC,KAAK,mCAAmC,EACxC,KAAK,gCAAgC,EAKtC,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,yCAAyC,EAAE,sCAAsC,EAAE,CAAC;AAE7F,UAAU,
|
|
1
|
+
{"version":3,"file":"control-witness.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/control-witness.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAErF,OAAO,EAEL,yCAAyC,EACzC,sCAAsC,EACtC,KAAK,mCAAmC,EACxC,KAAK,gCAAgC,EAKtC,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,yCAAyC,EAAE,sCAAsC,EAAE,CAAC;AAE7F;;;;;;;;GAQG;AACH,MAAM,MAAM,mCAAmC,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEzE,UAAU,oCAAoC;IAC5C,MAAM,EAAE,kCAAkC,CAAC;IAC3C,cAAc,EAAE,CAAC,CAAC;IAClB,UAAU,EAAE,OAAO,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,OAAO,MAAM,EAAE,CAAC;IAClC,uBAAuB,EAAE,UAAU,MAAM,EAAE,CAAC;IAC5C,yBAAyB,EAAE,UAAU,MAAM,EAAE,CAAC;IAC9C,iBAAiB,EAAE,OAAO,MAAM,EAAE,CAAC;IACnC,OAAO,EAAE,QAAQ,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,gCAAgC,CAAC;IAC1C,iBAAiB,EAAE,UAAU,MAAM,EAAE,CAAC;CACvC;AAED,UAAU,oCAAqC,SAAQ,oCAAoC;IACzF,aAAa,EAAE,QAAQ,CAAC;IACxB,aAAa,EAAE,OAAO,MAAM,EAAE,CAAC;IAC/B,mBAAmB,EAAE,OAAO,MAAM,EAAE,CAAC;IACrC,0BAA0B,EAAE,UAAU,MAAM,EAAE,CAAC;CAChD;AAED,UAAU,uCAAwC,SAAQ,oCAAoC;IAC5F,aAAa,EAAE,WAAW,CAAC;CAC5B;AAED,KAAK,4BAA4B,GAC7B,oCAAoC,GACpC,uCAAuC,CAAC;AAO5C,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,0BAA0B,CAAC;IACpC,UAAU,EAAE,oBAAoB,CAAC;IACjC,yBAAyB,EAAE,UAAU,MAAM,EAAE,CAAC;CAC/C;AAED,4EAA4E;AAC5E,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,0BAA0B,CAAC;IACpC,yBAAyB,EAAE,UAAU,MAAM,EAAE,CAAC;CAC/C;AAED,iGAAiG;AACjG,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAIT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,6BAA6B,EACtC,gBAAgB,EAAE,gCAAgC,EAClD,UAAU,EAAE,mCAAmC,GAC9C,OAAO,CAOT;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gCAAgC,EACzC,gBAAgB,EAAE,gCAAgC,EAClD,UAAU,EAAE,mCAAmC,GAC9C,OAAO,CAOT;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,SAAS,EAAE,MAAM,GAC7D;IACE,OAAO,EAAE,4BAA4B,CAAC;IACtC,UAAU,EAAE,mCAAmC,CAAC;CACjD,GACD,SAAS,CAYZ;AAED,oGAAoG;AACpG,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;IACL,OAAO,EAAE,4BAA4B,CAAC;IACtC,UAAU,EAAE,mCAAmC,CAAC;CACjD,EACD,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,OAAO,CA0BT"}
|
|
@@ -7,35 +7,39 @@ import { advanceEventV3AppendValidationCheckpointV3, EVENT_V3_CONTROL_CHECKPOINT
|
|
|
7
7
|
export { EVENT_V3_CONTROL_CHECKPOINT_RELATIVE_PATH, EVENT_V3_CONTROL_WITNESS_RELATIVE_PATH };
|
|
8
8
|
/** True only when one authenticated witness names this exact active control pair and storage. */
|
|
9
9
|
export function activeControlWitnessMatchesV3(coordRoot, binding) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
10
|
+
return witnessMatchesV3(coordRoot, "active", (storage, checkpointDigest) => activeWitnessPayloadV3(binding, storage, checkpointDigest));
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* True only when one authenticated witness names this exact candidate control
|
|
14
|
+
* pair and storage.
|
|
15
|
+
*
|
|
16
|
+
* A candidate epoch is not a degraded active one: its gate is narrower, but a
|
|
17
|
+
* hook still has to resolve it, and paying a whole-history parse for that
|
|
18
|
+
* answer is what made a stranded epoch cost seconds and hundreds of megabytes
|
|
19
|
+
* per process. The tamper coverage is the active witness's, unchanged: the
|
|
20
|
+
* authenticated payload names the storage version, so a corrupt append, a
|
|
21
|
+
* same-size rewrite, a changed sealed segment, and a replaced inode all miss
|
|
22
|
+
* and fall back to canonical validation. Because `control_state` is inside the
|
|
23
|
+
* authenticated payload, an active witness can never answer here and a
|
|
24
|
+
* candidate witness can never answer the active gate.
|
|
25
|
+
*/
|
|
26
|
+
export function candidateControlWitnessMatchesV3(coordRoot, binding) {
|
|
27
|
+
return witnessMatchesV3(coordRoot, "candidate", (storage, checkpointDigest) => candidateWitnessPayloadV3(binding, storage, checkpointDigest));
|
|
24
28
|
}
|
|
25
29
|
/**
|
|
26
30
|
* Publish a witness only when the storage validated by the caller is still current.
|
|
27
31
|
* Failure is intentionally silent: the next read retains the canonical full-scan fallback.
|
|
28
32
|
*/
|
|
29
33
|
export function publishActiveControlWitnessV3(coordRoot, binding, validatedStorage, checkpoint) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
return publishControlWitnessV3(coordRoot, validatedStorage, checkpoint, (storage, checkpointDigest) => activeWitnessPayloadV3(binding, storage, checkpointDigest));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The candidate equivalent, published on the same terms: only when the storage
|
|
38
|
+
* the caller validated is still current, and silently skipped otherwise so the
|
|
39
|
+
* next read keeps the canonical full-scan fallback.
|
|
40
|
+
*/
|
|
41
|
+
export function publishCandidateControlWitnessV3(coordRoot, binding, validatedStorage, checkpoint) {
|
|
42
|
+
return publishControlWitnessV3(coordRoot, validatedStorage, checkpoint, (storage, checkpointDigest) => candidateWitnessPayloadV3(binding, storage, checkpointDigest));
|
|
39
43
|
}
|
|
40
44
|
/**
|
|
41
45
|
* Capture a previously authenticated witness before the append lease mutates storage.
|
|
@@ -81,17 +85,62 @@ export function advanceControlWitnessV3(coordRoot, prior, currentGenesisId) {
|
|
|
81
85
|
return false;
|
|
82
86
|
}
|
|
83
87
|
}
|
|
84
|
-
|
|
88
|
+
/**
|
|
89
|
+
* One matcher for both control states. The witness on disk must authenticate,
|
|
90
|
+
* carry the requested `control_state`, and canonicalize identically to the
|
|
91
|
+
* payload this exact binding would produce over the storage observed both
|
|
92
|
+
* before and after the read.
|
|
93
|
+
*/
|
|
94
|
+
function witnessMatchesV3(coordRoot, controlState, build) {
|
|
95
|
+
try {
|
|
96
|
+
const before = eventV3AuthorityStorageVersionV3(coordRoot);
|
|
97
|
+
const witness = readAuthenticatedWitnessV3(coordRoot);
|
|
98
|
+
if (!witness || witness.payload.control_state !== controlState)
|
|
99
|
+
return false;
|
|
100
|
+
const expected = build(before, witness.payload.checkpoint_digest);
|
|
101
|
+
if (canonicalJsonV3(witness.payload) !== canonicalJsonV3(expected))
|
|
102
|
+
return false;
|
|
103
|
+
const after = eventV3AuthorityStorageVersionV3(coordRoot);
|
|
104
|
+
return sameStorageVersion(before, after);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function publishControlWitnessV3(coordRoot, validatedStorage, checkpoint, build) {
|
|
111
|
+
try {
|
|
112
|
+
const current = eventV3AuthorityStorageVersionV3(coordRoot);
|
|
113
|
+
if (!sameStorageVersion(validatedStorage, current))
|
|
114
|
+
return false;
|
|
115
|
+
return publishWitnessV3(coordRoot, build(current, checkpointDigestV3(checkpoint)), checkpoint);
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function activeWitnessPayloadV3(binding, storage, checkpointDigest) {
|
|
122
|
+
return {
|
|
123
|
+
...commonWitnessPayloadV3(binding, storage, checkpointDigest),
|
|
124
|
+
control_state: "active",
|
|
125
|
+
activation_id: binding.activation.activation_id,
|
|
126
|
+
activation_event_id: binding.activation.event.event_id,
|
|
127
|
+
activation_manifest_digest: sha256V3(canonicalJsonV3(binding.activation)),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function candidateWitnessPayloadV3(binding, storage, checkpointDigest) {
|
|
131
|
+
return {
|
|
132
|
+
...commonWitnessPayloadV3(binding, storage, checkpointDigest),
|
|
133
|
+
control_state: "candidate",
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
function commonWitnessPayloadV3(binding, storage, checkpointDigest) {
|
|
85
137
|
const scope = binding.genesis.event.scope;
|
|
86
138
|
return {
|
|
87
139
|
format: "harnery-event-v3-control-witness",
|
|
88
|
-
format_version:
|
|
140
|
+
format_version: 2,
|
|
89
141
|
genesis_id: binding.genesis.event.payload.genesis_id,
|
|
90
|
-
activation_id: binding.activation.activation_id,
|
|
91
142
|
genesis_event_id: binding.genesis.event.event_id,
|
|
92
|
-
activation_event_id: binding.activation.event.event_id,
|
|
93
143
|
genesis_manifest_digest: sha256V3(canonicalJsonV3(binding.genesis)),
|
|
94
|
-
activation_manifest_digest: sha256V3(canonicalJsonV3(binding.activation)),
|
|
95
144
|
candidate_manifest_digest: binding.candidate_manifest_digest,
|
|
96
145
|
privacy_key_epoch: binding.genesis.profile.privacy_key_epoch,
|
|
97
146
|
root_id: scope.root_id,
|
|
@@ -170,12 +219,14 @@ function parseWitnessV3(value) {
|
|
|
170
219
|
throw new Error("control witness envelope is invalid");
|
|
171
220
|
}
|
|
172
221
|
const payload = object(envelope.payload);
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
"
|
|
176
|
-
|
|
222
|
+
const controlState = payload.control_state;
|
|
223
|
+
if (controlState !== "active" && controlState !== "candidate") {
|
|
224
|
+
throw new Error("control witness control state is invalid");
|
|
225
|
+
}
|
|
226
|
+
const commonPayloadKeys = [
|
|
177
227
|
"candidate_manifest_digest",
|
|
178
228
|
"checkpoint_digest",
|
|
229
|
+
"control_state",
|
|
179
230
|
"format",
|
|
180
231
|
"format_version",
|
|
181
232
|
"genesis_event_id",
|
|
@@ -185,6 +236,9 @@ function parseWitnessV3(value) {
|
|
|
185
236
|
"root_id",
|
|
186
237
|
"storage",
|
|
187
238
|
];
|
|
239
|
+
const expectedPayloadKeys = controlState === "active"
|
|
240
|
+
? [...commonPayloadKeys, "activation_event_id", "activation_id", "activation_manifest_digest"]
|
|
241
|
+
: commonPayloadKeys;
|
|
188
242
|
if (Object.keys(payload).sort().join("\0") !== expectedPayloadKeys.sort().join("\0")) {
|
|
189
243
|
throw new Error("control witness payload shape is invalid");
|
|
190
244
|
}
|
|
@@ -193,13 +247,14 @@ function parseWitnessV3(value) {
|
|
|
193
247
|
throw new Error("control witness storage shape is invalid");
|
|
194
248
|
}
|
|
195
249
|
if (payload.format !== "harnery-event-v3-control-witness" ||
|
|
196
|
-
payload.format_version !==
|
|
250
|
+
payload.format_version !== 2 ||
|
|
197
251
|
!token(payload.genesis_id, "gex_") ||
|
|
198
|
-
!token(payload.activation_id, "act_") ||
|
|
199
252
|
!token(payload.genesis_event_id, "evt_") ||
|
|
200
|
-
|
|
253
|
+
(controlState === "active" &&
|
|
254
|
+
(!token(payload.activation_id, "act_") ||
|
|
255
|
+
!token(payload.activation_event_id, "evt_") ||
|
|
256
|
+
!digest(payload.activation_manifest_digest))) ||
|
|
201
257
|
!digest(payload.genesis_manifest_digest) ||
|
|
202
|
-
!digest(payload.activation_manifest_digest) ||
|
|
203
258
|
!digest(payload.candidate_manifest_digest) ||
|
|
204
259
|
!digest(payload.checkpoint_digest) ||
|
|
205
260
|
!token(payload.privacy_key_epoch, "pep_") ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/control.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/control.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { buildEventV3 } from "./builder.js";
|
|
4
4
|
import { canonicalJsonV3, sha256V3 } from "./canonical.js";
|
|
5
|
-
import { activeControlWitnessMatchesV3, publishActiveControlWitnessV3 } from "./control-witness.js";
|
|
5
|
+
import { activeControlWitnessMatchesV3, candidateControlWitnessMatchesV3, publishActiveControlWitnessV3, publishCandidateControlWitnessV3, } from "./control-witness.js";
|
|
6
6
|
import { EVENT_V3_SCHEMA_DIGEST } from "./generated.js";
|
|
7
7
|
import { activationIdV3, eventIdV3, genesisIdV3 } from "./ids.js";
|
|
8
8
|
import { eventV3AuthorityStorageVersionV3, readEventV3AppendValidationCheckpointV3, readLedgerV3, } from "./reader.js";
|
|
@@ -160,6 +160,17 @@ export function readEventV3ControlState(coordRoot) {
|
|
|
160
160
|
candidate_manifest_digest: candidateDigest,
|
|
161
161
|
};
|
|
162
162
|
}
|
|
163
|
+
// A candidate epoch answers from its own witness on the same terms. The
|
|
164
|
+
// absent activation manifest is part of the question, so the fast path is
|
|
165
|
+
// only taken when none is published: the moment one appears, this read goes
|
|
166
|
+
// back through canonical validation and can report the repairable window.
|
|
167
|
+
if (!hasActivation &&
|
|
168
|
+
candidateControlWitnessMatchesV3(coordRoot, {
|
|
169
|
+
genesis,
|
|
170
|
+
candidate_manifest_digest: candidateDigest,
|
|
171
|
+
})) {
|
|
172
|
+
return { state: "candidate", genesis, candidate_manifest_digest: candidateDigest };
|
|
173
|
+
}
|
|
163
174
|
const storageBeforeValidation = eventV3AuthorityStorageVersionV3(coordRoot);
|
|
164
175
|
const ledger = readControlLedger(coordRoot);
|
|
165
176
|
if (!ledger.complete) {
|
|
@@ -177,7 +188,16 @@ export function readEventV3ControlState(coordRoot) {
|
|
|
177
188
|
if (ledger.events.some(({ event }) => event.event_type === "ledger.activated")) {
|
|
178
189
|
return { state: "invalid", reason: "activation_event_without_manifest" };
|
|
179
190
|
}
|
|
180
|
-
|
|
191
|
+
const candidate = {
|
|
192
|
+
state: "candidate",
|
|
193
|
+
genesis,
|
|
194
|
+
candidate_manifest_digest: candidateDigest,
|
|
195
|
+
};
|
|
196
|
+
const candidateCheckpoint = readEventV3AppendValidationCheckpointV3(coordRoot);
|
|
197
|
+
if (candidateCheckpoint) {
|
|
198
|
+
publishCandidateControlWitnessV3(coordRoot, candidate, storageBeforeValidation, candidateCheckpoint);
|
|
199
|
+
}
|
|
200
|
+
return candidate;
|
|
181
201
|
}
|
|
182
202
|
const activationResult = activationForWitness ?? readActivationManifest(activationPath, genesis, candidateDigest);
|
|
183
203
|
if (!activationResult.ok)
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
export { EVENT_ADAPTER_IDS_V3, type EventAdapterIdV3 } from "./adapter-id.js";
|
|
1
2
|
export { type SchemaAdvanceEligibilityV3, validateAdditiveSchemaAdvanceV3, } from "./advance.js";
|
|
2
3
|
export { autoCleanEventV3Archives, cleanEventV3Archives, type EventV3ArchiveAutoCleanResult, type EventV3ArchiveClassification, type EventV3ArchiveEntry, eventV3ArchivesRoot, inventoryEventV3Archives, } from "./archive-retention.js";
|
|
3
4
|
export { type AuthorityMutationV3, type AuthorityReceiptV3, type AuthorityReconcilerV3, type AuthorityTransactionV3, buildAuthorityTransactionV3, listPendingAuthorityTransactionsV3, type PrepareAuthorityTransactionV3Input, prepareAuthorityTransactionV3, publishAuthorityTransactionV3, readAuthorityReceiptV3, readAuthorityTransactionV3, reconcileAuthorityTransactionV3, } from "./authority-outbox.js";
|
|
4
5
|
export { ensureEventLedgerV3, type InitializeEventLedgerV3Input, type InitializeEventLedgerV3Result, initializeEventLedgerV3, } from "./bootstrap.js";
|
|
5
6
|
export { type BuildEventV3Input, buildEventV3 } from "./builder.js";
|
|
6
7
|
export { canonicalJsonV3, EVENT_V3_CANONICALIZER, type FingerprintContextV3, type FingerprintV3, fingerprintV3, normalizeNativeIdV3, sha256V3, } from "./canonical.js";
|
|
7
|
-
export { ADAPTER_CAPABILITY_PROFILES_V3, ADAPTER_WAIT_KINDS_V3, type AdapterCapabilityProfileV3, type AdapterSignalV3, type AdapterWaitKindV3, adapterCapabilityProfileDigestV3, adapterCapabilityProfileV3, adapterSignalSupportV3, adapterWaitCoverageMatrixV3, adapterWaitKindSupportV3, type CapabilitySupportV3, type CursorExecutionModeV3, type WaitKindCapabilityV3, } from "./capabilities.js";
|
|
8
|
+
export { ADAPTER_CAPABILITY_PROFILES_V3, ADAPTER_WAIT_KINDS_V3, type AdapterCapabilityProfileV3, type AdapterDurationCapabilityV3, type AdapterSignalV3, type AdapterWaitKindV3, adapterCapabilityProfileDigestV3, adapterCapabilityProfileV3, adapterDurationSupportV3, adapterSignalSupportV3, adapterWaitCoverageMatrixV3, adapterWaitKindSupportV3, type CapabilitySupportV3, type CursorExecutionModeV3, type WaitKindCapabilityV3, } from "./capabilities.js";
|
|
8
9
|
export { type CapabilityDeliveryV3, type CapabilityDriftPayloadV3, capabilityDriftPayloadsV3, measurableDeliveriesV3, } from "./capability-drift.js";
|
|
9
10
|
export { EVENT_V3_CONTRACT_MAJOR, EVENT_V3_CONTRACT_NAME, EVENT_V3_CORE_EVENT_TYPES, EVENT_V3_SCHEMA_ID, type EventOfTypeV3, type EventPayloadV3, type EventTypeV3, type EventV3, EventV3Schema, ObservationV3Schema, OutcomeV3Schema, RecoveryV3Schema, type SpanSummaryV3, SpanSummaryV3Schema, type TurnHarnessV3, type TurnInferenceV3, type TurnUsageV3, type WaitKindV3, WaitKindV3Schema, } from "./contract.js";
|
|
10
11
|
export { type ActivationManifestV3, type BuildActivationManifestV3Input, type BuildCandidateGenesisManifestV3Input, buildActivationManifestV3, buildCandidateGenesisManifestV3, type CandidateGenesisManifestV3, type CandidateProfileV3, type ControlManifestValidationV3, type ControlProducerV3, candidateManifestDigestV3, candidateProfileDigestV3, EVENT_V3_ACTIVATION_MANIFEST, EVENT_V3_GENESIS_MANIFEST, type EventV3ControlState, type EventV3WriteMode, eventV3WriteGateOpen, readEventV3ControlState, validateActivationManifestV3, validateCandidateGenesisManifestV3, } from "./control.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
export { EVENT_ADAPTER_IDS_V3 } from "./adapter-id.js";
|
|
1
2
|
export { validateAdditiveSchemaAdvanceV3, } from "./advance.js";
|
|
2
3
|
export { autoCleanEventV3Archives, cleanEventV3Archives, eventV3ArchivesRoot, inventoryEventV3Archives, } from "./archive-retention.js";
|
|
3
4
|
export { buildAuthorityTransactionV3, listPendingAuthorityTransactionsV3, prepareAuthorityTransactionV3, publishAuthorityTransactionV3, readAuthorityReceiptV3, readAuthorityTransactionV3, reconcileAuthorityTransactionV3, } from "./authority-outbox.js";
|
|
4
5
|
export { ensureEventLedgerV3, initializeEventLedgerV3, } from "./bootstrap.js";
|
|
5
6
|
export { buildEventV3 } from "./builder.js";
|
|
6
7
|
export { canonicalJsonV3, EVENT_V3_CANONICALIZER, fingerprintV3, normalizeNativeIdV3, sha256V3, } from "./canonical.js";
|
|
7
|
-
export { ADAPTER_CAPABILITY_PROFILES_V3, ADAPTER_WAIT_KINDS_V3, adapterCapabilityProfileDigestV3, adapterCapabilityProfileV3, adapterSignalSupportV3, adapterWaitCoverageMatrixV3, adapterWaitKindSupportV3, } from "./capabilities.js";
|
|
8
|
+
export { ADAPTER_CAPABILITY_PROFILES_V3, ADAPTER_WAIT_KINDS_V3, adapterCapabilityProfileDigestV3, adapterCapabilityProfileV3, adapterDurationSupportV3, adapterSignalSupportV3, adapterWaitCoverageMatrixV3, adapterWaitKindSupportV3, } from "./capabilities.js";
|
|
8
9
|
export { capabilityDriftPayloadsV3, measurableDeliveriesV3, } from "./capability-drift.js";
|
|
9
10
|
export { EVENT_V3_CONTRACT_MAJOR, EVENT_V3_CONTRACT_NAME, EVENT_V3_CORE_EVENT_TYPES, EVENT_V3_SCHEMA_ID, EventV3Schema, ObservationV3Schema, OutcomeV3Schema, RecoveryV3Schema, SpanSummaryV3Schema, WaitKindV3Schema, } from "./contract.js";
|
|
10
11
|
export { buildActivationManifestV3, buildCandidateGenesisManifestV3, candidateManifestDigestV3, candidateProfileDigestV3, EVENT_V3_ACTIVATION_MANIFEST, EVENT_V3_GENESIS_MANIFEST, eventV3WriteGateOpen, readEventV3ControlState, validateActivationManifestV3, validateCandidateGenesisManifestV3, } from "./control.js";
|
|
@@ -34,7 +34,13 @@ export declare function writeLiveDisplayV3(coordRoot: string, input: LiveDisplay
|
|
|
34
34
|
* presentation-only and must not fail a durable ledger append.
|
|
35
35
|
*/
|
|
36
36
|
export declare function tryWriteLiveDisplayV3(coordRoot: string, input: LiveDisplayInputV3, now?: () => Date): LiveDisplayRowV3 | undefined;
|
|
37
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* Return every unexpired live-display row across generations.
|
|
39
|
+
*
|
|
40
|
+
* A generation file whose last write is older than the hard TTL cannot hold a
|
|
41
|
+
* live row, so it is skipped on the stat alone. Without that guard a directory
|
|
42
|
+
* that has not been swept turns every read into a parse of days of residue.
|
|
43
|
+
*/
|
|
38
44
|
export declare function listLiveDisplayV3(coordRoot: string, now?: () => Date): LiveDisplayRowV3[];
|
|
39
45
|
/** Return only unexpired, structurally valid rows. Expiry is enforced before cleanup. */
|
|
40
46
|
export declare function readLiveDisplayV3(coordRoot: string, generationId: string, now?: () => Date): LiveDisplayRowV3[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-feed.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/live-feed.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,2BAA2B,EAAG,kBAA2B,CAAC;AAEvE,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,+BAA+B,CAAC;IACxC,cAAc,EAAE,CAAC,CAAC;IAClB,MAAM,EAAE,QAAQ,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,kBAAkB,EACzB,GAAG,GAAE,MAAM,IAAuB,GACjC,gBAAgB,CAwClB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,kBAAkB,EACzB,GAAG,GAAE,MAAM,IAAuB,GACjC,gBAAgB,GAAG,SAAS,CAM9B;AAED
|
|
1
|
+
{"version":3,"file":"live-feed.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/live-feed.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,2BAA2B,EAAG,kBAA2B,CAAC;AAEvE,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,+BAA+B,CAAC;IACxC,cAAc,EAAE,CAAC,CAAC;IAClB,MAAM,EAAE,QAAQ,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,kBAAkB,EACzB,GAAG,GAAE,MAAM,IAAuB,GACjC,gBAAgB,CAwClB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,kBAAkB,EACzB,GAAG,GAAE,MAAM,IAAuB,GACjC,gBAAgB,GAAG,SAAS,CAM9B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAM,IAAuB,GACjC,gBAAgB,EAAE,CAapB;AAWD,yFAAyF;AACzF,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,GAAG,GAAE,MAAM,IAAuB,GACjC,gBAAgB,EAAE,CAoBpB;AAED,+FAA+F;AAC/F,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAM,IAAuB,GACjC,0BAA0B,CAwB5B;AAED,wGAAwG;AACxG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAkCjF"}
|
|
@@ -70,11 +70,18 @@ export function tryWriteLiveDisplayV3(coordRoot, input, now = () => new Date())
|
|
|
70
70
|
return undefined;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* Return every unexpired live-display row across generations.
|
|
75
|
+
*
|
|
76
|
+
* A generation file whose last write is older than the hard TTL cannot hold a
|
|
77
|
+
* live row, so it is skipped on the stat alone. Without that guard a directory
|
|
78
|
+
* that has not been swept turns every read into a parse of days of residue.
|
|
79
|
+
*/
|
|
74
80
|
export function listLiveDisplayV3(coordRoot, now = () => new Date()) {
|
|
75
81
|
const root = liveRoot(coordRoot);
|
|
76
82
|
if (!existsSync(root))
|
|
77
83
|
return [];
|
|
84
|
+
const nowMs = now().getTime();
|
|
78
85
|
const rows = [];
|
|
79
86
|
for (const name of readdirSync(root)) {
|
|
80
87
|
if (!name.endsWith(".ndjson"))
|
|
@@ -82,10 +89,21 @@ export function listLiveDisplayV3(coordRoot, now = () => new Date()) {
|
|
|
82
89
|
const generationId = name.slice(0, -".ndjson".length);
|
|
83
90
|
if (!GENERATION_PATTERN.test(generationId))
|
|
84
91
|
continue;
|
|
92
|
+
if (fileHardExpiredV3(join(root, name), nowMs))
|
|
93
|
+
continue;
|
|
85
94
|
rows.push(...readLiveDisplayV3(coordRoot, generationId, now));
|
|
86
95
|
}
|
|
87
96
|
return rows;
|
|
88
97
|
}
|
|
98
|
+
/** True when the file's last write predates the hard TTL; a missing file counts as expired. */
|
|
99
|
+
function fileHardExpiredV3(path, nowMs) {
|
|
100
|
+
try {
|
|
101
|
+
return statSync(path).mtimeMs + HARD_MAX_TTL_MS <= nowMs;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
89
107
|
/** Return only unexpired, structurally valid rows. Expiry is enforced before cleanup. */
|
|
90
108
|
export function readLiveDisplayV3(coordRoot, generationId, now = () => new Date()) {
|
|
91
109
|
if (!GENERATION_PATTERN.test(generationId))
|
|
@@ -125,10 +143,10 @@ export function janitorLiveDisplayV3(coordRoot, now = () => new Date()) {
|
|
|
125
143
|
continue;
|
|
126
144
|
scanned += 1;
|
|
127
145
|
const path = join(root, basename(name));
|
|
128
|
-
const
|
|
146
|
+
const hardExpired = fileHardExpiredV3(path, nowMs);
|
|
147
|
+
const visible = !hardExpired && GENERATION_PATTERN.test(name.slice(0, -".ndjson".length))
|
|
129
148
|
? readLiveDisplayV3(coordRoot, name.slice(0, -".ndjson".length), now)
|
|
130
149
|
: [];
|
|
131
|
-
const hardExpired = statSync(path).mtimeMs + HARD_MAX_TTL_MS <= nowMs;
|
|
132
150
|
if (visible.length === 0 || hardExpired) {
|
|
133
151
|
rmSync(path, { force: true });
|
|
134
152
|
removed += 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-routing.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/live-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"live-routing.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/live-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAMlE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EACL,KAAK,sBAAsB,EAI5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EACL,KAAK,sCAAsC,EAC3C,KAAK,wBAAwB,EAG9B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE3E,eAAO,MAAM,wBAAwB,EAAG,gBAAyB,CAAC;AAClE,eAAO,MAAM,2BAA2B,EAAG,iBAA0B,CAAC;AAEtE;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB,CAsCvF;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAwBxE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAOzF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC,sBAAsB,EAAE;QAAE,KAAK,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,wBAAwB,GAAG;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAwClD;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC,sBAAsB,EAAE;QAAE,KAAK,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACxD,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG,sCAAsC,CAUzC;AAED;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC,sBAAsB,EAAE;QAAE,KAAK,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACxD,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IAC/D,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,wBAAwB,GAAG;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAsElD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { refreshIncompatibleEventLedgerV3, rotateOversizedEventLedgerV3 } from "./bootstrap.js";
|
|
1
|
+
import { refreshIncompatibleEventLedgerV3, repairStrandedEventLedgerV3Candidate, rotateOversizedEventLedgerV3, } from "./bootstrap.js";
|
|
2
2
|
import { readEventV3ControlState } from "./control.js";
|
|
3
3
|
import { repairEventV3ControlPair } from "./control-writer.js";
|
|
4
4
|
import { liveEventLedgerRouteFromControlV3, liveInstanceIdV3, runtimeCapabilityProfileCurrentV3, } from "./live-route-observer.js";
|
|
@@ -33,7 +33,15 @@ export function resolveLiveEventLedgerRouteV3(coordRoot) {
|
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
if (control.state === "
|
|
36
|
+
if (control.state === "candidate") {
|
|
37
|
+
// An epoch is created and activated as one locked step, so a candidate on
|
|
38
|
+
// this boundary is a stranded epoch: a crashed or failed activation that
|
|
39
|
+
// every later hook would otherwise keep serving with a candidate-only
|
|
40
|
+
// write gate. Finish it here. A live bootstrap lease or any other refusal
|
|
41
|
+
// leaves the candidate serving and the next boundary retries.
|
|
42
|
+
control = repairStrandedEventLedgerV3Candidate(coordRoot).control;
|
|
43
|
+
}
|
|
44
|
+
if (control.state === "active" || control.state === "candidate") {
|
|
37
45
|
// Bound the epoch every producer must re-validate: an oversized active
|
|
38
46
|
// segment rotates into the archive here, on the shared route boundary.
|
|
39
47
|
// Rotation failure never blocks recording; the current epoch stays live.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type EventAdapterIdV3 } from "../adapter-id.js";
|
|
2
2
|
import type { EventV3 } from "../contract.js";
|
|
3
3
|
import { type EventV3WriteMode } from "../control.js";
|
|
4
4
|
import { type WriteEventV3Options, type WriteEventV3Result } from "../writer.js";
|
|
@@ -8,7 +8,7 @@ export interface RecordCommandSignalV3Input {
|
|
|
8
8
|
mode: EventV3WriteMode;
|
|
9
9
|
signal: CommandSignalV3;
|
|
10
10
|
observation: CommandObservationV3;
|
|
11
|
-
adapter:
|
|
11
|
+
adapter: EventAdapterIdV3;
|
|
12
12
|
instance_id: `inst_${string}`;
|
|
13
13
|
producer_id: `prd_${string}`;
|
|
14
14
|
build_id: `build_${string}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-recorder.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/v3/producers/command-recorder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"command-recorder.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/v3/producers/command-recorder.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAI/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,eAAe,CAAC;AAM/E,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EAExB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,eAAe,EAErB,MAAM,cAAc,CAAC;AA0CtB,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,oBAAoB,CAAC;IAClC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,QAAQ,MAAM,EAAE,CAAC;IAC9B,WAAW,EAAE,OAAO,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,MAAM,2BAA2B,GACnC;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,KAAK,EAAE,wBAAwB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,KAAK,EAAE,wBAAwB,CAAA;CAAE,GACnC;IAAE,KAAK,EAAE,wBAAwB,CAAA;CAAE,GACnC;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9F;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,GAChC,2BAA2B,CAwI7B;AAED,MAAM,WAAW,iCAAiC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,aAAa,EAAE,OAAO,MAAM,EAAE,CAAC;IAC/B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,kCAAkC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,iCAAiC,GACvC,kCAAkC,CA8HpC"}
|
|
@@ -5,6 +5,7 @@ import { join, resolve } from "node:path";
|
|
|
5
5
|
import { fsyncParentDirectory } from "../../../workflow/durable-record.js";
|
|
6
6
|
import { acquireNoClobberLease } from "../../../workflow/workspaces/leases.js";
|
|
7
7
|
import { selectCommandParentSpan } from "../../span-parent.js";
|
|
8
|
+
import { EVENT_ADAPTER_IDS_V3 } from "../adapter-id.js";
|
|
8
9
|
import { buildEventV3 } from "../builder.js";
|
|
9
10
|
import { normalizeNativeIdV3 } from "../canonical.js";
|
|
10
11
|
import { markObservedClockRegressionV3 } from "../clock-order.js";
|
|
@@ -427,7 +428,7 @@ function readCommandState(path) {
|
|
|
427
428
|
if (Object.keys(state).some((key) => !allowed.has(key)) ||
|
|
428
429
|
state.format !== COMMAND_STATE_FORMAT ||
|
|
429
430
|
state.format_version !== COMMAND_STATE_VERSION ||
|
|
430
|
-
!
|
|
431
|
+
!EVENT_ADAPTER_IDS_V3.includes(state.adapter) ||
|
|
431
432
|
!/^inst_[a-zA-Z0-9._-]{1,128}$/.test(state.instance_id) ||
|
|
432
433
|
!/^sid_[a-f0-9]{64}$/.test(state.session_id) ||
|
|
433
434
|
!/^gen_[0-9a-f-]{36}$/.test(state.generation_id) ||
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type EventAdapterIdV3 } from "../adapter-id.js";
|
|
2
2
|
import { type AuthorityReceiptV3, type AuthorityReconcilerV3, type AuthorityTransactionV3 } from "../authority-outbox.js";
|
|
3
3
|
import type { EventV3 } from "../contract.js";
|
|
4
4
|
import { type EventV3WriteMode } from "../control.js";
|
|
@@ -12,7 +12,7 @@ export interface RecordCoordinationAuthorityV3Input<S extends CoordinationAuthor
|
|
|
12
12
|
mode: EventV3WriteMode;
|
|
13
13
|
signal: S;
|
|
14
14
|
observation: CoordinationObservationBySignalV3[S];
|
|
15
|
-
adapter:
|
|
15
|
+
adapter: EventAdapterIdV3;
|
|
16
16
|
native_actor_session_id: string;
|
|
17
17
|
actor_instance_id: `inst_${string}`;
|
|
18
18
|
subject_instance_id: `inst_${string}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordination-recorder.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/v3/producers/coordination-recorder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"coordination-recorder.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/v3/producers/coordination-recorder.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAK5B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,eAAe,CAAC;AAK/E,OAAO,EACL,KAAK,6BAA6B,EAClC,KAAK,iCAAiC,EAEvC,MAAM,mBAAmB,CAAC;AAyC3B,MAAM,WAAW,wCAAwC;IACvD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED,MAAM,WAAW,kCAAkC,CACjD,CAAC,SAAS,6BAA6B,GAAG,6BAA6B;IAEvE,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,CAAC,CAAC;IACV,WAAW,EAAE,iCAAiC,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO,EAAE,gBAAgB,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,QAAQ,MAAM,EAAE,CAAC;IACpC,mBAAmB,EAAE,QAAQ,MAAM,EAAE,CAAC;IACtC,WAAW,EAAE,OAAO,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,2BAA2B,EAAE,UAAU,MAAM,EAAE,CAAC;IAChD,oBAAoB,EAAE,UAAU,MAAM,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,qBAAqB,CAAC;CACnC;AAED,MAAM,MAAM,mCAAmC,GAC3C;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,KAAK,EAAE,wBAAwB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,KAAK,EAAE,qBAAqB,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC/E;IACE,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEN;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,CAAC,SAAS,6BAA6B,EACnF,KAAK,EAAE,kCAAkC,CAAC,CAAC,CAAC,GAC3C,mCAAmC,CAwNrC;AAED,uFAAuF;AACvF,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,wCAAwC,GAAG,IAAI,CAgBjD;AAED,mGAAmG;AACnG,wBAAgB,4CAA4C,CAAC,CAAC,EAC5D,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,WAAW,EAAE,sBAAsB,EACnC,mBAAmB,EAAE,OAAO,EAC5B,SAAS,EAAE,CAAC,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,SAAS,GAAG,iBAAiB,CAAA;CAAE,KAAK,CAAC,GAC/E,CAAC,CA+BH"}
|