Status, plan and log for the show machine
Docs only. bitcube is read over ssh bitcube; nothing is changed there. Gavin’s rule: show everything except secrets (names, hostnames, LAN and Tailscale IPs, ports, device usernames and account emails yes; passwords and token values never). The river site is given as “near Dobbins, CA” only, never its coordinates (Gavin, 18 Oct).
Steps:
docs/system/system.json: places, nodes, links, scenarios now (Agape) and show (Gray Area), the Modal↔bitcube API, where secrets live (never values). Anything not verified is marked unverified.tools/tests/test_system_json.py (pytest). Ids, link endpoints, placement per scenario, statuses, the rope mapping, a secret scan, the real secret values from bitcube (read over ssh at test time, never printed), and system.md in sync.docs/system/index.html: a self-contained interactive SVG diagram. Click any node or link for its details; deep links, search, Now/Show toggle, API tab, light/dark, phone, keyboard.tools/system_docs.py generates docs/system/system.md (text + Mermaid); docs/llms.txt for agents.tools/tests/test_system_page.py), and the published URLs after the Pages build.Progress:
docs/system/system.json: 6 places, 60 nodes (incl. 20 ropes with box/OUT/universes), 82 links, scenarios now/show, the Modal↔bitcube API with live 18 Oct examples, 13 secrets by name and location, 16 open questions, sources. Facts from the repo docs, river-agent a9cbd2c, read-only ssh to bitcube, both tailnets, and the live Modal site (SITE_TOKEN is not set). (commit 22f7a0c)tools/system_check.py + tools/tests/test_system_json.py, test first (46 pass, .venv/bin/pytest tools/tests). Seams: structure_errors(doc) (ids, link ends, placement per scenario, enums, layout, Will’s rope mapping, API states), secret_pattern_hits(text) (URL credentials, Bearer values, assignments, private keys, token prefixes; placeholders pass), files_containing(values, files) over every tracked and new file with the real values from bitcube’s secrets.local.json read over ssh (held in a redacting str, never printed; a planted value is caught), and the river coordinates from river-agent’s agent.env. The system.md sync test comes with I4. (commit f6e6a7c)docs/system/index.html: one self-contained page (inline CSS and vanilla JS, no external scripts or fonts) that loads system.json. SVG map with places as regions and links coloured by medium (dashed = not yet working). Click, Enter or tab on any box or line for a panel with every field and its connections. Deep links (#node=, #link=, #scenario=show, #tab=api), search by name/IP/hostname, Now/Show switch, List/API/Secrets/Open questions/For agents tabs, light/dark, bottom sheet on phones. Rendered once in headless Chrome: no console errors. system.json now follows session A’s 17:50/17:55 notes: GL.iNet and river cam at the river, 10.0.7.0/24 route gone, gallery cam shared as 10.0.7.76/32 via bitcube. Work moved to a worktree (.worktrees/session-i) because session A commits in the main checkout. (commit 283fa59)tools/system_docs.py writes docs/system/system.md (every place, node and link, the API with live examples, secrets by name, open questions, people, sources; one Mermaid diagram per scenario, both rendered with mermaid 11 to check they parse). --check reports staleness, and new tests keep it in sync and free of Liquid tags (49 pass). docs/llms.txt (llmstxt.org format) points agents to system.json, system.md, CLAUDE.md, plan.md, the log, the execution plan and the hardware doc (raw GitHub URLs, since Pages renders .md to .html). (commit 028a474).venv/bin/pytest tools/tests: 62 pass (49 data/secret checks, 13 page checks). tools/tests/test_system_page.py drives the installed Chrome with Playwright: no console errors or failed requests; every node and link in both scenarios opens the right panel; a real click; the Now/Show switch and its hash; deep links (including one to a show-only node, which switches scenario); every tab; search by IP plus keyboard (/, Enter, Esc, Tab+Enter); phone bottom sheet with no sideways scroll; dark theme and toggle. It found two bugs, both fixed: the panel never hid (display:flex beat hidden), and search put bitcube above the gallery cam for 10.0.7.76. Published after the Pages build: system/, system/system.json, system/system.html, llms.txt all 200 (raw system.md served from raw.githubusercontent.com, 200); the same 13 page checks pass against the live URL. (commit 3fdb33e)10.0.7.76/32 route and the “never advertise a site’s own LAN” rule, and its “Read first” list now includes system.json with how to keep it current. The map is linked from the status page’s link bar and “Where we are”, and from the README. Plan item M ticked; SITE_TOKEN = not set recorded in plan.md’s open questions; log entry. (commit 62bc53b) Code review (high): 10 findings, all fixed with tests: scanner placeholders too lenient, passwords with /, coordinate variants, worktree secrets lookup, dangling references, secrets in printable locals, unreadable files skipped, a malformed deep link breaking the page, link direction in the panel, a grey map after a scenario switch, ArrowUp off by one. 79 tests pass. (commit ad00e95)Hi all, there’s now a map of the whole River system: https://gavaiken.github.io/river-bitcube/system/ Every machine, camera, light controller and connection, for Agape now and Gray Area as planned, with IPs, hostnames, ports, usernames and the Modal↔bitcube API. Tap any box or line for details. No passwords or tokens anywhere. Could you each check your part and tell me what’s wrong or missing? Will: network, cameras, the river kit and the Gray Area plan. Andi: Colorlight sender, receive card and panels. Dave: the Modal app and the API tab, plus two questions for you in “Open questions”. Your agents can read https://gavaiken.github.io/river-bitcube/llms.txt or system.json directly. If you’d rather your email weren’t on the page, say so and I’ll take it off.
Done:
docs/system/system.json: 6 places, 60 nodes (all 20 ropes with box/OUT/universes), 83 links, scenarios now (Agape) and show (Gray Area, planned), the Modal↔bitcube API with live examples, 13 secrets by name and location only, 15 open questions, a source for every fact; unchecked facts marked unverified or awaiting:<Name>. Updated for session A’s 17:50/17:55 network changes.tools/system_check.py): structure, Will’s rope mapping, API states, references, a secret-pattern scan, and every tracked file checked against bitcube’s real secrets read over ssh (never printed).docs/system/index.html: self-contained interactive map (panel for every node and link, deep links, search, Now/Show, API/Secrets/Questions/Agents tabs, light/dark, phone, keyboard).tools/system_docs.py → docs/system/system.md (text + Mermaid per scenario, both checked to render); docs/llms.txt.tools/tests/test_system_page.py), and those also pass against the live URL; published URLs return 200..venv/bin/pytest tools/tests.
Hardware state now: unchanged by this session (docs only; bitcube was only read over ssh).
Decisions or answers needed from Gavin/team: send the Signal draft; TeamViewer keep or remove; whether to purge the old hint from git history; Dave’s two questions.
Suggested next step: D1 or E1 once Dave answers (the API tab has the contract); keep system.json current as the network changes for Gray Area (G3).