snapkitty
research
python
File size: 2,284 Bytes
677e207
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import test from 'node:test';
import assert from 'node:assert/strict';
import { CHECKPOINTS, EVENTS, HAZARDS, OBJECTIVES, TOOLS, deriveSnapshot, serializeReplay } from '../docs/simulation.mjs';
import { createWasmBoundary } from '../docs/wasm-boundary.mjs';

test('scenario is deterministic and has a complete event vocabulary', () => {
  const required = ['OBSERVE', 'SCAN', 'DISCOVER', 'PLAN', 'MOVE', 'TOOL_CALL', 'HAZARD_DETECTED', 'REASON', 'REROUTE', 'ACTION', 'VERIFICATION', 'FAILURE', 'RECOVERY', 'CHECKPOINT', 'COMPLETE'];
  for (const type of required) assert.ok(EVENTS.some(item => item.type === type), `missing ${type}`);
  assert.equal(EVENTS[0].timestamp, '14:02:31');
  assert.equal(EVENTS.at(-1).position.x, 92);
  assert.equal(HAZARDS.length, 6);
  assert.equal(CHECKPOINTS.length, 4);
  assert.equal(OBJECTIVES.length, 8);
  assert.equal(TOOLS.length, 9);
  assert.equal(JSON.stringify(deriveSnapshot(8)), JSON.stringify(deriveSnapshot(8)));
});

test('replay restores path, hazards, mirror response, and verification state', () => {
  const before = deriveSnapshot(5);
  const blocked = deriveSnapshot(8);
  const after = deriveSnapshot(12);
  assert.equal(before.path.length, 6);
  assert.equal(blocked.current.verification, 'fail');
  assert.equal(blocked.mirror.status, 'PATH COLLAPSED');
  assert.ok(blocked.mirror.boundaryHardness > before.mirror.boundaryHardness);
  assert.equal(after.current.verification, 'pass');
  assert.equal(after.world.blockedPaths, 0);
  assert.equal(after.checkpoints.length, 2);
  assert.equal(deriveSnapshot(2).path.length, 3);
  assert.notEqual(serializeReplay(5), serializeReplay(12));
});

test('snapshot clamps time travel and preserves completion', () => {
  assert.equal(deriveSnapshot(-50).index, 0);
  assert.equal(deriveSnapshot(1000).index, EVENTS.length - 1);
  assert.equal(deriveSnapshot(1000).isComplete, true);
  assert.equal(deriveSnapshot(1000).current.verification, 'pass');
});

test('WASM boundary is deterministic and explicitly reports its implementation', async () => {
  const boundary = await createWasmBoundary();
  assert.ok(['READY', 'FALLBACK'].includes(boundary.status));
  assert.equal(boundary.score(41), 42);
  assert.equal(boundary.score(0), 1);
});