RUN v3.2.7 /tmp/circe-pr5-evidence ❯ jev-review.test.ts (9 tests | 7 failed) 55ms × N1: the sole model request carries utterance and materialized candidate evidence 18ms → expected '{"model":"test","frame":{"id":"frame:…' to contain 'continue the payment worker' × N2: the shared one-read decoder does not upgrade an ambiguous status through repeated getter reads 2ms → expected 'RESOLVED' to be 'AMBIGUOUS' // Object.is equality × N3: the workflow does not auto-bind the shared decoder status-switch case 4ms → expected 1 to be +0 // Object.is equality × N4: throwing response accessors become recorded errors, not a rejected workflow promise 5ms → unreadable answers × N5: evaluation counts failed backend attempts as calls 5ms → expected 1 to be 2 // Object.is equality × N6: a model ERROR response is counted as a backend failure 7ms → expected +0 to be 1 // Object.is equality × N7: one workflow callback fault is reported and does not discard the remaining evaluation frames 3ms → reducer fault ✓ N8 control: valid Jev results stay detached and obey ambiguous backend status 4ms ✓ N9 control: valid two-frame evaluation records two calls and reported latency 5ms ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 7 ⎯⎯⎯⎯⎯⎯⎯ FAIL jev-review.test.ts > N1: the sole model request carries utterance and materialized candidate evidence AssertionError: expected '{"model":"test","frame":{"id":"frame:…' to contain 'continue the payment worker' Expected: "continue the payment worker" Received: "{"model":"test","frame":{"id":"frame:i:o:0:2:e315cafe","hash":"e315cafe902afa86","interactionId":"i","observationId":"o"},"decisions":[{"id":"referent","kind":"choice","decision":"referent.singular","question":"Which candidate does the phrase refer to?","options":[{"id":"A"},{"id":"B"},{"id":"none"}],"noneOptions":["none"]}],"coverage":{"seedTruncated":false,"traversalTruncated":false,"candidateTruncated":false,"evidenceTruncated":false,"frameSizeExceeded":false,"pinnedExceededBudget":false,"pinnedSeedCount":0,"softSeedCount":2}}" ❯ jev-review.test.ts:22:15 20| const f=await frame();await backend.decide(f,[spec]); 21| const wire=JSON.stringify(request); 22| expect(wire).toContain(f.utterance.text); | ^ 23| expect(wire).toContain('restart payment worker'); 24| }); ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/7]⎯ FAIL jev-review.test.ts > N2: the shared one-read decoder does not upgrade an ambiguous status through repeated getter reads AssertionError: expected 'RESOLVED' to be 'AMBIGUOUS' // Object.is equality Expected: "AMBIGUOUS" Received: "RESOLVED" ❯ jev-review.test.ts:31:35 29| const analysis=analyzePerceptionResult([spec],raw); 30| expect(analysis.issues).toEqual([]); 31| expect(analysis.decoded?.status).toBe('AMBIGUOUS'); | ^ 32| expect(reads).toBe(1); 33| }); ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/7]⎯ FAIL jev-review.test.ts > N3: the workflow does not auto-bind the shared decoder status-switch case AssertionError: expected 1 to be +0 // Object.is equality - Expected + Received - 0 + 1 ❯ jev-review.test.ts:39:34 37| const backend:PerceptionBackend={id:'getter',model:'test',async decid… 38| const run=await runPerceptionWorkflow({backend,frame:await frame(),wo… 39| expect(run.state.accepted.size).toBe(0); | ^ 40| expect(run.status).toBe('AMBIGUOUS'); 41| }); ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/7]⎯ FAIL jev-review.test.ts > N4: throwing response accessors become recorded errors, not a rejected workflow promise Error: unreadable answers ❯ Object.get answers [as answers] jev-review.test.ts:44:117 42| 43| it('N4: throwing response accessors become recorded errors, not a reje… 44| const backend:PerceptionBackend={id:'throwing',model:'test',async dec… | ^ 45| const run=await runPerceptionWorkflow({backend,frame:await frame(),wo… 46| expect(run.status).toBe('ERROR'); ❯ analyzePerceptionResult ../circe-pr5-review/packages/perception/src/validation.ts:262:29 ❯ runPerceptionWorkflow ../circe-pr5-review/packages/perception/src/orchestrator.ts:303:22 ❯ jev-review.test.ts:45:12 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/7]⎯ FAIL jev-review.test.ts > N5: evaluation counts failed backend attempts as calls AssertionError: expected 1 to be 2 // Object.is equality - Expected + Received - 2 + 1 ❯ jev-review.test.ts:56:35 54| const f=await frame();const evaluation=await runReadOnlyEvaluation({b… 55| expect(evaluation.metrics.backendFailures).toBe(1); 56| expect(evaluation.metrics.calls).toBe(actualCalls); | ^ 57| }); 58| ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/7]⎯ FAIL jev-review.test.ts > N6: a model ERROR response is counted as a backend failure AssertionError: expected +0 to be 1 // Object.is equality - Expected + Received - 1 + 0 ❯ jev-review.test.ts:63:45 61| const evaluation=await runReadOnlyEvaluation({backend,frames:[await f… 62| expect(evaluation.metrics.errorRuns).toBe(1); 63| expect(evaluation.metrics.backendFailures).toBe(1); | ^ 64| expect(evaluation.metrics.acceptedDecisions).toBe(0); 65| }); ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/7]⎯ FAIL jev-review.test.ts > N7: one workflow callback fault is reported and does not discard the remaining evaluation frames Error: reducer fault ❯ Object.reduce jev-review.test.ts:69:118 67| it('N7: one workflow callback fault is reported and does not discard t… 68| let reduceCalls=0; 69| const faulty:WorkflowDefinition={id:'faulty',stages:[{id:'one',specs:… | ^ 70| const backend=createJevBackend({model:'test',client:{id:'ok',async co… 71| const f=await frame();const evaluation=await runReadOnlyEvaluation({b… ❯ runPerceptionWorkflow ../circe-pr5-review/packages/perception/src/orchestrator.ts:365:11 ❯ runReadOnlyEvaluation ../circe-pr5-review/packages/perception-jev/src/evaluation.ts:79:17 ❯ jev-review.test.ts:71:41 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/7]⎯ Test Files 1 failed (1) Tests 7 failed | 2 passed (9) Start at 18:06:13 Duration 1.06s (transform 519ms, setup 0ms, collect 576ms, tests 55ms, environment 0ms, prepare 115ms)