@telora/daemon 0.24.15 → 0.24.17

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 (77) hide show
  1. package/build-info.json +5 -3
  2. package/dist/completion/review-exit/review-exit-phase.js +7 -3
  3. package/dist/completion/review-exit/review-exit-phase.js.map +1 -1
  4. package/dist/completion/review-exit/review-exit-rehoming.d.ts +27 -3
  5. package/dist/completion/review-exit/review-exit-rehoming.d.ts.map +1 -1
  6. package/dist/completion/review-exit/review-exit-rehoming.js +29 -5
  7. package/dist/completion/review-exit/review-exit-rehoming.js.map +1 -1
  8. package/dist/composition/execution-migrations-context.js +1 -1
  9. package/dist/composition/execution-spawn-process-context.d.ts +1 -1
  10. package/dist/composition/execution-spawn-process-context.d.ts.map +1 -1
  11. package/dist/composition/execution-spawn-process-context.js +3 -1
  12. package/dist/composition/execution-spawn-process-context.js.map +1 -1
  13. package/dist/focus/control-state.d.ts +12 -6
  14. package/dist/focus/control-state.d.ts.map +1 -1
  15. package/dist/focus/control-state.js +16 -9
  16. package/dist/focus/control-state.js.map +1 -1
  17. package/dist/focus-stage-lifecycle/index.js +1 -1
  18. package/dist/focus-stage-lifecycle/index.js.map +1 -1
  19. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts +17 -7
  20. package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
  21. package/dist/focus-stage-lifecycle/wedge-watchdog.js +58 -28
  22. package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
  23. package/dist/prompt-sections/qa-author-section.d.ts +2 -1
  24. package/dist/prompt-sections/qa-author-section.d.ts.map +1 -1
  25. package/dist/prompt-sections/qa-author-section.js +7 -2
  26. package/dist/prompt-sections/qa-author-section.js.map +1 -1
  27. package/dist/prompt-sections/qa-failure-section.d.ts +29 -0
  28. package/dist/prompt-sections/qa-failure-section.d.ts.map +1 -0
  29. package/dist/prompt-sections/qa-failure-section.js +59 -0
  30. package/dist/prompt-sections/qa-failure-section.js.map +1 -0
  31. package/dist/prompt-sections/qa-tester-note.d.ts +33 -0
  32. package/dist/prompt-sections/qa-tester-note.d.ts.map +1 -0
  33. package/dist/prompt-sections/qa-tester-note.js +61 -0
  34. package/dist/prompt-sections/qa-tester-note.js.map +1 -0
  35. package/dist/prompt-sections/shared.js +1 -1
  36. package/dist/queries/api-client/shared.d.ts.map +1 -1
  37. package/dist/queries/api-client/shared.js +3 -1
  38. package/dist/queries/api-client/shared.js.map +1 -1
  39. package/dist/queries/focuses/ended-arm.d.ts +55 -7
  40. package/dist/queries/focuses/ended-arm.d.ts.map +1 -1
  41. package/dist/queries/focuses/ended-arm.js +59 -8
  42. package/dist/queries/focuses/ended-arm.js.map +1 -1
  43. package/dist/queries/focuses/focus-discovery.d.ts +18 -8
  44. package/dist/queries/focuses/focus-discovery.d.ts.map +1 -1
  45. package/dist/queries/focuses/focus-discovery.js +1 -0
  46. package/dist/queries/focuses/focus-discovery.js.map +1 -1
  47. package/dist/queries/qa-packets/focus-qa-failure.d.ts +69 -0
  48. package/dist/queries/qa-packets/focus-qa-failure.d.ts.map +1 -0
  49. package/dist/queries/qa-packets/focus-qa-failure.js +70 -0
  50. package/dist/queries/qa-packets/focus-qa-failure.js.map +1 -0
  51. package/dist/queries/qa-packets/qa-packets.d.ts +11 -3
  52. package/dist/queries/qa-packets/qa-packets.d.ts.map +1 -1
  53. package/dist/queries/qa-packets/qa-packets.js +10 -3
  54. package/dist/queries/qa-packets/qa-packets.js.map +1 -1
  55. package/dist/queries/wire-schemas/schemas.d.ts +2 -0
  56. package/dist/queries/wire-schemas/schemas.d.ts.map +1 -1
  57. package/dist/queries/wire-schemas/schemas.js +10 -3
  58. package/dist/queries/wire-schemas/schemas.js.map +1 -1
  59. package/dist/resolvers/delivery-acceptance-criteria.d.ts +23 -1
  60. package/dist/resolvers/delivery-acceptance-criteria.d.ts.map +1 -1
  61. package/dist/resolvers/delivery-acceptance-criteria.js +52 -8
  62. package/dist/resolvers/delivery-acceptance-criteria.js.map +1 -1
  63. package/dist/session/session-lineage.d.ts.map +1 -1
  64. package/dist/session/session-lineage.js +2 -1
  65. package/dist/session/session-lineage.js.map +1 -1
  66. package/dist/spawn/prompt-assembly.d.ts +27 -3
  67. package/dist/spawn/prompt-assembly.d.ts.map +1 -1
  68. package/dist/spawn/prompt-assembly.js +28 -34
  69. package/dist/spawn/prompt-assembly.js.map +1 -1
  70. package/dist/supervision/recorded-new-intent.d.ts +49 -0
  71. package/dist/supervision/recorded-new-intent.d.ts.map +1 -1
  72. package/dist/supervision/recorded-new-intent.js +10 -2
  73. package/dist/supervision/recorded-new-intent.js.map +1 -1
  74. package/dist/testing/fixtures/api-client.js +1 -1
  75. package/dist/testing/fixtures/index.js +1 -1
  76. package/dist/types/index.js +1 -1
  77. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ended-arm.d.ts","sourceRoot":"","sources":["../../../src/queries/focuses/ended-arm.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,6BAA6B,wBAAwB,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,6BAA6B,CAAC;IAC7C,MAAM,EAAE;QACN,mEAAmE;QACnE,gBAAgB,EAAE,MAAM,CAAC;QACzB,sDAAsD;QACtD,GAAG,EAAE,MAAM,CAAC;QACZ,yFAAyF;QACzF,oBAAoB,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;QACnG;;;;;WAKG;QACH,YAAY,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;KAC5F,CAAC;CACH"}
1
+ {"version":3,"file":"ended-arm.d.ts","sourceRoot":"","sources":["../../../src/queries/focuses/ended-arm.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,6BAA6B,wBAAwB,CAAC;AAEnE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,0CAA0C,qCAAqC,CAAC;AAE7F,iFAAiF;AACjF,MAAM,MAAM,cAAc,GACtB,OAAO,6BAA6B,GACpC,OAAO,0CAA0C,CAAC;AAEtD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE9E;AAED,4FAA4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;IAC1C,gGAAgG;IAChG,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,uBAAuB,GAAG,IAAI,CAY5F;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,6BAA6B,CAAC;IAC7C,MAAM,EAAE;QACN,mEAAmE;QACnE,gBAAgB,EAAE,MAAM,CAAC;QACzB,sDAAsD;QACtD,GAAG,EAAE,MAAM,CAAC;QACZ,yFAAyF;QACzF,oBAAoB,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;QACnG;;;;;WAKG;QACH,YAAY,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;KAC5F,CAAC;CACH"}
@@ -1,6 +1,7 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
2
  // Pinned by: packages/daemon/src/completion/review-cycle-budget/review-cycle-cap-regression.test.ts,
3
- // packages/daemon/src/completion/review-cycle-budget/review-cycle-churn-meter.test.ts
3
+ // packages/daemon/src/completion/review-cycle-budget/review-cycle-churn-meter.test.ts,
4
+ // packages/daemon/src/focus/disarm-reaper.test.ts, packages/daemon/src/queries/focuses/ended-arm.test.ts
4
5
  // PINNED-BY-END
5
6
  /**
6
7
  * The ENDED-ARM record: the shape the daemon sends with a release to state WHY
@@ -10,7 +11,9 @@
10
11
  * SHAPE with two readers on different sides of the release -- the writer
11
12
  * (focuses.ts releaseFocusArm) and the crossing that composes it
12
13
  * (completion/review-cycle-budget/review-cycle-cap.ts) -- and focuses.ts sits at the file-size
13
- * ceiling.
14
+ * ceiling. It is also the daemon's ONE vocabulary for arm_ended_reason: every
15
+ * reader (the disarm reaper, the wedge diagnosis) compares against the
16
+ * constants here by value.
14
17
  *
15
18
  * @module queries/focuses/ended-arm
16
19
  */
@@ -18,18 +21,66 @@
18
21
  * The ended-arm record that rides a release, stating WHY the daemon ended the
19
22
  * arm and what was still outstanding.
20
23
  *
21
- * ONE reason exists: 'review_budget_spent'. It is sent in the SAME call as the
22
- * release (the edge refuses it otherwise, handlers/focus/arm-ended.ts) so the
23
- * role-less focus is never readable without its reason, and so the record can
24
- * never be mistaken for the operator stop (operator_stopped_at, which this path
25
- * does not write) or the trigger's lifecycle clear (which writes neither).
24
+ * The DAEMON writes ONE reason: 'review_budget_spent'. It is sent in the SAME
25
+ * call as the release (the edge refuses it otherwise, handlers/focus/arm-ended.ts)
26
+ * so the role-less focus is never readable without its reason, and so the record
27
+ * can never be mistaken for the operator stop (operator_stopped_at, which this
28
+ * path does not write).
26
29
  *
27
30
  * `detail` carries only what the DAEMON counted. The edge adds the acceptance
28
31
  * criteria the last verdict-bearing review called not_met -- it owns the shape
29
32
  * that record lives in -- so this daemon never parses a review summary.
30
33
  *
31
- * ARM_ENDED_REVIEW_BUDGET_SPENT is the value the DB CHECK constraint on
34
+ * ARM_ENDED_REVIEW_BUDGET_SPENT is a value the DB CHECK constraint on
32
35
  * product_focuses.arm_ended_reason allows and the wedge diagnosis reads back.
33
36
  */
34
37
  export const ARM_ENDED_REVIEW_BUDGET_SPENT = 'review_budget_spent';
38
+ /**
39
+ * The LIFECYCLE end: the run finished every delivery its arm covered while one
40
+ * or more deliveries recorded as new intent under it still rest at planning.
41
+ * Written ONLY by SQL -- the lifecycle arm clear (auto_terminate_focus_team /
42
+ * clear_focus_team_on_review_window_close, migration 20261019155414) in the
43
+ * same write that nulls the role -- and never by this daemon (the edge refuses
44
+ * it on daemon_update_focus_status). The next arm clears it and promotes the
45
+ * recorded deliveries.
46
+ *
47
+ * Readers treat it as what it is: a run that FINISHED and a human re-arms --
48
+ * not an operator stop, and not a spent budget. Compare by value against these
49
+ * constants; never read "any non-null reason" as one meaning.
50
+ */
51
+ export const ARM_ENDED_RUN_FINISHED_RECORDED_WORK_WAITS = 'run_finished_recorded_work_waits';
52
+ /**
53
+ * True when the recorded reason is the LIFECYCLE end -- the run finished its
54
+ * covered work and the recorded work waits for the next arm. False for a spent
55
+ * budget, for no reason at all, and for any value this daemon does not know
56
+ * (an unknown reason is never read as a finish).
57
+ */
58
+ export function isRunFinishedArmEnd(reason) {
59
+ return reason === ARM_ENDED_RUN_FINISHED_RECORDED_WORK_WAITS;
60
+ }
61
+ function isRecord(value) {
62
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
63
+ }
64
+ /**
65
+ * Parse a 'run_finished_recorded_work_waits' arm_ended_detail (JSONB) into its
66
+ * typed shape. Returns null when the value is not that shape at all (absent,
67
+ * not an object, or no recordedDeliveries array). Entries without a string id
68
+ * are dropped; a missing name reads as the id, so a delivery is never silently
69
+ * unnamed. A missing or non-numeric count falls back to the parsed list length.
70
+ */
71
+ export function parseRecordedWorkWaitsDetail(detail) {
72
+ if (!isRecord(detail) || !Array.isArray(detail.recordedDeliveries))
73
+ return null;
74
+ const recordedDeliveries = [];
75
+ for (const entry of detail.recordedDeliveries) {
76
+ if (!isRecord(entry) || typeof entry.id !== 'string' || entry.id === '')
77
+ continue;
78
+ const name = typeof entry.name === 'string' && entry.name !== '' ? entry.name : entry.id;
79
+ recordedDeliveries.push({ id: entry.id, name });
80
+ }
81
+ const count = typeof detail.count === 'number' && Number.isFinite(detail.count)
82
+ ? detail.count
83
+ : recordedDeliveries.length;
84
+ return { recordedDeliveries, count };
85
+ }
35
86
  //# sourceMappingURL=ended-arm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ended-arm.js","sourceRoot":"","sources":["../../../src/queries/focuses/ended-arm.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,qGAAqG;AACrG,wFAAwF;AACxF,gBAAgB;AAEhB;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC"}
1
+ {"version":3,"file":"ended-arm.js","sourceRoot":"","sources":["../../../src/queries/focuses/ended-arm.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,qGAAqG;AACrG,yFAAyF;AACzF,2GAA2G;AAC3G,gBAAgB;AAEhB;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAEnE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,kCAAkC,CAAC;AAO7F;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAiC;IACnE,OAAO,MAAM,KAAK,0CAA0C,CAAC;AAC/D,CAAC;AAmBD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAe;IAC1D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAAE,OAAO,IAAI,CAAC;IAChF,MAAM,kBAAkB,GAA0B,EAAE,CAAC;IACrD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE;YAAE,SAAS;QAClF,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACzF,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7E,CAAC,CAAC,MAAM,CAAC,KAAK;QACd,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC;IAC9B,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;AACvC,CAAC"}
@@ -182,19 +182,29 @@ export interface ActiveFocusRow {
182
182
  */
183
183
  first_armed_at: string | null;
184
184
  /**
185
- * WHY this focus's arm ended, when the daemon ended it deliberately
186
- * (product_focuses.arm_ended_reason). 'review_budget_spent' => the review loop
187
- * reached TELORA_REVIEW_CYCLE_CAP without converging and the daemon released
188
- * the arm; further cycles require a NEW arm. Null => no machine end recorded:
189
- * the arm is live, was never made, ended at the lifecycle clear, or was an
190
- * operator stop (operator_stopped_at). Null on backends predating the column.
191
- * Read by the wedge diagnosis so a budget-ended focus is reported as ended
192
- * rather than as a strand.
185
+ * WHY this focus's arm ended, when a machine end is recorded
186
+ * (product_focuses.arm_ended_reason). Values live in queries/focuses/ended-arm.ts:
187
+ * 'review_budget_spent' => the review loop reached TELORA_REVIEW_CYCLE_CAP
188
+ * without converging and the daemon released the arm; further cycles require
189
+ * a NEW arm. 'run_finished_recorded_work_waits' => the LIFECYCLE clear released
190
+ * the arm with every covered delivery terminal while deliveries recorded as
191
+ * new intent wait at planning for the next arm -- a finish, not a stop.
192
+ * Null => no machine end recorded: the arm is live, was never made, ended at a
193
+ * lifecycle clear that discounted nothing, or was an operator stop
194
+ * (operator_stopped_at). Null on backends predating the column. Read by the
195
+ * disarm reaper and the wedge diagnosis, by value.
193
196
  *
194
197
  * OPTIONAL: `undefined` and `null` mean the same thing here (no machine end),
195
198
  * so a row built without it reads exactly as it did before the column existed.
196
199
  */
197
200
  arm_ended_reason?: string | null;
201
+ /**
202
+ * What the ended arm left outstanding (product_focuses.arm_ended_detail),
203
+ * shape keyed by arm_ended_reason; JSONB, so `unknown` until
204
+ * queries/focuses/ended-arm.ts parses it. OPTIONAL, null-equivalent like the
205
+ * reason.
206
+ */
207
+ arm_ended_detail?: unknown;
198
208
  /**
199
209
  * The delivery ids this focus HELD when its CURRENT arm was taken
200
210
  * (product_focuses.armed_baseline_delivery_ids, stamped on the arm edge).
@@ -1 +1 @@
1
- {"version":3,"file":"focus-discovery.d.ts","sourceRoot":"","sources":["../../../src/queries/focuses/focus-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focus-discovery.d.ts","sourceRoot":"","sources":["../../../src/queries/focuses/focus-discovery.ts"],"names":[],"mappings":"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"}
@@ -103,6 +103,7 @@ export async function getActiveFocuses(_organizationId, productId) {
103
103
  operator_stopped_at: s.operatorStoppedAt ?? null,
104
104
  first_armed_at: s.firstArmedAt ?? null,
105
105
  arm_ended_reason: s.armEndedReason ?? null,
106
+ arm_ended_detail: s.armEndedDetail ?? null,
106
107
  armed_baseline_delivery_ids: s.armedBaselineDeliveryIds ?? null,
107
108
  current_workflow_stage_id: s.currentWorkflowStageId ?? null,
108
109
  review_requested_at: s.reviewRequestedAt ?? null,
@@ -1 +1 @@
1
- {"version":3,"file":"focus-discovery.js","sourceRoot":"","sources":["../../../src/queries/focuses/focus-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focus-discovery.js","sourceRoot":"","sources":["../../../src/queries/focuses/focus-discovery.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,2EAA2E;AAC3E,uDAAuD;AACvD,sEAAsE;AACtE,6GAA6G;AAC7G,qDAAqD;AACrD,qEAAqE;AACrE,+EAA+E;AAC/E,+EAA+E;AAC/E,gFAAgF;AAChF,gEAAgE;AAChE,sEAAsE;AACtE,4DAA4D;AAC5D,0EAA0E;AAC1E,qEAAqE;AACrE,6DAA6D;AAC7D,sEAAsE;AACtE,yDAAyD;AACzD,iEAAiE;AACjE,wDAAwD;AACxD,gBAAgB;AAahB,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAyB,MAAM,4BAA4B,CAAC;AAkG5H,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,eAAuB,EACvB,SAAkB;IAElB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,0BAA0B,EAC1B,0BAA0B,EAC1B,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAC/B,CAAC;IAEF,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,CAAa;IAC3C,OAAO,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,OAAO;QACnB,UAAU,EAAE,CAAC,CAAC,SAAS;QACvB,WAAW,EAAE,CAAC,CAAC,UAAU;QACzB,aAAa,EAAE,CAAC,CAAC,YAAY;QAC7B,UAAU,EAAE,CAAC,CAAC,SAAS;QACvB,eAAe,EAAG,CAAC,CAAC,cAA6C,IAAI,IAAI;QACzE,SAAS,EAAE,CAAC,CAAC,QAAQ,IAAI,KAAK;QAC9B,YAAY,EAAE,CAAC,CAAC,WAAW,IAAI,KAAK;QACpC,WAAW,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;QACjC,sBAAsB,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI;QACrD,kBAAkB,EAAE,CAAC,CAAC,gBAAgB,IAAI,EAAE;QAC5C,eAAe,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;QACzC,oBAAoB,EAAE,CAAC,CAAC,kBAAkB,IAAI,IAAI;QAClD,kBAAkB,EAAE,CAAC,CAAC,gBAAgB,IAAI,IAAI;QAC9C,wBAAwB,EAAE,CAAC,CAAC,qBAAqB,IAAI,IAAI;QACzD,wBAAwB,EAAE,CAAC,CAAC,qBAAqB,IAAI,IAAI;QACzD,yBAAyB,EAAE,CAAC,CAAC,sBAAsB,IAAI,IAAI;QAC3D,yBAAyB,EAAE,CAAC,CAAC,sBAAsB,IAAI,IAAI;QAC3D,sBAAsB,EAAE,CAAC,CAAC,mBAAmB;QAC7C,eAAe,EAAE,CAAC,CAAC,aAAa;QAChC,yBAAyB,EAAE,CAAC,CAAC,sBAAsB,IAAI,IAAI;QAC3D,+BAA+B,EAAE,CAAC,CAAC,4BAA4B,IAAI,KAAK;QACxE,2BAA2B,EAAE,CAAC,CAAC,wBAAwB,IAAI,IAAI;QAC/D,WAAW,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;QACjC,aAAa,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;QACrC,iBAAiB,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI;QAC5C,aAAa,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;KACtC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAe,EACf,gBAAgC;IAEhC,MAAM,OAAO,CAAC,2BAA2B,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7G,CAAC;AAmMD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,eAAuB,EAAE,SAAkB;IAChF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,2BAA2B,EAC3B,2BAA2B,EAC3B,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAC/B,CAAC;IAEF,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChC,QAAQ,EAAE,CAAC,CAAC,OAAO;QACnB,UAAU,EAAE,CAAC,CAAC,SAAS;QACvB,iBAAiB,EAAE,CAAC,CAAC,gBAAgB,IAAI,IAAI;QAC7C,MAAM,EAAG,CAA6B,CAAC,MAAgB,IAAI,QAAQ;QACnE,UAAU,EAAE,CAAC,CAAC,SAAS;QACvB,eAAe,EAAG,CAAC,CAAC,cAA6C,IAAI,IAAI;QACzE,SAAS,EAAE,CAAC,CAAC,QAAQ,IAAI,KAAK;QAC9B,YAAY,EAAE,CAAC,CAAC,WAAW,IAAI,KAAK;QACpC,WAAW,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;QACjC,sBAAsB,EAAE,CAAC,CAAC,mBAAmB;QAC7C,eAAe,EAAE,CAAC,CAAC,aAAa;QAChC,mBAAmB,EAAE,CAAC,CAAC,iBAAiB,IAAI,IAAI;QAChD,cAAc,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;QACtC,gBAAgB,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;QAC1C,gBAAgB,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;QAC1C,2BAA2B,EAAE,CAAC,CAAC,wBAAwB,IAAI,IAAI;QAC/D,yBAAyB,EAAE,CAAC,CAAC,sBAAsB,IAAI,IAAI;QAC3D,mBAAmB,EAAE,CAAC,CAAC,iBAAiB,IAAI,IAAI;QAChD,oBAAoB,EAAE,CAAC,CAAC,kBAAkB,IAAI,IAAI;QAClD,kBAAkB,EAAE,CAAC,CAAC,gBAAgB,IAAI,CAAC;QAC3C,oBAAoB,EAAE,CAAC,CAAC,kBAAkB,IAAI,CAAC;QAC/C,8BAA8B,EAAE,CAAC,CAAC,4BAA4B,IAAI,CAAC;QACnE,uBAAuB,EAAE,CAAC,CAAC,oBAAoB,IAAI,IAAI;QACvD,sBAAsB,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI;QACrD,oBAAoB,EAAE,CAAC,CAAC,kBAAkB,IAAI,CAAC;QAC/C,wBAAwB,EAAE,CAAC,CAAC,sBAAsB,IAAI,KAAK;QAC3D,0BAA0B,EAAE,CAAC,CAAC,wBAAwB,IAAI,IAAI;QAC9D,0BAA0B,EAAE,CAAC,CAAC,uBAAuB,IAAI,CAAC;QAC1D,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,UAAU;QAC5B,kBAAkB,EAAG,CAAC,CAAC,gBAA2C,IAAI,EAAE;QACxE,eAAe,EAAG,CAAC,CAAC,cAA4D,IAAI,IAAI;QACxF,oBAAoB,EAAG,CAAC,CAAC,kBAAgE,IAAI,IAAI;QACjG,kBAAkB,EAAE,CAAC,CAAC,gBAAgB,IAAI,IAAI;QAC9C,wBAAwB,EAAE,CAAC,CAAC,qBAAqB,IAAI,IAAI;QACzD,wBAAwB,EAAE,CAAC,CAAC,qBAAqB,IAAI,IAAI;QACzD,yBAAyB,EAAE,CAAC,CAAC,sBAAsB,IAAI,IAAI;QAC3D,yBAAyB,EAAE,CAAC,CAAC,sBAAsB,IAAI,IAAI;QAC3D,WAAW,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;QACjC,aAAa,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;QACrC,iBAAiB,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI;QAC5C,aAAa,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;KACtC,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * The QA failure a coding spawn is sent back with: product-api focus_qa_get
3
+ * (supabase/functions/product-api/handlers/focus/qa.ts; org-scoped there by
4
+ * the caller's organization, a focus outside it a 404), narrowed to what the
5
+ * coding team's prompt shows (prompt-sections/qa-failure-section.ts).
6
+ *
7
+ * A focus is QA-FAILED when its qa_state is failed AND its current packet
8
+ * (qa_packet_id) carries a failed verdict. Only then is there anything to
9
+ * show: the packet's FAILED and NOT-RUN cases, in packet order, each with the
10
+ * result and the note the tester recorded. A passed case is left out.
11
+ *
12
+ * NEVER THROWS. The read rides the spawn, and a spawn must not fail because
13
+ * QA could not be read: a failed read is returned as `unreadable` with its
14
+ * reason, which the section names to the team instead of guessing either way.
15
+ */
16
+ import { z } from 'zod';
17
+ import { type QaCaseResult } from '../../types/qa-packet.js';
18
+ declare const FocusQaGetSchema: z.ZodObject<{
19
+ qa: z.ZodObject<{
20
+ state: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
21
+ packet: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodObject<{
22
+ packetId: z.ZodString;
23
+ verdict: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
24
+ cases: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
25
+ id: z.ZodString;
26
+ criterion: z.ZodString;
27
+ path: z.ZodString;
28
+ expected: z.ZodString;
29
+ result: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodEnum<{
30
+ failed: "failed";
31
+ passed: "passed";
32
+ not_run: "not_run";
33
+ }>>>>;
34
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
35
+ }, z.core.$loose>>>>;
36
+ }, z.core.$loose>>>>;
37
+ }, z.core.$loose>;
38
+ }, z.core.$loose>;
39
+ /** One case the tester did not pass: its place in the packet, what it checked, the result and the note. */
40
+ export interface QaUnpassedCase {
41
+ /** 1-based position in the packet's case order. */
42
+ number: number;
43
+ id: string;
44
+ criterion: string;
45
+ path: string;
46
+ expected: string;
47
+ result: Extract<QaCaseResult, 'failed' | 'not_run'>;
48
+ /** The tester's note, verbatim (quoted when rendered); null when they wrote none. */
49
+ note: string | null;
50
+ }
51
+ /**
52
+ * What a coding spawn knows of its focus's QA: failed (with the unpassed
53
+ * cases), or unreadable (with why). A focus that is not QA-failed reads as null.
54
+ */
55
+ export type FocusQaFailureRead = {
56
+ kind: 'failed';
57
+ packetId: string;
58
+ cases: QaUnpassedCase[];
59
+ } | {
60
+ kind: 'unreadable';
61
+ reason: string;
62
+ };
63
+ type FocusQaGet = z.infer<typeof FocusQaGetSchema>;
64
+ /** The QA failure focus_qa_get describes, or null when the focus is not QA-failed. Pure. */
65
+ export declare function qaFailureOf(read: FocusQaGet): FocusQaFailureRead | null;
66
+ /** The focus's QA failure, null when it is not QA-failed, or `unreadable` naming why the read failed. Never throws. */
67
+ export declare function readFocusQaFailure(focusId: string): Promise<FocusQaFailureRead | null>;
68
+ export {};
69
+ //# sourceMappingURL=focus-qa-failure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-qa-failure.d.ts","sourceRoot":"","sources":["../../../src/queries/qa-packets/focus-qa-failure.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAmC,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAe9F,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;iBASN,CAAC;AAEjB,2GAA2G;AAC3G,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC;IACpD,qFAAqF;IACrF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEnD,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,kBAAkB,GAAG,IAAI,CAWvE;AAED,uHAAuH;AACvH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAM5F"}
@@ -0,0 +1,70 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/prompt-sections/qa-failure-section.test.ts,
3
+ // packages/daemon/src/queries/qa-packets/focus-qa-failure.test.ts,
4
+ // packages/daemon/src/spawn/qa-failure-spawn.test.ts
5
+ // PINNED-BY-END
6
+ /**
7
+ * The QA failure a coding spawn is sent back with: product-api focus_qa_get
8
+ * (supabase/functions/product-api/handlers/focus/qa.ts; org-scoped there by
9
+ * the caller's organization, a focus outside it a 404), narrowed to what the
10
+ * coding team's prompt shows (prompt-sections/qa-failure-section.ts).
11
+ *
12
+ * A focus is QA-FAILED when its qa_state is failed AND its current packet
13
+ * (qa_packet_id) carries a failed verdict. Only then is there anything to
14
+ * show: the packet's FAILED and NOT-RUN cases, in packet order, each with the
15
+ * result and the note the tester recorded. A passed case is left out.
16
+ *
17
+ * NEVER THROWS. The read rides the spawn, and a spawn must not fail because
18
+ * QA could not be read: a failed read is returned as `unreadable` with its
19
+ * reason, which the section names to the team instead of guessing either way.
20
+ */
21
+ import { z } from 'zod';
22
+ import { QA_STATE } from '@telora/daemon-core';
23
+ import { callApiValidated } from '../api-client/shared.js';
24
+ import { QA_CASE_RESULT, QA_CASE_RESULTS } from '../../types/qa-packet.js';
25
+ import { QaCaseNoteWireSchema } from './qa-packets.js';
26
+ const nullableString = () => z.string().nullable().optional().default(null);
27
+ /** One case of focus_qa_get's packet view: the fields the section shows, its result and its note. */
28
+ const FocusQaCaseViewSchema = z.object({
29
+ id: z.string(),
30
+ criterion: z.string(),
31
+ path: z.string(),
32
+ expected: z.string(),
33
+ result: z.enum(QA_CASE_RESULTS).nullable().optional().default(null),
34
+ note: QaCaseNoteWireSchema,
35
+ }).passthrough();
36
+ const FocusQaGetSchema = z.object({
37
+ qa: z.object({
38
+ state: nullableString(),
39
+ packet: z.object({
40
+ packetId: z.string(),
41
+ verdict: nullableString(),
42
+ cases: z.array(FocusQaCaseViewSchema).optional().default([]),
43
+ }).passthrough().nullable().optional().default(null),
44
+ }).passthrough(),
45
+ }).passthrough();
46
+ /** The QA failure focus_qa_get describes, or null when the focus is not QA-failed. Pure. */
47
+ export function qaFailureOf(read) {
48
+ const { state, packet } = read.qa;
49
+ if (state !== QA_STATE.FAILED || !packet || packet.verdict !== QA_STATE.FAILED)
50
+ return null;
51
+ const cases = [];
52
+ packet.cases.forEach((c, i) => {
53
+ // A judged packet has a result for every case; one without reads as not run.
54
+ const result = c.result ?? QA_CASE_RESULT.NOT_RUN;
55
+ if (result === QA_CASE_RESULT.PASSED)
56
+ return;
57
+ cases.push({ number: i + 1, id: c.id, criterion: c.criterion, path: c.path, expected: c.expected, result, note: c.note ?? null });
58
+ });
59
+ return { kind: 'failed', packetId: packet.packetId, cases };
60
+ }
61
+ /** The focus's QA failure, null when it is not QA-failed, or `unreadable` naming why the read failed. Never throws. */
62
+ export async function readFocusQaFailure(focusId) {
63
+ try {
64
+ return qaFailureOf(await callApiValidated('focus_qa_get', FocusQaGetSchema, { focusId }));
65
+ }
66
+ catch (err) {
67
+ return { kind: 'unreadable', reason: err instanceof Error ? err.message : String(err) };
68
+ }
69
+ }
70
+ //# sourceMappingURL=focus-qa-failure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-qa-failure.js","sourceRoot":"","sources":["../../../src/queries/qa-packets/focus-qa-failure.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,8 @@
6
6
  * breaker armed work reads or writes through.
7
7
  *
8
8
  * A re-entry candidate (its previous QA cycle failed) carries that cycle's
9
- * cases with the result a person recorded for each; qaPreviousCases is the one
10
- * way the pass reads them.
9
+ * cases with the result a person recorded for each, and the note they wrote
10
+ * with it; qaPreviousCases is the one way the pass reads them.
11
11
  */
12
12
  import { z } from 'zod';
13
13
  import { type QaAuthorMode, type QaPacketStatus } from '../../types/qa-packet.js';
@@ -30,7 +30,13 @@ declare const QaCaseWireSchema: z.ZodObject<{
30
30
  }, z.core.$loose>;
31
31
  /** One stored QA case. */
32
32
  export type QaCaseWire = z.infer<typeof QaCaseWireSchema>;
33
- /** One case of the previous QA cycle's packet, with the result a person recorded for it. */
33
+ /**
34
+ * The note a tester wrote with a case's result (focus_qa_packets.case_notes);
35
+ * null or absent when there is none (an edge that predates notes sends no
36
+ * field). Text only -- a prompt quotes it through prompt-sections/qa-tester-note.ts.
37
+ */
38
+ export declare const QaCaseNoteWireSchema: z.ZodOptional<z.ZodNullable<z.ZodString>>;
39
+ /** One case of the previous QA cycle's packet, with the result a person recorded for it and their note. */
34
40
  declare const QaPreviousCaseWireSchema: z.ZodObject<{
35
41
  id: z.ZodString;
36
42
  criterion: z.ZodString;
@@ -51,6 +57,7 @@ declare const QaPreviousCaseWireSchema: z.ZodObject<{
51
57
  passed: "passed";
52
58
  not_run: "not_run";
53
59
  }>;
60
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
54
61
  }, z.core.$loose>;
55
62
  /** One previous case and its recorded result. */
56
63
  export type QaPreviousCaseWire = z.infer<typeof QaPreviousCaseWireSchema>;
@@ -116,6 +123,7 @@ declare const QaPacketCandidateSchema: z.ZodObject<{
116
123
  passed: "passed";
117
124
  not_run: "not_run";
118
125
  }>;
126
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
119
127
  }, z.core.$loose>>>>;
120
128
  }, z.core.$loose>>>>;
121
129
  }, z.core.$loose>;
@@ -1 +1 @@
1
- {"version":3,"file":"qa-packets.d.ts","sourceRoot":"","sources":["../../../src/queries/qa-packets/qa-packets.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAmC,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAInH,0GAA0G;AAC1G,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;iBAWN,CAAC;AAEjB,0BAA0B;AAC1B,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,4FAA4F;AAC5F,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;iBAE5B,CAAC;AAEH,iDAAiD;AACjD,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAgB1E,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBb,CAAC;AAEjB,wDAAwD;AACxD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAMxE;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,kBAAkB,EAAE,CAK1G;AAED,0HAA0H;AAC1H,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAG3F;AAED,gGAAgG;AAChG,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAOD,8FAA8F;AAC9F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,0EAA0E;AAC1E,wBAAsB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAGtF"}
1
+ {"version":3,"file":"qa-packets.d.ts","sourceRoot":"","sources":["../../../src/queries/qa-packets/qa-packets.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAmC,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAInH,0GAA0G;AAC1G,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;iBAWN,CAAC;AAEjB,0BAA0B;AAC1B,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,2CAAmC,CAAC;AAErE,2GAA2G;AAC3G,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;iBAG5B,CAAC;AAEH,iDAAiD;AACjD,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAgB1E,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBb,CAAC;AAEjB,wDAAwD;AACxD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAMxE;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,kBAAkB,EAAE,CAK1G;AAED,0HAA0H;AAC1H,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAG3F;AAED,gGAAgG;AAChG,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAOD,8FAA8F;AAC9F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,0EAA0E;AAC1E,wBAAsB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAGtF"}
@@ -12,8 +12,8 @@
12
12
  * breaker armed work reads or writes through.
13
13
  *
14
14
  * A re-entry candidate (its previous QA cycle failed) carries that cycle's
15
- * cases with the result a person recorded for each; qaPreviousCases is the one
16
- * way the pass reads them.
15
+ * cases with the result a person recorded for each, and the note they wrote
16
+ * with it; qaPreviousCases is the one way the pass reads them.
17
17
  */
18
18
  import { z } from 'zod';
19
19
  import { callApiValidated } from '../api-client/shared.js';
@@ -32,9 +32,16 @@ const QaCaseWireSchema = z.object({
32
32
  priorCaseId: z.string().optional(),
33
33
  priorResult: z.enum(QA_CASE_RESULTS).optional(),
34
34
  }).passthrough();
35
- /** One case of the previous QA cycle's packet, with the result a person recorded for it. */
35
+ /**
36
+ * The note a tester wrote with a case's result (focus_qa_packets.case_notes);
37
+ * null or absent when there is none (an edge that predates notes sends no
38
+ * field). Text only -- a prompt quotes it through prompt-sections/qa-tester-note.ts.
39
+ */
40
+ export const QaCaseNoteWireSchema = z.string().nullable().optional();
41
+ /** One case of the previous QA cycle's packet, with the result a person recorded for it and their note. */
36
42
  const QaPreviousCaseWireSchema = QaCaseWireSchema.extend({
37
43
  result: z.enum(QA_CASE_RESULTS),
44
+ note: QaCaseNoteWireSchema,
38
45
  });
39
46
  const QaCandidateDeliverySchema = z.object({
40
47
  deliveryId: z.string(),
@@ -1 +1 @@
1
- {"version":3,"file":"qa-packets.js","sourceRoot":"","sources":["../../../src/queries/qa-packets/qa-packets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qa-packets.js","sourceRoot":"","sources":["../../../src/queries/qa-packets/qa-packets.ts"],"names":[],"mappings":"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"}
@@ -500,6 +500,7 @@ export declare const ActiveFocusSchema: z.ZodObject<{
500
500
  operatorStoppedAt: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
501
501
  firstArmedAt: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
502
502
  armEndedReason: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
503
+ armEndedDetail: z.ZodDefault<z.ZodOptional<z.ZodUnknown>>;
503
504
  armedBaselineDeliveryIds: z.ZodDefault<z.ZodOptional<z.ZodUnknown>>;
504
505
  currentWorkflowStageId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
505
506
  reviewRequestedAt: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
@@ -583,6 +584,7 @@ export declare const ActiveFocusesResponseSchema: z.ZodObject<{
583
584
  operatorStoppedAt: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
584
585
  firstArmedAt: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
585
586
  armEndedReason: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
587
+ armEndedDetail: z.ZodDefault<z.ZodOptional<z.ZodUnknown>>;
586
588
  armedBaselineDeliveryIds: z.ZodDefault<z.ZodOptional<z.ZodUnknown>>;
587
589
  currentWorkflowStageId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
588
590
  reviewRequestedAt: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/queries/wire-schemas/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/queries/wire-schemas/schemas.ts"],"names":[],"mappings":"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"}
@@ -313,10 +313,17 @@ export const ActiveFocusSchema = z.object({
313
313
  firstArmedAt: nullableString.optional().default(null),
314
314
  // WHY the arm ended (product_focuses.arm_ended_reason): 'review_budget_spent'
315
315
  // => the daemon released the arm because the review loop reached its cycle cap
316
- // without converging. NULL => no machine end recorded (live arm, never armed,
317
- // lifecycle clear, or operator stop). Absent on backends predating the column
318
- // -> null, which reads as "no machine end" -- the pre-change behaviour.
316
+ // without converging; 'run_finished_recorded_work_waits' => the lifecycle clear
317
+ // released it with the covered work done while recorded new intent waits for
318
+ // the next arm. NULL => no machine end recorded (live arm, never armed, a
319
+ // lifecycle clear that discounted nothing, or operator stop). Absent on
320
+ // backends predating the column -> null, which reads as "no machine end" --
321
+ // the pre-change behaviour. Values: queries/focuses/ended-arm.ts.
319
322
  armEndedReason: nullableString.optional().default(null),
323
+ // What the ended arm left outstanding (product_focuses.arm_ended_detail), shape
324
+ // keyed by armEndedReason. JSONB, so typed loosely here and interpreted only by
325
+ // queries/focuses/ended-arm.ts. Absent on backends predating the field -> null.
326
+ armEndedDetail: z.unknown().optional().default(null),
320
327
  // The delivery ids the focus HELD when its CURRENT arm was taken
321
328
  // (product_focuses.armed_baseline_delivery_ids). This is what lets the daemon
322
329
  // tell a delivery the arm COVERS from one RECORDED as new intent under it: a