@principles/core 1.185.0 → 1.187.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 (85) hide show
  1. package/dist/prompt-builder/__tests__/prompt-builder-core.test.js +58 -0
  2. package/dist/prompt-builder/__tests__/prompt-builder-core.test.js.map +1 -1
  3. package/dist/prompt-builder/size-guard.d.ts +1 -0
  4. package/dist/prompt-builder/size-guard.d.ts.map +1 -1
  5. package/dist/prompt-builder/size-guard.js +21 -0
  6. package/dist/prompt-builder/size-guard.js.map +1 -1
  7. package/dist/prompt-builder/types.d.ts +2 -0
  8. package/dist/prompt-builder/types.d.ts.map +1 -1
  9. package/dist/runtime-v2/__tests__/architecture-regression.test.js +13 -2
  10. package/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  11. package/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js +134 -15
  12. package/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js.map +1 -1
  13. package/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.d.ts +18 -0
  14. package/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.d.ts.map +1 -0
  15. package/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.js +251 -0
  16. package/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.js.map +1 -0
  17. package/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js +73 -0
  18. package/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js.map +1 -1
  19. package/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts +90 -0
  20. package/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts.map +1 -1
  21. package/dist/runtime-v2/diagnostician/diag-rootcause-output.js +108 -0
  22. package/dist/runtime-v2/diagnostician/diag-rootcause-output.js.map +1 -1
  23. package/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts +8 -0
  24. package/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts.map +1 -1
  25. package/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js +66 -3
  26. package/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js.map +1 -1
  27. package/dist/runtime-v2/diagnostician-output.d.ts +23 -0
  28. package/dist/runtime-v2/diagnostician-output.d.ts.map +1 -1
  29. package/dist/runtime-v2/diagnostician-output.js +16 -0
  30. package/dist/runtime-v2/diagnostician-output.js.map +1 -1
  31. package/dist/runtime-v2/diagnostician-prompt-builder.d.ts +32 -0
  32. package/dist/runtime-v2/diagnostician-prompt-builder.d.ts.map +1 -1
  33. package/dist/runtime-v2/diagnostician-prompt-builder.js.map +1 -1
  34. package/dist/runtime-v2/index.d.ts +4 -2
  35. package/dist/runtime-v2/index.d.ts.map +1 -1
  36. package/dist/runtime-v2/index.js +5 -2
  37. package/dist/runtime-v2/index.js.map +1 -1
  38. package/dist/runtime-v2/intent/__tests__/intent-friction-block.test.d.ts +2 -0
  39. package/dist/runtime-v2/intent/__tests__/intent-friction-block.test.d.ts.map +1 -0
  40. package/dist/runtime-v2/intent/__tests__/intent-friction-block.test.js +168 -0
  41. package/dist/runtime-v2/intent/__tests__/intent-friction-block.test.js.map +1 -0
  42. package/dist/runtime-v2/intent/index.d.ts +2 -0
  43. package/dist/runtime-v2/intent/index.d.ts.map +1 -1
  44. package/dist/runtime-v2/intent/index.js +2 -0
  45. package/dist/runtime-v2/intent/index.js.map +1 -1
  46. package/dist/runtime-v2/intent/intent-doc-reader-port.d.ts +95 -0
  47. package/dist/runtime-v2/intent/intent-doc-reader-port.d.ts.map +1 -0
  48. package/dist/runtime-v2/intent/intent-doc-reader-port.js +43 -0
  49. package/dist/runtime-v2/intent/intent-doc-reader-port.js.map +1 -0
  50. package/dist/runtime-v2/intent/intent-friction-block.d.ts +63 -0
  51. package/dist/runtime-v2/intent/intent-friction-block.d.ts.map +1 -0
  52. package/dist/runtime-v2/intent/intent-friction-block.js +129 -0
  53. package/dist/runtime-v2/intent/intent-friction-block.js.map +1 -0
  54. package/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.d.ts +54 -0
  55. package/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.d.ts.map +1 -0
  56. package/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.js +219 -0
  57. package/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.js.map +1 -0
  58. package/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.d.ts +2 -0
  59. package/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.d.ts.map +1 -0
  60. package/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js +360 -0
  61. package/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js.map +1 -0
  62. package/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.d.ts +2 -0
  63. package/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.d.ts.map +1 -0
  64. package/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.js +333 -0
  65. package/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.js.map +1 -0
  66. package/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.d.ts +2 -0
  67. package/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.d.ts.map +1 -0
  68. package/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.js +113 -0
  69. package/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.js.map +1 -0
  70. package/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts +13 -0
  71. package/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts.map +1 -1
  72. package/dist/runtime-v2/internalization/diag-rootcause-runner.js +42 -0
  73. package/dist/runtime-v2/internalization/diag-rootcause-runner.js.map +1 -1
  74. package/dist/runtime-v2/internalization/diag-router-runner.d.ts.map +1 -1
  75. package/dist/runtime-v2/internalization/diag-router-runner.js +27 -0
  76. package/dist/runtime-v2/internalization/diag-router-runner.js.map +1 -1
  77. package/dist/runtime-v2/pain-signal-runtime-factory.d.ts +12 -0
  78. package/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
  79. package/dist/runtime-v2/pain-signal-runtime-factory.js +1 -1
  80. package/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
  81. package/dist/runtime-v2/pain-to-principle-service.d.ts +6 -0
  82. package/dist/runtime-v2/pain-to-principle-service.d.ts.map +1 -1
  83. package/dist/runtime-v2/pain-to-principle-service.js +2 -0
  84. package/dist/runtime-v2/pain-to-principle-service.js.map +1 -1
  85. package/package.json +1 -1
@@ -0,0 +1,333 @@
1
+ /**
2
+ * DiagRouterRunner — PRI-468 Stage C intentTension additive passthrough tests.
3
+ *
4
+ * Verifies SPEC §18 requirements:
5
+ * 1. Stage A has intentTension → Stage C passes it through
6
+ * 2. Stage A has NO intentTension → Stage C does NOT generate one
7
+ * 3. Stage A has NO intentTension + LLM hallucinated one → Stage C strips it
8
+ * 4. Stage A has intentTension + LLM also produced one → Stage A wins (source of truth)
9
+ *
10
+ * ERR entries considered:
11
+ * - EP-01 / ERR-001: context.rootCauseOutput is schema-validated before reaching here
12
+ * - EP-01 / ERR-013: Object.hasOwn used for field presence check (not `in`)
13
+ * - EP-02 / ERR-009: fail-loud on missing required fields via schema validation
14
+ * - EP-03 / ERR-002: stripping hallucinated intentTension emits telemetry (observable)
15
+ */
16
+ import { describe, it, expect, vi } from 'vitest';
17
+ import { DiagRouterRunner } from '../diag-router-runner.js';
18
+ import { MemoryPIArtifactStore } from '../pi-artifact-store.js';
19
+ import { createPITaskDiagnosticJson } from '../pitask-metadata.js';
20
+ import { MOCK_ROOT_CAUSE_OUTPUTS, MOCK_DISTILLER_OUTPUTS, MOCK_ROUTER_OUTPUTS } from './__fixtures__/split-pipeline-mock-outputs.js';
21
+ // ── Test fixtures ────────────────────────────────────────────────────────────
22
+ const ROUTER_TASK_ID = 'diag_router-001';
23
+ const ROOTCAUSE_TASK_ID = 'diag_rootcause-001';
24
+ const DISTILLER_TASK_ID = 'diag_distiller-001';
25
+ const RUN_ID = 'run-router-001';
26
+ const OWNER = 'test-router-intent-owner';
27
+ const RUNTIME_KIND = 'test-double';
28
+ const ROOTCAUSE_ARTIFACT_ID = 'pi-art-rc-001';
29
+ const DISTILLER_ARTIFACT_ID = 'pi-art-dist-001';
30
+ const VALID_INTENT_TENSION = {
31
+ source: 'action_drift',
32
+ evidenceStrength: 'moderate',
33
+ relatedIntentFields: ['current_strategic_focus', 'non_negotiables'],
34
+ evidence: [
35
+ 'INTENT says current focus is validating the smallest Pain → Principle loop.',
36
+ 'Agent designed a heavy dashboard.',
37
+ 'Owner correction says the result increased review burden.',
38
+ ],
39
+ explanation: 'The work may be useful later, but it optimized presentation completeness before validating the current learning loop.',
40
+ suggestedOwnerAction: 'confirm_drift',
41
+ intentDocHash: 'sha256:abc123',
42
+ };
43
+ function makeRootCauseTask(overrides = {}) {
44
+ return {
45
+ taskId: ROOTCAUSE_TASK_ID,
46
+ taskKind: 'diag_rootcause',
47
+ status: 'succeeded',
48
+ attemptCount: 1,
49
+ maxAttempts: 3,
50
+ resultRef: 'diag-rootcause://run-rc-001',
51
+ createdAt: new Date().toISOString(),
52
+ updatedAt: new Date().toISOString(),
53
+ diagnosticJson: '{}',
54
+ ...overrides,
55
+ };
56
+ }
57
+ function makeDistillerTask(overrides = {}) {
58
+ return {
59
+ taskId: DISTILLER_TASK_ID,
60
+ taskKind: 'diag_distiller',
61
+ status: 'succeeded',
62
+ attemptCount: 1,
63
+ maxAttempts: 3,
64
+ resultRef: 'diag-distiller://run-dist-001',
65
+ createdAt: new Date().toISOString(),
66
+ updatedAt: new Date().toISOString(),
67
+ diagnosticJson: '{}',
68
+ ...overrides,
69
+ };
70
+ }
71
+ function makeRouterTask(overrides = {}) {
72
+ return {
73
+ taskId: ROUTER_TASK_ID,
74
+ taskKind: 'diag_router',
75
+ status: 'pending',
76
+ attemptCount: 0,
77
+ maxAttempts: 3,
78
+ createdAt: new Date().toISOString(),
79
+ updatedAt: new Date().toISOString(),
80
+ diagnosticJson: createPITaskDiagnosticJson({
81
+ dependencyTaskIds: [ROOTCAUSE_TASK_ID, DISTILLER_TASK_ID],
82
+ channel: 'prompt',
83
+ timeoutMs: 300_000,
84
+ inputArtifactRefs: [],
85
+ outputArtifactRefs: [],
86
+ }),
87
+ ...overrides,
88
+ };
89
+ }
90
+ function makeRootCauseOutput(intentTension) {
91
+ const base = {
92
+ ...MOCK_ROOT_CAUSE_OUTPUTS.R6,
93
+ diagnosisId: 'diag-001',
94
+ taskId: ROOTCAUSE_TASK_ID,
95
+ };
96
+ return intentTension ? { ...base, intentTension } : base;
97
+ }
98
+ function makeDistillerOutput() {
99
+ return {
100
+ ...MOCK_DISTILLER_OUTPUTS.R6,
101
+ taskId: DISTILLER_TASK_ID,
102
+ sourceRootCauseArtifactId: ROOTCAUSE_ARTIFACT_ID,
103
+ };
104
+ }
105
+ function makeRouterOutput(intentTension) {
106
+ const base = {
107
+ ...MOCK_ROUTER_OUTPUTS.R6,
108
+ diagnosisId: 'diag-001',
109
+ };
110
+ if (intentTension !== undefined) {
111
+ return { ...base, intentTension: intentTension };
112
+ }
113
+ return base;
114
+ }
115
+ /** Pre-populate a MemoryPIArtifactStore with both predecessor artifacts. */
116
+ function populatePredecessorArtifacts(store, rootCauseOutput) {
117
+ store.upsertArtifact({
118
+ artifactId: ROOTCAUSE_ARTIFACT_ID,
119
+ artifactKind: 'principle',
120
+ sourceTaskId: ROOTCAUSE_TASK_ID,
121
+ lineageArtifactIds: [],
122
+ validationStatus: 'pending',
123
+ contentJson: JSON.stringify(rootCauseOutput),
124
+ createdAt: new Date().toISOString(),
125
+ updatedAt: new Date().toISOString(),
126
+ });
127
+ store.upsertArtifact({
128
+ artifactId: DISTILLER_ARTIFACT_ID,
129
+ artifactKind: 'principle',
130
+ sourceTaskId: DISTILLER_TASK_ID,
131
+ lineageArtifactIds: [ROOTCAUSE_ARTIFACT_ID],
132
+ validationStatus: 'pending',
133
+ contentJson: JSON.stringify(makeDistillerOutput()),
134
+ createdAt: new Date().toISOString(),
135
+ updatedAt: new Date().toISOString(),
136
+ });
137
+ }
138
+ // ── Mock factory ─────────────────────────────────────────────────────────────
139
+ function createMockDeps(rootCauseOutput, routerOutput, overrides = {}) {
140
+ const taskRecord = makeRouterTask();
141
+ const _stateManager = {
142
+ acquireLease: vi.fn().mockResolvedValue(taskRecord),
143
+ getTask: vi.fn().mockImplementation((id) => {
144
+ if (id === ROUTER_TASK_ID)
145
+ return Promise.resolve(taskRecord);
146
+ if (id === ROOTCAUSE_TASK_ID)
147
+ return Promise.resolve(makeRootCauseTask());
148
+ if (id === DISTILLER_TASK_ID)
149
+ return Promise.resolve(makeDistillerTask());
150
+ return Promise.resolve(undefined);
151
+ }),
152
+ getRunsByTask: vi.fn().mockResolvedValue([{ runId: RUN_ID, taskId: ROUTER_TASK_ID }]),
153
+ getValidRunsByTaskTolerant: vi.fn().mockResolvedValue({
154
+ runs: [{ runId: RUN_ID, taskId: ROUTER_TASK_ID }],
155
+ degradedRuns: [],
156
+ }),
157
+ updateRunOutput: vi.fn().mockResolvedValue(undefined),
158
+ markTaskSucceeded: vi.fn().mockResolvedValue(undefined),
159
+ markTaskFailed: vi.fn().mockResolvedValue(undefined),
160
+ markTaskRetryWait: vi.fn().mockResolvedValue(undefined),
161
+ getRetryPolicy: vi.fn().mockReturnValue({ shouldRetry: () => false }),
162
+ };
163
+ const runHandle = { runId: RUN_ID, runtimeKind: RUNTIME_KIND, startedAt: new Date().toISOString() };
164
+ const succeededStatus = { status: 'succeeded', runId: RUN_ID };
165
+ const _runtimeAdapter = {
166
+ kind: vi.fn().mockReturnValue(RUNTIME_KIND),
167
+ getCapabilities: vi.fn(),
168
+ healthCheck: vi.fn(),
169
+ startRun: vi.fn().mockResolvedValue(runHandle),
170
+ pollRun: vi.fn().mockResolvedValue(succeededStatus),
171
+ fetchOutput: vi.fn().mockResolvedValue({ payload: routerOutput }),
172
+ cancelRun: vi.fn().mockResolvedValue(undefined),
173
+ fetchArtifacts: vi.fn(),
174
+ };
175
+ const commitResult = {
176
+ commitId: 'commit-001',
177
+ artifactId: 'art-001',
178
+ candidateCount: 1,
179
+ };
180
+ const _committer = {
181
+ commit: vi.fn().mockResolvedValue(commitResult),
182
+ };
183
+ const _eventEmitter = {
184
+ emitTelemetry: vi.fn(),
185
+ on: vi.fn(),
186
+ emit: vi.fn(),
187
+ };
188
+ const artifactStore = new MemoryPIArtifactStore();
189
+ populatePredecessorArtifacts(artifactStore, rootCauseOutput);
190
+ return {
191
+ stateManager: _stateManager,
192
+ runtimeAdapter: _runtimeAdapter,
193
+ eventEmitter: _eventEmitter,
194
+ artifactStore,
195
+ committer: _committer,
196
+ _stateManager,
197
+ _runtimeAdapter,
198
+ _committer,
199
+ _eventEmitter,
200
+ ...overrides,
201
+ };
202
+ }
203
+ function telemetryEventType(call) {
204
+ const event = call[0];
205
+ return event?.eventType;
206
+ }
207
+ function telemetryPayload(call) {
208
+ const event = call[0];
209
+ return event?.payload;
210
+ }
211
+ // ── Tests ────────────────────────────────────────────────────────────────────
212
+ describe('DiagRouterRunner — PRI-468 Stage C intentTension passthrough', () => {
213
+ it('Stage A has intentTension → Stage C passes it through', async () => {
214
+ const rootCause = makeRootCauseOutput(VALID_INTENT_TENSION);
215
+ const routerOut = makeRouterOutput(); // LLM did NOT produce intentTension
216
+ const deps = createMockDeps(rootCause, routerOut);
217
+ const runner = new DiagRouterRunner(deps, {
218
+ owner: OWNER,
219
+ runtimeKind: RUNTIME_KIND,
220
+ pollIntervalMs: 10,
221
+ timeoutMs: 1000,
222
+ });
223
+ const result = await runner.run(ROUTER_TASK_ID);
224
+ expect(result.status).toBe('succeeded');
225
+ // Verify the committed output has intentTension from Stage A
226
+ const commitMock = deps._committer.commit;
227
+ if (!commitMock)
228
+ throw new Error('commit mock not configured');
229
+ const [commitCall] = commitMock.mock.calls;
230
+ const committedOutput = commitCall?.[0]?.output;
231
+ expect(committedOutput.intentTension).toBeDefined();
232
+ expect(committedOutput.intentTension).toEqual(VALID_INTENT_TENSION);
233
+ });
234
+ it('Stage A has NO intentTension → Stage C does NOT generate one', async () => {
235
+ const rootCause = makeRootCauseOutput(); // No intentTension
236
+ const routerOut = makeRouterOutput(); // LLM also did not produce one
237
+ const deps = createMockDeps(rootCause, routerOut);
238
+ const runner = new DiagRouterRunner(deps, {
239
+ owner: OWNER,
240
+ runtimeKind: RUNTIME_KIND,
241
+ pollIntervalMs: 10,
242
+ timeoutMs: 1000,
243
+ });
244
+ const result = await runner.run(ROUTER_TASK_ID);
245
+ expect(result.status).toBe('succeeded');
246
+ // Verify the committed output does NOT have intentTension
247
+ const commitMock = deps._committer.commit;
248
+ if (!commitMock)
249
+ throw new Error('commit mock not configured');
250
+ const [commitCall] = commitMock.mock.calls;
251
+ const committedOutput = commitCall?.[0]?.output;
252
+ expect(committedOutput.intentTension).toBeUndefined();
253
+ });
254
+ it('Stage A has NO intentTension + LLM hallucinated one → Stage C strips it with telemetry', async () => {
255
+ const rootCause = makeRootCauseOutput(); // No intentTension
256
+ // LLM hallucinated an intentTension
257
+ const hallucinatedTension = {
258
+ source: 'healthy_tension',
259
+ evidenceStrength: 'weak',
260
+ relatedIntentFields: ['why'],
261
+ evidence: ['fake evidence'],
262
+ explanation: 'hallucinated',
263
+ suggestedOwnerAction: 'dismiss',
264
+ };
265
+ const routerOut = makeRouterOutput(hallucinatedTension);
266
+ const deps = createMockDeps(rootCause, routerOut);
267
+ const runner = new DiagRouterRunner(deps, {
268
+ owner: OWNER,
269
+ runtimeKind: RUNTIME_KIND,
270
+ pollIntervalMs: 10,
271
+ timeoutMs: 1000,
272
+ });
273
+ const result = await runner.run(ROUTER_TASK_ID);
274
+ expect(result.status).toBe('succeeded');
275
+ // Verify the committed output does NOT have intentTension (stripped)
276
+ const commitMock = deps._committer.commit;
277
+ if (!commitMock)
278
+ throw new Error('commit mock not configured');
279
+ const [commitCall] = commitMock.mock.calls;
280
+ const committedOutput = commitCall?.[0]?.output;
281
+ expect(committedOutput.intentTension).toBeUndefined();
282
+ // Verify telemetry was emitted for the strip (EP-03 / ERR-002: observable)
283
+ const telemetryCalls = deps._eventEmitter.emitTelemetry.mock.calls.filter((call) => telemetryEventType(call) === 'diag_router_invariant_override');
284
+ const intentTensionCall = telemetryCalls.find((call) => telemetryPayload(call)?.field === 'intentTension');
285
+ expect(intentTensionCall).toBeDefined();
286
+ if (!intentTensionCall)
287
+ return; // type narrowing after assertion
288
+ const payload = telemetryPayload(intentTensionCall);
289
+ expect(payload?.field).toBe('intentTension');
290
+ expect(payload?.reason).toContain('stripped');
291
+ });
292
+ it('Stage A has intentTension + LLM also produced one → Stage A wins (source of truth)', async () => {
293
+ const rootCause = makeRootCauseOutput(VALID_INTENT_TENSION);
294
+ // LLM produced a DIFFERENT intentTension
295
+ const llmTension = {
296
+ source: 'none',
297
+ evidenceStrength: 'weak',
298
+ relatedIntentFields: ['why'],
299
+ evidence: ['llm evidence'],
300
+ explanation: 'llm explanation',
301
+ suggestedOwnerAction: 'observe',
302
+ };
303
+ const routerOut = makeRouterOutput(llmTension);
304
+ const deps = createMockDeps(rootCause, routerOut);
305
+ const runner = new DiagRouterRunner(deps, {
306
+ owner: OWNER,
307
+ runtimeKind: RUNTIME_KIND,
308
+ pollIntervalMs: 10,
309
+ timeoutMs: 1000,
310
+ });
311
+ const result = await runner.run(ROUTER_TASK_ID);
312
+ expect(result.status).toBe('succeeded');
313
+ // Verify the committed output has Stage A's intentTension (not LLM's)
314
+ const commitMock = deps._committer.commit;
315
+ if (!commitMock)
316
+ throw new Error('commit mock not configured');
317
+ const [commitCall] = commitMock.mock.calls;
318
+ const committedOutput = commitCall?.[0]?.output;
319
+ expect(committedOutput.intentTension).toEqual(VALID_INTENT_TENSION);
320
+ expect(committedOutput.intentTension).not.toEqual(llmTension);
321
+ // Verify telemetry was emitted for the override (filter to intentTension field —
322
+ // `evidence` is always overridden in postFetchTransform, so find() would match it first)
323
+ const telemetryCalls = deps._eventEmitter.emitTelemetry.mock.calls.filter((call) => telemetryEventType(call) === 'diag_router_invariant_override');
324
+ const intentTensionCall = telemetryCalls.find((call) => telemetryPayload(call)?.field === 'intentTension');
325
+ expect(intentTensionCall).toBeDefined();
326
+ if (!intentTensionCall)
327
+ return; // type narrowing after assertion
328
+ const payload = telemetryPayload(intentTensionCall);
329
+ expect(payload?.field).toBe('intentTension');
330
+ expect(payload?.reason).toContain('overridden');
331
+ });
332
+ });
333
+ //# sourceMappingURL=diag-router-intent-tension.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diag-router-intent-tension.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=intent-tension-cases.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-tension-cases.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/intent-tension-cases.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * A/B Evaluation Cases fixtures test (SPEC §23.5–§23.8).
3
+ *
4
+ * Validates the offline evaluation dataset:
5
+ * - 10 total cases (4 positive + 4 negative + 2 intent_suspect)
6
+ * - Positive cases: source ∈ {action_drift, healthy_tension}, strength ≥ moderate
7
+ * - Negative cases: no intentTension expected (null)
8
+ * - intent_suspect cases: source = intent_suspect, action = revise_intent
9
+ * - All expected intentTension values pass the IntentTensionSchema
10
+ * - No case carries a `confidence` field (SPEC §16.3)
11
+ *
12
+ * ERR entries considered:
13
+ * - EP-01 / ERR-001: fixtures validated against TypeBox schema at runtime
14
+ * - EP-02 / ERR-009: composition counts asserted fail-loud
15
+ * - EP-03 / ERR-002: negative cases explicitly assert null (no silent skip)
16
+ */
17
+ import { describe, it, expect } from 'vitest';
18
+ import { Value } from '@sinclair/typebox/value';
19
+ import { IntentTensionSchema } from '../../diagnostician/diag-rootcause-output.js';
20
+ import { INTENT_TENSION_CASES, INTENT_TENSION_CASE_COUNTS, } from './__fixtures__/intent-tension-cases.js';
21
+ describe('IntentTension A/B evaluation cases (SPEC §23.5)', () => {
22
+ it('has the required composition: 4 positive + 4 negative + 2 intent_suspect = 10', () => {
23
+ expect(INTENT_TENSION_CASE_COUNTS.total).toBe(10);
24
+ expect(INTENT_TENSION_CASE_COUNTS.positive).toBe(4);
25
+ expect(INTENT_TENSION_CASE_COUNTS.negative).toBe(4);
26
+ expect(INTENT_TENSION_CASE_COUNTS.intent_suspect).toBe(2);
27
+ });
28
+ it('every case id is unique', () => {
29
+ const ids = INTENT_TENSION_CASES.map((c) => c.id);
30
+ expect(new Set(ids).size).toBe(ids.length);
31
+ });
32
+ it('every flag-off diagnosis has intentTension === undefined (SPEC §3: no new output when flag off)', () => {
33
+ for (const c of INTENT_TENSION_CASES) {
34
+ expect(c.flagOffDiagnosis.intentTension).toBeUndefined();
35
+ }
36
+ });
37
+ describe('positive cases (§23.6)', () => {
38
+ const positives = INTENT_TENSION_CASES.filter((c) => c.category === 'positive');
39
+ it('all have expected intentTension (not null)', () => {
40
+ for (const c of positives) {
41
+ expect(c.flagOnExpectedIntentTension, `case ${c.id}`).not.toBeNull();
42
+ }
43
+ });
44
+ it('source is action_drift or healthy_tension', () => {
45
+ for (const c of positives) {
46
+ const src = c.flagOnExpectedIntentTension?.source;
47
+ expect(src, `case ${c.id}`).toMatch(/^(action_drift|healthy_tension)$/);
48
+ }
49
+ });
50
+ it('evidenceStrength is at least moderate', () => {
51
+ for (const c of positives) {
52
+ const strength = c.flagOnExpectedIntentTension?.evidenceStrength;
53
+ expect(strength, `case ${c.id}`).toMatch(/^(moderate|strong)$/);
54
+ }
55
+ });
56
+ it('all expected intentTension values pass IntentTensionSchema', () => {
57
+ for (const c of positives) {
58
+ const tension = c.flagOnExpectedIntentTension;
59
+ expect(tension, `case ${c.id}`).toBeDefined();
60
+ if (!tension)
61
+ continue; // type narrowing after assertion
62
+ expect(Value.Check(IntentTensionSchema, tension), `case ${c.id}`).toBe(true);
63
+ }
64
+ });
65
+ });
66
+ describe('negative cases (§23.7)', () => {
67
+ const negatives = INTENT_TENSION_CASES.filter((c) => c.category === 'negative');
68
+ it('all expect NO intentTension even with flag on (null)', () => {
69
+ for (const c of negatives) {
70
+ expect(c.flagOnExpectedIntentTension, `case ${c.id}`).toBeNull();
71
+ }
72
+ });
73
+ });
74
+ describe('intent_suspect cases (§23.8)', () => {
75
+ const suspects = INTENT_TENSION_CASES.filter((c) => c.category === 'intent_suspect');
76
+ it('all have source = intent_suspect', () => {
77
+ for (const c of suspects) {
78
+ expect(c.flagOnExpectedIntentTension?.source, `case ${c.id}`).toBe('intent_suspect');
79
+ }
80
+ });
81
+ it('all suggest revise_intent', () => {
82
+ for (const c of suspects) {
83
+ expect(c.flagOnExpectedIntentTension?.suggestedOwnerAction, `case ${c.id}`).toBe('revise_intent');
84
+ }
85
+ });
86
+ it('all expected intentTension values pass IntentTensionSchema', () => {
87
+ for (const c of suspects) {
88
+ const tension = c.flagOnExpectedIntentTension;
89
+ expect(tension, `case ${c.id}`).toBeDefined();
90
+ if (!tension)
91
+ continue; // type narrowing after assertion
92
+ expect(Value.Check(IntentTensionSchema, tension), `case ${c.id}`).toBe(true);
93
+ }
94
+ });
95
+ });
96
+ it('no expected intentTension carries a `confidence` field (SPEC §16.3)', () => {
97
+ for (const c of INTENT_TENSION_CASES) {
98
+ const tension = c.flagOnExpectedIntentTension;
99
+ if (tension === null)
100
+ continue;
101
+ expect(Object.hasOwn(tension, 'confidence'), `case ${c.id} must not carry confidence`).toBe(false);
102
+ }
103
+ });
104
+ it('all non-null expected intentTension values pass the schema (cross-cut)', () => {
105
+ for (const c of INTENT_TENSION_CASES) {
106
+ const tension = c.flagOnExpectedIntentTension;
107
+ if (tension === null)
108
+ continue;
109
+ expect(Value.Check(IntentTensionSchema, tension), `case ${c.id}`).toBe(true);
110
+ }
111
+ });
112
+ });
113
+ //# sourceMappingURL=intent-tension-cases.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-tension-cases.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/intent-tension-cases.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,wCAAwC,CAAC;AAEhD,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAC/D,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACvF,MAAM,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,GAAG,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iGAAiG,EAAE,GAAG,EAAE;QACzG,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;QAChF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,CAAC,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACvE,CAAC;QACH,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,2BAA2B,EAAE,MAAM,CAAC;gBAClD,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,QAAQ,GAAG,CAAC,CAAC,2BAA2B,EAAE,gBAAgB,CAAC;gBACjE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YAClE,CAAC;QACH,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,2BAA2B,CAAC;gBAC9C,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC9C,IAAI,CAAC,OAAO;oBAAE,SAAS,CAAC,iCAAiC;gBACzD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;QAChF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,CAAC,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,gBAAgB,CAAC,CAAC;QACrF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,CAAC,CAAC,CAAC,2BAA2B,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACvF,CAAC;QACH,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,CAAC,CAAC,CAAC,2BAA2B,EAAE,oBAAoB,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpG,CAAC;QACH,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,CAAC,CAAC,2BAA2B,CAAC;gBAC9C,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC9C,IAAI,CAAC,OAAO;oBAAE,SAAS,CAAC,iCAAiC;gBACzD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,CAAC,CAAC,2BAA2B,CAAC;YAC9C,IAAI,OAAO,KAAK,IAAI;gBAAE,SAAS;YAC/B,MAAM,CACJ,MAAM,CAAC,MAAM,CAAC,OAA4B,EAAE,YAAY,CAAC,EACzD,QAAQ,CAAC,CAAC,EAAE,4BAA4B,CACzC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,CAAC,CAAC,2BAA2B,CAAC;YAC9C,IAAI,OAAO,KAAK,IAAI;gBAAE,SAAS;YAC/B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -25,6 +25,7 @@ import type { DiagnosticianContextPayload } from '../context-payload.js';
25
25
  import type { ContextAssembler } from '../store/context/context-assembler.js';
26
26
  import type { TaskRecord } from '../task-status.js';
27
27
  import type { EffectivePdConfig } from '../config/pd-config-types.js';
28
+ import type { IntentDocReader } from '../intent/intent-doc-reader-port.js';
28
29
  import { type PDErrorCategory } from '../error-categories.js';
29
30
  import { BasePeerRunner } from '../runner/base-peer-runner.js';
30
31
  import type { PeerRunnerOptions, PeerRunnerDeps, PeerRunnerResult, PeerRunnerValidationResult } from '../runner/peer-runner-types.js';
@@ -37,6 +38,17 @@ interface DiagRootCauseContext {
37
38
  export interface DiagRootCauseRunnerDeps extends PeerRunnerDeps {
38
39
  readonly validator: DiagRootCauseValidator;
39
40
  readonly contextAssembler: ContextAssembler;
41
+ /**
42
+ * PRI-468: Optional INTENT.md reader for Stage A intent tension check.
43
+ *
44
+ * When provided AND `intent_engineering` flag is on, the runner reads
45
+ * INTENT.md and injects it into the Stage A prompt as reference context
46
+ * for the LLM to optionally produce `intentTension`.
47
+ *
48
+ * When absent or flag off, the runner behaves as before (byte-identical
49
+ * prompt — EP-03: no silent fallback).
50
+ */
51
+ readonly intentDocReader?: IntentDocReader;
40
52
  }
41
53
  export interface DiagRootCauseRunnerOptions extends PeerRunnerOptions {
42
54
  /** Effective PD config for feature flag resolution (PRI-371). */
@@ -55,6 +67,7 @@ export declare class DiagRootCauseRunner extends BasePeerRunner<DiagRootCauseCon
55
67
  private readonly validator;
56
68
  private readonly contextAssembler;
57
69
  private readonly effectiveConfig?;
70
+ private readonly intentDocReader?;
58
71
  constructor(deps: DiagRootCauseRunnerDeps, options: DiagRootCauseRunnerOptions);
59
72
  get permanentErrorCategories(): ReadonlySet<PDErrorCategory>;
60
73
  buildContext(taskId: string): Promise<DiagRootCauseContext>;
@@ -1 +1 @@
1
- {"version":3,"file":"diag-rootcause-runner.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/diag-rootcause-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAC/G,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,gCAAgC,CAAC;AAIxC,2FAA2F;AAC3F,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,2BAA2B,CAAC;CACnD;AAID,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC7C;AAID,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACnE,iEAAiE;IACjE,QAAQ,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC;CAC9C;AAID;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,SAAQ,cAAc,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;IAClG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAoB;gBAEzC,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,0BAA0B;IAe9E,IAAI,wBAAwB,IAAI,WAAW,CAAC,eAAe,CAAC,CAE3D;IAEK,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAyC3D,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC;IAwBhF,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAUpH,WAAW,CACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;IA+FnD;;;;OAIG;cAEgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;cAIlE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI;CAM7H"}
1
+ {"version":3,"file":"diag-rootcause-runner.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/diag-rootcause-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAC/G,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,gCAAgC,CAAC;AAIxC,2FAA2F;AAC3F,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,2BAA2B,CAAC;CACnD;AAID,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C;;;;;;;;;OASG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;CAC5C;AAID,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACnE,iEAAiE;IACjE,QAAQ,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC;CAC9C;AAID;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,SAAQ,cAAc,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;IAClG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAkB;gBAEvC,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,0BAA0B;IAgB9E,IAAI,wBAAwB,IAAI,WAAW,CAAC,eAAe,CAAC,CAE3D;IAEK,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAyC3D,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC;IA+DhF,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAUpH,WAAW,CACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;IA+FnD;;;;OAIG;cAEgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;cAIlE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI;CAM7H"}
@@ -39,6 +39,7 @@ export class DiagRootCauseRunner extends BasePeerRunner {
39
39
  validator;
40
40
  contextAssembler;
41
41
  effectiveConfig;
42
+ intentDocReader;
42
43
  constructor(deps, options) {
43
44
  super(deps, options, {
44
45
  runnerName: 'diag_rootcause',
@@ -49,6 +50,7 @@ export class DiagRootCauseRunner extends BasePeerRunner {
49
50
  this.validator = deps.validator;
50
51
  this.contextAssembler = deps.contextAssembler;
51
52
  this.effectiveConfig = options.effectiveConfig;
53
+ this.intentDocReader = deps.intentDocReader;
52
54
  }
53
55
  // ── Abstract implementations ───────────────────────────────────────────────
54
56
  // eslint-disable-next-line @typescript-eslint/class-methods-use-this
@@ -92,14 +94,54 @@ export class DiagRootCauseRunner extends BasePeerRunner {
92
94
  async invokeRuntime(taskId, context) {
93
95
  // T-E (PRI-371): Read diagnostician_core_grounding flag from effective config.
94
96
  let coreGrounding = false;
97
+ // PRI-468: Read intent_engineering flag from effective config.
98
+ let intentGrounding = false;
95
99
  if (this.effectiveConfig) {
96
100
  const featureFlags = computeFeatureFlagsFromConfig(this.effectiveConfig);
97
101
  coreGrounding = isFeatureEnabled(featureFlags, 'diagnostician_core_grounding');
102
+ intentGrounding = isFeatureEnabled(featureFlags, 'intent_engineering');
103
+ }
104
+ // PRI-468: When intent_engineering is on AND a reader is configured,
105
+ // attempt to read INTENT.md. On any degraded path (not_found, oversized,
106
+ // read_error, flag_disabled, or no reader configured), intentGrounding
107
+ // is downgraded to false and the prompt is byte-identical to the
108
+ // pre-PRI-468 prompt (EP-03 / ERR-002: graceful degradation with
109
+ // observable telemetry).
110
+ let intentDoc;
111
+ if (intentGrounding && !this.intentDocReader) {
112
+ // Flag on but no reader wired — downgrade silently (factory misconfiguration
113
+ // is not a per-task event; it's a startup-time issue). The prompt stays
114
+ // byte-identical to pre-PRI-468.
115
+ intentGrounding = false;
116
+ }
117
+ else if (intentGrounding && this.intentDocReader) {
118
+ const readResult = this.intentDocReader.readIntentDoc();
119
+ if (readResult.ok && readResult.doc) {
120
+ intentDoc = {
121
+ raw: readResult.doc.raw,
122
+ contentHash: readResult.doc.contentHash,
123
+ path: readResult.doc.path,
124
+ };
125
+ }
126
+ else {
127
+ // EP-03 / ERR-002: degrade gracefully but observably.
128
+ // Flag stays on in config, but we do not inject INTENT — emit
129
+ // telemetry so the operator can see why INTENT was not injected.
130
+ this.emitEvent('intent_doc_read_failed', taskId, {
131
+ reason: readResult.reason ?? 'unknown',
132
+ nextAction: readResult.nextAction ?? 'Check INTENT.md configuration.',
133
+ flagEnabled: readResult.flagEnabled,
134
+ found: readResult.found,
135
+ });
136
+ intentGrounding = false;
137
+ }
98
138
  }
99
139
  const builder = new RootCausePromptBuilder();
100
140
  const { message } = builder.buildPrompt(context.painPayload, {
101
141
  outputLanguage: this.resolvedOptions.outputLanguage,
102
142
  coreGrounding,
143
+ intentGrounding,
144
+ intentDoc,
103
145
  });
104
146
  return this.runtimeAdapter.startRun({
105
147
  agentSpec: { agentId: this.resolvedOptions.agentId, schemaVersion: 'v1' },
@@ -1 +1 @@
1
- {"version":3,"file":"diag-rootcause-runner.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/diag-rootcause-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAQH,OAAO,EAAE,cAAc,EAAwB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AA+B/D,gFAAgF;AAEhF;;;;;;;;GAQG;AACH,MAAM,OAAO,mBAAoB,SAAQ,cAA2D;IACjF,SAAS,CAAyB;IAClC,gBAAgB,CAAmB;IACnC,eAAe,CAAqB;IAErD,YAAY,IAA6B,EAAE,OAAmC;QAC5E,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE;YACnB,UAAU,EAAE,gBAAgB;YAC5B,gBAAgB,EAAE,gBAAgB;YAClC,cAAc,EAAE,gBAAgB;YAChC,eAAe,EAAE,gBAAgB;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IACjD,CAAC;IAED,8EAA8E;IAE9E,qEAAqE;IACrE,IAAI,wBAAwB;QAC1B,OAAO,IAAI,GAAG,CAAC,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;IACnH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,cAAc,CAAC,eAAe,EAAE,QAAQ,MAAM,YAAY,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;QAE7C,oDAAoD;QACpD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEvE,sCAAsC;QACtC,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,EAAE,iBAAiB,IAAI,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAa,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QAE1D,kCAAkC;QAClC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CACtD,CAAC;YACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,MAAM,IAAI,KAAK,KAAK,SAAS;oBAAE,SAAS;gBAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAClD,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;wBAC3B,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC3C,CAAC;oBACD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC1E,IAAI,SAAS,EAAE,kBAAkB,EAAE,CAAC;wBAClC,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACtE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAChE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,OAA6B;QAC/D,+EAA+E;QAC/E,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACzE,aAAa,GAAG,gBAAgB,CAAC,YAAY,EAAE,8BAA8B,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE;YAC3D,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc;YACnD,aAAa;SACd,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YAClC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE;YACzE,OAAO,EAAE,EAAE,MAAM,EAAE;YACnB,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,EAAE;YAChB,eAAe,EAAE,0BAA0B;YAC3C,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAe,EAAE,MAAc,EAAE,QAA8B;QAClF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7D,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,aAA4C;SACnE,CAAC;IACJ,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,WAAW,CACf,MAAc,EACd,KAAa,EACb,MAA6B,EAC7B,IAAgB,EAChB,WAAmB,EACnB,QAA8B;QAE9B,2CAA2C;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,MAAM,EAAE;gBAC7C,KAAK;gBACL,YAAY,EAAE,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;aACjF,CAAC,CAAC;YACH,MAAM,SAAS,CAAC;QAClB,CAAC;QAED,kFAAkF;QAClF,IAAI,kBAAkB,GAAa,EAAE,CAAC;QACtC,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;YACnE,kBAAkB,GAAG,aAAa,CAAC,GAAG,CAAC;YACvC,kBAAkB,GAAG,aAAa,CAAC,WAAW,CAAC;QACjD,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,MAAM,EAAE;gBAC/C,KAAK;gBACL,YAAY,EAAE,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;aACpF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,kBAAkB,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,EAAE;gBACxC,KAAK;gBACL,aAAa,EAAE,kBAAkB,CAAC,MAAM;gBACxC,OAAO,EAAE,2EAA2E;aACrF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAAG,UAAU,MAAM,IAAI,KAAK,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;gBACtC,UAAU;gBACV,YAAY,EAAE,WAAW;gBACzB,YAAY,EAAE,MAAM;gBACpB,kBAAkB;gBAClB,gBAAgB,EAAE,SAAS;gBAC3B,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBACnC,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,MAAM,EAAE;gBAC9C,KAAK;gBACL,YAAY,EAAE,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;aACvF,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,WAAW,CAAC;gBACtB,MAAM;gBACN,IAAI;gBACJ,aAAa,EAAE,wBAAwB;gBACvC,aAAa,EAAE,4BAA4B,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;aACtH,CAAC,CAAC;QACL,CAAC;QAED,yBAAyB;QACzB,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,MAAM,KAAK,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,MAAM,EAAE;gBAC9C,MAAM;gBACN,KAAK;gBACL,YAAY,EAAE,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;aAC9E,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC;QACjB,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,EAAE;YACvC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS;YACT,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM;SAC5C,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,MAAM;YACN,KAAK;YACL,UAAU;YACV,SAAS;YACT,WAAW;YACX,MAAM;YACN,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,8EAA8E;IAE9E;;;;OAIG;IACH,qEAAqE;IAClD,kBAAkB,CAAC,MAAc,EAAE,eAAwB;QAC5E,2BAA2B,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAEkB,oBAAoB,CAAC,MAAc,EAAE,MAA6B,EAAE,QAA8B;QACnH,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,MAAM,EAAE;YAC5C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM;SAC5C,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"diag-rootcause-runner.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/diag-rootcause-runner.ts"],"names":[],"mappings":"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"}