REPOSITORY SOURCE

keepsakes-acceptance.json

docs/evidence/keepsakes-acceptance.json

1{
2  "recordedAt": "2026-10-25T14:58:26.239391+00:00",
3  "baseCommit": "9a6ab5f7f73de5a87ec989fbd6298070fd8db764",
4  "scope": "Owner-private keepsake entities and atomic host-verified action rewards; full engine milestones remain open",
5  "fullPlanEstimatePercent": 67,
6  "sourceSha256": {
7    "apps/player/main.ts": "3334c40006f166ad17a12cdd905b7355a0eacfc3340053996e3b24f542365b38",
8    "apps/player/style.css": "2fb5ca7f7e66e0296193df862ec5cdd1c52353ee438daf3603eddd65e735c297",
9    "games/darkwind/trusted-world.ts": "bffcb0c060f9ccafc72cfe0a8505773692ed75746b454e6c06ac001207a34ee5",
10    "packages/authoring/index.ts": "c116b7a80081c1a23842f54d26a3ec107b022f84d74dc71c96957e91bf19f5d2",
11    "packages/authoring/observations.ts": "8ea8448dcdf16055cf27122a096e021fa3073fc00a8d4663d7310ec2bce05d2a",
12    "packages/authoring/undo.ts": "951da1090c39ef296d85c1ea2bc41de90e4fc07a531b37a86145e286c269e93d",
13    "packages/compiler/index.ts": "bea6568375feae40495adcd9d50aecd8fbdb58d9327da309c683eeb84ab0b3d5",
14    "packages/net/durable.ts": "9b9c953bbe7d653a7e01780ec172c86fd8e560faa22170f91ea30756bc06a36f",
15    "packages/net/replication.ts": "3b7b0309beb5c46fd5c5895969bd7567bd01462b6638df2ca082d9eb8ac1b7fc",
16    "packages/schema/index.ts": "8fb357b85f5af12a27585c228db3639d3207dec99868e7b59039fe8325fea024",
17    "packages/schema/rewards.ts": "c43f541797effc2d863b08e9c6950749eeb3b7ef4c90cc57564459b4d23daec6",
18    "packages/simulation/checkpoint.ts": "7a33cb7a678fee59b7b26d2426b5c4f68e197955263d6ae02869fb13d5a7e465",
19    "services/backup/index.ts": "7cb32e546705eb81a701c603fd4b9783d9557f02d60a45724c6016ae7b3a5356",
20    "services/backup/manifest.ts": "791f13b74b594d91e134a49a86a2049f8f2f7cf6a18fca6f30cf4b3e2aca9404",
21    "services/backup/snapshot.ts": "948c2b75f932ef17202b30e323937777fffa767e2335693b984a9cf044cbadca",
22    "services/control/ledger.ts": "ebe72db09ea9ce913de409ba34ce83b96e60111453a7277193bea8063a088cfa",
23    "services/control/migrations.ts": "79db2aba9ef0af1ad38cc2678c30a0945631123738b93c6326144a26dc6deb47",
24    "services/control/upgrade-plan.ts": "7d199ff52156229e32ab04de19e0cf3f823cdb0ff4dd2bc595b400995948f531",
25    "services/sim-host/private-state.ts": "d56c7f81dea5c9d4706c35eb559d4a74d5ac8862738303f5de7a3fe5588e2f0c",
26    "tests/backup.test.ts": "3c88053c46c4278e958260325d5a1a595f6193f542b696c1147ee6f968b50cb4",
27    "tests/browser/persistent.spec.ts": "0523ffc4d90da127df5fdde2995d0e2ac69c1829301511183448c61ac71fd57f",
28    "tests/browser/trusted-latency.ts": "feaf24a92a5ba2c8cb3501dd1a6b6896cfb2e0855b0f4afb8270a13c5e208bc6",
29    "tests/control-upgrades.test.ts": "740461af5c49c905735c641f81fc9334ae359efd0d0ebe4d868135744f10afa3",
30    "tests/fixtures/control-crash.ts": "b57f98e79418e8dcefa02bb577d8a78c36f56982079ca100ed94213566368092",
31    "tests/fixtures/seed-persistent-browser.ts": "92ec21e4b232d6e3f367f0b4158be987ae45d893366898715cab7fa6bf7f5c81",
32    "tests/private-replication.test.ts": "39b4ed26a94b32c07d549dae928d6573df1b3dc8249e827107510e353befee61",
33    "tests/rewards.test.ts": "d29b0751b253c85119a7d905c37322ec092a7bc288670e9c676285d712749a44",
34    "tests/trusted-room.test.ts": "a2da7b8066addce706ae93f0839a73aa3169c52cee78adac48e609941e5e2062",
35    "tools/cli/test-control.mjs": "86a6e878e371232cda3f5e2d36a5fd65f4ce56657b4ae5fa45db3612b663ef24"
36  },
37  "worldFormat": 13,
38  "compiler": "reward-world.13",
39  "databaseSchema": 5,
40  "headless": {
41    "tests": 652,
42    "pass": 620,
43    "fail": 0,
44    "skipped": 32
45  },
46  "control": {
47    "tests": 33,
48    "pass": 33,
49    "fail": 0,
50    "skipped": 0
51  },
52  "typeAndImports": "passed, 127 source files",
53  "trustedBrowser": {
54    "durationMs": 99753.809,
55    "journey": {
56      "transport": {
57        "sent": 72,
58        "received": 138,
59        "minSendDelayMs": 75,
60        "minReceiveDelayMs": 75,
61        "droppedCaptures": 0,
62        "closes": []
63      },
64      "privateKeepsakes": 1,
65      "privateTrafficVerified": true,
66      "gardenTravelMs": 4670.602619999998,
67      "addedRoundTripLatencyMs": 150,
68      "actor": "0fc831ee-4e3a-44cb-ad75-aa9df06f2b22",
69      "place": "sanctuary",
70      "revision": "19",
71      "inventory": [
72        "keeper-lantern"
73      ],
74      "otherTraveler": "8c48cb3b-0fc1-4d5b-a5df-22670f3a30f0",
75      "errors": []
76    }
77  },
78  "cooperativeBrowser": {
79    "durationMs": 94091.417,
80    "journey": {
81      "transport": null,
82      "privateKeepsakes": 0,
83      "privateTrafficVerified": false,
84      "gardenTravelMs": 3714.7610959999947,
85      "addedRoundTripLatencyMs": 0,
86      "actor": "b21d25c6-3d09-4206-999a-4700606488c5",
87      "place": "sanctuary",
88      "revision": "22",
89      "inventory": [
90        "keeper-lantern"
91      ],
92      "otherTraveler": "c6735e2d-5126-4e9d-8139-e599864127d9",
93      "errors": []
94    }
95  },
96  "recovery": [
97    "six application process-kill transaction boundaries",
98    "PostgreSQL immediate stop before commit and after commit before acknowledgement",
99    "owner restoration after room restart and simulation-worker recovery",
100    "exact award and audit rows after backup restore",
101    "award metadata retained after definition removal in stopped-room content upgrade",
102    "schema-4 occupied database refuses automatic schema-5 upgrade"
103  ],
104  "privacy": [
105    "entity audience intersected with component visibility before encoding",
106    "server/local component values and unused descriptors omitted",
107    "other actor socket/session capture excludes award UUID, owner metadata and audit operation",
108    "production browser second-traveler capture excludes award UUID and audit operation"
109  ],
110  "priorFailedRuns": [
111    {
112      "log": "/tmp/dw-keepsakes-browser.log",
113      "reason": "Five-second garden travel assertion expired; subsequent capture showed garden reached with no socket closes/errors."
114    },
115    {
116      "log": "/tmp/dw-keepsakes-browser-final.log",
117      "reason": "All gameplay assertions completed; context/trace cleanup failed with unexpected file-stream bytes. Browser test file had been edited while running; final run freezes sources and drains routes before closing."
118    }
119  ],
120  "limitations": [
121    "static-world authoritative host only",
122    "component visibility, not arbitrary nested-field redaction",
123    "shared lantern/chest ownership remains public",
124    "return credentials are not anti-abuse accounts; no monetary economy",
125    "keepsakes are nontransferable and not equippable",
126    "no cross-schema upgrade path; dedicated schema-5 database needed",
127    "Docker host, remote CI and broad device/load qualification not established",
128    "character model redesign remains deferred to final polish"
129  ]
130}
131