@telora/daemon 0.20.78 → 0.20.95

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 (151) hide show
  1. package/build-info.json +2 -2
  2. package/dist/ai-inspection-context.d.ts.map +1 -1
  3. package/dist/ai-inspection-context.js +4 -2
  4. package/dist/ai-inspection-context.js.map +1 -1
  5. package/dist/audit-prompt.d.ts.map +1 -1
  6. package/dist/audit-prompt.js +9 -5
  7. package/dist/audit-prompt.js.map +1 -1
  8. package/dist/ci-sensor-loop.d.ts +33 -5
  9. package/dist/ci-sensor-loop.d.ts.map +1 -1
  10. package/dist/ci-sensor-loop.js +95 -14
  11. package/dist/ci-sensor-loop.js.map +1 -1
  12. package/dist/ci-status-git.d.ts +7 -5
  13. package/dist/ci-status-git.d.ts.map +1 -1
  14. package/dist/ci-status-git.js +12 -9
  15. package/dist/ci-status-git.js.map +1 -1
  16. package/dist/ci-status.d.ts +21 -6
  17. package/dist/ci-status.d.ts.map +1 -1
  18. package/dist/ci-status.js +90 -15
  19. package/dist/ci-status.js.map +1 -1
  20. package/dist/cli/connect/agents.d.ts +64 -14
  21. package/dist/cli/connect/agents.d.ts.map +1 -1
  22. package/dist/cli/connect/agents.js +102 -19
  23. package/dist/cli/connect/agents.js.map +1 -1
  24. package/dist/cli/connect/claude.d.ts +19 -16
  25. package/dist/cli/connect/claude.d.ts.map +1 -1
  26. package/dist/cli/connect/claude.js +34 -68
  27. package/dist/cli/connect/claude.js.map +1 -1
  28. package/dist/cli/connect/scaffolding.d.ts +3 -2
  29. package/dist/cli/connect/scaffolding.d.ts.map +1 -1
  30. package/dist/cli/connect/scaffolding.js +17 -6
  31. package/dist/cli/connect/scaffolding.js.map +1 -1
  32. package/dist/cli/connect/seed-retirement.d.ts +39 -0
  33. package/dist/cli/connect/seed-retirement.d.ts.map +1 -0
  34. package/dist/cli/connect/seed-retirement.js +95 -0
  35. package/dist/cli/connect/seed-retirement.js.map +1 -0
  36. package/dist/cli/connect.d.ts +2 -2
  37. package/dist/cli/connect.d.ts.map +1 -1
  38. package/dist/cli/connect.js +8 -2
  39. package/dist/cli/connect.js.map +1 -1
  40. package/dist/cli/session-state.d.ts +0 -20
  41. package/dist/cli/session-state.d.ts.map +1 -1
  42. package/dist/cli/session-state.js +20 -49
  43. package/dist/cli/session-state.js.map +1 -1
  44. package/dist/completion/completion-decision.d.ts +3 -29
  45. package/dist/completion/completion-decision.d.ts.map +1 -1
  46. package/dist/completion/completion-decision.js +3 -15
  47. package/dist/completion/completion-decision.js.map +1 -1
  48. package/dist/completion/event-phases.d.ts +0 -8
  49. package/dist/completion/event-phases.d.ts.map +1 -1
  50. package/dist/completion/event-phases.js +4 -52
  51. package/dist/completion/event-phases.js.map +1 -1
  52. package/dist/completion/event.d.ts +1 -11
  53. package/dist/completion/event.d.ts.map +1 -1
  54. package/dist/completion/event.js +1 -3
  55. package/dist/completion/event.js.map +1 -1
  56. package/dist/completion/merge-phase.d.ts +1 -1
  57. package/dist/completion/merge-phase.d.ts.map +1 -1
  58. package/dist/completion/merge-phase.js +14 -34
  59. package/dist/completion/merge-phase.js.map +1 -1
  60. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  61. package/dist/completion/team-lifecycle.js +13 -1
  62. package/dist/completion/team-lifecycle.js.map +1 -1
  63. package/dist/delivery-artifacts.d.ts.map +1 -1
  64. package/dist/delivery-artifacts.js +9 -8
  65. package/dist/delivery-artifacts.js.map +1 -1
  66. package/dist/git/merge.d.ts +16 -0
  67. package/dist/git/merge.d.ts.map +1 -1
  68. package/dist/git/merge.js +39 -1
  69. package/dist/git/merge.js.map +1 -1
  70. package/dist/product-scaffold.d.ts +8 -6
  71. package/dist/product-scaffold.d.ts.map +1 -1
  72. package/dist/product-scaffold.js +14 -10
  73. package/dist/product-scaffold.js.map +1 -1
  74. package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
  75. package/dist/prompt-sections/execution-sections.js +44 -3
  76. package/dist/prompt-sections/execution-sections.js.map +1 -1
  77. package/dist/prompt-sections/scoping-sections.d.ts.map +1 -1
  78. package/dist/prompt-sections/scoping-sections.js +8 -0
  79. package/dist/prompt-sections/scoping-sections.js.map +1 -1
  80. package/dist/queries/cause-key.d.ts +13 -3
  81. package/dist/queries/cause-key.d.ts.map +1 -1
  82. package/dist/queries/cause-key.js +14 -4
  83. package/dist/queries/cause-key.js.map +1 -1
  84. package/dist/queries/deliveries.d.ts +20 -153
  85. package/dist/queries/deliveries.d.ts.map +1 -1
  86. package/dist/queries/deliveries.js +26 -0
  87. package/dist/queries/deliveries.js.map +1 -1
  88. package/dist/queries/delivery-gate-state.d.ts +192 -0
  89. package/dist/queries/delivery-gate-state.d.ts.map +1 -0
  90. package/dist/queries/delivery-gate-state.js +23 -0
  91. package/dist/queries/delivery-gate-state.js.map +1 -0
  92. package/dist/queries/holds.d.ts +62 -60
  93. package/dist/queries/holds.d.ts.map +1 -1
  94. package/dist/queries/holds.js +70 -69
  95. package/dist/queries/holds.js.map +1 -1
  96. package/dist/queries/issues.d.ts +2 -2
  97. package/dist/queries/issues.d.ts.map +1 -1
  98. package/dist/queries/issues.js +2 -2
  99. package/dist/queries/issues.js.map +1 -1
  100. package/dist/reality-pole.d.ts +5 -3
  101. package/dist/reality-pole.d.ts.map +1 -1
  102. package/dist/reality-pole.js +13 -4
  103. package/dist/reality-pole.js.map +1 -1
  104. package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
  105. package/dist/resolvers/git-diff-against-base.js +12 -5
  106. package/dist/resolvers/git-diff-against-base.js.map +1 -1
  107. package/dist/resolvers/index.d.ts +1 -1
  108. package/dist/resolvers/index.d.ts.map +1 -1
  109. package/dist/resolvers/index.js +1 -1
  110. package/dist/resolvers/index.js.map +1 -1
  111. package/dist/resolvers/shared/git-diff.d.ts +147 -26
  112. package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
  113. package/dist/resolvers/shared/git-diff.js +275 -35
  114. package/dist/resolvers/shared/git-diff.js.map +1 -1
  115. package/dist/templates/agents-md.d.ts +16 -0
  116. package/dist/templates/agents-md.d.ts.map +1 -1
  117. package/dist/templates/agents-md.js +26 -0
  118. package/dist/templates/agents-md.js.map +1 -1
  119. package/dist/templates/claude-settings.d.ts +44 -1
  120. package/dist/templates/claude-settings.d.ts.map +1 -1
  121. package/dist/templates/claude-settings.js +73 -1
  122. package/dist/templates/claude-settings.js.map +1 -1
  123. package/dist/unified-shell-provisioning.d.ts +99 -0
  124. package/dist/unified-shell-provisioning.d.ts.map +1 -0
  125. package/dist/unified-shell-provisioning.js +222 -0
  126. package/dist/unified-shell-provisioning.js.map +1 -0
  127. package/dist/unified-shell.d.ts +0 -41
  128. package/dist/unified-shell.d.ts.map +1 -1
  129. package/dist/unified-shell.js +19 -135
  130. package/dist/unified-shell.js.map +1 -1
  131. package/dist/verification-deps.d.ts +151 -0
  132. package/dist/verification-deps.d.ts.map +1 -0
  133. package/dist/verification-deps.js +19 -0
  134. package/dist/verification-deps.js.map +1 -0
  135. package/dist/verification-engine.d.ts +10 -112
  136. package/dist/verification-engine.d.ts.map +1 -1
  137. package/dist/verification-engine.js +84 -30
  138. package/dist/verification-engine.js.map +1 -1
  139. package/dist/verification-evidence.d.ts +33 -1
  140. package/dist/verification-evidence.d.ts.map +1 -1
  141. package/dist/verification-evidence.js +55 -13
  142. package/dist/verification-evidence.js.map +1 -1
  143. package/dist/verification-feedback.d.ts +31 -27
  144. package/dist/verification-feedback.d.ts.map +1 -1
  145. package/dist/verification-feedback.js +76 -85
  146. package/dist/verification-feedback.js.map +1 -1
  147. package/dist/verify-restatement.d.ts +12 -9
  148. package/dist/verify-restatement.d.ts.map +1 -1
  149. package/dist/verify-restatement.js +11 -9
  150. package/dist/verify-restatement.js.map +1 -1
  151. package/package.json +1 -1
package/build-info.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "commitSha": "335c08d4e",
3
- "builtAt": "2026-07-27T19:58:07.358Z",
2
+ "commitSha": "a9f83ad1e",
3
+ "builtAt": "2026-07-28T23:45:14.781Z",
4
4
  "expectedMigrations": [
5
5
  "20250829113330_create_org_nodes_table.sql",
6
6
  "20250829113402_fix_function_security_search_path.sql",
@@ -1 +1 @@
1
- {"version":3,"file":"ai-inspection-context.d.ts","sourceRoot":"","sources":["../src/ai-inspection-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AA2BrE,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,uEAAuE;IACvE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,SAAS,EAAE,sBAAsB,CAAC;IAClC,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAwFD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,wDAAwD;IACxD,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IACjD,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAmFD;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,CAAC,EAAE,mBAAmB,EACtB,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAwCpC"}
1
+ {"version":3,"file":"ai-inspection-context.d.ts","sourceRoot":"","sources":["../src/ai-inspection-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AA2BrE,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,uEAAuE;IACvE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,SAAS,EAAE,sBAAsB,CAAC;IAClC,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAwFD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,wDAAwD;IACxD,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IACjD,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAmFD;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,CAAC,EAAE,mBAAmB,EACtB,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA0CpC"}
@@ -14,7 +14,7 @@
14
14
  *
15
15
  * @module ai-inspection-context
16
16
  */
17
- import { CRT_DUMP_BUDGET_CHARS, getGitDiff, renderRealityTreeDump, } from './assembly-resolvers.js';
17
+ import { CRT_DUMP_BUDGET_CHARS, getDeliveryDiff, renderRealityTreeDump, } from './assembly-resolvers.js';
18
18
  import { createLogger } from './log.js';
19
19
  const log = createLogger({ module: 'ai-inspection-context' });
20
20
  /** Max number of previously-dismissed drift proposals to surface in the audit-gate prompt. */
@@ -185,7 +185,9 @@ export async function resolveAiInspectionInputs(v, deps) {
185
185
  }
186
186
  let deliveryDiff = '';
187
187
  try {
188
- deliveryDiff = getGitDiff(worktreePath, deps.integrationBranch);
188
+ // Merge-aware seam: a focus branch that has already merged back (level with
189
+ // integration) still yields its work rather than an empty base...HEAD diff.
190
+ deliveryDiff = getDeliveryDiff(worktreePath, deps.integrationBranch);
189
191
  }
190
192
  catch (err) {
191
193
  log.warn(`[ai-inspection-context] git diff failed for ${worktreePath}: ${err.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"ai-inspection-context.js","sourceRoot":"","sources":["../src/ai-inspection-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-inspection-context.js","sourceRoot":"","sources":["../src/ai-inspection-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,qBAAqB,GAOtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAG9D,8FAA8F;AAC9F,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAC7C,mGAAmG;AACnG,MAAM,mCAAmC,GAAG,GAAG,CAAC;AAEhD,oFAAoF;AACpF,MAAM,+BAA+B,GACnC,8EAA8E;IAC9E,mHAAmH,CAAC;AAiDtH,SAAS,QAAQ,CAAC,KAAa,EAAE,GAAW;IAC1C,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IACtC,sEAAsE;IACtE,8DAA8D;IAC9D,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,SAAS,+BAA+B,CAAC,IAA4B;IACnE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAChF,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,EAAE,mCAAmC,CAAC,CAAC;QACxF,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,EAAE,mCAAmC,CAAC,CAAC;QAC/F,OAAO;YACL,OAAO,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC,SAAS,GAAG;YACxD,EAAE;YACF,oBAAoB;YACpB,QAAQ;YACR,EAAE;YACF,yBAAyB;YACzB,UAAU;SACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IACH,OAAO;QACL,wDAAwD;QACxD,EAAE;QACF,+BAA+B;QAC/B,EAAE;QACF,GAAG,OAAO;KACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,8BAA8B,CAC3C,IAA6B,EAC7B,OAAe;IAEf,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA4B,yBAAyB,EAAE;YACpF,OAAO;YACP,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,uEAAuE;QACvE,0DAA0D;QAC1D,MAAM,IAAI,GAA2B,KAAK;aACvC,KAAK,CAAC,CAAC,EAAE,iCAAiC,CAAC;aAC3C,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACX,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;SAC3C,CAAC,CAAC,CAAC;QACN,OAAO,+BAA+B,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAUD;;;;GAIG;AACH,KAAK,UAAU,uBAAuB,CACpC,IAA6B,EAC7B,eAAuB;IAEvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAW5B,gCAAgC,EAAE,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAErE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;IAC5B,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,SAAS;QAC5B,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS;QACjD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,oBAAoB,CACjC,IAA6B,EAC7B,OAAe;IAEf,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,mBAAmB,EAAE;QACjF,OAAO;KACR,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IAC3F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,IAAI,qBAAqB;YAAE,MAAM;QACzC,MAAM,SAAS,GAAG,qBAAqB,GAAG,IAAI,CAAC;QAC/C,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAmB,wBAAwB,EAAE;gBACvD,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,MAAM,EAAE,QAAQ;aACjB,CAAC;YACF,IAAI,CAAC,OAAO,CAAmB,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;SAC9E,CAAC,CAAC;QACH,MAAM,KAAK,GAAqB,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QACtD,MAAM,KAAK,GAAqB,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QACtD,oEAAoE;QACpE,4EAA4E;QAC5E,0EAA0E;QAC1E,0EAA0E;QAC1E,uEAAuE;QACvE,0EAA0E;QAC1E,yEAAyE;QACzE,gEAAgE;QAChE,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;YAChE,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC;IACtB,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,CAAsB,EACtB,IAA6B;IAE7B,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC;IACzE,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAElD,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,IAAI,CAAC;YACH,eAAe,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,2DAA2D,CAAC,CAAC,OAAO,KAAM,GAAa,CAAC,OAAO,EAAE,CAClG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,yBAAyB,GAAG,EAAE,CAAC;IACnC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,wEAAwE;QACxE,oDAAoD;QACpD,yBAAyB,GAAG,MAAM,8BAA8B,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,4EAA4E;QAC5E,4EAA4E;QAC5E,YAAY,GAAG,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,+CAA+C,YAAY,KAAM,GAAa,CAAC,OAAO,EAAE,CACzF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS;QACT,eAAe;QACf,YAAY;QACZ,YAAY;QACZ,yBAAyB;KAC1B,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"audit-prompt.d.ts","sourceRoot":"","sources":["../src/audit-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC;AA8JhD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAQ9D;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,QAAgC,CAAC"}
1
+ {"version":3,"file":"audit-prompt.d.ts","sourceRoot":"","sources":["../src/audit-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC;AAkKhD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAQ9D;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,QAAgC,CAAC"}
@@ -40,7 +40,7 @@ function auditPostureSection(posture) {
40
40
  }
41
41
  return [
42
42
  '',
43
- 'POSTURE -- live focus. This focus is live (past planning): the remediation deliveries you anchor are created `queued` and execute AUTONOMOUSLY through the normal review gate. There is NO human review step before they run. Do not author anything -- least of all acceptance criteria -- expecting a human to read it before execution; if you believe work must not run, escalate (see below), never write a hold into the plan.',
43
+ 'POSTURE -- live focus. This focus is live (past planning): the remediation deliveries you anchor are created `queued` and execute AUTONOMOUSLY through the normal review gate. There is NO human review step before they run. Do not author anything -- least of all acceptance criteria -- expecting a human to read it before execution; if you believe work must not run, DECIDE it under the decision rule below -- take the reversible option that preserves both futures and record it for the focus review -- never write a hold into the plan.',
44
44
  ];
45
45
  }
46
46
  /**
@@ -120,10 +120,14 @@ write into acceptanceCriteria:
120
120
  Prose is invisible to the workflow: a hold written into acceptanceCriteria
121
121
  gates nothing, and on a live focus the executing team either obeys a stop the
122
122
  machine never enforces or is misled by an instruction it should never have been
123
- given. If you believe the work must NOT run yet -- a dependency is missing, or
124
- the decision needs human intent -- the ONLY channel for that belief is an
125
- escalation via \`telora_agent action=escalate\`. Raise the doubt as an
126
- escalation; never encode it as acceptance-criteria text.
123
+ given. If you believe the work must NOT run yet, that is a fork to DECIDE, not
124
+ to defer to a human: take the reversible option that preserves both futures --
125
+ author the delivery against its real future-state and let it run -- and record
126
+ the doubt (the question, the options, what you chose, why it is reversible, and
127
+ what changes if the human decides otherwise) for the focus review. Reserve an
128
+ escalation for a genuine do-not-run reason you cannot resolve yourself -- a
129
+ missing dependency, work that truly needs human intent -- and never encode the
130
+ doubt as acceptance-criteria text.
127
131
 
128
132
  ## Statement quality (Goldratt Categories of Legitimate Reservation)
129
133
  Hold every node to three statement-quality reservations AS YOU WRITE IT --
@@ -1 +1 @@
1
- {"version":3,"file":"audit-prompt.js","sourceRoot":"","sources":["../src/audit-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH;;;;;GAKG;AACH,MAAM,WAAW,GAAsB;IACrC,uEAAuE;IACvE,EAAE;IACF,ujBAAujB;CACxjB,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,OAAqB;IAChD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO;YACL,EAAE;YACF,6RAA6R;SAC9R,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE;QACF,saAAsa;KACva,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,kBAAkB,GAAsB;IAC5C,EAAE;IACF,yIAAyI;IACzI,EAAE;IACF,kBAAkB;IAClB,0BAA0B;IAC1B,0BAA0B;IAC1B,YAAY;IACZ,4IAA4I;IAC5I,KAAK;IACL,EAAE;IACF,6LAA6L;CAC9L,CAAC;AAEF,+EAA+E;AAC/E,uEAAuE;AACvE,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,oCAAoC;AACpC,2BAA2B;AAC3B,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6FoD,CAAC;AAChF,yBAAyB;AAEzB;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAqB;IACpD,OAAO;QACL,GAAG,WAAW;QACd,GAAG,mBAAmB,CAAC,OAAO,CAAC;QAC/B,EAAE;QACF,kBAAkB;QAClB,GAAG,kBAAkB;KACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"audit-prompt.js","sourceRoot":"","sources":["../src/audit-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH;;;;;GAKG;AACH,MAAM,WAAW,GAAsB;IACrC,uEAAuE;IACvE,EAAE;IACF,ujBAAujB;CACxjB,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,OAAqB;IAChD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO;YACL,EAAE;YACF,6RAA6R;SAC9R,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE;QACF,whBAAwhB;KACzhB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,kBAAkB,GAAsB;IAC5C,EAAE;IACF,yIAAyI;IACzI,EAAE;IACF,kBAAkB;IAClB,0BAA0B;IAC1B,0BAA0B;IAC1B,YAAY;IACZ,4IAA4I;IAC5I,KAAK;IACL,EAAE;IACF,6LAA6L;CAC9L,CAAC;AAEF,+EAA+E;AAC/E,uEAAuE;AACvE,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,oCAAoC;AACpC,2BAA2B;AAC3B,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EAiGoD,CAAC;AAChF,yBAAyB;AAEzB;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAqB;IACpD,OAAO;QACL,GAAG,WAAW;QACd,GAAG,mBAAmB,CAAC,OAAO,CAAC;QAC/B,EAAE;QACF,kBAAkB;QAClB,GAAG,kBAAkB;KACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC"}
@@ -1,14 +1,39 @@
1
1
  /**
2
- * CI-result sensor loop (Reconnect CI to the loop, TEL-3).
2
+ * CI-result sensor loop (Reconnect CI to the loop, TEL-3; machine-receiver
3
+ * routing from the focus "A red CI run must mint work, not an inbox line").
3
4
  *
4
5
  * A red CI run on integration used to have NO receiver -- it evaporated. This
5
6
  * loop makes a failing run SIGNAL: per product, it reads the integration tip's
6
7
  * git-native CI status (refs/ci-status/<sha>) via the daemon's existing
7
8
  * git-over-SSH channel and, on RED, files exactly one open `ci_run_red`
8
- * needs_operator escalation carrying the run reference (the failing SHA). When a
9
- * LATER run on integration goes green, it resolves the open escalation. Pure
10
- * decision (decideCiSensorAction in ci-status.ts) + injected IO so the loop is
11
- * unit-testable without a live remote or DB.
9
+ * escalation. When a LATER run on integration goes green, it resolves the open
10
+ * escalation. Pure decision (decideCiSensorAction in ci-status.ts) + injected IO
11
+ * so the loop is unit-testable without a live remote or DB.
12
+ *
13
+ * The filing is a MACHINE receiver, not a human inbox line. Fixing a failing
14
+ * lint/typecheck/test/build gate is CODING work, so the filing carries
15
+ * disposition `agent_resolvable` (hidden from the operator inbox) anchored to a
16
+ * FOCUS, so the daemon's focus-scoped agent_resolvable pickup
17
+ * (reconcileAgentResolvableForFocus) rides it into that focus's next CODING pass
18
+ * to be resolved. The ONLY path from here to a `needs_operator` filing is the
19
+ * existing 24h agent_resolvable promotion backstop, after the machine has had
20
+ * spawn cycles to clear it and has not -- never a direct operator filing.
21
+ *
22
+ * Anchor choice (decided, reversible): the tip's OWNING focus, resolved from the
23
+ * tip commit's `Telora-Delivery` trailer -> delivery -> focus; falling back to
24
+ * any currently-active focus for the product (a CI-gate fix is cross-cutting, so
25
+ * any armed team can take it). If NO focus is armed at all there is no coding
26
+ * pass to route the fix to, so the tick files nothing and retries next tick --
27
+ * the fail-closed integration->main merge gate (resolveCiMergeGate, which reads
28
+ * the git ref independently of this escalation) still holds main out on the red,
29
+ * so nothing merges while the signal waits for a team. The recorded alternative,
30
+ * a standing per-product "CI health" focus, would remove the fallback heuristic
31
+ * but is a larger change (new focus lifecycle) and can replace this later with
32
+ * no data migration.
33
+ *
34
+ * The cause key is BRANCH-scoped (queries/cause-key.ciRunRedCauseKey): successive
35
+ * red tips carrying the same unfixed breakage collapse onto ONE open filing
36
+ * instead of minting one per tip.
12
37
  *
13
38
  * Registered in LOOP_REGISTRY under the opt-out guard TELORA_CI_SENSOR_LOOP.
14
39
  * Consumes the same fail-closed CiStatusReader the green-wait (TEL-2) uses.
@@ -55,6 +80,8 @@ export declare function isCiRedRefileSuppressed(rows: readonly CiEscalationRow[]
55
80
  export interface CiSensorDeps {
56
81
  getCiStatus: CiStatusReader;
57
82
  resolveIntegrationTip: (config: DaemonConfig) => string | null;
83
+ /** Resolve the focus a red run's fix routes to (tip-owner, fallback active). */
84
+ resolveOwningFocus: (config: DaemonConfig, sha: string) => Promise<string | null>;
58
85
  hasOpenCiRedEscalation: (params: {
59
86
  productId: string;
60
87
  sha: string;
@@ -63,6 +90,7 @@ export interface CiSensorDeps {
63
90
  fileCiRedEscalation: (params: {
64
91
  organizationId: string;
65
92
  productId: string;
93
+ focusId: string;
66
94
  sha: string;
67
95
  branch: string;
68
96
  }) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ci-sensor-loop.d.ts","sourceRoot":"","sources":["../src/ci-sensor-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAuD,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAW1G,uDAAuD;AACvD,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAEvD,4EAA4E;AAC5E,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAaD;;;;;;;;;;;;GAYG;AACH;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,eAAe,EAAE,EAChC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAYT;AAyDD,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,cAAc,CAAC;IAC5B,qBAAqB,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,GAAG,IAAI,CAAC;IAC/D,sBAAsB,EAAE,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzG,mBAAmB,EAAE,CAAC,MAAM,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3H,uBAAuB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjE;AAUD,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,YAA0B,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAwB7B"}
1
+ {"version":3,"file":"ci-sensor-loop.d.ts","sourceRoot":"","sources":["../src/ci-sensor-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAuD,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAa1G,uDAAuD;AACvD,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAEvD,4EAA4E;AAC5E,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAaD;;;;;;;;;;;;GAYG;AACH;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,eAAe,EAAE,EAChC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAcT;AA+FD,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,cAAc,CAAC;IAC5B,qBAAqB,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,GAAG,IAAI,CAAC;IAC/D,gFAAgF;IAChF,kBAAkB,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClF,sBAAsB,EAAE,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzG,mBAAmB,EAAE,CAAC,MAAM,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5I,uBAAuB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjE;AAWD,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,YAA0B,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAmC7B"}
@@ -1,14 +1,39 @@
1
1
  /**
2
- * CI-result sensor loop (Reconnect CI to the loop, TEL-3).
2
+ * CI-result sensor loop (Reconnect CI to the loop, TEL-3; machine-receiver
3
+ * routing from the focus "A red CI run must mint work, not an inbox line").
3
4
  *
4
5
  * A red CI run on integration used to have NO receiver -- it evaporated. This
5
6
  * loop makes a failing run SIGNAL: per product, it reads the integration tip's
6
7
  * git-native CI status (refs/ci-status/<sha>) via the daemon's existing
7
8
  * git-over-SSH channel and, on RED, files exactly one open `ci_run_red`
8
- * needs_operator escalation carrying the run reference (the failing SHA). When a
9
- * LATER run on integration goes green, it resolves the open escalation. Pure
10
- * decision (decideCiSensorAction in ci-status.ts) + injected IO so the loop is
11
- * unit-testable without a live remote or DB.
9
+ * escalation. When a LATER run on integration goes green, it resolves the open
10
+ * escalation. Pure decision (decideCiSensorAction in ci-status.ts) + injected IO
11
+ * so the loop is unit-testable without a live remote or DB.
12
+ *
13
+ * The filing is a MACHINE receiver, not a human inbox line. Fixing a failing
14
+ * lint/typecheck/test/build gate is CODING work, so the filing carries
15
+ * disposition `agent_resolvable` (hidden from the operator inbox) anchored to a
16
+ * FOCUS, so the daemon's focus-scoped agent_resolvable pickup
17
+ * (reconcileAgentResolvableForFocus) rides it into that focus's next CODING pass
18
+ * to be resolved. The ONLY path from here to a `needs_operator` filing is the
19
+ * existing 24h agent_resolvable promotion backstop, after the machine has had
20
+ * spawn cycles to clear it and has not -- never a direct operator filing.
21
+ *
22
+ * Anchor choice (decided, reversible): the tip's OWNING focus, resolved from the
23
+ * tip commit's `Telora-Delivery` trailer -> delivery -> focus; falling back to
24
+ * any currently-active focus for the product (a CI-gate fix is cross-cutting, so
25
+ * any armed team can take it). If NO focus is armed at all there is no coding
26
+ * pass to route the fix to, so the tick files nothing and retries next tick --
27
+ * the fail-closed integration->main merge gate (resolveCiMergeGate, which reads
28
+ * the git ref independently of this escalation) still holds main out on the red,
29
+ * so nothing merges while the signal waits for a team. The recorded alternative,
30
+ * a standing per-product "CI health" focus, would remove the fallback heuristic
31
+ * but is a larger change (new focus lifecycle) and can replace this later with
32
+ * no data migration.
33
+ *
34
+ * The cause key is BRANCH-scoped (queries/cause-key.ciRunRedCauseKey): successive
35
+ * red tips carrying the same unfixed breakage collapse onto ONE open filing
36
+ * instead of minting one per tip.
12
37
  *
13
38
  * Registered in LOOP_REGISTRY under the opt-out guard TELORA_CI_SENSOR_LOOP.
14
39
  * Consumes the same fail-closed CiStatusReader the green-wait (TEL-2) uses.
@@ -19,6 +44,8 @@ import { configForProduct } from './config.js';
19
44
  import { decideCiSensorAction, createGitNativeCiStatusReader } from './ci-status.js';
20
45
  import { listCiStatusRefs, resolveRemoteIntegrationTip } from './ci-status-git.js';
21
46
  import { createEscalation, markEscalationResolved } from './queries/issues.js';
47
+ import { getDeliveryContext, getActiveFocuses } from './queries/deliveries.js';
48
+ import { readDeliveryTrailer } from './resolvers/shared/git-diff.js';
22
49
  import { callApi } from './queries/shared.js';
23
50
  import { ciRunRedCauseKey } from './queries/cause-key.js';
24
51
  import { ESCALATION_REASONS, ESCALATION_DISPOSITIONS } from '@telora/daemon-core';
@@ -57,7 +84,9 @@ function isOpenCiRedForProduct(e, productId) {
57
84
  * direct unit testing (no callApi mocking needed).
58
85
  */
59
86
  export function isCiRedRefileSuppressed(rows, params) {
60
- const causeKey = ciRunRedCauseKey(params.sha, params.branch);
87
+ // Branch-scoped: one open ci_run_red per red integration branch. Successive
88
+ // red tips (different sha, same branch) suppress onto the open filing.
89
+ const causeKey = ciRunRedCauseKey(params.branch);
61
90
  return rows.some((e) => {
62
91
  // A cause-key match suppresses only for OPEN or DISMISSED rows -- 'resolved'
63
92
  // is excluded so a recurrence of the same sha after a green resolve re-files.
@@ -101,26 +130,67 @@ async function defaultFileCiRedEscalation(params) {
101
130
  organizationId: params.organizationId,
102
131
  issueId: null,
103
132
  reasonType: ESCALATION_REASONS.ERROR_ENCOUNTERED,
104
- disposition: ESCALATION_DISPOSITIONS.NEEDS_OPERATOR,
133
+ // Fixing a failing CI gate is CODING work: file it as machine-routable
134
+ // (hidden from the operator inbox) and anchor it to a focus so the daemon's
135
+ // focus-scoped agent_resolvable pickup rides it into that focus's next
136
+ // coding pass. A needs_operator filing only ever comes from the 24h
137
+ // promotion backstop, after the machine has failed to clear it.
138
+ disposition: ESCALATION_DISPOSITIONS.AGENT_RESOLVABLE,
105
139
  productId: params.productId,
140
+ focusId: params.focusId,
106
141
  escalationKind: CI_RUN_RED_ESCALATION_KIND,
107
142
  description: `CI is RED on the integration branch (${params.branch}) at ${params.sha.slice(0, 12)}. ` +
108
143
  `The clean-environment instrument is failing, so integration->main merges are held ` +
109
- `(fail-closed green-wait). Run reference: commit ${params.sha}. An operator must fix ` +
110
- `the failing run; this escalation auto-resolves when a later integration run goes green.`,
111
- // cause_key (sha+branch) is what suppresses a re-file for the SAME sha across
112
- // ticks AND after an operator dismissal; a new sha is a new cause key.
144
+ `(fail-closed green-wait). Run reference: commit ${params.sha}. Fixing the failing ` +
145
+ `gate is coding work: reproduce it in the worktree (the CI 'ci' job's gate block) ` +
146
+ `and fix it. This filing auto-resolves when a later integration run goes green; if ` +
147
+ `the machine cannot clear it, the 24h agent_resolvable promotion backstop surfaces ` +
148
+ `it to an operator.`,
149
+ // cause_key (branch) collapses successive red tips onto one open filing and
150
+ // keeps the branch silent while it is already signalled; a green resolves it.
113
151
  metadata: {
114
152
  sha: params.sha,
115
153
  branch: params.branch,
116
154
  product_id: params.productId,
117
- cause_key: ciRunRedCauseKey(params.sha, params.branch),
155
+ focus_id: params.focusId,
156
+ cause_key: ciRunRedCauseKey(params.branch),
118
157
  },
119
158
  });
120
159
  }
160
+ /**
161
+ * Resolve the focus a red integration run's fix should be routed to. Primary:
162
+ * the tip commit's OWNING focus, via its `Telora-Delivery` trailer -> delivery ->
163
+ * focus. Fallback: any currently-active focus for the product (a CI-gate fix is
164
+ * cross-cutting, so any armed team can take it). Returns null when neither
165
+ * resolves -- there is no coding pass to route the fix to, so the caller files
166
+ * nothing and retries next tick (the fail-closed merge gate still holds main).
167
+ * Best-effort: any git/DB failure degrades to null, never throws.
168
+ */
169
+ async function defaultResolveOwningFocus(config, sha) {
170
+ try {
171
+ const deliveryId = readDeliveryTrailer(config.repoPath, sha);
172
+ if (deliveryId) {
173
+ const ctx = await getDeliveryContext(deliveryId);
174
+ if (ctx?.focus?.id)
175
+ return ctx.focus.id;
176
+ }
177
+ }
178
+ catch (err) {
179
+ log.debug(`owning-focus trailer resolution failed for ${sha.slice(0, 12)}: ${err.message}`);
180
+ }
181
+ try {
182
+ const active = await getActiveFocuses(config.organizationId, config.productId);
183
+ return active[0]?.focus_id ?? null;
184
+ }
185
+ catch (err) {
186
+ log.debug(`active-focus fallback failed for product ${config.productId}: ${err.message}`);
187
+ return null;
188
+ }
189
+ }
121
190
  const defaultDeps = {
122
191
  getCiStatus: createGitNativeCiStatusReader(listCiStatusRefs),
123
192
  resolveIntegrationTip: resolveRemoteIntegrationTip,
193
+ resolveOwningFocus: defaultResolveOwningFocus,
124
194
  hasOpenCiRedEscalation: defaultHasOpenCiRedEscalation,
125
195
  fileCiRedEscalation: defaultFileCiRedEscalation,
126
196
  resolveCiRedEscalations: defaultResolveCiRedEscalations,
@@ -144,9 +214,20 @@ export async function runCiSensorTick(config, deps = defaultDeps) {
144
214
  const hasOpen = await deps.hasOpenCiRedEscalation({ productId: pc.productId, sha, branch: pc.integrationBranch });
145
215
  const action = decideCiSensorAction(status, hasOpen);
146
216
  if (action === 'file') {
147
- await deps.fileCiRedEscalation({ organizationId: pc.organizationId, productId: pc.productId, sha, branch: pc.integrationBranch });
217
+ const focusId = await deps.resolveOwningFocus(pc, sha);
218
+ if (!focusId) {
219
+ // No armed focus to route the fix to. File nothing and retry next
220
+ // tick -- the fail-closed merge gate still holds main out on the red,
221
+ // so nothing merges while the signal waits for a team. Filing an
222
+ // unanchored agent_resolvable would be invisible forever (never
223
+ // ridden, never promoted); a direct needs_operator is exactly the
224
+ // inbox line this focus removes.
225
+ log.warn(`CI red on ${pc.integrationBranch} @ ${sha.slice(0, 12)} but no armed focus to route the fix to; holding (merge gate still fail-closed), will retry.`);
226
+ continue;
227
+ }
228
+ await deps.fileCiRedEscalation({ organizationId: pc.organizationId, productId: pc.productId, focusId, sha, branch: pc.integrationBranch });
148
229
  counts.escalationsFiled++;
149
- log.warn(`ci_run_red escalation filed for product ${pc.productId} (integration @ ${sha.slice(0, 12)}).`);
230
+ log.warn(`ci_run_red (agent_resolvable) filed for product ${pc.productId}, focus ${focusId.slice(0, 8)} (integration @ ${sha.slice(0, 12)}).`);
150
231
  }
151
232
  else if (action === 'resolve') {
152
233
  counts.escalationsResolved += await deps.resolveCiRedEscalations(pc.productId);
@@ -1 +1 @@
1
- {"version":3,"file":"ci-sensor-loop.js","sourceRoot":"","sources":["../src/ci-sensor-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ci-sensor-loop.js","sourceRoot":"","sources":["../src/ci-sensor-loop.ts"],"names":[],"mappings":"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"}
@@ -20,11 +20,13 @@ import { type CiStatusReader } from './ci-status.js';
20
20
  /** The per-SHA CI status ref namespace. State is encoded in the ref name. */
21
21
  export declare const CI_STATUS_REF_PREFIX = "refs/ci-status";
22
22
  /**
23
- * List the published `refs/ci-status/<sha>/<state>` ref names for a SHA on the
24
- * remote, via a scoped read-only `git ls-remote origin <ref> <ref> <ref>`. Only
25
- * the three known state refs for this exact SHA are queried -- a disjoint,
26
- * bounded namespace that can never touch branches. Returns the matched ref names
27
- * (e.g. `refs/ci-status/<sha>/success`); [] on any git failure (fail-closed).
23
+ * List the published ci-status ref names for a SHA on the remote, via a scoped
24
+ * read-only `git ls-remote origin <pattern>`. TWO glob depths are queried so both
25
+ * schemes are seen: the new run-ordered refs `refs/ci-status/<sha>/<run>/<state>`
26
+ * AND legacy `refs/ci-status/<sha>/<state>` -- each bounded to THIS sha's
27
+ * namespace, disjoint from `refs/heads/*` (branch-sync-neutral), and re-checked
28
+ * client-side with the prefix filter below. Returns the matched ref names; [] on
29
+ * any git failure (fail-closed -> classifies to 'unknown' -> holds).
28
30
  */
29
31
  export declare function listCiStatusRefs(sha: string, config: DaemonConfig): string[];
30
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ci-status-git.d.ts","sourceRoot":"","sources":["../src/ci-status-git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AAGxB,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAKrD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAc5E;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAS/E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,GAAG,SAAS,CAGtG"}
1
+ {"version":3,"file":"ci-status-git.d.ts","sourceRoot":"","sources":["../src/ci-status-git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AAGxB,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAiB5E;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAS/E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,GAAG,SAAS,CAGtG"}
@@ -20,18 +20,21 @@ import { createGitNativeCiStatusReader, } from './ci-status.js';
20
20
  import { loadEnvConfig } from '@telora/daemon-core';
21
21
  /** The per-SHA CI status ref namespace. State is encoded in the ref name. */
22
22
  export const CI_STATUS_REF_PREFIX = 'refs/ci-status';
23
- /** The recognized states CI publishes (one immutable ref per completed run). */
24
- const CI_STATUS_STATES = ['success', 'failure', 'pending'];
25
23
  /**
26
- * List the published `refs/ci-status/<sha>/<state>` ref names for a SHA on the
27
- * remote, via a scoped read-only `git ls-remote origin <ref> <ref> <ref>`. Only
28
- * the three known state refs for this exact SHA are queried -- a disjoint,
29
- * bounded namespace that can never touch branches. Returns the matched ref names
30
- * (e.g. `refs/ci-status/<sha>/success`); [] on any git failure (fail-closed).
24
+ * List the published ci-status ref names for a SHA on the remote, via a scoped
25
+ * read-only `git ls-remote origin <pattern>`. TWO glob depths are queried so both
26
+ * schemes are seen: the new run-ordered refs `refs/ci-status/<sha>/<run>/<state>`
27
+ * AND legacy `refs/ci-status/<sha>/<state>` -- each bounded to THIS sha's
28
+ * namespace, disjoint from `refs/heads/*` (branch-sync-neutral), and re-checked
29
+ * client-side with the prefix filter below. Returns the matched ref names; [] on
30
+ * any git failure (fail-closed -> classifies to 'unknown' -> holds).
31
31
  */
32
32
  export function listCiStatusRefs(sha, config) {
33
- const refs = CI_STATUS_STATES.map(s => `${CI_STATUS_REF_PREFIX}/${sha}/${s}`);
34
- const result = runGitSync(['ls-remote', 'origin', ...refs], config.repoPath);
33
+ const patterns = [
34
+ `${CI_STATUS_REF_PREFIX}/${sha}/*`,
35
+ `${CI_STATUS_REF_PREFIX}/${sha}/*/*`,
36
+ ];
37
+ const result = runGitSync(['ls-remote', 'origin', ...patterns], config.repoPath);
35
38
  if (!result.output)
36
39
  return [];
37
40
  // ls-remote lines: "<objectsha>\t<refname>". Extract the ref names.
@@ -1 +1 @@
1
- {"version":3,"file":"ci-status-git.js","sourceRoot":"","sources":["../src/ci-status-git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ci-status-git.js","sourceRoot":"","sources":["../src/ci-status-git.ts"],"names":[],"mappings":"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"}
@@ -63,12 +63,27 @@ export interface CiMergeGateDecision {
63
63
  */
64
64
  export declare function resolveCiMergeGate(status: CiRunStatus): CiMergeGateDecision;
65
65
  /**
66
- * Classify a git-native CI status from the set of `refs/ci-status/<sha>/<state>`
67
- * ref names published for a SHA. The STATE is encoded in the ref NAME (immutable
68
- * per-SHA), so no object content read is needed. FAIL-CLOSED: an empty set or an
69
- * unrecognized suffix is 'unknown' (holds). A failure ref outranks a success ref
70
- * (a red run must win if both somehow exist). Pure -- the caller supplies the
71
- * ref names from a scoped `git ls-remote` / fetch.
66
+ * Classify a git-native CI status from the set of ci-status ref names published
67
+ * for a SHA. The STATE is encoded in the ref NAME (immutable per-SHA), so no
68
+ * object content read is needed. Pure -- the caller supplies the ref names from a
69
+ * scoped `git ls-remote` / fetch.
70
+ *
71
+ * MOST-RECENT-RUN-WINS. The publisher encodes run order in the ref PATH
72
+ * (`refs/ci-status/<sha>/<runNumber>/<state>`), so a later GREEN run's ref
73
+ * outranks an earlier FAILURE ref for the same sha. This fixes the "a failure
74
+ * ref outranks a success ref, forever" trap: ref names carried no order, so a
75
+ * sha that once published a failure (an infra blip, or an evicted run) stayed
76
+ * red permanently even after a real green run of the same sha. The order comes
77
+ * from the workflow, never inferred by this reader.
78
+ *
79
+ * FAIL-CLOSED throughout: an empty set / unrecognized suffix -> 'unknown'
80
+ * (holds); among the highest run number, RED wins on a tie (the rare same-run
81
+ * re-run that published both states resolves to red, never a false green).
82
+ *
83
+ * LEGACY refs (`refs/ci-status/<sha>/<state>`, no run number) carry no order; if
84
+ * ONLY legacy refs exist we fall back to the original fail-closed precedence
85
+ * (failure outranks success outranks pending), preserving prior behavior for
86
+ * shas published before the run-ordered scheme deployed.
72
87
  */
73
88
  export declare function classifyGitNativeCiStatus(refNames: readonly string[]): CiRunStatus;
74
89
  /** Parameters passed to a CI status reader. */
@@ -1 +1 @@
1
- {"version":3,"file":"ci-status.d.ts","sourceRoot":"","sources":["../src/ci-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;AAElE,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,MAAM,EAAE,WAAW,CAAC;IACpB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,CAY3E;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAYlF;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAElF;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,MAAM,EAAE,CAAC;AAEhF;;;;GAIG;AACH,8EAA8E;AAC9E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,GAAG,cAAc,CAIvG;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAWvF"}
1
+ {"version":3,"file":"ci-status.d.ts","sourceRoot":"","sources":["../src/ci-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;AAElE,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,MAAM,EAAE,WAAW,CAAC;IACpB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,CAY3E;AA8BD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAuClF;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAElF;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,MAAM,EAAE,CAAC;AAEhF;;;;GAIG;AACH,8EAA8E;AAC9E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,GAAG,cAAc,CAIvG;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAWvF"}