wicked-crew 0.7.23 → 0.7.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/audit.d.ts +4 -1
- package/dist/api/audit.d.ts.map +1 -1
- package/dist/api/audit.js +5 -1
- package/dist/api/audit.js.map +1 -1
- package/dist/api/eval-store.d.ts +85 -0
- package/dist/api/eval-store.d.ts.map +1 -0
- package/dist/api/eval-store.js +176 -0
- package/dist/api/eval-store.js.map +1 -0
- package/dist/api/governance-steering.d.ts +5 -0
- package/dist/api/governance-steering.d.ts.map +1 -1
- package/dist/api/governance-steering.js +8 -9
- package/dist/api/governance-steering.js.map +1 -1
- package/dist/api/routes.d.ts +11 -0
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +40 -18
- package/dist/api/routes.js.map +1 -1
- package/dist/api/run-timing-index.d.ts +54 -0
- package/dist/api/run-timing-index.d.ts.map +1 -0
- package/dist/api/run-timing-index.js +82 -0
- package/dist/api/run-timing-index.js.map +1 -0
- package/dist/api/server.d.ts +4 -0
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +15 -1
- package/dist/api/server.js.map +1 -1
- package/dist/api/testing.d.ts +17 -1
- package/dist/api/testing.d.ts.map +1 -1
- package/dist/api/testing.js +93 -22
- package/dist/api/testing.js.map +1 -1
- package/dist/studio/assets/index-BmXt63Ij.js +537 -0
- package/dist/studio/assets/index-eso7X_3n.css +32 -0
- package/dist/studio/index.html +2 -2
- package/dist/studio/testid-inventory.json +259 -132
- package/endpoint-manifest.json +20 -1
- package/package.json +2 -2
- package/dist/studio/assets/index-CoitSgeY.css +0 -32
- package/dist/studio/assets/index-EwAn7t8P.js +0 -537
package/dist/api/audit.d.ts
CHANGED
|
@@ -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
|
-
}):
|
|
60
|
+
}): number;
|
|
58
61
|
/** Await every append issued so far. */
|
|
59
62
|
flush(): Promise<void>;
|
|
60
63
|
/**
|
package/dist/api/audit.d.ts.map
CHANGED
|
@@ -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,
|
|
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() {
|
package/dist/api/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/api/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACnE,OAAO,GAAG,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;AAC5E,CAAC;AAYD,MAAM,OAAO,QAAQ;IAMR;IACQ;IANX,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IACzC,QAAQ,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,KAAK,CAAC;IAEzB,YACW,OAAe,gBAAgB,EAAE,EACzB,OAA8B,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAD5D,SAAI,GAAJ,IAAI,CAA6B;QACzB,SAAI,GAAJ,IAAI,CAAgD;IACpE,CAAC;IAEJ;;;;;;OAMG;IACH,MAAM,CAAC,IAAI;QACT,MAAM,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;QACpB,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAc,EAAE,KAAY,EAAE,MAA6D;QAChG,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;
|
|
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;
|
|
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
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
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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"}
|
package/dist/api/routes.d.ts
CHANGED
|
@@ -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 /
|
package/dist/api/routes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,OAAO,EAAmD,WAAW,EAA4E,MAAM,oBAAoB,CAAC;AAG5K,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAInD,OAAO,KAAK,EAEV,eAAe,EAYf,YAAY,EACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAWrD,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/api/routes.js
CHANGED
|
@@ -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
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
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
|