📋 portal: micro-lane brief — the orrery gets a door (fable)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-07-16 09:10:43 +10:00
parent 907094a735
commit 66d6df2689

40
PORTAL_BRIEF.md Normal file
View File

@ -0,0 +1,40 @@
# PORTAL — GODSIGH micro-lane · ▸ the orrery gets a door
> **You are an execution agent (Opus).** Smallest lane of the wave — budget
> ~an hour. GODSIGH is the mature sibling; make surgical edits only, match the
> house style you find, and end with a short report (what shipped, how
> verified, open questions).
**Repo:** this one (`/Users/m3ultra/Documents/GODSIGH`, origin Gitea GODSIGH).
Branch `portal/solargod` from `main@907094a` or later. Dev: `python3 serve.py
8137`. **Do not touch** feed proxies, layer logic, or the registry.
## P.1 The door
SOLARGOD (the solar-system orrery, sibling app, port 8147) already links INTO
GODSIGH from its Earth card. Reciprocate: a small fixed button/link in the HUD
(near the mode toggle or HUD footer — pick what the existing CSS makes clean):
**`🪐 SOLARGOD`** → opens `http://127.0.0.1:8147/` in a new tab
(`rel="noopener"`).
## P.2 The handshake — shared time
Both apps serialize state in the URL hash, and SOLARGOD accepts an absolute
sim-time token: `#t=@<unixMs>`. Build the href DYNAMICALLY at click time from
GODSIGH's current clock:
`http://127.0.0.1:8147/#t=@<ms of viewer.clock.currentTime>` — scrub GODSIGH
three hours into the past, click through, and SOLARGOD opens at that same
moment. (SOLARGOD clamps to its own valid range itself; don't pre-clamp.)
## P.3 Verify (real input, in the browser)
1. Click the button live → new tab opens SOLARGOD, planets rendered.
2. Scrub GODSIGH off-live by ~3 h, click again → SOLARGOD's date readout shows
the scrubbed time (±1 min), chip reads SCRUBBED.
3. GODSIGH itself: zero console errors, all layers still boot, hash state
still round-trips (paste a GODSIGH URL, view reproduces).
4. If SOLARGOD isn't running, the tab just fails to load — that's fine, no
error handling needed beyond `noopener`.
*Out of scope: any SOLARGOD-side change (its `t=@ms` support already exists);
any shared component; any feed work.*