@principles/core 1.284.20 → 1.285.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.
Files changed (63) hide show
  1. package/dist/runtime-v2/__tests__/pain-correction-evidence.test.d.ts +2 -0
  2. package/dist/runtime-v2/__tests__/pain-correction-evidence.test.d.ts.map +1 -0
  3. package/dist/runtime-v2/__tests__/pain-correction-evidence.test.js +37 -0
  4. package/dist/runtime-v2/__tests__/pain-correction-evidence.test.js.map +1 -0
  5. package/dist/runtime-v2/__tests__/pain-signal-observability.test.js +61 -0
  6. package/dist/runtime-v2/__tests__/pain-signal-observability.test.js.map +1 -1
  7. package/dist/runtime-v2/context-payload.d.ts +77 -0
  8. package/dist/runtime-v2/context-payload.d.ts.map +1 -1
  9. package/dist/runtime-v2/context-payload.js +31 -0
  10. package/dist/runtime-v2/context-payload.js.map +1 -1
  11. package/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js +88 -0
  12. package/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js.map +1 -1
  13. package/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts +10 -0
  14. package/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts.map +1 -1
  15. package/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js +46 -1
  16. package/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js.map +1 -1
  17. package/dist/runtime-v2/evidence-sanitizer.d.ts +6 -0
  18. package/dist/runtime-v2/evidence-sanitizer.d.ts.map +1 -1
  19. package/dist/runtime-v2/evidence-sanitizer.js +1 -1
  20. package/dist/runtime-v2/evidence-sanitizer.js.map +1 -1
  21. package/dist/runtime-v2/evolution/evolution-types.d.ts +7 -0
  22. package/dist/runtime-v2/evolution/evolution-types.d.ts.map +1 -1
  23. package/dist/runtime-v2/evolution/evolution-types.js.map +1 -1
  24. package/dist/runtime-v2/internalization/__tests__/evaluator-formation-context.test.d.ts +2 -0
  25. package/dist/runtime-v2/internalization/__tests__/evaluator-formation-context.test.d.ts.map +1 -0
  26. package/dist/runtime-v2/internalization/__tests__/evaluator-formation-context.test.js +531 -0
  27. package/dist/runtime-v2/internalization/__tests__/evaluator-formation-context.test.js.map +1 -0
  28. package/dist/runtime-v2/internalization/__tests__/evaluator-prompt-builder.test.js +2 -2
  29. package/dist/runtime-v2/internalization/__tests__/evaluator-prompt-builder.test.js.map +1 -1
  30. package/dist/runtime-v2/internalization/evaluator-prompt-builder.d.ts +48 -1
  31. package/dist/runtime-v2/internalization/evaluator-prompt-builder.d.ts.map +1 -1
  32. package/dist/runtime-v2/internalization/evaluator-prompt-builder.js +60 -2
  33. package/dist/runtime-v2/internalization/evaluator-prompt-builder.js.map +1 -1
  34. package/dist/runtime-v2/internalization/evaluator-runner.d.ts +15 -0
  35. package/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
  36. package/dist/runtime-v2/internalization/evaluator-runner.js +161 -4
  37. package/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
  38. package/dist/runtime-v2/internalization/owner-review.d.ts +10 -0
  39. package/dist/runtime-v2/internalization/owner-review.d.ts.map +1 -1
  40. package/dist/runtime-v2/internalization/owner-review.js +12 -0
  41. package/dist/runtime-v2/internalization/owner-review.js.map +1 -1
  42. package/dist/runtime-v2/pain-signal-bridge.d.ts +24 -0
  43. package/dist/runtime-v2/pain-signal-bridge.d.ts.map +1 -1
  44. package/dist/runtime-v2/pain-signal-bridge.js +28 -0
  45. package/dist/runtime-v2/pain-signal-bridge.js.map +1 -1
  46. package/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
  47. package/dist/runtime-v2/pain-signal-observability.js +9 -1
  48. package/dist/runtime-v2/pain-signal-observability.js.map +1 -1
  49. package/dist/runtime-v2/store/context/sqlite-context-assembler.d.ts +9 -0
  50. package/dist/runtime-v2/store/context/sqlite-context-assembler.d.ts.map +1 -1
  51. package/dist/runtime-v2/store/context/sqlite-context-assembler.js +35 -0
  52. package/dist/runtime-v2/store/context/sqlite-context-assembler.js.map +1 -1
  53. package/dist/runtime-v2/store/context/sqlite-context-assembler.test.js +99 -0
  54. package/dist/runtime-v2/store/context/sqlite-context-assembler.test.js.map +1 -1
  55. package/dist/runtime-v2/task-status.d.ts +7 -0
  56. package/dist/runtime-v2/task-status.d.ts.map +1 -1
  57. package/dist/runtime-v2/task-status.js +4 -0
  58. package/dist/runtime-v2/task-status.js.map +1 -1
  59. package/dist/telemetry-event.d.ts +2 -2
  60. package/dist/telemetry-event.d.ts.map +1 -1
  61. package/dist/telemetry-event.js +22 -0
  62. package/dist/telemetry-event.js.map +1 -1
  63. package/package.json +1 -1
@@ -0,0 +1,531 @@
1
+ /**
2
+ * PRI-843 — Evaluator Formation Context Connection (production-path tests).
3
+ *
4
+ * Two layers:
5
+ * 1. Prompt contract (unit): conditional injection keeps a no-formation run
6
+ * byte-identical to the pre-PRI-843 shape; a formation run carries the
7
+ * bounded projection and the system-channel addendum.
8
+ * 2. Golden replay (real production components — RuntimeStateManager +
9
+ * SqlitePIArtifactStore + real EvaluatorRunner; only the LLM adapter is
10
+ * scripted):
11
+ * Case A Principle/Rule consistent with the pain → approved
12
+ * Case B Rule deviates from Principle (no mismatch marker) → repair
13
+ * seeded as before — the mismatch route must not hijack it
14
+ * Case C Principle does not address the Pain (marked concern) →
15
+ * needs_human_review(principle_pain_mismatch), NO repair seed
16
+ *
17
+ * Plus the contract's guard rails: the hallucination guard (marker without
18
+ * formation evidence is ignored), the contextHash coverage over formation
19
+ * lineage ids, and restart-stable disposition (resume re-materializes the
20
+ * same NHR without re-asking the LLM).
21
+ */
22
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
23
+ import * as fs from 'node:fs';
24
+ import * as path from 'node:path';
25
+ import * as os from 'node:os';
26
+ import { RuntimeStateManager } from '../../store/runtime-state-manager.js';
27
+ import { EvaluatorRunner } from '../evaluator-runner.js';
28
+ import { DefaultEvaluatorValidator } from '../evaluator-output.js';
29
+ import { EvaluatorPromptBuilder, EVALUATOR_PROTOCOL_INSTRUCTION, EVALUATOR_FORMATION_EVIDENCE_ADDENDUM, EVALUATOR_PROMPT_CONTRACT_VERSION, PRINCIPLE_PAIN_MISMATCH_MARKER, } from '../evaluator-prompt-builder.js';
30
+ import { HUMAN_REVIEW_REASON } from '../owner-review.js';
31
+ import { StoreEventEmitter } from '../../store/event-emitter.js';
32
+ import { SqliteConnection } from '../../store/sqlite-connection.js';
33
+ import { SqlitePIArtifactStore } from '../../store/artifact/sqlite-pi-artifact-store.js';
34
+ import { createPITaskDiagnosticJson, hydratePITaskRecord } from '../pitask-metadata.js';
35
+ import { createProductionGateDeps } from '../../activation/production-gate-deps.js';
36
+ // ── Shared fixtures ──────────────────────────────────────────────────────────
37
+ const DIAG_ID = 'diag-router-fc';
38
+ const DREAMER_ID = 'dreamer-fc';
39
+ const SCRIBE_ID = 'scribe-fc';
40
+ const ART_ID = 'artificer-fc';
41
+ const EVAL_ID = 'evaluator-fc';
42
+ const REPAIR_ID = 'artificer-repair-fc';
43
+ const DIAG_ART = 'pi-art-diag-router-fc';
44
+ const DREAMER_ART = 'pi-art-dreamer-fc';
45
+ const SCRIBE_ART = 'pi-art-scribe-fc';
46
+ const DIAGNOSIS_CONTENT = {
47
+ valid: true,
48
+ diagnosisId: 'diag-fc',
49
+ summary: 'config contract guessed from example files',
50
+ rootCause: 'agent inferred a configuration contract from example files instead of reading the authoritative one',
51
+ violatedPrinciples: [
52
+ { principleId: 'T-03', title: 'Evidence first', rationale: 'contracts must be read, not guessed' },
53
+ ],
54
+ evidence: [
55
+ { sourceRef: 'trajectory://session-fc/turn-4', note: 'wrote a config without reading the contract' },
56
+ ],
57
+ recommendations: [
58
+ { kind: 'principle', description: 'read the authoritative contract before mutating config' },
59
+ ],
60
+ confidence: 0.8,
61
+ };
62
+ const DREAMER_CONTENT = {
63
+ valid: true,
64
+ taskId: DREAMER_ID,
65
+ candidates: [
66
+ {
67
+ candidateIndex: 0,
68
+ badDecision: 'agent wrote config without validating the contract',
69
+ betterDecision: 'resolve and read the authoritative contract before writing',
70
+ rationale: 'guessing contracts produces silent drift',
71
+ confidence: 0.4,
72
+ riskLevel: 'high',
73
+ strategicPerspective: 'defensive',
74
+ },
75
+ {
76
+ candidateIndex: 1,
77
+ badDecision: 'agent kept two sources of truth',
78
+ betterDecision: 'keep one authoritative contract per surface',
79
+ rationale: 'duplicate contracts drift apart',
80
+ confidence: 0.9,
81
+ riskLevel: 'low',
82
+ strategicPerspective: 'evidence-first',
83
+ },
84
+ ],
85
+ sourcePainId: 'pain-fc-1',
86
+ contextRefs: ['pi-art-pain-fc-1'],
87
+ generatedAt: '2026-09-19T00:00:00.000Z',
88
+ };
89
+ /** Scribe principle artifact — the AUTHORITATIVE dreamer lineage carrier. */
90
+ function scribeContent(withDreamerLineage) {
91
+ return {
92
+ principleId: 'contract-first',
93
+ principleDraft: {
94
+ title: 'Contract before mutation',
95
+ statement: 'Read the authoritative configuration contract before mutating any config surface.',
96
+ rationale: 'Guessed contracts drift silently from owner intent.',
97
+ applicability: ['config mutation'],
98
+ antiPatterns: ['inferring contracts from example files'],
99
+ confidence: 0.8,
100
+ },
101
+ intentContract: {
102
+ ownerIntent: 'the agent must not guess configuration contracts',
103
+ targetBehavior: 'read the authoritative contract before mutating config',
104
+ forbiddenBehavior: 'inferring a contract from examples and writing anyway',
105
+ evidenceSource: 'pain-fc-1 / diag-fc rootCause',
106
+ validationExpectation: 'rule blocks config writes that skip the contract read',
107
+ },
108
+ ...(withDreamerLineage ? { sourceTrace: { dreamerArtifactId: DREAMER_ART, philosopherArtifactId: 'pi-art-phil-fc' } } : {}),
109
+ };
110
+ }
111
+ /** v1 (non-code-bearing) artificer artifact — keeps the deterministic replay out of scope. */
112
+ function artificerOutput() {
113
+ return {
114
+ taskId: ART_ID,
115
+ sourceScribeArtifactId: SCRIBE_ART,
116
+ implementationSummary: 'contract-first gate',
117
+ sourceTrace: { scribeArtifactId: SCRIBE_ART },
118
+ risks: [],
119
+ goldenTraceCases: [
120
+ { caseId: 'neg-1', kind: 'negative', toolName: 'write_file', params: { path: '/app/config.json' }, expectedDecision: 'block' },
121
+ { caseId: 'pos-1', kind: 'positive', toolName: 'write_file', params: { path: '/app/src/a.ts' }, expectedDecision: 'allow' },
122
+ ],
123
+ affectedTools: ['write_file'],
124
+ generatedAt: '2026-09-19T00:00:00.000Z',
125
+ };
126
+ }
127
+ function evaluatorOutput(decision, concerns, requiredChanges) {
128
+ return {
129
+ taskId: EVAL_ID,
130
+ sourceArtificerArtifactId: `pi-art-${ART_ID}-seed`,
131
+ evaluation: {
132
+ decision,
133
+ summary: 'pri-843 golden replay',
134
+ score: decision === 'approved' ? 0.9 : 0.6,
135
+ strengths: [],
136
+ concerns,
137
+ requiredChanges,
138
+ },
139
+ sourceTrace: { artificerArtifactId: `pi-art-${ART_ID}-seed`, scribeArtifactId: SCRIBE_ART },
140
+ risks: [],
141
+ generatedAt: '2026-09-19T00:00:00.000Z',
142
+ };
143
+ }
144
+ /** Minimal in-budget FormationContext for builder-level unit tests. */
145
+ function unitFormationContext() {
146
+ return {
147
+ version: 'formation-context.v1',
148
+ dreamerProposals: [
149
+ {
150
+ candidateIndex: 1,
151
+ priorityRank: 1,
152
+ badDecision: 'kept two sources of truth',
153
+ betterDecision: 'keep one authoritative contract',
154
+ rationale: 'duplicate contracts drift',
155
+ confidence: 0.9,
156
+ riskLevel: 'low',
157
+ strategicPerspective: null,
158
+ },
159
+ ],
160
+ dreamerContextRefs: [],
161
+ sourceDiagnosis: {
162
+ artifactId: DIAG_ART,
163
+ taskId: DIAG_ID,
164
+ stage: 'diag_router',
165
+ rootCause: DIAGNOSIS_CONTENT.rootCause,
166
+ summary: DIAGNOSIS_CONTENT.summary,
167
+ violatedPrinciples: [],
168
+ evidence: [{ sourceRef: 'trajectory://session-fc/turn-4', note: 'wrote without reading' }],
169
+ recommendations: [],
170
+ confidence: 0.8,
171
+ omittedFields: [],
172
+ },
173
+ provenance: {
174
+ sourceDreamerArtifactId: DREAMER_ART,
175
+ sourceDreamerTaskId: DREAMER_ID,
176
+ sourceDiagnosisArtifactId: DIAG_ART,
177
+ sourceDiagnosisTaskId: DIAG_ID,
178
+ sourcePainId: 'pain-fc-1',
179
+ lineageArtifactIds: [DIAG_ART],
180
+ },
181
+ truncationNotes: [],
182
+ };
183
+ }
184
+ // ── Layer 1: prompt contract (builder unit) ─────────────────────────────────
185
+ describe('PRI-843 — evaluator prompt contract (conditional formation injection)', () => {
186
+ const builder = new EvaluatorPromptBuilder();
187
+ const baseInput = {
188
+ taskId: EVAL_ID,
189
+ contextHash: 'ctx-fc',
190
+ sourceArtificerArtifactId: 'pi-art-artificer-fc-seed',
191
+ artificerArtifact: { taskId: ART_ID },
192
+ scribeArtifact: scribeContent(true),
193
+ };
194
+ it('prompt contract version is v5', () => {
195
+ expect(EVALUATOR_PROMPT_CONTRACT_VERSION).toBe('evaluator-output-v1.prompt.v5');
196
+ });
197
+ it('without formationContext the payload keeps the pre-PRI-843 shape (byte-identical) and the system prompt is unchanged', () => {
198
+ const a = builder.buildPrompt(baseInput);
199
+ const b = builder.buildPrompt(baseInput);
200
+ expect(a.message).toBe(b.message);
201
+ const parsed = JSON.parse(a.message);
202
+ expect(Object.hasOwn(parsed, 'formationContext')).toBe(false);
203
+ expect(a.systemPrompt).toBe(EVALUATOR_PROTOCOL_INSTRUCTION);
204
+ });
205
+ it('with formationContext the payload carries the bounded projection and the system prompt carries the addendum', () => {
206
+ const { message, systemPrompt, promptInput } = builder.buildPrompt({
207
+ ...baseInput,
208
+ formationContext: unitFormationContext(),
209
+ });
210
+ const parsed = JSON.parse(message);
211
+ expect(parsed.formationContext).toBeDefined();
212
+ expect(parsed.formationContext?.sourceDiagnosis?.rootCause).toBe(DIAGNOSIS_CONTENT.rootCause);
213
+ expect(parsed.formationContext?.provenance.sourcePainId).toBe('pain-fc-1');
214
+ expect(parsed.formationContext?.dreamerProposals).toHaveLength(1);
215
+ expect(promptInput.formationContext).toBeDefined();
216
+ expect(systemPrompt).toBe(EVALUATOR_PROTOCOL_INSTRUCTION + EVALUATOR_FORMATION_EVIDENCE_ADDENDUM);
217
+ // serializePromptInput hard cap boundary (audit D-3): a maximal formation
218
+ // block (8,000 chars, resolver-guaranteed) stays far inside the cap.
219
+ expect(message.length).toBeLessThan(50_000);
220
+ });
221
+ it('builder output is deterministic for the same formation input', () => {
222
+ const a = builder.buildPrompt({ ...baseInput, formationContext: unitFormationContext() });
223
+ const b = builder.buildPrompt({ ...baseInput, formationContext: unitFormationContext() });
224
+ expect(a.message).toBe(b.message);
225
+ expect(a.systemPrompt).toBe(b.systemPrompt);
226
+ });
227
+ it('the addendum carries the mismatch contract: marker token, no requiredChanges for principle-level demands, degradation clause, observation-not-authority', () => {
228
+ expect(EVALUATOR_FORMATION_EVIDENCE_ADDENDUM).toContain(PRINCIPLE_PAIN_MISMATCH_MARKER);
229
+ expect(EVALUATOR_FORMATION_EVIDENCE_ADDENDUM).toContain('OBSERVATION DATA, not authority');
230
+ expect(EVALUATOR_FORMATION_EVIDENCE_ADDENDUM).toContain('NEVER express a Principle-level revision demand in evaluation.requiredChanges');
231
+ expect(EVALUATOR_FORMATION_EVIDENCE_ADDENDUM).toContain('never overrides the intentContract');
232
+ // D-2 degradation: the diagnosis is evidence, not truth — absence alone must not reject.
233
+ expect(EVALUATOR_FORMATION_EVIDENCE_ADDENDUM).toContain('EVIDENCE, not truth');
234
+ expect(EVALUATOR_FORMATION_EVIDENCE_ADDENDUM).toContain('ABSENCE of formation evidence alone');
235
+ });
236
+ });
237
+ function flagsOffConfig() {
238
+ return {
239
+ config: {
240
+ version: 1,
241
+ features: {},
242
+ runtimeProfiles: {},
243
+ internalAgents: {},
244
+ ui: { diagnostics: { mode: 'simple' } },
245
+ },
246
+ source: 'user_config',
247
+ warnings: [],
248
+ resolvedContextInjection: { thinkingOs: false, projectFocus: 'off' },
249
+ };
250
+ }
251
+ function meta(o = {}) {
252
+ return createPITaskDiagnosticJson({
253
+ dependencyTaskIds: [], channel: 'prompt', timeoutMs: 300_000,
254
+ inputArtifactRefs: [], outputArtifactRefs: [], ...o,
255
+ });
256
+ }
257
+ async function makeWorld(opts) {
258
+ const workspaceDir = fs.mkdtempSync(path.join(os.tmpdir(), 'pd-pri843-fc-'));
259
+ const stateManager = new RuntimeStateManager({ workspaceDir });
260
+ await stateManager.initialize();
261
+ const emitter = new StoreEventEmitter();
262
+ const emitted = [];
263
+ emitter.onTelemetry((event) => {
264
+ emitted.push({ eventType: event.eventType, payload: event.payload });
265
+ });
266
+ const store = new SqlitePIArtifactStore(new SqliteConnection(workspaceDir));
267
+ const diagArtId = opts.diagArtifactId ?? DIAG_ART;
268
+ const now = '2026-09-19T00:00:00.000Z';
269
+ const mkTask = async (spec) => {
270
+ await stateManager.createTask({
271
+ taskId: spec.id, taskKind: spec.kind, status: 'pending', attemptCount: 0, maxAttempts: 3,
272
+ diagnosticJson: meta({ dependencyTaskIds: spec.deps }),
273
+ });
274
+ await stateManager.acquireLease({ taskId: spec.id, owner: 'pri843-test', runtimeKind: 'test-double' });
275
+ await stateManager.markTaskSucceeded(spec.id);
276
+ };
277
+ const upsert = (spec) => store.upsertArtifact({
278
+ artifactId: spec.artifactId, artifactKind: 'principle', sourceTaskId: spec.sourceTaskId,
279
+ lineageArtifactIds: [...spec.lineage],
280
+ validationStatus: 'pending', contentJson: JSON.stringify(spec.content), createdAt: now, updatedAt: now,
281
+ });
282
+ await mkTask({ id: DIAG_ID, kind: 'diag_router', deps: [] });
283
+ await upsert({ artifactId: diagArtId, sourceTaskId: DIAG_ID, content: DIAGNOSIS_CONTENT, lineage: [] });
284
+ await mkTask({ id: DREAMER_ID, kind: 'dreamer', deps: [DIAG_ID] });
285
+ await upsert({ artifactId: DREAMER_ART, sourceTaskId: DREAMER_ID, content: DREAMER_CONTENT, lineage: [diagArtId] });
286
+ await mkTask({ id: SCRIBE_ID, kind: 'scribe', deps: [DREAMER_ID] });
287
+ if (opts.scribeArtifactAbsent) {
288
+ // The artificer's sourceTrace still points at SCRIBE_ART — the artifact
289
+ // itself is missing, exercising the evaluator's unresolvable-scribe path.
290
+ }
291
+ else if (opts.scribeMalformedJson) {
292
+ await store.upsertArtifact({
293
+ artifactId: SCRIBE_ART, artifactKind: 'principle', sourceTaskId: SCRIBE_ID,
294
+ lineageArtifactIds: [DREAMER_ART],
295
+ validationStatus: 'pending', contentJson: '{"principleId": "contract-first", BROKEN',
296
+ createdAt: now, updatedAt: now,
297
+ });
298
+ }
299
+ else {
300
+ await upsert({ artifactId: SCRIBE_ART, sourceTaskId: SCRIBE_ID, content: scribeContent(opts.withDreamerLineage), lineage: [DREAMER_ART] });
301
+ }
302
+ await mkTask({ id: ART_ID, kind: 'artificer', deps: [SCRIBE_ID] });
303
+ await upsert({ artifactId: `pi-art-${ART_ID}-seed`, sourceTaskId: ART_ID, content: artificerOutput(), lineage: [SCRIBE_ART] });
304
+ await stateManager.createTask({
305
+ taskId: EVAL_ID, taskKind: 'evaluator', status: 'pending', attemptCount: 0, maxAttempts: 3,
306
+ diagnosticJson: meta({ dependencyTaskIds: [ART_ID] }),
307
+ });
308
+ return { workspaceDir, stateManager, emitter, emitted, store };
309
+ }
310
+ function closeWorld(world) {
311
+ void world.stateManager.close();
312
+ try {
313
+ fs.rmSync(world.workspaceDir, { recursive: true, force: true });
314
+ }
315
+ catch { /* temp */ }
316
+ }
317
+ function scriptedAdapter(payload, prompts, runId) {
318
+ return {
319
+ startRun: async (req) => {
320
+ prompts.push({ message: String(req.inputPayload), systemPrompt: typeof req.systemPrompt === 'string' ? req.systemPrompt : '' });
321
+ return { runId, runtimeKind: 'test-double', startedAt: new Date().toISOString() };
322
+ },
323
+ pollRun: async () => ({ status: 'succeeded', runId }),
324
+ fetchOutput: async () => ({ runId, payload }),
325
+ cancelRun: async () => undefined,
326
+ };
327
+ }
328
+ function reviewEvaluator(world, opts) {
329
+ const { payload, prompts, seeds } = opts;
330
+ return new EvaluatorRunner({
331
+ stateManager: world.stateManager,
332
+ runtimeAdapter: scriptedAdapter(payload, prompts, 'eval-fc'),
333
+ eventEmitter: world.emitter, artifactStore: world.store, validator: new DefaultEvaluatorValidator(),
334
+ isRepairLoopEnabled: () => true,
335
+ seedArtificerRepairTask: async (params) => {
336
+ seeds.push(params.repairPayload.requiredChanges.join(';'));
337
+ await world.stateManager.createTask({
338
+ taskId: REPAIR_ID, taskKind: 'artificer', status: 'pending', attemptCount: 0, maxAttempts: 3,
339
+ diagnosticJson: meta({ dependencyTaskIds: params.inheritedDependencyTaskIds, repairPayload: params.repairPayload }),
340
+ });
341
+ return REPAIR_ID;
342
+ },
343
+ }, {
344
+ owner: 'pri843-test', runtimeKind: 'test-double', pollIntervalMs: 5, timeoutMs: 5000,
345
+ gateDeps: createProductionGateDeps(), effectiveConfig: flagsOffConfig(),
346
+ });
347
+ }
348
+ describe('PRI-843 — evaluator formation context golden replay (production path)', () => {
349
+ let world;
350
+ beforeEach(async () => {
351
+ world = await makeWorld({ withDreamerLineage: true });
352
+ });
353
+ afterEach(() => {
354
+ closeWorld(world);
355
+ });
356
+ it('Case A: pain-consistent chain → evaluator prompt carries the formation evidence; approved validates the scribe bearer; no human review', async () => {
357
+ const prompts = [];
358
+ const seeds = [];
359
+ const result = await reviewEvaluator(world, {
360
+ payload: evaluatorOutput('approved', [], []),
361
+ prompts, seeds,
362
+ }).run(EVAL_ID);
363
+ // The connection itself: pain/diagnosis/lineage reach the evaluator prompt.
364
+ expect(prompts).toHaveLength(1);
365
+ const parsed = JSON.parse(prompts[0]?.message ?? '{}');
366
+ expect(parsed.formationContext).toBeDefined();
367
+ expect(parsed.formationContext?.sourceDiagnosis?.rootCause).toBe(DIAGNOSIS_CONTENT.rootCause);
368
+ expect(parsed.formationContext?.sourceDiagnosis?.evidence[0]?.sourceRef).toBe('trajectory://session-fc/turn-4');
369
+ expect(parsed.formationContext?.dreamerProposals).toHaveLength(2);
370
+ expect(parsed.formationContext?.provenance.sourceDreamerArtifactId).toBe(DREAMER_ART);
371
+ expect(parsed.formationContext?.provenance.sourcePainId).toBe('pain-fc-1');
372
+ expect(prompts[0]?.systemPrompt).toContain('FORMATION EVIDENCE');
373
+ // Resolver observability (rc-9): the resolver's formation_context_resolved
374
+ // event arrives under the runner-prefixed, union-registered name.
375
+ expect(world.emitted.some((e) => e.eventType === 'evaluator_formation_context_resolved')).toBe(true);
376
+ // Governance unchanged: approved → scribe bearer validated, task succeeded.
377
+ expect(result.status).toBe('succeeded');
378
+ const task = await world.stateManager.getTask(EVAL_ID);
379
+ expect(task?.status).toBe('succeeded');
380
+ const bearer = await world.store.getArtifactById(SCRIBE_ART);
381
+ expect(bearer?.validationStatus).toBe('validated');
382
+ expect(seeds).toHaveLength(0);
383
+ });
384
+ it('Case B: rule defect without a mismatch finding → repair seeded exactly as before (the mismatch route must not hijack it)', async () => {
385
+ const prompts = [];
386
+ const seeds = [];
387
+ const result = await reviewEvaluator(world, {
388
+ payload: evaluatorOutput('needs_revision', ['gate too narrow'], ['Widen the match to sibling backup paths']),
389
+ prompts, seeds,
390
+ }).run(EVAL_ID);
391
+ expect(seeds).toHaveLength(1);
392
+ expect(result.status).toBe('succeeded');
393
+ const task = await world.stateManager.getTask(EVAL_ID);
394
+ expect(task?.status).not.toBe('needs_human_review');
395
+ // Formation evidence was still injected — the reviewer simply found no principle-level gap.
396
+ expect(JSON.parse(prompts[0]?.message ?? '{}').formationContext).toBeDefined();
397
+ });
398
+ it('Case C: Principle does not address the Pain (marked concern) → needs_human_review(principle_pain_mismatch), no repair seed, disposition durable', async () => {
399
+ const prompts = [];
400
+ const seeds = [];
401
+ const concern = `${PRINCIPLE_PAIN_MISMATCH_MARKER} Principle covers only a minor facet — diagnosis rootCause "${DIAGNOSIS_CONTENT.rootCause}" (evidence trajectory://session-fc/turn-4) is not addressed`;
402
+ await reviewEvaluator(world, {
403
+ payload: evaluatorOutput('needs_revision', [concern], ['Tighten the path guard']),
404
+ prompts, seeds,
405
+ }).run(EVAL_ID);
406
+ // The death-loop guard: NO artificer repair task for a principle-level finding.
407
+ expect(seeds).toHaveLength(0);
408
+ const task = await world.stateManager.getTask(EVAL_ID);
409
+ expect(task?.status).toBe('needs_human_review');
410
+ const pi = task ? hydratePITaskRecord(task) : null;
411
+ expect(pi?.humanReviewContext?.reasonCode).toBe(HUMAN_REVIEW_REASON.principlePainMismatch);
412
+ expect(pi?.humanReviewContext?.reasonCode).toBe('principle_pain_mismatch');
413
+ // Durable disposition (intent carries it — crash-resume replays the same effect).
414
+ expect(pi?.completionIntent?.effect ?? pi?.completionIntent?.selectedEffect).toBe('needs_human_review');
415
+ expect(pi?.completionIntent?.effectReasonCode).toBe('principle_pain_mismatch');
416
+ expect(world.emitted.some((e) => e.eventType === 'evaluator_governance_effect_principle_pain_mismatch_selected')).toBe(true);
417
+ });
418
+ it('Case C (approved verdict): a marked finding preempts approved effects too — bearer stays pending, Owner decides', async () => {
419
+ const prompts = [];
420
+ const seeds = [];
421
+ await reviewEvaluator(world, {
422
+ payload: evaluatorOutput('approved', [`${PRINCIPLE_PAIN_MISMATCH_MARKER} rule is fine but the principle misses the pain (pain-fc-1)`], []),
423
+ prompts, seeds,
424
+ }).run(EVAL_ID);
425
+ expect(seeds).toHaveLength(0);
426
+ const task = await world.stateManager.getTask(EVAL_ID);
427
+ expect(task?.status).toBe('needs_human_review');
428
+ const bearer = await world.store.getArtifactById(SCRIBE_ART);
429
+ expect(bearer?.validationStatus).toBe('pending');
430
+ });
431
+ it('hallucination guard: without formation evidence the marker is ignored (legacy chain keeps the pre-PRI-843 flow)', async () => {
432
+ const legacy = await makeWorld({ withDreamerLineage: false });
433
+ try {
434
+ const prompts = [];
435
+ const seeds = [];
436
+ await reviewEvaluator(legacy, {
437
+ payload: evaluatorOutput('needs_revision', [`${PRINCIPLE_PAIN_MISMATCH_MARKER} hallucinated marker without evidence`], ['Fix the gate']),
438
+ prompts, seeds,
439
+ }).run(EVAL_ID);
440
+ // Degradation is observable in behavior (rc-9): the prompt keeps the
441
+ // legacy shape — no formation block, no addendum — and the resolver's
442
+ // skip event arrives under its union-registered name.
443
+ expect(JSON.parse(prompts[0]?.message ?? '{}').formationContext).toBeUndefined();
444
+ expect(prompts[0]?.systemPrompt).toBe(EVALUATOR_PROTOCOL_INSTRUCTION);
445
+ expect(legacy.emitted.some((e) => e.eventType === 'evaluator_formation_context_skipped')).toBe(true);
446
+ // The marker cannot route without evidence: normal repair flow, no NHR.
447
+ expect(seeds).toHaveLength(1);
448
+ const task = await legacy.stateManager.getTask(EVAL_ID);
449
+ expect(task?.status).not.toBe('needs_human_review');
450
+ }
451
+ finally {
452
+ closeWorld(legacy);
453
+ }
454
+ });
455
+ it('degraded path: unreadable scribe contentJson (malformed JSON) keeps the legacy prompt shape and skips the resolver observably', async () => {
456
+ const broken = await makeWorld({ withDreamerLineage: true, scribeMalformedJson: true });
457
+ try {
458
+ const prompts = [];
459
+ const seeds = [];
460
+ await reviewEvaluator(broken, {
461
+ payload: evaluatorOutput('needs_revision', ['gate too narrow'], ['Fix the gate']),
462
+ prompts, seeds,
463
+ }).run(EVAL_ID);
464
+ expect(JSON.parse(prompts[0]?.message ?? '{}').formationContext).toBeUndefined();
465
+ expect(prompts[0]?.systemPrompt).toBe(EVALUATOR_PROTOCOL_INSTRUCTION);
466
+ expect(broken.emitted.some((e) => e.eventType === 'evaluator_formation_context_skipped')).toBe(true);
467
+ // The evaluation itself proceeds on the degraded (no-formation) basis.
468
+ expect(seeds).toHaveLength(1);
469
+ }
470
+ finally {
471
+ closeWorld(broken);
472
+ }
473
+ });
474
+ it('degraded path: unresolvable scribe artifact (lineage points nowhere) keeps the legacy prompt shape and skips the resolver observably', async () => {
475
+ const broken = await makeWorld({ withDreamerLineage: false, scribeArtifactAbsent: true });
476
+ try {
477
+ const prompts = [];
478
+ const seeds = [];
479
+ await reviewEvaluator(broken, {
480
+ payload: evaluatorOutput('needs_revision', ['gate too narrow'], ['Fix the gate']),
481
+ prompts, seeds,
482
+ }).run(EVAL_ID);
483
+ expect(JSON.parse(prompts[0]?.message ?? '{}').formationContext).toBeUndefined();
484
+ expect(prompts[0]?.systemPrompt).toBe(EVALUATOR_PROTOCOL_INSTRUCTION);
485
+ expect(broken.emitted.some((e) => e.eventType === 'evaluator_scribe_artifact_unresolvable')).toBe(true);
486
+ expect(broken.emitted.some((e) => e.eventType === 'evaluator_formation_context_skipped')).toBe(true);
487
+ expect(seeds).toHaveLength(1);
488
+ }
489
+ finally {
490
+ closeWorld(broken);
491
+ }
492
+ });
493
+ it('contextHash covers the formation lineage: differing diagnosis artifact identity ⇒ differing context hash', async () => {
494
+ const worldA = await makeWorld({ withDreamerLineage: true, diagArtifactId: 'pi-art-diag-fc-A' });
495
+ const worldB = await makeWorld({ withDreamerLineage: true, diagArtifactId: 'pi-art-diag-fc-B' });
496
+ try {
497
+ const runnerFor = (w) => reviewEvaluator(w, { payload: evaluatorOutput('approved', [], []), prompts: [], seeds: [] });
498
+ const ctxA = await runnerFor(worldA).buildContext(EVAL_ID);
499
+ const ctxB = await runnerFor(worldB).buildContext(EVAL_ID);
500
+ expect(ctxA.formationContext).toBeDefined();
501
+ expect(ctxB.formationContext).toBeDefined();
502
+ expect(ctxA.contextHash).not.toBe(ctxB.contextHash);
503
+ expect(ctxA.sourceScribeArtifactId).toBe(SCRIBE_ART);
504
+ }
505
+ finally {
506
+ closeWorld(worldA);
507
+ closeWorld(worldB);
508
+ }
509
+ });
510
+ it('restart-stable: after a requeue the resumed run re-materializes the same NHR without re-asking the LLM or seeding repair', async () => {
511
+ const prompts = [];
512
+ const seeds = [];
513
+ const runner = () => reviewEvaluator(world, {
514
+ payload: evaluatorOutput('needs_revision', [`${PRINCIPLE_PAIN_MISMATCH_MARKER} principle misses pain-fc-1`], ['Tighten the guard']),
515
+ prompts, seeds,
516
+ });
517
+ await runner().run(EVAL_ID);
518
+ expect(prompts).toHaveLength(1);
519
+ // Simulated restart: task requeued, fresh runner instance resumes.
520
+ await world.stateManager.updateTask(EVAL_ID, { status: 'pending', leaseOwner: null, leaseExpiresAt: null });
521
+ await runner().run(EVAL_ID);
522
+ const task = await world.stateManager.getTask(EVAL_ID);
523
+ const pi = task ? hydratePITaskRecord(task) : null;
524
+ expect(task?.status).toBe('needs_human_review');
525
+ expect(pi?.humanReviewContext?.reasonCode).toBe('principle_pain_mismatch');
526
+ expect(pi?.completionIntent?.status).toBe('applied');
527
+ expect(prompts).toHaveLength(1); // no LLM re-ask
528
+ expect(seeds).toHaveLength(0); // no repair seeded
529
+ });
530
+ });
531
+ //# sourceMappingURL=evaluator-formation-context.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator-formation-context.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/evaluator-formation-context.test.ts"],"names":[],"mappings":"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"}
@@ -54,8 +54,8 @@ describe('EvaluatorPromptBuilder', () => {
54
54
  const { promptInput } = builder.buildPrompt(input);
55
55
  expect(promptInput.promptContractVersion).toBe(EVALUATOR_PROMPT_CONTRACT_VERSION);
56
56
  });
57
- it('promptContractVersion value is evaluator-output-v1.prompt.v4 (PRI-703 intent-contract anchor)', () => {
58
- expect(EVALUATOR_PROMPT_CONTRACT_VERSION).toBe('evaluator-output-v1.prompt.v4');
57
+ it('promptContractVersion value is evaluator-output-v1.prompt.v5 (PRI-843 formation-context anchor)', () => {
58
+ expect(EVALUATOR_PROMPT_CONTRACT_VERSION).toBe('evaluator-output-v1.prompt.v5');
59
59
  });
60
60
  it('score instruction says number not string/percentage', () => {
61
61
  expect(EVALUATOR_PROTOCOL_INSTRUCTION).toContain('NOT a string, NOT a percentage');
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator-prompt-builder.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/evaluator-prompt-builder.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,MAAM,OAAO,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAE7C,MAAM,KAAK,GAAG;QACZ,MAAM,EAAE,oBAAoB;QAC5B,WAAW,EAAE,YAAY;QACzB,yBAAyB,EAAE,sBAAsB;QACjD,iBAAiB,EAAE;YACjB,MAAM,EAAE,oBAAoB;YAC5B,kBAAkB,EAAE;gBAClB,OAAO,EAAE,sBAAsB;gBAC/B,aAAa,EAAE,cAAc;gBAC7B,OAAO,EAAE,CAAC,eAAe,CAAC;gBAC1B,KAAK,EAAE,CAAC,8BAA8B,CAAC;gBACvC,YAAY,EAAE,CAAC,4BAA4B,CAAC;gBAC5C,UAAU,EAAE,IAAI;aACjB;SACF;KACF,CAAC;IAEF,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,uFAAuF,CAAC,CAAC;IAC5I,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,6FAA6F,CAAC,CAAC;IAClJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+FAA+F,EAAE,GAAG,EAAE;QACvG,MAAM,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC/E,oEAAoE;QACpE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC7E,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,MAAM,GAAG,iBAAiB,CAAC,8BAA8B,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAiC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,2BAA2B,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAqC,CAAC;QACjE,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAsC,CAAC;QACnE,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAChF,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"evaluator-prompt-builder.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/evaluator-prompt-builder.test.ts"],"names":[],"mappings":"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"}