object-behaviors-acceptance.json
docs/evidence/object-behaviors-acceptance.json
1{
2 "capability": "Editor-authored Touch glow with authoritative shared state",
3 "headless": {
4 "passed": 580,
5 "failed": 0,
6 "command": "node --import tsx --test --test-concurrency=4 tests/*.test.ts",
7 "evidence": "object-behaviors-headless.tap"
8 },
9 "followup": {
10 "behavior_room_tests": 2,
11 "status": "passed",
12 "detail": "Replica tested while in reach; restart retains non-default active selection."
13 },
14 "checks": [
15 "TypeScript and package boundaries: 114 source files",
16 "Content-addressed active/inactive materials",
17 "Durable undo across dialogue/behavior replacement",
18 "Native automatic program recovery",
19 "Server-owned behavior requests, reach admission, duplicates, host handoff and restart",
20 "Private state excluded from public packets and protected from elected-browser commits"
21 ],
22 "browser": {
23 "status": "passed",
24 "cases": [
25 {
26 "title": "an editor-authored glow is shared, survives live color edits, and can be removed and restored",
27 "status": "expected",
28 "results": [
29 {
30 "status": "passed",
31 "duration": 47354
32 }
33 ]
34 }
35 ],
36 "stats": {
37 "startTime": "2026-10-25T11:32:38.828Z",
38 "duration": 50380.51,
39 "expected": 1,
40 "skipped": 0,
41 "unexpected": 0,
42 "flaky": 0
43 },
44 "command": "npm run test:browser:behaviors (CI=1, isolated production engine/client, SwiftShader)",
45 "screenshots": [
46 "object-behaviors-controls.png",
47 "object-behaviors-inactive.png",
48 "object-behaviors-active.png",
49 "object-behaviors-recolored.png"
50 ]
51 },
52 "initial_failures": [
53 {
54 "case": "Authoring schema coverage",
55 "cause": "New command increased parser schema count from 20 to 21; old test still expected 20.",
56 "correction": "Updated command count and first-entry ownership assertion; final full suite passed."
57 },
58 {
59 "case": "Initial browser interaction fixture",
60 "cause": "Starting positions were 2.09 metres from a two-metre interaction point.",
61 "correction": "Put both travelers within reach; both toggled the real object successfully."
62 },
63 {
64 "case": "Browser live apply",
65 "observed": "Graphics recovery occurred; room rejected with Graphics are not ready for this update and retained revision 3.",
66 "correction": "Run browser acceptance independently from the CPU-intensive full headless suite. Check recovery status before applying: null means no recovery has occurred; ready means a completed recovery. Final full scenario passed without changing product deadlines or graphics guards."
67 },
68 {
69 "case": "Browser readiness fixture",
70 "cause": "The new test initially required ready even for a healthy renderer with no recovery attribute.",
71 "correction": "Accept the documented initial state or completed recovery; retain rejection of recovering/failed."
72 },
73 {
74 "case": "Browser final interaction fixture",
75 "cause": "After editor tab switches, both players were paused normally; the final E press was ignored. Live recolor, removal and undo had applied to both clients.",
76 "correction": "Use Return to the world before interacting and assert the worker is unpaused. Final scenario passed."
77 }
78 ],
79 "limits": [
80 "One pinned built-in material-toggle module; maximum 16 static bindings",
81 "Surface glow does not cast light on nearby geometry",
82 "Solo lightweight reload saves do not retain behavior state; native checkpoints do and shared relay persists it",
83 "No uploaded JavaScript, general server tick scripts, async behavior jobs, or hostile-code isolation",
84 "No numbered full-plan milestone is closed"
85 ],
86 "verification_order": "580 passing full headless tests after production fixes; two strengthened room tests passed afterward; final type/import checks passed; final browser run passed after test-only fixture corrections."
87}
88