@substrate-ai/sdlc 0.20.8 → 0.20.12
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/run-model/run-manifest.d.ts +39 -1
- package/dist/run-model/run-manifest.d.ts.map +1 -1
- package/dist/run-model/run-manifest.js +98 -41
- package/dist/run-model/run-manifest.js.map +1 -1
- package/dist/verification/index.d.ts +1 -0
- package/dist/verification/index.d.ts.map +1 -1
- package/dist/verification/index.js +2 -0
- package/dist/verification/index.js.map +1 -1
- package/dist/verification/probes/parser.d.ts.map +1 -1
- package/dist/verification/probes/parser.js +34 -2
- package/dist/verification/probes/parser.js.map +1 -1
- package/dist/verification/source-ac-fidelity-check.d.ts +22 -0
- package/dist/verification/source-ac-fidelity-check.d.ts.map +1 -0
- package/dist/verification/source-ac-fidelity-check.js +151 -0
- package/dist/verification/source-ac-fidelity-check.js.map +1 -0
- package/dist/verification/types.d.ts +9 -0
- package/dist/verification/types.d.ts.map +1 -1
- package/dist/verification/verification-pipeline.d.ts +7 -5
- package/dist/verification/verification-pipeline.d.ts.map +1 -1
- package/dist/verification/verification-pipeline.js +9 -5
- package/dist/verification/verification-pipeline.js.map +1 -1
- package/package.json +2 -2
|
@@ -32,6 +32,11 @@ export declare class RunManifest {
|
|
|
32
32
|
readonly baseDir: string;
|
|
33
33
|
/** Optional Dolt adapter for degraded-mode fallback on read. */
|
|
34
34
|
private doltAdapter;
|
|
35
|
+
/**
|
|
36
|
+
* Serializes all write operations on this instance to prevent lost-update races.
|
|
37
|
+
* Initialized to a resolved promise; each enqueued operation chains off the tail.
|
|
38
|
+
*/
|
|
39
|
+
private _writeChain;
|
|
35
40
|
constructor(runId: string, baseDir?: string, doltAdapter?: IDoltAdapter | null);
|
|
36
41
|
get primaryPath(): string;
|
|
37
42
|
get bakPath(): string;
|
|
@@ -59,7 +64,18 @@ export declare class RunManifest {
|
|
|
59
64
|
*/
|
|
60
65
|
update(partial: Partial<Omit<RunManifestData, 'generation' | 'updated_at'>>): Promise<void>;
|
|
61
66
|
/**
|
|
62
|
-
*
|
|
67
|
+
* Append `fn` to the per-instance write chain so all write operations execute
|
|
68
|
+
* strictly sequentially, preventing lost-update races on concurrent callers.
|
|
69
|
+
*
|
|
70
|
+
* The chain itself never rejects (errors are swallowed on the chain side);
|
|
71
|
+
* the returned promise resolves or rejects exactly when `fn` settles, so
|
|
72
|
+
* fire-and-forget `.catch()` callers still receive failure signals.
|
|
73
|
+
*/
|
|
74
|
+
private _enqueue;
|
|
75
|
+
/**
|
|
76
|
+
* Raw implementation of the atomic manifest write.
|
|
77
|
+
* Must only be called from within an `_enqueue`-d function to maintain
|
|
78
|
+
* the serialization invariant.
|
|
63
79
|
*
|
|
64
80
|
* Sequence:
|
|
65
81
|
* 1. Auto-increment `generation`, set `updated_at`
|
|
@@ -69,6 +85,13 @@ export declare class RunManifest {
|
|
|
69
85
|
* 5. If primary exists, copy to `.bak`
|
|
70
86
|
* 6. Rename `.tmp` → primary path
|
|
71
87
|
*/
|
|
88
|
+
private _writeImpl;
|
|
89
|
+
/**
|
|
90
|
+
* Atomically write the manifest to disk.
|
|
91
|
+
*
|
|
92
|
+
* Enqueues the write via `_enqueue` so concurrent calls are serialized.
|
|
93
|
+
* The returned promise resolves when this call's write completes.
|
|
94
|
+
*/
|
|
72
95
|
write(data: Omit<RunManifestData, 'generation' | 'updated_at'>): Promise<void>;
|
|
73
96
|
/**
|
|
74
97
|
* Return a bound `RunManifest` instance without performing any file I/O.
|
|
@@ -81,14 +104,23 @@ export declare class RunManifest {
|
|
|
81
104
|
* ```
|
|
82
105
|
*/
|
|
83
106
|
static open(runId: string, baseDir?: string, doltAdapter?: IDoltAdapter | null): RunManifest;
|
|
107
|
+
/**
|
|
108
|
+
* Raw implementation — must only be called from within `_enqueue`.
|
|
109
|
+
*/
|
|
110
|
+
private _patchCLIFlagsImpl;
|
|
84
111
|
/**
|
|
85
112
|
* Read the current manifest (or create a minimal default), merge the provided
|
|
86
113
|
* CLI flags into `cli_flags`, and write the result atomically.
|
|
87
114
|
*
|
|
115
|
+
* Enqueues the operation via `_enqueue` so concurrent calls are serialized.
|
|
88
116
|
* Non-fatal: callers should wrap in try/catch and log a warning on failure.
|
|
89
117
|
* The pipeline must not abort if manifest write fails.
|
|
90
118
|
*/
|
|
91
119
|
patchCLIFlags(flags: CliFlags): Promise<void>;
|
|
120
|
+
/**
|
|
121
|
+
* Raw implementation — must only be called from within `_enqueue`.
|
|
122
|
+
*/
|
|
123
|
+
private _patchStoryStateImpl;
|
|
92
124
|
/**
|
|
93
125
|
* Atomically upsert the per-story lifecycle state for a single story key.
|
|
94
126
|
*
|
|
@@ -98,6 +130,7 @@ export declare class RunManifest {
|
|
|
98
130
|
*
|
|
99
131
|
* Fields not included in `updates` on an existing entry are preserved unchanged.
|
|
100
132
|
*
|
|
133
|
+
* Enqueues the operation via `_enqueue` so concurrent calls are serialized.
|
|
101
134
|
* Non-fatal: callers MUST wrap in `.catch((err) => logger.warn(...))`.
|
|
102
135
|
* The pipeline must never abort due to a manifest write failure.
|
|
103
136
|
*
|
|
@@ -105,6 +138,10 @@ export declare class RunManifest {
|
|
|
105
138
|
* @param updates - Partial PerStoryState fields to merge
|
|
106
139
|
*/
|
|
107
140
|
patchStoryState(storyKey: string, updates: Partial<PerStoryState>): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* Raw implementation — must only be called from within `_enqueue`.
|
|
143
|
+
*/
|
|
144
|
+
private _appendRecoveryEntryImpl;
|
|
108
145
|
/**
|
|
109
146
|
* Atomically append a recovery entry and update cost accumulation.
|
|
110
147
|
*
|
|
@@ -113,6 +150,7 @@ export declare class RunManifest {
|
|
|
113
150
|
* increments `cost_accumulation.run_total` by `entry.cost_usd`, then writes
|
|
114
151
|
* atomically via a single `write()` call.
|
|
115
152
|
*
|
|
153
|
+
* Enqueues the operation via `_enqueue` so concurrent calls are serialized.
|
|
116
154
|
* Non-fatal: callers MUST wrap in `.catch((err) => logger.warn(...))`.
|
|
117
155
|
* The pipeline must never abort due to a manifest write failure.
|
|
118
156
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-manifest.d.ts","sourceRoot":"","sources":["../../src/run-model/run-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,YAAY,CAAA;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAMzD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;CAClE;AA6GD;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB,gEAAgE;IAChE,OAAO,CAAC,WAAW,CAAqB;
|
|
1
|
+
{"version":3,"file":"run-manifest.d.ts","sourceRoot":"","sources":["../../src/run-model/run-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,YAAY,CAAA;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAMzD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;CAClE;AA6GD;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB,gEAAgE;IAChE,OAAO,CAAC,WAAW,CAAqB;IAExC;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAmC;gBAE1C,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,EAAE,WAAW,GAAE,YAAY,GAAG,IAAW;IAUtG,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAMD;;;;;;;OAOG;IACG,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC;IAQtC;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAajG;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ;IAWhB;;;;;;;;;;;;OAYG;YACW,UAAU;IA+CxB;;;;;OAKG;IACG,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpF;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,CACT,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAyB,EAClC,WAAW,GAAE,YAAY,GAAG,IAAW,GACtC,WAAW;IAQd;;OAEG;YACW,kBAAkB;IA+BhC;;;;;;;OAOG;IACG,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD;;OAEG;YACW,oBAAoB;IAmDlC;;;;;;;;;;;;;;;OAeG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvF;;OAEG;YACW,wBAAwB;IAwCtC;;;;;;;;;;;;;;;;OAgBG;IACG,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9D;;;OAGG;WACU,MAAM,CACjB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC,EAC9E,OAAO,GAAE,MAAyB,EAClC,WAAW,GAAE,YAAY,GAAG,IAAW,GACtC,OAAO,CAAC,WAAW,CAAC;IAiBvB;;;;;;;;;;;;;OAaG;WACU,IAAI,CACf,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAyB,EAClC,WAAW,GAAE,YAAY,GAAG,IAAW,GACtC,OAAO,CAAC,eAAe,CAAC;CA0D5B"}
|
|
@@ -115,6 +115,11 @@ export class RunManifest {
|
|
|
115
115
|
baseDir;
|
|
116
116
|
/** Optional Dolt adapter for degraded-mode fallback on read. */
|
|
117
117
|
doltAdapter;
|
|
118
|
+
/**
|
|
119
|
+
* Serializes all write operations on this instance to prevent lost-update races.
|
|
120
|
+
* Initialized to a resolved promise; each enqueued operation chains off the tail.
|
|
121
|
+
*/
|
|
122
|
+
_writeChain = Promise.resolve();
|
|
118
123
|
constructor(runId, baseDir = defaultBaseDir(), doltAdapter = null) {
|
|
119
124
|
this.runId = runId;
|
|
120
125
|
this.baseDir = baseDir;
|
|
@@ -170,10 +175,29 @@ export class RunManifest {
|
|
|
170
175
|
await this.write(merged);
|
|
171
176
|
}
|
|
172
177
|
// -------------------------------------------------------------------------
|
|
173
|
-
//
|
|
178
|
+
// _enqueue() — private write serializer
|
|
174
179
|
// -------------------------------------------------------------------------
|
|
175
180
|
/**
|
|
176
|
-
*
|
|
181
|
+
* Append `fn` to the per-instance write chain so all write operations execute
|
|
182
|
+
* strictly sequentially, preventing lost-update races on concurrent callers.
|
|
183
|
+
*
|
|
184
|
+
* The chain itself never rejects (errors are swallowed on the chain side);
|
|
185
|
+
* the returned promise resolves or rejects exactly when `fn` settles, so
|
|
186
|
+
* fire-and-forget `.catch()` callers still receive failure signals.
|
|
187
|
+
*/
|
|
188
|
+
_enqueue(fn) {
|
|
189
|
+
const next = this._writeChain.then(() => fn());
|
|
190
|
+
// Keep chain alive even if fn rejects — subsequent enqueues must not stall
|
|
191
|
+
this._writeChain = next.then(() => undefined, () => undefined);
|
|
192
|
+
return next;
|
|
193
|
+
}
|
|
194
|
+
// -------------------------------------------------------------------------
|
|
195
|
+
// _writeImpl() — raw atomic write (bypasses enqueue, called within _enqueue)
|
|
196
|
+
// -------------------------------------------------------------------------
|
|
197
|
+
/**
|
|
198
|
+
* Raw implementation of the atomic manifest write.
|
|
199
|
+
* Must only be called from within an `_enqueue`-d function to maintain
|
|
200
|
+
* the serialization invariant.
|
|
177
201
|
*
|
|
178
202
|
* Sequence:
|
|
179
203
|
* 1. Auto-increment `generation`, set `updated_at`
|
|
@@ -183,7 +207,7 @@ export class RunManifest {
|
|
|
183
207
|
* 5. If primary exists, copy to `.bak`
|
|
184
208
|
* 6. Rename `.tmp` → primary path
|
|
185
209
|
*/
|
|
186
|
-
async
|
|
210
|
+
async _writeImpl(data) {
|
|
187
211
|
// Read current generation from disk to increment correctly
|
|
188
212
|
let currentGeneration = 0;
|
|
189
213
|
const existing = await tryReadFile(this.primaryPath);
|
|
@@ -222,6 +246,18 @@ export class RunManifest {
|
|
|
222
246
|
await fs.rename(tmp, this.primaryPath);
|
|
223
247
|
}
|
|
224
248
|
// -------------------------------------------------------------------------
|
|
249
|
+
// write()
|
|
250
|
+
// -------------------------------------------------------------------------
|
|
251
|
+
/**
|
|
252
|
+
* Atomically write the manifest to disk.
|
|
253
|
+
*
|
|
254
|
+
* Enqueues the write via `_enqueue` so concurrent calls are serialized.
|
|
255
|
+
* The returned promise resolves when this call's write completes.
|
|
256
|
+
*/
|
|
257
|
+
async write(data) {
|
|
258
|
+
return this._enqueue(() => this._writeImpl(data));
|
|
259
|
+
}
|
|
260
|
+
// -------------------------------------------------------------------------
|
|
225
261
|
// Static factory: open()
|
|
226
262
|
// -------------------------------------------------------------------------
|
|
227
263
|
/**
|
|
@@ -241,17 +277,13 @@ export class RunManifest {
|
|
|
241
277
|
// Instance: patchCLIFlags()
|
|
242
278
|
// -------------------------------------------------------------------------
|
|
243
279
|
/**
|
|
244
|
-
*
|
|
245
|
-
* CLI flags into `cli_flags`, and write the result atomically.
|
|
246
|
-
*
|
|
247
|
-
* Non-fatal: callers should wrap in try/catch and log a warning on failure.
|
|
248
|
-
* The pipeline must not abort if manifest write fails.
|
|
280
|
+
* Raw implementation — must only be called from within `_enqueue`.
|
|
249
281
|
*/
|
|
250
|
-
async
|
|
282
|
+
async _patchCLIFlagsImpl(flags) {
|
|
251
283
|
let existingData;
|
|
252
284
|
try {
|
|
253
285
|
const read = await RunManifest.read(this.runId, this.baseDir, this.doltAdapter);
|
|
254
|
-
// Strip generation and updated_at —
|
|
286
|
+
// Strip generation and updated_at — _writeImpl() re-computes them
|
|
255
287
|
const { generation: _gen, updated_at: _ts, ...rest } = read;
|
|
256
288
|
existingData = rest;
|
|
257
289
|
}
|
|
@@ -271,34 +303,33 @@ export class RunManifest {
|
|
|
271
303
|
created_at: now,
|
|
272
304
|
};
|
|
273
305
|
}
|
|
274
|
-
await this.
|
|
306
|
+
await this._writeImpl({
|
|
275
307
|
...existingData,
|
|
276
308
|
cli_flags: { ...existingData.cli_flags, ...flags },
|
|
277
309
|
});
|
|
278
310
|
}
|
|
311
|
+
/**
|
|
312
|
+
* Read the current manifest (or create a minimal default), merge the provided
|
|
313
|
+
* CLI flags into `cli_flags`, and write the result atomically.
|
|
314
|
+
*
|
|
315
|
+
* Enqueues the operation via `_enqueue` so concurrent calls are serialized.
|
|
316
|
+
* Non-fatal: callers should wrap in try/catch and log a warning on failure.
|
|
317
|
+
* The pipeline must not abort if manifest write fails.
|
|
318
|
+
*/
|
|
319
|
+
async patchCLIFlags(flags) {
|
|
320
|
+
return this._enqueue(() => this._patchCLIFlagsImpl(flags));
|
|
321
|
+
}
|
|
279
322
|
// -------------------------------------------------------------------------
|
|
280
323
|
// Instance: patchStoryState() — atomic upsert for per-story lifecycle state
|
|
281
324
|
// -------------------------------------------------------------------------
|
|
282
325
|
/**
|
|
283
|
-
*
|
|
284
|
-
*
|
|
285
|
-
* Reads the current manifest (or creates a minimal default if absent),
|
|
286
|
-
* shallowly merges `updates` into `per_story_state[storyKey]`, and writes
|
|
287
|
-
* the result atomically via a single `write()` call.
|
|
288
|
-
*
|
|
289
|
-
* Fields not included in `updates` on an existing entry are preserved unchanged.
|
|
290
|
-
*
|
|
291
|
-
* Non-fatal: callers MUST wrap in `.catch((err) => logger.warn(...))`.
|
|
292
|
-
* The pipeline must never abort due to a manifest write failure.
|
|
293
|
-
*
|
|
294
|
-
* @param storyKey - Story key (e.g. '52-4')
|
|
295
|
-
* @param updates - Partial PerStoryState fields to merge
|
|
326
|
+
* Raw implementation — must only be called from within `_enqueue`.
|
|
296
327
|
*/
|
|
297
|
-
async
|
|
328
|
+
async _patchStoryStateImpl(storyKey, updates) {
|
|
298
329
|
let existingData;
|
|
299
330
|
try {
|
|
300
331
|
const read = await RunManifest.read(this.runId, this.baseDir, this.doltAdapter);
|
|
301
|
-
// Strip generation and updated_at —
|
|
332
|
+
// Strip generation and updated_at — _writeImpl() re-computes them
|
|
302
333
|
const { generation: _gen, updated_at: _ts, ...rest } = read;
|
|
303
334
|
existingData = rest;
|
|
304
335
|
}
|
|
@@ -334,7 +365,7 @@ export class RunManifest {
|
|
|
334
365
|
...existing,
|
|
335
366
|
...updates,
|
|
336
367
|
};
|
|
337
|
-
await this.
|
|
368
|
+
await this._writeImpl({
|
|
338
369
|
...existingData,
|
|
339
370
|
per_story_state: {
|
|
340
371
|
...existingData.per_story_state,
|
|
@@ -342,26 +373,32 @@ export class RunManifest {
|
|
|
342
373
|
},
|
|
343
374
|
});
|
|
344
375
|
}
|
|
345
|
-
// -------------------------------------------------------------------------
|
|
346
|
-
// Instance: appendRecoveryEntry() — atomic append and cost update
|
|
347
|
-
// -------------------------------------------------------------------------
|
|
348
376
|
/**
|
|
349
|
-
* Atomically
|
|
377
|
+
* Atomically upsert the per-story lifecycle state for a single story key.
|
|
350
378
|
*
|
|
351
|
-
* Reads the current manifest
|
|
352
|
-
*
|
|
353
|
-
*
|
|
354
|
-
*
|
|
379
|
+
* Reads the current manifest (or creates a minimal default if absent),
|
|
380
|
+
* shallowly merges `updates` into `per_story_state[storyKey]`, and writes
|
|
381
|
+
* the result atomically via a single `write()` call.
|
|
382
|
+
*
|
|
383
|
+
* Fields not included in `updates` on an existing entry are preserved unchanged.
|
|
355
384
|
*
|
|
385
|
+
* Enqueues the operation via `_enqueue` so concurrent calls are serialized.
|
|
356
386
|
* Non-fatal: callers MUST wrap in `.catch((err) => logger.warn(...))`.
|
|
357
387
|
* The pipeline must never abort due to a manifest write failure.
|
|
358
388
|
*
|
|
359
|
-
*
|
|
360
|
-
*
|
|
361
|
-
*
|
|
362
|
-
* @param entry - Recovery entry to append (attempt_number is 1-indexed)
|
|
389
|
+
* @param storyKey - Story key (e.g. '52-4')
|
|
390
|
+
* @param updates - Partial PerStoryState fields to merge
|
|
363
391
|
*/
|
|
364
|
-
async
|
|
392
|
+
async patchStoryState(storyKey, updates) {
|
|
393
|
+
return this._enqueue(() => this._patchStoryStateImpl(storyKey, updates));
|
|
394
|
+
}
|
|
395
|
+
// -------------------------------------------------------------------------
|
|
396
|
+
// Instance: appendRecoveryEntry() — atomic append and cost update
|
|
397
|
+
// -------------------------------------------------------------------------
|
|
398
|
+
/**
|
|
399
|
+
* Raw implementation — must only be called from within `_enqueue`.
|
|
400
|
+
*/
|
|
401
|
+
async _appendRecoveryEntryImpl(entry) {
|
|
365
402
|
let existingData;
|
|
366
403
|
try {
|
|
367
404
|
const read = await RunManifest.read(this.runId, this.baseDir, this.doltAdapter);
|
|
@@ -396,7 +433,27 @@ export class RunManifest {
|
|
|
396
433
|
run_total: existingData.cost_accumulation.run_total + entry.cost_usd,
|
|
397
434
|
},
|
|
398
435
|
};
|
|
399
|
-
await this.
|
|
436
|
+
await this._writeImpl(updated);
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Atomically append a recovery entry and update cost accumulation.
|
|
440
|
+
*
|
|
441
|
+
* Reads the current manifest, appends `entry` to `recovery_history[]`,
|
|
442
|
+
* increments `cost_accumulation.per_story[entry.story_key]` by `entry.cost_usd`,
|
|
443
|
+
* increments `cost_accumulation.run_total` by `entry.cost_usd`, then writes
|
|
444
|
+
* atomically via a single `write()` call.
|
|
445
|
+
*
|
|
446
|
+
* Enqueues the operation via `_enqueue` so concurrent calls are serialized.
|
|
447
|
+
* Non-fatal: callers MUST wrap in `.catch((err) => logger.warn(...))`.
|
|
448
|
+
* The pipeline must never abort due to a manifest write failure.
|
|
449
|
+
*
|
|
450
|
+
* `entry.cost_usd` is the cost of this single retry attempt only (NOT cumulative).
|
|
451
|
+
* Cumulative per-story retry cost is tracked in `cost_accumulation.per_story`.
|
|
452
|
+
*
|
|
453
|
+
* @param entry - Recovery entry to append (attempt_number is 1-indexed)
|
|
454
|
+
*/
|
|
455
|
+
async appendRecoveryEntry(entry) {
|
|
456
|
+
return this._enqueue(() => this._appendRecoveryEntryImpl(entry));
|
|
400
457
|
}
|
|
401
458
|
// -------------------------------------------------------------------------
|
|
402
459
|
// Static factory: create()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-manifest.js","sourceRoot":"","sources":["../../src/run-model/run-manifest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run-manifest.js","sourceRoot":"","sources":["../../src/run-model/run-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,4 +15,5 @@ export { PhantomReviewCheck } from './checks/index.js';
|
|
|
15
15
|
export { TrivialOutputCheck, DEFAULT_TRIVIAL_OUTPUT_THRESHOLD } from './checks/index.js';
|
|
16
16
|
export { AcceptanceCriteriaEvidenceCheck, extractAcceptanceCriteriaIds } from './checks/index.js';
|
|
17
17
|
export { BuildCheck, BUILD_CHECK_TIMEOUT_MS, detectBuildCommand } from './checks/index.js';
|
|
18
|
+
export { SourceAcFidelityCheck } from './source-ac-fidelity-check.js';
|
|
18
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAA;AACpG,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAG9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,YAAY,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAA;AACpG,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAG9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,YAAY,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA"}
|
|
@@ -14,4 +14,6 @@ export { PhantomReviewCheck } from './checks/index.js';
|
|
|
14
14
|
export { TrivialOutputCheck, DEFAULT_TRIVIAL_OUTPUT_THRESHOLD } from './checks/index.js';
|
|
15
15
|
export { AcceptanceCriteriaEvidenceCheck, extractAcceptanceCriteriaIds } from './checks/index.js';
|
|
16
16
|
export { BuildCheck, BUILD_CHECK_TIMEOUT_MS, detectBuildCommand } from './checks/index.js';
|
|
17
|
+
// Story 58-2: source AC fidelity check
|
|
18
|
+
export { SourceAcFidelityCheck } from './source-ac-fidelity-check.js';
|
|
17
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAA;AAYpG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,2CAA2C;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAQ1B,+CAA+C;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAA;AAYpG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,2CAA2C;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAQ1B,+CAA+C;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC1F,uCAAuC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/verification/probes/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/verification/probes/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,YAAY,CAAA;AAoGnB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,uBAAuB,CAsDhF"}
|
|
@@ -13,21 +13,53 @@ import { RuntimeProbeListSchema, } from './types.js';
|
|
|
13
13
|
// Section extraction
|
|
14
14
|
// ---------------------------------------------------------------------------
|
|
15
15
|
const SECTION_HEADING = /^##\s+Runtime\s+Probes\s*$/i;
|
|
16
|
+
const FENCE_DELIMITER = /^\s*```/;
|
|
16
17
|
/**
|
|
17
18
|
* Return the raw text of the story's `## Runtime Probes` section (excluding
|
|
18
19
|
* the heading line itself), or `undefined` if the section is not present.
|
|
19
20
|
*
|
|
20
21
|
* The section ends at the next `##` heading or end-of-file. Sub-headings
|
|
21
22
|
* (`###`, `####`) remain part of the section body.
|
|
23
|
+
*
|
|
24
|
+
* Story 58-4: the scan tracks code-fence depth so a `## Runtime Probes`
|
|
25
|
+
* heading that appears *inside* an outer ``` block is ignored. Stories that
|
|
26
|
+
* DOCUMENT probes in prose — regression fixtures, how-to-author docs, the
|
|
27
|
+
* Epic 58 e2e test spec — contain illustrative `## Runtime Probes` examples
|
|
28
|
+
* inside outer fences. Without fence-awareness the parser matches those
|
|
29
|
+
* illustrations as the story's own section, fails to find a terminated
|
|
30
|
+
* yaml block (the inner fences are typically escaped), and emits a spurious
|
|
31
|
+
* `runtime-probe-parse-error`. Hit live during the Epic 58 substrate
|
|
32
|
+
* dispatch on 58-3's artifact.
|
|
22
33
|
*/
|
|
23
34
|
function extractRuntimeProbesSection(storyContent) {
|
|
24
35
|
const lines = storyContent.split(/\r?\n/);
|
|
25
|
-
|
|
36
|
+
// First pass: find the first `## Runtime Probes` heading that is NOT
|
|
37
|
+
// inside an outer code fence.
|
|
38
|
+
let inCodeFence = false;
|
|
39
|
+
let start = -1;
|
|
40
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
41
|
+
const line = lines[i] ?? '';
|
|
42
|
+
if (FENCE_DELIMITER.test(line)) {
|
|
43
|
+
inCodeFence = !inCodeFence;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (!inCodeFence && SECTION_HEADING.test(line.trim())) {
|
|
47
|
+
start = i;
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
26
51
|
if (start === -1)
|
|
27
52
|
return undefined;
|
|
53
|
+
// Second pass: find the end boundary (next `##` heading at fence-depth 0).
|
|
28
54
|
let end = lines.length;
|
|
55
|
+
inCodeFence = false;
|
|
29
56
|
for (let i = start + 1; i < lines.length; i += 1) {
|
|
30
|
-
|
|
57
|
+
const line = lines[i] ?? '';
|
|
58
|
+
if (FENCE_DELIMITER.test(line)) {
|
|
59
|
+
inCodeFence = !inCodeFence;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (!inCodeFence && /^##\s+\S/.test(line)) {
|
|
31
63
|
end = i;
|
|
32
64
|
break;
|
|
33
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/verification/probes/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EACL,sBAAsB,GAGvB,MAAM,YAAY,CAAA;AAEnB,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,eAAe,GAAG,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/verification/probes/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EACL,sBAAsB,GAGvB,MAAM,YAAY,CAAA;AAEnB,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,eAAe,GAAG,6BAA6B,CAAA;AACrD,MAAM,eAAe,GAAG,SAAS,CAAA;AAEjC;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,2BAA2B,CAAC,YAAoB;IACvD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAEzC,qEAAqE;IACrE,8BAA8B;IAC9B,IAAI,WAAW,GAAG,KAAK,CAAA;IACvB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAA;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,WAAW,GAAG,CAAC,WAAW,CAAA;YAC1B,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,WAAW,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACtD,KAAK,GAAG,CAAC,CAAA;YACT,MAAK;QACP,CAAC;IACH,CAAC;IACD,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAA;IAElC,2EAA2E;IAC3E,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAA;IACtB,WAAW,GAAG,KAAK,CAAA;IACnB,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,WAAW,GAAG,CAAC,WAAW,CAAA;YAC1B,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,GAAG,GAAG,CAAC,CAAA;YACP,MAAK;QACP,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,SAA+B,CAAA;IACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,MAAM,GAAG,IAAI,CAAA;gBACb,SAAS,GAAG,EAAE,CAAA;YAChB,CAAC;YACD,SAAQ;QACV,CAAC;QACD,sBAAsB;QACtB,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QACD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;IACD,wEAAwE;IACxE,+CAA+C;IAC/C,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,8EAA8E;AAC9E,0CAA0C;AAC1C,8EAA8E;AAE9E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAAoB;IACrD,MAAM,OAAO,GAAG,2BAA2B,CAAC,YAAY,CAAC,CAAA;IACzD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IAC3B,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC1C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EACH,sFAAsF;SACzF,CAAA;IACH,CAAC;IAED,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;IACnC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,GAAG,YAAY,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACvE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,qBAAqB,MAAM,EAAE,EAAE,CAAA;IAClE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,6CAA6C,OAAO,MAAM,EAAE;SACpE,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAC3D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACxC,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,0BAA0B,CAAA;QAC5D,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,8BAA8B,IAAI,IAAI,QAAQ,KAAK,OAAO,EAAE;SACpE,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAmB,UAAU,CAAC,IAAI,CAAA;IAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,yBAAyB,KAAK,CAAC,IAAI,EAAE;aAC7C,CAAA;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;AACnC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SourceAcFidelityCheck — Story 58-2.
|
|
3
|
+
*
|
|
4
|
+
* Tier A verification check that cross-references the rendered story artifact
|
|
5
|
+
* against the source epic's hard clauses (MUST/SHALL keywords, backtick-wrapped
|
|
6
|
+
* paths, and Runtime Probes sections). AC rewrites introduced by the
|
|
7
|
+
* create-story agent are hard-gated before the story can reach COMPLETE.
|
|
8
|
+
*
|
|
9
|
+
* Scoring contract:
|
|
10
|
+
* - sourceEpicContent absent/empty → warn finding (source-ac-source-unavailable), status pass
|
|
11
|
+
* - All hard clauses present in storyContent → status pass
|
|
12
|
+
* - Any hard clause absent → one error finding per missing clause (source-ac-drift), status fail
|
|
13
|
+
*
|
|
14
|
+
* No LLM calls, no shell execution — pure in-memory literal substring matching.
|
|
15
|
+
*/
|
|
16
|
+
import type { VerificationCheck, VerificationContext, VerificationResult } from './types.js';
|
|
17
|
+
export declare class SourceAcFidelityCheck implements VerificationCheck {
|
|
18
|
+
readonly name = "source-ac-fidelity";
|
|
19
|
+
readonly tier: "A";
|
|
20
|
+
run(context: VerificationContext): Promise<VerificationResult>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=source-ac-fidelity-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-ac-fidelity-check.d.ts","sourceRoot":"","sources":["../../src/verification/source-ac-fidelity-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EAEnB,kBAAkB,EACnB,MAAM,YAAY,CAAA;AAyFnB,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,QAAQ,CAAC,IAAI,wBAAuB;IACpC,QAAQ,CAAC,IAAI,EAAG,GAAG,CAAS;IAEtB,GAAG,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAiErE"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SourceAcFidelityCheck — Story 58-2.
|
|
3
|
+
*
|
|
4
|
+
* Tier A verification check that cross-references the rendered story artifact
|
|
5
|
+
* against the source epic's hard clauses (MUST/SHALL keywords, backtick-wrapped
|
|
6
|
+
* paths, and Runtime Probes sections). AC rewrites introduced by the
|
|
7
|
+
* create-story agent are hard-gated before the story can reach COMPLETE.
|
|
8
|
+
*
|
|
9
|
+
* Scoring contract:
|
|
10
|
+
* - sourceEpicContent absent/empty → warn finding (source-ac-source-unavailable), status pass
|
|
11
|
+
* - All hard clauses present in storyContent → status pass
|
|
12
|
+
* - Any hard clause absent → one error finding per missing clause (source-ac-drift), status fail
|
|
13
|
+
*
|
|
14
|
+
* No LLM calls, no shell execution — pure in-memory literal substring matching.
|
|
15
|
+
*/
|
|
16
|
+
import { renderFindings } from './findings.js';
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Hard-clause extraction helpers
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
/**
|
|
21
|
+
* Extract the story's section from the full epic content.
|
|
22
|
+
*
|
|
23
|
+
* Uses the same heading pattern as `isImplicitlyCovered` in the monolith:
|
|
24
|
+
* `### Story <storyKey>:` or `### Story <storyKey> ` or `### Story <storyKey>\n`
|
|
25
|
+
*
|
|
26
|
+
* Returns the extracted section text (from the heading match through to the
|
|
27
|
+
* next `### Story` heading or end of file), or the full content if no
|
|
28
|
+
* matching heading is found.
|
|
29
|
+
*/
|
|
30
|
+
function extractStorySection(epicContent, storyKey) {
|
|
31
|
+
const escapedKey = storyKey.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
32
|
+
const headingPattern = new RegExp(`^###\\s+Story\\s+${escapedKey}[:\\s]`, 'm');
|
|
33
|
+
const match = headingPattern.exec(epicContent);
|
|
34
|
+
if (!match) {
|
|
35
|
+
// No matching heading — return full content so clauses can still be found
|
|
36
|
+
return epicContent;
|
|
37
|
+
}
|
|
38
|
+
const start = match.index;
|
|
39
|
+
// Find the next `### Story ` heading after the match
|
|
40
|
+
const nextHeading = /\n### Story /m.exec(epicContent.slice(start + 1));
|
|
41
|
+
if (nextHeading) {
|
|
42
|
+
return epicContent.slice(start, start + 1 + nextHeading.index);
|
|
43
|
+
}
|
|
44
|
+
return epicContent.slice(start);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Extract hard clauses from a story section of an epic file.
|
|
48
|
+
*
|
|
49
|
+
* Hard clauses:
|
|
50
|
+
* 1. Lines containing MUST NOT / MUST / SHALL NOT / SHALL as standalone keywords (case-sensitive)
|
|
51
|
+
* 2. Backtick-wrapped paths with at least one `/` (excludes bare filenames)
|
|
52
|
+
* 3. The presence of `## Runtime Probes` heading followed by a fenced yaml block
|
|
53
|
+
* (represented as a single "runtime-probes-section" clause)
|
|
54
|
+
*/
|
|
55
|
+
function extractHardClauses(sectionContent) {
|
|
56
|
+
const clauses = [];
|
|
57
|
+
// --- MUST NOT / MUST / SHALL NOT / SHALL lines ---
|
|
58
|
+
// Word-boundary match, case-sensitive, captures the whole line.
|
|
59
|
+
// Order matters: MUST NOT before MUST, SHALL NOT before SHALL to avoid double-matching.
|
|
60
|
+
const mustPattern = /\b(MUST NOT|MUST|SHALL NOT|SHALL)\b/;
|
|
61
|
+
const lines = sectionContent.split('\n');
|
|
62
|
+
for (const line of lines) {
|
|
63
|
+
const match = mustPattern.exec(line);
|
|
64
|
+
if (match) {
|
|
65
|
+
const keyword = match[1];
|
|
66
|
+
clauses.push({ type: keyword, text: line.trim() });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// --- Backtick-wrapped paths with at least one slash ---
|
|
70
|
+
// Match `path/with/at-least-one-slash` — excludes bare `filename.ts`
|
|
71
|
+
const pathPattern = /`([a-zA-Z0-9_./-]+\/[a-zA-Z0-9_./-]+)`/g;
|
|
72
|
+
let pathMatch;
|
|
73
|
+
while ((pathMatch = pathPattern.exec(sectionContent)) !== null) {
|
|
74
|
+
// The full backtick-wrapped expression (including backticks) is the clause text
|
|
75
|
+
// so the literal substring match against storyContent checks the exact same form.
|
|
76
|
+
clauses.push({ type: 'path', text: `\`${pathMatch[1]}\`` });
|
|
77
|
+
}
|
|
78
|
+
// --- Runtime Probes section ---
|
|
79
|
+
// Detect ## Runtime Probes heading followed by a fenced yaml block
|
|
80
|
+
const probesPattern = /^##\s+Runtime Probes[\s\S]*?```yaml/m;
|
|
81
|
+
if (probesPattern.test(sectionContent)) {
|
|
82
|
+
clauses.push({ type: 'runtime-probes-section', text: '## Runtime Probes' });
|
|
83
|
+
}
|
|
84
|
+
return clauses;
|
|
85
|
+
}
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
// SourceAcFidelityCheck
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
export class SourceAcFidelityCheck {
|
|
90
|
+
name = 'source-ac-fidelity';
|
|
91
|
+
tier = 'A';
|
|
92
|
+
async run(context) {
|
|
93
|
+
const start = Date.now();
|
|
94
|
+
// AC2: When sourceEpicContent is absent or empty, emit warn and pass.
|
|
95
|
+
if (!context.sourceEpicContent) {
|
|
96
|
+
const findings = [
|
|
97
|
+
{
|
|
98
|
+
category: 'source-ac-source-unavailable',
|
|
99
|
+
severity: 'warn',
|
|
100
|
+
message: 'source epic content unavailable — skipping fidelity check',
|
|
101
|
+
},
|
|
102
|
+
];
|
|
103
|
+
return {
|
|
104
|
+
status: 'pass',
|
|
105
|
+
details: renderFindings(findings),
|
|
106
|
+
duration_ms: Date.now() - start,
|
|
107
|
+
findings,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// Extract the story's section from the epic content
|
|
111
|
+
const storySection = extractStorySection(context.sourceEpicContent, context.storyKey);
|
|
112
|
+
// Extract all hard clauses from the story section
|
|
113
|
+
const hardClauses = extractHardClauses(storySection);
|
|
114
|
+
const findings = [];
|
|
115
|
+
const storyContent = context.storyContent ?? '';
|
|
116
|
+
for (const clause of hardClauses) {
|
|
117
|
+
if (clause.type === 'runtime-probes-section') {
|
|
118
|
+
// Special handling: check whether the story artifact contains ## Runtime Probes
|
|
119
|
+
if (!storyContent.includes('## Runtime Probes')) {
|
|
120
|
+
const truncated = clause.text.length > 120 ? clause.text.slice(0, 120) : clause.text;
|
|
121
|
+
findings.push({
|
|
122
|
+
category: 'source-ac-drift',
|
|
123
|
+
severity: 'error',
|
|
124
|
+
message: `runtime-probes-section: "${truncated}" present in epics source but absent in story artifact`,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
// Literal substring match for MUST/SHALL lines and path clauses
|
|
130
|
+
if (!storyContent.includes(clause.text)) {
|
|
131
|
+
const truncated = clause.text.length > 120 ? clause.text.slice(0, 120) : clause.text;
|
|
132
|
+
findings.push({
|
|
133
|
+
category: 'source-ac-drift',
|
|
134
|
+
severity: 'error',
|
|
135
|
+
message: `${clause.type}: "${truncated}" present in epics source but absent in story artifact`,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const status = findings.some((f) => f.severity === 'error') ? 'fail' : 'pass';
|
|
141
|
+
return {
|
|
142
|
+
status,
|
|
143
|
+
details: findings.length > 0
|
|
144
|
+
? renderFindings(findings)
|
|
145
|
+
: `source-ac-fidelity: ${hardClauses.length} hard clause(s) verified — all present`,
|
|
146
|
+
duration_ms: Date.now() - start,
|
|
147
|
+
findings,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=source-ac-fidelity-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-ac-fidelity-check.js","sourceRoot":"","sources":["../../src/verification/source-ac-fidelity-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,6 +100,15 @@ export interface VerificationContext {
|
|
|
100
100
|
* Left as `undefined` to trigger auto-detection.
|
|
101
101
|
*/
|
|
102
102
|
buildCommand?: string;
|
|
103
|
+
/**
|
|
104
|
+
* Raw content of the source epic file for SourceAcFidelityCheck (Story 58-2).
|
|
105
|
+
*
|
|
106
|
+
* Populated from the epics file corresponding to the current story's epic
|
|
107
|
+
* (e.g. `_bmad-output/planning-artifacts/epics.md`). Set to `undefined` when
|
|
108
|
+
* the epic file is absent or unreadable — the check emits a warn finding and
|
|
109
|
+
* passes (non-fatal for projects that don't use the planning-artifacts layout).
|
|
110
|
+
*/
|
|
111
|
+
sourceEpicContent?: string;
|
|
103
112
|
}
|
|
104
113
|
/**
|
|
105
114
|
* Result returned by a single VerificationCheck.run() invocation.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/verification/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAGxD,YAAY,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAMrF;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,6GAA6G;IAC7G,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAA;IACtC,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CACjC;AAMD;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,eAAe,CAAA;IAChC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/verification/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAGxD,YAAY,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAMrF;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,6GAA6G;IAC7G,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAA;IACtC,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CACjC;AAMD;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,eAAe,CAAA;IAChC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAMD;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB;wDACoD;IACpD,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAA;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,SAAS,EAAE,MAAM,CAAA;CAClB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,uBAAuB,EAAE,CAAA;IACjC,gDAAgD;IAChD,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,WAAW,EAAE,MAAM,CAAA;CACpB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAA;IACZ,mFAAmF;IACnF,IAAI,EAAE,GAAG,GAAG,GAAG,CAAA;IACf;;;OAGG;IACH,GAAG,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;CAC/D"}
|
|
@@ -53,12 +53,14 @@ export declare class VerificationPipeline {
|
|
|
53
53
|
* Create a VerificationPipeline pre-loaded with the canonical check set.
|
|
54
54
|
*
|
|
55
55
|
* Canonical Tier A check order:
|
|
56
|
-
* 1. PhantomReviewCheck
|
|
57
|
-
* 2. TrivialOutputCheck
|
|
56
|
+
* 1. PhantomReviewCheck — story 51-2 (runs first: unreviewed stories skipped)
|
|
57
|
+
* 2. TrivialOutputCheck — story 51-3
|
|
58
58
|
* 3. AcceptanceCriteriaEvidenceCheck
|
|
59
|
-
* 4. BuildCheck
|
|
60
|
-
* 5. RuntimeProbeCheck
|
|
61
|
-
*
|
|
59
|
+
* 4. BuildCheck — story 51-4
|
|
60
|
+
* 5. RuntimeProbeCheck — Epic 55 Phase 2: runtime behavior gate; runs last
|
|
61
|
+
* in Tier A because probes may depend on built artifacts
|
|
62
|
+
* 6. SourceAcFidelityCheck — Story 58-2: cross-references rendered story artifact
|
|
63
|
+
* against the source epic's hard clauses (MUST/SHALL/paths)
|
|
62
64
|
*
|
|
63
65
|
* @param bus Typed event bus for verification events.
|
|
64
66
|
* @param config Optional config (used to forward threshold to TrivialOutputCheck).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-pipeline.d.ts","sourceRoot":"","sources":["../../src/verification/verification-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EAEnB,mBAAmB,EACpB,MAAM,YAAY,CAAA;AAGnB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"verification-pipeline.d.ts","sourceRoot":"","sources":["../../src/verification/verification-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EAEnB,mBAAmB,EACpB,MAAM,YAAY,CAAA;AAGnB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AA6BhF;;;;;;GAMG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAElD;;;OAGG;gBACS,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAE,iBAAiB,EAAO;IAO5E;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAIxC;;;;;;;;;;OAUG;IACG,GAAG,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,GAAE,GAAG,GAAG,GAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAqE7F;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,EAC9B,MAAM,CAAC,EAAE,wBAAwB,GAChC,oBAAoB,CAUtB"}
|
|
@@ -15,6 +15,7 @@ import { TrivialOutputCheck } from './checks/trivial-output-check.js';
|
|
|
15
15
|
import { AcceptanceCriteriaEvidenceCheck } from './checks/acceptance-criteria-evidence-check.js';
|
|
16
16
|
import { BuildCheck } from './checks/build-check.js';
|
|
17
17
|
import { RuntimeProbeCheck } from './checks/runtime-probe-check.js';
|
|
18
|
+
import { SourceAcFidelityCheck } from './source-ac-fidelity-check.js';
|
|
18
19
|
// ---------------------------------------------------------------------------
|
|
19
20
|
// Helpers
|
|
20
21
|
// ---------------------------------------------------------------------------
|
|
@@ -144,12 +145,14 @@ export class VerificationPipeline {
|
|
|
144
145
|
* Create a VerificationPipeline pre-loaded with the canonical check set.
|
|
145
146
|
*
|
|
146
147
|
* Canonical Tier A check order:
|
|
147
|
-
* 1. PhantomReviewCheck
|
|
148
|
-
* 2. TrivialOutputCheck
|
|
148
|
+
* 1. PhantomReviewCheck — story 51-2 (runs first: unreviewed stories skipped)
|
|
149
|
+
* 2. TrivialOutputCheck — story 51-3
|
|
149
150
|
* 3. AcceptanceCriteriaEvidenceCheck
|
|
150
|
-
* 4. BuildCheck
|
|
151
|
-
* 5. RuntimeProbeCheck
|
|
152
|
-
*
|
|
151
|
+
* 4. BuildCheck — story 51-4
|
|
152
|
+
* 5. RuntimeProbeCheck — Epic 55 Phase 2: runtime behavior gate; runs last
|
|
153
|
+
* in Tier A because probes may depend on built artifacts
|
|
154
|
+
* 6. SourceAcFidelityCheck — Story 58-2: cross-references rendered story artifact
|
|
155
|
+
* against the source epic's hard clauses (MUST/SHALL/paths)
|
|
153
156
|
*
|
|
154
157
|
* @param bus Typed event bus for verification events.
|
|
155
158
|
* @param config Optional config (used to forward threshold to TrivialOutputCheck).
|
|
@@ -161,6 +164,7 @@ export function createDefaultVerificationPipeline(bus, config) {
|
|
|
161
164
|
new AcceptanceCriteriaEvidenceCheck(),
|
|
162
165
|
new BuildCheck(), // story 51-4: runs late in Tier A (expensive, 60s worst-case)
|
|
163
166
|
new RuntimeProbeCheck(), // Epic 55 Phase 2: runtime behavior verification
|
|
167
|
+
new SourceAcFidelityCheck(), // Story 58-2: source AC fidelity gate
|
|
164
168
|
];
|
|
165
169
|
return new VerificationPipeline(bus, checks);
|
|
166
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-pipeline.js","sourceRoot":"","sources":["../../src/verification/verification-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAErE,OAAO,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAA;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"verification-pipeline.js","sourceRoot":"","sources":["../../src/verification/verification-pipeline.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@substrate-ai/sdlc",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.12",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"node": ">=22.0.0"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@substrate-ai/core": "0.20.
|
|
27
|
+
"@substrate-ai/core": "0.20.12",
|
|
28
28
|
"js-yaml": "^4.1.1",
|
|
29
29
|
"zod": "^4.3.6"
|
|
30
30
|
},
|