Commit graph Ghostlight/web
Author SHA1 Message Date
Meta Vens
4c83d54964 Send the advertised route transport with the sign-in completion
The page builds heimdall.auth.complete itself rather than through the
vendored client, and its routeHint carried only sourceVersion. Ghostlight
refuses any invocation without the route transport ("invocation metadata
is incomplete"), so every completion was denied before it reached
Heimdall. The page now takes the transport the provider advertises for
ghostlight.eve.commands, as the vendored client takes it from a command
descriptor. Verified on Yggdrasil: the corrected shape reaches Heimdall's
private plane and gets Heimdall's own answer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 21:12:14 +02:00
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