@lanefoundry/source-prod-slice 0.0.0-canary-5535b4e → 0.0.0-stage

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit-export.js","sourceRoot":"","sources":["../src/audit-export.ts"],"names":[],"mappings":"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"}
@@ -1,150 +0,0 @@
1
- /**
2
- * canary-orchestrator.ts — Canary state machine: 10% → 24h observe → promote 100% or rollback.
3
- *
4
- * Manages the canary lifecycle with D1 persistence for durability.
5
- * States: pending → canary → observing → promoting → promoted | rolled_back | failed
6
- *
7
- * @see docs/prd.md §5.1 — The gate (auto_block_rule)
8
- */
9
- import type { PromotionReport, PromotionDecision, PromotionPolicy } from '@lanefoundry/gatelane-sdk/promotion';
10
- import type { D1DatabaseLike } from '@lanefoundry/gatelane-sdk';
11
- /** Canary deployment state. */
12
- export type CanaryState = 'pending' | 'canary' | 'observing' | 'promoting' | 'promoted' | 'rolled_back' | 'failed';
13
- /** Canary deployment record (persisted in D1). */
14
- export type CanaryRecord = {
15
- /** Unique canary deployment ID. */
16
- id: string;
17
- /** Gate run ID that produced the promotion decision. */
18
- gateRunId: string;
19
- /** Winner candidate reference. */
20
- candidateRef: string;
21
- /** Current state. */
22
- state: CanaryState;
23
- /** Canary traffic percentage (0-100). */
24
- trafficPercent: number;
25
- /** When the canary was started. */
26
- startedAt: string;
27
- /** When the observation window ends (ISO 8601). */
28
- observationEndsAt?: string;
29
- /** When the canary was completed (promoted/rolled_back). */
30
- completedAt?: string;
31
- /** Auto-rollback rule from policy. */
32
- autoRollbackRule?: PromotionPolicy['auto_block_rule'];
33
- /** Metric observations during canary. */
34
- observations: CanaryObservation[];
35
- /** Error message if failed. */
36
- error?: string;
37
- /** The original PromotionReport. */
38
- report: PromotionReport;
39
- /** The original PromotionDecision. */
40
- decision: PromotionDecision;
41
- };
42
- /** Single metric observation during canary. */
43
- export type CanaryObservation = {
44
- timestamp: string;
45
- /** Metric name (e.g., 'error_rate', 'latency_p99', 'cost_per_1k'). */
46
- metric: string;
47
- /** Current value. */
48
- value: number;
49
- /** Baseline value for comparison. */
50
- baseline: number;
51
- /** Delta from baseline (value - baseline) / baseline. */
52
- delta: number;
53
- };
54
- /** Arguments for starting a canary. */
55
- export type StartCanaryArgs = {
56
- /** Gate run ID from the promotion report. */
57
- gateRunId: string;
58
- /** The winning candidate reference. */
59
- candidateRef: string;
60
- /** The signed PromotionReport. */
61
- report: PromotionReport;
62
- /** The PromotionDecision (must be 'pass'). */
63
- decision: PromotionDecision;
64
- /** Initial canary traffic percentage. Default: 10. */
65
- initialTrafficPercent?: number;
66
- /** Custom observation window. Default: from policy.auto_block_rule.window or "24h". */
67
- observationWindow?: string;
68
- };
69
- /** Result of canary operations. */
70
- export type CanaryResult = {
71
- /** The canary record. */
72
- record: CanaryRecord;
73
- /** Whether the operation advanced the state. */
74
- advanced: boolean;
75
- };
76
- /** D1 storage interface for canary persistence. */
77
- export interface CanaryStorage {
78
- /** Create a new canary record. */
79
- create(record: CanaryRecord): Promise<void>;
80
- /** Read a canary record by ID. */
81
- read(id: string): Promise<CanaryRecord | null>;
82
- /** Update an existing canary record. */
83
- update(record: CanaryRecord): Promise<void>;
84
- /** List canary records (optionally filtered by state). */
85
- list(filter?: {
86
- state?: CanaryState;
87
- limit?: number;
88
- }): Promise<ReadonlyArray<CanaryRecord>>;
89
- }
90
- /** In-memory storage for tests / local dev. */
91
- export declare class InMemoryCanaryStorage implements CanaryStorage {
92
- #private;
93
- create(record: CanaryRecord): Promise<void>;
94
- read(id: string): Promise<CanaryRecord | null>;
95
- update(record: CanaryRecord): Promise<void>;
96
- list(filter?: {
97
- state?: CanaryState;
98
- limit?: number;
99
- }): Promise<ReadonlyArray<CanaryRecord>>;
100
- }
101
- /** Replace the active canary storage. Returns previous for test restoration. */
102
- export declare function setCanaryStorage(storage: CanaryStorage): CanaryStorage;
103
- /** Get the active canary storage. */
104
- export declare function getCanaryStorage(): CanaryStorage;
105
- /**
106
- * Start a new canary deployment.
107
- * Creates the record in 'canary' state with 10% traffic.
108
- */
109
- export declare function startCanary(args: StartCanaryArgs): Promise<CanaryResult>;
110
- /**
111
- * Record a metric observation for a canary.
112
- * Checks auto-rollback rule and transitions to rolled_back if triggered.
113
- */
114
- export declare function recordObservation(canaryId: string, metric: string, value: number, baseline: number): Promise<CanaryResult>;
115
- /**
116
- * Advance the canary state machine.
117
- * canary -> observing -> promoting -> promoted
118
- */
119
- export declare function advanceCanary(canaryId: string): Promise<CanaryResult>;
120
- /**
121
- * Manually rollback a canary.
122
- */
123
- export declare function rollbackCanary(canaryId: string, reason: string): Promise<CanaryResult>;
124
- /**
125
- * Mark a canary as failed (e.g., deployment error).
126
- */
127
- export declare function failCanary(canaryId: string, error: string): Promise<CanaryResult>;
128
- /**
129
- * Get all canaries that need observation window checks.
130
- * Useful for a cron job that periodically calls advanceCanary.
131
- */
132
- export declare function getActiveCanaries(): Promise<ReadonlyArray<CanaryRecord>>;
133
- /**
134
- * Check and advance all active canaries.
135
- * Returns records that changed state.
136
- */
137
- export declare function tickCanaries(): Promise<ReadonlyArray<CanaryRecord>>;
138
- export declare class D1CanaryStorage implements CanaryStorage {
139
- private readonly db;
140
- constructor(db: D1DatabaseLike);
141
- create(record: CanaryRecord): Promise<void>;
142
- read(id: string): Promise<CanaryRecord | null>;
143
- update(record: CanaryRecord): Promise<void>;
144
- list(filter?: {
145
- state?: CanaryState;
146
- limit?: number;
147
- }): Promise<ReadonlyArray<CanaryRecord>>;
148
- private rowToRecord;
149
- }
150
- //# sourceMappingURL=canary-orchestrator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"canary-orchestrator.d.ts","sourceRoot":"","sources":["../src/canary-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,274 +0,0 @@
1
- /**
2
- * canary-orchestrator.ts — Canary state machine: 10% → 24h observe → promote 100% or rollback.
3
- *
4
- * Manages the canary lifecycle with D1 persistence for durability.
5
- * States: pending → canary → observing → promoting → promoted | rolled_back | failed
6
- *
7
- * @see docs/prd.md §5.1 — The gate (auto_block_rule)
8
- */
9
- /** In-memory storage for tests / local dev. */
10
- export class InMemoryCanaryStorage {
11
- #records = new Map();
12
- async create(record) {
13
- this.#records.set(record.id, record);
14
- }
15
- async read(id) {
16
- return this.#records.get(id) ?? null;
17
- }
18
- async update(record) {
19
- this.#records.set(record.id, record);
20
- }
21
- async list(filter) {
22
- let out = Array.from(this.#records.values());
23
- if (filter?.state) {
24
- out = out.filter((r) => r.state === filter.state);
25
- }
26
- out.sort((a, b) => Date.parse(b.startedAt) - Date.parse(a.startedAt));
27
- if (filter?.limit) {
28
- out = out.slice(0, filter.limit);
29
- }
30
- return out;
31
- }
32
- }
33
- /** Active canary storage (singleton for simplicity). */
34
- let activeCanaryStorage = new InMemoryCanaryStorage();
35
- /** Replace the active canary storage. Returns previous for test restoration. */
36
- export function setCanaryStorage(storage) {
37
- const prev = activeCanaryStorage;
38
- activeCanaryStorage = storage;
39
- return prev;
40
- }
41
- /** Get the active canary storage. */
42
- export function getCanaryStorage() {
43
- return activeCanaryStorage;
44
- }
45
- /** Parse a window string like "24h" into milliseconds. */
46
- function parseWindow(window) {
47
- const match = window.match(/^(\d+)([smhd])$/);
48
- if (!match || !match[1] || !match[2])
49
- throw new Error(`Invalid window format: ${window} (expected e.g., "24h")`);
50
- const value = parseInt(match[1], 10);
51
- const unit = match[2];
52
- const multipliers = { s: 1000, m: 60_000, h: 3_600_000, d: 86_400_000 };
53
- return value * multipliers[unit];
54
- }
55
- /** Generate a canary ID. */
56
- function generateCanaryId() {
57
- return `canary-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
58
- }
59
- /**
60
- * Start a new canary deployment.
61
- * Creates the record in 'canary' state with 10% traffic.
62
- */
63
- export async function startCanary(args) {
64
- const { gateRunId, candidateRef, report, decision, initialTrafficPercent = 10, observationWindow, } = args;
65
- if (decision.action !== 'pass') {
66
- throw new Error(`Cannot start canary: decision action is '${decision.action}', expected 'pass'`);
67
- }
68
- const autoRollbackRule = report.policy.auto_block_rule;
69
- const window = observationWindow ?? autoRollbackRule?.window ?? '24h';
70
- const windowMs = parseWindow(window);
71
- const now = new Date();
72
- const observationEndsAt = new Date(now.getTime() + windowMs).toISOString();
73
- const record = {
74
- id: generateCanaryId(),
75
- gateRunId,
76
- candidateRef,
77
- state: 'canary',
78
- trafficPercent: initialTrafficPercent,
79
- startedAt: now.toISOString(),
80
- observationEndsAt,
81
- autoRollbackRule,
82
- observations: [],
83
- report,
84
- decision,
85
- };
86
- await activeCanaryStorage.create(record);
87
- // Advance to observing state
88
- return advanceCanary(record.id);
89
- }
90
- /**
91
- * Record a metric observation for a canary.
92
- * Checks auto-rollback rule and transitions to rolled_back if triggered.
93
- */
94
- export async function recordObservation(canaryId, metric, value, baseline) {
95
- const record = await activeCanaryStorage.read(canaryId);
96
- if (!record)
97
- throw new Error(`Canary not found: ${canaryId}`);
98
- if (record.state !== 'observing' && record.state !== 'canary') {
99
- throw new Error(`Cannot record observation: canary in state '${record.state}'`);
100
- }
101
- const delta = baseline === 0 ? 0 : (value - baseline) / baseline;
102
- const observation = {
103
- timestamp: new Date().toISOString(),
104
- metric,
105
- value,
106
- baseline,
107
- delta,
108
- };
109
- record.observations.push(observation);
110
- // Check auto-rollback
111
- if (record.autoRollbackRule && delta <= -record.autoRollbackRule.metric_drop) {
112
- record.state = 'rolled_back';
113
- record.completedAt = new Date().toISOString();
114
- record.error = `Auto-rollback triggered: ${metric} delta ${delta.toFixed(2)} <= -${record.autoRollbackRule.metric_drop}`;
115
- await activeCanaryStorage.update(record);
116
- return { record, advanced: true };
117
- }
118
- await activeCanaryStorage.update(record);
119
- return { record, advanced: false };
120
- }
121
- /**
122
- * Advance the canary state machine.
123
- * canary -> observing -> promoting -> promoted
124
- */
125
- export async function advanceCanary(canaryId) {
126
- const record = await activeCanaryStorage.read(canaryId);
127
- if (!record)
128
- throw new Error(`Canary not found: ${canaryId}`);
129
- const now = new Date();
130
- switch (record.state) {
131
- case 'pending':
132
- case 'canary': {
133
- // Move to observing, set observation window
134
- record.state = 'observing';
135
- if (!record.observationEndsAt) {
136
- const window = record.autoRollbackRule?.window ?? '24h';
137
- record.observationEndsAt = new Date(now.getTime() + parseWindow(window)).toISOString();
138
- }
139
- break;
140
- }
141
- case 'observing': {
142
- // Check if observation window has elapsed
143
- const endsAt = record.observationEndsAt ? Date.parse(record.observationEndsAt) : 0;
144
- if (now.getTime() < endsAt) {
145
- return { record, advanced: false }; // Still observing
146
- }
147
- // Window elapsed, start promoting
148
- record.state = 'promoting';
149
- record.trafficPercent = 100;
150
- break;
151
- }
152
- case 'promoting': {
153
- // Promote to 100%
154
- record.state = 'promoted';
155
- record.trafficPercent = 100;
156
- record.completedAt = now.toISOString();
157
- break;
158
- }
159
- case 'promoted':
160
- case 'rolled_back':
161
- case 'failed': {
162
- // Terminal states - no advancement
163
- return { record, advanced: false };
164
- }
165
- }
166
- await activeCanaryStorage.update(record);
167
- return { record, advanced: true };
168
- }
169
- /**
170
- * Manually rollback a canary.
171
- */
172
- export async function rollbackCanary(canaryId, reason) {
173
- const record = await activeCanaryStorage.read(canaryId);
174
- if (!record)
175
- throw new Error(`Canary not found: ${canaryId}`);
176
- if (record.state === 'promoted' || record.state === 'rolled_back') {
177
- throw new Error(`Cannot rollback: canary already in terminal state '${record.state}'`);
178
- }
179
- record.state = 'rolled_back';
180
- record.completedAt = new Date().toISOString();
181
- record.error = `Manual rollback: ${reason}`;
182
- record.trafficPercent = 0;
183
- await activeCanaryStorage.update(record);
184
- return { record, advanced: true };
185
- }
186
- /**
187
- * Mark a canary as failed (e.g., deployment error).
188
- */
189
- export async function failCanary(canaryId, error) {
190
- const record = await activeCanaryStorage.read(canaryId);
191
- if (!record)
192
- throw new Error(`Canary not found: ${canaryId}`);
193
- record.state = 'failed';
194
- record.completedAt = new Date().toISOString();
195
- record.error = error;
196
- await activeCanaryStorage.update(record);
197
- return { record, advanced: true };
198
- }
199
- /**
200
- * Get all canaries that need observation window checks.
201
- * Useful for a cron job that periodically calls advanceCanary.
202
- */
203
- export async function getActiveCanaries() {
204
- return activeCanaryStorage.list({ state: 'observing' });
205
- }
206
- /**
207
- * Check and advance all active canaries.
208
- * Returns records that changed state.
209
- */
210
- export async function tickCanaries() {
211
- const active = await getActiveCanaries();
212
- const changed = [];
213
- for (const record of active) {
214
- const result = await advanceCanary(record.id);
215
- if (result.advanced) {
216
- changed.push(result.record);
217
- }
218
- }
219
- return changed;
220
- }
221
- export class D1CanaryStorage {
222
- db;
223
- constructor(db) {
224
- this.db = db;
225
- }
226
- async create(record) {
227
- await this.db.prepare(`INSERT INTO canary_deployments (id, gate_run_id, candidate_ref, state, traffic_percent, started_at, observation_ends_at, auto_block_rule, observations, report, decision)
228
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).bind(record.id, record.gateRunId, record.candidateRef, record.state, record.trafficPercent, record.startedAt, record.observationEndsAt ?? null, record.autoRollbackRule ? JSON.stringify(record.autoRollbackRule) : null, JSON.stringify(record.observations), JSON.stringify(record.report), JSON.stringify(record.decision)).run();
229
- }
230
- async read(id) {
231
- const row = await this.db.prepare('SELECT * FROM canary_deployments WHERE id = ?').bind(id).first();
232
- if (!row)
233
- return null;
234
- return this.rowToRecord(row);
235
- }
236
- async update(record) {
237
- await this.db.prepare(`UPDATE canary_deployments SET
238
- state = ?, traffic_percent = ?, observation_ends_at = ?, completed_at = ?, error = ?,
239
- observations = ?, report = ?, decision = ?
240
- WHERE id = ?`).bind(record.state, record.trafficPercent, record.observationEndsAt ?? null, record.completedAt ?? null, record.error ?? null, JSON.stringify(record.observations), JSON.stringify(record.report), JSON.stringify(record.decision), record.id).run();
241
- }
242
- async list(filter) {
243
- let sql = 'SELECT * FROM canary_deployments';
244
- const params = [];
245
- if (filter?.state) {
246
- sql += ' WHERE state = ?';
247
- params.push(filter.state);
248
- }
249
- sql += ' ORDER BY started_at DESC';
250
- if (filter?.limit) {
251
- sql += ' LIMIT ?';
252
- }
253
- const { results } = await this.db.prepare(sql).bind(...params).all();
254
- return (results ?? []).map((row) => this.rowToRecord(row));
255
- }
256
- rowToRecord(row) {
257
- return {
258
- id: row.id,
259
- gateRunId: row.gate_run_id,
260
- candidateRef: row.candidate_ref,
261
- state: row.state,
262
- trafficPercent: row.traffic_percent,
263
- startedAt: row.started_at,
264
- observationEndsAt: row.observation_ends_at ?? undefined,
265
- completedAt: row.completed_at ?? undefined,
266
- autoRollbackRule: row.auto_block_rule ? JSON.parse(row.auto_block_rule) : undefined,
267
- observations: JSON.parse(row.observations),
268
- error: row.error ?? undefined,
269
- report: JSON.parse(row.report),
270
- decision: JSON.parse(row.decision),
271
- };
272
- }
273
- }
274
- //# sourceMappingURL=canary-orchestrator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"canary-orchestrator.js","sourceRoot":"","sources":["../src/canary-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- /**
2
- * compare-scores.ts — Compute Δ vs baseline + judge stability matrix.
3
- *
4
- * Reuses engine's compare() and judge aggregation to produce per-candidate
5
- * metrics and the judge stability matrix used for promotion decisions.
6
- *
7
- * @see docs/prd.md §5.1 — The gate
8
- */
9
- import type { JudgeStabilityMatrix } from '@lanefoundry/gatelane-sdk';
10
- import type { ReplayResult } from '@lanefoundry/gatelane-engine';
11
- import type { JudgeVerdict } from '@lanefoundry/gatelane-engine';
12
- import { type CandidateMetric } from '@lanefoundry/gatelane-engine';
13
- /** Input for score comparison. */
14
- export type CompareScoresArgs = {
15
- /** Replay results from replayBatch(). */
16
- replayResults: Record<string, ReplayResult>;
17
- /** Judge verdicts (from LLMJudge or mock). */
18
- verdicts: ReadonlyArray<JudgeVerdict>;
19
- /** Baseline candidate ref (optional; if absent, baseline metrics = 0). */
20
- baselineRef?: string;
21
- };
22
- /** Output of score comparison. */
23
- export type CompareScoresResult = {
24
- /** Per-candidate metrics with deltas vs baseline. */
25
- perCandidate: Record<string, CandidateMetric>;
26
- /** Judge stability matrix showing consensus winners. */
27
- judgeMatrix: JudgeStabilityMatrix;
28
- /** Summary for quick inspection. */
29
- summary: {
30
- candidates: ReadonlyArray<string>;
31
- bestCandidate: string;
32
- bestAggregateDelta: number;
33
- consensusWinners: ReadonlyArray<string>;
34
- };
35
- };
36
- /**
37
- * Compare replay results against judge verdicts to compute metrics and stability.
38
- *
39
- * This wraps the engine's compare() and adds:
40
- * - Input from replayBatch() output format (per-candidate ReplayResult)
41
- * - Flattened per-candidate verdict aggregation
42
- * - Summary with best candidate identification
43
- */
44
- export declare function compareScores(args: CompareScoresArgs): CompareScoresResult;
45
- /**
46
- * Compare scores for a single candidate against existing baseline.
47
- * Useful for incremental gate runs.
48
- */
49
- export declare function compareSingle(replayResults: Record<string, ReplayResult>, verdicts: ReadonlyArray<JudgeVerdict>, candidateRef: string, baselineRef?: string): CandidateMetric;
50
- /**
51
- * Compute judge stability matrix directly from verdicts (without replay data).
52
- * Useful for analyzing judge agreement in isolation.
53
- */
54
- export declare function computeJudgeStability(verdicts: ReadonlyArray<JudgeVerdict>, candidates: ReadonlyArray<string>, judgeStabilityThreshold: number): JudgeStabilityMatrix;
55
- //# sourceMappingURL=compare-scores.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compare-scores.d.ts","sourceRoot":"","sources":["../src/compare-scores.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAW,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE7E,kCAAkC;AAClC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC5C,8CAA8C;IAC9C,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACtC,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,mBAAmB,GAAG;IAChC,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9C,wDAAwD;IACxD,WAAW,EAAE,oBAAoB,CAAC;IAClC,oCAAoC;IACpC,OAAO,EAAE;QACP,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,aAAa,EAAE,MAAM,CAAC;QACtB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;KACzC,CAAC;CACH,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,mBAAmB,CAwD1E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAC3C,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,CAOjB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,EACjC,uBAAuB,EAAE,MAAM,GAC9B,oBAAoB,CAmDtB"}
@@ -1,131 +0,0 @@
1
- /**
2
- * compare-scores.ts — Compute Δ vs baseline + judge stability matrix.
3
- *
4
- * Reuses engine's compare() and judge aggregation to produce per-candidate
5
- * metrics and the judge stability matrix used for promotion decisions.
6
- *
7
- * @see docs/prd.md §5.1 — The gate
8
- */
9
- import { compare } from '@lanefoundry/gatelane-engine';
10
- /**
11
- * Compare replay results against judge verdicts to compute metrics and stability.
12
- *
13
- * This wraps the engine's compare() and adds:
14
- * - Input from replayBatch() output format (per-candidate ReplayResult)
15
- * - Flattened per-candidate verdict aggregation
16
- * - Summary with best candidate identification
17
- */
18
- export function compareScores(args) {
19
- const { replayResults, verdicts, baselineRef } = args;
20
- // Build a combined ReplayResult from per-candidate results
21
- const allRows = [];
22
- let totalCostUsd = 0;
23
- let totalLatencyMs = 0;
24
- const candidates = Object.keys(replayResults);
25
- for (const [candidateRef, result] of Object.entries(replayResults)) {
26
- // Tag each row with its candidate_ref for compare()
27
- for (const row of result.rows) {
28
- allRows.push({ ...row, candidate_ref: candidateRef });
29
- }
30
- totalCostUsd += result.total_cost_usd;
31
- totalLatencyMs += result.total_latency_ms;
32
- }
33
- const combinedReplay = {
34
- rows: allRows,
35
- determinism_score: candidates.length > 0
36
- ? Object.values(replayResults).reduce((sum, r) => sum + r.determinism_score, 0) / candidates.length
37
- : 0,
38
- total_cost_usd: totalCostUsd,
39
- total_latency_ms: totalLatencyMs,
40
- };
41
- // Run engine compare
42
- const { perCandidate, judgeMatrix } = compare({
43
- replay: combinedReplay,
44
- verdicts,
45
- baseline_ref: baselineRef,
46
- });
47
- // Build summary
48
- const candidateMetrics = Object.entries(perCandidate);
49
- let bestCandidate = '';
50
- let bestDelta = -Infinity;
51
- for (const [ref, metric] of candidateMetrics) {
52
- if (metric.aggregate_delta > bestDelta) {
53
- bestDelta = metric.aggregate_delta;
54
- bestCandidate = ref;
55
- }
56
- }
57
- const bestAggregateDelta = bestCandidate ? bestDelta : 0;
58
- return {
59
- perCandidate,
60
- judgeMatrix,
61
- summary: {
62
- candidates,
63
- bestCandidate,
64
- bestAggregateDelta,
65
- consensusWinners: judgeMatrix.consensus_winners,
66
- },
67
- };
68
- }
69
- /**
70
- * Compare scores for a single candidate against existing baseline.
71
- * Useful for incremental gate runs.
72
- */
73
- export function compareSingle(replayResults, verdicts, candidateRef, baselineRef) {
74
- const result = compareScores({ replayResults, verdicts, baselineRef });
75
- const metric = result.perCandidate[candidateRef];
76
- if (!metric) {
77
- throw new Error(`Candidate not found: ${candidateRef}`);
78
- }
79
- return metric;
80
- }
81
- /**
82
- * Compute judge stability matrix directly from verdicts (without replay data).
83
- * Useful for analyzing judge agreement in isolation.
84
- */
85
- export function computeJudgeStability(verdicts, candidates, judgeStabilityThreshold) {
86
- const judges = Array.from(new Set(verdicts.map((v) => v.judge_ref))).sort();
87
- // winners_by_judge[candidate] = count of judges that picked this candidate as winner
88
- const winners_by_judge = {};
89
- for (const candidate of candidates) {
90
- winners_by_judge[candidate] = 0;
91
- }
92
- // For each judge, determine their top candidate
93
- for (const judge of judges) {
94
- const judgeVerdicts = verdicts.filter((v) => v.judge_ref === judge);
95
- if (judgeVerdicts.length === 0)
96
- continue;
97
- // Average score per candidate for this judge
98
- const scores = {};
99
- for (const v of judgeVerdicts) {
100
- const existing = scores[v.candidate_ref] ?? { sum: 0, count: 0 };
101
- existing.sum += v.score;
102
- existing.count += 1;
103
- scores[v.candidate_ref] = existing;
104
- }
105
- let bestRef = '';
106
- let bestScore = -1;
107
- for (const [ref, { sum, count }] of Object.entries(scores)) {
108
- const avg = sum / count;
109
- if (avg > bestScore) {
110
- bestScore = avg;
111
- bestRef = ref;
112
- }
113
- }
114
- if (bestRef) {
115
- winners_by_judge[bestRef] = (winners_by_judge[bestRef] ?? 0) + 1;
116
- }
117
- }
118
- // Consensus winners: candidates winning under >= threshold * judges.length judges
119
- const minWins = Math.ceil(judgeStabilityThreshold * judges.length);
120
- const consensus_winners = Object.entries(winners_by_judge)
121
- .filter(([, wins]) => wins >= minWins)
122
- .map(([ref]) => ref)
123
- .sort();
124
- return {
125
- candidates,
126
- judges,
127
- winners_by_judge,
128
- consensus_winners,
129
- };
130
- }
131
- //# sourceMappingURL=compare-scores.js.map