@telora/daemon 0.22.239 → 0.22.245

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.
Files changed (110) hide show
  1. package/build-info.json +2 -2
  2. package/dist/ci/ci-red-attribution.js +1 -1
  3. package/dist/ci/ci-red-attribution.js.map +1 -1
  4. package/dist/ci/ci-status-git.js +1 -1
  5. package/dist/ci/ci-status-git.js.map +1 -1
  6. package/dist/completion/escalations.d.ts.map +1 -1
  7. package/dist/completion/escalations.js +1 -0
  8. package/dist/completion/escalations.js.map +1 -1
  9. package/dist/completion/merge-phase.d.ts +4 -4
  10. package/dist/completion/merge-phase.d.ts.map +1 -1
  11. package/dist/completion/merge-phase.js +10 -7
  12. package/dist/completion/merge-phase.js.map +1 -1
  13. package/dist/completion/review-breaker-hold.d.ts +107 -0
  14. package/dist/completion/review-breaker-hold.d.ts.map +1 -0
  15. package/dist/completion/review-breaker-hold.js +127 -0
  16. package/dist/completion/review-breaker-hold.js.map +1 -0
  17. package/dist/completion/review-exit-escalations.d.ts +9 -1
  18. package/dist/completion/review-exit-escalations.d.ts.map +1 -1
  19. package/dist/completion/review-exit-escalations.js +14 -3
  20. package/dist/completion/review-exit-escalations.js.map +1 -1
  21. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  22. package/dist/completion/review-exit-phase.js +2 -2
  23. package/dist/completion/review-exit-phase.js.map +1 -1
  24. package/dist/completion/state-cascade.d.ts +14 -12
  25. package/dist/completion/state-cascade.d.ts.map +1 -1
  26. package/dist/completion/state-cascade.js +28 -19
  27. package/dist/completion/state-cascade.js.map +1 -1
  28. package/dist/completion/team-lifecycle.d.ts +3 -3
  29. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  30. package/dist/completion/team-lifecycle.js +6 -5
  31. package/dist/completion/team-lifecycle.js.map +1 -1
  32. package/dist/merge/approval-gate-state.d.ts +24 -0
  33. package/dist/merge/approval-gate-state.d.ts.map +1 -0
  34. package/dist/merge/approval-gate-state.js +67 -0
  35. package/dist/merge/approval-gate-state.js.map +1 -0
  36. package/dist/merge/focus-merge.d.ts +3 -3
  37. package/dist/merge/focus-merge.d.ts.map +1 -1
  38. package/dist/merge/focus-merge.js +6 -6
  39. package/dist/merge/focus-merge.js.map +1 -1
  40. package/dist/merge/merge-back-loop.d.ts +3 -3
  41. package/dist/merge/merge-back-loop.d.ts.map +1 -1
  42. package/dist/merge/merge-back-loop.js +10 -10
  43. package/dist/merge/merge-back-loop.js.map +1 -1
  44. package/dist/merge/merge-gate-coverage.d.ts +32 -9
  45. package/dist/merge/merge-gate-coverage.d.ts.map +1 -1
  46. package/dist/merge/merge-gate-coverage.js +69 -18
  47. package/dist/merge/merge-gate-coverage.js.map +1 -1
  48. package/dist/queries/delivery-gate-state.d.ts +4 -2
  49. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  50. package/dist/queries/delivery-gate-state.js +8 -3
  51. package/dist/queries/delivery-gate-state.js.map +1 -1
  52. package/dist/queries/escalations.d.ts +2 -1
  53. package/dist/queries/escalations.d.ts.map +1 -1
  54. package/dist/queries/escalations.js +3 -3
  55. package/dist/queries/escalations.js.map +1 -1
  56. package/dist/queries/focus-criteria-standing.d.ts +2 -2
  57. package/dist/testing/fixtures/merge-log-capture.d.ts +5 -0
  58. package/dist/testing/fixtures/merge-log-capture.d.ts.map +1 -0
  59. package/dist/testing/fixtures/merge-log-capture.js +35 -0
  60. package/dist/testing/fixtures/merge-log-capture.js.map +1 -0
  61. package/dist/testing/fixtures/pending-spawn-world.js +1 -1
  62. package/dist/testing/fixtures/pending-spawn-world.js.map +1 -1
  63. package/dist/verify/commit-gate-configured.d.ts.map +1 -1
  64. package/dist/verify/commit-gate-configured.js +1 -0
  65. package/dist/verify/commit-gate-configured.js.map +1 -1
  66. package/dist/verify/gate-process-group.d.ts +40 -0
  67. package/dist/verify/gate-process-group.d.ts.map +1 -0
  68. package/dist/verify/gate-process-group.js +91 -0
  69. package/dist/verify/gate-process-group.js.map +1 -0
  70. package/dist/verify/no-verdict-record.d.ts +103 -0
  71. package/dist/verify/no-verdict-record.d.ts.map +1 -0
  72. package/dist/verify/no-verdict-record.js +218 -0
  73. package/dist/verify/no-verdict-record.js.map +1 -0
  74. package/dist/verify/timed-out-rendered-verdict.d.ts +40 -0
  75. package/dist/verify/timed-out-rendered-verdict.d.ts.map +1 -0
  76. package/dist/verify/timed-out-rendered-verdict.js +52 -0
  77. package/dist/verify/timed-out-rendered-verdict.js.map +1 -0
  78. package/dist/verify/verification-attribution-base.js +1 -1
  79. package/dist/verify/verification-attribution-base.js.map +1 -1
  80. package/dist/verify/verification-attribution.js +2 -2
  81. package/dist/verify/verification-attribution.js.map +1 -1
  82. package/dist/verify/verification-baseline-run.d.ts.map +1 -1
  83. package/dist/verify/verification-baseline-run.js +5 -7
  84. package/dist/verify/verification-baseline-run.js.map +1 -1
  85. package/dist/verify/verification-baseline.js +1 -1
  86. package/dist/verify/verification-baseline.js.map +1 -1
  87. package/dist/verify/verification-checkout.js +1 -1
  88. package/dist/verify/verification-checkout.js.map +1 -1
  89. package/dist/verify/verification-commit-sharing.d.ts.map +1 -1
  90. package/dist/verify/verification-commit-sharing.js +93 -10
  91. package/dist/verify/verification-commit-sharing.js.map +1 -1
  92. package/dist/verify/verification-default-on.js +1 -1
  93. package/dist/verify/verification-default-on.js.map +1 -1
  94. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  95. package/dist/verify/verification-deps-default.js +2 -0
  96. package/dist/verify/verification-deps-default.js.map +1 -1
  97. package/dist/verify/verification-deps.d.ts +8 -0
  98. package/dist/verify/verification-deps.d.ts.map +1 -1
  99. package/dist/verify/verification-deterministic.d.ts +8 -0
  100. package/dist/verify/verification-deterministic.d.ts.map +1 -1
  101. package/dist/verify/verification-deterministic.js +3 -6
  102. package/dist/verify/verification-deterministic.js.map +1 -1
  103. package/dist/worktree/provision.d.ts +6 -5
  104. package/dist/worktree/provision.d.ts.map +1 -1
  105. package/dist/worktree/provision.js +13 -8
  106. package/dist/worktree/provision.js.map +1 -1
  107. package/dist/worktree/verify-interlock.d.ts.map +1 -1
  108. package/dist/worktree/verify-interlock.js +2 -0
  109. package/dist/worktree/verify-interlock.js.map +1 -1
  110. package/package.json +1 -1
package/build-info.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "commitSha": "ca8b49027",
3
- "builtAt": "2026-09-25T02:35:15.386Z",
2
+ "commitSha": "03b4d6b71",
3
+ "builtAt": "2026-09-25T19:21:13.678Z",
4
4
  "expectedMigrations": [
5
5
  "20250829113330_create_org_nodes_table.sql",
6
6
  "20250829113402_fix_function_security_search_path.sql",
@@ -1,7 +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/ci/ci-owning-focus-resolve.test.ts
3
3
  // PINNED-BY-END
4
- import { runGitSync } from '../git/exec.js';
4
+ import { runGitSync } from '../git/types.js';
5
5
  import { getDeliveryContext } from '../queries/deliveries.js';
6
6
  import { readDeliveryTrailer, listRangeCommits } from '../resolvers/shared/git-diff.js';
7
7
  import { createLogger } from '../shell/log.js';
@@ -1 +1 @@
1
- {"version":3,"file":"ci-red-attribution.js","sourceRoot":"","sources":["../../src/ci/ci-red-attribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ci-red-attribution.js","sourceRoot":"","sources":["../../src/ci/ci-red-attribution.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@
18
18
  *
19
19
  * @module ci-status-git
20
20
  */
21
- import { runGitSync } from '../git/exec.js';
21
+ import { runGitSync } from '../git/types.js';
22
22
  import { createGitNativeCiStatusReader, } from './ci-status.js';
23
23
  import { loadEnvConfig } from '@telora/daemon-core';
24
24
  /** The per-SHA CI status ref namespace. State is encoded in the ref name. */
@@ -1 +1 @@
1
- {"version":3,"file":"ci-status-git.js","sourceRoot":"","sources":["../../src/ci/ci-status-git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ci-status-git.js","sourceRoot":"","sources":["../../src/ci/ci-status-git.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"escalations.d.ts","sourceRoot":"","sources":["../../src/completion/escalations.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,gBAAgB,EAA0B,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAE/E,wEAAwE;AACxE,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAOlC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;CAC5C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,mBAAmB,EAC1B,SAAS,CAAC,EAAE,yBAAyB,EACrC,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAyEf"}
1
+ {"version":3,"file":"escalations.d.ts","sourceRoot":"","sources":["../../src/completion/escalations.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,gBAAgB,EAA0B,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAE/E,wEAAwE;AACxE,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAOlC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;CAC5C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,mBAAmB,EAC1B,SAAS,CAAC,EAAE,yBAAyB,EACrC,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAyEf"}
@@ -2,6 +2,7 @@
2
2
  // Pinned by: packages/daemon/src/prd/prd-controller-no-role-escalation.test.ts,
3
3
  // packages/daemon/src/prd/prd-frontier-arm-refused.test.ts,
4
4
  // packages/daemon/src/prd/prd-frontier-arming.test.ts,
5
+ // packages/daemon/src/verify/verification-commit-sharing.test.ts,
5
6
  // packages/daemon/src/verify/verification-model-unavailable-hold.test.ts
6
7
  // PINNED-BY-END
7
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"escalations.js","sourceRoot":"","sources":["../../src/completion/escalations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"escalations.js","sourceRoot":"","sources":["../../src/completion/escalations.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ import { mergeFocusBranch } from '../merge/focus-merge.js';
13
13
  import { mergeIntegrationToMain } from '../git/index.js';
14
14
  import { fileCdPushEscalation, shouldFileCdPushEscalation } from '../ci/ci-escalation.js';
15
15
  import { branchHasUnmergedCommits } from '../git/exec.js';
16
- import { type MergeGateTarget } from '../merge/merge-gate-coverage.js';
16
+ import { type MergeGateDecision, type MergeGateTarget } from '../merge/merge-gate-coverage.js';
17
17
  import type { CiStatusReader } from '../ci/ci-status.js';
18
18
  /**
19
19
  * Decide whether mergeFocusBranch is a candidate on team exit.
@@ -61,8 +61,8 @@ export declare function selectWorkedDeliveryIds(deliveries: readonly {
61
61
  export interface FocusMergeAttemptDeps {
62
62
  branchHasUnmergedCommits: typeof branchHasUnmergedCommits;
63
63
  mergeFocusBranch: typeof mergeFocusBranch;
64
- /** Why the merge must hold (ungated or unreadable coverage), or null to merge. */
65
- readMergeGateHold: (target: MergeGateTarget) => Promise<string | null>;
64
+ /** Hold (ungated or unreadable coverage, with why) or admit (with the anchors that admitted the merge). */
65
+ readMergeGate: (target: MergeGateTarget) => Promise<MergeGateDecision>;
66
66
  }
67
67
  export interface FocusMergeAttemptResult {
68
68
  attempted: boolean;
@@ -77,7 +77,7 @@ export interface FocusMergeAttemptResult {
77
77
  * 1. Branch state: does the focus branch actually have committed work?
78
78
  * 2. Team gate: planningPhase + readOnly safety nets in shouldAttemptMerge.
79
79
  * 3. Gate coverage: every commit the merge would add has passed the focus's
80
- * review or verify gate (readMergeGateHold). An ungated commit -- a WIP
80
+ * review or verify gate (readMergeGate). An ungated commit -- a WIP
81
81
  * capture wip-preserve just made included -- or an unreadable approving
82
82
  * review/verdict holds the merge; integration is untouched and the
83
83
  * merge-back loop or the next team exit asks again.
@@ -1 +1 @@
1
- {"version":3,"file":"merge-phase.d.ts","sourceRoot":"","sources":["../../src/completion/merge-phase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge-phase.d.ts","sourceRoot":"","sources":["../../src/completion/merge-phase.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAyB,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACtH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,eAAe,GAAG,UAAU,CAAC,EAC7D,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAIT;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,MAAM,CAI3D,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,EACrE,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,GACjC,MAAM,EAAE,CAIV;AAID,MAAM,WAAW,qBAAqB;IACpC,wBAAwB,EAAE,OAAO,wBAAwB,CAAC;IAC1D,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,2GAA2G;IAC3G,aAAa,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACxE;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,IAAI,GAAE,qBAIL,GACA,OAAO,CAAC,uBAAuB,CAAC,CA2ClC;AAID;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,GAAG,IAAI,CAkBP;AAID;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACvD,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IACvC,0BAA0B,CAAC,EAAE,OAAO,0BAA0B,CAAC;IAC/D,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B,EAAE,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6GnD"}
@@ -9,7 +9,7 @@ import { mergeIntegrationToMain } from '../git/index.js';
9
9
  import { resolveCiDecision } from '../workflow/pipeline-config.js';
10
10
  import { fileCdPushEscalation, shouldFileCdPushEscalation } from '../ci/ci-escalation.js';
11
11
  import { branchHasUnmergedCommits } from '../git/exec.js';
12
- import { readMergeGateHold } from '../merge/merge-gate-coverage.js';
12
+ import { readMergeGateDecision } from '../merge/merge-gate-coverage.js';
13
13
  import { createLogger } from '../shell/log.js';
14
14
  const log = createLogger({ module: 'ci-merge' });
15
15
  // ── Merge gate ───────────────────────────────────────────────────────
@@ -75,7 +75,7 @@ export function selectWorkedDeliveryIds(deliveries, alreadyMerged) {
75
75
  * 1. Branch state: does the focus branch actually have committed work?
76
76
  * 2. Team gate: planningPhase + readOnly safety nets in shouldAttemptMerge.
77
77
  * 3. Gate coverage: every commit the merge would add has passed the focus's
78
- * review or verify gate (readMergeGateHold). An ungated commit -- a WIP
78
+ * review or verify gate (readMergeGate). An ungated commit -- a WIP
79
79
  * capture wip-preserve just made included -- or an unreadable approving
80
80
  * review/verdict holds the merge; integration is untouched and the
81
81
  * merge-back loop or the next team exit asks again.
@@ -94,13 +94,13 @@ export function selectWorkedDeliveryIds(deliveries, alreadyMerged) {
94
94
  export async function attemptFocusMerge(config, teamState, sessionId, workedDeliveryIds, deps = {
95
95
  branchHasUnmergedCommits,
96
96
  mergeFocusBranch,
97
- readMergeGateHold: (target) => readMergeGateHold(target),
97
+ readMergeGate: (target) => readMergeGateDecision(target),
98
98
  }) {
99
99
  const branchHasCommits = deps.branchHasUnmergedCommits(teamState.branchName, config.integrationBranch, config.repoPath);
100
100
  if (!shouldAttemptMerge(teamState, branchHasCommits)) {
101
101
  return { attempted: false, mergeSucceeded: false, exitReason: null };
102
102
  }
103
- const hold = await deps.readMergeGateHold({
103
+ const gate = await deps.readMergeGate({
104
104
  organizationId: teamState.organizationId,
105
105
  productId: teamState.productId,
106
106
  focusId: teamState.focusId,
@@ -108,12 +108,15 @@ export async function attemptFocusMerge(config, teamState, sessionId, workedDeli
108
108
  integrationBranch: config.integrationBranch,
109
109
  repoPath: config.repoPath,
110
110
  });
111
- if (hold !== null) {
111
+ if (gate.hold !== null) {
112
112
  log.info(`[merge-gate] Not merging ${teamState.branchName} into ${config.integrationBranch} for "${teamState.focusName}": ` +
113
- `${hold}. The commits stay on the focus branch for the next team or review.`, { focusId: teamState.focusId });
114
- return { attempted: false, mergeSucceeded: false, exitReason: `Merge to ${config.integrationBranch} held: ${hold}.` };
113
+ `${gate.hold}. The commits stay on the focus branch for the next team or review.`, { focusId: teamState.focusId });
114
+ return { attempted: false, mergeSucceeded: false, exitReason: `Merge to ${config.integrationBranch} held: ${gate.hold}.` };
115
115
  }
116
116
  const mergeResult = await deps.mergeFocusBranch(config, teamState, sessionId, teamState.branchName, workedDeliveryIds);
117
+ if (mergeResult.mergeSucceeded) {
118
+ log.info(`[merge-gate] Merged ${teamState.branchName} into ${config.integrationBranch} for "${teamState.focusName}" (${gate.admittedBy})`, { focusId: teamState.focusId });
119
+ }
117
120
  return {
118
121
  attempted: true,
119
122
  mergeSucceeded: mergeResult.mergeSucceeded,
@@ -1 +1 @@
1
- {"version":3,"file":"merge-phase.js","sourceRoot":"","sources":["../../src/completion/merge-phase.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,2DAA2D;AAC3D,+DAA+D;AAC/D,gBAAgB;AAahB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAwB,MAAM,iCAAiC,CAAC;AAE1F,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AAGjD,wEAAwE;AAExE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAA6D,EAC7D,gBAAyB;IAEzB,IAAI,SAAS,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,SAAS,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAwB,IAAI,GAAG,CAAC;IACvE,QAAQ;IACR,QAAQ;IACR,MAAM;CACP,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAqE,EACrE,aAAkC;IAElC,OAAO,UAAU;SACd,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAClG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC;AAiBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAoB,EACpB,SAAyB,EACzB,SAAiB,EACjB,iBAA2B,EAC3B,OAA8B;IAC5B,wBAAwB;IACxB,gBAAgB;IAChB,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;CACzD;IAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CACpD,SAAS,CAAC,UAAU,EACpB,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,QAAQ,CAChB,CAAC;IACF,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACvE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;QACxC,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC,CAAC;IACH,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,GAAG,CAAC,IAAI,CACN,4BAA4B,SAAS,CAAC,UAAU,SAAS,MAAM,CAAC,iBAAiB,SAAS,SAAS,CAAC,SAAS,KAAK;YAClH,GAAG,IAAI,qEAAqE,EAC5E,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAC/B,CAAC;QACF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,MAAM,CAAC,iBAAiB,UAAU,IAAI,GAAG,EAAE,CAAC;IACxH,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC7C,MAAM,EACN,SAAS,EACT,SAAS,EACT,SAAS,CAAC,UAAU,EACpB,iBAAiB,CAClB,CAAC;IACF,OAAO;QACL,SAAS,EAAE,IAAI;QACf,cAAc,EAAE,WAAW,CAAC,cAAc;QAC1C,UAAU,EAAE,WAAW,CAAC,UAAU,IAAI,IAAI;KAC3C,CAAC;AACJ,CAAC;AAED,wEAAwE;AAExE;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAM7C;IACC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IACpF,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACjD,qBAAqB,CAAC;gBACpB,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,SAAS;gBACT,UAAU;gBACV,YAAY,EAAE,SAAS,CAAC,SAAS;gBACjC,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,UAAU,EAAE,eAAe,IAAI,SAAS;aACzC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CACb,GAAG,CAAC,IAAI,CAAC,qDAAqD,UAAU,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CACrG,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAUtC,EAAE,OAA6B,EAAE;IAChC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;IACnF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,KAAK,OAAO,CAAC;IAC/B,MAAM,wBAAwB,GAAG,IAAI,CAAC,sBAAsB,IAAI,sBAAsB,CAAC;IACvF,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC;IAC/D,MAAM,4BAA4B,GAAG,IAAI,CAAC,0BAA0B,IAAI,0BAA0B,CAAC;IACnG,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC;IACjF,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;IAEtC,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/D,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC5B,GAAG,CAAC,IAAI,CACN,iBAAiB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,oCAAoC,SAAS,CAAC,OAAO,MAAM,SAAS,sBAAsB,CACjI,CAAC;QACF,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC;IACnD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,2EAA2E;IAC3E,iEAAiE;IACjE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvC,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,gCAAgC,SAAS,8CAA8C,aAAa,IAAI,YAAY,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9K,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,oCAAoC,SAAS,eAAe,aAAa,IAAI,YAAY,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxI,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC;YAC9C,MAAM;YACN,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS;YACT,YAAY;YACZ,aAAa;YACb,yDAAyD;YACzD,yEAAyE;YACzE,oEAAoE;YACpE,0EAA0E;YAC1E,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QAEH,2EAA2E;QAC3E,4EAA4E;QAC5E,wEAAwE;QACxE,2EAA2E;QAC3E,0EAA0E;QAC1E,yEAAyE;QACzE,qCAAqC;QACrC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,kBAAkB;oBACpD,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,kBAAkB,GAAG;oBAC5C,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,mCAAmC,SAAS,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC,CAAC;YACjH,CAAC;YACD,OAAO,IAAI,OAAO,UAAU,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACxD,CAAC;QAED,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,GAAG,CAAC,IAAI,CACN,IAAI,OAAO,oBAAoB,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,CAAC,GAAG,eAAe,SAAS,CAAC,OAAO,MAAM,SAAS,IAAI,CACnI,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,qDAAqD,SAAS,CAAC,OAAO,MAAM,SAAS,IAAI,CAAC,CAAC;YAC1G,CAAC;YACD,yEAAyE;YACzE,mEAAmE;YACnE,wEAAwE;YACxE,sEAAsE;YACtE,sEAAsE;YACtE,mEAAmE;YACnE,MAAM,aAAa,GAAG,MAAM,CAAC,iBAAiB;gBAC5C,CAAC,CAAC,IAAI,GAAG,CAAS,MAAM,CAAC,iBAAiB,CAAC;gBAC3C,CAAC,CAAC,CAAC,GAAG,EAAE;oBACJ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAS,SAAS,CAAC,iBAAiB,CAAC,CAAC;oBACzD,IAAI,cAAc,EAAE,CAAC;wBACnB,KAAK,MAAM,EAAE,IAAI,iBAAiB;4BAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAClD,CAAC;oBACD,OAAO,GAAG,CAAC;gBACb,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC3E,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;gBACvC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CACjD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,QAAQ,eAAe,UAAU,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAC7F,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,OAAO,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;QAC3F,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,SAAS,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3F,IAAI,4BAA4B,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC;YACzD,MAAM,sBAAsB,CAAC;gBAC3B,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,SAAS;gBACT,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,SAAS;gBACT,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,SAAS,EAAE,QAAQ,CAAC,KAAM;aAC3B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,OAAO,YAAY,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,SAAS,IAAI,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC/F,OAAO,IAAI,OAAO,WAAY,GAAa,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"merge-phase.js","sourceRoot":"","sources":["../../src/completion/merge-phase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * The review hand-off breaker HOLD, read where it is enforced -- with a close
3
+ * half the hold does not block.
4
+ *
5
+ * When the hand-off breaker crosses its cap (review-exit-escalations.ts
6
+ * recordHandoffAndMaybeTerminate) it files one review_handoff_exhausted
7
+ * escalation, and the state cascade declines to open the focus's review window
8
+ * while that row is open. Its only automatic resolve used to run inside a
9
+ * review-session exit that recorded a delta (review-exit-progress.ts) -- but the
10
+ * hold is exactly what stops a review session from running, so nothing could
11
+ * record that delta: a circular wait. On 2026-09-25 a focus fixed its blocking
12
+ * finding after the crossing, verified and merged the fix, and sat at verify
13
+ * with every issue Done until an operator resolved the row by hand.
14
+ *
15
+ * The close half lives here, beside the read: the escalation records the
16
+ * focus-branch head it crossed on (metadata.crossed_on_head, the head the
17
+ * crossing review covered). Each cascade poll compares the live focus-branch
18
+ * head with it. A different head IS the delta the hold waits for -- a commit
19
+ * landed that no review has seen -- so the poll resolves the escalation itself
20
+ * and the window opens in the same poll. An equal head keeps the hold exactly
21
+ * as before (the empty-loop bound is untouched), and a row that recorded no head
22
+ * (filed before this module) keeps the old behavior: it holds until resolved.
23
+ *
24
+ * The same read returns the holding row, so the hold's log line can name the
25
+ * escalation, its id and what ends it (describeBreakerHold). The escalation's
26
+ * own text states the same end condition (breakerHoldEndCondition), so the two
27
+ * places a held focus is read cannot disagree.
28
+ *
29
+ * @module completion/review-breaker-hold
30
+ */
31
+ import { listOpenFocusEscalationsOfKind } from '../queries/escalations.js';
32
+ import { resolveRef as defaultResolveRef } from '../git/index.js';
33
+ import type { EscalationResolutionClass } from '@telora/daemon-core';
34
+ /** The escalation kind the hand-off breaker files; its open row is the hold. */
35
+ export declare const REVIEW_HANDOFF_EXHAUSTED_ESCALATION_KIND = "review_handoff_exhausted";
36
+ /** The metadata key the crossing head is recorded under at filing. */
37
+ export declare const CROSSED_ON_HEAD_KEY = "crossed_on_head";
38
+ /** An open breaker escalation that is holding the review window. */
39
+ export interface StandingBreakerHold {
40
+ escalationKind: string;
41
+ escalationId: string;
42
+ /** The focus-branch head the breaker crossed on, or null (a row filed before it was recorded). */
43
+ crossedOnHead: string | null;
44
+ /** The row's disposition (agent_resolvable for a machine-lane observation), or null when unread. */
45
+ disposition: string | null;
46
+ }
47
+ /**
48
+ * What one poll's read of the breaker found: no open row, a hold still standing,
49
+ * or a hold this poll RELEASED because the focus branch moved past its crossing
50
+ * head. `released` is distinct from `none` on purpose: the branch moving is a
51
+ * change the delivery aggregate need not show, so the cascade must not let its
52
+ * unchanged-aggregate backoff swallow the reopen that the release owes.
53
+ */
54
+ export type BreakerHoldReading = {
55
+ state: 'none';
56
+ } | {
57
+ state: 'held';
58
+ hold: StandingBreakerHold;
59
+ } | {
60
+ state: 'released';
61
+ crossedOnHeads: Array<string | null>;
62
+ liveHead: string;
63
+ resolved: number;
64
+ };
65
+ /** Read the crossing head a breaker row recorded; null when absent or malformed. */
66
+ export declare function readCrossedOnHead(metadata: Record<string, unknown> | null | undefined): string | null;
67
+ /**
68
+ * Pure: has the focus branch moved past the head the breaker crossed on? True
69
+ * only when BOTH heads are known and differ. An unrecorded head (a legacy row)
70
+ * or an unreadable live head is NOT a move -- the hold is kept.
71
+ */
72
+ export declare function focusMovedPastCrossing(crossedOnHead: string | null, liveHead: string | null): boolean;
73
+ /**
74
+ * The condition that ends a breaker hold, in words -- shared by the escalation
75
+ * text and the cascade's hold log line. Names no operator unless the row was
76
+ * routed to one: a machine-lane (agent_resolvable) row is resolved by the agent
77
+ * session that routes it, and saying it waits for an operator sent a team to
78
+ * blame the wrong escalation on 2026-09-25.
79
+ */
80
+ export declare function breakerHoldEndCondition(crossedOnHead: string | null, disposition?: string | null): string;
81
+ /** The cascade's hold log line body: which escalation holds the window, and what ends it. */
82
+ export declare function describeBreakerHold(hold: StandingBreakerHold): string;
83
+ export interface BreakerHoldDeps {
84
+ /** Open review_handoff_exhausted rows for the focus (id + metadata + disposition). */
85
+ listOpen: typeof listOpenFocusEscalationsOfKind;
86
+ /** The live focus-branch head (null when unreadable). */
87
+ resolveRef: typeof defaultResolveRef;
88
+ /** Resolve the focus's open breaker rows (the close-half write); returns the count resolved. */
89
+ resolveHold: (focusId: string, resolutionClass: EscalationResolutionClass, notes: string) => Promise<number>;
90
+ }
91
+ export declare const defaultBreakerHoldDeps: BreakerHoldDeps;
92
+ export interface BreakerHoldContext {
93
+ focusId: string;
94
+ /** Pinned focus branch identity (product_focuses.branch_name), or null. */
95
+ branchName: string | null;
96
+ /** Product repo path -- the branch ref lives in its git dir (worktrees share it), as the review spawn reads it. */
97
+ repoPath: string;
98
+ }
99
+ /**
100
+ * Read the breaker hold for one focus, ending it first when the focus branch has
101
+ * moved past every open row's crossing head. Returns `held` with the holding row,
102
+ * `released` when this poll ended it, or `none` when no row is open. A list
103
+ * failure THROWS: the caller owns the fail-open policy. A failed resolve keeps
104
+ * the hold (the next poll retries).
105
+ */
106
+ export declare function readBreakerHold(ctx: BreakerHoldContext, deps?: BreakerHoldDeps): Promise<BreakerHoldReading>;
107
+ //# sourceMappingURL=review-breaker-hold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-breaker-hold.d.ts","sourceRoot":"","sources":["../../src/completion/review-breaker-hold.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EACL,8BAA8B,EAE/B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAKrE,gFAAgF;AAChF,eAAO,MAAM,wCAAwC,6BAA6B,CAAC;AAEnF,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD,oEAAoE;AACpE,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oGAAoG;IACpG,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC5C;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpG,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGrG;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAErG;AAMD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,GAAE,MAAM,GAAG,IAAmC,GAAG,MAAM,CASvI;AAED,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAGrE;AAED,MAAM,WAAW,eAAe;IAC9B,sFAAsF;IACtF,QAAQ,EAAE,OAAO,8BAA8B,CAAC;IAChD,yDAAyD;IACzD,UAAU,EAAE,OAAO,iBAAiB,CAAC;IACrC,gGAAgG;IAChG,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,yBAAyB,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9G;AAED,eAAO,MAAM,sBAAsB,EAAE,eAKpC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,mHAAmH;IACnH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,kBAAkB,EACvB,IAAI,GAAE,eAAwC,GAC7C,OAAO,CAAC,kBAAkB,CAAC,CAiC7B"}
@@ -0,0 +1,127 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/completion/review-exit-breaker-hold.test.ts
3
+ // PINNED-BY-END
4
+ /**
5
+ * The review hand-off breaker HOLD, read where it is enforced -- with a close
6
+ * half the hold does not block.
7
+ *
8
+ * When the hand-off breaker crosses its cap (review-exit-escalations.ts
9
+ * recordHandoffAndMaybeTerminate) it files one review_handoff_exhausted
10
+ * escalation, and the state cascade declines to open the focus's review window
11
+ * while that row is open. Its only automatic resolve used to run inside a
12
+ * review-session exit that recorded a delta (review-exit-progress.ts) -- but the
13
+ * hold is exactly what stops a review session from running, so nothing could
14
+ * record that delta: a circular wait. On 2026-09-25 a focus fixed its blocking
15
+ * finding after the crossing, verified and merged the fix, and sat at verify
16
+ * with every issue Done until an operator resolved the row by hand.
17
+ *
18
+ * The close half lives here, beside the read: the escalation records the
19
+ * focus-branch head it crossed on (metadata.crossed_on_head, the head the
20
+ * crossing review covered). Each cascade poll compares the live focus-branch
21
+ * head with it. A different head IS the delta the hold waits for -- a commit
22
+ * landed that no review has seen -- so the poll resolves the escalation itself
23
+ * and the window opens in the same poll. An equal head keeps the hold exactly
24
+ * as before (the empty-loop bound is untouched), and a row that recorded no head
25
+ * (filed before this module) keeps the old behavior: it holds until resolved.
26
+ *
27
+ * The same read returns the holding row, so the hold's log line can name the
28
+ * escalation, its id and what ends it (describeBreakerHold). The escalation's
29
+ * own text states the same end condition (breakerHoldEndCondition), so the two
30
+ * places a held focus is read cannot disagree.
31
+ *
32
+ * @module completion/review-breaker-hold
33
+ */
34
+ import { listOpenFocusEscalationsOfKind, resolveOpenFocusEscalationsOfKind, } from '../queries/escalations.js';
35
+ import { DISPOSITION_AGENT_RESOLVABLE } from '../queries/escalation-dispositions.js';
36
+ import { resolveRef as defaultResolveRef } from '../git/index.js';
37
+ import { createLogger } from '../shell/log.js';
38
+ const log = createLogger({ module: 'state-cascade' });
39
+ /** The escalation kind the hand-off breaker files; its open row is the hold. */
40
+ export const REVIEW_HANDOFF_EXHAUSTED_ESCALATION_KIND = 'review_handoff_exhausted';
41
+ /** The metadata key the crossing head is recorded under at filing. */
42
+ export const CROSSED_ON_HEAD_KEY = 'crossed_on_head';
43
+ /** Read the crossing head a breaker row recorded; null when absent or malformed. */
44
+ export function readCrossedOnHead(metadata) {
45
+ const value = metadata?.[CROSSED_ON_HEAD_KEY];
46
+ return typeof value === 'string' && value.length > 0 ? value : null;
47
+ }
48
+ /**
49
+ * Pure: has the focus branch moved past the head the breaker crossed on? True
50
+ * only when BOTH heads are known and differ. An unrecorded head (a legacy row)
51
+ * or an unreadable live head is NOT a move -- the hold is kept.
52
+ */
53
+ export function focusMovedPastCrossing(crossedOnHead, liveHead) {
54
+ return !!crossedOnHead && !!liveHead && crossedOnHead !== liveHead;
55
+ }
56
+ function shortSha(sha) {
57
+ return sha.slice(0, 12);
58
+ }
59
+ /**
60
+ * The condition that ends a breaker hold, in words -- shared by the escalation
61
+ * text and the cascade's hold log line. Names no operator unless the row was
62
+ * routed to one: a machine-lane (agent_resolvable) row is resolved by the agent
63
+ * session that routes it, and saying it waits for an operator sent a team to
64
+ * blame the wrong escalation on 2026-09-25.
65
+ */
66
+ export function breakerHoldEndCondition(crossedOnHead, disposition = DISPOSITION_AGENT_RESOLVABLE) {
67
+ const resolver = disposition === null || disposition === DISPOSITION_AGENT_RESOLVABLE
68
+ ? 'this escalation is resolved or dismissed'
69
+ : 'an operator resolves or dismisses this escalation';
70
+ if (!crossedOnHead) {
71
+ return `it recorded no crossing head, so the hold ends only when ${resolver}`;
72
+ }
73
+ return `the hold ends when the focus branch moves past ${shortSha(crossedOnHead)} ` +
74
+ `(the head it crossed on -- any new commit on the focus branch), or when ${resolver}`;
75
+ }
76
+ /** The cascade's hold log line body: which escalation holds the window, and what ends it. */
77
+ export function describeBreakerHold(hold) {
78
+ return `${hold.escalationKind} escalation ${hold.escalationId} holds the review window; ` +
79
+ `${breakerHoldEndCondition(hold.crossedOnHead, hold.disposition)}`;
80
+ }
81
+ export const defaultBreakerHoldDeps = {
82
+ listOpen: listOpenFocusEscalationsOfKind,
83
+ resolveRef: defaultResolveRef,
84
+ resolveHold: (focusId, resolutionClass, notes) => resolveOpenFocusEscalationsOfKind(focusId, REVIEW_HANDOFF_EXHAUSTED_ESCALATION_KIND, resolutionClass, notes),
85
+ };
86
+ /**
87
+ * Read the breaker hold for one focus, ending it first when the focus branch has
88
+ * moved past every open row's crossing head. Returns `held` with the holding row,
89
+ * `released` when this poll ended it, or `none` when no row is open. A list
90
+ * failure THROWS: the caller owns the fail-open policy. A failed resolve keeps
91
+ * the hold (the next poll retries).
92
+ */
93
+ export async function readBreakerHold(ctx, deps = defaultBreakerHoldDeps) {
94
+ const rows = await deps.listOpen(ctx.focusId, REVIEW_HANDOFF_EXHAUSTED_ESCALATION_KIND);
95
+ if (rows.length === 0)
96
+ return { state: 'none' };
97
+ const holds = rows.map((row) => ({
98
+ escalationKind: REVIEW_HANDOFF_EXHAUSTED_ESCALATION_KIND,
99
+ escalationId: row.id,
100
+ crossedOnHead: readCrossedOnHead(row.metadata),
101
+ disposition: row.disposition ?? null,
102
+ }));
103
+ const liveHead = ctx.branchName ? deps.resolveRef(ctx.repoPath, ctx.branchName) : null;
104
+ const stillHolding = holds.filter((h) => !focusMovedPastCrossing(h.crossedOnHead, liveHead));
105
+ const holding = stillHolding[0] ?? holds[0];
106
+ if (stillHolding.length > 0 || !liveHead || !holding)
107
+ return holding ? { state: 'held', hold: holding } : { state: 'none' };
108
+ const crossedOnHeads = [...new Set(holds.map((h) => h.crossedOnHead))];
109
+ const crossed = crossedOnHeads.join(', ');
110
+ const notes = `Review hand-off breaker hold ended by the daemon: the focus branch moved from ${crossed} ` +
111
+ `(the head the breaker crossed on) to ${liveHead}. A commit no review has seen is the delta the ` +
112
+ `hold waited for, so the review window re-opens.`;
113
+ let resolved = 0;
114
+ try {
115
+ // The daemon observed the clearing condition itself: an agent-session resolve, not an operator's.
116
+ resolved = await deps.resolveHold(ctx.focusId, 'agent_session', notes);
117
+ }
118
+ catch (err) {
119
+ log.warn(`[state-cascade] Could not end the breaker hold on focus ${ctx.focusId}: ${err.message}`);
120
+ }
121
+ if (resolved < holds.length)
122
+ return { state: 'held', hold: holding };
123
+ log.info(`[state-cascade] Breaker hold ENDED for focus ${ctx.focusId}: focus branch moved past ${crossed} ` +
124
+ `to ${shortSha(liveHead)}; resolved ${resolved} review_handoff_exhausted escalation(s), review window may open.`);
125
+ return { state: 'released', crossedOnHeads, liveHead, resolved };
126
+ }
127
+ //# sourceMappingURL=review-breaker-hold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-breaker-hold.js","sourceRoot":"","sources":["../../src/completion/review-breaker-hold.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,13 @@ export interface ReviewExitEscalationContext {
36
36
  focusId: string;
37
37
  focusName: string;
38
38
  sessionId: string;
39
+ /**
40
+ * The focus-branch head this review pass covered (reviewSpawnTip, else the exit
41
+ * tip), or null when unknown. The hand-off breaker records it as the head it
42
+ * crossed on; the hold ends when the focus branch moves past it
43
+ * (review-breaker-hold.ts). Optional: a context without it records no head.
44
+ */
45
+ coveredSha?: string | null;
39
46
  }
40
47
  /**
41
48
  * A compact summary of one open, blocking, review-filed finding on a focus,
@@ -100,7 +107,8 @@ export interface HandoffBoundDeps extends ReviewExitEscalationDeps {
100
107
  * durable breaker HOLD. Called on a real delta so a focus that resumes progress
101
108
  * lifts its own hold (returns the count resolved). Present in the default deps;
102
109
  * a partial test deps object omitting it simply does not clear the hold on
103
- * delta (the operator path still clears it).
110
+ * delta (the state cascade still ends it when the focus branch moves past the
111
+ * head it crossed on -- review-breaker-hold.ts -- and a resolve still clears it).
104
112
  */
105
113
  resolveHandoffExhaustedHold?: (focusId: string, notes: string) => Promise<number>;
106
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"review-exit-escalations.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-escalations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review-exit-escalations.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-escalations.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@
24
24
  import { ESCALATION_REASONS, ESCALATION_DISPOSITIONS } from '@telora/daemon-core';
25
25
  import { resolveReviewHandoffCap } from '../verify/stall-detector-config.js';
26
26
  import { NO_HUMAN_ACT } from '../queries/filing-observation.js';
27
+ import { breakerHoldEndCondition, CROSSED_ON_HEAD_KEY, REVIEW_HANDOFF_EXHAUSTED_ESCALATION_KIND, } from './review-breaker-hold.js';
27
28
  import { createLogger } from '../shell/log.js';
28
29
  const log = createLogger({ module: 'focus-executor' });
29
30
  /**
@@ -150,7 +151,7 @@ export async function recordHandoffAndMaybeTerminate(deps, ctx, currentHandoffCo
150
151
  // 2026-09-10 re-file loop -- after an operator DISMISSES the escalation the
151
152
  // counter climbs from zero again, so a fresh `cap` no-delta cycles are needed
152
153
  // to re-cross (a dismissal is never immediately followed by a re-file). Close
153
- // the window and file one operator escalation (deduped one-open-per-focus).
154
+ // the window and file one escalation (deduped one-open-per-focus).
154
155
  try {
155
156
  await deps.setReviewHandoffCount(ctx.focusId, 0);
156
157
  }
@@ -166,7 +167,7 @@ export async function recordHandoffAndMaybeTerminate(deps, ctx, currentHandoffCo
166
167
  });
167
168
  log.warn(`[focus-executor] "${ctx.focusName}" review no-progress bound EXHAUSTED (${nextHandoffCount} >= cap ${handoffCap}, ` +
168
169
  `trigger=${trigger}) -- counter reset to 0, review_requested_at cleared and review_handoff_exhausted ` +
169
- `escalation filed (the durable hold); no re-assertion until an operator acts or a real delta is recorded.`);
170
+ `escalation filed (the durable hold); ${breakerHoldEndCondition(ctx.coveredSha ?? null)}.`);
170
171
  }
171
172
  else {
172
173
  // Under the cap: record the incremented count. For the pending-spawn hand-off
@@ -198,6 +199,9 @@ export function handoffExhaustedHumanAct(focusName, openBlockingFindingCount) {
198
199
  `measured), or re-scope it with the work that remains.`,
199
200
  };
200
201
  }
202
+ function capitalize(text) {
203
+ return text.charAt(0).toUpperCase() + text.slice(1);
204
+ }
201
205
  /**
202
206
  * The review hand-off has terminated. The review-exit hand-off branch re-asserts
203
207
  * an unverified promise -- "the incoming team will route it" -- and re-makes it
@@ -223,14 +227,19 @@ export async function fileHandoffExhaustedEscalation(deps, ctx, args) {
223
227
  : `\n\nMEASURED: 0 open blocking review-filed findings on this focus at exit. If the focus is ` +
224
228
  `genuinely done, close/descope it; otherwise resolve why the review window kept re-opening ` +
225
229
  `with no work to route.`;
230
+ // Name the hold this row IS, and what ends it -- the same words the state cascade's hold log line uses.
231
+ const crossedOnHead = ctx.coveredSha ?? null;
232
+ const holdBlock = `\n\nHOLD: while this escalation is open it holds the focus's review window -- no review ` +
233
+ `window opens and no review team spawns. ${capitalize(breakerHoldEndCondition(crossedOnHead))}.`;
226
234
  await fileDedupedFocusEscalation(deps, ctx, {
227
- escalationKind: 'review_handoff_exhausted',
235
+ escalationKind: REVIEW_HANDOFF_EXHAUSTED_ESCALATION_KIND,
228
236
  label: 'handoff-exhausted',
229
237
  reasonType: ESCALATION_REASONS.BLOCKED_BY_EXTERNAL,
230
238
  description: `Review of "${ctx.focusName}" handed off to an incoming review team ${args.handoffCount} time(s) ` +
231
239
  `(cap ${args.cap}) without any review session routing a delivery. The daemon has CLOSED the ` +
232
240
  `review window (cleared review_requested_at) and stopped re-asserting the hand-off, so the ` +
233
241
  `self-perpetuating loop cannot re-create its own precondition.` +
242
+ holdBlock +
234
243
  findingsBlock,
235
244
  humanAct: handoffExhaustedHumanAct(ctx.focusName, findings.length),
236
245
  metadata: {
@@ -241,6 +250,8 @@ export async function fileHandoffExhaustedEscalation(deps, ctx, args) {
241
250
  trigger: args.trigger ?? 'pending_spawn_handoff',
242
251
  open_blocking_review_filed_count: findings.length,
243
252
  open_blocking_review_filed_findings: findings.map(f => f.key),
253
+ // The head the breaker crossed on: the hold ends when the focus branch moves past it (review-breaker-hold.ts).
254
+ [CROSSED_ON_HEAD_KEY]: crossedOnHead,
244
255
  // Cause-cleared terminator: when the focus converges this row describes
245
256
  // nothing and is auto-swept (resolveConvergedFocusEscalations).
246
257
  terminates_when: 'focus_converged',