@telora/daemon 0.24.17 → 0.24.26
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 +12 -3
- package/dist/audit/audit-prompt.d.ts.map +1 -1
- package/dist/audit/audit-prompt.js +15 -0
- package/dist/audit/audit-prompt.js.map +1 -1
- package/dist/ci/candidate-failure-record.d.ts +104 -0
- package/dist/ci/candidate-failure-record.d.ts.map +1 -0
- package/dist/ci/candidate-failure-record.js +135 -0
- package/dist/ci/candidate-failure-record.js.map +1 -0
- package/dist/ci/candidate-ref.d.ts.map +1 -1
- package/dist/ci/candidate-ref.js +10 -3
- package/dist/ci/candidate-ref.js.map +1 -1
- package/dist/ci/ci-status-git.d.ts.map +1 -1
- package/dist/ci/ci-status-git.js +1 -0
- package/dist/ci/ci-status-git.js.map +1 -1
- package/dist/ci/ci-status.d.ts.map +1 -1
- package/dist/ci/ci-status.js +1 -0
- package/dist/ci/ci-status.js.map +1 -1
- package/dist/ci/gate-ref.d.ts +10 -1
- package/dist/ci/gate-ref.d.ts.map +1 -1
- package/dist/ci/gate-ref.js +11 -4
- package/dist/ci/gate-ref.js.map +1 -1
- package/dist/ci/product-ci-repo.d.ts.map +1 -1
- package/dist/ci/product-ci-repo.js +3 -2
- package/dist/ci/product-ci-repo.js.map +1 -1
- package/dist/completion/completion-event/event.d.ts +4 -3
- package/dist/completion/completion-event/event.d.ts.map +1 -1
- package/dist/completion/completion-event/event.js.map +1 -1
- package/dist/completion/review-cycle-budget/review-cycle-cap.d.ts +19 -11
- package/dist/completion/review-cycle-budget/review-cycle-cap.d.ts.map +1 -1
- package/dist/completion/review-cycle-budget/review-cycle-cap.js +36 -36
- package/dist/completion/review-cycle-budget/review-cycle-cap.js.map +1 -1
- package/dist/completion/review-cycle-budget/review-loop-detection.d.ts +101 -0
- package/dist/completion/review-cycle-budget/review-loop-detection.d.ts.map +1 -0
- package/dist/completion/review-cycle-budget/review-loop-detection.js +105 -0
- package/dist/completion/review-cycle-budget/review-loop-detection.js.map +1 -0
- package/dist/completion/review-cycle-budget/spent-budget-release.d.ts +70 -0
- package/dist/completion/review-cycle-budget/spent-budget-release.d.ts.map +1 -0
- package/dist/completion/review-cycle-budget/spent-budget-release.js +98 -0
- package/dist/completion/review-cycle-budget/spent-budget-release.js.map +1 -0
- package/dist/completion/review-exit/review-defect-detector.d.ts +71 -49
- package/dist/completion/review-exit/review-defect-detector.d.ts.map +1 -1
- package/dist/completion/review-exit/review-defect-detector.js +75 -69
- package/dist/completion/review-exit/review-defect-detector.js.map +1 -1
- package/dist/completion/review-exit/review-exit-attribution.d.ts +1 -1
- package/dist/completion/review-exit/review-exit-attribution.js +1 -1
- package/dist/completion/review-exit/review-exit-deps.d.ts +5 -2
- package/dist/completion/review-exit/review-exit-deps.d.ts.map +1 -1
- package/dist/completion/review-exit/review-exit-deps.js +1 -1
- package/dist/completion/review-exit/review-exit-evidence.d.ts +10 -1
- package/dist/completion/review-exit/review-exit-evidence.d.ts.map +1 -1
- package/dist/completion/review-exit/review-exit-evidence.js +17 -14
- package/dist/completion/review-exit/review-exit-evidence.js.map +1 -1
- package/dist/completion/review-exit/review-exit-foreign-findings.d.ts +1 -1
- package/dist/completion/review-exit/review-exit-foreign-findings.d.ts.map +1 -1
- package/dist/completion/review-exit/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit/review-exit-phase.js +12 -8
- package/dist/completion/review-exit/review-exit-phase.js.map +1 -1
- package/dist/completion/state-cascade/review-next-step.d.ts +12 -3
- package/dist/completion/state-cascade/review-next-step.d.ts.map +1 -1
- package/dist/completion/state-cascade/review-next-step.js +10 -1
- package/dist/completion/state-cascade/review-next-step.js.map +1 -1
- package/dist/completion/state-cascade/standing-approval-convergence.d.ts +1 -1
- package/dist/completion/state-cascade/standing-approval-convergence.d.ts.map +1 -1
- package/dist/completion/state-cascade/standing-approval-convergence.js +10 -4
- package/dist/completion/state-cascade/standing-approval-convergence.js.map +1 -1
- package/dist/completion/state-cascade/state-cascade.d.ts +3 -0
- package/dist/completion/state-cascade/state-cascade.d.ts.map +1 -1
- package/dist/completion/state-cascade/state-cascade.js +16 -1
- package/dist/completion/state-cascade/state-cascade.js.map +1 -1
- package/dist/completion/team-exit/status-advance-phase.d.ts +1 -1
- package/dist/completion/team-exit/status-advance-phase.d.ts.map +1 -1
- package/dist/completion/team-exit/status-advance-phase.js +6 -4
- package/dist/completion/team-exit/status-advance-phase.js.map +1 -1
- package/dist/completion/team-outcome/apply-turn.d.ts.map +1 -1
- package/dist/completion/team-outcome/apply-turn.js +9 -4
- package/dist/completion/team-outcome/apply-turn.js.map +1 -1
- package/dist/completion/team-outcome/decide-turn-entry-rows.d.ts.map +1 -1
- package/dist/completion/team-outcome/decide-turn-entry-rows.js +28 -3
- package/dist/completion/team-outcome/decide-turn-entry-rows.js.map +1 -1
- package/dist/completion/team-outcome/decide.d.ts.map +1 -1
- package/dist/completion/team-outcome/decide.js +1 -0
- package/dist/completion/team-outcome/decide.js.map +1 -1
- package/dist/completion/team-outcome/exit-limits.d.ts +6 -0
- package/dist/completion/team-outcome/exit-limits.d.ts.map +1 -1
- package/dist/completion/team-outcome/exit-limits.js +6 -0
- package/dist/completion/team-outcome/exit-limits.js.map +1 -1
- package/dist/completion/team-outcome/exit-pipeline-state.d.ts +5 -0
- package/dist/completion/team-outcome/exit-pipeline-state.d.ts.map +1 -1
- package/dist/completion/team-outcome/exit-pipeline-state.js.map +1 -1
- package/dist/completion/team-teardown/session-hold-bounds.d.ts +10 -1
- package/dist/completion/team-teardown/session-hold-bounds.d.ts.map +1 -1
- package/dist/completion/team-teardown/session-hold-bounds.js +11 -0
- package/dist/completion/team-teardown/session-hold-bounds.js.map +1 -1
- package/dist/completion/team-teardown/session-hold.d.ts.map +1 -1
- package/dist/completion/team-teardown/session-hold.js +2 -0
- package/dist/completion/team-teardown/session-hold.js.map +1 -1
- package/dist/composition/engine-start-context.d.ts.map +1 -1
- package/dist/composition/engine-start-context.js +9 -1
- package/dist/composition/engine-start-context.js.map +1 -1
- package/dist/composition/execution-merge-context.d.ts +13 -0
- package/dist/composition/execution-merge-context.d.ts.map +1 -1
- package/dist/composition/execution-merge-context.js +76 -3
- package/dist/composition/execution-merge-context.js.map +1 -1
- package/dist/composition/execution-spawn-context.d.ts.map +1 -1
- package/dist/composition/execution-spawn-context.js +2 -0
- package/dist/composition/execution-spawn-context.js.map +1 -1
- package/dist/composition/focus-activity-live-sources.d.ts.map +1 -1
- package/dist/composition/focus-activity-live-sources.js +1 -0
- package/dist/composition/focus-activity-live-sources.js.map +1 -1
- package/dist/composition/judgement-contexts.d.ts.map +1 -1
- package/dist/composition/judgement-contexts.js +8 -2
- package/dist/composition/judgement-contexts.js.map +1 -1
- package/dist/composition/review-exit-context.d.ts.map +1 -1
- package/dist/composition/review-exit-context.js +2 -0
- package/dist/composition/review-exit-context.js.map +1 -1
- package/dist/composition/review-loop-context.d.ts +28 -0
- package/dist/composition/review-loop-context.d.ts.map +1 -0
- package/dist/composition/review-loop-context.js +147 -0
- package/dist/composition/review-loop-context.js.map +1 -0
- package/dist/composition/runtime-heartbeat-context.d.ts +11 -0
- package/dist/composition/runtime-heartbeat-context.d.ts.map +1 -1
- package/dist/composition/runtime-heartbeat-context.js +33 -2
- package/dist/composition/runtime-heartbeat-context.js.map +1 -1
- package/dist/composition/spawn-pass-deps.d.ts.map +1 -1
- package/dist/composition/spawn-pass-deps.js +3 -0
- package/dist/composition/spawn-pass-deps.js.map +1 -1
- package/dist/composition/state-cascade-context.d.ts.map +1 -1
- package/dist/composition/state-cascade-context.js +3 -1
- package/dist/composition/state-cascade-context.js.map +1 -1
- package/dist/composition/team-liveness-phase-sources.d.ts.map +1 -1
- package/dist/composition/team-liveness-phase-sources.js +1 -0
- package/dist/composition/team-liveness-phase-sources.js.map +1 -1
- package/dist/composition/tower-escalation-context.d.ts +12 -0
- package/dist/composition/tower-escalation-context.d.ts.map +1 -0
- package/dist/composition/tower-escalation-context.js +109 -0
- package/dist/composition/tower-escalation-context.js.map +1 -0
- package/dist/composition/verification-context.d.ts.map +1 -1
- package/dist/composition/verification-context.js +34 -4
- package/dist/composition/verification-context.js.map +1 -1
- package/dist/composition/workstation-intervals-context.d.ts +3 -0
- package/dist/composition/workstation-intervals-context.d.ts.map +1 -0
- package/dist/composition/workstation-intervals-context.js +33 -0
- package/dist/composition/workstation-intervals-context.js.map +1 -0
- package/dist/daemon-state/awaiting-slot.d.ts +18 -1
- package/dist/daemon-state/awaiting-slot.d.ts.map +1 -1
- package/dist/daemon-state/awaiting-slot.js +7 -0
- package/dist/daemon-state/awaiting-slot.js.map +1 -1
- package/dist/delivery/delivery-reconciler.d.ts +7 -7
- package/dist/delivery/recorded-concerns.d.ts +63 -28
- package/dist/delivery/recorded-concerns.d.ts.map +1 -1
- package/dist/delivery/recorded-concerns.js +72 -28
- package/dist/delivery/recorded-concerns.js.map +1 -1
- package/dist/directive/directive-queue.d.ts +8 -0
- package/dist/directive/directive-queue.d.ts.map +1 -1
- package/dist/directive/directive-queue.js +1 -1
- package/dist/directive/directive-queue.js.map +1 -1
- package/dist/focus/control-state.d.ts +6 -4
- package/dist/focus/control-state.d.ts.map +1 -1
- package/dist/focus/control-state.js +6 -4
- package/dist/focus/control-state.js.map +1 -1
- package/dist/focus/daemon-contexts-judgement.d.ts +6 -0
- package/dist/focus/daemon-contexts-judgement.d.ts.map +1 -1
- package/dist/focus/daemon-contexts.d.ts +6 -0
- package/dist/focus/daemon-contexts.d.ts.map +1 -1
- package/dist/focus/daemon-contexts.js.map +1 -1
- package/dist/focus/focus-engine.d.ts.map +1 -1
- package/dist/focus/focus-engine.js +3 -1
- package/dist/focus/focus-engine.js.map +1 -1
- package/dist/focus/focus-executor.d.ts.map +1 -1
- package/dist/focus/focus-executor.js +3 -2
- package/dist/focus/focus-executor.js.map +1 -1
- package/dist/focus/focus-loop-registry.d.ts.map +1 -1
- package/dist/focus/focus-loop-registry.js +42 -0
- package/dist/focus/focus-loop-registry.js.map +1 -1
- package/dist/focus/focus-poller-auto-advance.d.ts +4 -2
- package/dist/focus/focus-poller-auto-advance.d.ts.map +1 -1
- package/dist/focus/focus-poller-auto-advance.js +24 -18
- package/dist/focus/focus-poller-auto-advance.js.map +1 -1
- package/dist/focus/focus-poller-spawn.d.ts.map +1 -1
- package/dist/focus/focus-poller-spawn.js +8 -6
- package/dist/focus/focus-poller-spawn.js.map +1 -1
- package/dist/focus/heartbeat-metadata.d.ts +5 -0
- package/dist/focus/heartbeat-metadata.d.ts.map +1 -1
- package/dist/focus/heartbeat-metadata.js +12 -0
- package/dist/focus/heartbeat-metadata.js.map +1 -1
- package/dist/focus/heartbeat.d.ts +9 -2
- package/dist/focus/heartbeat.d.ts.map +1 -1
- package/dist/focus/heartbeat.js +10 -1
- package/dist/focus/heartbeat.js.map +1 -1
- package/dist/focus/host-pressure.d.ts +77 -0
- package/dist/focus/host-pressure.d.ts.map +1 -0
- package/dist/focus/host-pressure.js +83 -0
- package/dist/focus/host-pressure.js.map +1 -0
- package/dist/focus/pending-directive-gates.d.ts +14 -0
- package/dist/focus/pending-directive-gates.d.ts.map +1 -1
- package/dist/focus/pending-directive-gates.js +25 -1
- package/dist/focus/pending-directive-gates.js.map +1 -1
- package/dist/focus/pending-spawn-pass-deps.d.ts +7 -0
- package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
- package/dist/focus/pending-spawn-review-next-step.d.ts +1 -1
- package/dist/focus/pending-spawn-review-next-step.d.ts.map +1 -1
- package/dist/focus/pending-spawn-review-next-step.js +2 -0
- package/dist/focus/pending-spawn-review-next-step.js.map +1 -1
- package/dist/focus/ready-focus-team-work.d.ts +9 -4
- package/dist/focus/ready-focus-team-work.d.ts.map +1 -1
- package/dist/focus/ready-focus-team-work.js +14 -3
- package/dist/focus/ready-focus-team-work.js.map +1 -1
- package/dist/focus/verify-open-issues.d.ts +3 -2
- package/dist/focus/verify-open-issues.d.ts.map +1 -1
- package/dist/focus/verify-open-issues.js +6 -4
- package/dist/focus/verify-open-issues.js.map +1 -1
- package/dist/focus/workstation-intervals.d.ts +83 -0
- package/dist/focus/workstation-intervals.d.ts.map +1 -0
- package/dist/focus/workstation-intervals.js +81 -0
- package/dist/focus/workstation-intervals.js.map +1 -0
- package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +5 -2
- package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
- package/dist/focus-stage-lifecycle/wedge-watchdog.js +2 -2
- package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
- package/dist/git/types.js +1 -1
- package/dist/merge/candidate-ci-failures.d.ts +72 -0
- package/dist/merge/candidate-ci-failures.d.ts.map +1 -0
- package/dist/merge/candidate-ci-failures.js +240 -0
- package/dist/merge/candidate-ci-failures.js.map +1 -0
- package/dist/merge/candidate-red-record.d.ts +44 -0
- package/dist/merge/candidate-red-record.d.ts.map +1 -0
- package/dist/merge/candidate-red-record.js +98 -0
- package/dist/merge/candidate-red-record.js.map +1 -0
- package/dist/merge/candidate-rework.d.ts +4 -3
- package/dist/merge/candidate-rework.d.ts.map +1 -1
- package/dist/merge/candidate-rework.js +46 -14
- package/dist/merge/candidate-rework.js.map +1 -1
- package/dist/merge/candidate-tip-attribution.d.ts +135 -0
- package/dist/merge/candidate-tip-attribution.d.ts.map +1 -0
- package/dist/merge/candidate-tip-attribution.js +319 -0
- package/dist/merge/candidate-tip-attribution.js.map +1 -0
- package/dist/merge/completion-merge-driver.d.ts +49 -5
- package/dist/merge/completion-merge-driver.d.ts.map +1 -1
- package/dist/merge/completion-merge-driver.js +56 -2
- package/dist/merge/completion-merge-driver.js.map +1 -1
- package/dist/merge/completion-merge-gate.d.ts +4 -1
- package/dist/merge/completion-merge-gate.d.ts.map +1 -1
- package/dist/merge/completion-merge-gate.js +9 -8
- package/dist/merge/completion-merge-gate.js.map +1 -1
- package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +4 -1
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/dist/prompt-sections/qa-author-section.d.ts.map +1 -1
- package/dist/prompt-sections/qa-author-section.js +18 -1
- package/dist/prompt-sections/qa-author-section.js.map +1 -1
- package/dist/prompt-sections/scoping-sections.d.ts +0 -12
- package/dist/prompt-sections/scoping-sections.d.ts.map +1 -1
- package/dist/prompt-sections/scoping-sections.js +16 -2
- package/dist/prompt-sections/scoping-sections.js.map +1 -1
- package/dist/prompts/bounded-universals.d.ts +13 -0
- package/dist/prompts/bounded-universals.d.ts.map +1 -0
- package/dist/prompts/bounded-universals.js +32 -0
- package/dist/prompts/bounded-universals.js.map +1 -0
- package/dist/queries/api-client/shared.d.ts +2 -1
- package/dist/queries/api-client/shared.d.ts.map +1 -1
- package/dist/queries/api-client/shared.js +36 -1
- package/dist/queries/api-client/shared.js.map +1 -1
- package/dist/queries/candidate-ci-reds/candidate-ci-reds.d.ts +35 -0
- package/dist/queries/candidate-ci-reds/candidate-ci-reds.d.ts.map +1 -0
- package/dist/queries/candidate-ci-reds/candidate-ci-reds.js +42 -0
- package/dist/queries/candidate-ci-reds/candidate-ci-reds.js.map +1 -0
- package/dist/queries/candidate-ci-reds/gate-escape-files.d.ts +16 -0
- package/dist/queries/candidate-ci-reds/gate-escape-files.d.ts.map +1 -0
- package/dist/queries/candidate-ci-reds/gate-escape-files.js +51 -0
- package/dist/queries/candidate-ci-reds/gate-escape-files.js.map +1 -0
- package/dist/queries/deliveries/issues.d.ts.map +1 -1
- package/dist/queries/deliveries/issues.js +1 -0
- package/dist/queries/deliveries/issues.js.map +1 -1
- package/dist/queries/escalations/escalation-consumption.d.ts +13 -0
- package/dist/queries/escalations/escalation-consumption.d.ts.map +1 -1
- package/dist/queries/escalations/escalation-consumption.js +12 -2
- package/dist/queries/escalations/escalation-consumption.js.map +1 -1
- package/dist/queries/escalations/tower-escalations.d.ts +82 -0
- package/dist/queries/escalations/tower-escalations.d.ts.map +1 -0
- package/dist/queries/escalations/tower-escalations.js +97 -0
- package/dist/queries/escalations/tower-escalations.js.map +1 -0
- package/dist/queries/focus-review/recorded-concern-ids.d.ts +48 -11
- package/dist/queries/focus-review/recorded-concern-ids.d.ts.map +1 -1
- package/dist/queries/focus-review/recorded-concern-ids.js +42 -12
- package/dist/queries/focus-review/recorded-concern-ids.js.map +1 -1
- package/dist/queries/focus-review/review-criterion-verdicts.d.ts +37 -0
- package/dist/queries/focus-review/review-criterion-verdicts.d.ts.map +1 -0
- package/dist/queries/focus-review/review-criterion-verdicts.js +64 -0
- package/dist/queries/focus-review/review-criterion-verdicts.js.map +1 -0
- package/dist/queries/focus-review/review-finding-facts.d.ts +18 -6
- package/dist/queries/focus-review/review-finding-facts.d.ts.map +1 -1
- package/dist/queries/focus-review/review-finding-facts.js +21 -8
- package/dist/queries/focus-review/review-finding-facts.js.map +1 -1
- package/dist/queries/focuses/ended-arm.d.ts +56 -13
- package/dist/queries/focuses/ended-arm.d.ts.map +1 -1
- package/dist/queries/focuses/ended-arm.js +40 -14
- package/dist/queries/focuses/ended-arm.js.map +1 -1
- package/dist/queries/focuses/focus-criteria-standing.d.ts +12 -0
- package/dist/queries/focuses/focus-criteria-standing.d.ts.map +1 -1
- package/dist/queries/focuses/focus-criteria-standing.js +13 -0
- package/dist/queries/focuses/focus-criteria-standing.js.map +1 -1
- package/dist/queries/focuses/focus-discovery.d.ts +14 -3
- package/dist/queries/focuses/focus-discovery.d.ts.map +1 -1
- package/dist/queries/focuses/focus-discovery.js +2 -19
- package/dist/queries/focuses/focus-discovery.js.map +1 -1
- package/dist/queries/focuses/focuses.d.ts +15 -12
- package/dist/queries/focuses/focuses.d.ts.map +1 -1
- package/dist/queries/focuses/focuses.js +15 -13
- package/dist/queries/focuses/focuses.js.map +1 -1
- package/dist/queries/sessions/daemon-connection.d.ts.map +1 -1
- package/dist/queries/sessions/daemon-connection.js +1 -0
- package/dist/queries/sessions/daemon-connection.js.map +1 -1
- package/dist/queries/sessions/sessions.d.ts.map +1 -1
- package/dist/queries/sessions/sessions.js +2 -1
- package/dist/queries/sessions/sessions.js.map +1 -1
- package/dist/queries/tower-decisions/tower-decisions.d.ts +103 -0
- package/dist/queries/tower-decisions/tower-decisions.d.ts.map +1 -0
- package/dist/queries/tower-decisions/tower-decisions.js +138 -0
- package/dist/queries/tower-decisions/tower-decisions.js.map +1 -0
- package/dist/queries/verification/verification.js +1 -1
- package/dist/queries/wire-schemas/schemas.d.ts +2 -0
- package/dist/queries/wire-schemas/schemas.d.ts.map +1 -1
- package/dist/queries/wire-schemas/schemas.js +8 -2
- package/dist/queries/wire-schemas/schemas.js.map +1 -1
- package/dist/queries/workstation-intervals/workstation-intervals.d.ts +52 -0
- package/dist/queries/workstation-intervals/workstation-intervals.d.ts.map +1 -0
- package/dist/queries/workstation-intervals/workstation-intervals.js +49 -0
- package/dist/queries/workstation-intervals/workstation-intervals.js.map +1 -0
- package/dist/resolvers/escalation-answers.d.ts +31 -0
- package/dist/resolvers/escalation-answers.d.ts.map +1 -1
- package/dist/resolvers/escalation-answers.js +31 -17
- package/dist/resolvers/escalation-answers.js.map +1 -1
- package/dist/resolvers/focus-criteria-standing.d.ts.map +1 -1
- package/dist/resolvers/focus-criteria-standing.js +20 -0
- package/dist/resolvers/focus-criteria-standing.js.map +1 -1
- package/dist/shell/unified-engine-lifecycle.d.ts +11 -1
- package/dist/shell/unified-engine-lifecycle.d.ts.map +1 -1
- package/dist/shell/unified-engine-lifecycle.js +10 -1
- package/dist/shell/unified-engine-lifecycle.js.map +1 -1
- package/dist/shell/unified-shell.d.ts +25 -0
- package/dist/shell/unified-shell.d.ts.map +1 -1
- package/dist/shell/unified-shell.js +26 -80
- package/dist/shell/unified-shell.js.map +1 -1
- package/dist/shell/update-restart.d.ts +47 -0
- package/dist/shell/update-restart.d.ts.map +1 -0
- package/dist/shell/update-restart.js +124 -0
- package/dist/shell/update-restart.js.map +1 -0
- package/dist/spawn/directive-dispatch.d.ts.map +1 -1
- package/dist/spawn/directive-dispatch.js +1 -0
- package/dist/spawn/directive-dispatch.js.map +1 -1
- package/dist/spawn/lead-continuation.d.ts +4 -3
- package/dist/spawn/lead-continuation.d.ts.map +1 -1
- package/dist/spawn/lead-continuation.js.map +1 -1
- package/dist/spawn/live-answer-delivery.d.ts +53 -0
- package/dist/spawn/live-answer-delivery.d.ts.map +1 -0
- package/dist/spawn/live-answer-delivery.js +26 -0
- package/dist/spawn/live-answer-delivery.js.map +1 -0
- package/dist/spawn/routing-decider-spawn.d.ts +64 -2
- package/dist/spawn/routing-decider-spawn.d.ts.map +1 -1
- package/dist/spawn/routing-decider-spawn.js +65 -20
- package/dist/spawn/routing-decider-spawn.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts +7 -5
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +11 -7
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/supervision/escalation-suppression.js +1 -1
- package/dist/supervision/review-cycle-cap-hold.d.ts +11 -5
- package/dist/supervision/review-cycle-cap-hold.d.ts.map +1 -1
- package/dist/supervision/review-cycle-cap-hold.js +29 -11
- package/dist/supervision/review-cycle-cap-hold.js.map +1 -1
- package/dist/supervision/review-loop-detector.d.ts +48 -0
- package/dist/supervision/review-loop-detector.d.ts.map +1 -0
- package/dist/supervision/review-loop-detector.js +13 -0
- package/dist/supervision/review-loop-detector.js.map +1 -0
- package/dist/supervision/review-loop-hold.d.ts +29 -0
- package/dist/supervision/review-loop-hold.d.ts.map +1 -0
- package/dist/supervision/review-loop-hold.js +99 -0
- package/dist/supervision/review-loop-hold.js.map +1 -0
- package/dist/supervision/stall-detector-config.d.ts +8 -0
- package/dist/supervision/stall-detector-config.d.ts.map +1 -1
- package/dist/supervision/stall-detector-config.js +14 -3
- package/dist/supervision/stall-detector-config.js.map +1 -1
- package/dist/supervision/stop-registry.d.ts +3 -0
- package/dist/supervision/stop-registry.d.ts.map +1 -1
- package/dist/supervision/stop-registry.js +3 -1
- package/dist/supervision/stop-registry.js.map +1 -1
- package/dist/supervision/stop-rows-review-loop.d.ts +35 -0
- package/dist/supervision/stop-rows-review-loop.d.ts.map +1 -0
- package/dist/supervision/stop-rows-review-loop.js +150 -0
- package/dist/supervision/stop-rows-review-loop.js.map +1 -0
- package/dist/supervision/stop-rows-team-session.d.ts +1 -1
- package/dist/supervision/stop-rows-team-session.d.ts.map +1 -1
- package/dist/supervision/stop-rows-team-session.js.map +1 -1
- package/dist/supervision/unreviewed-settle-detector.d.ts +7 -2
- package/dist/supervision/unreviewed-settle-detector.d.ts.map +1 -1
- package/dist/supervision/unreviewed-settle-detector.js +15 -2
- package/dist/supervision/unreviewed-settle-detector.js.map +1 -1
- package/dist/templates/agents-md.d.ts.map +1 -1
- package/dist/templates/agents-md.js +1 -0
- package/dist/templates/agents-md.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 +12 -0
- package/dist/templates/claude-md.js.map +1 -1
- package/dist/testing/fixtures/api-client.js +1 -1
- package/dist/testing/fixtures/completion-judge-stubs.d.ts +7 -2
- package/dist/testing/fixtures/completion-judge-stubs.d.ts.map +1 -1
- package/dist/testing/fixtures/completion-judge-stubs.js +11 -1
- package/dist/testing/fixtures/completion-judge-stubs.js.map +1 -1
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/testing/fixtures/merge-log-capture.d.ts.map +1 -1
- package/dist/testing/fixtures/merge-log-capture.js +1 -0
- package/dist/testing/fixtures/merge-log-capture.js.map +1 -1
- package/dist/testing/fixtures/pending-spawn-world.d.ts +4 -0
- package/dist/testing/fixtures/pending-spawn-world.d.ts.map +1 -1
- package/dist/testing/fixtures/pending-spawn-world.js +15 -2
- package/dist/testing/fixtures/pending-spawn-world.js.map +1 -1
- package/dist/testing/fixtures/recording-api-client.js +1 -1
- package/dist/testing/fixtures/review-exit-deps.d.ts.map +1 -1
- package/dist/testing/fixtures/review-exit-deps.js +3 -1
- package/dist/testing/fixtures/review-exit-deps.js.map +1 -1
- package/dist/testing/fixtures/review-loop.d.ts +19 -0
- package/dist/testing/fixtures/review-loop.d.ts.map +1 -0
- package/dist/testing/fixtures/review-loop.js +30 -0
- package/dist/testing/fixtures/review-loop.js.map +1 -0
- package/dist/testing/fixtures/shortfall-rework-hold-deps.d.ts.map +1 -1
- package/dist/testing/fixtures/shortfall-rework-hold-deps.js +1 -0
- package/dist/testing/fixtures/shortfall-rework-hold-deps.js.map +1 -1
- package/dist/testing/fixtures/tower-loop.d.ts +28 -0
- package/dist/testing/fixtures/tower-loop.d.ts.map +1 -0
- package/dist/testing/fixtures/tower-loop.js +83 -0
- package/dist/testing/fixtures/tower-loop.js.map +1 -0
- package/dist/testing/fixtures/verification-deps.d.ts +7 -0
- package/dist/testing/fixtures/verification-deps.d.ts.map +1 -1
- package/dist/testing/fixtures/verification-deps.js +17 -1
- package/dist/testing/fixtures/verification-deps.js.map +1 -1
- package/dist/testing/fixtures/vitest-failure-log.d.ts.map +1 -1
- package/dist/testing/fixtures/vitest-failure-log.js +2 -1
- package/dist/testing/fixtures/vitest-failure-log.js.map +1 -1
- package/dist/tower/tower-escalation-gather.d.ts +33 -0
- package/dist/tower/tower-escalation-gather.d.ts.map +1 -0
- package/dist/tower/tower-escalation-gather.js +38 -0
- package/dist/tower/tower-escalation-gather.js.map +1 -0
- package/dist/tower/tower-escalation-prompt.d.ts +62 -0
- package/dist/tower/tower-escalation-prompt.d.ts.map +1 -0
- package/dist/tower/tower-escalation-prompt.js +130 -0
- package/dist/tower/tower-escalation-prompt.js.map +1 -0
- package/dist/tower/tower-escalation-routing.d.ts +49 -0
- package/dist/tower/tower-escalation-routing.d.ts.map +1 -0
- package/dist/tower/tower-escalation-routing.js +53 -0
- package/dist/tower/tower-escalation-routing.js.map +1 -0
- package/dist/tower/tower-escalation-session.d.ts +149 -0
- package/dist/tower/tower-escalation-session.d.ts.map +1 -0
- package/dist/tower/tower-escalation-session.js +238 -0
- package/dist/tower/tower-escalation-session.js.map +1 -0
- package/dist/tower/tower-supervisor-history.d.ts +129 -0
- package/dist/tower/tower-supervisor-history.d.ts.map +1 -0
- package/dist/tower/tower-supervisor-history.js +217 -0
- package/dist/tower/tower-supervisor-history.js.map +1 -0
- package/dist/tower/tower-supervisor-prompt.d.ts +21 -0
- package/dist/tower/tower-supervisor-prompt.d.ts.map +1 -0
- package/dist/tower/tower-supervisor-prompt.js +205 -0
- package/dist/tower/tower-supervisor-prompt.js.map +1 -0
- package/dist/tower/tower-supervisor-session.d.ts +220 -0
- package/dist/tower/tower-supervisor-session.d.ts.map +1 -0
- package/dist/tower/tower-supervisor-session.js +307 -0
- package/dist/tower/tower-supervisor-session.js.map +1 -0
- package/dist/tower/tower-supervisor.d.ts +86 -0
- package/dist/tower/tower-supervisor.d.ts.map +1 -0
- package/dist/tower/tower-supervisor.js +8 -0
- package/dist/tower/tower-supervisor.js.map +1 -0
- package/dist/types/index.js +1 -1
- package/dist/update/auto-update.d.ts +11 -5
- package/dist/update/auto-update.d.ts.map +1 -1
- package/dist/update/auto-update.js +11 -5
- package/dist/update/auto-update.js.map +1 -1
- package/dist/update/restart-contract.d.ts +62 -0
- package/dist/update/restart-contract.d.ts.map +1 -0
- package/dist/update/restart-contract.js +137 -0
- package/dist/update/restart-contract.js.map +1 -0
- package/dist/verify/attribution/verification-baseline-run.d.ts.map +1 -1
- package/dist/verify/attribution/verification-baseline-run.js +1 -0
- package/dist/verify/attribution/verification-baseline-run.js.map +1 -1
- package/dist/verify/ci-gate/ci-gate-dispatch.d.ts +3 -0
- package/dist/verify/ci-gate/ci-gate-dispatch.d.ts.map +1 -1
- package/dist/verify/ci-gate/ci-gate-dispatch.js +31 -9
- package/dist/verify/ci-gate/ci-gate-dispatch.js.map +1 -1
- package/dist/verify/ci-gate/ci-gate-wait-record.d.ts +6 -0
- package/dist/verify/ci-gate/ci-gate-wait-record.d.ts.map +1 -1
- package/dist/verify/ci-gate/ci-gate-wait-record.js +1 -0
- package/dist/verify/ci-gate/ci-gate-wait-record.js.map +1 -1
- package/dist/verify/deterministic-gate/verification-checkout.d.ts +12 -2
- package/dist/verify/deterministic-gate/verification-checkout.d.ts.map +1 -1
- package/dist/verify/deterministic-gate/verification-checkout.js +18 -3
- package/dist/verify/deterministic-gate/verification-checkout.js.map +1 -1
- package/dist/verify/deterministic-gate/verification-deterministic.js +1 -1
- package/dist/verify/deterministic-gate/verification-failure-parser.d.ts +30 -9
- package/dist/verify/deterministic-gate/verification-failure-parser.d.ts.map +1 -1
- package/dist/verify/deterministic-gate/verification-failure-parser.js +52 -8
- package/dist/verify/deterministic-gate/verification-failure-parser.js.map +1 -1
- package/dist/verify/engine/verification-commit-sharing.d.ts.map +1 -1
- package/dist/verify/engine/verification-commit-sharing.js +6 -2
- package/dist/verify/engine/verification-commit-sharing.js.map +1 -1
- package/dist/verify/engine/verification-deps.d.ts +9 -0
- package/dist/verify/engine/verification-deps.d.ts.map +1 -1
- package/dist/verify/engine/verification-deps.js +1 -1
- package/dist/verify/engine/verification-engine.d.ts.map +1 -1
- package/dist/verify/engine/verification-engine.js +4 -1
- package/dist/verify/engine/verification-engine.js.map +1 -1
- package/dist/verify/escaped-tests/escaped-pass-store.d.ts +19 -0
- package/dist/verify/escaped-tests/escaped-pass-store.d.ts.map +1 -0
- package/dist/verify/escaped-tests/escaped-pass-store.js +90 -0
- package/dist/verify/escaped-tests/escaped-pass-store.js.map +1 -0
- package/dist/verify/escaped-tests/escaped-test-run.d.ts +39 -0
- package/dist/verify/escaped-tests/escaped-test-run.d.ts.map +1 -0
- package/dist/verify/escaped-tests/escaped-test-run.js +156 -0
- package/dist/verify/escaped-tests/escaped-test-run.js.map +1 -0
- package/dist/verify/escaped-tests/escaped-test-set.d.ts +65 -0
- package/dist/verify/escaped-tests/escaped-test-set.d.ts.map +1 -0
- package/dist/verify/escaped-tests/escaped-test-set.js +95 -0
- package/dist/verify/escaped-tests/escaped-test-set.js.map +1 -0
- package/dist/verify/escaped-tests/escaped-tests-source.d.ts +44 -0
- package/dist/verify/escaped-tests/escaped-tests-source.d.ts.map +1 -0
- package/dist/verify/escaped-tests/escaped-tests-source.js +142 -0
- package/dist/verify/escaped-tests/escaped-tests-source.js.map +1 -0
- package/dist/verify/gate-config/verification-manifest.d.ts +12 -1
- package/dist/verify/gate-config/verification-manifest.d.ts.map +1 -1
- package/dist/verify/gate-config/verification-manifest.js +12 -1
- package/dist/verify/gate-config/verification-manifest.js.map +1 -1
- package/dist/verify/gate-verdicts/commit-verdict-record.js +1 -1
- package/dist/verify/outcome-routing/verification-rework-issue.d.ts +4 -4
- package/dist/verify/outcome-routing/verification-rework-issue.d.ts.map +1 -1
- package/dist/verify/outcome-routing/verification-rework-issue.js +16 -6
- package/dist/verify/outcome-routing/verification-rework-issue.js.map +1 -1
- package/package.json +3 -3
- package/scripts/telora-daemon-wrapper.sh +16 -7
|
@@ -1,6 +1,7 @@
|
|
|
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/completion/completion-event/stall-termination-authority.test.ts,
|
|
3
3
|
// packages/daemon/src/focus-stage-lifecycle/ratify-bar-gate.test.ts,
|
|
4
|
+
// packages/daemon/src/supervision/review-loop-detector.test.ts,
|
|
4
5
|
// packages/daemon/src/supervision/stop-inventory.test.ts,
|
|
5
6
|
// packages/daemon/src/supervision/stop-progress-record.test.ts,
|
|
6
7
|
// packages/daemon/src/supervision/stop-registry.test.ts
|
|
@@ -34,13 +35,14 @@ import { COMPLETION_STALL_STOP_ROWS } from './stop-rows-completion-stall.js';
|
|
|
34
35
|
import { TEAM_SESSION_STOP_ROWS } from './stop-rows-team-session.js';
|
|
35
36
|
import { SPAWN_STOP_ROWS } from './stop-rows-spawn.js';
|
|
36
37
|
import { REVIEW_SPAWN_STOP_ROWS } from './stop-rows-review-spawn.js';
|
|
38
|
+
import { REVIEW_LOOP_STOP_ROWS } from './stop-rows-review-loop.js';
|
|
37
39
|
import { DELIVERY_STOP_ROWS } from './stop-rows-delivery.js';
|
|
38
40
|
import { VERIFY_RERUN_STOP_ROWS } from './stop-rows-verify-rerun.js';
|
|
39
41
|
import { FOCUS_HEALTH_STOP_ROWS } from './stop-rows-focus-health.js';
|
|
40
42
|
import { TEAM_REGISTRATION_STOP_ROWS } from './stop-rows-team-registration.js';
|
|
41
43
|
import { WORK_HOLD_STOP_ROWS } from './stop-rows-work-holds.js';
|
|
42
44
|
/** Every registered stop, keyed by row id. */
|
|
43
|
-
export const STOP_REGISTRY = combineStopRowTables(TEAM_STALL_STOP_ROWS, COMPLETION_STALL_STOP_ROWS, TEAM_SESSION_STOP_ROWS, SPAWN_STOP_ROWS, REVIEW_SPAWN_STOP_ROWS, DELIVERY_STOP_ROWS, VERIFY_RERUN_STOP_ROWS, FOCUS_HEALTH_STOP_ROWS, TEAM_REGISTRATION_STOP_ROWS, WORK_HOLD_STOP_ROWS);
|
|
45
|
+
export const STOP_REGISTRY = combineStopRowTables(TEAM_STALL_STOP_ROWS, COMPLETION_STALL_STOP_ROWS, TEAM_SESSION_STOP_ROWS, SPAWN_STOP_ROWS, REVIEW_SPAWN_STOP_ROWS, REVIEW_LOOP_STOP_ROWS, DELIVERY_STOP_ROWS, VERIFY_RERUN_STOP_ROWS, FOCUS_HEALTH_STOP_ROWS, TEAM_REGISTRATION_STOP_ROWS, WORK_HOLD_STOP_ROWS);
|
|
44
46
|
/** Every row, in declaration order. */
|
|
45
47
|
export function listStopRows() {
|
|
46
48
|
return Object.values(STOP_REGISTRY);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-registry.js","sourceRoot":"","sources":["../../src/supervision/stop-registry.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,kGAAkG;AAClG,uEAAuE;AACvE,4DAA4D;AAC5D,kEAAkE;AAClE,0DAA0D;AAC1D,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,oBAAoB,EAAgB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,8CAA8C;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAC/C,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,CACpB,CAAC;AAUF,uCAAuC;AACvC,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAqC,CAAC;AAC1E,CAAC;AAKD,IAAI,kBAAkB,GAAkC,IAAI,CAAC;AAE7D;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAuC;IAC5E,kBAAkB,GAAG,QAAQ,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAmB,EAAK,EAAE,KAAqB;IACzE,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,CAAyD,CAAC;IACtF,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,kBAAkB,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,SAAS,CAAmB,EAAK,EAAE,KAAqB;IACtE,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,CAAyD,CAAC;IACtF,OAAO,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC;AAWD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAAwB;IACpD,MAAM,GAAG,GAAqB,EAAE,CAAC;IACjC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAa,EAAE,CAAC;QACxD,IAAI,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC;YAAE,SAAS;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,CAA2B,CAAC;QACtD,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"stop-registry.js","sourceRoot":"","sources":["../../src/supervision/stop-registry.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,kGAAkG;AAClG,uEAAuE;AACvE,kEAAkE;AAClE,4DAA4D;AAC5D,kEAAkE;AAClE,0DAA0D;AAC1D,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,oBAAoB,EAAgB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,8CAA8C;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAC/C,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,CACpB,CAAC;AAUF,uCAAuC;AACvC,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAqC,CAAC;AAC1E,CAAC;AAKD,IAAI,kBAAkB,GAAkC,IAAI,CAAC;AAE7D;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAuC;IAC5E,kBAAkB,GAAG,QAAQ,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAmB,EAAK,EAAE,KAAqB;IACzE,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,CAAyD,CAAC;IACtF,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,kBAAkB,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,SAAS,CAAmB,EAAK,EAAE,KAAqB;IACtE,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,CAAyD,CAAC;IACtF,OAAO,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC;AAWD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAAwB;IACpD,MAAM,GAAG,GAAqB,EAAE,CAAC;IACjC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAa,EAAE,CAAC;QACxD,IAAI,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC;YAAE,SAAS;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,CAA2B,CAAC;QACtD,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ReviewVerdictRecord } from '../queries/focus-review/review-criterion-verdicts.js';
|
|
2
|
+
/** One review of a detected loop, oldest first. */
|
|
3
|
+
export interface ReviewLoopRound {
|
|
4
|
+
reviewId: string;
|
|
5
|
+
completedAt: string;
|
|
6
|
+
/** The blocking issues this review named against the criterion. */
|
|
7
|
+
blockingIssueIds: string[];
|
|
8
|
+
/** Of those, the ones no earlier review of the loop named. */
|
|
9
|
+
newBlockingIssueIds: string[];
|
|
10
|
+
}
|
|
11
|
+
/** A detected non-converging loop: the criterion and the reviews that show it. */
|
|
12
|
+
export interface ReviewLoopDetection {
|
|
13
|
+
criterionKey: string;
|
|
14
|
+
criterion: string;
|
|
15
|
+
nodeId: string | null;
|
|
16
|
+
/** The N reviews, OLDEST first. */
|
|
17
|
+
rounds: ReviewLoopRound[];
|
|
18
|
+
}
|
|
19
|
+
/** Facts for the non-converging review-loop detection (read at a review-session exit). */
|
|
20
|
+
export interface ReviewLoopDetectionFacts {
|
|
21
|
+
/** The focus's verdict-bearing reviews since the arm, NEWEST first (focus_reviews.criterion_verdicts). */
|
|
22
|
+
reviewsNewestFirst: readonly ReviewVerdictRecord[];
|
|
23
|
+
/** TELORA_REVIEW_LOOP_THRESHOLD. */
|
|
24
|
+
threshold: number;
|
|
25
|
+
}
|
|
26
|
+
/** Facts for the standing review-loop hold. `null` = the decision read failed. */
|
|
27
|
+
export interface ReviewLoopHeldFacts {
|
|
28
|
+
/** The focus's open loop_detected decisions (no loop_resolved names them; current arm). */
|
|
29
|
+
openLoopIds: readonly string[] | null;
|
|
30
|
+
}
|
|
31
|
+
export declare const REVIEW_LOOP_STOP_ROWS: {
|
|
32
|
+
readonly review_loop_detected: import("./stop-row.js").StopRow<ReviewLoopDetectionFacts, ReviewLoopDetection | null>;
|
|
33
|
+
readonly review_loop_held: import("./stop-row.js").StopRow<ReviewLoopHeldFacts, boolean>;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=stop-rows-review-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop-rows-review-loop.d.ts","sourceRoot":"","sources":["../../src/supervision/stop-rows-review-loop.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAEhG,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,8DAA8D;IAC9D,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,kFAAkF;AAClF,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,mCAAmC;IACnC,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAkDD,0FAA0F;AAC1F,MAAM,WAAW,wBAAwB;IACvC,0GAA0G;IAC1G,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,kFAAkF;AAClF,MAAM,WAAW,mBAAmB;IAClC,2FAA2F;IAC3F,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CACvC;AAYD,eAAO,MAAM,qBAAqB;;;CA6ExB,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/supervision/stop-registry.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
/**
|
|
5
|
+
* Stop-registry rows: the NON-CONVERGING REVIEW LOOP -- one criterion failing
|
|
6
|
+
* alone, review after review, each review naming a new blocking finding
|
|
7
|
+
* against it. Two rows, two conditions: the detection at a review-session exit
|
|
8
|
+
* (reads the reviews' per-criterion verdicts; enforced by
|
|
9
|
+
* completion/review-cycle-budget/review-loop-detection.ts) and the hold the
|
|
10
|
+
* recorded loop leaves (reads the focus's loop_detected / loop_resolved
|
|
11
|
+
* decisions; enforced by supervision/review-loop-hold.ts). The rule and why it
|
|
12
|
+
* is shaped as it is: supervision/review-loop-detector.ts.
|
|
13
|
+
*
|
|
14
|
+
* The detection's decision lives here, in the row, as every row's does; the
|
|
15
|
+
* detector module asks the registry for it.
|
|
16
|
+
*
|
|
17
|
+
* @module supervision/stop-rows-review-loop
|
|
18
|
+
*/
|
|
19
|
+
import { booleanStopRow, stopRow } from './stop-row.js';
|
|
20
|
+
/**
|
|
21
|
+
* The one not_met key of a review, its text/node and the blocking issues named
|
|
22
|
+
* against it; null when not exactly one -- or when the review left any agreed
|
|
23
|
+
* criterion without a verdict: "every other criterion is met" is a fact only
|
|
24
|
+
* about a review that judged every other criterion, and an unjudged one is
|
|
25
|
+
* not a pass.
|
|
26
|
+
*/
|
|
27
|
+
function soleUnmetCriterion(review) {
|
|
28
|
+
if ((review.unjudgedCriterionKeys ?? []).length > 0)
|
|
29
|
+
return null;
|
|
30
|
+
const unmet = review.criterionVerdicts.filter((v) => v.verdict === 'not_met');
|
|
31
|
+
const keys = new Set(unmet.map((v) => v.criterionKey));
|
|
32
|
+
if (keys.size !== 1)
|
|
33
|
+
return null;
|
|
34
|
+
const first = unmet[0];
|
|
35
|
+
if (!first)
|
|
36
|
+
return null;
|
|
37
|
+
const blockingSet = new Set(review.blockingIssueIds ?? []);
|
|
38
|
+
const blocking = [...new Set(unmet.flatMap((v) => v.issueIds))].filter((id) => blockingSet.has(id));
|
|
39
|
+
return { key: first.criterionKey, criterion: first.criterion, nodeId: first.nodeId, blocking };
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Detect a non-converging loop over the focus's reviews since the arm, given
|
|
43
|
+
* NEWEST FIRST. `threshold` below 2 is read as 2 (one failing review is not a
|
|
44
|
+
* loop). Returns the loop, or null.
|
|
45
|
+
*/
|
|
46
|
+
function detectLoop(reviewsNewestFirst, threshold) {
|
|
47
|
+
const n = Math.max(2, Math.floor(threshold));
|
|
48
|
+
if (reviewsNewestFirst.length < n)
|
|
49
|
+
return null;
|
|
50
|
+
const window = reviewsNewestFirst.slice(0, n).reverse();
|
|
51
|
+
const sole = window.map(soleUnmetCriterion);
|
|
52
|
+
const firstSole = sole[0];
|
|
53
|
+
if (!firstSole || sole.some((s) => s === null || s.key !== firstSole.key))
|
|
54
|
+
return null;
|
|
55
|
+
const named = new Set();
|
|
56
|
+
const rounds = [];
|
|
57
|
+
for (const [i, review] of window.entries()) {
|
|
58
|
+
const blocking = sole[i]?.blocking ?? [];
|
|
59
|
+
const fresh = blocking.filter((id) => !named.has(id));
|
|
60
|
+
if (fresh.length === 0)
|
|
61
|
+
return null;
|
|
62
|
+
for (const id of blocking)
|
|
63
|
+
named.add(id);
|
|
64
|
+
rounds.push({ reviewId: review.reviewId, completedAt: review.completedAt, blockingIssueIds: blocking, newBlockingIssueIds: fresh });
|
|
65
|
+
}
|
|
66
|
+
const newest = sole[sole.length - 1] ?? firstSole;
|
|
67
|
+
return { criterionKey: firstSole.key, criterion: newest.criterion, nodeId: newest.nodeId, rounds };
|
|
68
|
+
}
|
|
69
|
+
const loopReview = (reviewId, verdicts, blocking) => ({
|
|
70
|
+
reviewId,
|
|
71
|
+
completedAt: `2026-10-20T00:00:0${reviewId.slice(-1)}Z`,
|
|
72
|
+
outcome: 'gaps_found',
|
|
73
|
+
criterionVerdicts: verdicts.map(([key, verdict, issueIds]) => ({ criterionKey: key, nodeId: null, source: 'focus', criterion: key, verdict, issueIds })),
|
|
74
|
+
unjudgedCriterionKeys: [],
|
|
75
|
+
blockingIssueIds: blocking,
|
|
76
|
+
createdIssueIds: blocking ?? [],
|
|
77
|
+
});
|
|
78
|
+
export const REVIEW_LOOP_STOP_ROWS = {
|
|
79
|
+
review_loop_detected: stopRow({
|
|
80
|
+
id: 'review_loop_detected',
|
|
81
|
+
kind: 'breaker',
|
|
82
|
+
stopsOn: 'one_criterion_fails_alone_on_consecutive_reviews',
|
|
83
|
+
enforcedBy: 'completion/review-cycle-budget/review-loop-detection.ts',
|
|
84
|
+
condition: 'On the TELORA_REVIEW_LOOP_THRESHOLD most recent consecutive reviews under the arm exactly one criterion ' +
|
|
85
|
+
'is not_met (the same one each time), every other criterion is met or excused (a review that left any ' +
|
|
86
|
+
'agreed criterion without a verdict is no evidence), and each review names a ' +
|
|
87
|
+
'blocking finding against it that no earlier of those reviews named.',
|
|
88
|
+
factsRead: [
|
|
89
|
+
'focus_reviews.criterion_verdicts + blocking_issue_ids since product_focuses.armed_baseline_at',
|
|
90
|
+
'TELORA_REVIEW_LOOP_THRESHOLD',
|
|
91
|
+
],
|
|
92
|
+
effect: 'At the review-session exit, BEFORE the review-cycle budget is recorded: one loop_detected decision is ' +
|
|
93
|
+
'recorded on the focus (focus_tower_decisions; deduped while an open one stands for the criterion) with ' +
|
|
94
|
+
'the reviews, their blocking findings, the cycle count and the cap, and the Tower supervisor is called. ' +
|
|
95
|
+
'That review spends no review cycle (the threshold is read at most at the cap), so no arm spends its ' +
|
|
96
|
+
'budget on a loop. The recorded decision is the durable hold (see review_loop_held).',
|
|
97
|
+
releaser: 'The hold\'s releasers (see review_loop_held).',
|
|
98
|
+
releaseCondition: 'A review under the arm judges the criterion met or excused, another criterion fails, or no new blocking finding is named.',
|
|
99
|
+
evaluate: ({ reviewsNewestFirst, threshold }) => detectLoop(reviewsNewestFirst, threshold),
|
|
100
|
+
fires: (verdict) => verdict !== null,
|
|
101
|
+
characterization: {
|
|
102
|
+
trigger: [{
|
|
103
|
+
reviewsNewestFirst: [
|
|
104
|
+
loopReview('r3', [['x', 'not_met', ['i3']], ['y', 'met', []]], ['i3']),
|
|
105
|
+
loopReview('r2', [['x', 'not_met', ['i2']], ['y', 'met', []]], ['i2']),
|
|
106
|
+
loopReview('r1', [['x', 'not_met', ['i1']], ['y', 'excused', []]], ['i1']),
|
|
107
|
+
],
|
|
108
|
+
threshold: 3,
|
|
109
|
+
}],
|
|
110
|
+
release: [
|
|
111
|
+
{ reviewsNewestFirst: [loopReview('r2', [['x', 'not_met', ['i2']]], ['i2']), loopReview('r1', [['x', 'not_met', ['i1']]], ['i1'])], threshold: 3 },
|
|
112
|
+
{
|
|
113
|
+
reviewsNewestFirst: ['r3', 'r2', 'r1'].map((id) => ({
|
|
114
|
+
...loopReview(id, [['x', 'not_met', [`i${id.slice(-1)}`]]], [`i${id.slice(-1)}`]), unjudgedCriterionKeys: ['y'],
|
|
115
|
+
})),
|
|
116
|
+
threshold: 3,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
reviewsNewestFirst: [
|
|
120
|
+
loopReview('r3', [['x', 'not_met', ['i1']]], ['i1']),
|
|
121
|
+
loopReview('r2', [['x', 'not_met', ['i1']]], ['i1']),
|
|
122
|
+
loopReview('r1', [['x', 'not_met', ['i1']]], ['i1']),
|
|
123
|
+
],
|
|
124
|
+
threshold: 3,
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
}),
|
|
129
|
+
review_loop_held: booleanStopRow({
|
|
130
|
+
id: 'review_loop_held',
|
|
131
|
+
kind: 'hold',
|
|
132
|
+
stopsOn: 'open_review_loop_detected',
|
|
133
|
+
enforcedBy: 'supervision/review-loop-hold.ts',
|
|
134
|
+
condition: 'The focus carries a loop_detected decision recorded under its current arm that no loop_resolved ' +
|
|
135
|
+
'decision names, or the decision read failed (fails closed).',
|
|
136
|
+
factsRead: ['focus_tower_decisions (loop_detected / loop_resolved, resolves_decision_id)', 'product_focuses.armed_baseline_at'],
|
|
137
|
+
effect: 'Every spawn gate (ready-focus, pending-directive, auto-review window) spawns no coding or review pass ' +
|
|
138
|
+
'for the focus. The focus stays ARMED: the hold un-arms nothing and spends no review cycle.',
|
|
139
|
+
releaser: 'The daemon recording a loop_resolved decision that names the loop once the Tower supervisor recorded ' +
|
|
140
|
+
'criterion_bounded for it (tower/tower-supervisor-session.ts), or a new human arm (which re-stamps ' +
|
|
141
|
+
'armed_baseline_at, leaving the loop on the record but holding nothing).',
|
|
142
|
+
releaseCondition: 'The decision read succeeds and names no open loop under the current arm.',
|
|
143
|
+
evaluate: ({ openLoopIds }) => openLoopIds === null || openLoopIds.length > 0,
|
|
144
|
+
characterization: {
|
|
145
|
+
trigger: [{ openLoopIds: ['d1'] }, { openLoopIds: null }],
|
|
146
|
+
release: [{ openLoopIds: [] }],
|
|
147
|
+
},
|
|
148
|
+
}),
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=stop-rows-review-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop-rows-review-loop.js","sourceRoot":"","sources":["../../src/supervision/stop-rows-review-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SessionProcessLiveness } from '../daemon-state/daemon-instance.js';
|
|
2
2
|
/** The keep/defer decisions a session hold bounds (completion/team-teardown/session-hold.ts SessionHoldKind). */
|
|
3
|
-
export type SessionHoldExpiryKind = 'review_window_keep_alive' | 'young_team_directive_deferral' | 'first_result_teardown_demoted' | 'merge_resolution' | 'unclaimed_migration_notice' | 'unfinished_work';
|
|
3
|
+
export type SessionHoldExpiryKind = 'review_window_keep_alive' | 'young_team_directive_deferral' | 'first_result_teardown_demoted' | 'merge_resolution' | 'unclaimed_migration_notice' | 'unfinished_work' | 'work_classes_unreadable';
|
|
4
4
|
/** Facts the session-hold expiry decision reads. */
|
|
5
5
|
export interface SessionHoldExpiryFacts {
|
|
6
6
|
kind: SessionHoldExpiryKind;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-rows-team-session.d.ts","sourceRoot":"","sources":["../../src/supervision/stop-rows-team-session.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAMjF,iHAAiH;AACjH,MAAM,MAAM,qBAAqB,GAC7B,0BAA0B,GAC1B,+BAA+B,GAC/B,+BAA+B,GAC/B,kBAAkB,GAClB,4BAA4B,GAC5B,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"stop-rows-team-session.d.ts","sourceRoot":"","sources":["../../src/supervision/stop-rows-team-session.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAMjF,iHAAiH;AACjH,MAAM,MAAM,qBAAqB,GAC7B,0BAA0B,GAC1B,+BAA+B,GAC/B,+BAA+B,GAC/B,kBAAkB,GAClB,4BAA4B,GAC5B,iBAAiB,GACjB,yBAAyB,CAAC;AAE9B,oDAAoD;AACpD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,QAAQ,EAAE,UAAU,GAAG,YAAY,CAAC;IACpC,kEAAkE;IAClE,YAAY,EAAE,MAAM,CAAC;IACrB,+GAA+G;IAC/G,oBAAoB,EAAE,OAAO,CAAC;IAC9B,4EAA4E;IAC5E,sBAAsB,EAAE,OAAO,CAAC;IAChC,+DAA+D;IAC/D,gBAAgB,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,wFAAwF;IACxF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,uFAAuF;AACvF,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;CAChB;AAuCD,wFAAwF;AACxF,MAAM,WAAW,sBAAsB;IACrC,oEAAoE;IACpE,MAAM,EAAE,OAAO,CAAC;IAChB,+DAA+D;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,eAAe,EAAE,MAAM,sBAAsB,CAAC;IAC9C,8FAA8F;IAC9F,WAAW,EAAE,MAAM,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,wBAAwB,GAChC;IACA,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,cAAc,GAAG,eAAe,GAAG,cAAc,GAAG,cAAc,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;CAC/H,GACC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,aAAa,GAAG,kBAAkB,CAAA;CAAE,CAAC;AA6BnE,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAID,sDAAsD;AACtD,MAAM,WAAW,0BAA0B;IACzC,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,sBAAsB;;;;;oCAyHmC,OAAO;;;wBAsBpB,OAAO;8BAAwB,MAAM;8BAAwB,OAAO;;;qBAsC3E,OAAO;wBAAkB,OAAO;;;eAyBvE,MAAM;2BACM,MAAM,GAAG,IAAI;4BACZ,MAAM,GAAG,IAAI;6BACZ,MAAM,GAAG,IAAI;;;CA8D5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-rows-team-session.js","sourceRoot":"","sources":["../../src/supervision/stop-rows-team-session.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,mEAAmE;AACnE,gBAAgB;AAEhB;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAGnF,MAAM,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"stop-rows-team-session.js","sourceRoot":"","sources":["../../src/supervision/stop-rows-team-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { FocusDeliveryInfo } from '../types/index.js';
|
|
2
2
|
import type { FileEscalationIdempotentParams, FileEscalationIdempotentResult } from './escalation-suppression.js';
|
|
3
|
+
import { type UnreviewedSettleArmRecord } from '../queries/focuses/ended-arm.js';
|
|
3
4
|
import type { HumanAct } from '../queries/escalations/filing-observation.js';
|
|
4
5
|
import { type FocusDeliveryAggregatePhase } from './focus-delivery-aggregate-phase.js';
|
|
5
6
|
import { type FocusStallContext } from './stall-detectors.js';
|
|
@@ -46,9 +47,11 @@ export interface UnreviewedSettleDeps {
|
|
|
46
47
|
fileEscalation: (params: FileEscalationIdempotentParams) => Promise<FileEscalationIdempotentResult>;
|
|
47
48
|
/**
|
|
48
49
|
* Release the settled focus's stranded arm (assigned_agent_role_id ->
|
|
49
|
-
* null) WITHOUT closing the review window
|
|
50
|
+
* null) WITHOUT closing the review window, recording WHY in the same write
|
|
51
|
+
* (arm_ended_reason = 'run_finished_unreviewed', naming the settled
|
|
52
|
+
* deliveries). Production binds releaseFocusArm.
|
|
50
53
|
*/
|
|
51
|
-
releaseArm: (focusId: string) => Promise<void>;
|
|
54
|
+
releaseArm: (focusId: string, endedArm: UnreviewedSettleArmRecord) => Promise<void>;
|
|
52
55
|
/**
|
|
53
56
|
* Whether a review session for this focus is still running. While it is, the
|
|
54
57
|
* detector must NOT announce a missing verdict nor release the arm -- the
|
|
@@ -89,6 +92,8 @@ export declare function unreviewedSettleHumanAct(focusName: string): HumanAct;
|
|
|
89
92
|
export declare function checkUnreviewedSettleForFocus(ctx: FocusStallContext, inputs: UnreviewedSettleInputs & {
|
|
90
93
|
deliveries: FocusDeliveryInfo[];
|
|
91
94
|
}, deps: UnreviewedSettleDeps): Promise<void>;
|
|
95
|
+
/** Pure: the ended-arm record an unreviewed-settle release carries. Exported for testing. */
|
|
96
|
+
export declare function unreviewedSettleArmRecord(settled: readonly FocusDeliveryInfo[]): UnreviewedSettleArmRecord;
|
|
92
97
|
export interface SupersedeUnreviewedSettleDeps {
|
|
93
98
|
/**
|
|
94
99
|
* Resolve every open escalation of a kind for a focus, stamping the note.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unreviewed-settle-detector.d.ts","sourceRoot":"","sources":["../../src/supervision/unreviewed-settle-detector.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EACV,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,KAAK,2BAA2B,EAAsB,MAAM,qCAAqC,CAAC;AAG3G,OAAO,EAA8B,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI1F;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,oFAAoF;IACpF,KAAK,EAAE,2BAA2B,CAAC;IACnC,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,6EAA6E;IAC7E,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gFAAgF;IAChF,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAO1E;AAED,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,8BAA8B,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACpG
|
|
1
|
+
{"version":3,"file":"unreviewed-settle-detector.d.ts","sourceRoot":"","sources":["../../src/supervision/unreviewed-settle-detector.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EACV,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAqC,KAAK,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACpH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,KAAK,2BAA2B,EAAsB,MAAM,qCAAqC,CAAC;AAG3G,OAAO,EAA8B,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI1F;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,oFAAoF;IACpF,KAAK,EAAE,2BAA2B,CAAC;IACnC,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,6EAA6E;IAC7E,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gFAAgF;IAChF,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAO1E;AAED,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,8BAA8B,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACpG;;;;;OAKG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,yBAAyB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CACtD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAOpE;AAiED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,sBAAsB,GAAG;IAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA;CAAE,EACpE,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,IAAI,CAAC,CAwDf;AAED,6FAA6F;AAC7F,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAAG,yBAAyB,CAO1G;AAED,MAAM,WAAW,6BAA6B;IAC5C;;;;OAIG;IACH,wBAAwB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACvG;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sCAAsC,CAC1D,GAAG,EAAE,iBAAiB,EACtB,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,kBAAkB,EAAE,MAAM,GAAG,IAAI,EACjC,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,IAAI,CAAC,CAwBf"}
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
*/
|
|
29
29
|
import { ESCALATION_REASONS, ESCALATION_DISPOSITIONS, withRetry, } from '@telora/daemon-core';
|
|
30
30
|
import { focusBlockageCauseKey } from '../queries/escalations/cause-key.js';
|
|
31
|
+
import { ARM_ENDED_RUN_FINISHED_UNREVIEWED } from '../queries/focuses/ended-arm.js';
|
|
31
32
|
import { isDeliveryTerminal } from './focus-delivery-aggregate-phase.js';
|
|
32
33
|
import { createLogger } from '../log/daemon-log.js';
|
|
33
34
|
import { evaluateStop } from './stop-registry.js';
|
|
@@ -171,9 +172,12 @@ export async function checkUnreviewedSettleForFocus(ctx, inputs, deps) {
|
|
|
171
172
|
// (2) One idempotent review_window_stalled escalation naming the focus, its
|
|
172
173
|
// settled deliveries, and the verdict that was never rendered.
|
|
173
174
|
await fileUnreviewedSettleEscalation(ctx, inputs, settled, settledList, deps);
|
|
174
|
-
// (3) Release the stranded arm -- daemon-owned, review window stays open
|
|
175
|
+
// (3) Release the stranded arm -- daemon-owned, review window stays open --
|
|
176
|
+
// with its reason in the same write, so the focus never reads un-armed with
|
|
177
|
+
// no stated end.
|
|
178
|
+
const endedArm = unreviewedSettleArmRecord(settled);
|
|
175
179
|
try {
|
|
176
|
-
await withRetry(() => deps.releaseArm(ctx.focusId), { maxAttempts: 3, label: `release-unreviewed-settle-arm-${ctx.focusId}` });
|
|
180
|
+
await withRetry(() => deps.releaseArm(ctx.focusId, endedArm), { maxAttempts: 3, label: `release-unreviewed-settle-arm-${ctx.focusId}` });
|
|
177
181
|
log.info(`[unreviewed-settle] Released the stranded arm for focus "${ctx.focusName}" ` +
|
|
178
182
|
`-- the consented go-signal no longer outlives the work (review window left open).`);
|
|
179
183
|
}
|
|
@@ -181,6 +185,15 @@ export async function checkUnreviewedSettleForFocus(ctx, inputs, deps) {
|
|
|
181
185
|
log.warn(`[unreviewed-settle] failed to release the arm for focus "${ctx.focusName}":`, err.message);
|
|
182
186
|
}
|
|
183
187
|
}
|
|
188
|
+
/** Pure: the ended-arm record an unreviewed-settle release carries. Exported for testing. */
|
|
189
|
+
export function unreviewedSettleArmRecord(settled) {
|
|
190
|
+
return {
|
|
191
|
+
reason: ARM_ENDED_RUN_FINISHED_UNREVIEWED,
|
|
192
|
+
detail: {
|
|
193
|
+
settledDeliveries: settled.map((d) => ({ id: d.id, name: d.name, executionStatus: d.executionStatus })),
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
}
|
|
184
197
|
/**
|
|
185
198
|
* Retract/supersede a stale unreviewed-settle announcement once a verdict lands.
|
|
186
199
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unreviewed-settle-detector.js","sourceRoot":"","sources":["../../src/supervision/unreviewed-settle-detector.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,0FAA0F;AAC1F,uEAAuE;AACvE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,SAAS,GACV,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"unreviewed-settle-detector.js","sourceRoot":"","sources":["../../src/supervision/unreviewed-settle-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-md.d.ts","sourceRoot":"","sources":["../../src/templates/agents-md.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agents-md.d.ts","sourceRoot":"","sources":["../../src/templates/agents-md.ts"],"names":[],"mappings":"AA0CA,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AACnE,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAE/D;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AA4BD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAWhD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,2BAA2B,GAAG,MAAM,CAcvE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
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/cli/connect-operator-harness.test.ts,
|
|
3
3
|
// packages/daemon/src/cli/global-agents-md.test.ts,
|
|
4
|
+
// packages/daemon/src/templates/seed-bounded-universals.test.ts,
|
|
4
5
|
// packages/daemon/src/templates/seed-cause-targeting.test.ts,
|
|
5
6
|
// packages/daemon/src/templates/seed-execution-polarity.test.ts,
|
|
6
7
|
// packages/daemon/src/templates/seed-open-intent-scoping.test.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../src/templates/agents-md.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uEAAuE;AACvE,sDAAsD;AACtD,gEAAgE;AAChE,mEAAmE;AACnE,mEAAmE;AACnE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,+BAA+B,GACnC,gEAAgE,CAAC;AAEnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,4BAA4B,CAAC;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AA0B/D;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,GAAgC;IACjE,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;IAC/F,OAAO,CACL,wBAAwB;QACxB,IAAI;QACJ,4EAA4E;QAC5E,0EAA0E;QAC1E,6BAA6B;QAC7B,IAAI;QACJ,iBAAiB,GAAG,CAAC,SAAS,IAAI;QAClC,mBAAmB,GAAG,CAAC,cAAc,IAAI;QACzC,cAAc,YAAY,IAAI;QAC9B,IAAI;QACJ,8EAA8E;QAC9E,+EAA+E;QAC/E,2EAA2E;QAC3E,eAAe;QACf,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,8BAA8B,EAAE,+BAA+B,CAAC,CAAC;IAChG,MAAM,MAAM,GACV,wBAAwB;QACxB,IAAI;QACJ,4EAA4E;QAC5E,4EAA4E;QAC5E,uEAAuE;QACvE,6BAA6B;QAC7B,IAAI,CAAC;IACP,OAAO,GAAG,sBAAsB,KAAK,MAAM,GAAG,IAAI,GAAG,oBAAoB,IAAI,CAAC;AAChF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,GAAgC;IAC7D,0EAA0E;IAC1E,6EAA6E;IAC7E,oEAAoE;IACpE,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAC5B,8BAA8B,EAC9B,GAAG,CAAC,uBAAuB,IAAI,+BAA+B,CAC/D,CAAC;IACF,MAAM,KAAK,GACT,GAAG,sBAAsB,IAAI;QAC7B,GAAG,yBAAyB,CAAC,GAAG,CAAC,EAAE;QACnC,GAAG,IAAI,EAAE;QACT,GAAG,oBAAoB,IAAI,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../src/templates/agents-md.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uEAAuE;AACvE,sDAAsD;AACtD,mEAAmE;AACnE,gEAAgE;AAChE,mEAAmE;AACnE,mEAAmE;AACnE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,+BAA+B,GACnC,gEAAgE,CAAC;AAEnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,4BAA4B,CAAC;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AA0B/D;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,GAAgC;IACjE,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;IAC/F,OAAO,CACL,wBAAwB;QACxB,IAAI;QACJ,4EAA4E;QAC5E,0EAA0E;QAC1E,6BAA6B;QAC7B,IAAI;QACJ,iBAAiB,GAAG,CAAC,SAAS,IAAI;QAClC,mBAAmB,GAAG,CAAC,cAAc,IAAI;QACzC,cAAc,YAAY,IAAI;QAC9B,IAAI;QACJ,8EAA8E;QAC9E,+EAA+E;QAC/E,2EAA2E;QAC3E,eAAe;QACf,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,8BAA8B,EAAE,+BAA+B,CAAC,CAAC;IAChG,MAAM,MAAM,GACV,wBAAwB;QACxB,IAAI;QACJ,4EAA4E;QAC5E,4EAA4E;QAC5E,uEAAuE;QACvE,6BAA6B;QAC7B,IAAI,CAAC;IACP,OAAO,GAAG,sBAAsB,KAAK,MAAM,GAAG,IAAI,GAAG,oBAAoB,IAAI,CAAC;AAChF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,GAAgC;IAC7D,0EAA0E;IAC1E,6EAA6E;IAC7E,oEAAoE;IACpE,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAC5B,8BAA8B,EAC9B,GAAG,CAAC,uBAAuB,IAAI,+BAA+B,CAC/D,CAAC;IACF,MAAM,KAAK,GACT,GAAG,sBAAsB,IAAI;QAC7B,GAAG,yBAAyB,CAAC,GAAG,CAAC,EAAE;QACnC,GAAG,IAAI,EAAE;QACT,GAAG,oBAAoB,IAAI,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -29,7 +29,7 @@ export declare const TELORA_CLAUDE_MD_END = "<!-- END TELORA SEED -->";
|
|
|
29
29
|
* For Codex: the MCP server is registered in `~/.codex/config.toml` (global).
|
|
30
30
|
*/
|
|
31
31
|
export declare const SEED_MCP_REGISTRATION_SENTENCE = "The Telora MCP server is registered in `.mcp.json`.";
|
|
32
|
-
export declare const SEED_BODY = "# Telora workstation context\n\nThis repo is connected to Telora -- a differential control plane for\nsoftware delivery. Intent and reality are paired signals; the meaningful\nwork happens at the difference.\n\n## Before you write any code (read this first)\n\nDEFAULT: on a Telora-connected workstation, a new capability starts as\n**declared intent** before any code. When the user says \"I want to build\nX\", your first move is NOT to scaffold X -- it is to declare it: create\n(or select) a Focus -> delivery -> issue and move an issue to **In\nProgress**. Code is written only after intent is anchored above it.\n\nThis polarity is deliberate and easy to get backwards. Building directly\nin the working tree -- scaffolding, installing dependencies, starting a\ndev server, writing application files -- is the **exception**, taken ONLY\nwhen the user explicitly asks for it. Recognized bypass phrases:\n\"build locally\", \"just write it\", \"skip Telora\", \"don't track this\",\n\"throwaway\". Absent an explicit signal like these, treat any build\nrequest as a request to declare intent in Telora first.\n\nAsking good clarifying questions about stack, scope, or dependencies is\nNOT a substitute for this step -- that is execution-layer scoping, and it\ncomes *after* the capability is declared, not instead of it. Scoping is\nagent work; declaring that a capability matters is the part that must\nland in Telora first.\n\n**Surface the fork; do not silently pick it.** The common failure is\nresolving an ambiguous request toward the path of least resistance --\ne.g. reading \"a web app I run locally on my LAN\" (a deployment target) as\n\"build locally\" (skip Telora). When intent is not already explicit, your\nFIRST response to a build request names the choice rather than assuming\nit: \"I'll scope this in Telora unless you want it built locally -- which?\"\nOne question, once, at the start. Let the user pick; never pick for them\nby starting to type code.\n\n**First action rule.** On a build / new-capability request, your first\ntool call is a Telora planning call (telora_product_focus / _delivery /\n_issue) OR the fork question above -- never Write, Edit, or a code-running\nBash command. If the first move cannot be code, building-before-intent\ncannot happen.\n\nWhy: an artifact with no declared intent above it is reality moving with\nnothing to measure it against -- pure noise to the differential loop. The\nwhole system is built to compute intent-minus-reality; code that skips\nthe intent half defeats the instrument.\n\n## Execution polarity (which path executes this?)\n\nOnce intent is declared, a second polarity governs HOW it executes -- and it\nhas the same default-and-exception shape as the intent polarity above. A\ndeclared focus is handed to the **daemon team + review loop** by default.\nTeam execution IS THE DEFAULT; building it inline yourself in this interactive\nsession is the **explicit, named bypass**, taken ONLY when the user says so.\n\nThree execution forks recur. On each, the left side is the default and the\nright side is the effortful, must-be-named bypass:\n\n- **Daemon team + review vs. inline coding.** Default: hand the focus to the\n daemon team, which executes and runs it through the review gate. Bypass:\n build it inline in this session -- only on an explicit signal.\n- **Tree-anchored delivery vs. unanchored delivery.** Default: anchor each\n delivery to a reality-tree injection. Bypass: an unanchored delivery\n (`allowUnanchored`) -- a deliberate, reason-bearing act, not a silent flag.\n- **Review-gated Done vs. self-marked Done.** Default: work is confirmed Done\n by the review gate. Bypass: marking your own work Done without review.\n\nThe recognized signal that switches execution to inline is an explicit\n\"build it now\" (and the same throwaway phrases that bypass the intent step:\n\"build locally\", \"just write it\", \"skip Telora\", \"don't track this\",\n\"throwaway\"). Absent such a signal, hand off to the team -- do not fill the\nchoice with the lowest-resistance path (typing code yourself).\n\n**Surface the fork; do not silently pick it.** When the execution path is not\nalready explicit, your response NAMES the choice rather than assuming it:\n\"I'll hand this to the daemon team + review unless you want it built inline\nnow -- which?\" One question, once. Let the user pick; never default to inline\nby starting to type code.\n\n**Routing is not activation.** \"Hand off to the daemon team\" answers WHICH\npath executes -- it is NOT a signal to arm the focus now. Arming (setting the\nfocus's `assignedAgentRoleId`, which spends real budget spawning a team) is a\nseparate, human-owned go-signal. Scoping ends at a named **scoped, un-armed**\nstate: you decompose the focus into deliveries and issues and then STOP. Do\nNOT arm a focus at the tail of scoping -- a human arms it (or has durably\ndelegated that go-signal). Choosing team-over-inline routing the moment\nscoping ends is NOT the same as deciding it is time to spend; keep the two\ndecisions separate. Activation is a third decision, owned by the human\nalongside intent and completion (see Human-vs-agent boundaries below).\n\n## Planning hierarchy\n\n- **Focus** = the context that defines an area of work -- not \"one\n capability.\" All phases of building within that area belong in one\n focus; if a \"focus\" is really just one phase, fold it back in.\n- **Delivery** = a shippable phase or major component of a capability.\n- **Context Group** = optional grouping of related issues that share\n meaningful context (relevant files, architectural notes). A CG earns its\n existence by carrying context, not by being a folder.\n- **Task** = one discrete implementable unit. Bounded files, focused\n session. Multiple \"and\" clauses across different concerns means split.\n\nScope by purpose, not count. The right number of deliveries is however\nmany phases the work naturally has.\n\n**Scoping reads open intent.** When you place a new unit of work, the first\nquestion -- \"does this belong in a focus that already exists?\" -- is asked\nagainst the OPEN set only: the active and proposed foci. A completed or\ncancelled focus is settled intent. It can no longer absorb new work, and\nconsulting one only re-litigates a decision already closed -- so a terminal\nfocus is neither a placement candidate nor a precedent to reason from. When\nno open focus fits, the answer is a new focus, never a closed one reopened\nin spirit.\n\n**Injections aim at causes; the effects follow.** In a focus's reality\ntree, a delivery anchors to an injection, and an injection targets the\nCAUSES the delivery changes -- never an undesired effect. State each\ntargeted cause's future (how it works once changed); that is what verify\njudges the delivery on. State each undesired effect's own future on the\neffect node. An arm then covers the effects the targeted causes EARN --\nan effect is earned once every cause sustaining it is targeted -- and\nthose effects' futures are the focus's criteria, judged at the focus\nreview. An effect an older injection targets directly stays covered,\nlabelled declared rather than earned.\n\n## PRD: \"build a working app in one run\"\n\nA **PRD** sits one altitude above Focus (Product -> PRD -> Focus): a\nbounded, verifiable, retire-able milestone carrying a **Prerequisite Tree**\nof `goal` / `obstacle` / `overcome` nodes. Each `overcome` materializes\nas a focus; the daemon progressively arms the **frontier** of foci as\nupstream obstacles clear. This is the entry point a user means by \"build a\nfully working app in one go.\"\n\nIt is NOT big-bang generation: you author the tree once, commit a path,\nand the differential loop walks the frontier to completion -- the execution\nunderneath is still the normal focus -> delivery -> issue + review loop.\n\nThe PRD tools are **lazy-loaded** -- they do not exist until you load the\ndomain. If you don't see `telora_prd` / `telora_prd_tree`, run:\n\n```\ntelora_discover { action: \"load\", domain: \"prd\" }\n```\n\nThen: `telora_prd` create (referencing a Vision) -> `telora_prd_tree`\nauthor nodes (an obstacle's `clearancePredicate` is OPTIONAL and advisory --\nthe frontier advances as upstream obstacles clear via focus-completion, i.e.\neach overcome's focus finishing its deliveries' verify gates, not via a\nper-obstacle predicate) + edges -> commit a pathway -> `materialize_overcome`\neach into a focus. Authoring STOPS there, at **scoped, un-armed** -- arming\nthe daemon PRD loop is a human go-signal (the activation decision above),\nnot the tail of authoring, unless that go-signal is durably delegated. All\nauthoring is harness+MCP; there is no Telora authoring UI.\n\n## Issue workflow\n\n`To Do` -> `In Progress` -> `In Review` / `Blocked` -> `Done`.\n\nIssue types: **Context Group**, **Task**, **Bug**.\n\nMovement rules:\n\n- An issue MUST be set to `In Progress` before any work begins on it.\n- Never skip `In Progress`. Never move directly from `To Do` to `Done`.\n- Set status with `telora_product_issue` action=update.\n\nDelivery and focus stages advance automatically based on issue\nactivity. Agents never set delivery executionStatus directly.\n\n## Migration numbers (claim, never compute)\n\nIf this product declares its migration numbering\n(`telora.migrations.json`), a migration number is CLAIMED ONCE through\nTelora before the file is named -- never read from the worktree you are\nstanding in:\n\n```\ntelora_discover { action: \"load\", domain: \"migrations\" }\ntelora_product_migration { action: \"claim\", productId, focusId, tag: \"<name>\" }\n```\n\nTwo focuses armed at once on one product work in separate worktrees cut\nfrom the same base, so \"the next free number\" computed locally is the same\nnumber the sibling just computed. Git sees no conflict -- the filenames\ndiffer -- and it surfaces only when the migrations run in order. This\napplies to a human or an inline session numbering by hand exactly as it\napplies to an agent team: the rule is about the base you are reading from,\nnot about who is reading it.\n\nA refusal is deliberate, never a cue to number by hand: fix the declaration\nor the reported cause.\n\n## Commit attribution (MANDATORY: one trailer per commit)\n\nEvery delivery on a focus shares ONE branch, so their commits interleave.\nThe only way the verify gate can judge a delivery against ITS OWN work is a\nper-commit marker. On EVERY commit you make for a delivery, add a git trailer\nnaming the delivery the work belongs to:\n\n```\nTelora-Delivery: <deliveryId>\n```\n\nStamp it with git's own trailer machinery so an appended `Co-Authored-By`\ncannot void it:\n\n```\ngit commit --trailer \"Telora-Delivery: <deliveryId>\" -m \"<subject>\"\n```\n\nDo NOT pass it as its own `-m` paragraph (`-m \"Telora-Delivery: ...\"`): git\nparses only the last paragraph as trailers, so an appended `Co-Authored-By`\nsilently voids it. A `commit-msg` git hook in this worktree ENFORCES this --\na commit whose message lacks a well-formed `Telora-Delivery: <uuid>` trailer\nis REFUSED, with the exact line to add printed. Fix it and re-commit; do not\nescalate.\n\nA commit that genuinely belongs to NO delivery declares that explicitly: merge\ncommits are exempt by shape (git sets `MERGE_HEAD`), and any other\ndelivery-less housekeeping commit carries the non-delivery sentinel:\n\n```\ngit commit --trailer \"Telora-Delivery: none\" -m \"<subject>\"\n```\n\nNever borrow a real delivery id for a commit that is not that delivery's work.\nThat is false attribution -- it folds a commit that is not its own into the\nborrowed delivery's verify evidence. The sentinel is the sanctioned escape.\n\n## MCP tool surface (what's available in this session)\n\nThe Telora MCP server is registered in `.mcp.json`. Core tool families:\n\n- `telora_product` -- list/get/create/update products\n- `telora_product_focus` -- focuses under a product\n- `telora_product_delivery` -- deliveries under a focus\n- `telora_product_issue` -- issues (Context Groups, Tasks, Bugs) under a delivery\n- `telora_agent` -- agent roles, escalation requests\n- `telora_loop_*` -- loop documents, questions, answers\n- `telora_discover` -- on-demand registration of deferred tool domains\n\nResolve the live tool list at runtime via `telora_discover` rather than\nhard-coding a list that drifts.\n\n## Human-vs-agent boundaries\n\n- Humans own **intent**, **activation**, and **completion**.\n - Intent: what capability matters, what changes when. Pre-handoff.\n - Activation (arming): the go/no-go spend decision -- setting the focus's\n `assignedAgentRoleId` to hand it to the daemon team. Scoping ends\n **scoped, un-armed**; arming is a human go-signal unless durably\n delegated. Sits between intent and completion.\n - Completion: closing the loop on whether a focus is done. Post-handoff.\n- Agents own **scoping** and **execution**.\n - Scoping: decomposing a focus into deliveries, deliveries into\n issues, restructuring mid-flight as the agent learns more. Scoping\n ENDS at **scoped, un-armed** -- it never arms the focus.\n - Execution: writing code, running tests, committing, reporting.\n\nDo not ask humans for operational details they expect the agent to figure\nout. Do not silently complete a focus on the human's behalf. Escalate\nwhen stuck via `telora_agent` action=escalate.\n\nWhen communicating with a human, refer to focuses, deliveries, and issues\nby their **title**, never their UUID. UUIDs are for tool calls only and must\nnot be surfaced in chat. MCP tool results carry both, so this is a\ncommunication choice, not a data-availability problem: keep the id in the\ntool call, name the work by its title in the conversation.\n\n## Differential signaling\n\nTelora is asymmetric: it moves reality toward intent, never the reverse.\nAgents do not lower the bar to make signals look better -- they escalate.\nEvery artifact (commit, work summary, gate result) is signal toward the\ndeclared intent; raw activity without intent reduction is noise.\n\nA short corrective comment from the user is high-signal -- treat brief\npushback as the most important input in the session.\n\n## Provenance: record what informed your intent\n\nWhen you and the human set Telora intent after looking at an external\ntracker (e.g. a client's Linear workspace), record WHERE that intent came\nfrom. A connected tracker is a **source for determining intent, not intent\nitself**: Telora owns intent, it is read strictly one-way, and Telora's\nintent is never written back to the tracker.\n\n- To read the tracker in-session, use the integrations tools\n (`telora_external_data_source` resolve, then `telora_linear`). Pull the\n issue(s) the human points at, discuss them together, then set intent in\n Telora (a focus, delivery, issue, reality-tree node, loop question, or\n PRD node).\n- Whenever tracker content SHAPED one of those entities, record an\n `informed_by` reference with `telora_external_reference` create, naming\n the entity + the external identifier (e.g. TIN-5) + a one-line note on\n HOW it informed the entity. The reference is a POINTER, never a copy --\n so a later reader can trace agreed intent back to its source, and a\n change to the source can be surfaced to the intent that leaned on it.\n\n## Workflows and policies\n\n- **Workflow**: stage directives shape agent behavior at discrete\n transitions. What context the agent sees (assembly recipes), what tools\n it can use, how it thinks (prompt + model). Live in Telora's\n `workflow_stages.agent_directive` JSONB.\n- **Policy** (organizational, deferred): cross-cutting constraints that\n feed into stage directives.\n\nWhen you cross a stage transition, the daemon may inject context or spawn\na fresh sub-agent per the directive. Don't override that flow without a\nclear reason.\n";
|
|
32
|
+
export declare const SEED_BODY = "# Telora workstation context\n\nThis repo is connected to Telora -- a differential control plane for\nsoftware delivery. Intent and reality are paired signals; the meaningful\nwork happens at the difference.\n\n## Before you write any code (read this first)\n\nDEFAULT: on a Telora-connected workstation, a new capability starts as\n**declared intent** before any code. When the user says \"I want to build\nX\", your first move is NOT to scaffold X -- it is to declare it: create\n(or select) a Focus -> delivery -> issue and move an issue to **In\nProgress**. Code is written only after intent is anchored above it.\n\nThis polarity is deliberate and easy to get backwards. Building directly\nin the working tree -- scaffolding, installing dependencies, starting a\ndev server, writing application files -- is the **exception**, taken ONLY\nwhen the user explicitly asks for it. Recognized bypass phrases:\n\"build locally\", \"just write it\", \"skip Telora\", \"don't track this\",\n\"throwaway\". Absent an explicit signal like these, treat any build\nrequest as a request to declare intent in Telora first.\n\nAsking good clarifying questions about stack, scope, or dependencies is\nNOT a substitute for this step -- that is execution-layer scoping, and it\ncomes *after* the capability is declared, not instead of it. Scoping is\nagent work; declaring that a capability matters is the part that must\nland in Telora first.\n\n**Surface the fork; do not silently pick it.** The common failure is\nresolving an ambiguous request toward the path of least resistance --\ne.g. reading \"a web app I run locally on my LAN\" (a deployment target) as\n\"build locally\" (skip Telora). When intent is not already explicit, your\nFIRST response to a build request names the choice rather than assuming\nit: \"I'll scope this in Telora unless you want it built locally -- which?\"\nOne question, once, at the start. Let the user pick; never pick for them\nby starting to type code.\n\n**First action rule.** On a build / new-capability request, your first\ntool call is a Telora planning call (telora_product_focus / _delivery /\n_issue) OR the fork question above -- never Write, Edit, or a code-running\nBash command. If the first move cannot be code, building-before-intent\ncannot happen.\n\nWhy: an artifact with no declared intent above it is reality moving with\nnothing to measure it against -- pure noise to the differential loop. The\nwhole system is built to compute intent-minus-reality; code that skips\nthe intent half defeats the instrument.\n\n## Execution polarity (which path executes this?)\n\nOnce intent is declared, a second polarity governs HOW it executes -- and it\nhas the same default-and-exception shape as the intent polarity above. A\ndeclared focus is handed to the **daemon team + review loop** by default.\nTeam execution IS THE DEFAULT; building it inline yourself in this interactive\nsession is the **explicit, named bypass**, taken ONLY when the user says so.\n\nThree execution forks recur. On each, the left side is the default and the\nright side is the effortful, must-be-named bypass:\n\n- **Daemon team + review vs. inline coding.** Default: hand the focus to the\n daemon team, which executes and runs it through the review gate. Bypass:\n build it inline in this session -- only on an explicit signal.\n- **Tree-anchored delivery vs. unanchored delivery.** Default: anchor each\n delivery to a reality-tree injection. Bypass: an unanchored delivery\n (`allowUnanchored`) -- a deliberate, reason-bearing act, not a silent flag.\n- **Review-gated Done vs. self-marked Done.** Default: work is confirmed Done\n by the review gate. Bypass: marking your own work Done without review.\n\nThe recognized signal that switches execution to inline is an explicit\n\"build it now\" (and the same throwaway phrases that bypass the intent step:\n\"build locally\", \"just write it\", \"skip Telora\", \"don't track this\",\n\"throwaway\"). Absent such a signal, hand off to the team -- do not fill the\nchoice with the lowest-resistance path (typing code yourself).\n\n**Surface the fork; do not silently pick it.** When the execution path is not\nalready explicit, your response NAMES the choice rather than assuming it:\n\"I'll hand this to the daemon team + review unless you want it built inline\nnow -- which?\" One question, once. Let the user pick; never default to inline\nby starting to type code.\n\n**Routing is not activation.** \"Hand off to the daemon team\" answers WHICH\npath executes -- it is NOT a signal to arm the focus now. Arming (setting the\nfocus's `assignedAgentRoleId`, which spends real budget spawning a team) is a\nseparate, human-owned go-signal. Scoping ends at a named **scoped, un-armed**\nstate: you decompose the focus into deliveries and issues and then STOP. Do\nNOT arm a focus at the tail of scoping -- a human arms it (or has durably\ndelegated that go-signal). Choosing team-over-inline routing the moment\nscoping ends is NOT the same as deciding it is time to spend; keep the two\ndecisions separate. Activation is a third decision, owned by the human\nalongside intent and completion (see Human-vs-agent boundaries below).\n\n## Planning hierarchy\n\n- **Focus** = the context that defines an area of work -- not \"one\n capability.\" All phases of building within that area belong in one\n focus; if a \"focus\" is really just one phase, fold it back in.\n- **Delivery** = a shippable phase or major component of a capability.\n- **Context Group** = optional grouping of related issues that share\n meaningful context (relevant files, architectural notes). A CG earns its\n existence by carrying context, not by being a folder.\n- **Task** = one discrete implementable unit. Bounded files, focused\n session. Multiple \"and\" clauses across different concerns means split.\n\nScope by purpose, not count. The right number of deliveries is however\nmany phases the work naturally has.\n\n**Scoping reads open intent.** When you place a new unit of work, the first\nquestion -- \"does this belong in a focus that already exists?\" -- is asked\nagainst the OPEN set only: the active and proposed foci. A completed or\ncancelled focus is settled intent. It can no longer absorb new work, and\nconsulting one only re-litigates a decision already closed -- so a terminal\nfocus is neither a placement candidate nor a precedent to reason from. When\nno open focus fits, the answer is a new focus, never a closed one reopened\nin spirit.\n\n**Injections aim at causes; the effects follow.** In a focus's reality\ntree, a delivery anchors to an injection, and an injection targets the\nCAUSES the delivery changes -- never an undesired effect. State each\ntargeted cause's future (how it works once changed); that is what verify\njudges the delivery on. State each undesired effect's own future on the\neffect node. An arm then covers the effects the targeted causes EARN --\nan effect is earned once every cause sustaining it is targeted -- and\nthose effects' futures are the focus's criteria, judged at the focus\nreview. An effect an older injection targets directly stays covered,\nlabelled declared rather than earned.\n\n**Intent speaks in universals; criteria must not.** A product owner\nstates intent in universals -- \"any\", \"all\", \"every\", \"only when\",\n\"never\". Do not copy them into an acceptance criterion or an effect's\nfuture. A universal over open-ended input (what a model says, what a user\nasks, every phrasing, any call however the code writes it) can never be\nheld by a test, so each review finds one more case it misses. Translate it\ninto a closed list of the cases that matter, each held by a test, plus a\nnamed place where everything beyond the list is judged (a grader, the\nbattery, QA). Telora warns when a criterion or future you write quantifies\nover open-ended input; the warning never refuses the write.\n\n## PRD: \"build a working app in one run\"\n\nA **PRD** sits one altitude above Focus (Product -> PRD -> Focus): a\nbounded, verifiable, retire-able milestone carrying a **Prerequisite Tree**\nof `goal` / `obstacle` / `overcome` nodes. Each `overcome` materializes\nas a focus; the daemon progressively arms the **frontier** of foci as\nupstream obstacles clear. This is the entry point a user means by \"build a\nfully working app in one go.\"\n\nIt is NOT big-bang generation: you author the tree once, commit a path,\nand the differential loop walks the frontier to completion -- the execution\nunderneath is still the normal focus -> delivery -> issue + review loop.\n\nThe PRD tools are **lazy-loaded** -- they do not exist until you load the\ndomain. If you don't see `telora_prd` / `telora_prd_tree`, run:\n\n```\ntelora_discover { action: \"load\", domain: \"prd\" }\n```\n\nThen: `telora_prd` create (referencing a Vision) -> `telora_prd_tree`\nauthor nodes (an obstacle's `clearancePredicate` is OPTIONAL and advisory --\nthe frontier advances as upstream obstacles clear via focus-completion, i.e.\neach overcome's focus finishing its deliveries' verify gates, not via a\nper-obstacle predicate) + edges -> commit a pathway -> `materialize_overcome`\neach into a focus. Authoring STOPS there, at **scoped, un-armed** -- arming\nthe daemon PRD loop is a human go-signal (the activation decision above),\nnot the tail of authoring, unless that go-signal is durably delegated. All\nauthoring is harness+MCP; there is no Telora authoring UI.\n\n## Issue workflow\n\n`To Do` -> `In Progress` -> `In Review` / `Blocked` -> `Done`.\n\nIssue types: **Context Group**, **Task**, **Bug**.\n\nMovement rules:\n\n- An issue MUST be set to `In Progress` before any work begins on it.\n- Never skip `In Progress`. Never move directly from `To Do` to `Done`.\n- Set status with `telora_product_issue` action=update.\n\nDelivery and focus stages advance automatically based on issue\nactivity. Agents never set delivery executionStatus directly.\n\n## Migration numbers (claim, never compute)\n\nIf this product declares its migration numbering\n(`telora.migrations.json`), a migration number is CLAIMED ONCE through\nTelora before the file is named -- never read from the worktree you are\nstanding in:\n\n```\ntelora_discover { action: \"load\", domain: \"migrations\" }\ntelora_product_migration { action: \"claim\", productId, focusId, tag: \"<name>\" }\n```\n\nTwo focuses armed at once on one product work in separate worktrees cut\nfrom the same base, so \"the next free number\" computed locally is the same\nnumber the sibling just computed. Git sees no conflict -- the filenames\ndiffer -- and it surfaces only when the migrations run in order. This\napplies to a human or an inline session numbering by hand exactly as it\napplies to an agent team: the rule is about the base you are reading from,\nnot about who is reading it.\n\nA refusal is deliberate, never a cue to number by hand: fix the declaration\nor the reported cause.\n\n## Commit attribution (MANDATORY: one trailer per commit)\n\nEvery delivery on a focus shares ONE branch, so their commits interleave.\nThe only way the verify gate can judge a delivery against ITS OWN work is a\nper-commit marker. On EVERY commit you make for a delivery, add a git trailer\nnaming the delivery the work belongs to:\n\n```\nTelora-Delivery: <deliveryId>\n```\n\nStamp it with git's own trailer machinery so an appended `Co-Authored-By`\ncannot void it:\n\n```\ngit commit --trailer \"Telora-Delivery: <deliveryId>\" -m \"<subject>\"\n```\n\nDo NOT pass it as its own `-m` paragraph (`-m \"Telora-Delivery: ...\"`): git\nparses only the last paragraph as trailers, so an appended `Co-Authored-By`\nsilently voids it. A `commit-msg` git hook in this worktree ENFORCES this --\na commit whose message lacks a well-formed `Telora-Delivery: <uuid>` trailer\nis REFUSED, with the exact line to add printed. Fix it and re-commit; do not\nescalate.\n\nA commit that genuinely belongs to NO delivery declares that explicitly: merge\ncommits are exempt by shape (git sets `MERGE_HEAD`), and any other\ndelivery-less housekeeping commit carries the non-delivery sentinel:\n\n```\ngit commit --trailer \"Telora-Delivery: none\" -m \"<subject>\"\n```\n\nNever borrow a real delivery id for a commit that is not that delivery's work.\nThat is false attribution -- it folds a commit that is not its own into the\nborrowed delivery's verify evidence. The sentinel is the sanctioned escape.\n\n## MCP tool surface (what's available in this session)\n\nThe Telora MCP server is registered in `.mcp.json`. Core tool families:\n\n- `telora_product` -- list/get/create/update products\n- `telora_product_focus` -- focuses under a product\n- `telora_product_delivery` -- deliveries under a focus\n- `telora_product_issue` -- issues (Context Groups, Tasks, Bugs) under a delivery\n- `telora_agent` -- agent roles, escalation requests\n- `telora_loop_*` -- loop documents, questions, answers\n- `telora_discover` -- on-demand registration of deferred tool domains\n\nResolve the live tool list at runtime via `telora_discover` rather than\nhard-coding a list that drifts.\n\n## Human-vs-agent boundaries\n\n- Humans own **intent**, **activation**, and **completion**.\n - Intent: what capability matters, what changes when. Pre-handoff.\n - Activation (arming): the go/no-go spend decision -- setting the focus's\n `assignedAgentRoleId` to hand it to the daemon team. Scoping ends\n **scoped, un-armed**; arming is a human go-signal unless durably\n delegated. Sits between intent and completion.\n - Completion: closing the loop on whether a focus is done. Post-handoff.\n- Agents own **scoping** and **execution**.\n - Scoping: decomposing a focus into deliveries, deliveries into\n issues, restructuring mid-flight as the agent learns more. Scoping\n ENDS at **scoped, un-armed** -- it never arms the focus.\n - Execution: writing code, running tests, committing, reporting.\n\nDo not ask humans for operational details they expect the agent to figure\nout. Do not silently complete a focus on the human's behalf. Escalate\nwhen stuck via `telora_agent` action=escalate.\n\nWhen communicating with a human, refer to focuses, deliveries, and issues\nby their **title**, never their UUID. UUIDs are for tool calls only and must\nnot be surfaced in chat. MCP tool results carry both, so this is a\ncommunication choice, not a data-availability problem: keep the id in the\ntool call, name the work by its title in the conversation.\n\n## Differential signaling\n\nTelora is asymmetric: it moves reality toward intent, never the reverse.\nAgents do not lower the bar to make signals look better -- they escalate.\nEvery artifact (commit, work summary, gate result) is signal toward the\ndeclared intent; raw activity without intent reduction is noise.\n\nA short corrective comment from the user is high-signal -- treat brief\npushback as the most important input in the session.\n\n## Provenance: record what informed your intent\n\nWhen you and the human set Telora intent after looking at an external\ntracker (e.g. a client's Linear workspace), record WHERE that intent came\nfrom. A connected tracker is a **source for determining intent, not intent\nitself**: Telora owns intent, it is read strictly one-way, and Telora's\nintent is never written back to the tracker.\n\n- To read the tracker in-session, use the integrations tools\n (`telora_external_data_source` resolve, then `telora_linear`). Pull the\n issue(s) the human points at, discuss them together, then set intent in\n Telora (a focus, delivery, issue, reality-tree node, loop question, or\n PRD node).\n- Whenever tracker content SHAPED one of those entities, record an\n `informed_by` reference with `telora_external_reference` create, naming\n the entity + the external identifier (e.g. TIN-5) + a one-line note on\n HOW it informed the entity. The reference is a POINTER, never a copy --\n so a later reader can trace agreed intent back to its source, and a\n change to the source can be surfaced to the intent that leaned on it.\n\n## Workflows and policies\n\n- **Workflow**: stage directives shape agent behavior at discrete\n transitions. What context the agent sees (assembly recipes), what tools\n it can use, how it thinks (prompt + model). Live in Telora's\n `workflow_stages.agent_directive` JSONB.\n- **Policy** (organizational, deferred): cross-cutting constraints that\n feed into stage directives.\n\nWhen you cross a stage transition, the daemon may inject context or spawn\na fresh sub-agent per the directive. Don't override that flow without a\nclear reason.\n";
|
|
33
33
|
/**
|
|
34
34
|
* Render a fresh-repo CLAUDE.md.
|
|
35
35
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AACnE,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAE/D;;;;;;GAMG;AACH;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,wDACY,CAAC;AAExD,eAAO,MAAM,SAAS,0wgBAoUrB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CASjE"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// packages/daemon/src/shell/product-scaffold.test.ts,
|
|
5
5
|
// packages/daemon/src/shell/unified-shell-claude-md-refresh.test.ts,
|
|
6
6
|
// packages/daemon/src/spawn/migration-numbering-wiring.test.ts,
|
|
7
|
+
// packages/daemon/src/templates/seed-bounded-universals.test.ts,
|
|
7
8
|
// packages/daemon/src/templates/seed-cause-targeting.test.ts,
|
|
8
9
|
// packages/daemon/src/templates/seed-execution-polarity.test.ts,
|
|
9
10
|
// packages/daemon/src/templates/seed-open-intent-scoping.test.ts,
|
|
@@ -166,6 +167,17 @@ those effects' futures are the focus's criteria, judged at the focus
|
|
|
166
167
|
review. An effect an older injection targets directly stays covered,
|
|
167
168
|
labelled declared rather than earned.
|
|
168
169
|
|
|
170
|
+
**Intent speaks in universals; criteria must not.** A product owner
|
|
171
|
+
states intent in universals -- "any", "all", "every", "only when",
|
|
172
|
+
"never". Do not copy them into an acceptance criterion or an effect's
|
|
173
|
+
future. A universal over open-ended input (what a model says, what a user
|
|
174
|
+
asks, every phrasing, any call however the code writes it) can never be
|
|
175
|
+
held by a test, so each review finds one more case it misses. Translate it
|
|
176
|
+
into a closed list of the cases that matter, each held by a test, plus a
|
|
177
|
+
named place where everything beyond the list is judged (a grader, the
|
|
178
|
+
battery, QA). Telora warns when a criterion or future you write quantifies
|
|
179
|
+
over open-ended input; the warning never refuses the write.
|
|
180
|
+
|
|
169
181
|
## PRD: "build a working app in one run"
|
|
170
182
|
|
|
171
183
|
A **PRD** sits one altitude above Focus (Product -> PRD -> Focus): a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uGAAuG;AACvG,8DAA8D;AAC9D,wDAAwD;AACxD,uEAAuE;AACvE,kEAAkE;AAClE,gEAAgE;AAChE,mEAAmE;AACnE,oEAAoE;AACpE,kEAAkE;AAClE,gBAAgB;AAEhB;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,4BAA4B,CAAC;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAE/D;;;;;;GAMG;AACH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,8BAA8B,GACzC,qDAAqD,CAAC;AAExD,MAAM,CAAC,MAAM,SAAS,GAAG
|
|
1
|
+
{"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uGAAuG;AACvG,8DAA8D;AAC9D,wDAAwD;AACxD,uEAAuE;AACvE,kEAAkE;AAClE,mEAAmE;AACnE,gEAAgE;AAChE,mEAAmE;AACnE,oEAAoE;AACpE,kEAAkE;AAClE,gBAAgB;AAEhB;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,4BAA4B,CAAC;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAE/D;;;;;;GAMG;AACH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,8BAA8B,GACzC,qDAAqD,CAAC;AAExD,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoUxB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,WAA0B;IACvD,MAAM,WAAW,GAAG,WAAW;QAC7B,CAAC,CAAC,kCAAkC,WAAW,SAAS;QACxD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,KAAK,GACT,GAAG,sBAAsB,IAAI;QAC7B,GAAG,WAAW,GAAG,SAAS,EAAE;QAC5B,GAAG,oBAAoB,IAAI,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
-
// Pinned by:
|
|
2
|
+
// Pinned by: 90 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/testing/fixtures/api-client.ts
|
|
3
3
|
// PINNED-BY-END
|
|
4
4
|
/** A fake ApiClient whose every call is answered by `handle`. */
|
|
5
5
|
export function makeFakeApiClient(handle) {
|
|
@@ -10,6 +10,11 @@ import type { CompletionMergeDriverDeps } from '../../merge/completion-merge-dri
|
|
|
10
10
|
import type { CompletionMergeGateDeps } from '../../merge/completion-merge-gate.js';
|
|
11
11
|
/** Gate deps: the candidate declares the CI judge; no local verdict exists. */
|
|
12
12
|
export declare function ciJudgeGateStubs(): Pick<CompletionMergeGateDeps, 'resolveCompletionJudge' | 'readLocalCandidateStatus'>;
|
|
13
|
-
/**
|
|
14
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Driver deps: nothing was re-pushed, re-pushes succeed, local runs start, no
|
|
15
|
+
* local failure or CI failure record is held, a red candidate's record is a
|
|
16
|
+
* no-op, and no red is checkable against the integration tip (so a red is
|
|
17
|
+
* routed as re-work, as it is without the check).
|
|
18
|
+
*/
|
|
19
|
+
export declare function inertJudgeDriverStubs(): Pick<CompletionMergeDriverDeps, 'candidateRepushed' | 'markCandidateRepushed' | 'repushCandidate' | 'startLocalRun' | 'readLocalFailure' | 'readCandidateFailures' | 'awaitFailureRecord' | 'recordCandidateRed' | 'attributeCandidateRed' | 'fileIntegrationRed'>;
|
|
15
20
|
//# sourceMappingURL=completion-judge-stubs.d.ts.map
|