Commit graph Ghostlight/web
Author SHA1 Message Date
Meta Vens
e42e1c1b31 Finish browser sign-in by attempt id, and on returning to the tab
Heimdall's Discord callback issues a random completion code distinct from
the attempt id, but the vendored adapter required the two to be equal and
rejected every real return as a malformed witness, so no player could sign
in. Re-vendored from Heimdall e8e2832, which completes by attempt id and
never reads the completion code; the test fixture issues a distinct code as
the server does.

A player who finishes Discord elsewhere and switches back to this tab never
reloads it, so the load-time resume never ran. The page now reruns the same
resume when it becomes visible with an attempt in flight.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 20:51:20 +02:00
Meta Vens
ce382a8557 Cut 15: subscribe to revisions after any sign-in, not only the redirect flow, and keep a poll fallback (PA.f191)
main.ts subscribed to the api/eve/events revision stream exactly once, in an
`if (api.hasAuthenticatedSurface())` check that ran right after host.start()
and the redirect-flow resumeHeimdallAccess() call resolved. authenticatedSurface
reflects whatever the *last* surface() fetch saw, and it can flip from false
to true well after that point: a player who signs in through the in-page gate
(heimdall.auth_completion_status.v1, resolved entirely inside the vendored
host's own submit()/refresh() cycle, on its own 100ms-later timer) never
retriggers that one-shot check. That tab never got a revision subscription
for the rest of the session, so every answer after the first was refused as
stale and the card looked frozen.

trySubscribeToRevisions() replaces the one-shot check: idempotent, called
after host.start(), after the redirect flow's own refresh, and on a 2s
recheck interval, since main.ts has no direct hook into the in-page flow's
own completion moment.

pollMs moved from 0 to 5000: the app relied entirely on SSE for live
updates, so a dropped stream (closed by an intermediary, or simply never
subscribed) had no fallback at all. The vendored host's own poll already
no-ops when the surface version has not moved, so this is a low-frequency
safety net, not a second primary channel.

Verified: npm run typecheck (clean) and npm test (3/3, unchanged) in web/.
No headless-browser harness exists for main.ts's transport/host wiring; this
was verified by tracing the vendored host's own submit()/refresh()/consumeCommandResult
control flow (vendor/eve/packages/eve-browser-lowering/dist/index.js) against
the fix, not by an automated end-to-end test. Flagging as a follow-up in the
Cut 15 report rather than adding test infrastructure out of scope for this cut.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-23 05:32:17 +02:00
Meta Vens
6bb6869810 Rebuild Ghostlight around explicit world authority 2026-09-02 07:21:11 +02:00
Meta Vens
855d6be8fc Keep model diagnostics private in Eve play 2026-08-23 11:10:54 +02:00
Meta Vens
59ebb9dd0b Pin Eve draft preservation fix 2026-08-22 19:14:27 +02:00
Meta Vens
8cad6b937d Preserve Session Zero context across Eve channels 2026-08-22 12:42:28 +02:00
Meta Vens
b06d2a72d7 Harden Eve input and OpenRouter structured turns 2026-08-22 12:25:53 +02:00
Meta Vens
0e56b5600b Complete Heimdall auth across browser return contexts 2026-08-22 11:43:42 +02:00
Meta Vens
7185710fb1 Open Eve revision stream only after authentication 2026-08-22 03:17:57 +02:00
Meta Vens
172ac0db55 Lower Ghostlight as one Eve-native surface 2026-08-22 02:05:01 +02:00
Meta Vens
9f8be42d5c Build Session Zero and bounded co-op 2026-08-21 16:58:56 +02:00
Meta Vens
7b58e3eaa2 Resume Heimdall login across Discord navigation 2026-08-20 20:57:05 +02:00
Meta Vens
b7259a4eda Gate Ghostlight playtests through Heimdall Discord roles 2026-08-20 20:47:18 +02:00
Meta Vens
92c3e81d92 Replace demo invites with Heimdall sign-in 2026-08-19 00:40:15 +02:00
Meta Vens
164605be85 Provision reusable batches of single-use invites 2026-08-19 00:11:39 +02:00
Meta Vens
4995f261f6 Keep generated role selection server-owned 2026-08-18 23:17:11 +02:00
Meta Vens
debdf609d3 Bound fission input before inference 2026-08-18 23:10:51 +02:00
Meta Vens
ca9c1ccbfa Keep browser mutations locked through refresh 2026-08-18 23:02:06 +02:00
Meta Vens
f456993b07 Type-check the browser release build 2026-08-18 23:00:26 +02:00
Meta Vens
5db04a1fe7 Separate ordinary speech from assessed attempts 2026-08-18 22:11:43 +02:00
Meta Vens
73b748e183 Harden browser and campaign lifecycle failures 2026-08-18 21:54:57 +02:00
Meta Vens
f7c9db29be Restrict operator HTTP to loopback 2026-08-18 21:44:53 +02:00
Meta Vens
c509d2a95b Restore operator ownership of resolution pins 2026-08-18 21:37:19 +02:00
Meta Vens
5e198dfa87 Bind expansion previews to canonical location 2026-08-18 21:20:40 +02:00
Meta Vens
b5483242e1 Expose the world approval surface 2026-08-18 21:17:22 +02:00
Meta Vens
f9b0ffb90e Preserve player intent and approval ownership 2026-08-18 21:07:02 +02:00
Meta Vens
527041c3e9 Publish canonical player browser bundle 2026-08-18 20:22:42 +02:00
Meta Vens
624ded4aaf Bind player commands to canonical actor identity 2026-08-18 20:21:45 +02:00
Meta Vens
85938884b8 Keep branch secrets out of player approval 2026-08-18 20:00:36 +02:00
Meta Vens
ab0feece30 Make facts precede informational outcomes 2026-08-17 21:19:35 +02:00
Meta Vens
f1d55b181a Render authentication as a real gate 2026-08-17 19:12:31 +02:00
Meta Vens
17254e29cf Describe branch reset authority honestly 2026-08-17 18:21:31 +02:00
Meta Vens
e05b7edb16 Project every player route safely 2026-08-17 18:04:24 +02:00
Meta Vens
66b7986cca Protect player and compiler projection boundaries 2026-08-17 17:45:13 +02:00
Meta Vens
bf586b90d0 Implement multiresolution gestalt agency graph 2026-08-17 09:33:34 +02:00
Meta Vens
d4a21a4540 Complete assessment and evidence receipts 2026-08-16 23:16:18 +02:00
Meta Vens
22281891cb Complete Persona context and gestalt individuation 2026-08-16 23:03:30 +02:00
Meta Vens
381cbf22c2 Add operator inspection and live turn pressure 2026-08-16 21:03:18 +02:00
Meta Vens
8defc96133 Route sessions through isolated campaign runtimes 2026-08-16 21:01:04 +02:00
Meta Vens
2b825cacb9 Build persistent world action loops 2026-08-16 20:36:01 +02:00
Meta Vens
ab39d8cdac Build grounded world compiler flow 2026-08-16 20:12:53 +02:00
Meta Vens
6f51f3a4a3 Build GhostlightDungeon kernel and private Eve harness 2026-08-16 16:35:50 +02:00