@principles/core 1.177.3 → 1.177.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.d.ts +2 -0
- package/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.d.ts.map +1 -0
- package/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.js +395 -0
- package/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.js.map +1 -0
- package/dist/runtime-v2/bridge-result-shaper.d.ts +53 -0
- package/dist/runtime-v2/bridge-result-shaper.d.ts.map +1 -0
- package/dist/runtime-v2/bridge-result-shaper.js +117 -0
- package/dist/runtime-v2/bridge-result-shaper.js.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.d.ts +2 -0
- package/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.d.ts.map +1 -0
- package/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.js +306 -0
- package/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.js.map +1 -0
- package/dist/runtime-v2/pain-signal-bridge.d.ts.map +1 -1
- package/dist/runtime-v2/pain-signal-bridge.js +14 -88
- package/dist/runtime-v2/pain-signal-bridge.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pain-signal-bridge-result-shaping.test.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRI-456: Characterization test for PainSignalBridge result-shaping.
|
|
3
|
+
*
|
|
4
|
+
* Pins the full PainSignalBridgeResult status matrix for both:
|
|
5
|
+
* - onDiagnosisComplete() (fresh diagnosis path)
|
|
6
|
+
* - buildExistingResult() (idempotent existing-task path)
|
|
7
|
+
*
|
|
8
|
+
* This test MUST remain green before and after the refactor that extracts
|
|
9
|
+
* a pure shapeBridgeResult() function. If any assertion changes, it is a
|
|
10
|
+
* behavior change — STOP.
|
|
11
|
+
*
|
|
12
|
+
* ERR gate:
|
|
13
|
+
* - ERR-007 / EP-02: single source for status decision (test proves both paths)
|
|
14
|
+
* - ERR-002 / EP-03: every degraded/failed branch keeps its structured message
|
|
15
|
+
* - ERR-004 / ERR-008 / EP-07: lineage fields come from the same source rows
|
|
16
|
+
*/
|
|
17
|
+
import { describe, it, expect } from 'vitest';
|
|
18
|
+
import { PainSignalBridge } from '../pain-signal-bridge.js';
|
|
19
|
+
const PAIN_ID = 'pain-char-001';
|
|
20
|
+
const TASK_ID = 'diagnosis_pain-char-001';
|
|
21
|
+
const RUN_ID = 'run-char-1';
|
|
22
|
+
// ── Factory helpers ──────────────────────────────────────────────────────────
|
|
23
|
+
function makeCandidate(id, kind, overrides = {}) {
|
|
24
|
+
return {
|
|
25
|
+
candidateId: id,
|
|
26
|
+
taskId: TASK_ID,
|
|
27
|
+
artifactId: `artifact-${id}`,
|
|
28
|
+
sourceRunId: `run-${id}`,
|
|
29
|
+
title: `Candidate ${id}`,
|
|
30
|
+
description: `Description for ${id}`,
|
|
31
|
+
confidence: 0.85,
|
|
32
|
+
sourceRecommendationJson: '{}',
|
|
33
|
+
recommendationKind: kind,
|
|
34
|
+
status: 'pending',
|
|
35
|
+
createdAt: '2026-06-24T00:00:00.000Z',
|
|
36
|
+
...overrides,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function makeLedgerEntry(candidateId) {
|
|
40
|
+
return {
|
|
41
|
+
id: `ledger-${candidateId}`,
|
|
42
|
+
status: 'probation',
|
|
43
|
+
createdAt: '2026-06-24T00:00:00.000Z',
|
|
44
|
+
text: `Principle text for ${candidateId}`,
|
|
45
|
+
sourceRef: `candidate://${candidateId}`,
|
|
46
|
+
title: `Principle ${candidateId}`,
|
|
47
|
+
evaluability: 'weak_heuristic',
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function makeHighConfidenceOutput() {
|
|
51
|
+
return {
|
|
52
|
+
valid: true,
|
|
53
|
+
diagnosisId: 'diag-high',
|
|
54
|
+
summary: 'Valid diagnosis with sufficient evidence',
|
|
55
|
+
rootCause: 'Identified root cause from session trace',
|
|
56
|
+
violatedPrinciples: [],
|
|
57
|
+
evidence: [{ sourceRef: 'session-trace-1', note: 'Owner confirmed behavior' }],
|
|
58
|
+
recommendations: [{ kind: 'principle', description: 'Valid principle from evidence' }],
|
|
59
|
+
confidence: 0.85,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function makeLowConfidenceOutput() {
|
|
63
|
+
return {
|
|
64
|
+
valid: true,
|
|
65
|
+
diagnosisId: 'diag-low',
|
|
66
|
+
summary: 'Low confidence diagnosis',
|
|
67
|
+
rootCause: 'Insufficient evidence',
|
|
68
|
+
violatedPrinciples: [],
|
|
69
|
+
evidence: [],
|
|
70
|
+
recommendations: [{ kind: 'principle', description: 'Low confidence principle' }],
|
|
71
|
+
confidence: 0.3,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function makeMockDeps(overrides) {
|
|
75
|
+
const telemetryEvents = [];
|
|
76
|
+
const createTaskCalls = [];
|
|
77
|
+
const updateCandidateStatusCalls = [];
|
|
78
|
+
const createTaskMock = async (input) => {
|
|
79
|
+
createTaskCalls.push(input);
|
|
80
|
+
if (overrides.createTaskFn)
|
|
81
|
+
return overrides.createTaskFn(input);
|
|
82
|
+
return { taskId: 'mock-task' };
|
|
83
|
+
};
|
|
84
|
+
const getTaskMock = overrides.getTaskFn ?? (async () => null);
|
|
85
|
+
const updateCandidateStatusMock = async (candidateId, patch) => {
|
|
86
|
+
updateCandidateStatusCalls.push({ candidateId, patch });
|
|
87
|
+
};
|
|
88
|
+
const stateManager = {
|
|
89
|
+
getTask: getTaskMock,
|
|
90
|
+
createTask: createTaskMock,
|
|
91
|
+
updateTask: async () => undefined,
|
|
92
|
+
getCandidatesByTaskId: async () => overrides.candidates ?? [],
|
|
93
|
+
getRunsByTask: async () => [{ runId: RUN_ID, taskId: TASK_ID, status: 'succeeded' }],
|
|
94
|
+
updateCandidateStatus: updateCandidateStatusMock,
|
|
95
|
+
};
|
|
96
|
+
const intakeService = {
|
|
97
|
+
intake: async (candidateId) => ({ id: `ledger-${candidateId}` }),
|
|
98
|
+
};
|
|
99
|
+
const ledgerEntries = overrides.ledgerEntries ?? new Map();
|
|
100
|
+
const ledgerAdapter = {
|
|
101
|
+
existsForCandidate: (candidateId) => ledgerEntries.get(candidateId) ?? null,
|
|
102
|
+
};
|
|
103
|
+
const runner = {
|
|
104
|
+
run: async () => ({
|
|
105
|
+
status: 'succeeded',
|
|
106
|
+
taskId: TASK_ID,
|
|
107
|
+
attemptCount: 1,
|
|
108
|
+
output: overrides.output ?? makeHighConfidenceOutput(),
|
|
109
|
+
}),
|
|
110
|
+
};
|
|
111
|
+
return {
|
|
112
|
+
stateManager,
|
|
113
|
+
intakeService,
|
|
114
|
+
ledgerAdapter,
|
|
115
|
+
runner,
|
|
116
|
+
telemetryEvents,
|
|
117
|
+
createTaskCalls,
|
|
118
|
+
updateCandidateStatusCalls,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function createBridge(deps, autoIntakeEnabled = true) {
|
|
122
|
+
return new PainSignalBridge({
|
|
123
|
+
stateManager: deps.stateManager,
|
|
124
|
+
runner: deps.runner,
|
|
125
|
+
intakeService: deps.intakeService,
|
|
126
|
+
ledgerAdapter: deps.ledgerAdapter,
|
|
127
|
+
autoIntakeEnabled,
|
|
128
|
+
eventEmitter: {
|
|
129
|
+
emitTelemetry: (event) => {
|
|
130
|
+
deps.telemetryEvents.push(event);
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
const PROVENANCE = 'openclaw_context_bound';
|
|
136
|
+
// ── onDiagnosisComplete() characterization ───────────────────────────────────
|
|
137
|
+
describe('PRI-456: onDiagnosisComplete result-shaping characterization', () => {
|
|
138
|
+
it('succeeded: 1 admitted candidate with ledger entry and successful dreamer seed', async () => {
|
|
139
|
+
const candidates = [makeCandidate('c1', 'principle')];
|
|
140
|
+
const deps = makeMockDeps({ candidates, output: makeHighConfidenceOutput() });
|
|
141
|
+
const bridge = createBridge(deps);
|
|
142
|
+
const result = await bridge.onDiagnosisComplete({
|
|
143
|
+
taskId: TASK_ID,
|
|
144
|
+
diagnosticianOutput: makeHighConfidenceOutput(),
|
|
145
|
+
painId: PAIN_ID,
|
|
146
|
+
provenance: PROVENANCE,
|
|
147
|
+
inputEvidenceCount: 1,
|
|
148
|
+
});
|
|
149
|
+
expect(result.status).toBe('succeeded');
|
|
150
|
+
expect(result.painId).toBe(PAIN_ID);
|
|
151
|
+
expect(result.taskId).toBe(TASK_ID);
|
|
152
|
+
expect(result.runId).toBe(RUN_ID);
|
|
153
|
+
expect(result.artifactId).toBe('artifact-c1');
|
|
154
|
+
expect(result.candidateIds).toEqual(['c1']);
|
|
155
|
+
expect(result.ledgerEntryIds).toEqual(['ledger-c1']);
|
|
156
|
+
expect(result.admissionResults).toBeDefined();
|
|
157
|
+
expect(result.admissionResults).toHaveLength(1);
|
|
158
|
+
expect(result.admissionResults?.[0]?.admission.decision).toBe('admitted');
|
|
159
|
+
expect(result.message).toBeUndefined();
|
|
160
|
+
});
|
|
161
|
+
it('succeeded: autoIntakeEnabled=false — no ledger entries needed', async () => {
|
|
162
|
+
const candidates = [makeCandidate('c1', 'principle')];
|
|
163
|
+
const deps = makeMockDeps({ candidates, output: makeHighConfidenceOutput() });
|
|
164
|
+
const bridge = createBridge(deps, false);
|
|
165
|
+
const result = await bridge.onDiagnosisComplete({
|
|
166
|
+
taskId: TASK_ID,
|
|
167
|
+
diagnosticianOutput: makeHighConfidenceOutput(),
|
|
168
|
+
painId: PAIN_ID,
|
|
169
|
+
provenance: PROVENANCE,
|
|
170
|
+
inputEvidenceCount: 1,
|
|
171
|
+
});
|
|
172
|
+
expect(result.status).toBe('succeeded');
|
|
173
|
+
expect(result.candidateIds).toEqual(['c1']);
|
|
174
|
+
expect(result.ledgerEntryIds).toEqual([]);
|
|
175
|
+
expect(result.admissionResults).toBeDefined();
|
|
176
|
+
expect(result.admissionResults?.[0]?.admission.decision).toBe('admitted');
|
|
177
|
+
expect(result.message).toBeUndefined();
|
|
178
|
+
});
|
|
179
|
+
it('failed: no candidates — "Diagnostician succeeded but produced no principle candidates"', async () => {
|
|
180
|
+
const deps = makeMockDeps({ candidates: [], output: makeHighConfidenceOutput() });
|
|
181
|
+
const bridge = createBridge(deps);
|
|
182
|
+
const result = await bridge.onDiagnosisComplete({
|
|
183
|
+
taskId: TASK_ID,
|
|
184
|
+
diagnosticianOutput: makeHighConfidenceOutput(),
|
|
185
|
+
painId: PAIN_ID,
|
|
186
|
+
provenance: PROVENANCE,
|
|
187
|
+
inputEvidenceCount: 1,
|
|
188
|
+
});
|
|
189
|
+
expect(result.status).toBe('failed');
|
|
190
|
+
expect(result.painId).toBe(PAIN_ID);
|
|
191
|
+
expect(result.taskId).toBe(TASK_ID);
|
|
192
|
+
expect(result.runId).toBe(RUN_ID);
|
|
193
|
+
expect(result.artifactId).toBeUndefined();
|
|
194
|
+
expect(result.candidateIds).toEqual([]);
|
|
195
|
+
expect(result.ledgerEntryIds).toEqual([]);
|
|
196
|
+
expect(result.admissionResults).toEqual([]);
|
|
197
|
+
expect(result.message).toBe('Diagnostician succeeded but produced no principle candidates');
|
|
198
|
+
});
|
|
199
|
+
it('degraded: all_candidates_gated — 1 candidate, low confidence, not admitted', async () => {
|
|
200
|
+
const candidates = [makeCandidate('c-gated', 'principle')];
|
|
201
|
+
const deps = makeMockDeps({ candidates, output: makeLowConfidenceOutput() });
|
|
202
|
+
const bridge = createBridge(deps);
|
|
203
|
+
const result = await bridge.onDiagnosisComplete({
|
|
204
|
+
taskId: TASK_ID,
|
|
205
|
+
diagnosticianOutput: makeLowConfidenceOutput(),
|
|
206
|
+
painId: PAIN_ID,
|
|
207
|
+
provenance: PROVENANCE,
|
|
208
|
+
inputEvidenceCount: 1,
|
|
209
|
+
});
|
|
210
|
+
expect(result.status).toBe('degraded');
|
|
211
|
+
expect(result.candidateIds).toEqual(['c-gated']);
|
|
212
|
+
expect(result.ledgerEntryIds).toEqual([]);
|
|
213
|
+
expect(result.admissionResults).toBeDefined();
|
|
214
|
+
expect(result.admissionResults?.[0]?.admission.decision).toBe('needs_evidence');
|
|
215
|
+
expect(result.message).toContain('all_candidates_gated');
|
|
216
|
+
expect(result.message).toContain('c-gated=needs_evidence');
|
|
217
|
+
});
|
|
218
|
+
it('degraded: partial_admission — 2 candidates, 1 admitted, 1 deferred', async () => {
|
|
219
|
+
// To get partial admission, one candidate must be admitted (principle, high confidence)
|
|
220
|
+
// and one must be non-admitted (defer kind → always deferred regardless of confidence).
|
|
221
|
+
const candidatesPartial = [
|
|
222
|
+
makeCandidate('c-ok', 'principle'),
|
|
223
|
+
makeCandidate('c-defer', 'defer'),
|
|
224
|
+
];
|
|
225
|
+
const deps = makeMockDeps({ candidates: candidatesPartial, output: makeHighConfidenceOutput() });
|
|
226
|
+
const bridge = createBridge(deps);
|
|
227
|
+
const result = await bridge.onDiagnosisComplete({
|
|
228
|
+
taskId: TASK_ID,
|
|
229
|
+
diagnosticianOutput: makeHighConfidenceOutput(),
|
|
230
|
+
painId: PAIN_ID,
|
|
231
|
+
provenance: PROVENANCE,
|
|
232
|
+
inputEvidenceCount: 1,
|
|
233
|
+
});
|
|
234
|
+
expect(result.status).toBe('degraded');
|
|
235
|
+
expect(result.candidateIds).toEqual(['c-ok', 'c-defer']);
|
|
236
|
+
expect(result.ledgerEntryIds).toEqual(['ledger-c-ok']);
|
|
237
|
+
expect(result.admissionResults).toBeDefined();
|
|
238
|
+
expect(result.admissionResults).toHaveLength(2);
|
|
239
|
+
const admitted = result.admissionResults?.find((a) => a.candidateId === 'c-ok');
|
|
240
|
+
expect(admitted?.admission.decision).toBe('admitted');
|
|
241
|
+
const deferred = result.admissionResults?.find((a) => a.candidateId === 'c-defer');
|
|
242
|
+
expect(deferred?.admission.decision).toBe('deferred');
|
|
243
|
+
expect(result.message).toContain('partial_admission');
|
|
244
|
+
expect(result.message).toContain('1_admitted_1_gated');
|
|
245
|
+
});
|
|
246
|
+
it('degraded: dreamer_seed_failed — admitted candidate, ledger created, dreamer seed throws', async () => {
|
|
247
|
+
const candidates = [makeCandidate('c-fail', 'principle')];
|
|
248
|
+
const deps = makeMockDeps({
|
|
249
|
+
candidates,
|
|
250
|
+
output: makeHighConfidenceOutput(),
|
|
251
|
+
createTaskFn: async (input) => {
|
|
252
|
+
if (input.taskKind === 'dreamer')
|
|
253
|
+
throw new Error('DB write failed');
|
|
254
|
+
return { taskId: input.taskId ?? 'mock-task' };
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
const bridge = createBridge(deps);
|
|
258
|
+
const result = await bridge.onDiagnosisComplete({
|
|
259
|
+
taskId: TASK_ID,
|
|
260
|
+
diagnosticianOutput: makeHighConfidenceOutput(),
|
|
261
|
+
painId: PAIN_ID,
|
|
262
|
+
provenance: PROVENANCE,
|
|
263
|
+
inputEvidenceCount: 1,
|
|
264
|
+
});
|
|
265
|
+
expect(result.status).toBe('degraded');
|
|
266
|
+
expect(result.candidateIds).toEqual(['c-fail']);
|
|
267
|
+
expect(result.ledgerEntryIds).toEqual(['ledger-c-fail']);
|
|
268
|
+
expect(result.message).toContain('dreamer_seed_failed:c-fail');
|
|
269
|
+
// The candidate should still be consumed despite seed failure
|
|
270
|
+
const consumedCall = deps.updateCandidateStatusCalls.find((c) => c.candidateId === 'c-fail');
|
|
271
|
+
expect(consumedCall).toBeDefined();
|
|
272
|
+
expect(consumedCall?.patch).toEqual({ status: 'consumed' });
|
|
273
|
+
});
|
|
274
|
+
it('degraded: all_candidates_gated with seed failure note appended', async () => {
|
|
275
|
+
// When all candidates are gated AND a seed failure occurs (shouldn't normally happen
|
|
276
|
+
// since seed only runs for admitted candidates, but test the message format)
|
|
277
|
+
const candidates = [makeCandidate('c-gated', 'principle')];
|
|
278
|
+
const deps = makeMockDeps({
|
|
279
|
+
candidates,
|
|
280
|
+
output: makeLowConfidenceOutput(),
|
|
281
|
+
});
|
|
282
|
+
const bridge = createBridge(deps);
|
|
283
|
+
const result = await bridge.onDiagnosisComplete({
|
|
284
|
+
taskId: TASK_ID,
|
|
285
|
+
diagnosticianOutput: makeLowConfidenceOutput(),
|
|
286
|
+
painId: PAIN_ID,
|
|
287
|
+
provenance: PROVENANCE,
|
|
288
|
+
inputEvidenceCount: 1,
|
|
289
|
+
});
|
|
290
|
+
// All gated → degraded, no seed failure (no admitted candidates to seed)
|
|
291
|
+
expect(result.status).toBe('degraded');
|
|
292
|
+
expect(result.message).toContain('all_candidates_gated');
|
|
293
|
+
expect(result.message).not.toContain('dreamer_seed_failed');
|
|
294
|
+
});
|
|
295
|
+
it('diagnosticianOutput=undefined: all candidates get needs_evidence → all_candidates_gated', async () => {
|
|
296
|
+
const candidates = [makeCandidate('c-undef', 'principle')];
|
|
297
|
+
const deps = makeMockDeps({ candidates });
|
|
298
|
+
const bridge = createBridge(deps);
|
|
299
|
+
const result = await bridge.onDiagnosisComplete({
|
|
300
|
+
taskId: TASK_ID,
|
|
301
|
+
diagnosticianOutput: undefined,
|
|
302
|
+
painId: PAIN_ID,
|
|
303
|
+
provenance: PROVENANCE,
|
|
304
|
+
inputEvidenceCount: 1,
|
|
305
|
+
});
|
|
306
|
+
expect(result.status).toBe('degraded');
|
|
307
|
+
expect(result.admissionResults).toBeDefined();
|
|
308
|
+
expect(result.admissionResults?.[0]?.admission.decision).toBe('needs_evidence');
|
|
309
|
+
expect(result.admissionResults?.[0]?.admission.reason).toBe('diagnostician_output_unavailable');
|
|
310
|
+
expect(result.message).toContain('all_candidates_gated');
|
|
311
|
+
});
|
|
312
|
+
});
|
|
313
|
+
// ── buildExistingResult() characterization ───────────────────────────────────
|
|
314
|
+
describe('PRI-456: buildExistingResult result-shaping characterization', () => {
|
|
315
|
+
it('succeeded: existing task with candidates and ledger entries', async () => {
|
|
316
|
+
const candidates = [makeCandidate('c1', 'principle')];
|
|
317
|
+
const ledgerEntries = new Map([['c1', makeLedgerEntry('c1')]]);
|
|
318
|
+
const deps = makeMockDeps({ candidates, ledgerEntries });
|
|
319
|
+
const bridge = createBridge(deps);
|
|
320
|
+
const result = await bridge.buildExistingResult({
|
|
321
|
+
painId: PAIN_ID,
|
|
322
|
+
taskId: TASK_ID,
|
|
323
|
+
});
|
|
324
|
+
expect(result.status).toBe('succeeded');
|
|
325
|
+
expect(result.painId).toBe(PAIN_ID);
|
|
326
|
+
expect(result.taskId).toBe(TASK_ID);
|
|
327
|
+
expect(result.runId).toBe(RUN_ID);
|
|
328
|
+
expect(result.artifactId).toBe('artifact-c1');
|
|
329
|
+
expect(result.candidateIds).toEqual(['c1']);
|
|
330
|
+
expect(result.ledgerEntryIds).toEqual(['ledger-c1']);
|
|
331
|
+
expect(result.message).toBe('Task already succeeded');
|
|
332
|
+
});
|
|
333
|
+
it('succeeded: autoIntakeEnabled=false — no ledger entries needed', async () => {
|
|
334
|
+
const candidates = [makeCandidate('c1', 'principle')];
|
|
335
|
+
const deps = makeMockDeps({ candidates, ledgerEntries: new Map() });
|
|
336
|
+
const bridge = createBridge(deps, false);
|
|
337
|
+
const result = await bridge.buildExistingResult({
|
|
338
|
+
painId: PAIN_ID,
|
|
339
|
+
taskId: TASK_ID,
|
|
340
|
+
});
|
|
341
|
+
expect(result.status).toBe('succeeded');
|
|
342
|
+
expect(result.candidateIds).toEqual(['c1']);
|
|
343
|
+
expect(result.ledgerEntryIds).toEqual([]);
|
|
344
|
+
expect(result.message).toBe('Task already succeeded');
|
|
345
|
+
});
|
|
346
|
+
it('failed: no candidates — "Task has no principle candidates — treating as failed"', async () => {
|
|
347
|
+
const deps = makeMockDeps({ candidates: [], ledgerEntries: new Map() });
|
|
348
|
+
const bridge = createBridge(deps);
|
|
349
|
+
const result = await bridge.buildExistingResult({
|
|
350
|
+
painId: PAIN_ID,
|
|
351
|
+
taskId: TASK_ID,
|
|
352
|
+
});
|
|
353
|
+
expect(result.status).toBe('failed');
|
|
354
|
+
expect(result.painId).toBe(PAIN_ID);
|
|
355
|
+
expect(result.taskId).toBe(TASK_ID);
|
|
356
|
+
expect(result.runId).toBe(RUN_ID);
|
|
357
|
+
expect(result.artifactId).toBeUndefined();
|
|
358
|
+
expect(result.candidateIds).toEqual([]);
|
|
359
|
+
expect(result.ledgerEntryIds).toEqual([]);
|
|
360
|
+
expect(result.message).toBe('Task has no principle candidates — treating as failed');
|
|
361
|
+
});
|
|
362
|
+
it('failed: no ledger entries with autoIntakeEnabled=true', async () => {
|
|
363
|
+
const candidates = [makeCandidate('c1', 'principle')];
|
|
364
|
+
const deps = makeMockDeps({ candidates, ledgerEntries: new Map() });
|
|
365
|
+
const bridge = createBridge(deps);
|
|
366
|
+
const result = await bridge.buildExistingResult({
|
|
367
|
+
painId: PAIN_ID,
|
|
368
|
+
taskId: TASK_ID,
|
|
369
|
+
});
|
|
370
|
+
expect(result.status).toBe('failed');
|
|
371
|
+
expect(result.runId).toBe(RUN_ID);
|
|
372
|
+
expect(result.artifactId).toBe('artifact-c1');
|
|
373
|
+
expect(result.candidateIds).toEqual(['c1']);
|
|
374
|
+
expect(result.ledgerEntryIds).toEqual([]);
|
|
375
|
+
expect(result.message).toBe('Candidate intake did not produce a ledger entry — treating as failed');
|
|
376
|
+
});
|
|
377
|
+
it('multiple candidates with mixed ledger existence — only existing ledgers counted', async () => {
|
|
378
|
+
const candidates = [
|
|
379
|
+
makeCandidate('c1', 'principle'),
|
|
380
|
+
makeCandidate('c2', 'principle'),
|
|
381
|
+
];
|
|
382
|
+
const ledgerEntries = new Map([['c1', makeLedgerEntry('c1')]]);
|
|
383
|
+
const deps = makeMockDeps({ candidates, ledgerEntries });
|
|
384
|
+
const bridge = createBridge(deps);
|
|
385
|
+
const result = await bridge.buildExistingResult({
|
|
386
|
+
painId: PAIN_ID,
|
|
387
|
+
taskId: TASK_ID,
|
|
388
|
+
});
|
|
389
|
+
expect(result.status).toBe('succeeded');
|
|
390
|
+
expect(result.candidateIds).toEqual(['c1', 'c2']);
|
|
391
|
+
expect(result.ledgerEntryIds).toEqual(['ledger-c1']);
|
|
392
|
+
expect(result.message).toBe('Task already succeeded');
|
|
393
|
+
});
|
|
394
|
+
});
|
|
395
|
+
//# sourceMappingURL=pain-signal-bridge-result-shaping.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pain-signal-bridge-result-shaping.test.js","sourceRoot":"","sources":["../../../src/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRI-456: Pure result-shaping function for PainSignalBridge.
|
|
3
|
+
*
|
|
4
|
+
* Extracts the duplicated status-decision tree from:
|
|
5
|
+
* - PainSignalBridge.onDiagnosisComplete() (fresh diagnosis path)
|
|
6
|
+
* - PainSignalBridge.buildExistingResult() (idempotent existing-task path)
|
|
7
|
+
*
|
|
8
|
+
* Both paths decide: no candidates → failed; admitted-but-no-ledger → failed;
|
|
9
|
+
* gated/partial → degraded; otherwise succeeded. But they differ in message
|
|
10
|
+
* strings and the fresh path has admission results + degraded states.
|
|
11
|
+
*
|
|
12
|
+
* This function is pure: zero I/O, zero side effects. Callers pass all
|
|
13
|
+
* computed values; the function never re-derives lineage fields.
|
|
14
|
+
*
|
|
15
|
+
* ERR gate:
|
|
16
|
+
* - ERR-007 / EP-02: single source for status decision — branches can't diverge
|
|
17
|
+
* - ERR-002 / EP-03: every degraded/failed branch keeps its structured message
|
|
18
|
+
* - ERR-004 / ERR-008 / EP-07: lineage fields are received, never re-derived
|
|
19
|
+
*/
|
|
20
|
+
import type { PainSignalBridgeResult } from './pain-signal-bridge.js';
|
|
21
|
+
import type { CandidateAdmissionResult } from './admission-gate.js';
|
|
22
|
+
/** Base fields shared by both fresh and existing paths. */
|
|
23
|
+
interface ShapeBridgeResultBase {
|
|
24
|
+
painId: string;
|
|
25
|
+
taskId: string;
|
|
26
|
+
candidateIds: string[];
|
|
27
|
+
ledgerEntryIds: string[];
|
|
28
|
+
runId?: string;
|
|
29
|
+
artifactId?: string;
|
|
30
|
+
autoIntakeEnabled: boolean;
|
|
31
|
+
}
|
|
32
|
+
/** Fresh diagnosis path — has admission results and seed failure notes. */
|
|
33
|
+
export interface ShapeBridgeResultFreshInput extends ShapeBridgeResultBase {
|
|
34
|
+
path: 'fresh';
|
|
35
|
+
admissionResults: CandidateAdmissionResult[];
|
|
36
|
+
/** Non-empty string when dreamer seed failed; empty string otherwise. */
|
|
37
|
+
seedFailureNote: string;
|
|
38
|
+
}
|
|
39
|
+
/** Existing-task idempotent path — ledger-existence-derived, no admissions. */
|
|
40
|
+
export interface ShapeBridgeResultExistingInput extends ShapeBridgeResultBase {
|
|
41
|
+
path: 'existing';
|
|
42
|
+
}
|
|
43
|
+
export type ShapeBridgeResultInput = ShapeBridgeResultFreshInput | ShapeBridgeResultExistingInput;
|
|
44
|
+
/**
|
|
45
|
+
* Derive the final PainSignalBridgeResult from computed inputs.
|
|
46
|
+
*
|
|
47
|
+
* Byte-for-byte identical to the original inline logic in both call sites.
|
|
48
|
+
* The `path` discriminator selects the appropriate message strings and
|
|
49
|
+
* decision branches.
|
|
50
|
+
*/
|
|
51
|
+
export declare function shapeBridgeResult(input: ShapeBridgeResultInput): PainSignalBridgeResult;
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=bridge-result-shaper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-result-shaper.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/bridge-result-shaper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,2DAA2D;AAC3D,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,2EAA2E;AAC3E,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB;IACxE,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,wBAAwB,EAAE,CAAC;IAC7C,yEAAyE;IACzE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,8BAA+B,SAAQ,qBAAqB;IAC3E,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,MAAM,sBAAsB,GAC9B,2BAA2B,GAC3B,8BAA8B,CAAC;AAEnC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,sBAAsB,CAoHvF"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derive the final PainSignalBridgeResult from computed inputs.
|
|
3
|
+
*
|
|
4
|
+
* Byte-for-byte identical to the original inline logic in both call sites.
|
|
5
|
+
* The `path` discriminator selects the appropriate message strings and
|
|
6
|
+
* decision branches.
|
|
7
|
+
*/
|
|
8
|
+
export function shapeBridgeResult(input) {
|
|
9
|
+
const { painId, taskId, candidateIds, ledgerEntryIds, runId, artifactId, autoIntakeEnabled } = input;
|
|
10
|
+
// Common: no candidates → failed (message differs by path)
|
|
11
|
+
if (candidateIds.length === 0) {
|
|
12
|
+
if (input.path === 'fresh') {
|
|
13
|
+
return {
|
|
14
|
+
status: 'failed',
|
|
15
|
+
painId,
|
|
16
|
+
taskId,
|
|
17
|
+
runId,
|
|
18
|
+
candidateIds,
|
|
19
|
+
ledgerEntryIds,
|
|
20
|
+
admissionResults: input.admissionResults,
|
|
21
|
+
message: 'Diagnostician succeeded but produced no principle candidates',
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
status: 'failed',
|
|
26
|
+
painId,
|
|
27
|
+
taskId,
|
|
28
|
+
runId,
|
|
29
|
+
candidateIds,
|
|
30
|
+
ledgerEntryIds,
|
|
31
|
+
message: 'Task has no principle candidates — treating as failed',
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
if (input.path === 'fresh') {
|
|
35
|
+
const { admissionResults, seedFailureNote } = input;
|
|
36
|
+
const admittedCount = admissionResults.filter((a) => a.admission.decision === 'admitted').length;
|
|
37
|
+
const nonAdmittedCount = admissionResults.length - admittedCount;
|
|
38
|
+
// Admitted candidates exist but intake produced no ledger entries
|
|
39
|
+
if (autoIntakeEnabled && admittedCount > 0 && ledgerEntryIds.length === 0) {
|
|
40
|
+
return {
|
|
41
|
+
status: 'failed',
|
|
42
|
+
painId,
|
|
43
|
+
taskId,
|
|
44
|
+
runId,
|
|
45
|
+
artifactId,
|
|
46
|
+
candidateIds,
|
|
47
|
+
ledgerEntryIds,
|
|
48
|
+
admissionResults,
|
|
49
|
+
message: 'Candidate intake did not produce a ledger entry',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// All candidates gated (none admitted)
|
|
53
|
+
if (nonAdmittedCount > 0 && admittedCount === 0) {
|
|
54
|
+
return {
|
|
55
|
+
status: 'degraded',
|
|
56
|
+
painId,
|
|
57
|
+
taskId,
|
|
58
|
+
runId,
|
|
59
|
+
artifactId,
|
|
60
|
+
candidateIds,
|
|
61
|
+
ledgerEntryIds,
|
|
62
|
+
admissionResults,
|
|
63
|
+
message: `all_candidates_gated:${admissionResults.map((a) => `${a.candidateId}=${a.admission.decision}`).join(',')}${seedFailureNote ? `; ${seedFailureNote}` : ''}`,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// Partial admission (some admitted, some gated)
|
|
67
|
+
if (nonAdmittedCount > 0 && admittedCount > 0) {
|
|
68
|
+
return {
|
|
69
|
+
status: 'degraded',
|
|
70
|
+
painId,
|
|
71
|
+
taskId,
|
|
72
|
+
runId,
|
|
73
|
+
artifactId,
|
|
74
|
+
candidateIds,
|
|
75
|
+
ledgerEntryIds,
|
|
76
|
+
admissionResults,
|
|
77
|
+
message: `partial_admission:${admittedCount}_admitted_${nonAdmittedCount}_gated${seedFailureNote ? `; ${seedFailureNote}` : ''}`,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// Success (or degraded if seed failure occurred)
|
|
81
|
+
return {
|
|
82
|
+
status: seedFailureNote ? 'degraded' : 'succeeded',
|
|
83
|
+
painId,
|
|
84
|
+
taskId,
|
|
85
|
+
runId,
|
|
86
|
+
artifactId,
|
|
87
|
+
candidateIds,
|
|
88
|
+
ledgerEntryIds,
|
|
89
|
+
admissionResults,
|
|
90
|
+
message: seedFailureNote || undefined,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
// Existing path: no admission results, simpler decision tree
|
|
94
|
+
if (autoIntakeEnabled && ledgerEntryIds.length === 0) {
|
|
95
|
+
return {
|
|
96
|
+
status: 'failed',
|
|
97
|
+
painId,
|
|
98
|
+
taskId,
|
|
99
|
+
runId,
|
|
100
|
+
artifactId,
|
|
101
|
+
candidateIds,
|
|
102
|
+
ledgerEntryIds,
|
|
103
|
+
message: 'Candidate intake did not produce a ledger entry — treating as failed',
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
status: 'succeeded',
|
|
108
|
+
painId,
|
|
109
|
+
taskId,
|
|
110
|
+
runId,
|
|
111
|
+
artifactId,
|
|
112
|
+
candidateIds,
|
|
113
|
+
ledgerEntryIds,
|
|
114
|
+
message: 'Task already succeeded',
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=bridge-result-shaper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-result-shaper.js","sourceRoot":"","sources":["../../src/runtime-v2/bridge-result-shaper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"c2-live-runner-chain.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C2-P0 Pinning Test: Live MVP Runner Chain (PRI-457)
|
|
3
|
+
*
|
|
4
|
+
* Asserts the actual successor task chain created in the real store matches
|
|
5
|
+
* the documented live runner chain for each MVP activation channel.
|
|
6
|
+
*
|
|
7
|
+
* ERR Gate:
|
|
8
|
+
* - ERR-004 / ERR-008 / EP-07: successor task kinds are read from the real
|
|
9
|
+
* store after commitNextTaskProposal, not inferred from ALLOWED_EDGES.
|
|
10
|
+
* - EP-09: uses real InternalizationOrchestrator + RuntimeStateManager (SQLite),
|
|
11
|
+
* not a hand-written expected-edge list.
|
|
12
|
+
*
|
|
13
|
+
* This test is the regression guard for C2-P2 (de-surface Quiet runners).
|
|
14
|
+
* If the live chain ever diverges from the documented MVP chain, CI fails.
|
|
15
|
+
*/
|
|
16
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
17
|
+
import * as fs from 'fs';
|
|
18
|
+
import * as path from 'path';
|
|
19
|
+
import * as os from 'os';
|
|
20
|
+
import { RuntimeStateManager } from '../../store/runtime-state-manager.js';
|
|
21
|
+
import { InternalizationOrchestrator } from '../internalization-orchestrator.js';
|
|
22
|
+
import { buildDreamerTaskSeed, computeBridgeDecision, } from '../intake-to-internalization-bridge.js';
|
|
23
|
+
// ── Test constants ───────────────────────────────────────────────────────────
|
|
24
|
+
const OWNER = 'test-c2-p0';
|
|
25
|
+
const RUNTIME_KIND = 'test-double';
|
|
26
|
+
/**
|
|
27
|
+
* The expected live runner chain under default config, per channel.
|
|
28
|
+
*
|
|
29
|
+
* This is the ASSERTION target — the test verifies that the real store
|
|
30
|
+
* contains these successor task kinds after each commitNextTaskProposal call.
|
|
31
|
+
*
|
|
32
|
+
* Source: docs/plans/2026-06-mvp-slimming-candidates-1-2/c2-live-runner-chain.md
|
|
33
|
+
*/
|
|
34
|
+
const EXPECTED_CHAIN = [
|
|
35
|
+
'dreamer',
|
|
36
|
+
'philosopher',
|
|
37
|
+
'scribe',
|
|
38
|
+
'artificer',
|
|
39
|
+
'evaluator',
|
|
40
|
+
'rollout_reviewer',
|
|
41
|
+
];
|
|
42
|
+
/**
|
|
43
|
+
* Seed a dreamer task through the real intake bridge path.
|
|
44
|
+
*
|
|
45
|
+
* Uses buildDreamerTaskSeed (the same function the production intake bridge
|
|
46
|
+
* calls) to generate the diagnosticJson, then creates the task in the real
|
|
47
|
+
* store. This is the real seeding path — not a hand-built task record.
|
|
48
|
+
*/
|
|
49
|
+
async function seedDreamerTask(stateManager, options) {
|
|
50
|
+
const { candidateId, channel, sourceTaskId } = options;
|
|
51
|
+
const bridgeInput = {
|
|
52
|
+
candidateId,
|
|
53
|
+
recommendationKind: channel === 'code_tool_hook' ? 'rule' : 'principle',
|
|
54
|
+
route: channel === 'code_tool_hook' ? 'rule-candidate' : 'principle-ledger',
|
|
55
|
+
ready: true,
|
|
56
|
+
sourceTaskId,
|
|
57
|
+
sourceArtifactId: sourceTaskId ? `art-${sourceTaskId}` : undefined,
|
|
58
|
+
sourceRunId: sourceTaskId ? `run-${sourceTaskId}` : undefined,
|
|
59
|
+
};
|
|
60
|
+
const seed = buildDreamerTaskSeed(bridgeInput);
|
|
61
|
+
if ('decision' in seed) {
|
|
62
|
+
// BridgeDecision has 4 variants; only not_internalizable/invalid_candidate carry reason.
|
|
63
|
+
const reason = 'reason' in seed ? seed.reason : seed.decision;
|
|
64
|
+
throw new Error(`Failed to seed dreamer task: ${reason}`);
|
|
65
|
+
}
|
|
66
|
+
await stateManager.createTask({
|
|
67
|
+
taskId: seed.taskId,
|
|
68
|
+
taskKind: seed.taskKind,
|
|
69
|
+
status: seed.status,
|
|
70
|
+
attemptCount: seed.attemptCount,
|
|
71
|
+
maxAttempts: seed.maxAttempts,
|
|
72
|
+
diagnosticJson: seed.diagnosticJson,
|
|
73
|
+
inputRef: undefined,
|
|
74
|
+
resultRef: undefined,
|
|
75
|
+
lastError: undefined,
|
|
76
|
+
leaseOwner: undefined,
|
|
77
|
+
leaseExpiresAt: undefined,
|
|
78
|
+
});
|
|
79
|
+
return seed.taskId;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Transition a task from pending → leased → succeeded.
|
|
83
|
+
*
|
|
84
|
+
* This simulates what the auto-consumer / CLI does when a runner completes
|
|
85
|
+
* successfully. The orchestrator's commitNextTaskProposal requires the source
|
|
86
|
+
* task to be in 'succeeded' status.
|
|
87
|
+
*/
|
|
88
|
+
async function simulateTaskSuccess(stateManager, taskId) {
|
|
89
|
+
await stateManager.acquireLease({
|
|
90
|
+
taskId,
|
|
91
|
+
owner: OWNER,
|
|
92
|
+
runtimeKind: RUNTIME_KIND,
|
|
93
|
+
});
|
|
94
|
+
await stateManager.markTaskSucceeded(taskId);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Read the actual successor task from the store after commitNextTaskProposal.
|
|
98
|
+
*
|
|
99
|
+
* EP-07 compliance: reads the REAL successor record from the store, not a
|
|
100
|
+
* hand-written expected value. The assertion compares the actual taskKind
|
|
101
|
+
* from the store against the expected chain.
|
|
102
|
+
*/
|
|
103
|
+
async function readActualSuccessor(stateManager, successorTaskId) {
|
|
104
|
+
const task = await stateManager.getTask(successorTaskId);
|
|
105
|
+
if (!task) {
|
|
106
|
+
throw new Error(`Successor task ${successorTaskId} not found in store`);
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
taskId: task.taskId,
|
|
110
|
+
taskKind: task.taskKind,
|
|
111
|
+
status: task.status,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Walk the full successor chain from a seeded dreamer task, returning the
|
|
116
|
+
* actual task kinds observed in the store.
|
|
117
|
+
*
|
|
118
|
+
* EP-07: every successor is read from the real store via readActualSuccessor.
|
|
119
|
+
*/
|
|
120
|
+
async function walkFullChain(stateManager, orchestrator, dreamerTaskId) {
|
|
121
|
+
let currentTaskId = dreamerTaskId;
|
|
122
|
+
const actualChain = ['dreamer'];
|
|
123
|
+
for (let i = 0; i < EXPECTED_CHAIN.length - 1; i++) {
|
|
124
|
+
const expectedNextKind = EXPECTED_CHAIN[i + 1];
|
|
125
|
+
if (!expectedNextKind) {
|
|
126
|
+
throw new Error(`EXPECTED_CHAIN[${i + 1}] is undefined`);
|
|
127
|
+
}
|
|
128
|
+
await simulateTaskSuccess(stateManager, currentTaskId);
|
|
129
|
+
const commitResult = await orchestrator.commitNextTaskProposal(currentTaskId);
|
|
130
|
+
if (commitResult.decision !== 'successor_created') {
|
|
131
|
+
throw new Error(`Expected successor_created at chain step ${i}, got ${commitResult.decision}`);
|
|
132
|
+
}
|
|
133
|
+
expect(commitResult.successorKind).toBe(expectedNextKind);
|
|
134
|
+
const actualSuccessor = await readActualSuccessor(stateManager, commitResult.successorTaskId);
|
|
135
|
+
expect(actualSuccessor.taskKind).toBe(expectedNextKind);
|
|
136
|
+
expect(actualSuccessor.status).toBe('pending');
|
|
137
|
+
actualChain.push(actualSuccessor.taskKind);
|
|
138
|
+
currentTaskId = commitResult.successorTaskId;
|
|
139
|
+
}
|
|
140
|
+
// Terminal runner has no successor
|
|
141
|
+
await simulateTaskSuccess(stateManager, currentTaskId);
|
|
142
|
+
const terminalCommit = await orchestrator.commitNextTaskProposal(currentTaskId);
|
|
143
|
+
expect(terminalCommit.decision).toBe('no_successor');
|
|
144
|
+
return actualChain;
|
|
145
|
+
}
|
|
146
|
+
// ── Tests ────────────────────────────────────────────────────────────────────
|
|
147
|
+
describe('PRI-457 C2-P0: Live MVP runner chain pinning test', () => {
|
|
148
|
+
let tmpDir;
|
|
149
|
+
let stateManager;
|
|
150
|
+
let orchestrator;
|
|
151
|
+
beforeEach(async () => {
|
|
152
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'pd-c2-p0-chain-'));
|
|
153
|
+
stateManager = new RuntimeStateManager({ workspaceDir: tmpDir });
|
|
154
|
+
await stateManager.initialize();
|
|
155
|
+
orchestrator = new InternalizationOrchestrator({ stateManager }, { owner: OWNER, runtimeKind: RUNTIME_KIND, dryRun: true });
|
|
156
|
+
});
|
|
157
|
+
afterEach(async () => {
|
|
158
|
+
await stateManager.close();
|
|
159
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
160
|
+
});
|
|
161
|
+
// ── Channel: prompt ──────────────────────────────────────────────────────
|
|
162
|
+
it('prompt channel: full successor chain dreamer→philosopher→scribe→artificer→evaluator→rollout_reviewer', async () => {
|
|
163
|
+
const dreamerTaskId = await seedDreamerTask(stateManager, {
|
|
164
|
+
candidateId: `cand-prompt-${Date.now()}`,
|
|
165
|
+
channel: 'prompt',
|
|
166
|
+
});
|
|
167
|
+
const dreamerTask = await stateManager.getTask(dreamerTaskId);
|
|
168
|
+
expect(dreamerTask).not.toBeNull();
|
|
169
|
+
if (!dreamerTask) {
|
|
170
|
+
throw new Error('Dreamer task not found after seeding');
|
|
171
|
+
}
|
|
172
|
+
expect(dreamerTask.taskKind).toBe('dreamer');
|
|
173
|
+
const actualChain = await walkFullChain(stateManager, orchestrator, dreamerTaskId);
|
|
174
|
+
expect(actualChain).toEqual(EXPECTED_CHAIN);
|
|
175
|
+
});
|
|
176
|
+
// ── Channel: code_tool_hook ──────────────────────────────────────────────
|
|
177
|
+
it('code_tool_hook channel: full successor chain dreamer→philosopher→scribe→artificer→evaluator→rollout_reviewer', async () => {
|
|
178
|
+
const dreamerTaskId = await seedDreamerTask(stateManager, {
|
|
179
|
+
candidateId: `cand-hook-${Date.now()}`,
|
|
180
|
+
channel: 'code_tool_hook',
|
|
181
|
+
});
|
|
182
|
+
const dreamerTask = await stateManager.getTask(dreamerTaskId);
|
|
183
|
+
expect(dreamerTask).not.toBeNull();
|
|
184
|
+
if (!dreamerTask) {
|
|
185
|
+
throw new Error('Dreamer task not found after seeding');
|
|
186
|
+
}
|
|
187
|
+
expect(dreamerTask.taskKind).toBe('dreamer');
|
|
188
|
+
const actualChain = await walkFullChain(stateManager, orchestrator, dreamerTaskId);
|
|
189
|
+
expect(actualChain).toEqual(EXPECTED_CHAIN);
|
|
190
|
+
});
|
|
191
|
+
// ── Channel: defer_archive ───────────────────────────────────────────────
|
|
192
|
+
it('defer_archive channel: no route maps to defer_archive — no dreamer task seeded', async () => {
|
|
193
|
+
// The intake bridge has NO route that maps to the defer_archive channel.
|
|
194
|
+
// defer recommendations return 'not_internalizable' at computeBridgeDecision.
|
|
195
|
+
// Use ready: true so the code reaches the route check (not the !ready early exit).
|
|
196
|
+
const bridgeInput = {
|
|
197
|
+
candidateId: `cand-defer-${Date.now()}`,
|
|
198
|
+
recommendationKind: 'defer',
|
|
199
|
+
route: 'deferred',
|
|
200
|
+
ready: true,
|
|
201
|
+
};
|
|
202
|
+
const decision = computeBridgeDecision(bridgeInput);
|
|
203
|
+
expect(decision.decision).toBe('not_internalizable');
|
|
204
|
+
// Verify the rejection is specifically because the route is deferred,
|
|
205
|
+
// not because of a missing ready flag or unknown route.
|
|
206
|
+
if (!('reason' in decision)) {
|
|
207
|
+
throw new Error('Expected not_internalizable decision to have a reason field');
|
|
208
|
+
}
|
|
209
|
+
expect(decision.reason).toContain('deferred');
|
|
210
|
+
// No dreamer task is seeded — no runners run for defer_archive
|
|
211
|
+
// through the internalization pipeline.
|
|
212
|
+
});
|
|
213
|
+
// ── Cross-channel: successor inherits channel from parent ─────────────────
|
|
214
|
+
it('successor tasks inherit the channel from the parent task', async () => {
|
|
215
|
+
for (const channel of ['prompt', 'code_tool_hook']) {
|
|
216
|
+
const dreamerTaskId = await seedDreamerTask(stateManager, {
|
|
217
|
+
candidateId: `cand-${channel}-inherit-${Date.now()}`,
|
|
218
|
+
channel,
|
|
219
|
+
});
|
|
220
|
+
await simulateTaskSuccess(stateManager, dreamerTaskId);
|
|
221
|
+
const commitResult = await orchestrator.commitNextTaskProposal(dreamerTaskId);
|
|
222
|
+
if (commitResult.decision !== 'successor_created') {
|
|
223
|
+
throw new Error(`Expected successor_created, got ${commitResult.decision}`);
|
|
224
|
+
}
|
|
225
|
+
expect(commitResult.successorKind).toBe('philosopher');
|
|
226
|
+
// Read the actual successor and verify its channel via hydrated metadata
|
|
227
|
+
const successorTask = await stateManager.getTask(commitResult.successorTaskId);
|
|
228
|
+
expect(successorTask).not.toBeNull();
|
|
229
|
+
if (!successorTask) {
|
|
230
|
+
throw new Error(`Successor task ${commitResult.successorTaskId} not found`);
|
|
231
|
+
}
|
|
232
|
+
expect(successorTask.diagnosticJson).toBeDefined();
|
|
233
|
+
// Parse the PI metadata to verify channel inheritance
|
|
234
|
+
// Runtime Contract #2/#5: no `as` on untrusted data; use typeof + Object.hasOwn
|
|
235
|
+
const diagJson = successorTask.diagnosticJson;
|
|
236
|
+
if (!diagJson) {
|
|
237
|
+
throw new Error('Successor task diagnosticJson is empty');
|
|
238
|
+
}
|
|
239
|
+
const parsed = JSON.parse(diagJson);
|
|
240
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
241
|
+
throw new Error('diagnosticJson is not an object');
|
|
242
|
+
}
|
|
243
|
+
if (!Object.hasOwn(parsed, 'pi_metadata')) {
|
|
244
|
+
throw new Error('pi_metadata key not found in successor diagnosticJson');
|
|
245
|
+
}
|
|
246
|
+
const piMeta = parsed.pi_metadata;
|
|
247
|
+
if (typeof piMeta !== 'object' || piMeta === null) {
|
|
248
|
+
throw new Error('pi_metadata is not an object');
|
|
249
|
+
}
|
|
250
|
+
if (!Object.hasOwn(piMeta, 'channel')) {
|
|
251
|
+
throw new Error('pi_metadata.channel is missing');
|
|
252
|
+
}
|
|
253
|
+
const channelValue = piMeta.channel;
|
|
254
|
+
expect(channelValue).toBe(channel);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
// ── Edge validation: validateEdge does not filter by channel ──────────────
|
|
258
|
+
it('validateEdge returns true for all peer runner edges regardless of channel', async () => {
|
|
259
|
+
// This documents that the job graph does NOT filter by channel.
|
|
260
|
+
// The _channel parameter in validateEdge is unused.
|
|
261
|
+
// This is a key finding for C2-P2: channel-based runner skipping does NOT
|
|
262
|
+
// happen at the job graph level.
|
|
263
|
+
const { validateEdge } = await import('../internalization-job-graph.js');
|
|
264
|
+
const edges = [
|
|
265
|
+
['dreamer', 'philosopher'],
|
|
266
|
+
['philosopher', 'scribe'],
|
|
267
|
+
['scribe', 'artificer'],
|
|
268
|
+
['artificer', 'evaluator'],
|
|
269
|
+
['evaluator', 'rollout_reviewer'],
|
|
270
|
+
];
|
|
271
|
+
for (const [from, to] of edges) {
|
|
272
|
+
expect(validateEdge(from, to, 'prompt')).toBe(true);
|
|
273
|
+
expect(validateEdge(from, to, 'code_tool_hook')).toBe(true);
|
|
274
|
+
expect(validateEdge(from, to, 'defer_archive')).toBe(true);
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
// ── Config defaults: document the DEFAULT_AGENT_ENABLED values ────────────
|
|
278
|
+
it('DEFAULT_AGENT_ENABLED: dreamer+scribe+artificer on; philosopher+evaluator+rolloutReviewer off', async () => {
|
|
279
|
+
// This pins the config defaults that the trace doc relies on.
|
|
280
|
+
// If these defaults change, the Core/Quiet classification must be re-evaluated.
|
|
281
|
+
const { getDefaultInternalAgents } = await import('../../config/pd-config-defaults.js');
|
|
282
|
+
const agents = getDefaultInternalAgents();
|
|
283
|
+
expect(agents.agents.dreamer.enabled).toBe(true);
|
|
284
|
+
expect(agents.agents.philosopher.enabled).toBe(false);
|
|
285
|
+
expect(agents.agents.scribe.enabled).toBe(true);
|
|
286
|
+
expect(agents.agents.artificer.enabled).toBe(true);
|
|
287
|
+
expect(agents.agents.evaluator.enabled).toBe(false);
|
|
288
|
+
expect(agents.agents.rolloutReviewer.enabled).toBe(false);
|
|
289
|
+
});
|
|
290
|
+
// ── MVP_CORE_TASK_KINDS excludes rollout_reviewer ─────────────────────────
|
|
291
|
+
it('MVP_CORE_TASK_KINDS excludes rollout_reviewer', async () => {
|
|
292
|
+
const { MVP_CORE_TASK_KINDS } = await import('../queue-actionability.js');
|
|
293
|
+
expect(MVP_CORE_TASK_KINDS).toContain('dreamer');
|
|
294
|
+
expect(MVP_CORE_TASK_KINDS).toContain('philosopher');
|
|
295
|
+
expect(MVP_CORE_TASK_KINDS).toContain('scribe');
|
|
296
|
+
expect(MVP_CORE_TASK_KINDS).toContain('artificer');
|
|
297
|
+
expect(MVP_CORE_TASK_KINDS).toContain('evaluator');
|
|
298
|
+
expect(MVP_CORE_TASK_KINDS).not.toContain('rollout_reviewer');
|
|
299
|
+
});
|
|
300
|
+
// ── DEFAULT_CONSUMER_RUNNER_KINDS is dreamer-only ────────────────────────
|
|
301
|
+
it('DEFAULT_CONSUMER_RUNNER_KINDS is dreamer-only', async () => {
|
|
302
|
+
const { DEFAULT_CONSUMER_RUNNER_KINDS } = await import('../internalization-consumer-decision.js');
|
|
303
|
+
expect(DEFAULT_CONSUMER_RUNNER_KINDS).toEqual(['dreamer']);
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
//# sourceMappingURL=c2-live-runner-chain.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"c2-live-runner-chain.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pain-signal-bridge.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAmB,MAAM,kCAAkC,CAAC;AAC7F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAqB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACvG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"pain-signal-bridge.d.ts","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { evaluateCandidateAdmissions } from './admission-gate.js';
|
|
2
2
|
import { shouldShortCircuitEmptyEvidence } from './evidence-guards.js';
|
|
3
3
|
import { buildDreamerSeedFromCandidate, ROUTE_CHANNEL_MAP, MVP_ENABLED_CHANNELS, CANDIDATE_KIND_TO_ROUTE } from './internalization/intake-to-internalization-bridge.js';
|
|
4
|
+
import { shapeBridgeResult } from './bridge-result-shaper.js';
|
|
4
5
|
/** PRI-359: Increased from 4 to 8 to accommodate failed tool_calls evidence */
|
|
5
6
|
export const MAX_EVIDENCE_ENTRIES = 8;
|
|
6
7
|
export const MAX_EVIDENCE_NOTE_CHARS = 200;
|
|
@@ -264,70 +265,18 @@ export class PainSignalBridge {
|
|
|
264
265
|
const latestRun = runs.at(-1);
|
|
265
266
|
const firstCandidate = candidates.at(0);
|
|
266
267
|
const candidateIds = candidates.map((candidate) => candidate.candidateId);
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
status: 'failed',
|
|
270
|
-
painId,
|
|
271
|
-
taskId,
|
|
272
|
-
runId: latestRun?.runId,
|
|
273
|
-
candidateIds,
|
|
274
|
-
ledgerEntryIds,
|
|
275
|
-
admissionResults,
|
|
276
|
-
message: 'Diagnostician succeeded but produced no principle candidates',
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
const admittedCount = admissionResults.filter((a) => a.admission.decision === 'admitted').length;
|
|
280
|
-
const nonAdmittedCount = admissionResults.length - admittedCount;
|
|
281
|
-
if (this.autoIntakeEnabled && admittedCount > 0 && ledgerEntryIds.length === 0) {
|
|
282
|
-
return {
|
|
283
|
-
status: 'failed',
|
|
284
|
-
painId,
|
|
285
|
-
taskId,
|
|
286
|
-
runId: latestRun?.runId,
|
|
287
|
-
artifactId: firstCandidate?.artifactId,
|
|
288
|
-
candidateIds,
|
|
289
|
-
ledgerEntryIds,
|
|
290
|
-
admissionResults,
|
|
291
|
-
message: 'Candidate intake did not produce a ledger entry',
|
|
292
|
-
};
|
|
293
|
-
}
|
|
294
|
-
if (nonAdmittedCount > 0 && admittedCount === 0) {
|
|
295
|
-
return {
|
|
296
|
-
status: 'degraded',
|
|
297
|
-
painId,
|
|
298
|
-
taskId,
|
|
299
|
-
runId: latestRun?.runId,
|
|
300
|
-
artifactId: firstCandidate?.artifactId,
|
|
301
|
-
candidateIds,
|
|
302
|
-
ledgerEntryIds,
|
|
303
|
-
admissionResults,
|
|
304
|
-
message: `all_candidates_gated:${admissionResults.map((a) => `${a.candidateId}=${a.admission.decision}`).join(',')}${seedFailureNote ? `; ${seedFailureNote}` : ''}`,
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
if (nonAdmittedCount > 0 && admittedCount > 0) {
|
|
308
|
-
return {
|
|
309
|
-
status: 'degraded',
|
|
310
|
-
painId,
|
|
311
|
-
taskId,
|
|
312
|
-
runId: latestRun?.runId,
|
|
313
|
-
artifactId: firstCandidate?.artifactId,
|
|
314
|
-
candidateIds,
|
|
315
|
-
ledgerEntryIds,
|
|
316
|
-
admissionResults,
|
|
317
|
-
message: `partial_admission:${admittedCount}_admitted_${nonAdmittedCount}_gated${seedFailureNote ? `; ${seedFailureNote}` : ''}`,
|
|
318
|
-
};
|
|
319
|
-
}
|
|
320
|
-
return {
|
|
321
|
-
status: seedFailureNote ? 'degraded' : 'succeeded',
|
|
268
|
+
return shapeBridgeResult({
|
|
269
|
+
path: 'fresh',
|
|
322
270
|
painId,
|
|
323
271
|
taskId,
|
|
324
|
-
runId: latestRun?.runId,
|
|
325
|
-
artifactId: firstCandidate?.artifactId,
|
|
326
272
|
candidateIds,
|
|
327
273
|
ledgerEntryIds,
|
|
274
|
+
runId: latestRun?.runId,
|
|
275
|
+
artifactId: firstCandidate?.artifactId,
|
|
276
|
+
autoIntakeEnabled: this.autoIntakeEnabled,
|
|
328
277
|
admissionResults,
|
|
329
|
-
|
|
330
|
-
};
|
|
278
|
+
seedFailureNote,
|
|
279
|
+
});
|
|
331
280
|
}
|
|
332
281
|
async buildExistingResult(input) {
|
|
333
282
|
const candidates = await this.stateManager.getCandidatesByTaskId(input.taskId);
|
|
@@ -336,17 +285,6 @@ export class PainSignalBridge {
|
|
|
336
285
|
const candidateIds = candidates.map((candidate) => candidate.candidateId);
|
|
337
286
|
const firstCandidate = candidates.at(0);
|
|
338
287
|
const ledgerEntryIds = [];
|
|
339
|
-
if (candidateIds.length === 0) {
|
|
340
|
-
return {
|
|
341
|
-
status: 'failed',
|
|
342
|
-
painId: input.painId,
|
|
343
|
-
taskId: input.taskId,
|
|
344
|
-
runId: latestRun?.runId,
|
|
345
|
-
candidateIds: [],
|
|
346
|
-
ledgerEntryIds: [],
|
|
347
|
-
message: 'Task has no principle candidates — treating as failed',
|
|
348
|
-
};
|
|
349
|
-
}
|
|
350
288
|
if (this.autoIntakeEnabled) {
|
|
351
289
|
for (const candidate of candidates) {
|
|
352
290
|
const ledgerEntry = this.ledgerAdapter.existsForCandidate(candidate.candidateId);
|
|
@@ -356,29 +294,17 @@ export class PainSignalBridge {
|
|
|
356
294
|
await this.stateManager.updateCandidateStatus(candidate.candidateId, { status: 'consumed' });
|
|
357
295
|
}
|
|
358
296
|
}
|
|
359
|
-
if (ledgerEntryIds.length === 0) {
|
|
360
|
-
return {
|
|
361
|
-
status: 'failed',
|
|
362
|
-
painId: input.painId,
|
|
363
|
-
taskId: input.taskId,
|
|
364
|
-
runId: latestRun?.runId,
|
|
365
|
-
artifactId: firstCandidate?.artifactId,
|
|
366
|
-
candidateIds,
|
|
367
|
-
ledgerEntryIds: [],
|
|
368
|
-
message: 'Candidate intake did not produce a ledger entry — treating as failed',
|
|
369
|
-
};
|
|
370
|
-
}
|
|
371
297
|
}
|
|
372
|
-
return {
|
|
373
|
-
|
|
298
|
+
return shapeBridgeResult({
|
|
299
|
+
path: 'existing',
|
|
374
300
|
painId: input.painId,
|
|
375
301
|
taskId: input.taskId,
|
|
376
|
-
runId: latestRun?.runId,
|
|
377
|
-
artifactId: firstCandidate?.artifactId,
|
|
378
302
|
candidateIds,
|
|
379
303
|
ledgerEntryIds,
|
|
380
|
-
|
|
381
|
-
|
|
304
|
+
runId: latestRun?.runId,
|
|
305
|
+
artifactId: firstCandidate?.artifactId,
|
|
306
|
+
autoIntakeEnabled: this.autoIntakeEnabled,
|
|
307
|
+
});
|
|
382
308
|
}
|
|
383
309
|
}
|
|
384
310
|
//# sourceMappingURL=pain-signal-bridge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pain-signal-bridge.js","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-bridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pain-signal-bridge.js","sourceRoot":"","sources":["../../src/runtime-v2/pain-signal-bridge.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AACxK,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAY9D,+EAA+E;AAC/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAmD3C,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACtD,OAAO,aAAa,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB;IAClD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC;IAC3C,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,IAAsB;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,CAAC;QAC9G,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC/E,OAAO,wBAAwB,CAAC;IAClC,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,gBAAgB,CAAC,UAA0B;IAClD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,wBAAwB;YAC3B,OAAO,0EAA0E,CAAC;QACpF,KAAK,8BAA8B;YACjC,OAAO,kGAAkG,CAAC;QAC5G,KAAK,gBAAgB;YACnB,OAAO,mDAAmD,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAsB,EAAE,YAAqB;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,YAAY,EAAE,IAAI,CAAC,MAAM;QACzB,aAAa,EAAE,IAAI,CAAC,MAAM;QAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QACvC,aAAa,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;QACrC,WAAW,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QACjC,UAAU;QACV,gBAAgB,EAAE,gBAAgB,CAAC,UAAU,CAAC;QAC9C,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;QAC7B,YAAY,EAAE,YAAY,IAAI,IAAI;KACnC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,gBAAgB;IACV,YAAY,CAAsB;IAClC,MAAM,CAA0B;IAChC,aAAa,CAAyB;IACtC,aAAa,CAAgB;IAC7B,KAAK,CAAS;IACd,iBAAiB,CAAU;IAC3B,YAAY,CAAqB;IACjC,YAAY,CAA2C;IAExE,YAAY,IAA6B;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,oBAAoB,CAAC;QAChD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACxC,CAAC;IAEO,kBAAkB,CACxB,WAAmB,EACnB,SAA8E;QAE9E,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC/B,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAC9B,SAAS,EAAE,8BAA8B;YACzC,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE;SACtG,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAsB;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAEpE,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;YACjC,MAAM;YACN,QAAQ,EAAE,eAAe;YACzB,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;YACd,cAAc;SACf,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAsB;QACzC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAE5D,gFAAgF;QAChF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7D,qEAAqE;QACrE,8DAA8D;QAC9D,yEAAyE;QACzE,wFAAwF;QACxF,IAAI,CAAC,YAAY,IAAI,+BAA+B,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9F,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM;gBACN,MAAM;gBACN,YAAY,EAAE,EAAE;gBAChB,cAAc,EAAE,EAAE;gBAClB,OAAO,EAAE,4EAA4E;aACtF,CAAC;QACJ,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC;YAChD,MAAM,YAAY,GAAG,OAAO,CAAC;YAC7B,MAAM,YAAY,GAAG,cAAc,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC;YACxG,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;gBACzC,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,MAAM;oBACN,MAAM;oBACN,YAAY,EAAE,EAAE;oBAChB,cAAc,EAAE,EAAE;oBAClB,OAAO,EAAE,wBAAwB;iBAClC,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ,IAAI,YAAY,EAAE,CAAC;gBACxC,eAAe;YACjB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE;oBACzC,MAAM,EAAE,SAAS;oBACjB,YAAY,EAAE,CAAC;oBACf,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACpE,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;gBACjC,MAAM;gBACN,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,CAAC;gBACf,WAAW,EAAE,CAAC;gBACd,cAAc;aACf,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE7C,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;gBAC1D,MAAM;gBACN,MAAM;gBACN,YAAY,EAAE,MAAM,CAAC,MAAM;gBAC3B,YAAY,EAAE,EAAE;gBAChB,cAAc,EAAE,EAAE;gBAClB,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,OAAO,EAAE,MAAM,CAAC,aAAa;aAC9B,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC;YAC9B,MAAM;YACN,mBAAmB,EAAE,MAAM,CAAC,MAAM;YAClC,MAAM;YACN,UAAU;YACV,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CAAC,IAMzB;QACC,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;QACzF,MAAM,UAAU,GAAsB,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5F,MAAM,cAAc,GAAa,EAAE,CAAC;QAEpC,MAAM,gBAAgB,GAAG,mBAAmB;YAC1C,CAAC,CAAC,2BAA2B,CAAC,UAAU,EAAE,mBAAmB,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC;YAClG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;gBACxC,SAAS,EAAE;oBACT,QAAQ,EAAE,gBAAyB;oBACnC,MAAM,EAAE,kCAAkC;oBAC1C,UAAU,EAAE,mCAAmC;oBAC/C,cAAc,EAAE,UAAU;iBAC3B;aACF,CAAC,CAAC,CAAC;QAER,MAAM,uBAAuB,GAAa,EAAE,CAAC;QAE7C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS;oBAAE,SAAS;gBAEvC,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;oBAChD,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;oBACpE,SAAS;gBACX,CAAC;gBAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC5E,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBAErC,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,uBAAuB,CAAC,SAAS,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;oBAC1E,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;wBACzC,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,IAAI,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBAC7D,MAAM,IAAI,GAAG,6BAA6B,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;wBAC9F,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,CAAC;4BAC1B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4BAClE,IAAI,CAAC,YAAY,EAAE,CAAC;gCAClB,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;oCACjC,MAAM,EAAE,IAAI,CAAC,MAAM;oCACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oCACvB,QAAQ,EAAE,EAAE;oCACZ,MAAM,EAAE,IAAI,CAAC,MAAM;oCACnB,YAAY,EAAE,IAAI,CAAC,YAAY;oCAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;oCAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;iCACpC,CAAC,CAAC;gCACH,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC;oCAC/B,SAAS,EAAE,+BAA+B;oCAC1C,OAAO,EAAE,SAAS,CAAC,WAAW;oCAC9B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oCACnC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;iCACxD,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,OAAO,EAAE,CAAC;oBACjB,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;oBACpD,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC;wBAC/B,SAAS,EAAE,oCAAoC;wBAC/C,OAAO,EAAE,SAAS,CAAC,WAAW;wBAC9B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;qBACpC,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACpC,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAG,uBAAuB,CAAC,MAAM,GAAG,CAAC;YACxD,CAAC,CAAC,uBAAuB,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC5D,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,cAAc,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAExC,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1E,OAAO,iBAAiB,CAAC;YACvB,IAAI,EAAE,OAAO;YACb,MAAM;YACN,MAAM;YACN,YAAY;YACZ,cAAc;YACd,KAAK,EAAE,SAAS,EAAE,KAAK;YACvB,UAAU,EAAE,cAAc,EAAE,UAAU;YACtC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,gBAAgB;YAChB,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,KAAyC;QACzE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1E,MAAM,cAAc,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,cAAc,GAAa,EAAE,CAAC;QAEpC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACjF,IAAI,WAAW;oBAAE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACrD,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,IAAI,WAAW,EAAE,CAAC;oBACnD,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,iBAAiB,CAAC;YACvB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,YAAY;YACZ,cAAc;YACd,KAAK,EAAE,SAAS,EAAE,KAAK;YACvB,UAAU,EAAE,cAAc,EAAE,UAAU;YACtC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC,CAAC;IACL,CAAC;CACF"}
|