@telora/daemon 0.22.189 → 0.22.226
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/build-info.json +6 -3
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +5 -1
- package/dist/backends/index.js.map +1 -1
- package/dist/completion/advancement-stall-watchdog.d.ts.map +1 -1
- package/dist/completion/advancement-stall-watchdog.js +6 -2
- package/dist/completion/advancement-stall-watchdog.js.map +1 -1
- package/dist/completion/completion-decision.d.ts +10 -1
- package/dist/completion/completion-decision.d.ts.map +1 -1
- package/dist/completion/completion-decision.js +1 -1
- package/dist/completion/completion-decision.js.map +1 -1
- package/dist/completion/completion-fact-readers.d.ts +35 -0
- package/dist/completion/completion-fact-readers.d.ts.map +1 -0
- package/dist/completion/completion-fact-readers.js +70 -0
- package/dist/completion/completion-fact-readers.js.map +1 -0
- package/dist/completion/delivery-advancement-guard.d.ts +31 -16
- package/dist/completion/delivery-advancement-guard.d.ts.map +1 -1
- package/dist/completion/delivery-advancement-guard.js +22 -37
- package/dist/completion/delivery-advancement-guard.js.map +1 -1
- package/dist/completion/detector.d.ts.map +1 -1
- package/dist/completion/detector.js +3 -1
- package/dist/completion/detector.js.map +1 -1
- package/dist/completion/event-dep-defaults.d.ts +27 -0
- package/dist/completion/event-dep-defaults.d.ts.map +1 -0
- package/dist/completion/event-dep-defaults.js +30 -0
- package/dist/completion/event-dep-defaults.js.map +1 -0
- package/dist/completion/event-phases.d.ts +19 -8
- package/dist/completion/event-phases.d.ts.map +1 -1
- package/dist/completion/event-phases.js +72 -101
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/event.d.ts +44 -9
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +36 -27
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/index.js +1 -1
- package/dist/completion/progress-snapshot.d.ts +13 -9
- package/dist/completion/progress-snapshot.d.ts.map +1 -1
- package/dist/completion/progress-snapshot.js +16 -13
- package/dist/completion/progress-snapshot.js.map +1 -1
- package/dist/completion/reengagement-redrive.d.ts +8 -1
- package/dist/completion/reengagement-redrive.d.ts.map +1 -1
- package/dist/completion/reengagement-redrive.js +16 -2
- package/dist/completion/reengagement-redrive.js.map +1 -1
- package/dist/completion/session-hold.d.ts +13 -1
- package/dist/completion/session-hold.d.ts.map +1 -1
- package/dist/completion/session-hold.js +18 -0
- package/dist/completion/session-hold.js.map +1 -1
- package/dist/completion/state-cascade.d.ts.map +1 -1
- package/dist/completion/state-cascade.js +11 -19
- package/dist/completion/state-cascade.js.map +1 -1
- package/dist/completion/team-phase.d.ts.map +1 -1
- package/dist/completion/team-phase.js +1 -0
- package/dist/completion/team-phase.js.map +1 -1
- package/dist/completion/team-progress-measure.d.ts +70 -0
- package/dist/completion/team-progress-measure.d.ts.map +1 -0
- package/dist/completion/team-progress-measure.js +285 -0
- package/dist/completion/team-progress-measure.js.map +1 -0
- package/dist/completion/team-stillness.d.ts +76 -0
- package/dist/completion/team-stillness.d.ts.map +1 -0
- package/dist/completion/team-stillness.js +96 -0
- package/dist/completion/team-stillness.js.map +1 -0
- package/dist/completion/unclaimed-migration-notice-phase.d.ts +97 -0
- package/dist/completion/unclaimed-migration-notice-phase.d.ts.map +1 -0
- package/dist/completion/unclaimed-migration-notice-phase.js +270 -0
- package/dist/completion/unclaimed-migration-notice-phase.js.map +1 -0
- package/dist/completion/worker-wait.d.ts +84 -0
- package/dist/completion/worker-wait.d.ts.map +1 -0
- package/dist/completion/worker-wait.js +89 -0
- package/dist/completion/worker-wait.js.map +1 -0
- package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
- package/dist/delivery/delivery-advance-block.js +1 -2
- package/dist/delivery/delivery-advance-block.js.map +1 -1
- package/dist/directive/directive-executor.d.ts.map +1 -1
- package/dist/directive/directive-executor.js +1 -20
- package/dist/directive/directive-executor.js.map +1 -1
- package/dist/focus/focus-executor.d.ts +1 -0
- package/dist/focus/focus-executor.d.ts.map +1 -1
- package/dist/focus/focus-executor.js +18 -17
- package/dist/focus/focus-executor.js.map +1 -1
- package/dist/focus/focus-lifecycle.d.ts.map +1 -1
- package/dist/focus/focus-lifecycle.js +7 -1
- package/dist/focus/focus-lifecycle.js.map +1 -1
- package/dist/focus/focus-team-state.js +1 -1
- package/dist/focus/focus-worktree-state.d.ts.map +1 -1
- package/dist/focus/focus-worktree-state.js +2 -1
- package/dist/focus/focus-worktree-state.js.map +1 -1
- package/dist/focus/listener-spawn.d.ts.map +1 -1
- package/dist/focus/listener-spawn.js +5 -20
- package/dist/focus/listener-spawn.js.map +1 -1
- package/dist/focus/listener-state.d.ts.map +1 -1
- package/dist/focus/listener-state.js +1 -0
- package/dist/focus/listener-state.js.map +1 -1
- package/dist/focus/listener.d.ts +1 -0
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +9 -0
- package/dist/focus/listener.js.map +1 -1
- package/dist/focus/migration-claim-pass.d.ts +50 -0
- package/dist/focus/migration-claim-pass.d.ts.map +1 -0
- package/dist/focus/migration-claim-pass.js +234 -0
- package/dist/focus/migration-claim-pass.js.map +1 -0
- package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
- package/dist/focus/pending-spawn-pass-deps.js +2 -1
- package/dist/focus/pending-spawn-pass-deps.js.map +1 -1
- package/dist/focus/team-actionable-work.d.ts +21 -0
- package/dist/focus/team-actionable-work.d.ts.map +1 -1
- package/dist/focus/team-actionable-work.js +3 -0
- package/dist/focus/team-actionable-work.js.map +1 -1
- package/dist/git/focus-integration-sync.d.ts +42 -4
- package/dist/git/focus-integration-sync.d.ts.map +1 -1
- package/dist/git/focus-integration-sync.js +53 -9
- package/dist/git/focus-integration-sync.js.map +1 -1
- package/dist/git/types.d.ts.map +1 -1
- package/dist/git/types.js +4 -1
- package/dist/git/types.js.map +1 -1
- package/dist/loops/llm-client.d.ts.map +1 -1
- package/dist/loops/llm-client.js +11 -1
- package/dist/loops/llm-client.js.map +1 -1
- package/dist/merge/merge-back-loop.d.ts.map +1 -1
- package/dist/merge/merge-back-loop.js +0 -1
- package/dist/merge/merge-back-loop.js.map +1 -1
- package/dist/migrations/migration-claim-lifecycle.d.ts +166 -0
- package/dist/migrations/migration-claim-lifecycle.d.ts.map +1 -0
- package/dist/migrations/migration-claim-lifecycle.js +198 -0
- package/dist/migrations/migration-claim-lifecycle.js.map +1 -0
- package/dist/migrations/migration-held-set.d.ts +171 -0
- package/dist/migrations/migration-held-set.d.ts.map +1 -0
- package/dist/migrations/migration-held-set.js +295 -0
- package/dist/migrations/migration-held-set.js.map +1 -0
- package/dist/migrations/migration-inventory.d.ts +187 -0
- package/dist/migrations/migration-inventory.d.ts.map +1 -0
- package/dist/migrations/migration-inventory.js +253 -0
- package/dist/migrations/migration-inventory.js.map +1 -0
- package/dist/migrations/migration-manifest.d.ts +114 -0
- package/dist/migrations/migration-manifest.d.ts.map +1 -0
- package/dist/migrations/migration-manifest.js +295 -0
- package/dist/migrations/migration-manifest.js.map +1 -0
- package/dist/prompt/team-prompt-base.js +1 -1
- package/dist/prompt-sections/migration-numbering-section.d.ts +58 -0
- package/dist/prompt-sections/migration-numbering-section.d.ts.map +1 -0
- package/dist/prompt-sections/migration-numbering-section.js +70 -0
- package/dist/prompt-sections/migration-numbering-section.js.map +1 -0
- package/dist/prompt-sections/migration-numbering-state.d.ts +30 -0
- package/dist/prompt-sections/migration-numbering-state.d.ts.map +1 -0
- package/dist/prompt-sections/migration-numbering-state.js +24 -0
- package/dist/prompt-sections/migration-numbering-state.js.map +1 -0
- package/dist/prompt-sections/unclaimed-migration-section.d.ts +38 -0
- package/dist/prompt-sections/unclaimed-migration-section.d.ts.map +1 -0
- package/dist/prompt-sections/unclaimed-migration-section.js +57 -0
- package/dist/prompt-sections/unclaimed-migration-section.js.map +1 -0
- package/dist/queries/claim-pass-focuses.d.ts +19 -0
- package/dist/queries/claim-pass-focuses.d.ts.map +1 -0
- package/dist/queries/claim-pass-focuses.js +72 -0
- package/dist/queries/claim-pass-focuses.js.map +1 -0
- package/dist/queries/daemon-connection.d.ts.map +1 -1
- package/dist/queries/daemon-connection.js +1 -0
- package/dist/queries/daemon-connection.js.map +1 -1
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +3 -1
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/delivery-gate-state.js +1 -1
- package/dist/queries/escalation-suppression.js +1 -1
- package/dist/queries/focus-discovery.d.ts +25 -2
- package/dist/queries/focus-discovery.d.ts.map +1 -1
- package/dist/queries/focus-discovery.js +16 -9
- package/dist/queries/focus-discovery.js.map +1 -1
- package/dist/queries/focus-integration-conflict.d.ts +7 -4
- package/dist/queries/focus-integration-conflict.d.ts.map +1 -1
- package/dist/queries/focus-integration-conflict.js +6 -3
- package/dist/queries/focus-integration-conflict.js.map +1 -1
- package/dist/queries/focus-unclaimed-migration.d.ts +146 -0
- package/dist/queries/focus-unclaimed-migration.d.ts.map +1 -0
- package/dist/queries/focus-unclaimed-migration.js +266 -0
- package/dist/queries/focus-unclaimed-migration.js.map +1 -0
- package/dist/queries/live-focus-branches.d.ts +32 -0
- package/dist/queries/live-focus-branches.d.ts.map +1 -0
- package/dist/queries/live-focus-branches.js +66 -0
- package/dist/queries/live-focus-branches.js.map +1 -0
- package/dist/queries/migration-claims.d.ts +25 -0
- package/dist/queries/migration-claims.d.ts.map +1 -0
- package/dist/queries/migration-claims.js +79 -0
- package/dist/queries/migration-claims.js.map +1 -0
- package/dist/queries/schemas.d.ts +17 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +18 -1
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/queries/shortfall-park-record.d.ts +6 -1
- package/dist/queries/shortfall-park-record.d.ts.map +1 -1
- package/dist/queries/shortfall-park-record.js.map +1 -1
- package/dist/queries/shortfall-rulings.d.ts +14 -2
- package/dist/queries/shortfall-rulings.d.ts.map +1 -1
- package/dist/queries/shortfall-rulings.js +17 -3
- package/dist/queries/shortfall-rulings.js.map +1 -1
- package/dist/queries/verification.js +1 -1
- package/dist/queries/verify-own-holds.d.ts.map +1 -1
- package/dist/queries/verify-own-holds.js +1 -0
- package/dist/queries/verify-own-holds.js.map +1 -1
- package/dist/session/session-lineage.d.ts.map +1 -1
- package/dist/session/session-lineage.js +3 -0
- package/dist/session/session-lineage.js.map +1 -1
- package/dist/shell/heartbeat-metadata.d.ts +48 -2
- package/dist/shell/heartbeat-metadata.d.ts.map +1 -1
- package/dist/shell/heartbeat-metadata.js +80 -3
- package/dist/shell/heartbeat-metadata.js.map +1 -1
- package/dist/shell/heartbeat.d.ts +13 -0
- package/dist/shell/heartbeat.d.ts.map +1 -1
- package/dist/shell/heartbeat.js +31 -10
- package/dist/shell/heartbeat.js.map +1 -1
- package/dist/shell/mcp-resolution.js +1 -1
- package/dist/shell/mcp-resolution.js.map +1 -1
- package/dist/shell/migration-held-set-publish.d.ts +170 -0
- package/dist/shell/migration-held-set-publish.d.ts.map +1 -0
- package/dist/shell/migration-held-set-publish.js +172 -0
- package/dist/shell/migration-held-set-publish.js.map +1 -0
- package/dist/shell/worker-pidfile.d.ts.map +1 -1
- package/dist/shell/worker-pidfile.js +1 -0
- package/dist/shell/worker-pidfile.js.map +1 -1
- package/dist/spawn/helpers.d.ts.map +1 -1
- package/dist/spawn/helpers.js +10 -1
- package/dist/spawn/helpers.js.map +1 -1
- package/dist/spawn/lead-continuation.d.ts +10 -2
- package/dist/spawn/lead-continuation.d.ts.map +1 -1
- package/dist/spawn/lead-continuation.js +39 -22
- package/dist/spawn/lead-continuation.js.map +1 -1
- package/dist/spawn/lead-launch.d.ts.map +1 -1
- package/dist/spawn/lead-launch.js +1 -0
- package/dist/spawn/lead-launch.js.map +1 -1
- package/dist/spawn/lead-process-ownership.d.ts.map +1 -1
- package/dist/spawn/lead-process-ownership.js +1 -0
- package/dist/spawn/lead-process-ownership.js.map +1 -1
- package/dist/spawn/one-shot-model.d.ts.map +1 -1
- package/dist/spawn/one-shot-model.js +1 -0
- package/dist/spawn/one-shot-model.js.map +1 -1
- package/dist/spawn/process-group-kill.d.ts.map +1 -1
- package/dist/spawn/process-group-kill.js +1 -0
- package/dist/spawn/process-group-kill.js.map +1 -1
- package/dist/spawn/process-spawn.d.ts +18 -1
- package/dist/spawn/process-spawn.d.ts.map +1 -1
- package/dist/spawn/process-spawn.js +11 -6
- package/dist/spawn/process-spawn.js.map +1 -1
- package/dist/spawn/prompt-assembly.d.ts +115 -18
- package/dist/spawn/prompt-assembly.d.ts.map +1 -1
- package/dist/spawn/prompt-assembly.js +121 -2
- package/dist/spawn/prompt-assembly.js.map +1 -1
- package/dist/spawn/spawn-and-acknowledge.d.ts +61 -0
- package/dist/spawn/spawn-and-acknowledge.d.ts.map +1 -0
- package/dist/spawn/spawn-and-acknowledge.js +117 -0
- package/dist/spawn/spawn-and-acknowledge.js.map +1 -0
- package/dist/spawn/spawn-cooldown.js +1 -1
- package/dist/spawn/spawn-decision.d.ts +10 -10
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +33 -5
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +11 -1
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/templates/claude-md.d.ts +1 -1
- package/dist/templates/claude-md.d.ts.map +1 -1
- package/dist/templates/claude-md.js +24 -0
- package/dist/templates/claude-md.js.map +1 -1
- package/dist/testing/fixtures/conflicting-repo.d.ts +17 -0
- package/dist/testing/fixtures/conflicting-repo.d.ts.map +1 -1
- package/dist/testing/fixtures/conflicting-repo.js +31 -0
- package/dist/testing/fixtures/conflicting-repo.js.map +1 -1
- package/dist/testing/fixtures/index.d.ts.map +1 -1
- package/dist/testing/fixtures/index.js +1 -2
- package/dist/testing/fixtures/index.js.map +1 -1
- package/dist/testing/fixtures/migration-namespace-repo.d.ts +63 -0
- package/dist/testing/fixtures/migration-namespace-repo.d.ts.map +1 -0
- package/dist/testing/fixtures/migration-namespace-repo.js +164 -0
- package/dist/testing/fixtures/migration-namespace-repo.js.map +1 -0
- package/dist/testing/fixtures/stubborn-lead-process.d.ts.map +1 -1
- package/dist/testing/fixtures/stubborn-lead-process.js +1 -0
- package/dist/testing/fixtures/stubborn-lead-process.js.map +1 -1
- package/dist/types/focus.d.ts +59 -26
- package/dist/types/focus.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/verify/commit-verdict-pull.d.ts +28 -3
- package/dist/verify/commit-verdict-pull.d.ts.map +1 -1
- package/dist/verify/commit-verdict-pull.js +160 -23
- package/dist/verify/commit-verdict-pull.js.map +1 -1
- package/dist/verify/credit-rearm.d.ts.map +1 -1
- package/dist/verify/credit-rearm.js +72 -17
- package/dist/verify/credit-rearm.js.map +1 -1
- package/dist/verify/default-on-guards.d.ts +54 -8
- package/dist/verify/default-on-guards.d.ts.map +1 -1
- package/dist/verify/default-on-guards.js +132 -17
- package/dist/verify/default-on-guards.js.map +1 -1
- package/dist/verify/explicit-rearm.d.ts.map +1 -1
- package/dist/verify/explicit-rearm.js +1 -0
- package/dist/verify/explicit-rearm.js.map +1 -1
- package/dist/verify/explicit-row-selection.d.ts +47 -0
- package/dist/verify/explicit-row-selection.d.ts.map +1 -0
- package/dist/verify/explicit-row-selection.js +37 -0
- package/dist/verify/explicit-row-selection.js.map +1 -0
- package/dist/verify/gate-run-registry.d.ts.map +1 -1
- package/dist/verify/gate-run-registry.js +2 -0
- package/dist/verify/gate-run-registry.js.map +1 -1
- package/dist/verify/no-own-delta-verdict.d.ts +16 -2
- package/dist/verify/no-own-delta-verdict.d.ts.map +1 -1
- package/dist/verify/no-own-delta-verdict.js +18 -2
- package/dist/verify/no-own-delta-verdict.js.map +1 -1
- package/dist/verify/parked-shortfall-reuse.d.ts +194 -0
- package/dist/verify/parked-shortfall-reuse.d.ts.map +1 -0
- package/dist/verify/parked-shortfall-reuse.js +310 -0
- package/dist/verify/parked-shortfall-reuse.js.map +1 -0
- package/dist/verify/reselection-log.d.ts +22 -0
- package/dist/verify/reselection-log.d.ts.map +1 -0
- package/dist/verify/reselection-log.js +87 -0
- package/dist/verify/reselection-log.js.map +1 -0
- package/dist/verify/shortfall-park.d.ts +8 -1
- package/dist/verify/shortfall-park.d.ts.map +1 -1
- package/dist/verify/shortfall-park.js +17 -3
- package/dist/verify/shortfall-park.js.map +1 -1
- package/dist/verify/shortfall-repeat.d.ts.map +1 -1
- package/dist/verify/shortfall-repeat.js +7 -2
- package/dist/verify/shortfall-repeat.js.map +1 -1
- package/dist/verify/shortfall-rulings.d.ts +93 -6
- package/dist/verify/shortfall-rulings.d.ts.map +1 -1
- package/dist/verify/shortfall-rulings.js +69 -12
- package/dist/verify/shortfall-rulings.js.map +1 -1
- package/dist/verify/stall-detector-config.d.ts.map +1 -1
- package/dist/verify/stall-detector-config.js +2 -1
- package/dist/verify/stall-detector-config.js.map +1 -1
- package/dist/verify/stall-detectors.d.ts +6 -4
- package/dist/verify/stall-detectors.d.ts.map +1 -1
- package/dist/verify/stall-detectors.js +9 -6
- package/dist/verify/stall-detectors.js.map +1 -1
- package/dist/verify/stalled-team-backstop.d.ts +8 -2
- package/dist/verify/stalled-team-backstop.d.ts.map +1 -1
- package/dist/verify/stalled-team-backstop.js +15 -11
- package/dist/verify/stalled-team-backstop.js.map +1 -1
- package/dist/verify/team-stall-reapers.d.ts +28 -0
- package/dist/verify/team-stall-reapers.d.ts.map +1 -0
- package/dist/verify/team-stall-reapers.js +23 -0
- package/dist/verify/team-stall-reapers.js.map +1 -0
- package/dist/verify/verification-attribution-deps.d.ts +1 -1
- package/dist/verify/verification-attribution-deps.d.ts.map +1 -1
- package/dist/verify/verification-attribution-deps.js +20 -1
- package/dist/verify/verification-attribution-deps.js.map +1 -1
- package/dist/verify/verification-boundary-env.d.ts.map +1 -1
- package/dist/verify/verification-boundary-env.js +23 -9
- package/dist/verify/verification-boundary-env.js.map +1 -1
- package/dist/verify/verification-checkout.d.ts +1 -1
- package/dist/verify/verification-checkout.d.ts.map +1 -1
- package/dist/verify/verification-checkout.js.map +1 -1
- package/dist/verify/verification-commit-sharing.d.ts.map +1 -1
- package/dist/verify/verification-commit-sharing.js +14 -3
- package/dist/verify/verification-commit-sharing.js.map +1 -1
- package/dist/verify/verification-config.d.ts.map +1 -1
- package/dist/verify/verification-config.js +1 -20
- package/dist/verify/verification-config.js.map +1 -1
- package/dist/verify/verification-default-on.d.ts +4 -1
- package/dist/verify/verification-default-on.d.ts.map +1 -1
- package/dist/verify/verification-default-on.js +29 -2
- package/dist/verify/verification-default-on.js.map +1 -1
- package/dist/verify/verification-deps-default.d.ts.map +1 -1
- package/dist/verify/verification-deps-default.js +13 -0
- package/dist/verify/verification-deps-default.js.map +1 -1
- package/dist/verify/verification-deps.d.ts +38 -0
- package/dist/verify/verification-deps.d.ts.map +1 -1
- package/dist/verify/verification-deps.js +2 -1
- package/dist/verify/verification-deps.js.map +1 -1
- package/dist/verify/verification-engine.d.ts.map +1 -1
- package/dist/verify/verification-engine.js +44 -15
- package/dist/verify/verification-engine.js.map +1 -1
- package/dist/verify/verification-feedback.d.ts.map +1 -1
- package/dist/verify/verification-feedback.js +1 -19
- package/dist/verify/verification-feedback.js.map +1 -1
- package/dist/verify/verify-restatement.d.ts.map +1 -1
- package/dist/verify/verify-restatement.js +5 -1
- package/dist/verify/verify-restatement.js.map +1 -1
- package/dist/worktree/provision.d.ts.map +1 -1
- package/dist/worktree/provision.js +3 -1
- package/dist/worktree/provision.js.map +1 -1
- package/package.json +2 -2
|
@@ -86,7 +86,14 @@ export interface ShortfallParkClassification {
|
|
|
86
86
|
* rules follow:
|
|
87
87
|
* - the park records it (null keeps the standing park's), so a park re-held by
|
|
88
88
|
* the judgement a ruling re-armed is no longer released by that ruling -- the
|
|
89
|
-
* re-judgement happens once per new ruling, not on every tick
|
|
89
|
+
* re-judgement happens once per new ruling, not on every tick. A SUCCEEDED
|
|
90
|
+
* read of an EMPTY ruling set records '' -- "no ruling was in force", a fact
|
|
91
|
+
* that was KNOWN -- and the field is ABSENT only where the read FAILED (or on
|
|
92
|
+
* a record written before this rule). The two used to be one absence, so a
|
|
93
|
+
* park recorded while the rulings were unreadable could not be told from one
|
|
94
|
+
* recorded under a known-empty set; a reader that must not answer from an
|
|
95
|
+
* unknown history (verify/parked-shortfall-reuse.ts) requires the field to be
|
|
96
|
+
* PRESENT, which only this recorder can make meaningful;
|
|
90
97
|
* - a NEW ruling that disposed of SOME of the parked nodes on an unchanged
|
|
91
98
|
* commit set narrows the park to the rest instead of ending it: those nodes
|
|
92
99
|
* already repeated unchanged, so sending them back to coding would restart the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortfall-park.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-park.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shortfall-park.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-park.ts"],"names":[],"mappings":"AA2DA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAE3B,MAAM,mCAAmC,CAAC;AAO3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAInE;AAED,4GAA4G;AAC5G,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAE1E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,aAAa,GAAG,IAAI,CAEpI;AAED,mEAAmE;AACnE,MAAM,WAAW,yBAAyB;IACxC,qFAAqF;IACrF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAIxG;AAED,0DAA0D;AAC1D,MAAM,WAAW,2BAA2B;IAC1C,mGAAmG;IACnG,MAAM,EAAE,qBAAqB,CAAC;IAC9B,kFAAkF;IAClF,MAAM,EAAE,OAAO,CAAC;IAChB,sGAAsG;IACtG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;CAC5B;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACpD,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,GAAE,MAAoC,EAC3C,GAAG,GAAE,MAAiC,EACtC,kBAAkB,GAAE,MAAM,GAAG,IAAW,GACvC,2BAA2B,CAoC7B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,iBAAiB,CAO7G"}
|
|
@@ -9,10 +9,14 @@
|
|
|
9
9
|
// packages/daemon/src/integration/shortfall-ruling-release.test.ts,
|
|
10
10
|
// packages/daemon/src/prompt/prompt-listing.test.ts,
|
|
11
11
|
// packages/daemon/src/spawn/review-hold-park-shortfall.test.ts,
|
|
12
|
+
// packages/daemon/src/verify/commit-verdict-pull.test.ts,
|
|
12
13
|
// packages/daemon/src/verify/delivery-commit-set.test.ts,
|
|
14
|
+
// packages/daemon/src/verify/explicit-row-selection.test.ts,
|
|
15
|
+
// packages/daemon/src/verify/parked-shortfall-reuse.test.ts,
|
|
13
16
|
// packages/daemon/src/verify/shortfall-park-escalation.test.ts,
|
|
14
17
|
// packages/daemon/src/verify/shortfall-park.test.ts, packages/daemon/src/verify/shortfall-routing.test.ts,
|
|
15
|
-
// packages/daemon/src/verify/shortfall-rulings.test.ts
|
|
18
|
+
// packages/daemon/src/verify/shortfall-rulings.test.ts,
|
|
19
|
+
// packages/daemon/src/verify/verification-default-on.test.ts
|
|
16
20
|
// PINNED-BY-END
|
|
17
21
|
/**
|
|
18
22
|
* The SHORTFALL PARK: a delivery whose identical verify shortfall re-holds on an
|
|
@@ -145,7 +149,14 @@ function narrowedByRuling(standing, shortfalls, rulingsFingerprint) {
|
|
|
145
149
|
* rules follow:
|
|
146
150
|
* - the park records it (null keeps the standing park's), so a park re-held by
|
|
147
151
|
* the judgement a ruling re-armed is no longer released by that ruling -- the
|
|
148
|
-
* re-judgement happens once per new ruling, not on every tick
|
|
152
|
+
* re-judgement happens once per new ruling, not on every tick. A SUCCEEDED
|
|
153
|
+
* read of an EMPTY ruling set records '' -- "no ruling was in force", a fact
|
|
154
|
+
* that was KNOWN -- and the field is ABSENT only where the read FAILED (or on
|
|
155
|
+
* a record written before this rule). The two used to be one absence, so a
|
|
156
|
+
* park recorded while the rulings were unreadable could not be told from one
|
|
157
|
+
* recorded under a known-empty set; a reader that must not answer from an
|
|
158
|
+
* unknown history (verify/parked-shortfall-reuse.ts) requires the field to be
|
|
159
|
+
* PRESENT, which only this recorder can make meaningful;
|
|
149
160
|
* - a NEW ruling that disposed of SOME of the parked nodes on an unchanged
|
|
150
161
|
* commit set narrows the park to the rest instead of ending it: those nodes
|
|
151
162
|
* already repeated unchanged, so sending them back to coding would restart the
|
|
@@ -178,6 +189,9 @@ export function classifyShortfallPark(priorGateState, shortfalls, commitSet, lim
|
|
|
178
189
|
const repeat = { signature, count, ...(knownSet !== null ? { commitSet: knownSet } : {}) };
|
|
179
190
|
if (count < limit)
|
|
180
191
|
return { repeat, parked: false, park: null };
|
|
192
|
+
// PRESENT means KNOWN: '' is a succeeded read of an empty ruling set, and the
|
|
193
|
+
// field is omitted only when this judgement could not read the rulings and no
|
|
194
|
+
// standing park carries a known one.
|
|
181
195
|
const applied = rulingsFingerprint ?? (holding ? standing.rulingsFingerprint : undefined);
|
|
182
196
|
const park = {
|
|
183
197
|
// A re-hold of the same shortfall keeps the standing park's signature text, so
|
|
@@ -187,7 +201,7 @@ export function classifyShortfallPark(priorGateState, shortfalls, commitSet, lim
|
|
|
187
201
|
nodeIds: sortedNodeIds(shortfalls),
|
|
188
202
|
count,
|
|
189
203
|
parkedAt: holding ? standing.parkedAt : now,
|
|
190
|
-
...(applied ? { rulingsFingerprint: applied } : {}),
|
|
204
|
+
...(applied !== undefined ? { rulingsFingerprint: applied } : {}),
|
|
191
205
|
};
|
|
192
206
|
return { repeat, parked: true, park };
|
|
193
207
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortfall-park.js","sourceRoot":"","sources":["../../src/verify/shortfall-park.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+EAA+E;AAC/E,uEAAuE;AACvE,0EAA0E;AAC1E,8DAA8D;AAC9D,6DAA6D;AAC7D,gFAAgF;AAChF,4FAA4F;AAC5F,sEAAsE;AACtE,uDAAuD;AACvD,kEAAkE;AAClE,4DAA4D;AAC5D,kEAAkE;AAClE,6GAA6G;AAC7G,
|
|
1
|
+
{"version":3,"file":"shortfall-park.js","sourceRoot":"","sources":["../../src/verify/shortfall-park.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortfall-repeat.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-repeat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shortfall-repeat.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-repeat.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,yFAAyF;AACzF,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,kIAAkI;IAClI,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,mFAAmF;AACnF,eAAO,MAAM,sCAAsC,IAA8B,CAAC;AAmBlF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAEjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAerE;AAED,oGAAoG;AACpG,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI,CAE5G;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACpD,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,SAAS,GAAE,MAAoC,GAC9C;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAKnD"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
2
|
// Pinned by: packages/daemon/src/integration/verification-history-round-trip.test.ts,
|
|
3
|
-
// packages/daemon/src/verify/
|
|
4
|
-
// packages/daemon/src/verify/
|
|
3
|
+
// packages/daemon/src/verify/commit-verdict-pull.test.ts,
|
|
4
|
+
// packages/daemon/src/verify/explicit-row-selection.test.ts,
|
|
5
|
+
// packages/daemon/src/verify/misattributed-hold.test.ts,
|
|
6
|
+
// packages/daemon/src/verify/parked-shortfall-reuse.test.ts,
|
|
7
|
+
// packages/daemon/src/verify/shortfall-park.test.ts, packages/daemon/src/verify/shortfall-repeat.test.ts,
|
|
8
|
+
// packages/daemon/src/verify/shortfall-routing.test.ts,
|
|
9
|
+
// packages/daemon/src/verify/verification-default-on.test.ts
|
|
5
10
|
// PINNED-BY-END
|
|
6
11
|
/**
|
|
7
12
|
* Shortfall REPETITION discriminator for the verify gate.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortfall-repeat.js","sourceRoot":"","sources":["../../src/verify/shortfall-repeat.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,sFAAsF;AACtF,
|
|
1
|
+
{"version":3,"file":"shortfall-repeat.js","sourceRoot":"","sources":["../../src/verify/shortfall-repeat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Verify honors
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Verify honors SHORTFALL RULINGS: a node ruled MET or EXCUSED on a delivery
|
|
3
|
+
* (queries/shortfall-rulings.ts) no longer holds its verify gate, and a ruling
|
|
4
|
+
* recorded since a shortfall park is a change verify re-judges.
|
|
5
5
|
*
|
|
6
6
|
* Why: before rulings were read, an operator's "these nodes are met, re-verify"
|
|
7
7
|
* lived only in an escalation's resolution notes. The next verify pass re-judged
|
|
@@ -9,6 +9,33 @@
|
|
|
9
9
|
* repeating shortfall (verify/shortfall-park.ts) stayed parked: nothing but a new
|
|
10
10
|
* commit re-armed its verify.
|
|
11
11
|
*
|
|
12
|
+
* TWO SOURCES OF A RULING, one read. The edge (`daemon_get_delivery_shortfall_-
|
|
13
|
+
* rulings`) returns the union of:
|
|
14
|
+
* - an OPERATOR row on `delivery_shortfall_rulings` (`ruledByKind` = the
|
|
15
|
+
* recording credential's kind, `user` / `ai_tracker`), and
|
|
16
|
+
* - a node verdict of the focus's latest APPROVING focus_review
|
|
17
|
+
* (`ruledByKind: 'review'`, `focusReviewId` naming the review row).
|
|
18
|
+
* An OPERATOR ruling on a node WINS -- the edge emits a review verdict only for
|
|
19
|
+
* a node no operator ruled -- so nothing here has to break a tie. A `not_met`
|
|
20
|
+
* verdict rules NOTHING and never reaches this module: a node review called
|
|
21
|
+
* not_met and verify judges short is the two channels AGREEING, and the gate
|
|
22
|
+
* holding it is correct.
|
|
23
|
+
*
|
|
24
|
+
* Why this module treats both identically: the review verdict is the SAME
|
|
25
|
+
* judgement an operator was transcribing by hand. On 2026-09-24 a review excused
|
|
26
|
+
* a node at 01:13Z; verify failed the delivery on that node 41 times over three
|
|
27
|
+
* and a half hours, bouncing it verify -> verify_failed -> coding to iteration 17
|
|
28
|
+
* -- each cycle spawning a coding team with nothing to change -- until a human
|
|
29
|
+
* recorded the ruling the review had already rendered. The only asymmetry kept is
|
|
30
|
+
* in the RECORD: `withRulingEvidence` names which source ruled, so the injection
|
|
31
|
+
* evidence says whether a human recorded it or a review ruled it, and which
|
|
32
|
+
* review.
|
|
33
|
+
*
|
|
34
|
+
* A review-sourced ruling feeds the same FINGERPRINT (its id is
|
|
35
|
+
* `review:<focusReviewId>:<nodeId>` -- stable across re-reads, new per approving
|
|
36
|
+
* review), so `withShortfallRulingRearm` re-judges a park exactly once when a
|
|
37
|
+
* review lands, by the same mechanism a recorded row uses.
|
|
38
|
+
*
|
|
12
39
|
* APPLYING rulings (applyShortfallRulings, called by the verification engine
|
|
13
40
|
* between the reconciliation and the shortfall routing):
|
|
14
41
|
* - MET: the node counts as achieved. It leaves the shortfall set and joins the
|
|
@@ -51,6 +78,52 @@
|
|
|
51
78
|
* the edge nulls, so daemon_get_pending_verifications lists a parked explicit row
|
|
52
79
|
* again every tick and its next dispatch applies the rulings.
|
|
53
80
|
*
|
|
81
|
+
* WHAT ELSE MAY RE-SELECT A PARKED DELIVERY AT AN UNCHANGED HEAD: nothing but a
|
|
82
|
+
* new commit, and this re-arm. That claim stood in this header before it was
|
|
83
|
+
* true. On 2026-09-24 delivery 8ae80225 sat parked at an unchanged focus HEAD and
|
|
84
|
+
* was re-dispatched every ~60s for ~30 ticks: the run-mark prune ran once per
|
|
85
|
+
* PRODUCT over guards keyed by delivery id alone, so a sibling product's scan
|
|
86
|
+
* wiped this one's marks every tick (verify/default-on-guards.ts, which now
|
|
87
|
+
* scopes the prune, carries the incident and the fix). Reading a rule here that
|
|
88
|
+
* the code did not keep is what made the log look impossible rather than merely
|
|
89
|
+
* undiagnosed, so the rule is now pinned from two sides: the prune is scoped, and
|
|
90
|
+
* EVERY path that re-selects a delivery in verify writes one line naming itself
|
|
91
|
+
* (verify/reselection-log.ts, whose exported path union a test enumerates -- this
|
|
92
|
+
* module's re-arm logs 'ruling-rearm'). And the cost of any re-dispatch that does
|
|
93
|
+
* reach a parked delivery is now bounded independently: a dispatch whose park
|
|
94
|
+
* matches the current commit set and rulings fingerprint reuses the parked
|
|
95
|
+
* shortfall and makes NO model call (verify/parked-shortfall-reuse.ts), so a
|
|
96
|
+
* ruling landing here is what re-judges it -- once -- rather than every tick
|
|
97
|
+
* paying a ~28s reconciliation to re-derive a shortfall the park already records.
|
|
98
|
+
*
|
|
99
|
+
* THE CLOSED LIST, stated once and pinned through the real tick composition
|
|
100
|
+
* (verification-default-on.test.ts, commit-verdict-pull.test.ts). Of the eight
|
|
101
|
+
* declared re-selection paths, a parked delivery at an unchanged HEAD is
|
|
102
|
+
* re-selected by exactly two, and both ARE the rule: 'ruling-rearm' (this
|
|
103
|
+
* module -- a new ruling) and a genuinely new commit, which reaches it as
|
|
104
|
+
* 'credit-rearm' (a commit credited to THIS delivery; a sibling's credit does
|
|
105
|
+
* not re-arm it) or as a changed commit set at dispatch. Three paths CANNOT fire
|
|
106
|
+
* on a parked delivery: 'run-mark-prune' (a parked delivery is in verify, and a
|
|
107
|
+
* partial scan prunes nothing), 'run-mark-release' (not a path of its own -- the
|
|
108
|
+
* silent fallback when a caller names itself) and 'pending-relisting' (which
|
|
109
|
+
* drops a parked explicit row, verify/explicit-row-selection.ts, and writes
|
|
110
|
+
* its re-selection line once per dispatch that routes a verdict). The remaining
|
|
111
|
+
* three DECLINE while the park's facts are unchanged, each saying so in its own
|
|
112
|
+
* line: 'checkout-unavailable-unmark', 'model-unavailable-unmark'
|
|
113
|
+
* (verify/default-on-guards.ts noteDefaultOnResult) and 'commit-verdict-pull'
|
|
114
|
+
* (verify/commit-verdict-pull.ts).
|
|
115
|
+
*
|
|
116
|
+
* NONE OF THE THREE CAN WEDGE, and each reason is a STATE, not an exemption. A
|
|
117
|
+
* model-unavailable hold that landed on gate_state refuses the park
|
|
118
|
+
* ('awaiting-model'), so the retry proceeds; the decline fires only where a real
|
|
119
|
+
* judgement on these same facts still stands. The pull declines only where this
|
|
120
|
+
* process judged the held commit itself AND the release pass's own read finds
|
|
121
|
+
* that commit's verdict 'passed' -- a park is written only after the gate passed
|
|
122
|
+
* there, but the record write is best-effort, so the park alone does not prove
|
|
123
|
+
* the verdict persisted -- and a commit it already pulled for is pulled again
|
|
124
|
+
* while that read stays 'pending' (verify/commit-verdict-pull.ts). And every
|
|
125
|
+
* UNKNOWN fact re-selects.
|
|
126
|
+
*
|
|
54
127
|
* @module verify/shortfall-rulings
|
|
55
128
|
*/
|
|
56
129
|
import type { getFocusDeliveries } from '../queries/focuses.js';
|
|
@@ -59,8 +132,12 @@ import type { PendingVerification } from '../queries/verification.js';
|
|
|
59
132
|
import type { TargetRestatement, TargetShortfall } from './verify-restatement.js';
|
|
60
133
|
/** Read a delivery's active shortfall rulings (queries/shortfall-rulings.ts getDeliveryShortfallRulings). */
|
|
61
134
|
export type ShortfallRulingsReader = (deliveryId: string) => Promise<DeliveryShortfallRulings>;
|
|
62
|
-
/**
|
|
63
|
-
|
|
135
|
+
/**
|
|
136
|
+
* A ruling that cleared one of this judgement's shortfalls, carrying WHO ruled:
|
|
137
|
+
* a reader of the injection evidence or the log must be able to tell an operator
|
|
138
|
+
* row from a review verdict without a second query.
|
|
139
|
+
*/
|
|
140
|
+
export type HonoredRuling = Pick<ShortfallRuling, 'nodeId' | 'verdict' | 'rationale' | 'ruledByKind' | 'ruledSessionId' | 'focusReviewId'>;
|
|
64
141
|
/** A reconciliation with the delivery's rulings applied. */
|
|
65
142
|
export interface RuledReconciliation {
|
|
66
143
|
restatements: TargetRestatement[];
|
|
@@ -81,7 +158,17 @@ export declare function applyShortfallRulings(v: Pick<PendingVerification, 'deli
|
|
|
81
158
|
restatements: readonly TargetRestatement[];
|
|
82
159
|
shortfalls: readonly TargetShortfall[];
|
|
83
160
|
}, read: ShortfallRulingsReader | undefined): Promise<RuledReconciliation>;
|
|
84
|
-
/**
|
|
161
|
+
/**
|
|
162
|
+
* The injection evidence with the honored rulings appended, each NAMING ITS
|
|
163
|
+
* SOURCE -- an operator row by the credential kind that recorded it, a review
|
|
164
|
+
* verdict by the focus_review that ruled and the session that rendered it.
|
|
165
|
+
* Unchanged when none were honored. Pure.
|
|
166
|
+
*
|
|
167
|
+
* Why the source is in the evidence: this note is the only durable place a
|
|
168
|
+
* `match` carried by a ruling can state its reason (the injection edge persists a
|
|
169
|
+
* reason only on a legitimate_divergence), so "who lowered the bar on this node"
|
|
170
|
+
* has to be legible there or it is legible nowhere.
|
|
171
|
+
*/
|
|
85
172
|
export declare function withRulingEvidence(evidence: string, honored: readonly HonoredRuling[]): string;
|
|
86
173
|
/** The delivery fields the re-arm reads. */
|
|
87
174
|
type ParkedCandidate = Pick<Awaited<ReturnType<typeof getFocusDeliveries>>[number], 'id' | 'name' | 'executionStatus' | 'gateState' | 'verificationMethod'>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortfall-rulings.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-rulings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shortfall-rulings.d.ts","sourceRoot":"","sources":["../../src/verify/shortfall-rulings.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+HG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AASlF,6GAA6G;AAC7G,MAAM,MAAM,sBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAE/F;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,eAAe,EACf,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,gBAAgB,GAAG,eAAe,CACxF,CAAC;AAOF,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,mEAAmE;IACnE,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,iHAAiH;IACjH,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iGAAiG;IACjG,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iEAAiE;IACjE,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,cAAc,CAAC,EAC3D,UAAU,EAAE;IAAE,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAA;CAAE,EAClG,IAAI,EAAE,sBAAsB,GAAG,SAAS,GACvC,OAAO,CAAC,mBAAmB,CAAC,CAuD9B;AASD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,CAK9F;AAMD,4CAA4C;AAC5C,KAAK,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,iBAAiB,GAAG,WAAW,GAAG,oBAAoB,CAAC,CAAC;AAoB5J;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CA2BnB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS;IAAE,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAAC,oBAAoB,CAAC,EAAE,sBAAsB,CAAA;CAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAS/J;AAED,wDAAwD;AACxD,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D"}
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
2
|
// Pinned by: packages/daemon/src/integration/held-route-pull-dispatch.test.ts,
|
|
3
|
+
// packages/daemon/src/integration/review-verdict-ruling-release.test.ts,
|
|
3
4
|
// packages/daemon/src/integration/shortfall-ruling-disposes-proposals-regression.test.ts,
|
|
4
5
|
// packages/daemon/src/integration/shortfall-ruling-release.test.ts,
|
|
5
|
-
// packages/daemon/src/verify/shortfall-rulings.test.ts
|
|
6
|
+
// packages/daemon/src/verify/reselection-log.test.ts, packages/daemon/src/verify/shortfall-rulings.test.ts,
|
|
7
|
+
// packages/daemon/src/verify/verification-default-on.test.ts
|
|
6
8
|
// PINNED-BY-END
|
|
7
9
|
import { isShortfallParkReleased, shortfallParkRefusingRework } from './shortfall-park.js';
|
|
8
10
|
import { releaseDefaultOnMark } from './default-on-guards.js';
|
|
11
|
+
import { logReselection } from './reselection-log.js';
|
|
9
12
|
import { isGateRunSelected } from './gate-run-registry.js';
|
|
10
13
|
import { createLogger } from '../shell/log.js';
|
|
11
14
|
const log = createLogger({ module: 'verification' });
|
|
15
|
+
/** Is this ruling a review verdict rather than a recorded operator row? */
|
|
16
|
+
function isReviewSourced(h) {
|
|
17
|
+
return h.ruledByKind === 'review' || (typeof h.focusReviewId === 'string' && h.focusReviewId !== '');
|
|
18
|
+
}
|
|
12
19
|
/**
|
|
13
20
|
* Apply the delivery's active rulings to this judgement's reconciliation (see the
|
|
14
21
|
* module header). Never throws: a failed read applies nothing.
|
|
@@ -40,7 +47,14 @@ export async function applyShortfallRulings(v, reconciled, read) {
|
|
|
40
47
|
ruled.shortfalls.push(s);
|
|
41
48
|
continue;
|
|
42
49
|
}
|
|
43
|
-
ruled.honored.push({
|
|
50
|
+
ruled.honored.push({
|
|
51
|
+
nodeId: s.nodeId,
|
|
52
|
+
verdict: ruling.verdict,
|
|
53
|
+
rationale: ruling.rationale,
|
|
54
|
+
ruledByKind: ruling.ruledByKind,
|
|
55
|
+
ruledSessionId: ruling.ruledSessionId,
|
|
56
|
+
focusReviewId: ruling.focusReviewId ?? null,
|
|
57
|
+
});
|
|
44
58
|
if (ruling.verdict === 'met') {
|
|
45
59
|
ruled.restatements.push({ nodeId: s.nodeId, statement: s.declaredStatement, classification: 'match', originalClaim: s.declaredStatement });
|
|
46
60
|
}
|
|
@@ -49,22 +63,62 @@ export async function applyShortfallRulings(v, reconciled, read) {
|
|
|
49
63
|
}
|
|
50
64
|
}
|
|
51
65
|
if (ruled.honored.length > 0) {
|
|
52
|
-
|
|
53
|
-
|
|
66
|
+
const reviewCount = ruled.honored.filter(isReviewSourced).length;
|
|
67
|
+
const sources = reviewCount === 0
|
|
68
|
+
? 'operator rulings'
|
|
69
|
+
: reviewCount === ruled.honored.length
|
|
70
|
+
? 'approving-review verdicts'
|
|
71
|
+
: `rulings (${ruled.honored.length - reviewCount} operator, ${reviewCount} review-sourced)`;
|
|
72
|
+
log.info(`[verification] delivery "${v.deliveryName}" (${v.deliveryId}): ${sources} cleared ${ruled.honored.length} `
|
|
73
|
+
+ `shortfall node(s) -- ${ruled.honored.map((h) => `${h.nodeId} ${h.verdict} (${rulingSourceLabel(h)})`).join(', ')}; `
|
|
54
74
|
+ `${ruled.shortfalls.length} shortfall(s) still hold`);
|
|
55
75
|
}
|
|
56
76
|
return ruled;
|
|
57
77
|
}
|
|
58
|
-
/**
|
|
78
|
+
/** How one honored ruling names its source, in a log line or a line of evidence. */
|
|
79
|
+
function rulingSourceLabel(h) {
|
|
80
|
+
if (!isReviewSourced(h))
|
|
81
|
+
return `operator ruling, ${h.ruledByKind}`;
|
|
82
|
+
const session = h.ruledSessionId !== null ? `, review session ${h.ruledSessionId}` : '';
|
|
83
|
+
return `approving review ${h.focusReviewId ?? 'unknown'}${session}`;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The injection evidence with the honored rulings appended, each NAMING ITS
|
|
87
|
+
* SOURCE -- an operator row by the credential kind that recorded it, a review
|
|
88
|
+
* verdict by the focus_review that ruled and the session that rendered it.
|
|
89
|
+
* Unchanged when none were honored. Pure.
|
|
90
|
+
*
|
|
91
|
+
* Why the source is in the evidence: this note is the only durable place a
|
|
92
|
+
* `match` carried by a ruling can state its reason (the injection edge persists a
|
|
93
|
+
* reason only on a legitimate_divergence), so "who lowered the bar on this node"
|
|
94
|
+
* has to be legible there or it is legible nowhere.
|
|
95
|
+
*/
|
|
59
96
|
export function withRulingEvidence(evidence, honored) {
|
|
60
97
|
if (honored.length === 0)
|
|
61
98
|
return evidence;
|
|
62
|
-
const lines = honored.map((h) => `- node ${h.nodeId} ruled ${h.verdict}: ${h.rationale}`);
|
|
63
|
-
const note = `
|
|
99
|
+
const lines = honored.map((h) => `- node ${h.nodeId} ruled ${h.verdict} by ${rulingSourceLabel(h)}: ${h.rationale}`);
|
|
100
|
+
const note = `Shortfall rulings honored:\n${lines.join('\n')}`;
|
|
64
101
|
return evidence.trim() === '' ? note : `${evidence}\n${note}`;
|
|
65
102
|
}
|
|
66
103
|
/** The rulings fingerprint each delivery was last re-armed on in this process. */
|
|
67
104
|
const rearmedOn = new Map();
|
|
105
|
+
/**
|
|
106
|
+
* What CHANGED, worded by what the reader actually knows. The re-arm decides on a
|
|
107
|
+
* fingerprint, which says only "the ruling set differs"; it must not claim "an
|
|
108
|
+
* operator ruling was recorded" when the change was a review verdict landing, or
|
|
109
|
+
* a revocation removing one. So the wording is derived from the rulings the read
|
|
110
|
+
* returned, and says the neutral thing when they name nothing.
|
|
111
|
+
*/
|
|
112
|
+
function describeRulingSources(rulings) {
|
|
113
|
+
if (rulings.length === 0)
|
|
114
|
+
return 'the rulings on it changed';
|
|
115
|
+
const review = rulings.filter((r) => r.ruledByKind === 'review').length;
|
|
116
|
+
if (review === 0)
|
|
117
|
+
return 'an operator ruling was recorded';
|
|
118
|
+
if (review === rulings.length)
|
|
119
|
+
return "an approving review's verdict ruled its nodes";
|
|
120
|
+
return 'an operator ruling and an approving review verdict are in force';
|
|
121
|
+
}
|
|
68
122
|
/**
|
|
69
123
|
* For each delivery in verify carrying a shortfall park, drop its default-on run
|
|
70
124
|
* mark when its rulings release the park and it was not already re-armed on that
|
|
@@ -78,21 +132,24 @@ export async function rearmRuledShortfallParks(deliveries, read) {
|
|
|
78
132
|
continue;
|
|
79
133
|
if (isGateRunSelected(d.id))
|
|
80
134
|
continue;
|
|
81
|
-
let
|
|
135
|
+
let read_;
|
|
82
136
|
try {
|
|
83
|
-
|
|
137
|
+
read_ = await read(d.id);
|
|
84
138
|
}
|
|
85
139
|
catch (err) {
|
|
86
140
|
log.warn(`[verification] shortfall rulings for parked delivery "${d.name}" (${d.id}) could not be read -- its park is not re-judged this tick: ${err.message}`);
|
|
87
141
|
continue;
|
|
88
142
|
}
|
|
143
|
+
const fingerprint = read_.fingerprint;
|
|
89
144
|
if (!isShortfallParkReleased(park, { commitSet: null, rulingsFingerprint: fingerprint }) || rearmedOn.get(d.id) === fingerprint)
|
|
90
145
|
continue;
|
|
91
146
|
rearmedOn.set(d.id, fingerprint);
|
|
92
|
-
releaseDefaultOnMark
|
|
147
|
+
// Named path, so releaseDefaultOnMark stays silent and this richer line
|
|
148
|
+
// stands alone (verify/reselection-log.ts: one line per re-selection).
|
|
149
|
+
releaseDefaultOnMark(d.id, 'ruling-rearm');
|
|
93
150
|
rearmed.push(d.id);
|
|
94
|
-
|
|
95
|
-
+
|
|
151
|
+
logReselection('ruling-rearm', d.id, `parked delivery "${d.name}" re-armed at the unchanged focus HEAD -- `
|
|
152
|
+
+ `${describeRulingSources(read_.rulings)} since its park (nodes ${park.nodeIds.join(', ')}); verify re-judges it`);
|
|
96
153
|
}
|
|
97
154
|
return rearmed;
|
|
98
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortfall-rulings.js","sourceRoot":"","sources":["../../src/verify/shortfall-rulings.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+EAA+E;AAC/E,4FAA4F;AAC5F,sEAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"shortfall-rulings.js","sourceRoot":"","sources":["../../src/verify/shortfall-rulings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stall-detector-config.d.ts","sourceRoot":"","sources":["../../src/verify/stall-detector-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stall-detector-config.d.ts","sourceRoot":"","sources":["../../src/verify/stall-detector-config.ts"],"names":[],"mappings":"AAoCA,uEAAuE;AACvE,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wFAAwF;AACxF,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AASD,wEAAwE;AACxE,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,kFAAkF;AAClF,wBAAgB,kCAAkC,IAAI,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,IAAI,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,qCAAqC,IAAI,MAAM,CAE9D;AAED,yFAAyF;AACzF,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,4FAA4F;AAC5F,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iCAAiC,IAAI,MAAM,CAE1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAElD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
-
// Pinned by: packages/daemon/src/
|
|
2
|
+
// Pinned by: packages/daemon/src/completion/stall-guard-time-floor.test.ts,
|
|
3
|
+
// packages/daemon/src/focus/listener-auto-advance-teamless-wedge.test.ts
|
|
3
4
|
// PINNED-BY-END
|
|
4
5
|
/**
|
|
5
6
|
* Single in-daemon source for the stall-detector thresholds.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stall-detector-config.js","sourceRoot":"","sources":["../../src/verify/stall-detector-config.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,
|
|
1
|
+
{"version":3,"file":"stall-detector-config.js","sourceRoot":"","sources":["../../src/verify/stall-detector-config.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,4EAA4E;AAC5E,2EAA2E;AAC3E,gBAAgB;AAEhB;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,SAAS,aAAa,CAAC,GAAuB,EAAE,QAAgB;IAC9D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpD,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,sBAAsB;IACpC,OAAO,aAAa,EAAE,CAAC,kCAAkC,CAAC;AAC5D,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,6BAA6B;IAC3C,OAAO,aAAa,EAAE,CAAC,gCAAgC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,aAAa,EAAE,CAAC,uBAAuB,CAAC;AACjD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,yBAAyB;IACvC,OAAO,aAAa,EAAE,CAAC,4BAA4B,CAAC;AACtD,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,2BAA2B;AAE3B,wEAAwE;AACxE,MAAM,UAAU,uBAAuB;IACrC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,kCAAkC;IAChD,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mCAAmC;IACjD,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qCAAqC;IACnD,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,2BAA2B;IACzC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,2BAA2B;IACzC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iCAAiC;IAC/C,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -199,10 +199,12 @@ export declare function decideReviewWindowClose(reviewRequestedAt: string | null
|
|
|
199
199
|
export declare function checkReviewWindowStaleForFocus(ctx: FocusStallContext, reviewRequestedAt: string | null, deps?: ReviewWindowDeps): Promise<void>;
|
|
200
200
|
export interface IdleTeamStallDeps {
|
|
201
201
|
/**
|
|
202
|
-
*
|
|
203
|
-
*
|
|
202
|
+
* When the team last showed progress by the ONE progress measure -- its last
|
|
203
|
+
* agent event, or the last measured movement of its diff, HEAD, issues or
|
|
204
|
+
* delivery statuses (completion/team-stillness.ts) -- or null when nothing has
|
|
205
|
+
* been recorded yet (a team still initializing before its first agent event).
|
|
204
206
|
*/
|
|
205
|
-
|
|
207
|
+
getLastProgressAt: (focusId: string) => number | null;
|
|
206
208
|
/**
|
|
207
209
|
* True when the focus has a live team ELIGIBLE for idle recovery: it exists in
|
|
208
210
|
* activeTeams and is in the `executing` phase. A team already tearing down
|
|
@@ -251,7 +253,7 @@ export declare function isTeamIdleStalled(lastActivityMs: number | null, nowMs:
|
|
|
251
253
|
* team is never recovered: its clock keeps advancing, so its idle age stays
|
|
252
254
|
* under the threshold.
|
|
253
255
|
*/
|
|
254
|
-
export declare function checkIdleTeamStallForFocus(ctx: FocusStallContext,
|
|
256
|
+
export declare function checkIdleTeamStallForFocus(ctx: FocusStallContext, overrides?: Partial<IdleTeamStallDeps>): void;
|
|
255
257
|
/**
|
|
256
258
|
* Grace after a terminal-error outcome (or after a tracked team's PID vanishes)
|
|
257
259
|
* before the outcome backstop recovers it. Deliberately MINUTES, not the hours
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stall-detectors.d.ts","sourceRoot":"","sources":["../../src/verify/stall-detectors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stall-detectors.d.ts","sourceRoot":"","sources":["../../src/verify/stall-detectors.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
// packages/daemon/src/verify/stall-detectors-clock-wiring.test.ts,
|
|
8
8
|
// packages/daemon/src/verify/stall-detectors.test.ts,
|
|
9
9
|
// packages/daemon/src/verify/team-outcome-stall-detector.test.ts,
|
|
10
|
+
// packages/daemon/src/verify/team-stall-reapers.test.ts,
|
|
10
11
|
// packages/daemon/src/verify/unreviewed-settle-detector.test.ts
|
|
11
12
|
// PINNED-BY-END
|
|
12
13
|
import { ESCALATION_REASONS, ESCALATION_DISPOSITIONS, withRetry, } from '@telora/daemon-core';
|
|
@@ -15,6 +16,7 @@ import { deliveryGuardCauseKey } from '../queries/cause-key.js';
|
|
|
15
16
|
import { NO_HUMAN_ACT } from '../queries/filing-observation.js';
|
|
16
17
|
import { getActiveTeams, terminateTeam } from '../focus/focus-executor.js';
|
|
17
18
|
import { getTeamLastActivityAt, getTeamErrorResultAt, getTeamLeadPid } from '../focus/focus-team-state.js';
|
|
19
|
+
import { readTeamLastProgressAt } from '../completion/team-stillness.js';
|
|
18
20
|
import { isProcessAlive } from '../spawn/liveness.js';
|
|
19
21
|
import { clearReviewRequestedAt } from '../queries/focuses.js';
|
|
20
22
|
import { buildVerifyGateStallEscalation, decideVerifyGateStall, VERIFY_GATE_STALL_REPEAT_THRESHOLD, } from './verify-gate-stall.js';
|
|
@@ -268,7 +270,7 @@ export function isTeamRecoverable(focusId) {
|
|
|
268
270
|
return team !== undefined && team.phase === 'executing';
|
|
269
271
|
}
|
|
270
272
|
const defaultIdleTeamStallDeps = {
|
|
271
|
-
|
|
273
|
+
getLastProgressAt: readTeamLastProgressAt,
|
|
272
274
|
isTeamRecoverable,
|
|
273
275
|
recoverTeam: (focusId) => terminateTeam(focusId, 'teardown'),
|
|
274
276
|
now: () => Date.now(),
|
|
@@ -301,20 +303,21 @@ export function isTeamIdleStalled(lastActivityMs, nowMs, thresholdMs) {
|
|
|
301
303
|
* team is never recovered: its clock keeps advancing, so its idle age stays
|
|
302
304
|
* under the threshold.
|
|
303
305
|
*/
|
|
304
|
-
export function checkIdleTeamStallForFocus(ctx,
|
|
306
|
+
export function checkIdleTeamStallForFocus(ctx, overrides = {}) {
|
|
307
|
+
const deps = { ...defaultIdleTeamStallDeps, ...overrides };
|
|
305
308
|
if (!deps.isTeamRecoverable(ctx.focusId))
|
|
306
309
|
return;
|
|
307
310
|
const thresholdHours = deps.thresholdHours ?? resolveIdleTeamStallHours();
|
|
308
311
|
const thresholdMs = thresholdHours * 3_600_000;
|
|
309
312
|
const nowMs = (deps.now ?? Date.now)();
|
|
310
|
-
const
|
|
311
|
-
if (!isTeamIdleStalled(
|
|
313
|
+
const lastProgressMs = deps.getLastProgressAt(ctx.focusId);
|
|
314
|
+
if (!isTeamIdleStalled(lastProgressMs, nowMs, thresholdMs))
|
|
312
315
|
return;
|
|
313
|
-
const idleHours = Math.floor((nowMs -
|
|
316
|
+
const idleHours = Math.floor((nowMs - lastProgressMs) / 3_600_000);
|
|
314
317
|
const recovered = deps.recoverTeam(ctx.focusId);
|
|
315
318
|
if (recovered) {
|
|
316
319
|
log.info(`[stall-detectors] Recovered idle-stalled team for focus "${ctx.focusName}" ` +
|
|
317
|
-
`(no agent event for ~${idleHours}h > ${thresholdHours}h): terminated so merge-back, ` +
|
|
320
|
+
`(no agent event and no diff/HEAD/issue/status movement for ~${idleHours}h > ${thresholdHours}h): terminated so merge-back, ` +
|
|
318
321
|
`slot release, and delivery re-gating resume with no human action.`);
|
|
319
322
|
}
|
|
320
323
|
else {
|