control-acceptance.json
docs/evidence/control-acceptance.json
1{
2 "capability": "PostgreSQL control service for durable item ownership and same-room place travel",
3 "approximate_full_plan_percent": 61,
4 "integration": "Standalone internal service. Playable relay still uses existing fsynced files; browser integration remains incomplete.",
5 "database": {
6 "version": "PostgreSQL 18.6",
7 "tests_passed": 7,
8 "tests_failed": 0,
9 "duration_ms": 3433.021833,
10 "command": "npm run test:control",
11 "evidence": "control-postgres.tap",
12 "crash_matrix": {
13 "commands": [
14 "pickup",
15 "travel with owned item"
16 ],
17 "boundaries": [
18 "state mutated",
19 "receipt inserted",
20 "outbox inserted",
21 "before commit",
22 "commit completed before response",
23 "receipt acknowledged"
24 ],
25 "process_kills": 12
26 },
27 "verified": [
28 "One winner from concurrent item claims",
29 "Exact operation retries return original receipts; altered payloads reject",
30 "Live lease ownership, stale epochs and expiry during a transaction",
31 "Single committed player/inventory snapshot with exact content and engine identity",
32 "Ordered durable outbox, cursor compare-and-set and missing-range rejection",
33 "Immutable room release and migration checksum drift rejection",
34 "HTTP authentication, browser Origin rejection, no response before commit",
35 "Abrupt database restart and pg_dump/pg_restore preserve acknowledged receipt, item ownership, release and outbox",
36 "Compiled production entry point accepts container-style database environment and shuts down cleanly"
37 ]
38 },
39 "engine_regression": {
40 "passed": 599,
41 "failed": 0,
42 "database_tests_skipped": 6,
43 "evidence": "control-engine-regression.tap",
44 "scope": "Full engine suite before the final database-only checks were expanded to seven cases; those seven all passed independently."
45 },
46 "checks": [
47 "TypeScript and package boundaries: 121 source files",
48 "Production SSR control build",
49 "Compose configuration validation"
50 ],
51 "measurement": "control-recovery.json",
52 "container": {
53 "configuration": "compose.control.yaml",
54 "volume": "darkwind-control-db mounted at /var/lib/postgresql",
55 "public_ports": false,
56 "local_runtime_test": "Unavailable: Docker socket permission denied and sudo requires a password. Native PostgreSQL and built service startup verified instead.",
57 "ci": "Disposable Compose build/start/health smoke configured; remote result not yet asserted."
58 },
59 "initial_failures": [
60 {
61 "cause": "Release storage initially used the existing fingerprint envelope rather than a world object.",
62 "fix": "Persist and hash exact canonical world source plus engine identity; verify on read."
63 },
64 {
65 "cause": "Database restart test omitted the temporary socket and no-TCP options used at startup.",
66 "fix": "Preserve those options for restart; retain the temporary server log before cleanup."
67 }
68 ],
69 "remaining": [
70 "Playable relay integration and file-state migration",
71 "Account/session identities and authorization beyond internal host credential",
72 "Server validation of predicted movement and destination readiness",
73 "Shared flags/doors, durable containers, trades, rewards and removed-object recovery storage",
74 "Object-store adapter and full engine bundle backup/restore",
75 "Cross-host travel coordination",
76 "Measured production RPO/RTO and five-second motion checkpoint policy",
77 "Outbox delivery to clients and retention/compaction",
78 "No numbered roadmap milestone closed; final character art deferred"
79 ]
80}
81