@principles/core 1.84.0 → 1.85.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 (22) hide show
  1. package/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.d.ts +2 -0
  2. package/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.d.ts.map +1 -0
  3. package/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.js +398 -0
  4. package/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.js.map +1 -0
  5. package/dist/runtime-v2/internalization/philosopher-output.d.ts +8 -2
  6. package/dist/runtime-v2/internalization/philosopher-output.d.ts.map +1 -1
  7. package/dist/runtime-v2/internalization/philosopher-output.js +16 -11
  8. package/dist/runtime-v2/internalization/philosopher-output.js.map +1 -1
  9. package/dist/runtime-v2/internalization/philosopher-runner.d.ts +36 -55
  10. package/dist/runtime-v2/internalization/philosopher-runner.d.ts.map +1 -1
  11. package/dist/runtime-v2/internalization/philosopher-runner.js +117 -401
  12. package/dist/runtime-v2/internalization/philosopher-runner.js.map +1 -1
  13. package/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.js +22 -0
  14. package/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.js.map +1 -1
  15. package/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
  16. package/dist/runtime-v2/runner/base-peer-runner.js +5 -1
  17. package/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
  18. package/dist/telemetry-event.d.ts +2 -2
  19. package/dist/telemetry-event.d.ts.map +1 -1
  20. package/dist/telemetry-event.js +23 -0
  21. package/dist/telemetry-event.js.map +1 -1
  22. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=philosopher-runner-trust-boundary.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"philosopher-runner-trust-boundary.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,398 @@
1
+ /**
2
+ * PhilosopherRunner trust-boundary and behavior parity tests (PRI-new).
3
+ *
4
+ * Proves that after BasePeerRunner migration:
5
+ * 1. Malformed runtime payload never reaches typed hooks or artifact commit
6
+ * 2. Validation failure does not call success commit
7
+ * 3. Successful run creates expected artifact and marks task succeeded
8
+ * 4. Lease conflict is non-mutating
9
+ * 5. postFetchTransform receives untrusted data, checkLineageIntegrity receives validated output
10
+ */
11
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
12
+ import { PhilosopherRunner } from '../philosopher-runner.js';
13
+ import { DefaultPhilosopherValidator } from '../philosopher-output.js';
14
+ import { MemoryPIArtifactStore } from '../pi-artifact-store.js';
15
+ import { PDRuntimeError } from '../../error-categories.js';
16
+ import { RunnerPhase } from '../../runner/runner-phase.js';
17
+ import { createPITaskDiagnosticJson } from '../pitask-metadata.js';
18
+ const DREAMER_TASK_ID = 'dreamer-tb-001';
19
+ const PHILOSOPHER_TASK_ID = 'philosopher-tb-001';
20
+ function makeDreamerArtifact() {
21
+ return {
22
+ artifactId: 'pi-art-dreamer-tb-001-run-001',
23
+ artifactKind: 'principle',
24
+ sourceTaskId: DREAMER_TASK_ID,
25
+ lineageArtifactIds: [],
26
+ validationStatus: 'pending',
27
+ contentJson: JSON.stringify({
28
+ valid: true,
29
+ taskId: DREAMER_TASK_ID,
30
+ candidates: [{
31
+ candidateIndex: 0,
32
+ badDecision: 'Ignored error handling',
33
+ betterDecision: 'Add try/catch',
34
+ rationale: 'Prevents unhandled rejections',
35
+ confidence: 0.85,
36
+ riskLevel: 'low',
37
+ strategicPerspective: 'reliability',
38
+ }],
39
+ contextRefs: [],
40
+ generatedAt: new Date().toISOString(),
41
+ }),
42
+ createdAt: new Date().toISOString(),
43
+ updatedAt: new Date().toISOString(),
44
+ };
45
+ }
46
+ function makePhilosopherOutput() {
47
+ return {
48
+ taskId: PHILOSOPHER_TASK_ID,
49
+ sourceDreamerArtifactId: 'pi-art-dreamer-tb-001-run-001',
50
+ thesis: 'Error handling should be systematic',
51
+ principleCandidate: {
52
+ title: 'Systematic Error Handling',
53
+ rationale: 'Uncaught errors cascade',
54
+ scope: 'All async operations',
55
+ confidence: 0.9,
56
+ },
57
+ risks: ['May add latency'],
58
+ generatedAt: new Date().toISOString(),
59
+ };
60
+ }
61
+ function makePhilosopherTask(overrides = {}) {
62
+ return {
63
+ taskId: PHILOSOPHER_TASK_ID,
64
+ taskKind: 'philosopher',
65
+ status: 'pending',
66
+ attemptCount: 0,
67
+ maxAttempts: 3,
68
+ createdAt: new Date().toISOString(),
69
+ updatedAt: new Date().toISOString(),
70
+ diagnosticJson: createPITaskDiagnosticJson({
71
+ dependencyTaskIds: [DREAMER_TASK_ID],
72
+ channel: 'prompt',
73
+ timeoutMs: 300_000,
74
+ inputArtifactRefs: [{ artifactType: 'principle', ref: 'pi-art-dreamer-tb-001-run-001' }],
75
+ outputArtifactRefs: [],
76
+ }),
77
+ ...overrides,
78
+ };
79
+ }
80
+ function makeDreamerTask() {
81
+ return {
82
+ taskId: DREAMER_TASK_ID,
83
+ taskKind: 'dreamer',
84
+ status: 'succeeded',
85
+ attemptCount: 1,
86
+ maxAttempts: 3,
87
+ resultRef: 'dreamer://run-001',
88
+ createdAt: new Date().toISOString(),
89
+ updatedAt: new Date().toISOString(),
90
+ diagnosticJson: createPITaskDiagnosticJson({
91
+ dependencyTaskIds: [],
92
+ channel: 'prompt',
93
+ timeoutMs: 300_000,
94
+ inputArtifactRefs: [],
95
+ outputArtifactRefs: [{ artifactType: 'principle', ref: 'pi-art-dreamer-tb-001-run-001' }],
96
+ }),
97
+ };
98
+ }
99
+ describe('PhilosopherRunner trust boundary (PRI-new)', () => {
100
+ let artifactStore;
101
+ beforeEach(() => {
102
+ artifactStore = new MemoryPIArtifactStore();
103
+ });
104
+ function createMockDeps(overrides = {}) {
105
+ const philosopherTask = makePhilosopherTask();
106
+ const dreamerTask = makeDreamerTask();
107
+ const stateManager = {
108
+ acquireLease: vi.fn().mockResolvedValue(philosopherTask),
109
+ getTask: vi.fn().mockImplementation((id) => {
110
+ if (id === PHILOSOPHER_TASK_ID)
111
+ return Promise.resolve(philosopherTask);
112
+ if (id === DREAMER_TASK_ID)
113
+ return Promise.resolve(dreamerTask);
114
+ return Promise.resolve(null);
115
+ }),
116
+ getRunsByTask: vi.fn().mockResolvedValue([{
117
+ runId: 'run-phil-tb-001',
118
+ taskId: PHILOSOPHER_TASK_ID,
119
+ runtimeKind: 'philosopher',
120
+ startedAt: new Date().toISOString(),
121
+ }]),
122
+ updateRunOutput: vi.fn().mockResolvedValue(undefined),
123
+ markTaskSucceeded: vi.fn().mockResolvedValue(undefined),
124
+ markTaskFailed: vi.fn().mockResolvedValue(undefined),
125
+ markTaskRetryWait: vi.fn().mockResolvedValue(undefined),
126
+ getRetryPolicy: vi.fn().mockReturnValue({ shouldRetry: () => false }),
127
+ };
128
+ const runHandle = { runId: 'run-phil-tb-001', runtimeKind: 'test-double', startedAt: new Date().toISOString() };
129
+ const succeededStatus = { status: 'succeeded', runId: 'run-phil-tb-001' };
130
+ const runtimeAdapter = {
131
+ startRun: vi.fn().mockResolvedValue(runHandle),
132
+ pollRun: vi.fn().mockResolvedValue(succeededStatus),
133
+ fetchOutput: vi.fn().mockResolvedValue({ payload: makePhilosopherOutput() }),
134
+ cancelRun: vi.fn().mockResolvedValue(undefined),
135
+ };
136
+ const eventEmitter = {
137
+ emitTelemetry: vi.fn(),
138
+ };
139
+ const validator = new DefaultPhilosopherValidator();
140
+ return {
141
+ stateManager,
142
+ runtimeAdapter,
143
+ eventEmitter,
144
+ validator,
145
+ artifactStore,
146
+ ...overrides,
147
+ };
148
+ }
149
+ it('malformed payload (non-object) does not write artifact or mark succeeded', async () => {
150
+ await artifactStore.upsertArtifact(makeDreamerArtifact());
151
+ const deps = createMockDeps({ artifactStore });
152
+ deps.runtimeAdapter.fetchOutput = vi.fn().mockResolvedValue({
153
+ payload: 'not-an-object',
154
+ });
155
+ const runner = new PhilosopherRunner(deps, {
156
+ owner: 'test',
157
+ runtimeKind: 'philosopher',
158
+ pollIntervalMs: 10,
159
+ timeoutMs: 1000,
160
+ });
161
+ const result = await runner.run(PHILOSOPHER_TASK_ID);
162
+ expect(result.status).toBe('failed');
163
+ expect(deps.stateManager.markTaskSucceeded).not.toHaveBeenCalled();
164
+ const artifacts = await artifactStore.listBySourceTaskId(PHILOSOPHER_TASK_ID);
165
+ expect(artifacts).toHaveLength(0);
166
+ });
167
+ it('malformed payload (null) does not write artifact or mark succeeded', async () => {
168
+ await artifactStore.upsertArtifact(makeDreamerArtifact());
169
+ const deps = createMockDeps({ artifactStore });
170
+ deps.runtimeAdapter.fetchOutput = vi.fn().mockResolvedValue({
171
+ payload: null,
172
+ });
173
+ const runner = new PhilosopherRunner(deps, {
174
+ owner: 'test',
175
+ runtimeKind: 'philosopher',
176
+ pollIntervalMs: 10,
177
+ timeoutMs: 1000,
178
+ });
179
+ const result = await runner.run(PHILOSOPHER_TASK_ID);
180
+ expect(result.status).toBe('failed');
181
+ expect(deps.stateManager.markTaskSucceeded).not.toHaveBeenCalled();
182
+ });
183
+ it('validation failure does not write artifact or mark succeeded', async () => {
184
+ await artifactStore.upsertArtifact(makeDreamerArtifact());
185
+ const deps = createMockDeps({ artifactStore });
186
+ const invalidOutput = {
187
+ taskId: 'wrong-id',
188
+ sourceDreamerArtifactId: '',
189
+ thesis: '',
190
+ principleCandidate: { title: '', rationale: '', scope: '', confidence: 2.0 },
191
+ risks: 'not-array',
192
+ generatedAt: '',
193
+ };
194
+ deps.runtimeAdapter.fetchOutput = vi.fn().mockResolvedValue({
195
+ payload: invalidOutput,
196
+ });
197
+ const runner = new PhilosopherRunner(deps, {
198
+ owner: 'test',
199
+ runtimeKind: 'philosopher',
200
+ pollIntervalMs: 10,
201
+ timeoutMs: 1000,
202
+ });
203
+ const result = await runner.run(PHILOSOPHER_TASK_ID);
204
+ expect(result.status).toBe('failed');
205
+ expect(deps.stateManager.markTaskSucceeded).not.toHaveBeenCalled();
206
+ const artifacts = await artifactStore.listBySourceTaskId(PHILOSOPHER_TASK_ID);
207
+ expect(artifacts).toHaveLength(0);
208
+ });
209
+ it('valid output goes through full success path — artifact written and task succeeded', async () => {
210
+ await artifactStore.upsertArtifact(makeDreamerArtifact());
211
+ const deps = createMockDeps({ artifactStore });
212
+ const runner = new PhilosopherRunner(deps, {
213
+ owner: 'test',
214
+ runtimeKind: 'philosopher',
215
+ pollIntervalMs: 10,
216
+ timeoutMs: 1000,
217
+ });
218
+ const result = await runner.run(PHILOSOPHER_TASK_ID);
219
+ expect(result.status).toBe('succeeded');
220
+ expect(result.artifactId).toBeDefined();
221
+ expect(result.output).toBeDefined();
222
+ expect(result.output?.principleCandidate.title).toBe('Systematic Error Handling');
223
+ expect(runner.currentPhase).toBe(RunnerPhase.Completed);
224
+ expect(deps.stateManager.markTaskSucceeded).toHaveBeenCalledWith(PHILOSOPHER_TASK_ID, expect.stringContaining('philosopher://'));
225
+ const artifacts = await artifactStore.listBySourceTaskId(PHILOSOPHER_TASK_ID);
226
+ expect(artifacts).toHaveLength(1);
227
+ expect(artifacts[0]?.artifactKind).toBe('principle');
228
+ });
229
+ it('lease conflict does not mutate task state', async () => {
230
+ const deps = createMockDeps();
231
+ deps.stateManager.acquireLease = vi.fn().mockRejectedValue(new PDRuntimeError('lease_conflict', 'Another runner holds the lease'));
232
+ const runner = new PhilosopherRunner(deps, {
233
+ owner: 'test',
234
+ runtimeKind: 'philosopher',
235
+ pollIntervalMs: 10,
236
+ timeoutMs: 1000,
237
+ });
238
+ const result = await runner.run(PHILOSOPHER_TASK_ID);
239
+ expect(result.status).toBe('failed');
240
+ expect(result.errorCategory).toBe('lease_conflict');
241
+ expect(deps.stateManager.markTaskFailed).not.toHaveBeenCalled();
242
+ expect(deps.stateManager.markTaskRetryWait).not.toHaveBeenCalled();
243
+ });
244
+ it('taskId mismatch in output fails validation loud', async () => {
245
+ await artifactStore.upsertArtifact(makeDreamerArtifact());
246
+ const deps = createMockDeps({ artifactStore });
247
+ const mismatchedOutput = { ...makePhilosopherOutput(), taskId: 'wrong-task-id' };
248
+ deps.runtimeAdapter.fetchOutput = vi.fn().mockResolvedValue({
249
+ payload: mismatchedOutput,
250
+ });
251
+ const runner = new PhilosopherRunner(deps, {
252
+ owner: 'test',
253
+ runtimeKind: 'philosopher',
254
+ pollIntervalMs: 10,
255
+ timeoutMs: 1000,
256
+ });
257
+ const result = await runner.run(PHILOSOPHER_TASK_ID);
258
+ expect(result.status).toBe('failed');
259
+ // output_invalid is transient; retry policy says shouldRetry=false → max_attempts_exceeded
260
+ expect(result.errorCategory).toBe('max_attempts_exceeded');
261
+ expect(result.failureReason).toContain('taskId mismatch');
262
+ });
263
+ it('validation failure does not set phase to Completed', async () => {
264
+ await artifactStore.upsertArtifact(makeDreamerArtifact());
265
+ const deps = createMockDeps({ artifactStore });
266
+ const invalidOutput = {
267
+ taskId: 'wrong-id',
268
+ sourceDreamerArtifactId: '',
269
+ thesis: '',
270
+ principleCandidate: { title: '', rationale: '', scope: '', confidence: 2.0 },
271
+ risks: 'not-array',
272
+ generatedAt: '',
273
+ };
274
+ deps.runtimeAdapter.fetchOutput = vi.fn().mockResolvedValue({
275
+ payload: invalidOutput,
276
+ });
277
+ const runner = new PhilosopherRunner(deps, {
278
+ owner: 'test',
279
+ runtimeKind: 'philosopher',
280
+ pollIntervalMs: 10,
281
+ timeoutMs: 1000,
282
+ });
283
+ const result = await runner.run(PHILOSOPHER_TASK_ID);
284
+ expect(result.status).toBe('failed');
285
+ expect(runner.currentPhase).not.toBe(RunnerPhase.Completed);
286
+ expect(runner.currentPhase).toBe(RunnerPhase.Failed);
287
+ });
288
+ it('postFetchTransform re-injects taskId when stripped — phase is Completed', async () => {
289
+ await artifactStore.upsertArtifact(makeDreamerArtifact());
290
+ const deps = createMockDeps({ artifactStore });
291
+ // Simulate adapter stripping lineage fields (PRI-272)
292
+ const strippedOutput = { ...makePhilosopherOutput() };
293
+ delete strippedOutput.taskId;
294
+ deps.runtimeAdapter.fetchOutput = vi.fn().mockResolvedValue({
295
+ payload: strippedOutput,
296
+ });
297
+ const runner = new PhilosopherRunner(deps, {
298
+ owner: 'test',
299
+ runtimeKind: 'philosopher',
300
+ pollIntervalMs: 10,
301
+ timeoutMs: 1000,
302
+ });
303
+ const result = await runner.run(PHILOSOPHER_TASK_ID);
304
+ // postFetchTransform should re-inject taskId, then validation should pass
305
+ expect(result.status).toBe('succeeded');
306
+ expect(runner.currentPhase).toBe(RunnerPhase.Completed);
307
+ });
308
+ it('present-but-empty taskId fails validation (not silently corrected)', async () => {
309
+ await artifactStore.upsertArtifact(makeDreamerArtifact());
310
+ const deps = createMockDeps({ artifactStore });
311
+ const emptyTaskIdOutput = { ...makePhilosopherOutput(), taskId: '' };
312
+ deps.runtimeAdapter.fetchOutput = vi.fn().mockResolvedValue({
313
+ payload: emptyTaskIdOutput,
314
+ });
315
+ const runner = new PhilosopherRunner(deps, {
316
+ owner: 'test',
317
+ runtimeKind: 'philosopher',
318
+ pollIntervalMs: 10,
319
+ timeoutMs: 1000,
320
+ });
321
+ const result = await runner.run(PHILOSOPHER_TASK_ID);
322
+ expect(result.status).toBe('failed');
323
+ // output_invalid is transient; retry policy says shouldRetry=false → max_attempts_exceeded
324
+ expect(result.errorCategory).toBe('max_attempts_exceeded');
325
+ // postFetchTransform should NOT overwrite present-but-empty taskId
326
+ expect(result.failureReason).toContain('taskId mismatch');
327
+ });
328
+ it('risks with non-string elements fails validation (ERR-005 Rule 4)', async () => {
329
+ await artifactStore.upsertArtifact(makeDreamerArtifact());
330
+ const deps = createMockDeps({ artifactStore });
331
+ const badRisksOutput = { ...makePhilosopherOutput(), risks: [1, {}] };
332
+ deps.runtimeAdapter.fetchOutput = vi.fn().mockResolvedValue({
333
+ payload: badRisksOutput,
334
+ });
335
+ const runner = new PhilosopherRunner(deps, {
336
+ owner: 'test',
337
+ runtimeKind: 'philosopher',
338
+ pollIntervalMs: 10,
339
+ timeoutMs: 1000,
340
+ });
341
+ const result = await runner.run(PHILOSOPHER_TASK_ID);
342
+ expect(result.status).toBe('failed');
343
+ expect(result.failureReason).toContain('risks must contain only strings');
344
+ });
345
+ it('sourceDreamerArtifactId mismatch fails loud before artifact commit (ERR-004)', async () => {
346
+ await artifactStore.upsertArtifact(makeDreamerArtifact());
347
+ const deps = createMockDeps({ artifactStore });
348
+ const mismatchedIdOutput = { ...makePhilosopherOutput(), sourceDreamerArtifactId: 'wrong-artifact-id' };
349
+ deps.runtimeAdapter.fetchOutput = vi.fn().mockResolvedValue({
350
+ payload: mismatchedIdOutput,
351
+ });
352
+ const runner = new PhilosopherRunner(deps, {
353
+ owner: 'test',
354
+ runtimeKind: 'philosopher',
355
+ pollIntervalMs: 10,
356
+ timeoutMs: 1000,
357
+ });
358
+ const result = await runner.run(PHILOSOPHER_TASK_ID);
359
+ expect(result.status).toBe('failed');
360
+ expect(deps.stateManager.markTaskSucceeded).not.toHaveBeenCalled();
361
+ const artifacts = await artifactStore.listBySourceTaskId(PHILOSOPHER_TASK_ID);
362
+ expect(artifacts).toHaveLength(0);
363
+ });
364
+ it('invalid errorCategory from custom validator fails loud and does not leak through', async () => {
365
+ await artifactStore.upsertArtifact(makeDreamerArtifact());
366
+ // Custom validator returning an invalid errorCategory string
367
+ const rogueValidator = {
368
+ validate: vi.fn().mockResolvedValue({
369
+ valid: false,
370
+ errors: ['some validation error'],
371
+ errorCategory: 'not_a_real_category',
372
+ }),
373
+ };
374
+ const deps = createMockDeps({ artifactStore, validator: rogueValidator });
375
+ const runner = new PhilosopherRunner(deps, {
376
+ owner: 'test',
377
+ runtimeKind: 'philosopher',
378
+ pollIntervalMs: 10,
379
+ timeoutMs: 1000,
380
+ });
381
+ const result = await runner.run(PHILOSOPHER_TASK_ID);
382
+ expect(result.status).toBe('failed');
383
+ // The invalid category must NOT leak into result.errorCategory
384
+ expect(result.errorCategory).not.toBe('not_a_real_category');
385
+ // errorCategory should be a valid PDErrorCategory (output_invalid from the guard,
386
+ // then escalated by retryOrFail to max_attempts_exceeded since output_invalid is transient
387
+ // and retry policy returns shouldRetry=false)
388
+ expect(result.errorCategory).toBe('max_attempts_exceeded');
389
+ // failureReason must mention the invalid errorCategory
390
+ expect(result.failureReason).toContain('invalid errorCategory');
391
+ expect(result.failureReason).toContain('not_a_real_category');
392
+ // No artifact written, no task marked succeeded
393
+ expect(deps.stateManager.markTaskSucceeded).not.toHaveBeenCalled();
394
+ const artifacts = await artifactStore.listBySourceTaskId(PHILOSOPHER_TASK_ID);
395
+ expect(artifacts).toHaveLength(0);
396
+ });
397
+ });
398
+ //# sourceMappingURL=philosopher-runner-trust-boundary.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"philosopher-runner-trust-boundary.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.ts"],"names":[],"mappings":"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"}
@@ -48,9 +48,15 @@ export interface PhilosopherValidationResult {
48
48
  readonly errorCategory?: string;
49
49
  }
50
50
  export interface PhilosopherValidator {
51
- validate(output: PhilosopherOutputV1, taskId: string): Promise<PhilosopherValidationResult>;
51
+ /**
52
+ * Validate untrusted LLM/runtime output.
53
+ *
54
+ * Receives `unknown` — must perform runtime validation before
55
+ * treating as PhilosopherOutputV1 (ERR-001, ERR-005, ERR-054).
56
+ */
57
+ validate(output: unknown, taskId: string): Promise<PhilosopherValidationResult>;
52
58
  }
53
59
  export declare class DefaultPhilosopherValidator implements PhilosopherValidator {
54
- validate(output: PhilosopherOutputV1, taskId: string): Promise<PhilosopherValidationResult>;
60
+ validate(output: unknown, taskId: string): Promise<PhilosopherValidationResult>;
55
61
  }
56
62
  //# sourceMappingURL=philosopher-output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"philosopher-output.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/philosopher-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAItD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAID,eAAO,MAAM,mCAAmC;;;;;EAK9C,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAOpC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAI7E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;CAC7F;AAED,qBAAa,2BAA4B,YAAW,oBAAoB;IAEhE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;CA0ClG"}
1
+ {"version":3,"file":"philosopher-output.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/philosopher-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAItD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAID,eAAO,MAAM,mCAAmC;;;;;EAK9C,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAOpC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAI7E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;CACjF;AAED,qBAAa,2BAA4B,YAAW,oBAAoB;IAEhE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;CA+CtF"}
@@ -30,35 +30,40 @@ export class DefaultPhilosopherValidator {
30
30
  if (typeof output !== 'object' || output === null) {
31
31
  return { valid: false, errors: ['Output is not an object'], errorCategory: 'output_invalid' };
32
32
  }
33
- if (output.taskId !== taskId) {
34
- errors.push(`taskId mismatch: expected ${taskId}, got ${String(output.taskId)}`);
33
+ // Safe property access via Record<string, unknown> — no `as PhilosopherOutputV1` (ERR-001).
34
+ const record = output;
35
+ if (record.taskId !== taskId) {
36
+ errors.push(`taskId mismatch: expected ${taskId}, got ${String(record.taskId)}`);
35
37
  }
36
- if (typeof output.sourceDreamerArtifactId !== 'string' || output.sourceDreamerArtifactId.trim() === '') {
38
+ if (typeof record.sourceDreamerArtifactId !== 'string' || record.sourceDreamerArtifactId.trim() === '') {
37
39
  errors.push('sourceDreamerArtifactId must be non-empty string');
38
40
  }
39
- if (typeof output.thesis !== 'string' || output.thesis.trim() === '') {
41
+ if (typeof record.thesis !== 'string' || record.thesis.trim() === '') {
40
42
  errors.push('thesis must be non-empty string');
41
43
  }
42
- if (typeof output.principleCandidate !== 'object' || output.principleCandidate === null) {
44
+ if (typeof record.principleCandidate !== 'object' || record.principleCandidate === null) {
43
45
  errors.push('principleCandidate must be an object');
44
46
  }
45
47
  else {
46
- const pc = output.principleCandidate;
47
- if (typeof pc.title !== 'string' || (pc.title).trim() === '')
48
+ const pc = record.principleCandidate;
49
+ if (typeof pc.title !== 'string' || pc.title.trim() === '')
48
50
  errors.push('principleCandidate.title must be non-empty string');
49
- if (typeof pc.rationale !== 'string' || (pc.rationale).trim() === '')
51
+ if (typeof pc.rationale !== 'string' || pc.rationale.trim() === '')
50
52
  errors.push('principleCandidate.rationale must be non-empty string');
51
- if (typeof pc.scope !== 'string' || (pc.scope).trim() === '')
53
+ if (typeof pc.scope !== 'string' || pc.scope.trim() === '')
52
54
  errors.push('principleCandidate.scope must be non-empty string');
53
55
  if (typeof pc.confidence !== 'number')
54
56
  errors.push('principleCandidate.confidence must be number');
55
57
  else if (pc.confidence < 0 || pc.confidence > 1)
56
58
  errors.push('principleCandidate.confidence must be in [0, 1]');
57
59
  }
58
- if (!Array.isArray(output.risks)) {
60
+ if (!Array.isArray(record.risks)) {
59
61
  errors.push('risks must be an array');
60
62
  }
61
- if (typeof output.generatedAt !== 'string' || output.generatedAt.trim() === '') {
63
+ else if (record.risks.some((risk) => typeof risk !== 'string')) {
64
+ errors.push('risks must contain only strings');
65
+ }
66
+ if (typeof record.generatedAt !== 'string' || record.generatedAt.trim() === '') {
62
67
  errors.push('generatedAt must be non-empty string');
63
68
  }
64
69
  return errors.length > 0
@@ -1 +1 @@
1
- {"version":3,"file":"philosopher-output.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/philosopher-output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"philosopher-output.js","sourceRoot":"","sources":["../../../src/runtime-v2/internalization/philosopher-output.ts"],"names":[],"mappings":"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"}