@principles/core 1.278.4 → 1.278.6

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 (83) hide show
  1. package/dist/runtime-v2/__tests__/recovery-sweep-service.test.js +130 -0
  2. package/dist/runtime-v2/__tests__/recovery-sweep-service.test.js.map +1 -1
  3. package/dist/runtime-v2/internalization/__tests__/artifact-summary.property.test.js +1 -1
  4. package/dist/runtime-v2/internalization/__tests__/artifact-summary.property.test.js.map +1 -1
  5. package/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js +6 -4
  6. package/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js.map +1 -1
  7. package/dist/runtime-v2/internalization/__tests__/evaluator-out-of-scope-governance.test.d.ts +2 -0
  8. package/dist/runtime-v2/internalization/__tests__/evaluator-out-of-scope-governance.test.d.ts.map +1 -0
  9. package/dist/runtime-v2/internalization/__tests__/evaluator-out-of-scope-governance.test.js +307 -0
  10. package/dist/runtime-v2/internalization/__tests__/evaluator-out-of-scope-governance.test.js.map +1 -0
  11. package/dist/runtime-v2/internalization/__tests__/evaluator-prompt-builder.test.js +2 -2
  12. package/dist/runtime-v2/internalization/__tests__/evaluator-prompt-builder.test.js.map +1 -1
  13. package/dist/runtime-v2/internalization/__tests__/evolution-alignment-contract.test.d.ts +18 -0
  14. package/dist/runtime-v2/internalization/__tests__/evolution-alignment-contract.test.d.ts.map +1 -0
  15. package/dist/runtime-v2/internalization/__tests__/evolution-alignment-contract.test.js +457 -0
  16. package/dist/runtime-v2/internalization/__tests__/evolution-alignment-contract.test.js.map +1 -0
  17. package/dist/runtime-v2/internalization/__tests__/owner-decision-review.test.js +88 -0
  18. package/dist/runtime-v2/internalization/__tests__/owner-decision-review.test.js.map +1 -1
  19. package/dist/runtime-v2/internalization/artifact-summary.d.ts.map +1 -1
  20. package/dist/runtime-v2/internalization/artifact-summary.js +8 -0
  21. package/dist/runtime-v2/internalization/artifact-summary.js.map +1 -1
  22. package/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts +37 -2
  23. package/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts.map +1 -1
  24. package/dist/runtime-v2/internalization/artificer-prompt-builder.js +31 -1
  25. package/dist/runtime-v2/internalization/artificer-prompt-builder.js.map +1 -1
  26. package/dist/runtime-v2/internalization/artificer-runner.d.ts +18 -1
  27. package/dist/runtime-v2/internalization/artificer-runner.d.ts.map +1 -1
  28. package/dist/runtime-v2/internalization/artificer-runner.js +60 -2
  29. package/dist/runtime-v2/internalization/artificer-runner.js.map +1 -1
  30. package/dist/runtime-v2/internalization/context-manifests.d.ts.map +1 -1
  31. package/dist/runtime-v2/internalization/context-manifests.js +35 -2
  32. package/dist/runtime-v2/internalization/context-manifests.js.map +1 -1
  33. package/dist/runtime-v2/internalization/evaluator-prompt-builder.d.ts +15 -2
  34. package/dist/runtime-v2/internalization/evaluator-prompt-builder.d.ts.map +1 -1
  35. package/dist/runtime-v2/internalization/evaluator-prompt-builder.js +10 -2
  36. package/dist/runtime-v2/internalization/evaluator-prompt-builder.js.map +1 -1
  37. package/dist/runtime-v2/internalization/evaluator-runner.d.ts +46 -0
  38. package/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
  39. package/dist/runtime-v2/internalization/evaluator-runner.js +352 -21
  40. package/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
  41. package/dist/runtime-v2/internalization/index.d.ts +4 -2
  42. package/dist/runtime-v2/internalization/index.d.ts.map +1 -1
  43. package/dist/runtime-v2/internalization/index.js +2 -1
  44. package/dist/runtime-v2/internalization/index.js.map +1 -1
  45. package/dist/runtime-v2/internalization/intent-contract.d.ts +59 -0
  46. package/dist/runtime-v2/internalization/intent-contract.d.ts.map +1 -0
  47. package/dist/runtime-v2/internalization/intent-contract.js +61 -0
  48. package/dist/runtime-v2/internalization/intent-contract.js.map +1 -0
  49. package/dist/runtime-v2/internalization/owner-decision-review.d.ts +28 -0
  50. package/dist/runtime-v2/internalization/owner-decision-review.d.ts.map +1 -1
  51. package/dist/runtime-v2/internalization/owner-decision-review.js +76 -0
  52. package/dist/runtime-v2/internalization/owner-decision-review.js.map +1 -1
  53. package/dist/runtime-v2/internalization/owner-review.d.ts +8 -0
  54. package/dist/runtime-v2/internalization/owner-review.d.ts.map +1 -1
  55. package/dist/runtime-v2/internalization/owner-review.js +10 -0
  56. package/dist/runtime-v2/internalization/owner-review.js.map +1 -1
  57. package/dist/runtime-v2/internalization/pitask-metadata.d.ts +76 -0
  58. package/dist/runtime-v2/internalization/pitask-metadata.d.ts.map +1 -1
  59. package/dist/runtime-v2/internalization/pitask-metadata.js +116 -3
  60. package/dist/runtime-v2/internalization/pitask-metadata.js.map +1 -1
  61. package/dist/runtime-v2/internalization/rule-reliability-validation.d.ts +141 -1
  62. package/dist/runtime-v2/internalization/rule-reliability-validation.d.ts.map +1 -1
  63. package/dist/runtime-v2/internalization/rule-reliability-validation.js +140 -0
  64. package/dist/runtime-v2/internalization/rule-reliability-validation.js.map +1 -1
  65. package/dist/runtime-v2/internalization/scribe-output.d.ts +11 -0
  66. package/dist/runtime-v2/internalization/scribe-output.d.ts.map +1 -1
  67. package/dist/runtime-v2/internalization/scribe-output.js +13 -0
  68. package/dist/runtime-v2/internalization/scribe-output.js.map +1 -1
  69. package/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts +8 -1
  70. package/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts.map +1 -1
  71. package/dist/runtime-v2/internalization/scribe-prompt-builder.js +25 -1
  72. package/dist/runtime-v2/internalization/scribe-prompt-builder.js.map +1 -1
  73. package/dist/runtime-v2/recovery-sweep-service.d.ts +9 -0
  74. package/dist/runtime-v2/recovery-sweep-service.d.ts.map +1 -1
  75. package/dist/runtime-v2/recovery-sweep-service.js +7 -2
  76. package/dist/runtime-v2/recovery-sweep-service.js.map +1 -1
  77. package/dist/runtime-v2/runner/__tests__/base-peer-runner-failure-details.test.js +16 -1
  78. package/dist/runtime-v2/runner/__tests__/base-peer-runner-failure-details.test.js.map +1 -1
  79. package/dist/runtime-v2/runner/base-peer-runner.d.ts +9 -1
  80. package/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
  81. package/dist/runtime-v2/runner/base-peer-runner.js +32 -3
  82. package/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
  83. package/package.json +1 -1
@@ -0,0 +1,307 @@
1
+ /**
2
+ * PR #1551 Round-2 R1/R2 — production-path regression tests
3
+ * (independent-review findings R1/R2, formalized per Owner 指令 2026-09-08).
4
+ *
5
+ * Through REAL production components (RuntimeStateManager + SqlitePIArtifactStore
6
+ * + real EvaluatorRunner with createProductionGateDeps node:vm replay). The only
7
+ * scripted component is the LLM adapter (deterministic failure injection).
8
+ *
9
+ * Scenario 1 (R1 — real defect must reach repair): a v1 rule whose risk-path
10
+ * gate MISSES the /etc/passwd write (combination template, oracle-expected
11
+ * block, actual allow) → the failure is a REAL rule defect → a repair task
12
+ * MUST be seeded; the test_out_of_scope NHR exemption is forbidden.
13
+ *
14
+ * Scenario 2 (R2 — restart-stable disposition): a v1 rule that implements the
15
+ * risk-path gate correctly (block-expecting templates pass) but cannot read
16
+ * context (unavailable/truncated/alias templates, oracle-expected allow, fail)
17
+ * → pure out-of-scope → NHR evaluator_test_out_of_scope. The NHR write is
18
+ * injected to fail once; after a simulated restart the resumed run must:
19
+ * not re-ask the LLM, not seed a repair, re-write the same NHR + reasonCode,
20
+ * and mark the completion intent applied. Same durable facts ⇒ same
21
+ * disposition (the R2 drift breaker).
22
+ *
23
+ * Scenario 3 (fail-closed): replay failures lacking expectedDecision never
24
+ * exempt the rule (they stay in-scope and seed repair).
25
+ */
26
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
27
+ import * as fs from 'node:fs';
28
+ import * as path from 'node:path';
29
+ import * as os from 'node:os';
30
+ import { vi } from 'vitest';
31
+ import { RuntimeStateManager } from '../../store/runtime-state-manager.js';
32
+ import { EvaluatorRunner } from '../evaluator-runner.js';
33
+ import { DefaultEvaluatorValidator } from '../evaluator-output.js';
34
+ import { StoreEventEmitter } from '../../store/event-emitter.js';
35
+ import { SqliteConnection } from '../../store/sqlite-connection.js';
36
+ import { SqlitePIArtifactStore } from '../../store/artifact/sqlite-pi-artifact-store.js';
37
+ import { createPITaskDiagnosticJson, hydratePITaskRecord } from '../pitask-metadata.js';
38
+ import { createProductionGateDeps } from '../../activation/production-gate-deps.js';
39
+ let workspaceDir;
40
+ let stateManager;
41
+ let emitter;
42
+ let emitted;
43
+ let store;
44
+ const SCRIBE_ID = 'scribe-oos';
45
+ const ART1_ID = 'artificer-oos1';
46
+ const EVAL1_ID = 'evaluator-oos1';
47
+ const REPAIR_ID = 'artificer-repair-oos1';
48
+ const SCRIBE_ART = 'pi-art-scribe-oos';
49
+ const GOLDEN_TRACE_CASES = [
50
+ { caseId: 'neg-1', kind: 'negative', toolName: 'write_file', params: { path: '/etc/passwd' }, expectedDecision: 'block' },
51
+ { caseId: 'pos-1', kind: 'positive', toolName: 'write_file', params: { path: '/workspace/src/a.ts' }, expectedDecision: 'allow' },
52
+ ];
53
+ function flagsOffConfig() {
54
+ return {
55
+ config: {
56
+ version: 1,
57
+ features: {
58
+ artifact_summary_redundancy: { category: 'quiet', enabled: false },
59
+ context_manifest_budget: { category: 'quiet', enabled: false },
60
+ progressive_evaluator: { category: 'quiet', enabled: false },
61
+ },
62
+ runtimeProfiles: {},
63
+ internalAgents: {},
64
+ ui: { diagnostics: { mode: 'simple' } },
65
+ },
66
+ source: 'user_config',
67
+ warnings: [],
68
+ resolvedContextInjection: {
69
+ thinkingOs: false,
70
+ projectFocus: 'off',
71
+ evolutionContext: { enabled: true, maxMessages: 4, maxCharsPerMessage: 200 },
72
+ },
73
+ };
74
+ }
75
+ /**
76
+ * A CORRECT action-only (v1) risk-path gate: blocks /etc/passwd writes
77
+ * wherever they appear, allows everything else. Against the 5 v2 templates:
78
+ * v2-combination (path=/etc/passwd, expected block) → PASSES (blocks)
79
+ * v2-path-boundary (path=<target>.bak, expected block) — target here is
80
+ * the positive case path /workspace/report.md →
81
+ * /workspace/report.md.bak expected block; the rule only
82
+ * blocks /etc/passwd, so this case FAILS for a rule
83
+ * scoped narrowly. NOTE: path-boundary's oracle-expected
84
+ * decision is block — a v1 rule CAN implement generic
85
+ * protected-path matching, so this failure is a REAL
86
+ * (fixable) rule defect and must stay in-scope. To build
87
+ * the PURE out-of-scope scenario we therefore scope the
88
+ * principle/rule to a PROTECTED-SIBLING gate that blocks
89
+ * both /etc/passwd and its .bak-style siblings, keeping
90
+ * every block-expecting template green while the three
91
+ * allow-expecting context templates fail structurally.
92
+ */
93
+ /**
94
+ * The Episode-001 conservative-v1 shape: the rule hardcodes the risk-path
95
+ * check (action-only, satisfies every block-expecting template) but treats
96
+ * ANY present context as unverifiable and blocks conservatively — so the
97
+ * three allow-expecting context templates fail while both block-expecting
98
+ * templates and both golden cases pass. This is the exact pure-out-of-scope
99
+ * surface (verified against createProductionGateDeps before encoding here).
100
+ */
101
+ const CORRECT_RISK_GATE = `function evaluate(input, helpers) {
102
+ var p = input.action.paramsSummary && input.action.paramsSummary.path;
103
+ var hasContext = input.context !== undefined && input.context !== null;
104
+ if (hasContext) {
105
+ return { decision: 'block', matched: true, reason: 'context present but reads unverifiable - conservative block' };
106
+ }
107
+ if (typeof p === 'string' && p.indexOf('/etc/passwd') !== -1) {
108
+ return { decision: 'block', matched: true, reason: 'protected path' };
109
+ }
110
+ return { decision: 'allow', matched: false, reason: 'no context, not a protected path' };
111
+ }`;
112
+ /** A rule that MISSES the /etc/passwd gate entirely (R1 real-defect shape). */
113
+ const LEAKY_RISK_GATE = `function evaluate(input, helpers) {
114
+ return { decision: 'allow', matched: false, reason: 'unconditional allow' };
115
+ }`;
116
+ function artificerOutput(implementationCode, taskId) {
117
+ return {
118
+ taskId,
119
+ sourceScribeArtifactId: SCRIBE_ART,
120
+ implementationSummary: 'risk-path gate',
121
+ sourceTrace: { scribeArtifactId: SCRIBE_ART },
122
+ risks: [],
123
+ implementationCode,
124
+ goldenTraceCases: GOLDEN_TRACE_CASES,
125
+ affectedTools: ['write_file'],
126
+ generatedAt: new Date().toISOString(),
127
+ };
128
+ }
129
+ function evaluatorOutput(taskId, artificerArtifactId, decision) {
130
+ return {
131
+ taskId,
132
+ sourceArtificerArtifactId: artificerArtifactId,
133
+ evaluation: {
134
+ decision,
135
+ summary: 'round-2 r1/r2 regression',
136
+ score: decision === 'approved' ? 0.9 : 0.6,
137
+ strengths: [],
138
+ concerns: decision === 'needs_revision' ? ['gate failure'] : [],
139
+ requiredChanges: decision === 'needs_revision' ? ['Fix the gate'] : [],
140
+ },
141
+ sourceTrace: { artificerArtifactId, scribeArtifactId: SCRIBE_ART },
142
+ risks: [],
143
+ generatedAt: new Date().toISOString(),
144
+ };
145
+ }
146
+ /** Scripted LLM adapter that records every prompt it receives. */
147
+ function scriptedAdapter(payload, prompts, runId) {
148
+ return {
149
+ startRun: async (req) => {
150
+ prompts.push(String(req.inputPayload));
151
+ return { runId, runtimeKind: 'test-double', startedAt: new Date().toISOString() };
152
+ },
153
+ pollRun: async () => ({ status: 'succeeded', runId }),
154
+ fetchOutput: async () => ({ runId, payload }),
155
+ cancelRun: async () => undefined,
156
+ };
157
+ }
158
+ function meta(o = {}) {
159
+ return createPITaskDiagnosticJson({
160
+ dependencyTaskIds: [], channel: 'prompt', timeoutMs: 300_000,
161
+ inputArtifactRefs: [], outputArtifactRefs: [], ...o,
162
+ });
163
+ }
164
+ async function mkTask(spec) {
165
+ // Restart semantics reuse durable tasks — an existing id is requeued by the
166
+ // test explicitly (requeueEvaluator); mkTask itself is insert-if-absent.
167
+ const existing = await stateManager.getTask(spec.id);
168
+ if (existing)
169
+ return;
170
+ await stateManager.createTask({
171
+ taskId: spec.id, taskKind: spec.kind, status: 'pending', attemptCount: 0, maxAttempts: 3,
172
+ diagnosticJson: spec.diagnosticJson ?? meta({ dependencyTaskIds: spec.deps }),
173
+ });
174
+ }
175
+ async function succeed(id) {
176
+ await stateManager.acquireLease({ taskId: id, owner: 'oos-test', runtimeKind: 'test-double' });
177
+ await stateManager.markTaskSucceeded(id);
178
+ }
179
+ /**
180
+ * Seed scribe + a REAL artificer run producing the given rule code, then the
181
+ * evaluator task. Returns the artificer artifact id for the evaluator wiring.
182
+ */
183
+ async function seedChain(ruleCode) {
184
+ await mkTask({ id: SCRIBE_ID, kind: 'scribe', deps: [] });
185
+ await succeed(SCRIBE_ID);
186
+ await store.upsertArtifact({
187
+ artifactId: SCRIBE_ART, artifactKind: 'principle', sourceTaskId: SCRIBE_ID,
188
+ lineageArtifactIds: [], validationStatus: 'pending',
189
+ contentJson: JSON.stringify({
190
+ principleId: 'protected-path-gate',
191
+ principleDraft: { statement: 'Block writes to protected paths and their sibling backups.' },
192
+ }),
193
+ createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(),
194
+ });
195
+ await mkTask({ id: ART1_ID, kind: 'artificer', deps: [SCRIBE_ID] });
196
+ const { ArtificerRunner } = await import('../artificer-runner.js');
197
+ const { DefaultArtificerValidator } = await import('../artificer-output.js');
198
+ const artRunner = new ArtificerRunner({
199
+ stateManager,
200
+ runtimeAdapter: scriptedAdapter(artificerOutput(ruleCode, ART1_ID), [], 'art-oos'),
201
+ eventEmitter: emitter, artifactStore: store, validator: new DefaultArtificerValidator(),
202
+ }, { owner: 'oos-test', runtimeKind: 'test-double', pollIntervalMs: 5, timeoutMs: 5000 });
203
+ const artResult = await artRunner.run(ART1_ID);
204
+ if (artResult.status !== 'succeeded')
205
+ throw new Error(`artificer run failed: ${JSON.stringify(artResult).slice(0, 300)}`);
206
+ const art = (await store.listBySourceTaskId(ART1_ID)).find((a) => a.artifactKind === 'principle');
207
+ if (!art)
208
+ throw new Error('missing artificer artifact');
209
+ await mkTask({ id: EVAL1_ID, kind: 'evaluator', deps: [ART1_ID] });
210
+ return art.artifactId;
211
+ }
212
+ function reviewEvaluator(artId, decision, seeds, prompts) {
213
+ return new EvaluatorRunner({
214
+ stateManager,
215
+ runtimeAdapter: scriptedAdapter(evaluatorOutput(EVAL1_ID, artId, decision), prompts, 'eval-oos'),
216
+ eventEmitter: emitter, artifactStore: store, validator: new DefaultEvaluatorValidator(),
217
+ isRepairLoopEnabled: () => true,
218
+ seedArtificerRepairTask: async (params) => {
219
+ seeds.push(params.repairPayload.requiredChanges.join(';'));
220
+ await mkTask({
221
+ id: REPAIR_ID, kind: 'artificer', deps: params.inheritedDependencyTaskIds,
222
+ diagnosticJson: meta({ dependencyTaskIds: params.inheritedDependencyTaskIds, repairPayload: params.repairPayload }),
223
+ });
224
+ return REPAIR_ID;
225
+ },
226
+ }, {
227
+ owner: 'oos-test', runtimeKind: 'test-double', pollIntervalMs: 5, timeoutMs: 5000,
228
+ gateDeps: createProductionGateDeps(), effectiveConfig: flagsOffConfig(),
229
+ });
230
+ }
231
+ /** Reset the evaluator task to pending (simulated restart / lease-expiry recovery). */
232
+ async function requeueEvaluator() {
233
+ await stateManager.updateTask(EVAL1_ID, { status: 'pending', leaseOwner: null, leaseExpiresAt: null });
234
+ }
235
+ beforeEach(async () => {
236
+ workspaceDir = fs.mkdtempSync(path.join(os.tmpdir(), 'pd-r1r2-regression-'));
237
+ stateManager = new RuntimeStateManager({ workspaceDir });
238
+ await stateManager.initialize();
239
+ emitter = new StoreEventEmitter();
240
+ emitted = [];
241
+ emitter.onTelemetry((event) => {
242
+ emitted.push({ eventType: event.eventType, payload: event.payload });
243
+ });
244
+ store = new SqlitePIArtifactStore(new SqliteConnection(workspaceDir));
245
+ });
246
+ afterEach(async () => {
247
+ await stateManager.close();
248
+ try {
249
+ fs.rmSync(workspaceDir, { recursive: true, force: true });
250
+ }
251
+ catch { /* temp */ }
252
+ });
253
+ describe('Round-2 R1/R2 — out-of-scope attribution and restart-stable governance (production path)', () => {
254
+ it('R1: a rule that MISSES an explicit block requirement must reach the repair loop (no out-of-scope exemption)', async () => {
255
+ const artId = await seedChain(LEAKY_RISK_GATE);
256
+ const seeds = [];
257
+ const prompts = [];
258
+ const result = await reviewEvaluator(artId, 'needs_revision', seeds, prompts).run(EVAL1_ID);
259
+ // The replay surface: v2-combination (/etc/passwd, oracle block) fails with
260
+ // actual allow — a REAL rule defect. Repair MUST be seeded; NHR forbidden.
261
+ expect(seeds.length).toBeGreaterThanOrEqual(1);
262
+ const task = await stateManager.getTask(EVAL1_ID);
263
+ expect(task?.status).not.toBe('needs_human_review');
264
+ const outOfScopeEvents = emitted.filter((e) => e.eventType === 'repair_loop_test_out_of_scope');
265
+ expect(outOfScopeEvents).toHaveLength(0);
266
+ expect(result.status).toBe('succeeded');
267
+ });
268
+ it('R2: the out-of-scope NHR disposition persists in the completion intent and survives an NHR write failure + restart (no LLM re-ask, no repair seed, no routing drift)', async () => {
269
+ const artId = await seedChain(CORRECT_RISK_GATE);
270
+ const seeds = [];
271
+ const prompts = [];
272
+ // Run 1: derive → record (selectedEffect persisted) → effects route
273
+ // pure-out-of-scope → NHR write INJECTED to fail. The chosen disposition
274
+ // must still be durable (intent carries it — the R2 carrier).
275
+ const original = stateManager.updateTask.bind(stateManager);
276
+ let injected = false;
277
+ const spy = vi.spyOn(stateManager, 'updateTask').mockImplementation(async (id, patch) => {
278
+ if (id === EVAL1_ID && patch.status === 'needs_human_review' && !injected) {
279
+ injected = true;
280
+ throw new Error('injected NHR persistence failure');
281
+ }
282
+ return original(id, patch);
283
+ });
284
+ await reviewEvaluator(artId, 'needs_revision', seeds, prompts).run(EVAL1_ID);
285
+ expect(injected).toBe(true);
286
+ expect(seeds).toHaveLength(0);
287
+ const afterFailure = await stateManager.getTask(EVAL1_ID);
288
+ expect(afterFailure?.status).not.toBe('succeeded');
289
+ const piAfter = afterFailure ? hydratePITaskRecord(afterFailure) : null;
290
+ expect(piAfter?.completionIntent?.effect).toBe('needs_human_review');
291
+ expect(piAfter?.completionIntent?.effectReasonCode).toBe('evaluator_test_out_of_scope');
292
+ spy.mockRestore();
293
+ // ── Simulated restart: task requeued, fresh runner instance resumes ──
294
+ await requeueEvaluator();
295
+ await reviewEvaluator(artId, 'needs_revision', seeds, prompts).run(EVAL1_ID);
296
+ // Same durable facts ⇒ same disposition: NHR restored with the SAME
297
+ // reasonCode, no LLM re-ask, no repair seeded, intent finally applied.
298
+ const task = await stateManager.getTask(EVAL1_ID);
299
+ const pi = task ? hydratePITaskRecord(task) : null;
300
+ expect(task?.status).toBe('needs_human_review');
301
+ expect(pi?.humanReviewContext?.reasonCode).toBe('evaluator_test_out_of_scope');
302
+ expect(seeds).toHaveLength(0);
303
+ expect(prompts).toHaveLength(1);
304
+ expect(pi?.completionIntent?.status).toBe('applied');
305
+ });
306
+ });
307
+ //# sourceMappingURL=evaluator-out-of-scope-governance.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator-out-of-scope-governance.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/evaluator-out-of-scope-governance.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.v1', () => {
58
- expect(EVALUATOR_PROMPT_CONTRACT_VERSION).toBe('evaluator-output-v1.prompt.v3');
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');
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":"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"}
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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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * PRI-703 / PRI-705 / PRI-700 — Evolution Alignment contract tests
3
+ * (Owner decision 2026-09-07, task §8 test requirements).
4
+ *
5
+ * Covers the four required test classes:
6
+ * 1. Intent Consistency — the intent contract flows scribe → prompt → rule
7
+ * artifact without mutation (same principle ⇒ same contract).
8
+ * 2. Failure Attribution — partitionV2OutOfScopeFailures classifies
9
+ * rule-error / test-error / infra scenarios correctly (v2×v1 out-of-scope
10
+ * is the Episode-001 PRI-700 shape).
11
+ * 3. Repair feedback circuit — priorValidatorErrors reaches the artificer
12
+ * prompt (PRI-700 factor B) and the case-id vocabulary note is present
13
+ * (factor C).
14
+ * 4. Scribe contract validation — intentContract present-but-malformed is
15
+ * a hard rejection; absent stays valid (backward compatibility).
16
+ */
17
+ export {};
18
+ //# sourceMappingURL=evolution-alignment-contract.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evolution-alignment-contract.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/evolution-alignment-contract.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}