RUN v3.2.7 /tmp/circe-pr3-round2-evidence ❯ recovery-round2.test.ts (8 tests | 5 failed) 27ms × E1: redelivered unaddressed confirmation cannot confirm a newly presented gate 11ms → expected [ { …(7) } ] to have a length of +0 but got 1 × E2: redelivered unaddressed cancellation cannot cancel a newly presented gate 3ms → expected 'CANCELLED' to be 'AWAITING_CONFIRMATION' // Object.is equality × E3: crash after successful reconciliation settles an UNKNOWN transaction 2ms → expected 'UNKNOWN' to be 'SUCCEEDED' // Object.is equality ✓ E4 control: completed confirmation replay cannot confirm a newly presented gate 1ms ✓ E5 control: fully recorded reconciliation settles UNKNOWN transaction 1ms × E6: ingest payload reservation survives a missing final command outcome 5ms → promise resolved "{ semanticEvents: [], …(8) }" instead of rejecting ✓ E7 control: ingest payload reservation survives a complete journal 2ms × E8: explicit null result survives a clean restart 1ms → expected undefined to be null ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 5 ⎯⎯⎯⎯⎯⎯⎯ FAIL recovery-round2.test.ts > E1: redelivered unaddressed confirmation cannot confirm a newly presented gate AssertionError: expected [ { …(7) } ] to have a length of +0 but got 1 - Expected + Received - 0 + 1 ❯ recovery-round2.test.ts:130:25 128| await second.runtime.command(proposal('b',[ref('B')])); 129| await second.runtime.command(yes); 130| expect(second.invokes).toHaveLength(0); | ^ 131| }); 132| it('E2: redelivered unaddressed cancellation cannot cancel a newly pre… ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/5]⎯ FAIL recovery-round2.test.ts > E2: redelivered unaddressed cancellation cannot cancel a newly presented gate AssertionError: expected 'CANCELLED' to be 'AWAITING_CONFIRMATION' // Object.is equality Expected: "AWAITING_CONFIRMATION" Received: "CANCELLED" ❯ recovery-round2.test.ts:142:62 140| const bid=b.transactions.find(t=>t.intentId===b.intents[0]!.id)!.id; 141| await second.runtime.command(no); 142| expect(second.runtime.state().transactions.get(bid)!.state).toBe('AWA… | ^ 143| }); 144| it('E3: crash after successful reconciliation settles an UNKNOWN trans… ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/5]⎯ FAIL recovery-round2.test.ts > E3: crash after successful reconciliation settles an UNKNOWN transaction AssertionError: expected 'UNKNOWN' to be 'SUCCEEDED' // Object.is equality Expected: "SUCCEEDED" Received: "UNKNOWN" ❯ recovery-round2.test.ts:151:87 149| const second=rig({journal:prefix(j,cutoff+1)}); 150| expect(second.runtime.state().effects.get(original.effects[0]!.id)!.s… 151| expect(second.runtime.state().transactions.get(original.transactions[… | ^ 152| }); 153| it('E4 control: completed confirmation replay cannot confirm a newly p… ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/5]⎯ FAIL recovery-round2.test.ts > E6: ingest payload reservation survives a missing final command outcome AssertionError: promise resolved "{ semanticEvents: [], …(8) }" instead of rejecting - Expected + Received - Error { - "message": "rejected promise", + { + "calls": [], + "effects": [ + { + "arguments": {}, + "bindings": [ + { + "phrase": undefined, + "provenance": { + "at": "2026-09-22T09:00:00.000Z", + "conclusion": "a|tasks|task|A", + "confidence": 1, + "inputs": [], + "rule": "compile.v1", + }, + "refs": [ + { + "authority": "a", + "id": "A", + "namespace": "tasks", + "type": "task", + }, + ], + "slot": "targets", + }, + ], + "capability": "task.resume", + "endedAt": "2026-09-22T09:00:00.000Z", + "failure": undefined, + "id": "effect:interaction:durable:1", + "intentId": "intent:1", + "intentRevision": 1, + "preconditions": [ + { + "ref": { + "authority": "a", + "id": "A", + "namespace": "tasks", + "type": "task", + }, + "token": { + "authority": "a", + "observedAt": "2026-09-22T09:00:00.000Z", + "token": "1", + }, + }, + ], + "receipt": { + "dispatchedAt": "2026-09-22T09:00:00.000Z", + "effectId": "effect:interaction:durable:1", + "executor": "exec", + "idempotencyKey": "effect:interaction:durable:1", + }, + "status": "SUCCEEDED", + "transactionId": "tx:1", + }, + ], + "intents": [ + { + "arguments": {}, + "bindings": [ + { + "expectations": [ + { + "ref": { + "authority": "a", + "id": "A", + "namespace": "tasks", + "type": "task", + }, + "token": { + "authority": "a", + "observedAt": "2026-09-22T09:00:00.000Z", + "token": "1", + }, + }, + ], + "origins": [], + "provenance": { + "at": "2026-09-22T09:00:00.000Z", + "conclusion": "a|tasks|task|A", + "confidence": 1, + "inputs": [], + "rule": "compile.v1", + }, + "refs": [ + { + "authority": "a", + "id": "A", + "namespace": "tasks", + "type": "task", + }, + ], + "slot": "targets", + }, + ], + "capability": "task.resume", + "createdAt": "2026-09-22T09:00:00.000Z", + "id": "intent:1", + "provenance": { + "at": "2026-09-22T09:00:00.000Z", + "conclusion": "x", + "confidence": 1, + "inputs": [], + "rule": "test", + }, + "readUsage": [], + "revision": 1, + }, + ], + "provenance": [], + "references": [], + "reply": { + "kind": "none", + }, + "scope": [], + "semanticEvents": [], + "transactions": [ + { + "commandId": "input-1", + "commandKey": "observation:input-1", + "confirmation": { + "at": "2026-09-22T09:00:00.000Z", + "intentRevision": 1, + }, + "createdAt": "2026-09-22T09:00:00.000Z", + "effects": [ + "effect:interaction:durable:1", + ], + "history": [ + { + "at": "2026-09-22T09:00:00.000Z", + "cause": "input-1", + "state": "DRAFT", + }, + ], + "id": "tx:1", + "intentId": "intent:1", + "paused": false, + "pendingCommitRevision": undefined, + "pinnedScopeIds": [], + "state": "SUCCEEDED", + "updatedAt": "2026-09-22T09:00:00.000Z", + }, + ], } ❯ recovery-round2.test.ts:183:52 181| const cutoff=j.entries().findIndex(e=>e.kind==='command-outcome'); 182| const second=rig({journal:prefix(j,cutoff),classify:semanticProposal}… 183| await expect(second.runtime.ingest(utterance('B'))).rejects.toThrow(/… | ^ 184| }); 185| it('E7 control: ingest payload reservation survives a complete journal… ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/5]⎯ FAIL recovery-round2.test.ts > E8: explicit null result survives a clean restart AssertionError: expected undefined to be null - Expected: null + Received: undefined ❯ recovery-round2.test.ts:197:78 195| expect(original.effects[0]!.result).toBeNull(); 196| const second=rig({journal:prefix(j)}); 197| expect(second.runtime.state().effects.get(original.effects[0]!.id)!.r… | ^ 198| }); 199| ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/5]⎯ Test Files 1 failed (1) Tests 5 failed | 3 passed (8) Start at 03:21:52 Duration 445ms (transform 135ms, setup 0ms, collect 144ms, tests 27ms, environment 0ms, prepare 44ms)