@telora/daemon 0.24.29 → 0.24.36

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 (148) hide show
  1. package/build-info.json +5 -3
  2. package/dist/ci/gate-job-conclusion.d.ts +88 -0
  3. package/dist/ci/gate-job-conclusion.d.ts.map +1 -0
  4. package/dist/ci/gate-job-conclusion.js +207 -0
  5. package/dist/ci/gate-job-conclusion.js.map +1 -0
  6. package/dist/ci/gate-ref.d.ts +12 -0
  7. package/dist/ci/gate-ref.d.ts.map +1 -1
  8. package/dist/ci/gate-ref.js +2 -0
  9. package/dist/ci/gate-ref.js.map +1 -1
  10. package/dist/composition/tower-escalation-context.d.ts +3 -0
  11. package/dist/composition/tower-escalation-context.d.ts.map +1 -1
  12. package/dist/composition/tower-escalation-context.js +26 -12
  13. package/dist/composition/tower-escalation-context.js.map +1 -1
  14. package/dist/composition/verification-context.d.ts.map +1 -1
  15. package/dist/composition/verification-context.js +13 -2
  16. package/dist/composition/verification-context.js.map +1 -1
  17. package/dist/composition/verify-probe-context.d.ts +15 -1
  18. package/dist/composition/verify-probe-context.d.ts.map +1 -1
  19. package/dist/composition/verify-probe-context.js +45 -4
  20. package/dist/composition/verify-probe-context.js.map +1 -1
  21. package/dist/prompt-sections/ci-failed-step-section.d.ts +16 -0
  22. package/dist/prompt-sections/ci-failed-step-section.d.ts.map +1 -0
  23. package/dist/prompt-sections/ci-failed-step-section.js +20 -0
  24. package/dist/prompt-sections/ci-failed-step-section.js.map +1 -0
  25. package/dist/prompt-sections/prompt-listing.d.ts +3 -0
  26. package/dist/prompt-sections/prompt-listing.d.ts.map +1 -1
  27. package/dist/prompt-sections/prompt-listing.js +11 -1
  28. package/dist/prompt-sections/prompt-listing.js.map +1 -1
  29. package/dist/prompt-sections/routing-decider-sections.d.ts +7 -0
  30. package/dist/prompt-sections/routing-decider-sections.d.ts.map +1 -1
  31. package/dist/prompt-sections/routing-decider-sections.js +22 -0
  32. package/dist/prompt-sections/routing-decider-sections.js.map +1 -1
  33. package/dist/queries/api-client/shared.js +1 -1
  34. package/dist/queries/delivery-gate-state/delivery-gate-holds.d.ts.map +1 -1
  35. package/dist/queries/delivery-gate-state/delivery-gate-holds.js +2 -1
  36. package/dist/queries/delivery-gate-state/delivery-gate-holds.js.map +1 -1
  37. package/dist/queries/delivery-gate-state/delivery-gate-state.d.ts +13 -0
  38. package/dist/queries/delivery-gate-state/delivery-gate-state.d.ts.map +1 -1
  39. package/dist/queries/delivery-gate-state/delivery-gate-state.js +3 -1
  40. package/dist/queries/delivery-gate-state/delivery-gate-state.js.map +1 -1
  41. package/dist/queries/escalations/filing-observation.d.ts +24 -1
  42. package/dist/queries/escalations/filing-observation.d.ts.map +1 -1
  43. package/dist/queries/escalations/filing-observation.js +27 -2
  44. package/dist/queries/escalations/filing-observation.js.map +1 -1
  45. package/dist/queries/escalations/tower-escalations.d.ts +21 -0
  46. package/dist/queries/escalations/tower-escalations.d.ts.map +1 -1
  47. package/dist/queries/escalations/tower-escalations.js +24 -0
  48. package/dist/queries/escalations/tower-escalations.js.map +1 -1
  49. package/dist/queries/focus-review/review-criterion-verdicts.d.ts.map +1 -1
  50. package/dist/queries/focus-review/review-criterion-verdicts.js +3 -0
  51. package/dist/queries/focus-review/review-criterion-verdicts.js.map +1 -1
  52. package/dist/queries/focus-review/review-summary-verdicts.d.ts +50 -0
  53. package/dist/queries/focus-review/review-summary-verdicts.d.ts.map +1 -0
  54. package/dist/queries/focus-review/review-summary-verdicts.js +117 -0
  55. package/dist/queries/focus-review/review-summary-verdicts.js.map +1 -0
  56. package/dist/queries/focuses/focuses.d.ts.map +1 -1
  57. package/dist/queries/focuses/focuses.js +2 -0
  58. package/dist/queries/focuses/focuses.js.map +1 -1
  59. package/dist/queries/reality-tree/reality-tree.d.ts.map +1 -1
  60. package/dist/queries/reality-tree/reality-tree.js +1 -0
  61. package/dist/queries/reality-tree/reality-tree.js.map +1 -1
  62. package/dist/queries/reality-tree/shortfall-node-bindings.d.ts +42 -0
  63. package/dist/queries/reality-tree/shortfall-node-bindings.d.ts.map +1 -0
  64. package/dist/queries/reality-tree/shortfall-node-bindings.js +42 -0
  65. package/dist/queries/reality-tree/shortfall-node-bindings.js.map +1 -0
  66. package/dist/queries/tower-decisions/tower-decisions.d.ts +3 -1
  67. package/dist/queries/tower-decisions/tower-decisions.d.ts.map +1 -1
  68. package/dist/queries/tower-decisions/tower-decisions.js +1 -0
  69. package/dist/queries/tower-decisions/tower-decisions.js.map +1 -1
  70. package/dist/testing/fixtures/api-client.js +1 -1
  71. package/dist/testing/fixtures/index.js +1 -1
  72. package/dist/testing/fixtures/tower-shortfall-7bac4c82.d.ts +38 -0
  73. package/dist/testing/fixtures/tower-shortfall-7bac4c82.d.ts.map +1 -0
  74. package/dist/testing/fixtures/tower-shortfall-7bac4c82.js +67 -0
  75. package/dist/testing/fixtures/tower-shortfall-7bac4c82.js.map +1 -0
  76. package/dist/testing/fixtures/tower-shortfall-cd32119b.d.ts +79 -0
  77. package/dist/testing/fixtures/tower-shortfall-cd32119b.d.ts.map +1 -0
  78. package/dist/testing/fixtures/tower-shortfall-cd32119b.js +142 -0
  79. package/dist/testing/fixtures/tower-shortfall-cd32119b.js.map +1 -0
  80. package/dist/testing/fixtures/verification-deps.d.ts.map +1 -1
  81. package/dist/testing/fixtures/verification-deps.js +3 -0
  82. package/dist/testing/fixtures/verification-deps.js.map +1 -1
  83. package/dist/testing/fixtures/verification-feedback-deps.js +1 -1
  84. package/dist/tower/tower-escalation-gather.d.ts +24 -0
  85. package/dist/tower/tower-escalation-gather.d.ts.map +1 -1
  86. package/dist/tower/tower-escalation-gather.js +29 -1
  87. package/dist/tower/tower-escalation-gather.js.map +1 -1
  88. package/dist/tower/tower-escalation-prompt.d.ts +26 -1
  89. package/dist/tower/tower-escalation-prompt.d.ts.map +1 -1
  90. package/dist/tower/tower-escalation-prompt.js +76 -8
  91. package/dist/tower/tower-escalation-prompt.js.map +1 -1
  92. package/dist/tower/tower-escalation-routing.d.ts +27 -1
  93. package/dist/tower/tower-escalation-routing.d.ts.map +1 -1
  94. package/dist/tower/tower-escalation-routing.js +32 -3
  95. package/dist/tower/tower-escalation-routing.js.map +1 -1
  96. package/dist/tower/tower-escalation-session.d.ts +29 -6
  97. package/dist/tower/tower-escalation-session.d.ts.map +1 -1
  98. package/dist/tower/tower-escalation-session.js +27 -9
  99. package/dist/tower/tower-escalation-session.js.map +1 -1
  100. package/dist/tower/tower-escalation-shortfall.d.ts +158 -0
  101. package/dist/tower/tower-escalation-shortfall.d.ts.map +1 -0
  102. package/dist/tower/tower-escalation-shortfall.js +452 -0
  103. package/dist/tower/tower-escalation-shortfall.js.map +1 -0
  104. package/dist/tower/tower-supervisor-session.d.ts.map +1 -1
  105. package/dist/tower/tower-supervisor-session.js +1 -0
  106. package/dist/tower/tower-supervisor-session.js.map +1 -1
  107. package/dist/types/index.js +1 -1
  108. package/dist/verify/ci-gate/ci-gate-dispatch.d.ts +41 -0
  109. package/dist/verify/ci-gate/ci-gate-dispatch.d.ts.map +1 -1
  110. package/dist/verify/ci-gate/ci-gate-dispatch.js +148 -7
  111. package/dist/verify/ci-gate/ci-gate-dispatch.js.map +1 -1
  112. package/dist/verify/ci-gate/ci-gate-pin-publish.d.ts +101 -0
  113. package/dist/verify/ci-gate/ci-gate-pin-publish.d.ts.map +1 -0
  114. package/dist/verify/ci-gate/ci-gate-pin-publish.js +238 -0
  115. package/dist/verify/ci-gate/ci-gate-pin-publish.js.map +1 -0
  116. package/dist/verify/deterministic-gate/verification-deterministic.d.ts +3 -1
  117. package/dist/verify/deterministic-gate/verification-deterministic.d.ts.map +1 -1
  118. package/dist/verify/deterministic-gate/verification-deterministic.js.map +1 -1
  119. package/dist/verify/gate-verdicts/commit-verdict-record.d.ts +2 -0
  120. package/dist/verify/gate-verdicts/commit-verdict-record.d.ts.map +1 -1
  121. package/dist/verify/gate-verdicts/commit-verdict-record.js +10 -1
  122. package/dist/verify/gate-verdicts/commit-verdict-record.js.map +1 -1
  123. package/dist/verify/install-probe/in-repo-publish.d.ts +10 -0
  124. package/dist/verify/install-probe/in-repo-publish.d.ts.map +1 -1
  125. package/dist/verify/install-probe/in-repo-publish.js +15 -0
  126. package/dist/verify/install-probe/in-repo-publish.js.map +1 -1
  127. package/dist/verify/install-probe/install-probe-tick.d.ts +7 -0
  128. package/dist/verify/install-probe/install-probe-tick.d.ts.map +1 -1
  129. package/dist/verify/install-probe/install-probe-tick.js +4 -1
  130. package/dist/verify/install-probe/install-probe-tick.js.map +1 -1
  131. package/dist/verify/outcome-routing/verification-feedback.d.ts +5 -1
  132. package/dist/verify/outcome-routing/verification-feedback.d.ts.map +1 -1
  133. package/dist/verify/outcome-routing/verification-feedback.js +7 -1
  134. package/dist/verify/outcome-routing/verification-feedback.js.map +1 -1
  135. package/dist/verify/outcome-routing/verification-rework-messages.d.ts.map +1 -1
  136. package/dist/verify/outcome-routing/verification-rework-messages.js +7 -2
  137. package/dist/verify/outcome-routing/verification-rework-messages.js.map +1 -1
  138. package/dist/verify/shortfalls/shortfall-park-escalation.d.ts +9 -2
  139. package/dist/verify/shortfalls/shortfall-park-escalation.d.ts.map +1 -1
  140. package/dist/verify/shortfalls/shortfall-park-escalation.js +13 -1
  141. package/dist/verify/shortfalls/shortfall-park-escalation.js.map +1 -1
  142. package/dist/verify/shortfalls/shortfall-rulings.d.ts.map +1 -1
  143. package/dist/verify/shortfalls/shortfall-rulings.js +4 -0
  144. package/dist/verify/shortfalls/shortfall-rulings.js.map +1 -1
  145. package/dist/worktree/focus-worktree-state.d.ts.map +1 -1
  146. package/dist/worktree/focus-worktree-state.js +1 -0
  147. package/dist/worktree/focus-worktree-state.js.map +1 -1
  148. package/package.json +2 -2
@@ -7,7 +7,8 @@
7
7
  * -> the OPERATOR, with no supervisor session, when
8
8
  * human_act the filing names a human-only act (metadata.human_act
9
9
  * kind irreversible | outward | unreachable_capability):
10
- * no agent can perform it, so no agent should hold it;
10
+ * no agent can perform it, so no agent should hold it --
11
+ * EXCEPT a shortfall ruling (below);
11
12
  * external_wait the filing waits on a third party: not a judgement call;
12
13
  * unarmed the focus is no longer armed (no assigned agent role):
13
14
  * the supervisor decides within the scope an ARM authorised;
@@ -16,8 +17,25 @@
16
17
  * scope the team is solving for) or defers (a major new build, or it feels
17
18
  * a human is needed) is its judgement, told in tower/tower-escalation-prompt.ts.
18
19
  *
20
+ * THE SHORTFALL-RULING EXCEPTION. A filing whose human act IS a verify
21
+ * shortfall ruling goes to the SUPERVISOR (still subject to unarmed /
22
+ * focus_closed / external_wait), because the supervisor can rule an evidenced
23
+ * shortfall itself (escalation_tower_rule_shortfall) and defers when the record
24
+ * does not support it. It is recognised ONLY by the structured field
25
+ * metadata.human_act.shortfall_ruling.node_ids (mcp telora_agent
26
+ * humanAct.shortfallRuling, persisted by product-api escalation_create; read by
27
+ * shortfallRulingAskOf), never by matching the act prose, and only when:
28
+ * - the act's kind is unreachable_capability (a ruling is an authority act a
29
+ * team cannot reach; an irreversible or outward act carrying the field is
30
+ * still that act, so it goes to the operator), and
31
+ * - it names >= 1 well-formed node id, and
32
+ * - the filing carries a deliveryId (a ruling is recorded ON a delivery).
33
+ * Any other unreachable_capability act (a credential, control-plane state) is
34
+ * unchanged: the operator.
35
+ *
19
36
  * @module tower/tower-escalation-routing
20
37
  */
38
+ import { type ShortfallRulingAsk } from '../queries/escalations/filing-observation.js';
21
39
  /** The human-only act kinds (mcp telora_agent humanAct.kind). */
22
40
  export declare const HUMAN_ACT_KINDS: readonly string[];
23
41
  /** Why an escalation goes straight to the operator. */
@@ -38,12 +56,20 @@ export interface RoutingFacts {
38
56
  focus: {
39
57
  armed: boolean;
40
58
  } | null;
59
+ /** The escalation's delivery anchor. A shortfall ruling needs one; absent reads as none. */
60
+ deliveryId?: string | null;
41
61
  }
42
62
  /** Pure: the human-only act a filing names, or null. */
43
63
  export declare function humanActOf(metadata: Record<string, unknown>): {
44
64
  kind: string;
45
65
  act: string;
46
66
  } | null;
67
+ /**
68
+ * Pure: the structured shortfall ruling a filing asks for -- the well-formed
69
+ * metadata.human_act.shortfall_ruling on an unreachable_capability act -- or null.
70
+ * Reads the structured field only, never the act prose.
71
+ */
72
+ export declare function shortfallRulingAskOf(metadata: Record<string, unknown>): ShortfallRulingAsk | null;
47
73
  /** Pure: route one pending team escalation. */
48
74
  export declare function routeTeamEscalation(facts: RoutingFacts): TowerEscalationRoute;
49
75
  //# sourceMappingURL=tower-escalation-routing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tower-escalation-routing.d.ts","sourceRoot":"","sources":["../../src/tower/tower-escalation-routing.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,iEAAiE;AACjE,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAA0D,CAAC;AAExG,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,eAAe,GAAG,SAAS,GAAG,cAAc,CAAC;AAE7F,yCAAyC;AACzC,MAAM,MAAM,oBAAoB,GAC5B;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,GACvB;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kHAAkH;IAClH,KAAK,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CAClC;AAED,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMlG;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,oBAAoB,CAe7E"}
1
+ {"version":3,"file":"tower-escalation-routing.d.ts","sourceRoot":"","sources":["../../src/tower/tower-escalation-routing.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAErG,iEAAiE;AACjE,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAA0D,CAAC;AAExG,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,eAAe,GAAG,SAAS,GAAG,cAAc,CAAC;AAE7F,yCAAyC;AACzC,MAAM,MAAM,oBAAoB,GAC5B;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,GACvB;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kHAAkH;IAClH,KAAK,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACjC,4FAA4F;IAC5F,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMlG;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAEjG;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,oBAAoB,CAgB7E"}
@@ -1,5 +1,7 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: packages/daemon/src/tower/tower-escalation-prompt.test.ts
2
+ // Pinned by: packages/daemon/src/tower/tower-escalation-io-cases.test.ts,
3
+ // packages/daemon/src/tower/tower-escalation-prompt.test.ts,
4
+ // packages/daemon/src/tower/tower-escalation-routing.test.ts
3
5
  // PINNED-BY-END
4
6
  /**
5
7
  * THE ROUTING TABLE for a team escalation pending on the Tower supervisor: does
@@ -10,7 +12,8 @@
10
12
  * -> the OPERATOR, with no supervisor session, when
11
13
  * human_act the filing names a human-only act (metadata.human_act
12
14
  * kind irreversible | outward | unreachable_capability):
13
- * no agent can perform it, so no agent should hold it;
15
+ * no agent can perform it, so no agent should hold it --
16
+ * EXCEPT a shortfall ruling (below);
14
17
  * external_wait the filing waits on a third party: not a judgement call;
15
18
  * unarmed the focus is no longer armed (no assigned agent role):
16
19
  * the supervisor decides within the scope an ARM authorised;
@@ -19,8 +22,25 @@
19
22
  * scope the team is solving for) or defers (a major new build, or it feels
20
23
  * a human is needed) is its judgement, told in tower/tower-escalation-prompt.ts.
21
24
  *
25
+ * THE SHORTFALL-RULING EXCEPTION. A filing whose human act IS a verify
26
+ * shortfall ruling goes to the SUPERVISOR (still subject to unarmed /
27
+ * focus_closed / external_wait), because the supervisor can rule an evidenced
28
+ * shortfall itself (escalation_tower_rule_shortfall) and defers when the record
29
+ * does not support it. It is recognised ONLY by the structured field
30
+ * metadata.human_act.shortfall_ruling.node_ids (mcp telora_agent
31
+ * humanAct.shortfallRuling, persisted by product-api escalation_create; read by
32
+ * shortfallRulingAskOf), never by matching the act prose, and only when:
33
+ * - the act's kind is unreachable_capability (a ruling is an authority act a
34
+ * team cannot reach; an irreversible or outward act carrying the field is
35
+ * still that act, so it goes to the operator), and
36
+ * - it names >= 1 well-formed node id, and
37
+ * - the filing carries a deliveryId (a ruling is recorded ON a delivery).
38
+ * Any other unreachable_capability act (a credential, control-plane state) is
39
+ * unchanged: the operator.
40
+ *
22
41
  * @module tower/tower-escalation-routing
23
42
  */
43
+ import { readHumanAct } from '../queries/escalations/filing-observation.js';
24
44
  /** The human-only act kinds (mcp telora_agent humanAct.kind). */
25
45
  export const HUMAN_ACT_KINDS = ['irreversible', 'outward', 'unreachable_capability'];
26
46
  /** Pure: the human-only act a filing names, or null. */
@@ -33,10 +53,19 @@ export function humanActOf(metadata) {
33
53
  return null;
34
54
  return { kind, act: typeof act === 'string' ? act : '' };
35
55
  }
56
+ /**
57
+ * Pure: the structured shortfall ruling a filing asks for -- the well-formed
58
+ * metadata.human_act.shortfall_ruling on an unreachable_capability act -- or null.
59
+ * Reads the structured field only, never the act prose.
60
+ */
61
+ export function shortfallRulingAskOf(metadata) {
62
+ return readHumanAct(metadata.human_act)?.shortfall_ruling ?? null;
63
+ }
36
64
  /** Pure: route one pending team escalation. */
37
65
  export function routeTeamEscalation(facts) {
38
66
  const act = humanActOf(facts.metadata);
39
- if (act) {
67
+ const rulingForSupervisor = act !== null && shortfallRulingAskOf(facts.metadata) !== null && !!facts.deliveryId;
68
+ if (act && !rulingForSupervisor) {
40
69
  return { route: 'operator', reason: 'human_act', detail: `it names a human-only act (${act.kind}): ${act.act || '(unstated)'}` };
41
70
  }
42
71
  if (facts.disposition === 'external_wait') {
@@ -1 +1 @@
1
- {"version":3,"file":"tower-escalation-routing.js","sourceRoot":"","sources":["../../src/tower/tower-escalation-routing.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uEAAuE;AACvE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,iEAAiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAAsB,CAAC,cAAc,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;AAkBxG,wDAAwD;AACxD,MAAM,UAAU,UAAU,CAAC,QAAiC;IAC1D,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC;IAC/B,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/E,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAwC,CAAC;IAC/D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3D,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,mBAAmB,CAAC,KAAmB;IACrD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,8BAA8B,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,YAAY,EAAE,EAAE,CAAC;IACnI,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,KAAK,eAAe,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,uDAAuD,EAAE,CAAC;IACzH,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,mDAAmD,EAAE,CAAC;IACpH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,+EAA+E,EAAE,CAAC;IAC3I,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"tower-escalation-routing.js","sourceRoot":"","sources":["../../src/tower/tower-escalation-routing.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,0EAA0E;AAC1E,+DAA+D;AAC/D,+DAA+D;AAC/D,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,YAAY,EAA2B,MAAM,8CAA8C,CAAC;AAErG,iEAAiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAAsB,CAAC,cAAc,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;AAoBxG,wDAAwD;AACxD,MAAM,UAAU,UAAU,CAAC,QAAiC;IAC1D,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC;IAC/B,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/E,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAwC,CAAC;IAC/D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAiC;IACpE,OAAO,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,IAAI,IAAI,CAAC;AACpE,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,mBAAmB,CAAC,KAAmB;IACrD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,mBAAmB,GAAG,GAAG,KAAK,IAAI,IAAI,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IAChH,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,8BAA8B,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,YAAY,EAAE,EAAE,CAAC;IACnI,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,KAAK,eAAe,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,uDAAuD,EAAE,CAAC;IACzH,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,mDAAmD,EAAE,CAAC;IACpH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,+EAA+E,EAAE,CAAC;IAC3I,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AACjC,CAAC"}
@@ -24,14 +24,29 @@
24
24
  * supervisor's process, spawn/routing-decider-spawn.ts
25
25
  * spawnOneShotJudgementSession, opus, a governor slot, the scoped
26
26
  * `tower_supervisor` MCP profile) in the background. The session answers it
27
- * (telora_agent escalation_answer) or defers it (escalation_defer); each is
28
- * one attributed edge act that records the decision on the focus.
27
+ * (telora_agent escalation_answer), defers it (escalation_defer), or -- on a
28
+ * delivery's verify shortfall the record already shows met -- RULES it
29
+ * (escalation_rule_shortfall: the nodes ruled met, the escalation resolved
30
+ * as answered, shortfall_ruled recorded); each is one attributed edge act
31
+ * that records the decision on the focus.
32
+ *
33
+ * THE DAEMON ATTESTS EVERY SESSION BEFORE IT SPAWNS IT. The session id is
34
+ * minted here and recorded on the row by daemon_escalation_tower_session_start
35
+ * (queries/escalations/tower-escalations.ts attestTowerEscalationSession)
36
+ * before the process starts: the server refuses the supervisor's shortfall
37
+ * ruling for a session the daemon never attested, so an agent cannot claim to
38
+ * be the supervisor by naming an id. An attestation that fails (the row is no
39
+ * longer pending -- 409 -- or the call failed) spawns nothing and costs no
40
+ * attempt; the next sweep retries.
29
41
  *
30
42
  * AFTER A SESSION the daemon reads the row:
31
43
  * - answered -> the answer reaches the team: injected into its live session now
32
44
  * (spawn/live-answer-delivery.ts), else read back at its next spawn through
33
45
  * the answer re-arm signal the answer wrote; a decision record the edge
34
46
  * failed to write is backstopped here (escalation_answered, by the daemon).
47
+ * A RULED escalation reads back answered too (the ruling act resolves it
48
+ * and writes the same re-arm), and its own shortfall_ruled record counts as
49
+ * the decision -- the backstop never adds an escalation_answered beside it.
35
50
  * - deferred -> it stands in the operator's inbox.
36
51
  * - still pending: a session that CRASHED or timed out -> deferred at once
37
52
  * ("crash -> the operator"); one that exited cleanly without deciding is an
@@ -44,7 +59,7 @@
44
59
  import type { ResourceGovernor } from '@telora/daemon-core';
45
60
  import type { DaemonConfig } from '../types/index.js';
46
61
  import type { TowerDecision, TowerDecisionInput } from '../queries/tower-decisions/tower-decisions.js';
47
- import type { TowerDeferral, TowerEscalationState, TowerPendingEscalation } from '../queries/escalations/tower-escalations.js';
62
+ import type { TowerDeferral, TowerEscalationState, TowerPendingEscalation, TowerSessionAttestation } from '../queries/escalations/tower-escalations.js';
48
63
  import { type TowerEscalationRoute } from './tower-escalation-routing.js';
49
64
  import { type EscalationContext } from './tower-escalation-prompt.js';
50
65
  import type { TowerSupervisorSpawnResult } from './tower-supervisor-session.js';
@@ -56,9 +71,9 @@ export declare const TOWER_ESCALATION_TIMEOUT_MS: number;
56
71
  export declare const TOWER_ESCALATION_GOVERNOR_ENGINE = "tower-supervisor";
57
72
  /**
58
73
  * Tools the escalation session is pre-approved for: reading the worktree, and
59
- * the Telora reads plus the two acts it decides through (telora_agent
60
- * escalation_answer / escalation_defer). Pre-approval only; the scoped MCP
61
- * profile is the bound.
74
+ * the Telora reads plus the three acts it decides through (telora_agent
75
+ * escalation_answer / escalation_defer / escalation_rule_shortfall).
76
+ * Pre-approval only; the scoped MCP profile is the bound.
62
77
  */
63
78
  export declare const TOWER_ESCALATION_MCP_TOOLS: readonly string[];
64
79
  /** A focus as the escalation supervisor reads it. */
@@ -92,11 +107,17 @@ export interface TowerEscalationSupervisorDeps {
92
107
  defer: (deferral: TowerDeferral) => Promise<{
93
108
  towerDecisionId: string | null;
94
109
  }>;
110
+ /** Attest the session about to be spawned for a pending row (daemon_escalation_tower_session_start). Throws when refused. */
111
+ attestSession: (args: {
112
+ escalationId: string;
113
+ supervisorSessionId: string;
114
+ }) => Promise<TowerSessionAttestation>;
95
115
  /** The active focuses of one product this daemon runs. */
96
116
  listFocuses: (productId: string) => Promise<TowerEscalationFocus[]>;
97
117
  focusWorktreePath: (focusId: string) => string | null;
98
118
  gatherContext: (args: {
99
119
  focus: TowerEscalationFocus;
120
+ escalation: TowerPendingEscalation;
100
121
  config: DaemonConfig;
101
122
  repoRoot: string;
102
123
  }) => Promise<EscalationContext>;
@@ -135,6 +156,8 @@ export declare function crashed(result: TowerSupervisorSpawnResult): boolean;
135
156
  export declare function operatorRouteDeferral(route: Extract<TowerEscalationRoute, {
136
157
  route: 'operator';
137
158
  }>): Pick<TowerDeferral, 'summary' | 'rationale' | 'evidence'>;
159
+ /** The decision kinds that record a supervisor's answered escalation: an answer, or a shortfall ruling (which resolves it as answered). */
160
+ export declare const ANSWERED_DECISION_KINDS: readonly string[];
138
161
  /** Pure: whether a pending row belongs to a product this daemon runs. */
139
162
  export declare function ownedByThisDaemon(esc: Pick<TowerPendingEscalation, 'productId' | 'focusId'>, productIds: ReadonlySet<string>, focusIds: ReadonlySet<string>): boolean;
140
163
  /** The escalation half of the Tower supervisor (one per process). */
@@ -1 +1 @@
1
- {"version":3,"file":"tower-escalation-session.d.ts","sourceRoot":"","sources":["../../src/tower/tower-escalation-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tower-escalation-session.d.ts","sourceRoot":"","sources":["../../src/tower/tower-escalation-session.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: packages/daemon/src/tower/tower-escalation-session.test.ts
2
+ // Pinned by: packages/daemon/src/tower/tower-escalation-gather.test.ts,
3
+ // packages/daemon/src/tower/tower-escalation-io-cases.test.ts,
4
+ // packages/daemon/src/tower/tower-escalation-session.test.ts
3
5
  // PINNED-BY-END
4
6
  import { createLogger } from '../log/daemon-log.js';
5
7
  import { routeTeamEscalation } from './tower-escalation-routing.js';
@@ -13,9 +15,9 @@ export const TOWER_ESCALATION_TIMEOUT_MS = 20 * 60 * 1000;
13
15
  export const TOWER_ESCALATION_GOVERNOR_ENGINE = 'tower-supervisor';
14
16
  /**
15
17
  * Tools the escalation session is pre-approved for: reading the worktree, and
16
- * the Telora reads plus the two acts it decides through (telora_agent
17
- * escalation_answer / escalation_defer). Pre-approval only; the scoped MCP
18
- * profile is the bound.
18
+ * the Telora reads plus the three acts it decides through (telora_agent
19
+ * escalation_answer / escalation_defer / escalation_rule_shortfall).
20
+ * Pre-approval only; the scoped MCP profile is the bound.
19
21
  */
20
22
  export const TOWER_ESCALATION_MCP_TOOLS = [
21
23
  'Read', 'Grep', 'Glob',
@@ -62,13 +64,15 @@ export function operatorRouteDeferral(route) {
62
64
  evidence: { route: route.reason, detail: route.detail },
63
65
  };
64
66
  }
65
- /** Answered: hand the answer to the live team, and backstop the decision record. */
67
+ /** The decision kinds that record a supervisor's answered escalation: an answer, or a shortfall ruling (which resolves it as answered). */
68
+ export const ANSWERED_DECISION_KINDS = ['escalation_answered', 'shortfall_ruled'];
69
+ /** Answered (or ruled): hand the answer to the live team, and backstop the decision record. */
66
70
  async function onAnswered(st, esc, focusId, now, sessionId) {
67
71
  const delivery = await st.deps.deliverAnswer({ focusId, rearmValues: now.answeredAt ? [now.answeredAt] : [] });
68
72
  log.info(`[tower-escalation] the supervisor answered escalation ${esc.escalationId.slice(0, 8)}; ` +
69
73
  (delivery.delivered ? 'injected into the live team.' : `no live team took it (${delivery.detail ?? 'none'}); it is read back at the next spawn.`));
70
74
  const record = await st.deps.listTowerDecisions(focusId);
71
- if (record.decisions.some((d) => d.kind === 'escalation_answered' && d.escalationId === esc.escalationId))
75
+ if (record.decisions.some((d) => ANSWERED_DECISION_KINDS.includes(d.kind) && d.escalationId === esc.escalationId))
72
76
  return;
73
77
  await st.deps.recordTowerDecision({
74
78
  focusId, kind: 'escalation_answered', decidedByKind: 'daemon', escalationId: esc.escalationId,
@@ -106,7 +110,19 @@ async function settle(st, esc, focus, result, sessionId) {
106
110
  await deferAs(st, esc, `The Tower supervisor ran ${tried} time(s) without deciding; handed to the operator.`, 'No session answered or deferred it; the daemon stops spending sessions on it and the operator decides.', { ...evidence, attempts: tried });
107
111
  }
108
112
  }
109
- /** One session inside a governor slot: gather, prompt, spawn, settle. */
113
+ /** Attest the session before it is spawned; false (logged) when refused or failed -- nothing spawns, no attempt is counted. */
114
+ async function attested(st, esc, supervisorSessionId) {
115
+ try {
116
+ await st.deps.attestSession({ escalationId: esc.escalationId, supervisorSessionId });
117
+ return true;
118
+ }
119
+ catch (err) {
120
+ log.warn(`[tower-escalation] could not attest session ${supervisorSessionId.slice(0, 8)} for escalation ${esc.escalationId.slice(0, 8)}: ` +
121
+ `${err.message}; nothing spawned, the next sweep retries.`);
122
+ return false;
123
+ }
124
+ }
125
+ /** One session inside a governor slot: gather, prompt, attest, spawn, settle. */
110
126
  async function runSession(st, esc, focus, config) {
111
127
  const governor = st.deps.readGovernor();
112
128
  let token = null;
@@ -119,9 +135,11 @@ async function runSession(st, esc, focus, config) {
119
135
  }
120
136
  try {
121
137
  const repoRoot = st.deps.focusWorktreePath(focus.focusId) ?? config.repoPath;
122
- const context = await st.deps.gatherContext({ focus, config, repoRoot });
138
+ const context = await st.deps.gatherContext({ focus, escalation: esc, config, repoRoot });
123
139
  const supervisorSessionId = st.deps.newSessionId();
124
140
  const prompt = buildTowerEscalationPrompt({ focus, escalation: esc, supervisorSessionId, context });
141
+ if (!(await attested(st, esc, supervisorSessionId)))
142
+ return;
125
143
  log.info(`[tower-escalation] deciding escalation ${esc.escalationId.slice(0, 8)} of "${focus.focusName}" (session ${supervisorSessionId.slice(0, 8)}).`);
126
144
  const result = await st.deps.spawn({
127
145
  config, prompt, cwd: repoRoot, focusId: focus.focusId, escalationId: esc.escalationId,
@@ -140,7 +158,7 @@ async function step(st, esc, focuses, config) {
140
158
  return 'in_flight';
141
159
  try {
142
160
  const focus = esc.focusId ? focuses.get(esc.focusId) ?? null : null;
143
- const route = routeTeamEscalation({ disposition: esc.disposition, metadata: esc.metadata, focus });
161
+ const route = routeTeamEscalation({ disposition: esc.disposition, metadata: esc.metadata, focus, deliveryId: esc.deliveryId });
144
162
  if (route.route === 'operator') {
145
163
  const d = operatorRouteDeferral(route);
146
164
  await deferAs(st, esc, d.summary, d.rationale, d.evidence);
@@ -1 +1 @@
1
- {"version":3,"file":"tower-escalation-session.js","sourceRoot":"","sources":["../../src/tower/tower-escalation-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tower-escalation-session.js","sourceRoot":"","sources":["../../src/tower/tower-escalation-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ import type { ReviewVerdictRecord } from '../queries/focus-review/review-criterion-verdicts.js';
2
+ import type { ShortfallNodeBinding } from '../queries/reality-tree/shortfall-node-bindings.js';
3
+ /** The act the supervisor rules through (telora_agent action). */
4
+ export declare const SHORTFALL_RULING_ACT = "escalation_rule_shortfall";
5
+ /** How many verdict-bearing reviews under the arm the record reads. */
6
+ export declare const SHORTFALL_REVIEWS_READ = 10;
7
+ /** A gate verdict gate_state records. */
8
+ export interface ShortfallGateVerdict {
9
+ outcome: 'passed' | 'failed';
10
+ sha: string;
11
+ failedStage: string | null;
12
+ /** The gate_state key that carried it. */
13
+ from: string;
14
+ }
15
+ /** One shortfall node, what names it, and what the tree says binds a verdict to it. */
16
+ export interface ShortfallNode {
17
+ nodeId: string;
18
+ /** The outcome the injection declares for it (from the shortfall judgment), when recorded. */
19
+ declared: string | null;
20
+ namedBy: string[];
21
+ /** Whether the tree read found it among the focus's active nodes (false also when the read failed). */
22
+ inTree: boolean;
23
+ /** Its declared future (frt_statement) as the tree holds it; null when it declares none or was not found. */
24
+ future: string | null;
25
+ /** The active effects it is a `sufficient` cause of (N -> E). */
26
+ sufficientEffectIds: string[];
27
+ }
28
+ /** How a review verdict binds to a shortfall node (module header, THE BINDING RULE). */
29
+ export type ShortfallBindingVia = 'tree_verdict_on_node' | 'declared_future' | 'sufficient_effect';
30
+ /** One review verdict the record shows. */
31
+ export interface ShortfallReviewVerdict {
32
+ /** The criterion verbatim, as the review named it: what the act is passed. */
33
+ criterion: string;
34
+ nodeId: string | null;
35
+ /** A tree verdict (keyed to nodeId), or a verdict on one of this delivery's declared criteria. */
36
+ source: 'tree' | 'delivery_criterion';
37
+ verdict: 'met' | 'not_met' | 'excused';
38
+ evidence: string[];
39
+ /** True when only criterion_verdicts carried it (the summary section did not): no evidence is readable. */
40
+ storedOnly: boolean;
41
+ /** True when the stored row and the summary disagree on this verdict. */
42
+ disagrees: boolean;
43
+ /** The shortfall nodes it binds to, and how; [] when it binds none (shown, never counted). */
44
+ binds: Array<{
45
+ nodeId: string;
46
+ via: ShortfallBindingVia;
47
+ }>;
48
+ }
49
+ /** One verdict-bearing review under the arm. */
50
+ export interface ShortfallReview {
51
+ reviewId: string;
52
+ completedAt: string;
53
+ outcome: string;
54
+ reviewedSha: string | null;
55
+ verdicts: ShortfallReviewVerdict[];
56
+ }
57
+ /** What the supervisor is shown about a delivery-anchored escalation's shortfall. */
58
+ export interface ShortfallRecord {
59
+ deliveryId: string;
60
+ deliveryName: string;
61
+ judgedCommit: {
62
+ sha: string;
63
+ source: 'judged_commit' | 'shortfall_reconciliation';
64
+ } | null;
65
+ /** The verdict about the judged commit (a failed one wins); null when none is about it. */
66
+ gateVerdict: ShortfallGateVerdict | null;
67
+ /** Verdicts gate_state carries about OTHER commits (shown, never counted). */
68
+ otherCommitVerdicts: ShortfallGateVerdict[];
69
+ nodes: ShortfallNode[];
70
+ /** The delivery's own acceptance criteria, verbatim. */
71
+ deliveryCriteria: string[];
72
+ /** Newest first; [] when none (or unreadable: see reviewsReadable). */
73
+ reviews: ShortfallReview[];
74
+ reviewsReadable: boolean;
75
+ /** False when the tree read that binds verdicts to the nodes failed. */
76
+ bindingsReadable: boolean;
77
+ }
78
+ /** One node the standing supports ruling met, on the ONE verdict bound to it. */
79
+ export interface ShortfallRuling {
80
+ nodeId: string;
81
+ criterion: string;
82
+ reviewId: string;
83
+ evidence: string[];
84
+ via: ShortfallBindingVia;
85
+ /** The tree node the bound verdict is keyed to (the node itself, or the effect it sustains); null for a declared criterion. */
86
+ verdictNodeId: string | null;
87
+ }
88
+ /** What the standing says, and on what. */
89
+ export type ShortfallStanding = {
90
+ standing: 'rule';
91
+ rulings: ShortfallRuling[];
92
+ unasked: string[];
93
+ } | {
94
+ standing: 'defer';
95
+ reasons: string[];
96
+ unasked: string[];
97
+ };
98
+ /** Pure: the judged commit and the verdicts about it (module header). */
99
+ export declare function judgedGateOf(gateState: unknown): Pick<ShortfallRecord, 'judgedCommit' | 'gateVerdict' | 'otherCommitVerdicts'>;
100
+ /** Pure: the node ids a filing's structured shortfall-ruling ask names (metadata.human_act.shortfall_ruling.node_ids), tolerantly. */
101
+ export declare function filingShortfallNodeIds(metadata: Record<string, unknown>): string[];
102
+ /** How a node the filing's structured ask names is labelled in namedBy. */
103
+ export declare const NAMED_BY_FILING = "the filing";
104
+ /** Pure: the shortfall nodes gate_state and the filing name, each with what names it. */
105
+ export declare function shortfallNodesOf(gateState: unknown, metadata: Record<string, unknown>): ShortfallNode[];
106
+ /** Pure: the shortfall nodes a verdict binds to, by THE BINDING RULE (module header). */
107
+ export declare function bindsOf(v: {
108
+ criterion: string;
109
+ nodeId: string | null;
110
+ }, nodes: readonly ShortfallNode[]): ShortfallReviewVerdict['binds'];
111
+ /**
112
+ * Pure: one review's verdicts the record shows -- tree verdicts that bind a
113
+ * shortfall node, and verdicts on this delivery's declared criteria (each
114
+ * carrying the nodes it binds, possibly none).
115
+ */
116
+ export declare function shortfallReviewOf(r: ReviewVerdictRecord, nodes: readonly ShortfallNode[], deliveryKeys: ReadonlySet<string>): ShortfallReview;
117
+ /** What the record is built from. */
118
+ export interface ShortfallRecordInput {
119
+ delivery: {
120
+ id: string;
121
+ name: string;
122
+ gateState: unknown;
123
+ acceptanceCriteria: string | null;
124
+ };
125
+ metadata: Record<string, unknown>;
126
+ /** The focus's verdict-bearing reviews under the arm, newest first; null when the read failed. */
127
+ reviews: readonly ReviewVerdictRecord[] | null;
128
+ /** The tree's bindings of the shortfall nodes (queries/reality-tree/shortfall-node-bindings.ts); null when the read failed. */
129
+ bindings: readonly ShortfallNodeBinding[] | null;
130
+ }
131
+ /** Pure: the shortfall nodes with what the tree read says binds a verdict to each. */
132
+ export declare function withBindings(nodes: readonly ShortfallNode[], bindings: readonly ShortfallNodeBinding[] | null): ShortfallNode[];
133
+ /** Pure: the shortfall record. */
134
+ export declare function buildShortfallRecord(input: ShortfallRecordInput): ShortfallRecord;
135
+ /** Pure: the act text a filing's structured human act names (metadata.human_act.act), or null. */
136
+ export declare function filingActOf(metadata: Record<string, unknown>): string | null;
137
+ /** What the excusal check reads: the ask (helpNeeded) and the filing's structured act. */
138
+ export interface ShortfallAsk {
139
+ helpNeeded: string | null;
140
+ /** metadata.human_act.act (filingActOf); null or absent when the filing names no structured act. */
141
+ act?: string | null;
142
+ }
143
+ /** Pure: whether the text asks to EXCUSE or waive a criterion (module header, DECISION). */
144
+ export declare function askExcuses(helpNeeded: string | null): boolean;
145
+ /**
146
+ * Pure: the nodes this ask is a ruling on (module header, THE RULING SCOPE) --
147
+ * the filing's structured nodes when it names any, else every recorded node --
148
+ * and the recorded nodes outside that scope (shown, never counted).
149
+ */
150
+ export declare function rulingScopeOf(record: ShortfallRecord): {
151
+ scope: ShortfallNode[];
152
+ unasked: string[];
153
+ };
154
+ /** Pure: whether the record supports the supervisor's shortfall ruling (module header). */
155
+ export declare function computeShortfallStanding(record: ShortfallRecord, ask: ShortfallAsk): ShortfallStanding;
156
+ /** Pure: the shortfall section of the escalation prompt. */
157
+ export declare function renderShortfallSection(record: ShortfallRecord, standing: ShortfallStanding): string[];
158
+ //# sourceMappingURL=tower-escalation-shortfall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tower-escalation-shortfall.d.ts","sourceRoot":"","sources":["../../src/tower/tower-escalation-shortfall.ts"],"names":[],"mappings":"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"}