wicked-crew 0.7.30 → 0.7.32

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 (115) hide show
  1. package/dist/api/chat-scope.d.ts +15 -2
  2. package/dist/api/chat-scope.d.ts.map +1 -1
  3. package/dist/api/chat-scope.js +7 -2
  4. package/dist/api/chat-scope.js.map +1 -1
  5. package/dist/api/eval-sample.d.ts +12 -12
  6. package/dist/api/routes.d.ts +10 -0
  7. package/dist/api/routes.d.ts.map +1 -1
  8. package/dist/api/routes.js +231 -37
  9. package/dist/api/routes.js.map +1 -1
  10. package/dist/api/run-files.d.ts +26 -0
  11. package/dist/api/run-files.d.ts.map +1 -1
  12. package/dist/api/run-files.js +78 -0
  13. package/dist/api/run-files.js.map +1 -1
  14. package/dist/api/seat-health.d.ts +33 -0
  15. package/dist/api/seat-health.d.ts.map +1 -1
  16. package/dist/api/seat-health.js +86 -2
  17. package/dist/api/seat-health.js.map +1 -1
  18. package/dist/api/seat-signin.d.ts +8 -0
  19. package/dist/api/seat-signin.d.ts.map +1 -1
  20. package/dist/api/seat-signin.js +48 -3
  21. package/dist/api/seat-signin.js.map +1 -1
  22. package/dist/api/seat-standing.d.ts +14 -2
  23. package/dist/api/seat-standing.d.ts.map +1 -1
  24. package/dist/api/seat-standing.js +14 -4
  25. package/dist/api/seat-standing.js.map +1 -1
  26. package/dist/api/server.d.ts.map +1 -1
  27. package/dist/api/server.js +41 -4
  28. package/dist/api/server.js.map +1 -1
  29. package/dist/api/skills.d.ts +2 -2
  30. package/dist/api/testing.d.ts +28 -1
  31. package/dist/api/testing.d.ts.map +1 -1
  32. package/dist/api/testing.js +190 -0
  33. package/dist/api/testing.js.map +1 -1
  34. package/dist/campaigns/rollup.d.ts +4 -0
  35. package/dist/campaigns/rollup.d.ts.map +1 -1
  36. package/dist/campaigns/rollup.js.map +1 -1
  37. package/dist/campaigns/routes.d.ts +3 -1
  38. package/dist/campaigns/routes.d.ts.map +1 -1
  39. package/dist/campaigns/routes.js +3 -0
  40. package/dist/campaigns/routes.js.map +1 -1
  41. package/dist/core/adapter.d.ts.map +1 -1
  42. package/dist/core/adapter.js +23 -2
  43. package/dist/core/adapter.js.map +1 -1
  44. package/dist/core/deliver-text.d.ts +7 -0
  45. package/dist/core/deliver-text.d.ts.map +1 -1
  46. package/dist/core/deliver-text.js +41 -2
  47. package/dist/core/deliver-text.js.map +1 -1
  48. package/dist/core/engine-roster.d.ts +68 -0
  49. package/dist/core/engine-roster.d.ts.map +1 -0
  50. package/dist/core/engine-roster.js +156 -0
  51. package/dist/core/engine-roster.js.map +1 -0
  52. package/dist/interactive/chat-events.d.ts.map +1 -1
  53. package/dist/interactive/chat-events.js +26 -4
  54. package/dist/interactive/chat-events.js.map +1 -1
  55. package/dist/interactive/council-outcome.d.ts +28 -1
  56. package/dist/interactive/council-outcome.d.ts.map +1 -1
  57. package/dist/interactive/council-outcome.js +51 -1
  58. package/dist/interactive/council-outcome.js.map +1 -1
  59. package/dist/interactive/demo-events.d.ts.map +1 -1
  60. package/dist/interactive/demo-events.js +26 -4
  61. package/dist/interactive/demo-events.js.map +1 -1
  62. package/dist/interactive/doc-run-index.d.ts +56 -0
  63. package/dist/interactive/doc-run-index.d.ts.map +1 -0
  64. package/dist/interactive/doc-run-index.js +100 -0
  65. package/dist/interactive/doc-run-index.js.map +1 -0
  66. package/dist/interactive/docs-index.d.ts +68 -0
  67. package/dist/interactive/docs-index.d.ts.map +1 -0
  68. package/dist/interactive/docs-index.js +114 -0
  69. package/dist/interactive/docs-index.js.map +1 -0
  70. package/dist/interactive/draft-events.d.ts +18 -0
  71. package/dist/interactive/draft-events.d.ts.map +1 -1
  72. package/dist/interactive/draft-events.js +36 -3
  73. package/dist/interactive/draft-events.js.map +1 -1
  74. package/dist/interactive/edit-events.d.ts.map +1 -1
  75. package/dist/interactive/edit-events.js +26 -4
  76. package/dist/interactive/edit-events.js.map +1 -1
  77. package/dist/interactive/ledger.d.ts +2 -0
  78. package/dist/interactive/ledger.d.ts.map +1 -1
  79. package/dist/interactive/ledger.js +4 -0
  80. package/dist/interactive/ledger.js.map +1 -1
  81. package/dist/qe/acceptance.d.ts +72 -3
  82. package/dist/qe/acceptance.d.ts.map +1 -1
  83. package/dist/qe/acceptance.js +137 -17
  84. package/dist/qe/acceptance.js.map +1 -1
  85. package/dist/qe/author-workflow.d.ts +165 -0
  86. package/dist/qe/author-workflow.d.ts.map +1 -0
  87. package/dist/qe/author-workflow.js +377 -0
  88. package/dist/qe/author-workflow.js.map +1 -0
  89. package/dist/qe/ledger.d.ts +128 -28
  90. package/dist/qe/ledger.d.ts.map +1 -1
  91. package/dist/qe/ledger.js +272 -42
  92. package/dist/qe/ledger.js.map +1 -1
  93. package/dist/qe/test-sets.d.ts +112 -0
  94. package/dist/qe/test-sets.d.ts.map +1 -0
  95. package/dist/qe/test-sets.js +170 -0
  96. package/dist/qe/test-sets.js.map +1 -0
  97. package/dist/skills/refs.d.ts +37 -0
  98. package/dist/skills/refs.d.ts.map +1 -1
  99. package/dist/skills/refs.js +22 -0
  100. package/dist/skills/refs.js.map +1 -1
  101. package/dist/skills/runtime.d.ts +13 -1
  102. package/dist/skills/runtime.d.ts.map +1 -1
  103. package/dist/skills/runtime.js +88 -1
  104. package/dist/skills/runtime.js.map +1 -1
  105. package/dist/skills/store.d.ts +82 -5
  106. package/dist/skills/store.d.ts.map +1 -1
  107. package/dist/skills/store.js +109 -21
  108. package/dist/skills/store.js.map +1 -1
  109. package/dist/studio/assets/{index-_ydd-jKd.css → index-C0UZ2BxT.css} +1 -1
  110. package/dist/studio/assets/index-Clm0MXDF.js +544 -0
  111. package/dist/studio/index.html +2 -2
  112. package/dist/studio/testid-inventory.json +251 -5
  113. package/endpoint-manifest.json +24 -1
  114. package/package.json +3 -3
  115. package/dist/studio/assets/index-CWUS9Ump.js +0 -542
@@ -38,7 +38,7 @@ import { VERDICT_VALUES } from 'wicked-ledger';
38
38
  import { basename } from 'node:path';
39
39
  import { DELIVER_PHASE_ID } from '../core/deliver.js';
40
40
  import { DELIVERABLE_FLOOR_PHASE_ID } from '../core/deliverable-floor.js';
41
- import { readAcceptanceState, summarizeManifest } from './ledger.js';
41
+ import { describeAttribution, readAcceptanceState, summarizeManifest } from './ledger.js';
42
42
  import { resolveConformance } from './conformance.js';
43
43
  /**
44
44
  * Verdict → run-status, 1:1 with garden's qe `accept` action (VERDICT_TO_STATUS)
@@ -157,10 +157,21 @@ export function resolveAcceptanceGate(required, state) {
157
157
  };
158
158
  }
159
159
  if (state.verdict === null) {
160
+ if (state.ledgerVerdicts === 0) {
161
+ return {
162
+ ...base,
163
+ satisfied: false,
164
+ reason: `QE ledger at ${state.root} records no verdict (missing ⇒ deny)`,
165
+ };
166
+ }
167
+ // The ledger has verdicts — none of them is THIS run's (F-E2E-013). A verdict that
168
+ // predates the run, or belongs to a QE run nothing ties to it, is evidence about the repo's
169
+ // past, not about this run; serving it as the run's PASS was the regression.
170
+ const why = state.attribution.kind === 'none' ? state.attribution.reason : 'not attributed';
160
171
  return {
161
172
  ...base,
162
173
  satisfied: false,
163
- reason: `QE ledger at ${state.root} records no verdict (missing ⇒ deny)`,
174
+ reason: `QE ledger at ${state.root} holds no verdict attributed to this run — ${why} (unattributed ⇒ deny)`,
164
175
  };
165
176
  }
166
177
  if (verdict === null) {
@@ -173,7 +184,13 @@ export function resolveAcceptanceGate(required, state) {
173
184
  reason: `verdict ${state.verdict.id} carries an out-of-enum value '${verdictValue}' (unrecognized ⇒ deny)`,
174
185
  };
175
186
  }
176
- const cite = `verdict ${state.verdict.id} by ${state.verdict.reviewer}`;
187
+ // HOW the verdict is this run's rides the reason (review of #539, F6): an inferred lifetime
188
+ // linkage must read differently from a writer's stamp or a caller's pin — and when several QE
189
+ // runs are attributed, the reader must know the answer was resolved deny-dominates across them.
190
+ const breadth = state.attributedVerdicts > 1
191
+ ? `; ${state.attributedVerdicts} QE runs are attributed to this run — deny-dominates across their newest verdicts`
192
+ : '';
193
+ const cite = `verdict ${state.verdict.id} by ${state.verdict.reviewer} (${describeAttribution(state.attribution)}${breadth})`;
177
194
  switch (verdict) {
178
195
  case 'PASS':
179
196
  return { ...base, satisfied: true, reason: `PASS — ${cite}` };
@@ -207,16 +224,125 @@ export function resolveAcceptanceGate(required, state) {
207
224
  }
208
225
  }
209
226
  /**
210
- * Assemble the acceptance view for one crew run: read the ledger (lazy read —
211
- * the fallback that needs no bus), resolve the gate, and attach the freshest
227
+ * The frames that close a run's lifetime — one per terminal `SessionStatus` the engine defines
228
+ * (wicked-core `src/domain.rs`: `Completed`, `Failed`, `Cancelled`), spelled as the engine emits
229
+ * them (`src/event.rs` `event_to_json`: `sessionCompleted`, `sessionFailed`, `runCancelled`).
230
+ * Pinned from the source, not from memory: the first cut named a `sessionCancelled` frame the
231
+ * engine never emits, so a CANCELLED run's window never closed and any later QE PASS on the repo
232
+ * was attributed to it (review of #539, F1). `runOrphaned` is deliberately absent — an orphaned
233
+ * run is still `executing` and resumable, not finished.
234
+ */
235
+ export const TERMINAL_EVENT_TYPES = new Set([
236
+ 'sessionCompleted',
237
+ 'sessionFailed',
238
+ 'runCancelled',
239
+ ]);
240
+ /**
241
+ * The terminal frames the engine will NOT resume from: `resume_run_inner` returns a `Completed` or
242
+ * `Cancelled` run's status unchanged (wicked-core `src/actor.rs`, the `Completed | Cancelled`
243
+ * early return) and re-dispatches only a `Failed` one. So once one of these is recorded the window
244
+ * is closed for good; `sessionFailed` alone can be followed by a `resumed` frame (r2 review, N1).
245
+ */
246
+ export const FINAL_EVENT_TYPES = new Set(['sessionCompleted', 'runCancelled']);
247
+ /**
248
+ * The frames that prove a run is LIVE AGAIN after a non-final terminal frame — the engine emits
249
+ * each of them only for a run it is actively driving (wicked-core `src/event.rs` `event_to_json`):
250
+ * - `resumed` — emitted by `confirm_gate` when a human approves a gate (`src/actor.rs`, the only
251
+ * `CoreEvent::Resumed` emission). NOT by the failed-run resume path: `resume_run_inner` emits
252
+ * no frame of its own (r3 review, N3 — an earlier comment here claimed otherwise);
253
+ * - `unitDispatched` / `unitExecuting` / `toolExecutorDispatched` — `dispatch_unit`'s frames, the
254
+ * first thing a rescued run records after `POST /runs/:id/resume` re-dispatches its cursor unit;
255
+ * - `unitDistributed` — a (re)distribution for a unit, run-scoped and live-only as well.
256
+ * `unitDone` / `unitDenied` / `unitPlanned` are deliberately NOT here: a straggling completion or
257
+ * denial frame after a failure is not evidence the run went on (F4).
258
+ */
259
+ export const REOPEN_EVENT_TYPES = new Set([
260
+ 'resumed',
261
+ 'unitDispatched',
262
+ 'unitExecuting',
263
+ 'toolExecutorDispatched',
264
+ 'unitDistributed',
265
+ ]);
266
+ /**
267
+ * The crew run's lifetime as its durable event log records it — the window a QE run must have
268
+ * started inside to count as this run's evidence (F-E2E-013).
269
+ *
270
+ * `startedAt` is the capture time of the `sessionStarted` frame (the earliest frame's, for a log
271
+ * that lacks one). `finishedAt` follows the frames IN LOG ORDER: a terminal frame closes the window
272
+ * at its capture time; a later {@link REOPEN_EVENT_TYPES} frame reopens it — a FAILED run is
273
+ * resumable under the same id (`POST /runs/:id/resume` → engine `resume_run_inner`, which
274
+ * re-dispatches the cursor unit and runs the run on to its own `sessionCompleted`), so QE evidence
275
+ * recorded after the rescue is that run's, whether the run is still executing (its execution
276
+ * frames reopen the window — r3 review, N3) or has since completed (r2 review, N1).
277
+ * `sessionCompleted` / `runCancelled` are FINAL: the engine refuses to resume either, so nothing
278
+ * after them reopens the window. Any other frame is ignored — a straggling non-terminal frame
279
+ * after the end does not reopen anything (F4). A log with no terminal frame (or one whose last
280
+ * terminal frame was followed by execution) belongs to a live run, whose window stays open. A
281
+ * `null` or empty log places the run nowhere in time, so it can link nothing — and when the log
282
+ * could not be READ (`unreadable`), the linkage carries that cause so the denial names it instead
283
+ * of "no sessionStarted" (F5).
284
+ *
285
+ * Chosen over gating on `session.status`: the log is what the route already reads for this
286
+ * purpose, it needs no second engine call, and it yields the same answer — a rescued run's
287
+ * persisted status is non-terminal from its re-dispatch until its next terminal frame, which is
288
+ * exactly the span between the reopening frame and the frame that closes the scan again.
289
+ */
290
+ export function runWindowFromEvents(events, runId, unreadable) {
291
+ if (unreadable !== undefined)
292
+ return { runId, startedAt: null, finishedAt: null, logUnreadable: unreadable };
293
+ if (events === null || events.length === 0)
294
+ return { runId, startedAt: null, finishedAt: null };
295
+ const at = (e) => typeof e.ts === 'number' && Number.isFinite(e.ts) ? e.ts : null;
296
+ const started = events.find((e) => e.type === 'sessionStarted');
297
+ let startedAt = started !== undefined ? at(started) : null;
298
+ if (startedAt === null) {
299
+ for (const e of events) {
300
+ const t = at(e);
301
+ if (t !== null && (startedAt === null || t < startedAt))
302
+ startedAt = t;
303
+ }
304
+ }
305
+ let finishedAt = null;
306
+ for (const e of events) {
307
+ if (TERMINAL_EVENT_TYPES.has(e.type)) {
308
+ finishedAt = at(e) ?? finishedAt;
309
+ if (FINAL_EVENT_TYPES.has(e.type))
310
+ break; // nothing the engine emits after these reopens the run
311
+ }
312
+ else if (REOPEN_EVENT_TYPES.has(e.type) && finishedAt !== null) {
313
+ finishedAt = null; // a failed run rescued and executing again: live until its next terminal frame
314
+ }
315
+ }
316
+ return { runId, startedAt, finishedAt };
317
+ }
318
+ /**
319
+ * Assemble the acceptance view for one crew run: read the run's event log,
320
+ * read the ledger SCOPED TO THIS RUN (a read-only canonical-JSON read — the
321
+ * fallback that needs no bus), resolve the gate, and attach the freshest
212
322
  * matching bus event when the opt-in subscription has seen one.
213
323
  */
214
324
  export async function buildAcceptanceView(opts) {
215
325
  const phases = acceptancePhaseIds(opts.workflow);
216
326
  const required = phases.length > 0;
217
- const state = opts.repo !== null
218
- ? await readAcceptanceState(opts.repo.root_path, opts.qeRunId !== undefined ? { qeRunId: opts.qeRunId } : undefined)
219
- : null;
327
+ // The run's durable event log, read FIRST: it is both the conformance section's enforcement
328
+ // record and the ledger read's linkage — a verdict is this run's only if its QE run falls inside
329
+ // the lifetime the log records (or the writer stamped the run id). An unreadable or absent log
330
+ // means an unknown window, and an unknown window links nothing (F-E2E-013).
331
+ let eventRows = null;
332
+ let eventsError;
333
+ if (opts.events !== undefined) {
334
+ try {
335
+ eventRows = await opts.events(opts.runId);
336
+ }
337
+ catch (err) {
338
+ eventRows = null; // unreadable log ⇒ unverifiable enforcement, by resolveConformance's rule
339
+ eventsError = err instanceof Error ? err.message : String(err);
340
+ }
341
+ }
342
+ const subject = opts.qeRunId !== undefined
343
+ ? { qeRunId: opts.qeRunId }
344
+ : { run: runWindowFromEvents(eventRows, opts.runId, eventsError) };
345
+ const state = opts.repo !== null ? await readAcceptanceState(opts.repo.root_path, subject) : null;
220
346
  const gate = resolveAcceptanceGate(required, state);
221
347
  // The conformance half. Loader failures are NAMED, not flattened into an empty list — the
222
348
  // section's own resolution turns "unreadable" into "not claimed clean" (deny-dominates).
@@ -233,15 +359,6 @@ export async function buildAcceptanceView(opts) {
233
359
  else {
234
360
  claimsError = 'claims loader not wired';
235
361
  }
236
- let eventRows = null;
237
- if (opts.events !== undefined) {
238
- try {
239
- eventRows = await opts.events(opts.runId);
240
- }
241
- catch {
242
- eventRows = null; // unreadable log ⇒ unverifiable enforcement, by resolveConformance's rule
243
- }
244
- }
245
362
  const conformance = resolveConformance({
246
363
  runId: opts.runId,
247
364
  claims: claimRows,
@@ -290,6 +407,9 @@ export async function buildAcceptanceView(opts) {
290
407
  }
291
408
  : null,
292
409
  manifest: state.manifest !== null ? summarizeManifest(state.manifest) : null,
410
+ attribution: state.attribution,
411
+ ledgerVerdicts: state.ledgerVerdicts,
412
+ attributedVerdicts: state.attributedVerdicts,
293
413
  ...(state.error !== undefined ? { error: state.error } : {}),
294
414
  }
295
415
  : null,
@@ -1 +1 @@
1
- {"version":3,"file":"acceptance.js","sourceRoot":"","sources":["../../src/qe/acceptance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acceptance.js","sourceRoot":"","sources":["../../src/qe/acceptance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * `qe-author-tests` — the governed test-authoring workflow (wave 6: F-7R2-003/004/005/012/014/015,
3
+ * acceptance verdict R4-r2), workflows-as-data.
4
+ *
5
+ * ## Why a workflow, not a free-text run
6
+ *
7
+ * The studio's "New test" used to `POST /testing/recon` a plain free-text governed run: the planner
8
+ * split the brief at sentence boundaries into seven alternating agent units, two of them chat
9
+ * replies ("Gate protocol acknowledged … What is the next task?"), every gate a vacuous
10
+ * default-allow, no `skill_ref` anywhere (the 40-specialist QE domain never routed), no deliver
11
+ * phase (the LAST worker opened the PR from its own shell — invisible to the ledger), no campaign
12
+ * registered (the Test landing stayed empty), and the produced Playwright e2e was never executed by
13
+ * the run — it failed at its first check on the first independent run (R4-r2: 0 of 12 checks).
14
+ *
15
+ * This def is the fix, as data the engine validates AS AUTHORED (wicked-core#414 — a code-writing
16
+ * agent phase carries the evidence-floor pin, the verified-evidence phase carries it too):
17
+ *
18
+ * recon (agent, neutral, `wicked-garden-qe` plan) — read the repo + its tests, detect the
19
+ * harness, map intent → behaviours → gaps
20
+ * author (agent, CREATOR, `wicked-garden-qe` author, — write behaviour tests against the repo's
21
+ * executes_code, evidence-floor pinned) own harness + `tests/PLAN-<slug>.md`
22
+ * verify (TOOL, verified_evidence, pinned) — {@link qeVerifyScript}: run the repo's own
23
+ * checks INCLUDING every produced test;
24
+ * FAIL if any fails or was never executed
25
+ * review (agent, EVALUATOR, `wicked-garden-qe` review,— independent fitness verdict; escalates a
26
+ * pinned, human_confirm_if verdict_not_pass) not-pass to a human, never auto-denies
27
+ * deliver — NOT here. Appended per run by the ENGINE-side composition (`deliver: "pr"`, the
28
+ * crew#393 default for a repo-scoped code-work def): the engine lifts, re-verifies,
29
+ * pushes and opens the PR so the ledger records the delivery. A worker seat never
30
+ * pushes (the wave-6 engine's remote-write fence refuses `git push`/`gh pr create`).
31
+ *
32
+ * The METHOD lives in the garden skill (`wicked-garden-qe`, actions plan/author/review) — each
33
+ * phase's inline `instructions` is a one-line orientation only, because a governed worker's prompt
34
+ * rides a single PTY line capped at 1022 bytes (wicked-core execute_wrapped.rs) and the planner
35
+ * folds the instructions onto that line beside the run intent.
36
+ *
37
+ * Crew-authored drop-in (like `capture-learnings`): NOT core-seeded, so `launchRun`'s
38
+ * `_writeBuiltinOverlay` write is the only way the engine resolves the id. Not `is_system`: it IS an
39
+ * operator-selectable work mode (the catalog finally carries something labelled test/QE — F-075).
40
+ */
41
+ import type { PhaseDef, WorkflowDef } from '../core/types.js';
42
+ /** The workflow id — `GET /workflows` lists it; `POST /testing/author` launches it. */
43
+ export declare const QE_AUTHOR_TESTS_WORKFLOW = "qe-author-tests";
44
+ /** The garden skill every agent phase routes through (`skills/qe/SKILL.md`, actions by name). */
45
+ export declare const QE_SKILL = "wicked-garden-qe";
46
+ /** The deterministic verification phase's id (its unit is `<run>:verify` on the wire). */
47
+ export declare const QE_VERIFY_PHASE_ID = "verify";
48
+ /** Per-produced-file marker the verify phase prints: `QE-VERIFY: file=… harness=… exit=… status=…`. */
49
+ export declare const QE_VERIFY_MARKER = "QE-VERIFY:";
50
+ /** Repo-own-checks marker: `QE-VERIFY-CHECK: harness=… cmd="…" exit=…`. */
51
+ export declare const QE_VERIFY_CHECK_MARKER = "QE-VERIFY-CHECK:";
52
+ /** The one summary line: `QE-VERIFY-SUMMARY: produced=N executed=N passed=N failed=N …`. */
53
+ export declare const QE_VERIFY_SUMMARY_MARKER = "QE-VERIFY-SUMMARY:";
54
+ /** Where the author phase must record its plan (glob, repo-relative). */
55
+ export declare const QE_PLAN_GLOB = "tests/PLAN-*.md";
56
+ /** Ceiling for each phase's inline orientation — the PTY line also carries the intent. */
57
+ export declare const QE_MAX_INLINE_INSTRUCTION_BYTES = 600;
58
+ /**
59
+ * The verify phase's script — the R4-r2 floor: a produced test that fails, or was never run, FAILS
60
+ * the unit. Runs in the run worktree as `bash -lc`:
61
+ *
62
+ * 1. BASE — the run branch's fork point off origin's default branch (the engine's own derivation
63
+ * order: origin/HEAD, origin/main, origin/master; then a local main/master; else HEAD).
64
+ * 2. PRODUCED — every path changed/added since BASE plus every untracked file: the run's own work,
65
+ * committed or not. Test files are the conventional shapes (`*.test.*`, `*.spec.*`, `*_test.py`,
66
+ * `test_*.py`, `__tests__/`); fixtures, factories and the PLAN are produced but not "tests".
67
+ * 3. HARNESS per file — the REPOSITORY's own, resolved PER FILE by walking up from the file's
68
+ * directory to the nearest marker (monorepo-aware — review H-1/M-1 of #536): Playwright
69
+ * (`playwright.config.*` / `@playwright/test` in the nearest package.json) for `*.spec.*`, a
70
+ * Python Playwright rig (imports `playwright`), vitest/jest from the nearest package.json that
71
+ * declares them, pytest for every other test-shaped `.py` (nearest `pytest.ini` / `conftest.py`
72
+ * / `tox.ini` / `pyproject.toml [tool.pytest]` / `setup.cfg [tool:pytest]` dir, else the root).
73
+ * The RUNNER is the nearest `node_modules/.bin/<tool>` (or `.venv/bin/pytest` / an importable
74
+ * pytest) from that package dir up to the worktree root — NEVER `npx` (a registry fetch on the
75
+ * verify path) and NEVER a plain interpreter for a test-shaped file (a pytest module run as
76
+ * `python3 file.py` defines its functions and exits 0 with zero assertions — a vacuous PASS).
77
+ * A missing/unrunnable runner is NOT EXECUTED = fail, with "harness not available: <tool>" and
78
+ * the remedy (install the dependencies in the worktree in the author phase). The runner runs
79
+ * FROM its package dir with a package-relative path.
80
+ * 4. COLLECTED — every executed file must show ≥ 1 test in the RUNNER's own summary (pytest
81
+ * `N passed` / `collected N items`, vitest `Tests N passed`, jest `N total`, Playwright
82
+ * `N passed`, a Python rig's check/pass lines); exit 0 with 0 tests reported = NOT EXECUTED.
83
+ * 5. REPO CHECKS — the full unit suite of every (harness, package dir) a produced test used
84
+ * (vitest/jest/pytest) runs once too, so the produced tests are verified INSIDE the repository's
85
+ * own check, not beside it. The Playwright suite is not re-run whole (its produced specs ran
86
+ * individually).
87
+ * 6. VERDICT — `QE-VERIFY-SUMMARY:` then exit 0 only when: ≥ 1 produced test, every one executed
88
+ * with ≥ 1 test collected, none failed, the PLAN exists, and the repo checks passed. Every
89
+ * refusal names its reason.
90
+ *
91
+ * `set -u -o pipefail` but NOT `-e`: each command's exit is captured deliberately. `exec 2>&1`
92
+ * keeps the transcript chronological (the engine appends stderr after stdout otherwise).
93
+ */
94
+ export declare function qeVerifyScript(): string;
95
+ /** The verify TOOL phase — deterministic, pinned to the evidence floor (the run left a change),
96
+ * `executes_code: false` like the deliver phase: engine-owned tooling, not governed agent work
97
+ * (a Tool unit is never worktree-guarded, so the harness's caches cannot deny it). */
98
+ export declare function qeVerifyPhase(dependsOn?: string[]): PhaseDef;
99
+ /** The shipped definition (see the module doc). Exported as data — tests assert it, the adapter
100
+ * serves it from `BUILTIN_WORKFLOWS`, and the engine validates it as authored at the overlay write. */
101
+ export declare const QE_AUTHOR_TESTS_WORKFLOW_DEF: WorkflowDef;
102
+ /** One produced test file as the verify phase judged it. */
103
+ export interface QeVerifiedFile {
104
+ path: string;
105
+ /** `playwright` | `playwright-python` | `vitest` | `jest` | `pytest` | `python` | `unknown`. */
106
+ harness: string;
107
+ cmd: string;
108
+ /** The process exit code; `null` when the file was never executed. */
109
+ exit: number | null;
110
+ /** How many tests the RUNNER reported for the file (its own summary line); `0` when nothing was
111
+ * collected — which reads as `not-executed` even on exit 0 (review H-1 of #536). */
112
+ tests: number;
113
+ /** The package dir (worktree-relative, `.` = root) the harness was resolved in and run from. */
114
+ pkg: string;
115
+ status: 'passed' | 'failed' | 'not-executed';
116
+ /** Why a `not-executed` file was not executed ("harness not available: pytest — …"). */
117
+ reason?: string;
118
+ }
119
+ /** One repository-own check the verify phase ran. */
120
+ export interface QeVerifiedCheck {
121
+ harness: string;
122
+ cmd: string;
123
+ exit: number;
124
+ }
125
+ /** The verify phase's report — what the campaign/test-set registration and the studio read. */
126
+ export interface QeVerifyReport {
127
+ files: QeVerifiedFile[];
128
+ checks: QeVerifiedCheck[];
129
+ produced: number;
130
+ executed: number;
131
+ passed: number;
132
+ failed: number;
133
+ notExecuted: number;
134
+ /** The produced `tests/PLAN-*.md` path, `null` when none was produced. */
135
+ plan: string | null;
136
+ checksFailed: number;
137
+ }
138
+ /**
139
+ * Parse the verify unit's transcript into a {@link QeVerifyReport}. `null` when the transcript
140
+ * carries no `QE-VERIFY-SUMMARY:` line (the phase never reached its verdict — the unit's status
141
+ * and `denial_reason` say why).
142
+ */
143
+ export declare function parseQeVerifyOutput(text: string): QeVerifyReport | null;
144
+ /** One planned phase as the intake gate shows it — derived from the DEF, not from prose. */
145
+ export interface QeAuthorPlanPhase {
146
+ id: string;
147
+ kind: PhaseDef['kind'];
148
+ role: PhaseDef['role'];
149
+ executor: 'agent' | 'tool';
150
+ skillRef: string | null;
151
+ /** `auto` | `human` (unconditional confirm) | `human_if_not_pass`. */
152
+ gate: 'auto' | 'human' | 'human_if_not_pass';
153
+ executesCode: boolean;
154
+ /** `true` for the phase the ENGINE appends and owns (the deliver phase). */
155
+ engine?: boolean;
156
+ }
157
+ /** The plan the intake gate shows: the def's phases in order, then the engine's deliver phase when
158
+ * the launch delivers, and the seats the council may pick from (the launcher's eligible roster). */
159
+ export interface QeAuthorPlan {
160
+ workflow: string;
161
+ phases: QeAuthorPlanPhase[];
162
+ seats: string[];
163
+ }
164
+ export declare function qeAuthorPlan(def: WorkflowDef, seats: string[], deliver: boolean): QeAuthorPlan;
165
+ //# sourceMappingURL=author-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"author-workflow.d.ts","sourceRoot":"","sources":["../../src/qe/author-workflow.ts"],"names":[],"mappings":"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"}