zelari-code 2.0.0-alpha.6 → 2.0.1

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 (47) hide show
  1. package/dist/cli/headless.js +9 -0
  2. package/dist/cli/headless.js.map +1 -1
  3. package/dist/cli/headlessE2eSession.test.js +189 -0
  4. package/dist/cli/headlessE2eSession.test.js.map +1 -0
  5. package/dist/cli/headlessSpine.js +6 -0
  6. package/dist/cli/headlessSpine.js.map +1 -1
  7. package/dist/cli/hooks/chatState.js.map +1 -1
  8. package/dist/cli/hooks/eventsToMessages.js.map +1 -1
  9. package/dist/cli/hooks/useChatTurn.js +5 -3
  10. package/dist/cli/hooks/useChatTurn.js.map +1 -1
  11. package/dist/cli/hooks/useSession.js +0 -2
  12. package/dist/cli/hooks/useSession.js.map +1 -1
  13. package/dist/cli/kraken/evidenceAnchoring.test.js +92 -0
  14. package/dist/cli/kraken/evidenceAnchoring.test.js.map +1 -0
  15. package/dist/cli/kraken/nativeVerification.js +113 -0
  16. package/dist/cli/kraken/nativeVerification.js.map +1 -0
  17. package/dist/cli/kraken/nativeVerification.test.js +207 -0
  18. package/dist/cli/kraken/nativeVerification.test.js.map +1 -0
  19. package/dist/cli/kraken/strictDefaults.test.js +149 -0
  20. package/dist/cli/kraken/strictDefaults.test.js.map +1 -0
  21. package/dist/cli/kraken/verificationBridge.js +86 -8
  22. package/dist/cli/kraken/verificationBridge.js.map +1 -1
  23. package/dist/cli/kraken/verificationBridge.session.test.js +2 -2
  24. package/dist/cli/kraken/verificationBridge.session.test.js.map +1 -1
  25. package/dist/cli/kraken/verificationBridge.test.js +38 -22
  26. package/dist/cli/kraken/verificationBridge.test.js.map +1 -1
  27. package/dist/cli/kraken/verifierAdvisoryLock.test.js +154 -0
  28. package/dist/cli/kraken/verifierAdvisoryLock.test.js.map +1 -0
  29. package/dist/cli/kraken/verifierResolution.js +28 -0
  30. package/dist/cli/kraken/verifierResolution.js.map +1 -0
  31. package/dist/cli/kraken/verifierRoundTrip.test.js +166 -0
  32. package/dist/cli/kraken/verifierRoundTrip.test.js.map +1 -0
  33. package/dist/cli/legacyContextIsolation.test.js +3 -2
  34. package/dist/cli/legacyContextIsolation.test.js.map +1 -1
  35. package/dist/cli/main.bundled.js +707 -314
  36. package/dist/cli/main.bundled.js.map +4 -4
  37. package/dist/cli/missionContinuation.test.js +117 -0
  38. package/dist/cli/missionContinuation.test.js.map +1 -0
  39. package/dist/cli/profileMatrix.test.js +130 -0
  40. package/dist/cli/profileMatrix.test.js.map +1 -0
  41. package/dist/cli/runHeadless.js +39 -4
  42. package/dist/cli/runHeadless.js.map +1 -1
  43. package/dist/cli/sessionSpine.js +29 -3
  44. package/dist/cli/sessionSpine.js.map +1 -1
  45. package/dist/cli/zelariMission.js +16 -0
  46. package/dist/cli/zelariMission.js.map +1 -1
  47. package/package.json +2 -2
@@ -9,6 +9,11 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
9
9
  import { evaluateStrictBuildGate, krakenResultsToContract, strictDoneEnabled, strictGateEventPayload, strictGateExitCode, } from './verificationBridge.js';
10
10
  import { resetKrakenCandidates, setKrakenCheckResults, setKrakenSelection, } from './candidateRegistry.js';
11
11
  const CHECKS = ['session survives concurrent refresh', 'rotated cookie rejects the old token'];
12
+ /** Fake spine emitter that stamps sequential seq so notes become event-backed. */
13
+ function emitSeq() {
14
+ let n = 1;
15
+ return async () => ({ seq: n++ });
16
+ }
12
17
  function selectWithChecks(checks) {
13
18
  resetKrakenCandidates();
14
19
  setKrakenSelection({
@@ -34,13 +39,13 @@ afterEach(() => {
34
39
  resetKrakenCandidates();
35
40
  });
36
41
  describe('krakenResultsToContract', () => {
37
- it('maps every required check to a required criterion with a stable id', () => {
42
+ it('maps every required check to a required criterion with a stable id', async () => {
38
43
  const contract = krakenResultsToContract(CHECKS, [], 1000);
39
44
  expect(contract.criteria).toHaveLength(2);
40
45
  expect(contract.criteria.every((c) => c.required && c.source === 'kraken-selection')).toBe(true);
41
46
  expect(contract.results.every((r) => r.status === 'unknown' && r.source === 'verify-agent')).toBe(true);
42
47
  });
43
- it('a pass WITH a note carries evidence; a pass WITHOUT a note does not', () => {
48
+ it('a pass WITH a note carries evidence; a pass WITHOUT a note does not', async () => {
44
49
  const results = [
45
50
  { check: CHECKS[0], status: 'pass', note: 'vitest 41/41' },
46
51
  { check: CHECKS[1], status: 'pass' },
@@ -50,7 +55,7 @@ describe('krakenResultsToContract', () => {
50
55
  expect(contract.results[0].evidence[0].tier).toBe('tool-output');
51
56
  expect(contract.results[1].evidence).toHaveLength(0);
52
57
  });
53
- it('tolerates lightly reworded check text (containment matching)', () => {
58
+ it('tolerates lightly reworded check text (containment matching)', async () => {
54
59
  const results = [
55
60
  { check: 'Session survives concurrent REFRESH (reworded)', status: 'pass', note: 'x' },
56
61
  ];
@@ -60,7 +65,7 @@ describe('krakenResultsToContract', () => {
60
65
  });
61
66
  });
62
67
  describe('evaluateStrictBuildGate', () => {
63
- it('strict off (default): mirrors the legacy gate exactly', () => {
68
+ it('strict off (default): mirrors the legacy gate exactly', async () => {
64
69
  delete process.env.ZELARI_STRICT_DONE;
65
70
  expect(strictDoneEnabled()).toBe(false);
66
71
  selectWithChecks(CHECKS);
@@ -68,60 +73,71 @@ describe('evaluateStrictBuildGate', () => {
68
73
  { check: CHECKS[0], status: 'pass', note: 'ok' },
69
74
  { check: CHECKS[1], status: 'fail', note: 'assert' },
70
75
  ]);
71
- const evaluation = evaluateStrictBuildGate('build');
76
+ const evaluation = await evaluateStrictBuildGate('build');
72
77
  expect(evaluation.strict).toBe(false);
73
78
  expect(evaluation.evaluation).toBeNull();
74
79
  expect(evaluation.blocked).toBe(true);
75
80
  });
76
- it('strict on + all pass with notes → PASS', () => {
81
+ it('strict on + all pass with notes → PASS', async () => {
77
82
  process.env.ZELARI_STRICT_DONE = '1';
78
83
  selectWithChecks(CHECKS);
79
84
  setKrakenCheckResults([
80
85
  { check: CHECKS[0], status: 'pass', note: 'vitest 41/41' },
81
86
  { check: CHECKS[1], status: 'pass', note: 'curl 401' },
82
87
  ]);
83
- const evaluation = evaluateStrictBuildGate('build');
88
+ const evaluation = await evaluateStrictBuildGate('build', { emit: emitSeq() });
84
89
  expect(evaluation.strict).toBe(true);
85
90
  expect(evaluation.evaluation.verdict).toBe('PASS');
86
91
  expect(evaluation.blocked).toBe(false);
87
92
  });
88
- it('strict on + pass WITHOUT evidence → BLOCKED (false-done guard)', () => {
93
+ it('strict on + notes without spine emit → BLOCKED (event-backed required)', async () => {
94
+ process.env.ZELARI_STRICT_DONE = '1';
95
+ selectWithChecks(CHECKS);
96
+ setKrakenCheckResults([
97
+ { check: CHECKS[0], status: 'pass', note: 'vitest 41/41' },
98
+ { check: CHECKS[1], status: 'pass', note: 'curl 401' },
99
+ ]);
100
+ const evaluation = await evaluateStrictBuildGate('build'); // no emit → unanchored
101
+ expect(evaluation.evaluation.verdict).toBe('BLOCKED');
102
+ expect(evaluation.evaluation.unsatisfied[0].reason).toContain('event-backed');
103
+ });
104
+ it('strict on + pass WITHOUT evidence → BLOCKED (false-done guard)', async () => {
89
105
  process.env.ZELARI_STRICT_DONE = '1';
90
106
  selectWithChecks(CHECKS);
91
107
  setKrakenCheckResults([
92
108
  { check: CHECKS[0], status: 'pass', note: 'vitest 41/41' },
93
109
  { check: CHECKS[1], status: 'pass' }, // no note → no evidence
94
110
  ]);
95
- const evaluation = evaluateStrictBuildGate('build');
111
+ const evaluation = await evaluateStrictBuildGate('build', { emit: emitSeq() });
96
112
  expect(evaluation.evaluation.verdict).toBe('BLOCKED');
97
113
  expect(evaluation.blocked).toBe(true);
98
114
  expect(evaluation.evaluation.unsatisfied[0].status).toBe('unknown');
99
115
  expect(evaluation.evaluation.unsatisfied[0].reason).toContain('without evidence');
100
116
  });
101
- it('strict on + legacy fail → REPAIR_REQUIRED (fail wins over unknown)', () => {
117
+ it('strict on + legacy fail → REPAIR_REQUIRED (fail wins over unknown)', async () => {
102
118
  process.env.ZELARI_STRICT_DONE = '1';
103
119
  selectWithChecks(CHECKS);
104
120
  setKrakenCheckResults([
105
121
  { check: CHECKS[0], status: 'fail', note: 'assert false' },
106
122
  { check: CHECKS[1], status: 'unknown' },
107
123
  ]);
108
- const evaluation = evaluateStrictBuildGate('build');
124
+ const evaluation = await evaluateStrictBuildGate('build', { emit: emitSeq() });
109
125
  expect(evaluation.evaluation.verdict).toBe('REPAIR_REQUIRED');
110
126
  expect(evaluation.blocked).toBe(true);
111
127
  });
112
- it('PLAN turns and turns without selection stay open', () => {
128
+ it('PLAN turns and turns without selection stay open', async () => {
113
129
  process.env.ZELARI_STRICT_DONE = '1';
114
- expect(evaluateStrictBuildGate('plan').blocked).toBe(false);
130
+ expect((await evaluateStrictBuildGate('plan')).blocked).toBe(false);
115
131
  resetKrakenCandidates();
116
- expect(evaluateStrictBuildGate('build').blocked).toBe(false);
132
+ expect((await evaluateStrictBuildGate('build')).blocked).toBe(false);
117
133
  });
118
134
  });
119
135
  describe('strictGateEventPayload', () => {
120
- it('is JSON-serializable and carries both gate layers', () => {
136
+ it('is JSON-serializable and carries both gate layers', async () => {
121
137
  process.env.ZELARI_STRICT_DONE = '1';
122
138
  selectWithChecks(CHECKS);
123
139
  setKrakenCheckResults([{ check: CHECKS[0], status: 'pass', note: 'n' }]);
124
- const payload = strictGateEventPayload(evaluateStrictBuildGate('build'));
140
+ const payload = strictGateEventPayload(await evaluateStrictBuildGate('build', { emit: emitSeq() }));
125
141
  expect(() => JSON.stringify(payload)).not.toThrow();
126
142
  expect(payload).toMatchObject({ strict: true, engine: 'kraken-legacy+completion-policy' });
127
143
  expect(payload.legacy).toMatchObject({ total: 2 });
@@ -129,30 +145,30 @@ describe('strictGateEventPayload', () => {
129
145
  });
130
146
  });
131
147
  describe('strictGateExitCode (E2.2 — blocked strict done closes non-success)', () => {
132
- it('strict on + blocked after repair → dedicated exit code 4', () => {
148
+ it('strict on + blocked after repair → dedicated exit code 4', async () => {
133
149
  process.env.ZELARI_STRICT_DONE = '1';
134
150
  selectWithChecks(CHECKS);
135
151
  setKrakenCheckResults([
136
152
  { check: CHECKS[0], status: 'pass', note: 'vitest 41/41' },
137
153
  { check: CHECKS[1], status: 'unknown' },
138
154
  ]);
139
- const evaluation = evaluateStrictBuildGate('build');
155
+ const evaluation = await evaluateStrictBuildGate('build', { emit: emitSeq() });
140
156
  expect(evaluation.blocked).toBe(true);
141
157
  expect(strictGateExitCode(evaluation)).toBe(4);
142
158
  });
143
- it('strict on + evidence complete → 0 (run outcome unchanged)', () => {
159
+ it('strict on + evidence complete → 0 (run outcome unchanged)', async () => {
144
160
  process.env.ZELARI_STRICT_DONE = '1';
145
161
  selectWithChecks([CHECKS[0]]);
146
162
  setKrakenCheckResults([{ check: CHECKS[0], status: 'pass', note: 'vitest 41/41' }]);
147
- const evaluation = evaluateStrictBuildGate('build');
163
+ const evaluation = await evaluateStrictBuildGate('build', { emit: emitSeq() });
148
164
  expect(evaluation.blocked).toBe(false);
149
165
  expect(strictGateExitCode(evaluation)).toBe(0);
150
166
  });
151
- it('strict off + legacy blocked → 0 (enforcement is strict-only)', () => {
167
+ it('strict off + legacy blocked → 0 (enforcement is strict-only)', async () => {
152
168
  delete process.env.ZELARI_STRICT_DONE;
153
169
  selectWithChecks(CHECKS);
154
170
  setKrakenCheckResults([{ check: CHECKS[0], status: 'fail', note: 'red' }]);
155
- const evaluation = evaluateStrictBuildGate('build');
171
+ const evaluation = await evaluateStrictBuildGate('build');
156
172
  expect(evaluation.blocked).toBe(true);
157
173
  expect(evaluation.strict).toBe(false);
158
174
  expect(strictGateExitCode(evaluation)).toBe(0);
@@ -1 +1 @@
1
- {"version":3,"file":"verificationBridge.test.js","sourceRoot":"","sources":["../../../src/cli/kraken/verificationBridge.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verificationBridge.test.js","sourceRoot":"","sources":["../../../src/cli/kraken/verificationBridge.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * verifierAdvisoryLock — Exit-2.3 lock tests (ADR-0023 × strict BUILD gate).
3
+ *
4
+ * Locks the composition rule the 2.0 verification contract depends on:
5
+ * when the optional LLM verifier is ACTIVE, the deterministic CompletionPolicy
6
+ * stays the FINAL authority of the Kraken BUILD gate.
7
+ *
8
+ * Caso 1 — deterministic criterion UNKNOWN/FAIL + verifier CONFIRMED
9
+ * → no clean success (BLOCKED / REPAIR_REQUIRED, strict exit ≠ 0).
10
+ * Caso 2 — deterministic criteria PASS + verifier REJECTED
11
+ * → the deterministic verdict is NOT rewritten; the review is
12
+ * recorded in the spine as advisory only (exit stays 0).
13
+ *
14
+ * The verifier may add information, never authority. Breaking either test
15
+ * below is a contract regression, not a refactor.
16
+ */
17
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
18
+ import { DEFAULT_VERIFIER_CONFIG, VerifierService, } from '@zelari/core/verification';
19
+ import { evaluateStrictBuildGate, krakenResultsToContract, strictGateEventPayload, strictGateExitCode, } from './verificationBridge.js';
20
+ import { getKrakenCheckResults, krakenRequiredChecks, resetKrakenCandidates, setKrakenCheckResults, setKrakenSelection, } from './candidateRegistry.js';
21
+ const CHECKS = ['typecheck passes', 'suite verde'];
22
+ function emitSeq() {
23
+ let n = 1;
24
+ return async () => ({ seq: n++ });
25
+ }
26
+ function selectWithChecks() {
27
+ resetKrakenCandidates();
28
+ setKrakenSelection({
29
+ status: 'selected',
30
+ winnerIndex: 1,
31
+ rationale: 'stronger evidence',
32
+ requiredChecks: CHECKS,
33
+ degraded: false,
34
+ verifier: null,
35
+ judgedBy: 'llm',
36
+ });
37
+ }
38
+ /** Enabled verifier with a fixed test model; `reply` is the raw LLM answer. */
39
+ function activeVerifier(reply, emitted) {
40
+ return new VerifierService({
41
+ callModel: async () => ({
42
+ text: reply,
43
+ provider: 'test',
44
+ model: 'verifier-1',
45
+ }),
46
+ config: {
47
+ ...DEFAULT_VERIFIER_CONFIG,
48
+ enabled: true,
49
+ model: { mode: 'fixed', provider: 'test', model: 'verifier-1' },
50
+ },
51
+ emit: async (input) => {
52
+ emitted.push(input);
53
+ },
54
+ });
55
+ }
56
+ const CONFIRMED = '{"verdict":"confirmed","score":0.97,"rationale":"looks done to me"}';
57
+ const REJECTED = '{"verdict":"rejected","score":0.05,"rationale":"not convinced"}';
58
+ /** Contract the runtime hands to BOTH the strict gate and the verifier. */
59
+ function currentContract() {
60
+ return krakenResultsToContract(krakenRequiredChecks(), getKrakenCheckResults());
61
+ }
62
+ let envPrev;
63
+ beforeEach(() => {
64
+ envPrev = process.env.ZELARI_STRICT_DONE;
65
+ process.env.ZELARI_STRICT_DONE = '1';
66
+ resetKrakenCandidates();
67
+ });
68
+ afterEach(() => {
69
+ if (envPrev === undefined)
70
+ delete process.env.ZELARI_STRICT_DONE;
71
+ else
72
+ process.env.ZELARI_STRICT_DONE = envPrev;
73
+ resetKrakenCandidates();
74
+ });
75
+ describe('Exit-2.3 lock: verifier LLM active cannot change the completion authority', () => {
76
+ it('Caso 1a — unknown criterion + verifier CONFIRMED → BLOCKED, strict exit 4 (advisory recorded, never applied)', async () => {
77
+ selectWithChecks();
78
+ setKrakenCheckResults([]); // verify tentacle never reported → unknown ≠ pass
79
+ const emitted = [];
80
+ const verifier = activeVerifier(CONFIRMED, emitted);
81
+ const review = await verifier.reviewCompletion({
82
+ summary: 'done: all green',
83
+ results: currentContract().results,
84
+ });
85
+ const gate = await evaluateStrictBuildGate('build', { emit: emitSeq() });
86
+ // The review itself may say "confirmed" — it is advisory information only.
87
+ expect(review.verdict).toBe('confirmed');
88
+ expect(review.effectiveModel).toEqual({
89
+ mode: 'fixed',
90
+ provider: 'test',
91
+ model: 'verifier-1',
92
+ });
93
+ // The deterministic policy stays the final authority: unknown → BLOCKED.
94
+ expect(gate.strict).toBe(true);
95
+ expect(gate.evaluation.verdict).toBe('BLOCKED');
96
+ expect(gate.blocked).toBe(true);
97
+ expect(strictGateExitCode(gate)).toBe(4);
98
+ expect(strictGateEventPayload(gate).verdict).toBe('BLOCKED');
99
+ // The spine keeps the verifier review as a separate advisory record.
100
+ expect(emitted).toHaveLength(1);
101
+ const data = emitted[0].data;
102
+ expect(data.source).toBe('verifier-model');
103
+ expect(data.verdict).toBe('confirmed');
104
+ expect(data.model).toBe('verifier-1');
105
+ expect(data.selectionMode).toBe('fixed');
106
+ });
107
+ it('Caso 1b — FAIL criterion + verifier CONFIRMED → REPAIR_REQUIRED (fail wins), review downgraded to unknown', async () => {
108
+ selectWithChecks();
109
+ setKrakenCheckResults([
110
+ { check: CHECKS[0], status: 'pass', note: 'tsc clean' },
111
+ { check: CHECKS[1], status: 'fail', note: 'vitest 1/2' },
112
+ ]);
113
+ const emitted = [];
114
+ const verifier = activeVerifier(CONFIRMED, emitted);
115
+ const review = await verifier.reviewCompletion({
116
+ summary: 'done: mostly green',
117
+ results: currentContract().results,
118
+ });
119
+ const gate = await evaluateStrictBuildGate('build', { emit: emitSeq() });
120
+ // The service itself refuses to confirm over a failed deterministic check.
121
+ expect(review.verdict).toBe('unknown');
122
+ expect(review.fallback).toBe('discrete');
123
+ expect(review.rationale).toContain('cannot confirm');
124
+ // And even if it had not: the policy converts fail into repair, not done.
125
+ expect(gate.evaluation.verdict).toBe('REPAIR_REQUIRED');
126
+ expect(gate.blocked).toBe(true);
127
+ expect(strictGateExitCode(gate)).toBe(4);
128
+ });
129
+ it('Caso 2 — deterministic PASS + verifier REJECTED → PASS untouched, exit 0, rejection recorded as advisory', async () => {
130
+ selectWithChecks();
131
+ setKrakenCheckResults([
132
+ { check: CHECKS[0], status: 'pass', note: 'tsc clean' },
133
+ { check: CHECKS[1], status: 'pass', note: 'vitest 41/41' },
134
+ ]);
135
+ const emitted = [];
136
+ const verifier = activeVerifier(REJECTED, emitted);
137
+ const review = await verifier.reviewCompletion({
138
+ summary: 'done: all green',
139
+ results: currentContract().results,
140
+ });
141
+ const gate = await evaluateStrictBuildGate('build', { emit: emitSeq() });
142
+ // The rejection is real, recorded, and advisory — it cannot dirty a
143
+ // deterministic strict PASS (no false-block from narration either).
144
+ expect(review.verdict).toBe('rejected');
145
+ expect(gate.evaluation.verdict).toBe('PASS');
146
+ expect(gate.blocked).toBe(false);
147
+ expect(strictGateExitCode(gate)).toBe(0);
148
+ expect(strictGateEventPayload(gate).verdict).toBe('PASS');
149
+ const data = emitted[0].data;
150
+ expect(data.verdict).toBe('rejected');
151
+ expect(data.source).toBe('verifier-model');
152
+ });
153
+ });
154
+ //# sourceMappingURL=verifierAdvisoryLock.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifierAdvisoryLock.test.js","sourceRoot":"","sources":["../../../src/cli/kraken/verifierAdvisoryLock.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { getKrakenVerifierOverride } from '../providerConfig.js';
2
+ /**
3
+ * Override → ModelSelection. A complete, non-empty {provider, model} pair is
4
+ * `fixed`; anything else (undefined, null, partial, blank) is `inherit` —
5
+ * matching providerConfig, which already drops invalid overrides on load.
6
+ */
7
+ export function verifierOverrideToModelSelection(override) {
8
+ if (override &&
9
+ typeof override.provider === 'string' &&
10
+ typeof override.model === 'string' &&
11
+ override.provider.trim().length > 0 &&
12
+ override.model.trim().length > 0) {
13
+ return {
14
+ mode: 'fixed',
15
+ provider: override.provider.trim(),
16
+ model: override.model.trim(),
17
+ };
18
+ }
19
+ return { mode: 'inherit' };
20
+ }
21
+ /**
22
+ * Live runtime resolution: read provider.json the way a fresh process would
23
+ * after a Desktop restart and map it to the VerifierService model selection.
24
+ */
25
+ export function loadVerifierModelSelection() {
26
+ return verifierOverrideToModelSelection(getKrakenVerifierOverride());
27
+ }
28
+ //# sourceMappingURL=verifierResolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifierResolution.js","sourceRoot":"","sources":["../../../src/cli/kraken/verifierResolution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAQjE;;;;GAIG;AACH,MAAM,UAAU,gCAAgC,CAC9C,QAAsC;IAEtC,IACE,QAAQ;QACR,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ;QACrC,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;QAClC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACnC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAChC,CAAC;QACD,OAAO;YACL,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;YAClC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;SAC7B,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,gCAAgC,CAAC,yBAAyB,EAAE,CAAC,CAAC;AACvE,CAAC"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * verifierRoundTrip — Desktop verifier round-trip smoke (Exit-3.1, plan §9).
3
+ *
4
+ * Locks the FULL chain the plan requires:
5
+ *
6
+ * Desktop settings (applySetConfig — the real --set-config channel)
7
+ * → persist (provider.json)
8
+ * → restart/load (fresh disk read)
9
+ * → runtime resolution (loadVerifierModelSelection)
10
+ * → VerifierService.reviewCompletion
11
+ * → verification.run event logs the ACTUAL model used
12
+ *
13
+ * The three cases from the plan (§9):
14
+ * - Inherit: Primary=A, Verifier=inherit → effective verifier = A
15
+ * - Dedicated: Primary=A, Verifier=B → effective verifier = B
16
+ * - Reset: Dedicated B → clear override → inherit A
17
+ *
18
+ * The model call is stubbed at the transport boundary (callModel), reporting
19
+ * the provider/model the selected transport would actually use: in inherit
20
+ * mode the session transport (A), in fixed mode the dedicated transport (B).
21
+ */
22
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
23
+ import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
24
+ import { tmpdir } from 'node:os';
25
+ import path from 'node:path';
26
+ import { VerifierService, VerifierConfigSchema, } from '@zelari/core/verification';
27
+ import { getKrakenVerifierOverride } from '../providerConfig.js';
28
+ import { applySetConfig, buildDesktopConfigSnapshot } from '../desktopConfig.js';
29
+ import { loadVerifierModelSelection, verifierOverrideToModelSelection, } from './verifierResolution.js';
30
+ // Primary model A (the session/run model).
31
+ const PRIMARY = { provider: 'grok', model: 'grok-4.6' };
32
+ // Dedicated verifier B.
33
+ const DEDICATED = { provider: 'anthropic', model: 'claude-sonnet-4-6' };
34
+ let tmpDir = '';
35
+ let savedEnv;
36
+ beforeEach(() => {
37
+ tmpDir = mkdtempSync(path.join(tmpdir(), 'zelari-vrt-'));
38
+ savedEnv = process.env.ANATHEMA_PROVIDER_CONFIG_FILE;
39
+ process.env.ANATHEMA_PROVIDER_CONFIG_FILE = path.join(tmpDir, 'provider.json');
40
+ writeFileSync(process.env.ANATHEMA_PROVIDER_CONFIG_FILE, JSON.stringify({
41
+ activeProviderId: PRIMARY.provider,
42
+ modelByProvider: { [PRIMARY.provider]: PRIMARY.model },
43
+ }, null, 2), 'utf-8');
44
+ delete process.env.ZELARI_KRAKEN_SELECT_PROVIDER;
45
+ delete process.env.ZELARI_KRAKEN_SELECT_MODEL;
46
+ });
47
+ afterEach(() => {
48
+ if (savedEnv === undefined)
49
+ delete process.env.ANATHEMA_PROVIDER_CONFIG_FILE;
50
+ else
51
+ process.env.ANATHEMA_PROVIDER_CONFIG_FILE = savedEnv;
52
+ rmSync(tmpDir, { recursive: true, force: true });
53
+ });
54
+ /** Enabled VerifierService from the resolved selection; captures spine events. */
55
+ function verifierFor(selection, transport, emitted) {
56
+ const config = VerifierConfigSchema.parse({ enabled: true, model: selection });
57
+ return new VerifierService({
58
+ config,
59
+ callModel: async () => ({
60
+ text: '{"verdict":"confirmed","score":0.9,"rationale":"round-trip smoke"}',
61
+ provider: transport.provider,
62
+ model: transport.model,
63
+ }),
64
+ emit: async (input) => {
65
+ emitted.push(input);
66
+ },
67
+ });
68
+ }
69
+ describe('Desktop verifier round-trip (Exit-3.1)', () => {
70
+ it('Inherit: Primary=A, Verifier=inherit → effective verifier = A, event logs A', async () => {
71
+ // (1) Desktop settings: no override (the recommended default).
72
+ // (2) Restart/load: fresh disk read → inherit.
73
+ expect(getKrakenVerifierOverride()).toBeUndefined();
74
+ // UI reload leg: the snapshot exposes null = inherit.
75
+ expect(buildDesktopConfigSnapshot().krakenVerifier).toBeNull();
76
+ // (3) Runtime resolution.
77
+ const selection = loadVerifierModelSelection();
78
+ expect(selection).toEqual({ mode: 'inherit' });
79
+ // (4)+(5) Review + spine event: the session transport reports the primary model.
80
+ const emitted = [];
81
+ const verifier = verifierFor(selection, PRIMARY, emitted);
82
+ const review = await verifier.reviewCompletion({
83
+ summary: 'round-trip smoke: all checks green',
84
+ results: [],
85
+ session: { provider: PRIMARY.provider, model: PRIMARY.model },
86
+ });
87
+ expect(review.effectiveModel).toEqual({ mode: 'inherit', ...PRIMARY });
88
+ expect(emitted).toHaveLength(1);
89
+ expect(emitted[0].kind).toBe('verification.run');
90
+ const data = emitted[0].data;
91
+ expect(data.source).toBe('verifier-model');
92
+ expect(data.selectionMode).toBe('inherit');
93
+ expect(data.provider).toBe(PRIMARY.provider);
94
+ expect(data.model).toBe(PRIMARY.model);
95
+ });
96
+ it('Dedicated: Primary=A, Verifier=B → effective verifier = B, event logs B', async () => {
97
+ // (1) Desktop settings → persist through the real --set-config channel.
98
+ const applied = applySetConfig({
99
+ verifierProvider: DEDICATED.provider,
100
+ verifierModel: DEDICATED.model,
101
+ });
102
+ expect(applied.ok).toBe(true);
103
+ // UI reload leg: the snapshot exposes the dedicated override.
104
+ expect(buildDesktopConfigSnapshot().krakenVerifier).toEqual(DEDICATED);
105
+ // (2) Restart/load: fresh disk read.
106
+ expect(getKrakenVerifierOverride()).toEqual(DEDICATED);
107
+ // (3) Runtime resolution.
108
+ const selection = loadVerifierModelSelection();
109
+ expect(selection).toEqual({ mode: 'fixed', ...DEDICATED });
110
+ // (4)+(5) Review + spine: the dedicated transport reports B even though the
111
+ // session model is A — this is the "event logs actual model" lock.
112
+ const emitted = [];
113
+ const verifier = verifierFor(selection, DEDICATED, emitted);
114
+ const review = await verifier.reviewCompletion({
115
+ summary: 'round-trip smoke: all checks green',
116
+ results: [],
117
+ session: { provider: PRIMARY.provider, model: PRIMARY.model },
118
+ });
119
+ expect(review.effectiveModel).toEqual({ mode: 'fixed', ...DEDICATED });
120
+ const data = emitted[0].data;
121
+ expect(data.selectionMode).toBe('fixed');
122
+ expect(data.provider).toBe(DEDICATED.provider);
123
+ expect(data.model).toBe(DEDICATED.model);
124
+ });
125
+ it('Reset: Dedicated B → clear override → inherit A', async () => {
126
+ // Start dedicated, then reset through the real channel.
127
+ const set = applySetConfig({
128
+ verifierProvider: DEDICATED.provider,
129
+ verifierModel: DEDICATED.model,
130
+ });
131
+ expect(set.ok).toBe(true);
132
+ const cleared = applySetConfig({ verifierClear: true });
133
+ expect(cleared.ok).toBe(true);
134
+ // UI reload leg: back to null (inherit).
135
+ expect(buildDesktopConfigSnapshot().krakenVerifier).toBeNull();
136
+ // Restart/load + resolution.
137
+ expect(getKrakenVerifierOverride()).toBeUndefined();
138
+ const selection = loadVerifierModelSelection();
139
+ expect(selection).toEqual({ mode: 'inherit' });
140
+ // Review + spine: back to the primary model A.
141
+ const emitted = [];
142
+ const verifier = verifierFor(selection, PRIMARY, emitted);
143
+ const review = await verifier.reviewCompletion({
144
+ summary: 'round-trip smoke: all checks green',
145
+ results: [],
146
+ session: { provider: PRIMARY.provider, model: PRIMARY.model },
147
+ });
148
+ expect(review.effectiveModel).toEqual({ mode: 'inherit', ...PRIMARY });
149
+ const data = emitted[0].data;
150
+ expect(data.selectionMode).toBe('inherit');
151
+ expect(data.model).toBe(PRIMARY.model);
152
+ });
153
+ it('verifierOverrideToModelSelection: partial/blank overrides degrade to inherit', () => {
154
+ expect(verifierOverrideToModelSelection(undefined)).toEqual({ mode: 'inherit' });
155
+ expect(verifierOverrideToModelSelection(null)).toEqual({ mode: 'inherit' });
156
+ expect(verifierOverrideToModelSelection({ provider: 'grok', model: ' ' })).toEqual({ mode: 'inherit' });
157
+ expect(verifierOverrideToModelSelection({ provider: '', model: 'm' })).toEqual({ mode: 'inherit' });
158
+ // Complete overrides are fixed, trimmed.
159
+ expect(verifierOverrideToModelSelection({ provider: ' grok ', model: ' grok-4.6 ' })).toEqual({
160
+ mode: 'fixed',
161
+ provider: 'grok',
162
+ model: 'grok-4.6',
163
+ });
164
+ });
165
+ });
166
+ //# sourceMappingURL=verifierRoundTrip.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifierRoundTrip.test.js","sourceRoot":"","sources":["../../../src/cli/kraken/verifierRoundTrip.test.ts"],"names":[],"mappings":"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"}
@@ -54,11 +54,12 @@ describe('strict done gate enforcement (E2.2)', () => {
54
54
  });
55
55
  it('the strict BUILD policy excludes verifier-llm evidence (LLM score alone is not done)', () => {
56
56
  const policy = readFileSync(path.join(REPO_ROOT, 'packages', 'core', 'src', 'verification', 'completionPolicy.ts'), 'utf8');
57
- expect(policy).toContain('STRICT_BUILD_POLICY');
58
- const tiersBlock = policy.slice(policy.indexOf('DETERMINISTIC_EVIDENCE_TIERS'), policy.indexOf('STRICT_BUILD_POLICY'));
57
+ expect(policy).toContain('export const STRICT_BUILD_POLICY');
58
+ const tiersBlock = policy.slice(policy.indexOf('DETERMINISTIC_EVIDENCE_TIERS'), policy.indexOf('export const STRICT_BUILD_POLICY'));
59
59
  expect(tiersBlock).toContain("'tool-output'");
60
60
  expect(tiersBlock).not.toContain("'verifier-llm'");
61
61
  expect(policy).toMatch(/admissibleTiers/);
62
+ expect(policy).toMatch(/requireEventBackedEvidence:\s*true/);
62
63
  });
63
64
  });
64
65
  //# sourceMappingURL=legacyContextIsolation.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"legacyContextIsolation.test.js","sourceRoot":"","sources":["../../src/cli/legacyContextIsolation.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"legacyContextIsolation.test.js","sourceRoot":"","sources":["../../src/cli/legacyContextIsolation.test.ts"],"names":[],"mappings":"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"}