wicked-crew 0.7.23 → 0.7.25

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 (36) hide show
  1. package/dist/api/audit.d.ts +4 -1
  2. package/dist/api/audit.d.ts.map +1 -1
  3. package/dist/api/audit.js +5 -1
  4. package/dist/api/audit.js.map +1 -1
  5. package/dist/api/eval-store.d.ts +85 -0
  6. package/dist/api/eval-store.d.ts.map +1 -0
  7. package/dist/api/eval-store.js +176 -0
  8. package/dist/api/eval-store.js.map +1 -0
  9. package/dist/api/governance-steering.d.ts +5 -0
  10. package/dist/api/governance-steering.d.ts.map +1 -1
  11. package/dist/api/governance-steering.js +8 -9
  12. package/dist/api/governance-steering.js.map +1 -1
  13. package/dist/api/routes.d.ts +11 -0
  14. package/dist/api/routes.d.ts.map +1 -1
  15. package/dist/api/routes.js +40 -18
  16. package/dist/api/routes.js.map +1 -1
  17. package/dist/api/run-timing-index.d.ts +54 -0
  18. package/dist/api/run-timing-index.d.ts.map +1 -0
  19. package/dist/api/run-timing-index.js +82 -0
  20. package/dist/api/run-timing-index.js.map +1 -0
  21. package/dist/api/server.d.ts +4 -0
  22. package/dist/api/server.d.ts.map +1 -1
  23. package/dist/api/server.js +15 -1
  24. package/dist/api/server.js.map +1 -1
  25. package/dist/api/testing.d.ts +17 -1
  26. package/dist/api/testing.d.ts.map +1 -1
  27. package/dist/api/testing.js +93 -22
  28. package/dist/api/testing.js.map +1 -1
  29. package/dist/studio/assets/index-C4iz4uAw.js +537 -0
  30. package/dist/studio/assets/index-DEEQcRQ_.css +32 -0
  31. package/dist/studio/index.html +2 -2
  32. package/dist/studio/testid-inventory.json +265 -132
  33. package/endpoint-manifest.json +20 -1
  34. package/package.json +2 -2
  35. package/dist/studio/assets/index-CoitSgeY.css +0 -32
  36. package/dist/studio/assets/index-EwAn7t8P.js +0 -537
@@ -51,10 +51,13 @@ export declare class AuditLog {
51
51
  * wait on fsync of a sidecar), serialized so lines never interleave, loud on
52
52
  * failure. `flush()` awaits the chain — tests and shutdown use it.
53
53
  */
54
+ /** Returns the unix-millis `ts` stamped on the entry (0 when disabled) so a caller can reuse the
55
+ * EXACT durable timestamp — e.g. the run-timing index, which must match what a restart rehydrates
56
+ * from the trail rather than drift by a second off a second `Date.now()`. */
54
57
  record(action: string, actor: Actor, fields?: {
55
58
  runId?: string;
56
59
  detail?: Record<string, unknown>;
57
- }): void;
60
+ }): number;
58
61
  /** Await every append issued so far. */
59
62
  flush(): Promise<void>;
60
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/api/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE7E;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mFAAmF;AACnF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAE7D,qBAAa,QAAQ;IAMjB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;gBAGd,IAAI,GAAE,MAA2B,EACzB,IAAI,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAA6B;IAGvE;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,IAAI,QAAQ;IAMvB;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI;IAyBzG,wCAAwC;IACxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB;;;;OAIG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAM3D;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIxD,gFAAgF;YAClE,IAAI;CA0BnB"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/api/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE7E;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mFAAmF;AACnF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAE7D,qBAAa,QAAQ;IAMjB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;gBAGd,IAAI,GAAE,MAA2B,EACzB,IAAI,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAA6B;IAGvE;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,IAAI,QAAQ;IAMvB;;;;OAIG;IACH;;kFAE8E;IAC9E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,MAAM;IA0B3G,wCAAwC;IACxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB;;;;OAIG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAM3D;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIxD,gFAAgF;YAClE,IAAI;CA0BnB"}
package/dist/api/audit.js CHANGED
@@ -54,9 +54,12 @@ export class AuditLog {
54
54
  * wait on fsync of a sidecar), serialized so lines never interleave, loud on
55
55
  * failure. `flush()` awaits the chain — tests and shutdown use it.
56
56
  */
57
+ /** Returns the unix-millis `ts` stamped on the entry (0 when disabled) so a caller can reuse the
58
+ * EXACT durable timestamp — e.g. the run-timing index, which must match what a restart rehydrates
59
+ * from the trail rather than drift by a second off a second `Date.now()`. */
57
60
  record(action, actor, fields) {
58
61
  if (this.disabled)
59
- return;
62
+ return 0;
60
63
  const entry = {
61
64
  ts: Date.now(),
62
65
  action,
@@ -74,6 +77,7 @@ export class AuditLog {
74
77
  this.chain = this.chain.catch((err) => {
75
78
  this.warn(`[audit] FAILED to record ${action} by ${actor.id} at ${this.path}: ${err instanceof Error ? err.message : String(err)} — the action itself succeeded; the trail has a hole`);
76
79
  });
80
+ return entry.ts;
77
81
  }
78
82
  /** Await every append issued so far. */
79
83
  flush() {
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/api/audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/api/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * The crew-side eval RUN history — the durable store behind the studio's Evals section.
3
+ *
4
+ * # Why this store exists
5
+ *
6
+ * `POST /testing/evals/run` computes a report and answers it, but the daemon kept NOTHING: the
7
+ * engine's eval path is read-only over the steering store (it writes no claim — `conform` is the
8
+ * live gate's recorder, not the eval's), and studio held the last report only in a session-local
9
+ * store that a reload lost. So the Evals section could show ONE ephemeral report, never a history.
10
+ * This store closes that gap: every run is recorded here, so "are the gaps shrinking?" becomes a
11
+ * question the section can actually answer.
12
+ *
13
+ * # Why crew-side, and why not the QE ledger
14
+ *
15
+ * Eval runs judge a STORE, not a workspace — they take no repo/project (the recon route is the
16
+ * only testing route that is workspace-scoped). So they are DAEMON-scoped state, and they live
17
+ * where crew's other daemon-scoped durable state lives: under the resolved state home
18
+ * (`state-home.ts`, the seam project graphs and settings already resolve through), so a `--db`
19
+ * isolated daemon keeps its eval history isolated too. They are deliberately NOT in the wicked-
20
+ * ledger `DomainStore` (`.wicked-qe/`): that store is repo-scoped QE ACCEPTANCE evidence with a
21
+ * fixed table set (`runs`/`verdicts` carry a `scenario_id` FK and an acceptance verdict enum) —
22
+ * reusing it for governance-eval runs would mean the wrong semantics, not reuse.
23
+ *
24
+ * # Shape: a rollup INDEX plus per-run DETAIL files
25
+ *
26
+ * <home>/evals/runs.jsonl — one {@link EvalRunSummary} per line, append order (the LIST).
27
+ * <home>/evals/results/<id>.json — one run's full per-sample results (the DRILLDOWN).
28
+ *
29
+ * Listing parses one file (the rollups) — cheap no matter how large a custom corpus's results
30
+ * are; a drilldown loads exactly one detail file. The detail file is written FIRST, then the index
31
+ * line is appended, so every listed row has a readable detail (a crash between the two leaves an
32
+ * orphan detail file, which is harmless and self-garbage-collecting, never a dangling row).
33
+ *
34
+ * Posture matches the daemon's other sidecars: LOUD-NON-FATAL. Persisting a run must never fail
35
+ * the run itself (the report is the contract; the history is additive), and a torn or missing file
36
+ * degrades one row, never the store — reads skip what does not parse, exactly like the audit trail.
37
+ */
38
+ import type { EvalRunDetail, EvalRunSummary, GovernanceEvalResult } from '../core/types.js';
39
+ /**
40
+ * Where the store's root lives. Precedence mirrors the other crew stores exactly: the explicit
41
+ * `WICKED_CREW_EVAL_STORE` env override (the more specific instruction the tests pin), then the
42
+ * daemon's state home — the `--db` parent when the bootstrap configured one, the historical
43
+ * `~/.wicked-crew` default otherwise (byte-identical without `--db`).
44
+ */
45
+ export declare function defaultEvalStoreRoot(env?: NodeJS.ProcessEnv): string;
46
+ /** The input a run persists: its rollup provenance plus the results the detail file will hold. */
47
+ export interface RecordEvalRunInput extends Omit<EvalRunSummary, 'id' | 'created_at'> {
48
+ results: GovernanceEvalResult[];
49
+ }
50
+ export declare class EvalRunStore {
51
+ private readonly warn;
52
+ private readonly now;
53
+ private readonly mintId;
54
+ private readonly indexPath;
55
+ private readonly resultsDir;
56
+ /** Serializes writes so two concurrent `record()`s never interleave a partial index line or
57
+ * reorder detail-then-index — the same promise-chain discipline the audit JSONL writer uses. */
58
+ private writeTail;
59
+ constructor(root?: string, warn?: (msg: string) => void, now?: () => number, mintId?: () => string);
60
+ /**
61
+ * Record one eval run: write the detail file, then append the rollup index line. Returns the
62
+ * recorded {@link EvalRunSummary} (with its minted id + timestamp). ASYNC (fs/promises) so the
63
+ * write never blocks the daemon's event loop on a large results file, and SERIALIZED behind any
64
+ * in-flight write (the audit-trail pattern) so concurrent eval runs never interleave a partial
65
+ * line (Copilot #467) — the caller records best-effort and never fails the run on a miss.
66
+ */
67
+ record(input: RecordEvalRunInput): Promise<EvalRunSummary>;
68
+ /** The actual write, in the one order that keeps a listed row always resolvable: detail file
69
+ * (atomic tmp+rename) FIRST, then the rollup index append (an orphan detail after a crash before
70
+ * the append is harmless; a dangling index row would not be). */
71
+ private writeRun;
72
+ /**
73
+ * The run history, newest first. Optional equality filters (`type_filter`, `corpus`) narrow it.
74
+ * A line that does not parse is skipped (a torn final line after a crash is expected once) — the
75
+ * rest of the history still lists.
76
+ */
77
+ list(filter?: {
78
+ type_filter?: string | null;
79
+ corpus?: string | null;
80
+ }): Promise<EvalRunSummary[]>;
81
+ /** One run WITH its full results, or null when the id is unknown (or its detail file is gone). */
82
+ get(id: string): Promise<EvalRunDetail | null>;
83
+ private detailPath;
84
+ }
85
+ //# sourceMappingURL=eval-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-store.d.ts","sourceRoot":"","sources":["../../src/api/eval-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE5F;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAIjF;AAED,kGAAkG;AAClG,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,YAAY,CAAC;IACnF,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,qBAAa,YAAY;IASrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAErB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAXzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC;qGACiG;IACjG,OAAO,CAAC,SAAS,CAAuC;gBAGtD,IAAI,GAAE,MAA+B,EACpB,IAAI,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAA6B,EAEpD,GAAG,GAAE,MAAM,MAA4C,EACvD,MAAM,GAAE,MAAM,MAA6C;IAM9E;;;;;;OAMG;IACG,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAahE;;sEAEkE;YACpD,QAAQ;IAQtB;;;;OAIG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA0BvG,kGAAkG;IAC5F,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAuBpD,OAAO,CAAC,UAAU;CAGnB"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * The crew-side eval RUN history — the durable store behind the studio's Evals section.
3
+ *
4
+ * # Why this store exists
5
+ *
6
+ * `POST /testing/evals/run` computes a report and answers it, but the daemon kept NOTHING: the
7
+ * engine's eval path is read-only over the steering store (it writes no claim — `conform` is the
8
+ * live gate's recorder, not the eval's), and studio held the last report only in a session-local
9
+ * store that a reload lost. So the Evals section could show ONE ephemeral report, never a history.
10
+ * This store closes that gap: every run is recorded here, so "are the gaps shrinking?" becomes a
11
+ * question the section can actually answer.
12
+ *
13
+ * # Why crew-side, and why not the QE ledger
14
+ *
15
+ * Eval runs judge a STORE, not a workspace — they take no repo/project (the recon route is the
16
+ * only testing route that is workspace-scoped). So they are DAEMON-scoped state, and they live
17
+ * where crew's other daemon-scoped durable state lives: under the resolved state home
18
+ * (`state-home.ts`, the seam project graphs and settings already resolve through), so a `--db`
19
+ * isolated daemon keeps its eval history isolated too. They are deliberately NOT in the wicked-
20
+ * ledger `DomainStore` (`.wicked-qe/`): that store is repo-scoped QE ACCEPTANCE evidence with a
21
+ * fixed table set (`runs`/`verdicts` carry a `scenario_id` FK and an acceptance verdict enum) —
22
+ * reusing it for governance-eval runs would mean the wrong semantics, not reuse.
23
+ *
24
+ * # Shape: a rollup INDEX plus per-run DETAIL files
25
+ *
26
+ * <home>/evals/runs.jsonl — one {@link EvalRunSummary} per line, append order (the LIST).
27
+ * <home>/evals/results/<id>.json — one run's full per-sample results (the DRILLDOWN).
28
+ *
29
+ * Listing parses one file (the rollups) — cheap no matter how large a custom corpus's results
30
+ * are; a drilldown loads exactly one detail file. The detail file is written FIRST, then the index
31
+ * line is appended, so every listed row has a readable detail (a crash between the two leaves an
32
+ * orphan detail file, which is harmless and self-garbage-collecting, never a dangling row).
33
+ *
34
+ * Posture matches the daemon's other sidecars: LOUD-NON-FATAL. Persisting a run must never fail
35
+ * the run itself (the report is the contract; the history is additive), and a torn or missing file
36
+ * degrades one row, never the store — reads skip what does not parse, exactly like the audit trail.
37
+ */
38
+ import { appendFile, mkdir, readFile, rename, writeFile } from 'node:fs/promises';
39
+ import { randomUUID } from 'node:crypto';
40
+ import { join } from 'node:path';
41
+ import { crewStateHome } from '../projects/state-home.js';
42
+ /**
43
+ * Where the store's root lives. Precedence mirrors the other crew stores exactly: the explicit
44
+ * `WICKED_CREW_EVAL_STORE` env override (the more specific instruction the tests pin), then the
45
+ * daemon's state home — the `--db` parent when the bootstrap configured one, the historical
46
+ * `~/.wicked-crew` default otherwise (byte-identical without `--db`).
47
+ */
48
+ export function defaultEvalStoreRoot(env = process.env) {
49
+ const override = env['WICKED_CREW_EVAL_STORE'];
50
+ if (override !== undefined)
51
+ return override;
52
+ return join(crewStateHome(), 'evals');
53
+ }
54
+ export class EvalRunStore {
55
+ warn;
56
+ now;
57
+ mintId;
58
+ indexPath;
59
+ resultsDir;
60
+ /** Serializes writes so two concurrent `record()`s never interleave a partial index line or
61
+ * reorder detail-then-index — the same promise-chain discipline the audit JSONL writer uses. */
62
+ writeTail = Promise.resolve();
63
+ constructor(root = defaultEvalStoreRoot(), warn = (m) => console.warn(m),
64
+ // `now`/`mintId` are seams so a test can pin a deterministic id + timestamp.
65
+ now = () => Math.floor(Date.now() / 1000), mintId = () => randomUUID().replace(/-/g, '')) {
66
+ this.warn = warn;
67
+ this.now = now;
68
+ this.mintId = mintId;
69
+ this.indexPath = join(root, 'runs.jsonl');
70
+ this.resultsDir = join(root, 'results');
71
+ }
72
+ /**
73
+ * Record one eval run: write the detail file, then append the rollup index line. Returns the
74
+ * recorded {@link EvalRunSummary} (with its minted id + timestamp). ASYNC (fs/promises) so the
75
+ * write never blocks the daemon's event loop on a large results file, and SERIALIZED behind any
76
+ * in-flight write (the audit-trail pattern) so concurrent eval runs never interleave a partial
77
+ * line (Copilot #467) — the caller records best-effort and never fails the run on a miss.
78
+ */
79
+ async record(input) {
80
+ const { results, ...rest } = input;
81
+ const summary = { id: this.mintId(), created_at: this.now(), ...rest };
82
+ const detail = { ...summary, results };
83
+ // Queue behind the previous write (ignoring its outcome — one failure must not wedge the queue),
84
+ // then do this write. `writeTail` advances swallowing errors so the chain never breaks; `await
85
+ // run` still surfaces THIS write's error to THIS caller (the route catches it best-effort).
86
+ const run = this.writeTail.catch(() => undefined).then(() => this.writeRun(summary, detail));
87
+ this.writeTail = run.catch(() => undefined);
88
+ await run;
89
+ return summary;
90
+ }
91
+ /** The actual write, in the one order that keeps a listed row always resolvable: detail file
92
+ * (atomic tmp+rename) FIRST, then the rollup index append (an orphan detail after a crash before
93
+ * the append is harmless; a dangling index row would not be). */
94
+ async writeRun(summary, detail) {
95
+ await mkdir(this.resultsDir, { recursive: true });
96
+ const tmp = join(this.resultsDir, `${summary.id}.json.tmp-${process.pid}`);
97
+ await writeFile(tmp, JSON.stringify(detail), 'utf8');
98
+ await rename(tmp, this.detailPath(summary.id));
99
+ await appendFile(this.indexPath, `${JSON.stringify(summary)}\n`, 'utf8');
100
+ }
101
+ /**
102
+ * The run history, newest first. Optional equality filters (`type_filter`, `corpus`) narrow it.
103
+ * A line that does not parse is skipped (a torn final line after a crash is expected once) — the
104
+ * rest of the history still lists.
105
+ */
106
+ async list(filter) {
107
+ let raw;
108
+ try {
109
+ raw = await readFile(this.indexPath, 'utf8');
110
+ }
111
+ catch (err) {
112
+ if (err.code === 'ENOENT')
113
+ return []; // nothing recorded yet
114
+ this.warn(`[eval-store] could not read ${this.indexPath}: ${message(err)} — the history reads empty`);
115
+ return [];
116
+ }
117
+ const rows = [];
118
+ for (const line of raw.split('\n')) {
119
+ if (line.trim() === '')
120
+ continue;
121
+ try {
122
+ const row = JSON.parse(line);
123
+ if (typeof row.id !== 'string' || typeof row.created_at !== 'number')
124
+ continue;
125
+ if (filter?.type_filter !== undefined && row.type_filter !== filter.type_filter)
126
+ continue;
127
+ if (filter?.corpus !== undefined && row.corpus !== filter.corpus)
128
+ continue;
129
+ rows.push(row);
130
+ }
131
+ catch {
132
+ /* torn line — skip it, keep the history readable */
133
+ }
134
+ }
135
+ rows.reverse(); // file order is append order; the history answers newest first
136
+ return rows;
137
+ }
138
+ /** One run WITH its full results, or null when the id is unknown (or its detail file is gone). */
139
+ async get(id) {
140
+ // The `:id` route param is user-controlled: reject anything that is not a safe id token BEFORE
141
+ // it touches the filesystem, so an encoded separator / traversal id (`../…`, `%2e%2e%2f…`)
142
+ // can never escape the results dir to read an unintended `.json` (Copilot #467). Minted ids are
143
+ // hex; the `-` allows the test-shaped `run-1` ids — no `.`, `/`, or other path syntax gets through.
144
+ if (!EVAL_RUN_ID_RE.test(id))
145
+ return null;
146
+ let raw;
147
+ try {
148
+ raw = await readFile(this.detailPath(id), 'utf8');
149
+ }
150
+ catch (err) {
151
+ if (err.code === 'ENOENT')
152
+ return null;
153
+ this.warn(`[eval-store] could not read detail for ${id}: ${message(err)}`);
154
+ return null;
155
+ }
156
+ try {
157
+ const detail = JSON.parse(raw);
158
+ if (typeof detail.id !== 'string' || !Array.isArray(detail.results))
159
+ return null;
160
+ return detail;
161
+ }
162
+ catch {
163
+ return null;
164
+ }
165
+ }
166
+ detailPath(id) {
167
+ return join(this.resultsDir, `${id}.json`);
168
+ }
169
+ }
170
+ /** A safe eval-run id: the minted hex ids plus the `-`/`_` a test id uses — no path syntax. Used to
171
+ * reject a user-controlled `:id` before it reaches the filesystem (path-traversal guard). */
172
+ const EVAL_RUN_ID_RE = /^[A-Za-z0-9_-]+$/;
173
+ function message(err) {
174
+ return err instanceof Error ? err.message : String(err);
175
+ }
176
+ //# sourceMappingURL=eval-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-store.js","sourceRoot":"","sources":["../../src/api/eval-store.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ import { z } from 'zod';
24
24
  import { type CoreAdapter } from '../core/adapter.js';
25
25
  import type { Actor } from '../core/types.js';
26
26
  import type { AuditLog } from './audit.js';
27
+ import { type RunTimingIndex } from './run-timing-index.js';
27
28
  /**
28
29
  * The steering-type vocabulary (`wicked-crew-api-types::SteeringType`) — enum-as-string, the
29
30
  * engine's serde default is `architecture`. ONE spelling, exported: `api/routes.ts` reads it for
@@ -142,6 +143,10 @@ export interface SteeringRoutesDeps {
142
143
  }) => Actor;
143
144
  /** The default council roster for the authoring run (already parsed). */
144
145
  roster: () => unknown[];
146
+ /** The run→launch-time index (home command-center run metrics) — so the steering-author run's
147
+ * `run.launched` entry stamps `created_at` LIVE, not only after a restart re-hydrates the trail
148
+ * (Copilot #466). Optional so route-unit tests can omit it; `registerRoutes` always supplies it. */
149
+ runTimingIndex?: RunTimingIndex;
145
150
  }
146
151
  export declare function registerGovernanceSteeringRoutes(app: FastifyInstance, adapter: CoreAdapter, deps: SteeringRoutesDeps): void;
147
152
  //# sourceMappingURL=governance-steering.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"governance-steering.d.ts","sourceRoot":"","sources":["../../src/api/governance-steering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAE,KAAK,EAA6C,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK3C;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,0GAQvB,CAAC;AAEX,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAAiC,CAAC;AAEjF,0FAA0F;AAC1F,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AAEpD,mGAAmG;AACnG,eAAO,MAAM,wBAAwB,QAAa,CAAC;AACnD,gFAAgF;AAChF,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,4FAA4F;AAC5F,eAAO,MAAM,+BAA+B,QAAY,CAAC;AA0CzD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQtB,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYtB,CAAC;AAEZ;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQtD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,GAAG;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,KAAK,KAAK,CAAC;IAC5D,yEAAyE;IACzE,MAAM,EAAE,MAAM,OAAO,EAAE,CAAC;CACzB;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,kBAAkB,GACvB,IAAI,CAkNN"}
1
+ {"version":3,"file":"governance-steering.d.ts","sourceRoot":"","sources":["../../src/api/governance-steering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAE,KAAK,EAA6C,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK/E;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,0GAQvB,CAAC;AAEX,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAAiC,CAAC;AAEjF,0FAA0F;AAC1F,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AAEpD,mGAAmG;AACnG,eAAO,MAAM,wBAAwB,QAAa,CAAC;AACnD,gFAAgF;AAChF,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,4FAA4F;AAC5F,eAAO,MAAM,+BAA+B,QAAY,CAAC;AA0CzD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQtB,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYtB,CAAC;AAEZ;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQtD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,GAAG;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,KAAK,KAAK,CAAC;IAC5D,yEAAyE;IACzE,MAAM,EAAE,MAAM,OAAO,EAAE,CAAC;IACxB;;yGAEqG;IACrG,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,kBAAkB,GACvB,IAAI,CAgNN"}
@@ -24,6 +24,7 @@ import { existsSync, promises as fsp } from 'node:fs';
24
24
  import { basename, isAbsolute, join } from 'node:path';
25
25
  import { z } from 'zod';
26
26
  import { SteeringUnsupportedError } from '../core/adapter.js';
27
+ import { recordRunLaunched } from './run-timing-index.js';
27
28
  import { API_PREFIX } from './api-prefix.js';
28
29
  const V = API_PREFIX;
29
30
  /**
@@ -304,15 +305,13 @@ export function registerGovernanceSteeringRoutes(app, adapter, deps) {
304
305
  ...(b.repoRef !== undefined ? { repoRef: b.repoRef } : {}),
305
306
  });
306
307
  // The same trail entry POST /runs writes — this IS a run launch, findable by the same
307
- // `?action=run.launched` query — plus the steering detail the Steering header renders.
308
- audit.record('run.launched', actorOf(req), {
309
- runId,
310
- detail: {
311
- workflow: 'steering-author',
312
- steeringType: type,
313
- sources: sources.length,
314
- ...(b.repoRef !== undefined ? { repoRef: b.repoRef } : {}),
315
- },
308
+ // `?action=run.launched` query — plus the steering detail the Steering header renders; the
309
+ // shared helper stamps `created_at` from the SAME durable ts (Copilot #466).
310
+ recordRunLaunched(audit, deps.runTimingIndex, actorOf(req), runId, {
311
+ workflow: 'steering-author',
312
+ steeringType: type,
313
+ sources: sources.length,
314
+ ...(b.repoRef !== undefined ? { repoRef: b.repoRef } : {}),
316
315
  });
317
316
  return reply.code(201).send({ runId });
318
317
  }
@@ -1 +1 @@
1
- {"version":3,"file":"governance-steering.js","sourceRoot":"","sources":["../../src/api/governance-steering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"governance-steering.js","sourceRoot":"","sources":["../../src/api/governance-steering.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,14 @@ import { QeGateCache } from '../qe/gate-events.js';
7
7
  import type { ConformanceRule, SteeringType } from '../core/types.js';
8
8
  import { SeatHealthTracker } from './seat-health.js';
9
9
  import { type ProjectRoutesDeps } from '../projects/routes.js';
10
+ import type { EvalRunStore } from './eval-store.js';
10
11
  import { InteractiveBridgePool } from '../interactive/bridge-pool.js';
11
12
  import type { DocLedgerSweep } from '../interactive/doc-ledger-sweep.js';
12
13
  import { AuditLog } from './audit.js';
13
14
  import { type ErrorRing } from './diagnostics.js';
14
15
  import { RetryIndex } from './retry-index.js';
15
16
  import { GroupIndex } from './group-index.js';
17
+ import { RunTimingIndex } from './run-timing-index.js';
16
18
  import { GuidanceIndex } from './guidance-index.js';
17
19
  import { DeliveryIndex } from './delivery-index.js';
18
20
  import { DeliveryDerivationCache } from './delivery-cache.js';
@@ -248,6 +250,10 @@ export interface RuntimeDeps {
248
250
  * trail (the SAME `run.launched` scan as `retryIndex`) so attaches survive a restart; a
249
251
  * directly-driven route set gets a fresh one. */
250
252
  groupIndex?: GroupIndex;
253
+ /** Run→launch-time index (home command-center run metrics) — `createServer` hydrates one from
254
+ * the audit trail (the SAME `run.launched` scan as `retryIndex`) so a restarted daemon still
255
+ * echoes `AgentSession.created_at`; a directly-driven route set gets a fresh one. */
256
+ runTimingIndex?: RunTimingIndex;
251
257
  /** Run→operator-guidance index (CREW-UX-7) — `createServer` hydrates one from the audit trail
252
258
  * so a restarted daemon still echoes `guidance`; a directly-driven route set gets a fresh one. */
253
259
  guidanceIndex?: GuidanceIndex;
@@ -306,6 +312,11 @@ export interface RuntimeDeps {
306
312
  /** The studio asset root `createServer` resolved (bundled or overridden) — diagnostics reads
307
313
  * the bundle's shipped version manifest from it. Absent = headless = `studioBundle: null`. */
308
314
  studioRoot?: string;
315
+ /** The eval RUN history store behind `/testing/evals[/:id]` — `createServer` builds one over the
316
+ * daemon state home so every `POST /testing/evals/run` is recorded; a directly-driven route set
317
+ * (tests) gets one only when it injects it, so a test that never touches the eval routes writes
318
+ * nothing under `~/.wicked-crew`. */
319
+ evalStore?: EvalRunStore;
309
320
  }
310
321
  /**
311
322
  * The daemon REST surface. Every endpoint is a thin wrapper over one adapter /
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,7 @@ import { AuditLog } from './audit.js';
36
36
  import { AcpFoldCache, EngineVersionCache, eventsDirOf, installedPackageVersion, listStoreFiles, readStudioBundleVersion, } from './diagnostics.js';
37
37
  import { RetryIndex } from './retry-index.js';
38
38
  import { GroupIndex } from './group-index.js';
39
+ import { RunTimingIndex, recordRunLaunched } from './run-timing-index.js';
39
40
  import { GuidanceIndex } from './guidance-index.js';
40
41
  import { DeliveryIndex, gitRunBranchIsEmpty, gitWorktreeIsClean, isDeliverConflictStranded, prUrlFrom, } from './delivery-index.js';
41
42
  import { DeliveryDerivationCache } from './delivery-cache.js';
@@ -429,6 +430,7 @@ runtime = {}) {
429
430
  const signedIn = runtime.signedIn ?? signedInHeuristic;
430
431
  const retryIndex = runtime.retryIndex ?? new RetryIndex();
431
432
  const groupIndex = runtime.groupIndex ?? new GroupIndex();
433
+ const runTimingIndex = runtime.runTimingIndex ?? new RunTimingIndex();
432
434
  const guidanceIndex = runtime.guidanceIndex ?? new GuidanceIndex();
433
435
  const deliveryIndex = runtime.deliveryIndex ?? new DeliveryIndex();
434
436
  const worktreeExists = runtime.worktreeExists ?? ((p) => existsSync(p));
@@ -528,6 +530,13 @@ runtime = {}) {
528
530
  const guidance = guidanceIndex.guidanceFor(view.session.id);
529
531
  if (guidance !== undefined)
530
532
  view.session.guidance = guidance;
533
+ // Run launch time (home command-center run metrics): unix SECONDS from the `run.launched`
534
+ // audit entry, ABSENT when the daemon has no launch record for this run (onboarding/campaign
535
+ // runs launched off POST /runs, pre-field runs) — never fabricated, so a bucketed KPI can
536
+ // exclude an undated run rather than dating it with a false now.
537
+ const createdAt = runTimingIndex.createdAtFor(view.session.id);
538
+ if (createdAt !== undefined)
539
+ view.session.created_at = createdAt;
531
540
  const state = resolveDelivery(view, conflictStrand);
532
541
  view.session.delivery = state.delivery;
533
542
  if (state.deliverUrl !== undefined)
@@ -1003,24 +1012,29 @@ runtime = {}) {
1003
1012
  // Who launched it — the engine's LaunchOptions carries no actor field
1004
1013
  // (checked, wicked-core-ts 0.6.0), so the crew-side trail is the system
1005
1014
  // of record for run provenance (task #88).
1006
- audit.record('run.launched', actorOf(req), {
1007
- runId,
1008
- detail: {
1009
- ...(b.workflow !== undefined ? { workflow: b.workflow } : {}),
1010
- ...(b.repoRef !== undefined ? { repoRef: b.repoRef } : {}),
1011
- ...(b.projectId !== undefined ? { projectId: b.projectId } : {}),
1012
- // crew#393: the RESOLVED delivery decision, not just the caller's field — so the
1013
- // trail says what the run will actually do, and whether the daemon decided it.
1014
- deliver,
1015
- ...(deliverDefaulted ? { deliverDefaulted: true } : {}),
1016
- // CREW-UX-3: the trail is the durable record of lineage — the retry index (and a
1017
- // restarted daemon's hydrate) reads it back from exactly this entry.
1018
- ...(b.retryOf !== undefined ? { retryOf: b.retryOf } : {}),
1019
- // wicked-studio#27: the trail is likewise the durable record of the group attach —
1020
- // the group index (and a restarted daemon's hydrate) reads it back from here.
1021
- ...(b.campaignId !== undefined ? { campaignId: b.campaignId } : {}),
1022
- ...(b.groupLabel !== undefined ? { groupLabel: b.groupLabel } : {}),
1023
- },
1015
+ // `run.launched` is the system of record for run provenance (the engine's LaunchOptions
1016
+ // carries no actor field — task #88). `recordRunLaunched` writes the trail entry AND stamps
1017
+ // the run-timing index with the SAME durable `ts` (home command-center run metrics): the live
1018
+ // `created_at` equals what a restart rehydrates from the trail — no 1s drift, and no fabricated
1019
+ // value (audit disabled → nothing stamped → `created_at` ABSENT, the honest answer for a run
1020
+ // with no durable launch record). `createServer` always builds a REAL trail, so this fires on
1021
+ // every production launch. The SHARED helper (Copilot #466) is why the recon/steering-author
1022
+ // launchers stamp identically instead of leaving their runs undated until a restart.
1023
+ recordRunLaunched(audit, runTimingIndex, actorOf(req), runId, {
1024
+ ...(b.workflow !== undefined ? { workflow: b.workflow } : {}),
1025
+ ...(b.repoRef !== undefined ? { repoRef: b.repoRef } : {}),
1026
+ ...(b.projectId !== undefined ? { projectId: b.projectId } : {}),
1027
+ // crew#393: the RESOLVED delivery decision, not just the caller's field — so the
1028
+ // trail says what the run will actually do, and whether the daemon decided it.
1029
+ deliver,
1030
+ ...(deliverDefaulted ? { deliverDefaulted: true } : {}),
1031
+ // CREW-UX-3: the trail is the durable record of lineage — the retry index (and a
1032
+ // restarted daemon's hydrate) reads it back from exactly this entry.
1033
+ ...(b.retryOf !== undefined ? { retryOf: b.retryOf } : {}),
1034
+ // wicked-studio#27: the trail is likewise the durable record of the group attach —
1035
+ // the group index (and a restarted daemon's hydrate) reads it back from here.
1036
+ ...(b.campaignId !== undefined ? { campaignId: b.campaignId } : {}),
1037
+ ...(b.groupLabel !== undefined ? { groupLabel: b.groupLabel } : {}),
1024
1038
  });
1025
1039
  if (b.retryOf !== undefined)
1026
1040
  retryIndex.set(runId, b.retryOf);
@@ -3169,6 +3183,8 @@ runtime = {}) {
3169
3183
  audit,
3170
3184
  actorOf,
3171
3185
  roster: () => CoreAdapter.roster(),
3186
+ // So the steering-author run's `run.launched` entry stamps `created_at` live too (Copilot #466).
3187
+ runTimingIndex,
3172
3188
  });
3173
3189
  // ── Testing (crew-testing) — governance evals + eval corpora + the recon trigger ────────────
3174
3190
  // Run the evals (does the steering corpus catch what it claims to?) and import a named eval
@@ -3180,6 +3196,12 @@ runtime = {}) {
3180
3196
  actorOf,
3181
3197
  roster: () => CoreAdapter.roster(),
3182
3198
  projects: { bus: projects.bus, index: projects.index },
3199
+ // So the recon fan's `run.launched` entries stamp `created_at` live too (Copilot #466), not
3200
+ // just after a restart re-hydrates the trail.
3201
+ runTimingIndex,
3202
+ // The eval history store: `createServer` supplies a real one (state-home-rooted); a
3203
+ // directly-driven route set records nothing unless it injects one (no `~/.wicked-crew` writes).
3204
+ ...(runtime.evalStore !== undefined ? { evalStore: runtime.evalStore } : {}),
3183
3205
  });
3184
3206
  // ── The wicked-interactive bridge, reverse-proxied (DES-MERGE-001 §5.3/§7.2) ──
3185
3207
  // Mounted BESIDE the routes above and under the same `${V}` prefix, so it inherits one