@mmnto/cli 1.73.2 → 1.75.0
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/commands/spine-cert-corpus.test.js +2 -2
- package/dist/commands/spine-cert-corpus.test.js.map +1 -1
- package/dist/commands/spine-cert-e2e.test.js +2 -2
- package/dist/commands/spine-cert-e2e.test.js.map +1 -1
- package/dist/commands/spine-cert-record.d.ts.map +1 -1
- package/dist/commands/spine-cert-record.js +2 -1
- package/dist/commands/spine-cert-record.js.map +1 -1
- package/dist/commands/spine-cert-record.test.js +2 -2
- package/dist/commands/spine-cert-record.test.js.map +1 -1
- package/dist/commands/spine-cert-run-corpus.d.ts.map +1 -1
- package/dist/commands/spine-cert-run-corpus.js +18 -2
- package/dist/commands/spine-cert-run-corpus.js.map +1 -1
- package/dist/commands/spine-cert-run-corpus.test.js +2 -2
- package/dist/commands/spine-cert-run-corpus.test.js.map +1 -1
- package/dist/commands/spine-llm-adapters.d.ts +25 -11
- package/dist/commands/spine-llm-adapters.d.ts.map +1 -1
- package/dist/commands/spine-llm-adapters.js +31 -20
- package/dist/commands/spine-llm-adapters.js.map +1 -1
- package/dist/commands/spine-llm-adapters.test.js +127 -32
- package/dist/commands/spine-llm-adapters.test.js.map +1 -1
- package/dist/commands/spine-llm-replay.d.ts +113 -21
- package/dist/commands/spine-llm-replay.d.ts.map +1 -1
- package/dist/commands/spine-llm-replay.js +82 -25
- package/dist/commands/spine-llm-replay.js.map +1 -1
- package/dist/commands/spine-llm-replay.test.js +94 -15
- package/dist/commands/spine-llm-replay.test.js.map +1 -1
- package/dist/commands/spine-review-thread-source.d.ts +42 -6
- package/dist/commands/spine-review-thread-source.d.ts.map +1 -1
- package/dist/commands/spine-review-thread-source.js +43 -11
- package/dist/commands/spine-review-thread-source.js.map +1 -1
- package/dist/commands/spine-review-thread-source.test.js +33 -2
- package/dist/commands/spine-review-thread-source.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -135,15 +135,23 @@ function sha256Hex(input) {
|
|
|
135
135
|
}
|
|
136
136
|
// ─── inputKey derivation (fold D — the `deriveClaimId` pattern) ───────────────
|
|
137
137
|
/**
|
|
138
|
-
* Normalize a single review thread to its STABLE identity:
|
|
139
|
-
* (
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
138
|
+
* Normalize a single review thread to its STABLE identity: project each comment to
|
|
139
|
+
* `{ author, normalizedBody }`, sort by `(normalizedBody, author)`, and carry the
|
|
140
|
+
* resolution flags + path. The key digests the DE-CHROMED `normalizedBody` (slice
|
|
141
|
+
* β) — exactly what the extractor's prompt renders — NOT the raw `body` (chrome the
|
|
142
|
+
* LLM never saw) nor `authorKind` (a pure function of `author`, so redundant). A
|
|
143
|
+
* normalizer-version change re-derives `normalizedBody` → the key shifts → a replay
|
|
144
|
+
* MISS forces a re-record (Tenet-15), the same lever the provenance hash pulls.
|
|
145
|
+
* Provider/array order must not change the key, so comments are sorted by a stable
|
|
146
|
+
* tuple before hashing. The resolution flags are carried as thread identity; post-γ
|
|
147
|
+
* only `isOutdated` gates the eligible set (resolved threads are now admitted), but
|
|
148
|
+
* both remain stable per-thread facts.
|
|
143
149
|
*/
|
|
144
150
|
function normalizeThread(thread) {
|
|
145
|
-
const comments =
|
|
146
|
-
|
|
151
|
+
const comments = thread.comments
|
|
152
|
+
.map((c) => ({ author: c.author, normalizedBody: c.normalizedBody }))
|
|
153
|
+
.sort((a, b) => a.normalizedBody !== b.normalizedBody
|
|
154
|
+
? a.normalizedBody < b.normalizedBody
|
|
147
155
|
? -1
|
|
148
156
|
: 1
|
|
149
157
|
: a.author < b.author
|
|
@@ -178,14 +186,16 @@ function normalizeThreads(threads) {
|
|
|
178
186
|
});
|
|
179
187
|
}
|
|
180
188
|
/**
|
|
181
|
-
* Filter to the EXACT eligible set the extractor is handed: non-
|
|
182
|
-
*
|
|
189
|
+
* Filter to the EXACT eligible set the extractor is handed: non-outdated threads
|
|
190
|
+
* (slice γ — mirrors core's `eligibleThreads` in LOCKSTEP; RESOLVED threads are now
|
|
191
|
+
* admitted). Keeping this identical to core is REQUIRED: a divergence would make a
|
|
192
|
+
* replay miss/false-hit indistinguishable from model drift. The inputKey is a
|
|
183
193
|
* function of what the port ACTUALLY saw, so eligibility must be applied before
|
|
184
|
-
* normalizing — two contents that differ only in
|
|
185
|
-
*
|
|
194
|
+
* normalizing — two contents that differ only in outdated threads (which the
|
|
195
|
+
* extractor never sees) still key identically.
|
|
186
196
|
*/
|
|
187
197
|
function eligibleThreads(threads) {
|
|
188
|
-
return threads.filter((t) => !t.
|
|
198
|
+
return threads.filter((t) => !t.isOutdated);
|
|
189
199
|
}
|
|
190
200
|
/**
|
|
191
201
|
* Deterministic extractor inputKey (fold D). `sha256(canonicalJson({ keyVersion,
|
|
@@ -277,9 +287,45 @@ export const ClassifierResultLocalSchema = z
|
|
|
277
287
|
.refine((v) => v.dispositionSource !== 'error-default' || v.disposition === 'behavioral', {
|
|
278
288
|
message: "dispositionSource 'error-default' requires disposition 'behavioral'",
|
|
279
289
|
});
|
|
290
|
+
/**
|
|
291
|
+
* CLI-side validation of a recorded `DraftResult` (GCA #2209 + the panel's "replay
|
|
292
|
+
* artifact schema is a CLI-layer concern"): a LOCAL Zod schema rather than a static
|
|
293
|
+
* runtime import of core's `DraftResultSchema` (which would pull the heavy
|
|
294
|
+
* `@mmnto/totem` barrel onto the CLI-startup path). Mirrors core's shape AND its
|
|
295
|
+
* "cause iff empty" refinement LOGIC (the `NoDraftCauseSchema` enum, including the
|
|
296
|
+
* replay-migration-only `legacy-unknown`). Parity is accept/reject EQUIVALENCE,
|
|
297
|
+
* locked by a test — the local ZodError `message`/`path` stay intentionally concise
|
|
298
|
+
* (matching the `ClassifierResultLocalSchema` sibling), not byte-identical to core.
|
|
299
|
+
*/
|
|
300
|
+
export const DraftResultLocalSchema = z
|
|
301
|
+
.object({
|
|
302
|
+
drafts: z.array(z.string()),
|
|
303
|
+
noDraftCause: z
|
|
304
|
+
.enum([
|
|
305
|
+
'invoke-error',
|
|
306
|
+
'empty-output',
|
|
307
|
+
'none-sentinel',
|
|
308
|
+
'unparseable-shape',
|
|
309
|
+
'non-array',
|
|
310
|
+
'all-filtered',
|
|
311
|
+
'legacy-unknown',
|
|
312
|
+
])
|
|
313
|
+
.optional(),
|
|
314
|
+
})
|
|
315
|
+
.refine((r) => (r.drafts.length === 0) === (r.noDraftCause !== undefined), {
|
|
316
|
+
message: 'noDraftCause must be present iff drafts is empty',
|
|
317
|
+
});
|
|
280
318
|
export const ReplayRecordsSchema = z.object({
|
|
281
|
-
/**
|
|
282
|
-
|
|
319
|
+
/**
|
|
320
|
+
* `inputKey → DraftExtractor.draft()` return — a `DraftResult` (`{drafts, noDraftCause?}`);
|
|
321
|
+
* a recorded `{drafts:[], noDraftCause}` is a real row. BACKWARD-COMPAT (the α
|
|
322
|
+
* cause-tag migration): a legacy fixture stored a bare `string[]` (pre-cause-tag),
|
|
323
|
+
* accepted via the union so the committed cert-#1 fixture still parses + hashes
|
|
324
|
+
* IDENTICALLY (the bare-array branch returns it unchanged). `ReplayDraftExtractor`
|
|
325
|
+
* normalizes a legacy row to a `DraftResult` on read (empty → `legacy-unknown`);
|
|
326
|
+
* fresh recordings always write the object form.
|
|
327
|
+
*/
|
|
328
|
+
extractor: z.record(z.union([z.array(z.string()), DraftResultLocalSchema])),
|
|
283
329
|
/** `inputKey → DraftClassifier.classify()` return (a `ClassifierResult`). */
|
|
284
330
|
classifier: z.record(ClassifierResultLocalSchema),
|
|
285
331
|
});
|
|
@@ -371,10 +417,11 @@ export class ReplayRecordSink {
|
|
|
371
417
|
}
|
|
372
418
|
// ─── Recording decorators (generic over the port) ─────
|
|
373
419
|
/**
|
|
374
|
-
* Records every `DraftExtractor.draft()` call's inputKey → raw `
|
|
375
|
-
* into the sink, then passes the value THROUGH unchanged. The recorded value is
|
|
376
|
-
*
|
|
377
|
-
*
|
|
420
|
+
* Records every `DraftExtractor.draft()` call's inputKey → raw `DraftResult` output
|
|
421
|
+
* into the sink, then passes the value THROUGH unchanged. The recorded value is the
|
|
422
|
+
* PORT's return (pre-core-funnel) — a recorded `{drafts:[], noDraftCause}` is a real
|
|
423
|
+
* row that freezes the NO-DRAFT cause for the replay. A duplicate inputKey throws
|
|
424
|
+
* (via the sink).
|
|
378
425
|
*/
|
|
379
426
|
export class RecordingDraftExtractor {
|
|
380
427
|
wrapped;
|
|
@@ -432,8 +479,9 @@ function assertFixtureIntegrity(artifact, expectedHash) {
|
|
|
432
479
|
/**
|
|
433
480
|
* PURE replay of `DraftExtractor` — zero live LLM / network calls. Computes the
|
|
434
481
|
* inputKey for the requested content, looks it up in the frozen records:
|
|
435
|
-
* - HIT → return the recorded `
|
|
436
|
-
*
|
|
482
|
+
* - HIT → return the recorded `DraftResult` (a recorded empty result is a real
|
|
483
|
+
* row; a legacy bare-`string[]` row is normalized to a `DraftResult`);
|
|
484
|
+
* - MISS → throw `ReplayMissError` (NEVER fall back to an empty result).
|
|
437
485
|
*
|
|
438
486
|
* Integrity (fold B + F): the constructor takes the EXTERNAL expected content-
|
|
439
487
|
* hash, computes the actual WHOLE-ARTIFACT hash (records + provenance), and throws
|
|
@@ -448,17 +496,26 @@ export class ReplayDraftExtractor {
|
|
|
448
496
|
this.records = parsed.records.extractor;
|
|
449
497
|
}
|
|
450
498
|
// `async` so a MISS surfaces as a REJECTED promise (the port contract is
|
|
451
|
-
// `Promise<
|
|
499
|
+
// `Promise<DraftResult>`; a consumer awaits it). A synchronous `throw` would
|
|
452
500
|
// escape an `await`-less caller's `.catch`, so the rejection path is uniform.
|
|
453
501
|
async draft(content) {
|
|
454
502
|
const inputKey = extractorInputKey(content);
|
|
455
|
-
//
|
|
456
|
-
//
|
|
457
|
-
// key (a MISS).
|
|
503
|
+
// Presence check, NOT truthiness: a recorded empty result is a real HIT,
|
|
504
|
+
// distinct from an absent key (a MISS).
|
|
458
505
|
if (!Object.prototype.hasOwnProperty.call(this.records, inputKey)) {
|
|
459
506
|
throw new ReplayMissError('extractor', inputKey);
|
|
460
507
|
}
|
|
461
|
-
|
|
508
|
+
const rec = this.records[inputKey];
|
|
509
|
+
// Backward-compat (α migration): a legacy fixture row is a bare `string[]`
|
|
510
|
+
// (pre-cause-tag) → normalize to a `DraftResult`. An EMPTY legacy row gets
|
|
511
|
+
// `legacy-unknown` — NOT a fabricated real cause; it honestly signals "this
|
|
512
|
+
// fixture predates cause-tags, re-record before cause-rate reporting." A
|
|
513
|
+
// non-empty legacy row carries its drafts and no cause. A fresh row is already
|
|
514
|
+
// a `DraftResult` and passes through unchanged.
|
|
515
|
+
if (Array.isArray(rec)) {
|
|
516
|
+
return rec.length === 0 ? { drafts: rec, noDraftCause: 'legacy-unknown' } : { drafts: rec };
|
|
517
|
+
}
|
|
518
|
+
return rec;
|
|
462
519
|
}
|
|
463
520
|
}
|
|
464
521
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spine-llm-replay.js","sourceRoot":"","sources":["../../src/commands/spine-llm-replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwBxB,wDAAwD;AAExD;;;;;;GAMG;AACH,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAC7C,MAAM,sBAAsB,GAAG,eAAe,CAAC;AAK/C,wDAAwD;AAExD;;;;;;;;GAQG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,WAAW,CAAc;IACzB,QAAQ,CAAS;IAE1B,YAAY,WAAwB,EAAE,QAAgB;QACpD,KAAK,CACH,GAAG,WAAW,0BAA0B,QAAQ,sCAAsC;YACpF,yGAAyG;YACzG,6EAA6E,CAChF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACrC,YAAY,CAAS;IACrB,UAAU,CAAS;IAE5B,YAAY,YAAoB,EAAE,UAAkB;QAClD,KAAK,CACH,oDAAoD,YAAY,QAAQ,UAAU,IAAI;YACpF,gGAAgG;YAChG,mDAAmD,CACtD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,WAAW,CAAc;IACzB,QAAQ,CAAS;IAE1B,YAAY,WAAwB,EAAE,QAAgB;QACpD,KAAK,CACH,wBAAwB,WAAW,aAAa,QAAQ,oCAAoC;YAC1F,6GAA6G,CAChH,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,yDAAyD;AAEzD;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mFAAmF;AACnF,SAAS,aAAa,CAAC,OAAgB;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,kFAAkF;AAClF,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,iFAAiF;AAEjF
|
|
1
|
+
{"version":3,"file":"spine-llm-replay.js","sourceRoot":"","sources":["../../src/commands/spine-llm-replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import {
|
|
2
|
+
import { classifyAuthorKind, DraftResultSchema, normalizeReviewChrome, } from '@mmnto/totem';
|
|
3
|
+
import { classifierInputKey, ClassifierResultLocalSchema, computeArtifactHash, DraftResultLocalSchema, DuplicateRecordError, extractorInputKey, FixtureIntegrityError, RecordingDraftClassifier, RecordingDraftExtractor, REPLAY_ARTIFACT_KIND, ReplayArtifactSchema, ReplayDraftClassifier, ReplayDraftExtractor, ReplayMissError, ReplayRecordSink, serializeReplayArtifact, } from './spine-llm-replay.js';
|
|
3
4
|
// ─── Stub ports (in-memory, deterministic — NO network, NO LLM) ──────────────
|
|
4
|
-
/** A canned `DraftExtractor`: returns a fixed `
|
|
5
|
+
/** A canned `DraftExtractor`: returns a fixed `DraftResult` keyed by PR (default to a 1-elem draft). */
|
|
5
6
|
class StubExtractor {
|
|
6
7
|
byPr;
|
|
7
8
|
constructor(byPr) {
|
|
8
9
|
this.byPr = byPr;
|
|
9
10
|
}
|
|
10
11
|
draft(content) {
|
|
11
|
-
|
|
12
|
+
const drafts = this.byPr.get(content.pr) ?? [`draft for PR ${content.pr}`];
|
|
13
|
+
return Promise.resolve(drafts.length === 0 ? { drafts, noDraftCause: 'all-filtered' } : { drafts });
|
|
12
14
|
}
|
|
13
15
|
}
|
|
14
16
|
/** A canned `DraftClassifier`: returns a fixed result keyed by dslSource (default structural). */
|
|
@@ -28,7 +30,13 @@ class StubClassifier {
|
|
|
28
30
|
const MERGE_SHA_A = 'a'.repeat(40);
|
|
29
31
|
const MERGE_SHA_B = 'b'.repeat(40);
|
|
30
32
|
function comment(author, body) {
|
|
31
|
-
|
|
33
|
+
const authorKind = classifyAuthorKind(author);
|
|
34
|
+
return {
|
|
35
|
+
author,
|
|
36
|
+
body,
|
|
37
|
+
authorKind,
|
|
38
|
+
normalizedBody: authorKind === 'bot' ? normalizeReviewChrome(body) : body,
|
|
39
|
+
};
|
|
32
40
|
}
|
|
33
41
|
function thread(opts) {
|
|
34
42
|
return {
|
|
@@ -53,6 +61,7 @@ function draft(opts) {
|
|
|
53
61
|
commitSha: opts?.commitSha ?? MERGE_SHA_A,
|
|
54
62
|
},
|
|
55
63
|
dslSource: opts?.dslSource ?? '**Pattern:** no-foo',
|
|
64
|
+
sourceKind: 'human',
|
|
56
65
|
};
|
|
57
66
|
}
|
|
58
67
|
const STUB_PROVENANCE = {
|
|
@@ -89,7 +98,7 @@ describe('record → replay determinism (FM-a)', () => {
|
|
|
89
98
|
expect(await replayExtractor.draft(c)).toEqual(recordedDrafts);
|
|
90
99
|
expect(await replayClassifier.classify(d)).toEqual(recordedClass);
|
|
91
100
|
// And the recorded values are exactly what the stub produced.
|
|
92
|
-
expect(recordedDrafts).toEqual(['draft-A', 'draft-B']);
|
|
101
|
+
expect(recordedDrafts).toEqual({ drafts: ['draft-A', 'draft-B'] });
|
|
93
102
|
expect(recordedClass).toEqual({ disposition: 'behavioral', dispositionSource: 'classified' });
|
|
94
103
|
});
|
|
95
104
|
it('serializes deterministically regardless of record insertion order', async () => {
|
|
@@ -184,15 +193,19 @@ describe('replay miss red craft', () => {
|
|
|
184
193
|
});
|
|
185
194
|
// ─── 4. Recorded-empty vs miss ───────────────────────
|
|
186
195
|
describe('recorded-empty vs miss (real rows, distinguishable from absence)', () => {
|
|
187
|
-
it('replays a recorded
|
|
196
|
+
it('replays a recorded empty DraftResult as that exact value (a real row, not a miss)', async () => {
|
|
188
197
|
const sink = new ReplayRecordSink();
|
|
189
198
|
const rec = new RecordingDraftExtractor(new StubExtractor(new Map([[100, []]])), sink);
|
|
190
199
|
const recorded = await rec.draft(content({ pr: 100 }));
|
|
191
|
-
expect(recorded).toEqual([]);
|
|
200
|
+
expect(recorded).toEqual({ drafts: [], noDraftCause: 'all-filtered' });
|
|
192
201
|
const artifact = sink.freeze(STUB_PROVENANCE);
|
|
193
202
|
const replay = new ReplayDraftExtractor(artifact, computeArtifactHash(artifact));
|
|
194
|
-
// HIT on a recorded
|
|
195
|
-
|
|
203
|
+
// HIT on a recorded empty result — returns the cause-tagged DraftResult, does
|
|
204
|
+
// NOT throw ReplayMissError.
|
|
205
|
+
await expect(replay.draft(content({ pr: 100 }))).resolves.toEqual({
|
|
206
|
+
drafts: [],
|
|
207
|
+
noDraftCause: 'all-filtered',
|
|
208
|
+
});
|
|
196
209
|
});
|
|
197
210
|
it('replays a recorded {behavioral, error-default} (classifier) as that exact value', async () => {
|
|
198
211
|
const errorDefault = {
|
|
@@ -225,7 +238,7 @@ describe('duplicate (adapterKind, inputKey) → DuplicateRecordError', () => {
|
|
|
225
238
|
it('does NOT collide two different sections sharing a coincidental key value', () => {
|
|
226
239
|
// extractor + classifier maps are independent; the same string in both is fine.
|
|
227
240
|
const sink = new ReplayRecordSink();
|
|
228
|
-
sink.recordExtractor('shared-key', ['e']);
|
|
241
|
+
sink.recordExtractor('shared-key', { drafts: ['e'] });
|
|
229
242
|
expect(() => sink.recordClassifier('shared-key', {
|
|
230
243
|
disposition: 'structural',
|
|
231
244
|
dispositionSource: 'classified',
|
|
@@ -276,12 +289,32 @@ describe('extractorInputKey (fold D)', () => {
|
|
|
276
289
|
const reversed = extractorInputKey(content({ threads: [t2, t1] }));
|
|
277
290
|
expect(forward).toBe(reversed);
|
|
278
291
|
});
|
|
279
|
-
it('excludes
|
|
292
|
+
it('excludes only OUTDATED threads from the key; RESOLVED now affects it (slice γ)', () => {
|
|
280
293
|
const eligible = thread({ path: 'a.ts', comments: [comment('al', 'keep')] });
|
|
281
|
-
|
|
294
|
+
// γ: an OUTDATED thread is still excluded from the eligible set → no key effect.
|
|
295
|
+
const outdated = thread({ path: 'z.ts', isOutdated: true, comments: [comment('zo', 'drop')] });
|
|
296
|
+
const withOutdated = extractorInputKey(content({ threads: [eligible, outdated] }));
|
|
297
|
+
const withoutOutdated = extractorInputKey(content({ threads: [eligible] }));
|
|
298
|
+
expect(withOutdated).toBe(withoutOutdated);
|
|
299
|
+
// γ: a RESOLVED thread is now ADMITTED → it IS part of the eligible set the
|
|
300
|
+
// extractor sees, so it MUST change the key (the slice-5a exclusion is reversed).
|
|
301
|
+
const resolved = thread({ path: 'z.ts', isResolved: true, comments: [comment('zo', 'keep2')] });
|
|
282
302
|
const withResolved = extractorInputKey(content({ threads: [eligible, resolved] }));
|
|
283
|
-
|
|
284
|
-
|
|
303
|
+
expect(withResolved).not.toBe(withoutOutdated);
|
|
304
|
+
});
|
|
305
|
+
it('digests the DE-CHROMED normalizedBody, not the raw body (slice β)', () => {
|
|
306
|
+
// Two bot comments with DIFFERENT chrome but the SAME de-chromed body must key
|
|
307
|
+
// identically (the LLM saw the same normalizedBody); a human comment whose raw
|
|
308
|
+
// body equals that normalized text keys identically too (author aside).
|
|
309
|
+
const chromeA = thread({
|
|
310
|
+
path: 'a.ts',
|
|
311
|
+
comments: [comment('coderabbitai[bot]', '\nguard the divisor')],
|
|
312
|
+
});
|
|
313
|
+
const chromeB = thread({
|
|
314
|
+
path: 'a.ts',
|
|
315
|
+
comments: [comment('coderabbitai[bot]', '<!-- id:1 -->guard the divisor')],
|
|
316
|
+
});
|
|
317
|
+
expect(extractorInputKey(content({ threads: [chromeA] }))).toBe(extractorInputKey(content({ threads: [chromeB] })));
|
|
285
318
|
});
|
|
286
319
|
});
|
|
287
320
|
describe('ClassifierResultLocalSchema parity with core (GCA #2209, option a)', () => {
|
|
@@ -303,6 +336,52 @@ describe('ClassifierResultLocalSchema parity with core (GCA #2209, option a)', (
|
|
|
303
336
|
}
|
|
304
337
|
});
|
|
305
338
|
});
|
|
339
|
+
describe('DraftResultLocalSchema parity with core (α cause-tags; GCA #2209)', () => {
|
|
340
|
+
it('accepts / rejects EXACTLY what core DraftResultSchema does', () => {
|
|
341
|
+
const cases = [
|
|
342
|
+
{ drafts: ['a', 'b'] }, // valid (drafts, no cause)
|
|
343
|
+
{ drafts: [] }, // invalid — empty WITHOUT a cause (cause-iff-empty refine)
|
|
344
|
+
{ drafts: [], noDraftCause: 'invoke-error' }, // valid
|
|
345
|
+
{ drafts: [], noDraftCause: 'all-filtered' }, // valid
|
|
346
|
+
{ drafts: [], noDraftCause: 'legacy-unknown' }, // valid (replay-migration cause)
|
|
347
|
+
{ drafts: ['a'], noDraftCause: 'none-sentinel' }, // invalid — cause WITH drafts
|
|
348
|
+
{ drafts: [], noDraftCause: 'bogus' }, // enum → invalid
|
|
349
|
+
{ noDraftCause: 'empty-output' }, // missing drafts → invalid
|
|
350
|
+
];
|
|
351
|
+
for (const c of cases) {
|
|
352
|
+
expect(DraftResultLocalSchema.safeParse(c).success).toBe(DraftResultSchema.safeParse(c).success);
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
});
|
|
356
|
+
describe('ReplayDraftExtractor backward-compat (α legacy string[] migration)', () => {
|
|
357
|
+
// The committed cert-#1 fixture stored BARE string[] extractor rows (pre-cause-tag).
|
|
358
|
+
// The union schema must still load them (so the fixture parses + hashes identically)
|
|
359
|
+
// and the replay must normalize them to a DraftResult on read.
|
|
360
|
+
function legacyArtifact(rows) {
|
|
361
|
+
return ReplayArtifactSchema.parse({
|
|
362
|
+
kind: REPLAY_ARTIFACT_KIND,
|
|
363
|
+
provenance: STUB_PROVENANCE,
|
|
364
|
+
records: { extractor: rows, classifier: {} },
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
it('normalizes a legacy non-empty string[] row → { drafts } (no fabricated cause)', async () => {
|
|
368
|
+
const c = content({ pr: 100 });
|
|
369
|
+
const artifact = legacyArtifact({ [extractorInputKey(c)]: ['legacy-draft'] });
|
|
370
|
+
const replay = new ReplayDraftExtractor(artifact, computeArtifactHash(artifact));
|
|
371
|
+
await expect(replay.draft(c)).resolves.toEqual({ drafts: ['legacy-draft'] });
|
|
372
|
+
});
|
|
373
|
+
it('normalizes a legacy EMPTY string[] row → legacy-unknown (never a fabricated real cause)', async () => {
|
|
374
|
+
const c = content({ pr: 100 });
|
|
375
|
+
const artifact = legacyArtifact({ [extractorInputKey(c)]: [] });
|
|
376
|
+
const replay = new ReplayDraftExtractor(artifact, computeArtifactHash(artifact));
|
|
377
|
+
await expect(replay.draft(c)).resolves.toEqual({ drafts: [], noDraftCause: 'legacy-unknown' });
|
|
378
|
+
});
|
|
379
|
+
it('a legacy bare-array fixture parses + hashes (the union keeps the cert-#1 fixture loadable)', () => {
|
|
380
|
+
const c = content({ pr: 100 });
|
|
381
|
+
const artifact = legacyArtifact({ [extractorInputKey(c)]: ['x'] });
|
|
382
|
+
expect(() => computeArtifactHash(artifact)).not.toThrow();
|
|
383
|
+
});
|
|
384
|
+
});
|
|
306
385
|
describe('classifierInputKey (fold D)', () => {
|
|
307
386
|
it('is stable for the same provenance + dslSource + draftRef', () => {
|
|
308
387
|
const d = draft({ pr: 100, dslSource: 'body' });
|
|
@@ -351,7 +430,7 @@ describe('serialization hygiene', () => {
|
|
|
351
430
|
const parsed = JSON.parse(serialized);
|
|
352
431
|
// Each record VALUE is strictly the port's output shape — nothing else.
|
|
353
432
|
const extractorVal = Object.values(parsed.records.extractor)[0];
|
|
354
|
-
expect(extractorVal).toEqual(['only-the-output']);
|
|
433
|
+
expect(extractorVal).toEqual({ drafts: ['only-the-output'] });
|
|
355
434
|
const classifierVal = Object.values(parsed.records.classifier)[0];
|
|
356
435
|
expect(Object.keys(classifierVal).sort()).toEqual([
|
|
357
436
|
'disposition',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spine-llm-replay.test.js","sourceRoot":"","sources":["../../src/commands/spine-llm-replay.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spine-llm-replay.test.js","sourceRoot":"","sources":["../../src/commands/spine-llm-replay.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* fully offline (no network, CI-locked).
|
|
24
24
|
*/
|
|
25
25
|
import { z } from 'zod';
|
|
26
|
-
import type { FetchResult, ReviewThread, ReviewThreadSource } from '@mmnto/totem';
|
|
26
|
+
import type { AuthorKind, FetchResult, ReviewThread, ReviewThreadComment, ReviewThreadSource } from '@mmnto/totem';
|
|
27
27
|
declare const GqlReviewThreadSchema: z.ZodObject<{
|
|
28
28
|
isResolved: z.ZodBoolean;
|
|
29
29
|
isOutdated: z.ZodBoolean;
|
|
@@ -122,14 +122,38 @@ export declare function buildReviewThreadsQuery(owner: string, name: string, pr:
|
|
|
122
122
|
* (no network). When not injected, the adapter lazy-loads `safeExec` (below).
|
|
123
123
|
*/
|
|
124
124
|
export type GhExec = (command: string, args: string[]) => string;
|
|
125
|
+
/**
|
|
126
|
+
* The two CORE-homed comment classifiers `mapThreads` stamps onto each comment
|
|
127
|
+
* (slice β). Injected — the LOGIC + version live in core (`classifyAuthorKind`,
|
|
128
|
+
* `normalizeReviewChrome`; panel OQ-β1/β3), the adapter is only the mapping-
|
|
129
|
+
* boundary call site, so the inputKey can never drift from the provenance. The
|
|
130
|
+
* real `fetch` resolves these by lazy-loading core (the barrel is loaded anyway
|
|
131
|
+
* for `safeExec`); tests pass the real core fns directly.
|
|
132
|
+
*/
|
|
133
|
+
export interface CommentEnrichers {
|
|
134
|
+
classifyAuthorKind: (author: string) => AuthorKind;
|
|
135
|
+
normalizeReviewChrome: (body: string) => string;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Slice-β comment enrichment (the SHARED single home): stamp `authorKind` (via core
|
|
139
|
+
* `classifyAuthorKind`) + `normalizedBody` (the de-chromed text the extractor
|
|
140
|
+
* consumes — `normalizeReviewChrome(body)` for a recognized review bot, else the raw
|
|
141
|
+
* body verbatim; chrome is stripped ONLY for bot comments so human prose is never
|
|
142
|
+
* altered). BOTH the live `mapThreads` AND the replay-time `frozenSourceFrom` loader
|
|
143
|
+
* (`spine-cert-run-corpus`) call THIS, so the de-chromed body they feed the
|
|
144
|
+
* extractor — hence the `extractorInputKey` — can never diverge between record and
|
|
145
|
+
* replay (a divergence would be indistinguishable from model drift).
|
|
146
|
+
*/
|
|
147
|
+
export declare function enrichComment(enrich: CommentEnrichers, author: string, body: string): ReviewThreadComment;
|
|
125
148
|
/**
|
|
126
149
|
* Map a validated GraphQL response to the surviving `ReviewThread[]` with their
|
|
127
|
-
* resolution flags surfaced
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* body still gates
|
|
150
|
+
* resolution flags surfaced and each comment slice-β-ENRICHED (see `enrichComment`).
|
|
151
|
+
* Pure given `enrich` — exported for the mapping test. A null author (deleted/ghost)
|
|
152
|
+
* coerces to '' (`reviewBotIdentity('')` is false → `authorKind: 'human'`, and
|
|
153
|
+
* `isBotIdentity('')` is false, so core's count keeps it; the body still gates
|
|
154
|
+
* inclusion).
|
|
131
155
|
*/
|
|
132
|
-
export declare function mapThreads(nodes: z.infer<typeof GqlReviewThreadSchema>[]): ReviewThread[];
|
|
156
|
+
export declare function mapThreads(nodes: z.infer<typeof GqlReviewThreadSchema>[], enrich: CommentEnrichers): ReviewThread[];
|
|
133
157
|
export interface ReviewThreadSourceAdapterOptions {
|
|
134
158
|
/** The repo to query, as `owner` + `name`. */
|
|
135
159
|
owner: string;
|
|
@@ -138,6 +162,12 @@ export interface ReviewThreadSourceAdapterOptions {
|
|
|
138
162
|
cwd?: string;
|
|
139
163
|
/** Injectable exec seam (tests). Defaults to a `gh`-backed `safeExec`. */
|
|
140
164
|
exec?: GhExec;
|
|
165
|
+
/**
|
|
166
|
+
* Injectable slice-β comment enrichers (tests). Defaults to a lazy-load of core's
|
|
167
|
+
* `classifyAuthorKind` + `normalizeReviewChrome` (the barrel is loaded anyway for
|
|
168
|
+
* `safeExec`). Tests pass the real core fns so the mapping is exercised end-to-end.
|
|
169
|
+
*/
|
|
170
|
+
enrich?: CommentEnrichers;
|
|
141
171
|
}
|
|
142
172
|
/**
|
|
143
173
|
* The live `ReviewThreadSource`. Constructible + exported now (slice 5a); wiring
|
|
@@ -156,9 +186,15 @@ export declare class ReviewThreadSourceAdapter implements ReviewThreadSource {
|
|
|
156
186
|
* guard (CR #2207 — was benign since dynamic import is idempotent, now explicit).
|
|
157
187
|
*/
|
|
158
188
|
private execPromise;
|
|
189
|
+
/** Injected slice-β enrichers (tests); when absent the default lazy-loads core once via `enrichPromise`. */
|
|
190
|
+
private readonly injectedEnrich;
|
|
191
|
+
/** Memoized lazy-load of core's `classifyAuthorKind` + `normalizeReviewChrome` (real runs) — see `execPromise`. */
|
|
192
|
+
private enrichPromise;
|
|
159
193
|
constructor(opts: ReviewThreadSourceAdapterOptions);
|
|
160
194
|
/** Resolve the exec seam: the injected one (tests), else the memoized lazy-loaded default. */
|
|
161
195
|
private resolveExec;
|
|
196
|
+
/** Resolve the slice-β enrichers: the injected ones (tests), else a memoized lazy-load of core. */
|
|
197
|
+
private resolveEnrich;
|
|
162
198
|
fetch(pr: number): Promise<FetchResult>;
|
|
163
199
|
}
|
|
164
200
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spine-review-thread-source.d.ts","sourceRoot":"","sources":["../../src/commands/spine-review-thread-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"spine-review-thread-source.d.ts","sourceRoot":"","sources":["../../src/commands/spine-review-thread-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,cAAc,CAAC;AA6BtB,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQzB,CAAC;AAsBH;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAuBvF;AAID;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;AAoBjE;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,UAAU,CAAC;IACnD,qBAAqB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,mBAAmB,CAQrB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,EAAE,EAC9C,MAAM,EAAE,gBAAgB,GACvB,YAAY,EAAE,CAQhB;AAID,MAAM,WAAW,gCAAgC;IAC/C,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,iGAAiG;IACjG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD;;;;;OAKG;IACH,OAAO,CAAC,WAAW,CAA8B;IACjD,4GAA4G;IAC5G,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAC9D,mHAAmH;IACnH,OAAO,CAAC,aAAa,CAAwC;gBAEjD,IAAI,EAAE,gCAAgC;IAQlD,8FAA8F;IAC9F,OAAO,CAAC,WAAW;IAMnB,mGAAmG;IACnG,OAAO,CAAC,aAAa;IASf,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAqF9C"}
|