player-portal-acceptance.json
docs/evidence/player-portal-acceptance.json
1{
2 "recordedAt": "2026-10-25T20:59:49.754398+00:00",
3 "baseCommit": "18bdc18461cad689dc35062616714cc0b8ac5df8",
4 "fullPlanEstimatePercent": 78,
5 "scope": "Normal shared-player activation of authored portal windows, independently acknowledged destination presentation, atomic source/destination staging for travel and shared revisions, and graphics/simulation reconstruction in worker and main-thread placements. Full milestones 0\u201318 remain the objective; no numbered milestone closed.",
6 "sourceSha256": {
7 "apps/editor/portal-window.ts": "16d1848c454e4b71563a2caafaa9909350e5446e478f1c8e3854c4add67db65e",
8 "apps/player/development.ts": "3b62c49c32b8269d5c8591df57add9aa4e39b975841beb20b57153c8da1e7978",
9 "apps/player/graphics-protocol.ts": "f0b39698d03388f9079de3e26ff92da52a9fd2cd9da67b04052913dcb9e5f575",
10 "apps/player/graphics-revision.ts": "d5d80ef9326eec6406ccd80274aad387698c432c6349a8ea181dfdb5d9fe692d",
11 "apps/player/graphics.ts": "502ed1f1a4ade2165c89656153b3bc41b67f349daa95342f1d5006a8ea07d833",
12 "apps/player/graphics.worker.ts": "733b06674231d3c7f7a631648f301b72b014bef6e1674103aaf222641eb5a436",
13 "apps/player/main.ts": "0ef3cc57db0a03d2f78ebdca82e6417e97424528fbfe4a56becd393e4bc6a4fc",
14 "apps/player/simulation.worker.ts": "576e7786fbd3edfe33ac6dda4b9b63bbff4f73b6e778a19a9644f3f765ac8265",
15 "apps/player/travel.ts": "ffe579f2fcf92b45c269d5e7df7753e6d43715c4ef9da8a30201f010645aa99f",
16 "apps/player/portal-presentation.ts": "e26747c2f608a176a082daf055f8f23e2b6c702b5a268bd2d5cb15ae977177d7",
17 "tests/player-graphics-revision.test.ts": "08b34b9149cf222115df389b31f493a927cda9610be3dd5d291c702abdd035d0",
18 "tests/browser/editor-portal-windows.spec.ts": "4acb8aa3cdfcc015779b67370af859b3b01798f30b4524921d0cc4380defd372"
19 },
20 "environment": {
21 "node": "22.23.4",
22 "browser": "Chromium 141 headless shell / Playwright 1.56.1",
23 "graphics": "SwiftShader WebGPU/Vulkan",
24 "temporaryStorage": "isolated workspace-disk directories",
25 "databaseTestsRerun": false
26 },
27 "checks": {
28 "typesAndImports": {
29 "passed": true,
30 "packageFiles": 148
31 },
32 "fullHeadless": {
33 "tests": 776,
34 "pass": 719,
35 "fail": 0,
36 "skipped": 57,
37 "durationMs": 30984.920185,
38 "report": "player-portal-headless.tap"
39 },
40 "sharedPortalJourney": {
41 "passed": 1,
42 "report": "player-portal-browser.json",
43 "coverage": [
44 "startup in worker and main placements",
45 "visible remote destination travelers with no source duplicates",
46 "round-trip travel and destination removal/reinstallation",
47 "failed destination shader during shared revision preserves old stream; retry succeeds",
48 "failed destination shader during travel keeps current place; retry succeeds",
49 "forced network reconnect preserves identity",
50 "graphics loss/reconstruction with active destination in both placements",
51 "simulation termination/checkpoint reconstruction with active destination in both placements",
52 "one 4 MiB buffer and at most one pending receipt per destination channel"
53 ]
54 },
55 "regressions": {
56 "passed": 5,
57 "report": "player-portal-regression.json",
58 "coverage": [
59 "accepted revision recovery from old native checkpoint",
60 "worker stalled during shared preparation and corrected retry",
61 "native portal clipping/occlusion, rigged motion, resource lifecycle and device reconstruction",
62 "diagnostic cancellation",
63 "diagnostic worker-start failure"
64 ]
65 },
66 "visualInspection": [
67 "player-portal-worker.png",
68 "player-portal-main.png"
69 ]
70 },
71 "measurements": "player-portal-measured.json",
72 "measurementNote": "The shared journey reverses places near its end: the object named source in the retained portal-interest attachment is the original worker-side viewer, now in the destination; destination is the original main-side traveler, now viewing from the entry place. Peer rows and interest.place record the actual final places.",
73 "initialFailures": [
74 {
75 "report": "player-portal-initial/browser-results.json",
76 "cause": "The return-trip observation used the default five-second assertion timeout while destination graphics were still preparing. It now waits up to 30 seconds, within the existing bounded readiness path; native operation deadlines were not widened."
77 },
78 {
79 "report": "player-portal-recovery-initial/browser-results.json",
80 "cause": "Main-thread recovery verification could race ordinary rendering and fail to submit its first verified frame. Normal drawing is now excluded while verifying. Early source packets are also held outside new graphics until bootstrap completes, with an explicit baseline request rather than a repeated empty UI receipt loop."
81 }
82 ],
83 "remaining": [
84 "Persistent and trusted-room browser journeys with authored windows.",
85 "Physical GPUs, additional browser vendors, measured performance targets and long soaks.",
86 "General destination streaming and remaining extended portal requirements, including seamless physical crossings.",
87 "The explicitly deferred final character/arrival art pass.",
88 "All remaining outcomes and gates in full milestones 0\u201318."
89 ]
90}
91