@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.
- package/build-info.json +2 -2
- package/dist/ai-inspection-context.d.ts.map +1 -1
- package/dist/ai-inspection-context.js +4 -2
- package/dist/ai-inspection-context.js.map +1 -1
- package/dist/audit-prompt.d.ts.map +1 -1
- package/dist/audit-prompt.js +9 -5
- package/dist/audit-prompt.js.map +1 -1
- package/dist/ci-sensor-loop.d.ts +33 -5
- package/dist/ci-sensor-loop.d.ts.map +1 -1
- package/dist/ci-sensor-loop.js +95 -14
- package/dist/ci-sensor-loop.js.map +1 -1
- package/dist/ci-status-git.d.ts +7 -5
- package/dist/ci-status-git.d.ts.map +1 -1
- package/dist/ci-status-git.js +12 -9
- package/dist/ci-status-git.js.map +1 -1
- package/dist/ci-status.d.ts +21 -6
- package/dist/ci-status.d.ts.map +1 -1
- package/dist/ci-status.js +90 -15
- package/dist/ci-status.js.map +1 -1
- package/dist/cli/connect/agents.d.ts +64 -14
- package/dist/cli/connect/agents.d.ts.map +1 -1
- package/dist/cli/connect/agents.js +102 -19
- package/dist/cli/connect/agents.js.map +1 -1
- package/dist/cli/connect/claude.d.ts +19 -16
- package/dist/cli/connect/claude.d.ts.map +1 -1
- package/dist/cli/connect/claude.js +34 -68
- package/dist/cli/connect/claude.js.map +1 -1
- package/dist/cli/connect/scaffolding.d.ts +3 -2
- package/dist/cli/connect/scaffolding.d.ts.map +1 -1
- package/dist/cli/connect/scaffolding.js +17 -6
- package/dist/cli/connect/scaffolding.js.map +1 -1
- package/dist/cli/connect/seed-retirement.d.ts +39 -0
- package/dist/cli/connect/seed-retirement.d.ts.map +1 -0
- package/dist/cli/connect/seed-retirement.js +95 -0
- package/dist/cli/connect/seed-retirement.js.map +1 -0
- package/dist/cli/connect.d.ts +2 -2
- package/dist/cli/connect.d.ts.map +1 -1
- package/dist/cli/connect.js +8 -2
- package/dist/cli/connect.js.map +1 -1
- package/dist/cli/session-state.d.ts +0 -20
- package/dist/cli/session-state.d.ts.map +1 -1
- package/dist/cli/session-state.js +20 -49
- package/dist/cli/session-state.js.map +1 -1
- package/dist/completion/completion-decision.d.ts +3 -29
- package/dist/completion/completion-decision.d.ts.map +1 -1
- package/dist/completion/completion-decision.js +3 -15
- package/dist/completion/completion-decision.js.map +1 -1
- package/dist/completion/event-phases.d.ts +0 -8
- package/dist/completion/event-phases.d.ts.map +1 -1
- package/dist/completion/event-phases.js +4 -52
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/event.d.ts +1 -11
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +1 -3
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/merge-phase.d.ts +1 -1
- package/dist/completion/merge-phase.d.ts.map +1 -1
- package/dist/completion/merge-phase.js +14 -34
- package/dist/completion/merge-phase.js.map +1 -1
- package/dist/completion/team-lifecycle.d.ts.map +1 -1
- package/dist/completion/team-lifecycle.js +13 -1
- package/dist/completion/team-lifecycle.js.map +1 -1
- package/dist/delivery-artifacts.d.ts.map +1 -1
- package/dist/delivery-artifacts.js +9 -8
- package/dist/delivery-artifacts.js.map +1 -1
- package/dist/git/merge.d.ts +16 -0
- package/dist/git/merge.d.ts.map +1 -1
- package/dist/git/merge.js +39 -1
- package/dist/git/merge.js.map +1 -1
- package/dist/product-scaffold.d.ts +8 -6
- package/dist/product-scaffold.d.ts.map +1 -1
- package/dist/product-scaffold.js +14 -10
- package/dist/product-scaffold.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +44 -3
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/prompt-sections/scoping-sections.d.ts.map +1 -1
- package/dist/prompt-sections/scoping-sections.js +8 -0
- package/dist/prompt-sections/scoping-sections.js.map +1 -1
- package/dist/queries/cause-key.d.ts +13 -3
- package/dist/queries/cause-key.d.ts.map +1 -1
- package/dist/queries/cause-key.js +14 -4
- package/dist/queries/cause-key.js.map +1 -1
- package/dist/queries/deliveries.d.ts +20 -153
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +26 -0
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/delivery-gate-state.d.ts +192 -0
- package/dist/queries/delivery-gate-state.d.ts.map +1 -0
- package/dist/queries/delivery-gate-state.js +23 -0
- package/dist/queries/delivery-gate-state.js.map +1 -0
- package/dist/queries/holds.d.ts +62 -60
- package/dist/queries/holds.d.ts.map +1 -1
- package/dist/queries/holds.js +70 -69
- package/dist/queries/holds.js.map +1 -1
- package/dist/queries/issues.d.ts +2 -2
- package/dist/queries/issues.d.ts.map +1 -1
- package/dist/queries/issues.js +2 -2
- package/dist/queries/issues.js.map +1 -1
- package/dist/reality-pole.d.ts +5 -3
- package/dist/reality-pole.d.ts.map +1 -1
- package/dist/reality-pole.js +13 -4
- package/dist/reality-pole.js.map +1 -1
- package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
- package/dist/resolvers/git-diff-against-base.js +12 -5
- package/dist/resolvers/git-diff-against-base.js.map +1 -1
- package/dist/resolvers/index.d.ts +1 -1
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/index.js.map +1 -1
- package/dist/resolvers/shared/git-diff.d.ts +147 -26
- package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
- package/dist/resolvers/shared/git-diff.js +275 -35
- package/dist/resolvers/shared/git-diff.js.map +1 -1
- package/dist/templates/agents-md.d.ts +16 -0
- package/dist/templates/agents-md.d.ts.map +1 -1
- package/dist/templates/agents-md.js +26 -0
- package/dist/templates/agents-md.js.map +1 -1
- package/dist/templates/claude-settings.d.ts +44 -1
- package/dist/templates/claude-settings.d.ts.map +1 -1
- package/dist/templates/claude-settings.js +73 -1
- package/dist/templates/claude-settings.js.map +1 -1
- package/dist/unified-shell-provisioning.d.ts +99 -0
- package/dist/unified-shell-provisioning.d.ts.map +1 -0
- package/dist/unified-shell-provisioning.js +222 -0
- package/dist/unified-shell-provisioning.js.map +1 -0
- package/dist/unified-shell.d.ts +0 -41
- package/dist/unified-shell.d.ts.map +1 -1
- package/dist/unified-shell.js +19 -135
- package/dist/unified-shell.js.map +1 -1
- package/dist/verification-deps.d.ts +151 -0
- package/dist/verification-deps.d.ts.map +1 -0
- package/dist/verification-deps.js +19 -0
- package/dist/verification-deps.js.map +1 -0
- package/dist/verification-engine.d.ts +10 -112
- package/dist/verification-engine.d.ts.map +1 -1
- package/dist/verification-engine.js +84 -30
- package/dist/verification-engine.js.map +1 -1
- package/dist/verification-evidence.d.ts +33 -1
- package/dist/verification-evidence.d.ts.map +1 -1
- package/dist/verification-evidence.js +55 -13
- package/dist/verification-evidence.js.map +1 -1
- package/dist/verification-feedback.d.ts +31 -27
- package/dist/verification-feedback.d.ts.map +1 -1
- package/dist/verification-feedback.js +76 -85
- package/dist/verification-feedback.js.map +1 -1
- package/dist/verify-restatement.d.ts +12 -9
- package/dist/verify-restatement.d.ts.map +1 -1
- package/dist/verify-restatement.js +11 -9
- package/dist/verify-restatement.js.map +1 -1
- package/package.json +1 -1
package/build-info.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"commitSha": "
|
|
3
|
-
"builtAt": "2026-07-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EACL,qBAAqB,EACrB,
|
|
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;
|
|
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"}
|
package/dist/audit-prompt.js
CHANGED
|
@@ -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,
|
|
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
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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 --
|
package/dist/audit-prompt.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/ci-sensor-loop.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
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
|
|
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"}
|
package/dist/ci-sensor-loop.js
CHANGED
|
@@ -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
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
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}.
|
|
110
|
-
`
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
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":"AAAA
|
|
1
|
+
{"version":3,"file":"ci-sensor-loop.js","sourceRoot":"","sources":["../src/ci-sensor-loop.ts"],"names":[],"mappings":"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"}
|
package/dist/ci-status-git.d.ts
CHANGED
|
@@ -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
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
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;
|
|
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"}
|
package/dist/ci-status-git.js
CHANGED
|
@@ -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
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
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
|
|
34
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,EACL,6BAA6B,GAE9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAErD
|
|
1
|
+
{"version":3,"file":"ci-status-git.js","sourceRoot":"","sources":["../src/ci-status-git.ts"],"names":[],"mappings":"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"}
|
package/dist/ci-status.d.ts
CHANGED
|
@@ -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
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
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. */
|
package/dist/ci-status.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|