# 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.*
