From 07176cdc2e29a1a5b3af055556c1cf4d4d43e595 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 18 Aug 2026 23:06:50 +0200 Subject: [PATCH] Record browser handoff hardening --- notes/fresh-workspace-handoff.md | 9 +++++++++ notes/ghostlight-current-system-map.md | 9 +++++++++ state/evidence.jsonl | 1 + 3 files changed, 19 insertions(+) diff --git a/notes/fresh-workspace-handoff.md b/notes/fresh-workspace-handoff.md index 7d67a1e..577985a 100644 --- a/notes/fresh-workspace-handoff.md +++ b/notes/fresh-workspace-handoff.md @@ -845,6 +845,15 @@ anonymous command bodies receive `401`; authenticated malformed JSON still reaches the normal `400` extractor path. The full workspace passed 137 core tests and 13 daemon tests. Invitations were neither rotated nor consumed. +Release `ca9c1ccbfaac8026bee9554d7244ed75931b5104` hardens the browser handoff. +The release build now runs strict TypeScript checking before Vite. Definite HTTP +refusals no longer fall into the ambiguous lost-response warning, and campaign +selection, approvals, fork, and reset retain the browser interaction lock until +the canonical surface refresh completes. Starfire serves +`assets/index-CA3oKXnL.js`; source commit, manifest, and executable SHA-256 +`b17dcfad6d4cbd442153f1e5b3c834c795614fdd08253cb7e8f0ca2527af65b4` +agree. Invitations remain untouched. + ## Warnings - Keep persistent state small. Git history and artifacts own chronology. diff --git a/notes/ghostlight-current-system-map.md b/notes/ghostlight-current-system-map.md index 1149b91..fa171a6 100644 --- a/notes/ghostlight-current-system-map.md +++ b/notes/ghostlight-current-system-map.md @@ -390,6 +390,15 @@ destination compiler binds that value into a read-only origin field and shows the proposed locations, containment, routes, persistent features, and material gaps before approval. Population fission approval similarly shows each named child leaf, partition value (including `other/unknown`), and home location. +The browser interaction lock covers a canonical mutation and the subsequent +surface refresh as one user interaction. Campaign selection, world approval, +destination approval, fission approval, fork, and reset cannot re-enable stale +controls between the commit response and the refreshed revision. Compiler +preview requests remain non-mutating and release the lock with their returned +preview. Received non-success HTTP responses are rendered as server refusals; +only missing or undecodable responses receive the ambiguous-transport warning +that a commit may have preceded the lost response. The production web build +runs strict TypeScript checking before Vite emits assets. Relationship documents in the schema catalog are revision-bound projections of actor-owned relationship maps; they are not a second relationship writer. diff --git a/state/evidence.jsonl b/state/evidence.jsonl index efaafc9..9614b60 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -112,3 +112,4 @@ {"ts":"2026-08-18T20:43:30Z","type":"deployment","status":"degraded","branch":"codex/ghostlight-dungeon-mvp","note":"Starfire activated immutable release b76bb5a8936624513fd0cd5e46d4d9ab11c3a517 with executable SHA-256 41928dbe73bb3e4a75e3a468d8a2c7ce725254621d17faa8a565ea526b2a3296 and rollback 12a704a508f2be1f4eee96acd46fe0dd9369b81c. Typed health, manifest, executable hash, PID 22464, four persisted campaigns, and DeepSeek readiness agree. Against canonical Odin target 10.77.0.1:17871, HTTP became healthy in 2.803 seconds; after the remote deadline one warning reported the 19-document RUDP batch could not establish an acknowledged connection. Local CultMesh and HTTP remained healthy. Independent SSH inspection found no Odin container and no UDP 17871 listener on Yggdrasil. The outage is recorded in gamecult-ops and does not transfer coordinator authority to Starfire. Publication did not rotate or consume invitations."} {"ts":"2026-08-18T18:52:00Z","type":"verification","status":"ok","branch":"codex/ghostlight-dungeon-mvp","note":"Exact release 7916ab04936ba962720cfbf4af1b83f9aa8d8b24 made every selected named member exception a mandatory Projector perspective owner, closing the seam where aggregation could erase an actionable individual before Persona choice. The strict provider-backed budget-one golden placed 24 rivals in one arena, attributed migration to member:mira-venn, moved her between depth-two population lineages, produced nine sustained material consequences including seven typed outcomes across six other background subjects, preserved her delta and the player, and automatically promoted the same Mira on return with zero rejected pulses. Witness: F:\\GameCult\\GhostlightDungeon\\acceptance\\gestalt-dynamics-7916ab0-strict\\result.json."} {"ts":"2026-08-18T20:58:12Z","type":"deployment","status":"degraded","branch":"codex/ghostlight-dungeon-mvp","note":"Starfire activated immutable release f905376a2278c48bf474ab3b665fe12a241d69de with executable SHA-256 8ab529c908b765acba3c97bc7c9e0e78df7690b2d7da0dabf645782439b061b8 and rollback b76bb5a8936624513fd0cd5e46d4d9ab11c3a517. Typed health, manifest, executable hash, PID 21092, four persisted campaigns, and DeepSeek readiness agree. One authentication middleware now owns entry to every /api route before body extraction; deployed probes returned 401 for malformed and three-megabyte anonymous JSON, while a valid-session regression reaches the ordinary 400 parser response. The full workspace passed 137 core and 13 daemon tests. Invitations were neither rotated nor consumed. Remote Odin replication remains degraded because Yggdrasil has no UDP 17871 listener; canonical local CultMesh and HTTP remain healthy."} +{"ts":"2026-08-18T21:06:20Z","type":"deployment","status":"degraded","branch":"codex/ghostlight-dungeon-mvp","note":"Starfire activated immutable release ca9c1ccbfaac8026bee9554d7244ed75931b5104 with executable SHA-256 b17dcfad6d4cbd442153f1e5b3c834c795614fdd08253cb7e8f0ca2527af65b4 and rollback f905376a2278c48bf474ab3b665fe12a241d69de. Typed health, manifest, executable hash, PID 27988, four persisted campaigns, DeepSeek readiness, and served asset index-CA3oKXnL.js agree. The browser release build now performs strict TypeScript checking; definite server refusals are distinct from lost-response ambiguity, and campaign mutations retain the interaction lock through canonical refresh. Anonymous malformed JSON remains 401. Invitations were neither rotated nor consumed. Remote Odin replication remains degraded because Yggdrasil has no UDP 17871 listener; canonical local CultMesh and HTTP remain healthy."}