portal-interest-acceptance.json
docs/evidence/portal-interest-acceptance.json
1{
2 "recordedAt": "2026-10-25T20:34:57.636445+00:00",
3 "baseCommit": "588e782bfdee186e5de5fc83df363117e8a48bea",
4 "fullPlanEstimatePercent": 77,
5 "scope": "Server-derived one-hop portal destination presence for relay and persistent rooms; revision-safe subscriptions, strict readers, capability compatibility, and corrected persistent anchored gateway reach. Player portal rendering is still open. No numbered milestone closed.",
6 "sourceSha256": {
7 "apps/player/main.ts": "060a83a0516fd88f088c2ce565cebbdf4daed7838663c3fb1e0cf98b33b4e506",
8 "packages/net/client.ts": "a430b78e67f82fc4494a7a3ffc06b01f86262db18aa2b6c3001e02c917314688",
9 "packages/net/interest.ts": "f032cbc025c3de3726d5431271e25686bf54fcf35ca8b856f6a5320ca2e0a335",
10 "packages/net/packets.ts": "c0c84b316fb712b8dac719d23dfcc4e48b9126c6e92edc70f0d6ce5f69d9ba84",
11 "packages/net/persistent-client.ts": "339983bb8baee30394c4eecac4ab32a4b81dc8a658f3bf2f44074b879ec9a76c",
12 "packages/net/protocol.ts": "50c1d3cdb545b4549783b410aac3750d0c079ce9b3519d63e1ed90965bb9ea09",
13 "packages/schema/index.ts": "98c5071387fdc5c6df0979d9bef4a8a43a8a0edcd888c22a5fb7a33a3161228a",
14 "services/control/ledger.ts": "420b200310a4989152d9e0c882066eebfa77c41e98a975879e947f27e5ce8315",
15 "services/persistent/server.ts": "1a5a197fd9ddec78846abcf3228e97d70bda3960093b1199f1a05681775e1889",
16 "services/relay/server.ts": "26ed9f1ab9e779cf8351a1cbd9e5e3741c6e115f8d403372e1dc536acbb6c800",
17 "tests/browser/editor-portal-windows.spec.ts": "a8b4c5efd31a366124116ad3e0f9ef78ba1b4053560e4822601793d69e5d20cb",
18 "tests/fixtures/portal-interest-world.ts": "c997308fc99beb11138b7d556d5d6cbb7efe7b49b1b7ac2d79aad507ff3dc766",
19 "tests/net-packets.test.ts": "f650465f74c231d69728c19941d32db972a57a28e561a5001eb77f659fe8dc39",
20 "tests/persistent-room.test.ts": "b7683765096242b1f4d2f832648027722beb455a4760af77f904c6704433a0f1",
21 "tests/portal-interest.test.ts": "16e3517f305ca57ada61298d0d27e26d6180507581d002dc85dde8c17c9d8b7d"
22 },
23 "environment": {
24 "node": "22.23.4",
25 "browser": "Chromium 141 headless shell / Playwright 1.56.1",
26 "graphics": "SwiftShader WebGPU/Vulkan",
27 "postgres": "isolated local cluster with fsync and synchronous_commit enabled",
28 "temporaryStorage": "isolated workspace-disk directories"
29 },
30 "contract": {
31 "worldFormatChanged": false,
32 "presentationFormatChanged": false,
33 "maximumDestinations": 1,
34 "maximumInterestPlaces": 2,
35 "roomPeerCap": 8,
36 "relayHello": {
37 "placeInterest": 1,
38 "portalInterest": 1
39 },
40 "persistentHello": "portalInterest: 1 only when advertised by session response",
41 "serverPacketDuringRevision": "fieldless heartbeat on portal-capable connections; no presence until barrier release",
42 "authorityContext": "interaction place only",
43 "authoredConditions": "Current format-17 anchored windows are unconditional. Defensive requirement-selector unit coverage does not add condition authoring."
44 },
45 "checks": {
46 "typeAndImports": {
47 "passed": true,
48 "packageFiles": 148,
49 "log": "portal-interest-check.log"
50 },
51 "headless": {
52 "total": 768,
53 "passed": 711,
54 "skipped": 57,
55 "failed": 0,
56 "durationMs": 33671.746371,
57 "log": "portal-interest-headless.log"
58 },
59 "postgres": {
60 "passed": 16,
61 "skipped": 0,
62 "failed": 0,
63 "durationMs": 33873.682521,
64 "log": "portal-interest-postgres.log",
65 "scope": "Persistent and trusted room regressions, translated anchored gateway reach, one-hop filtering, committed travel, reconnect and old-hello fallback"
66 },
67 "browser": {
68 "distinctPassedCases": 4,
69 "finalSeparateRuns": {
70 "portal": {
71 "stats": {
72 "startTime": "2026-10-25T20:33:05.470Z",
73 "duration": 35861.465,
74 "expected": 1,
75 "skipped": 0,
76 "unexpected": 0,
77 "flaky": 0
78 },
79 "report": "portal-interest-portal-browser-results.json"
80 },
81 "place": {
82 "stats": {
83 "startTime": "2026-10-25T20:33:42.177Z",
84 "duration": 45340.057,
85 "expected": 1,
86 "skipped": 0,
87 "unexpected": 0,
88 "flaky": 0
89 },
90 "report": "portal-interest-place-browser-results.json"
91 }
92 },
93 "recoveryCases": "Both existing development-recovery cases passed in the initial combined run before the persistent-only advertisement follow-up. Initial source hashes and report retained in portal-interest-initial. The later follow-up changes admission only for persistent rooms and was covered by final headless and PostgreSQL checks.",
94 "initialReport": "portal-interest-initial/browser-results.json",
95 "initialFailure": "Running unrelated creator fixtures after an active recovery world was invalid: room rejected interaction/place identity replacement with an explicit-state-migration error. Existing runbook requires fresh rooms. Final creator cases each ran in a new server and passed without weakening the migration check."
96 }
97 },
98 "measurements": "portal-interest-measured.json",
99 "initialHeadlessFindings": [
100 "Fixture conversion initially retained legacy fields/IDs incompatible with anchored gateways; normalized IDs, local position, and removed legacy requirement/denial fields. No authoring schema was loosened.",
101 "Using routes packets as barrier heartbeats failed the static-world reader, which correctly requires routed content. Replaced with an explicit fieldless heartbeat negotiated by portal capability. Final static-world barrier case passed."
102 ],
103 "remaining": [
104 "Player source/destination graphics transactions in main and worker placements",
105 "Destination scene and actor projection, bounded catalogs/residency and device recovery",
106 "Shared peers are received but still projected only into their current place; the browser asserts zero source-room rigged actors while the other traveler is at the destination",
107 "No GPU performance, Docker/Coolify, remote CI or long-soak claim",
108 "Final character and arrival art pass remains deferred"
109 ]
110}
111