| Ticket Hash: | 89c33479800c011dc0fc32184fc50fbb8865f1b2 | ||
| Title: | Node visibility UI: reality-checked pikchr node map from data already in Fossil (T7) | ||
| Status: | Active | Type: | Feature_Request |
| Severity: | Normal | Priority: | Medium |
| Subsystem: | ui | Resolution: | |
| Last Modified: |
2026-09-20 14:43:22 51.7 days ago |
Created: |
2026-07-09 13:51:06 124.8 days ago |
| Version Found In: | |||
| Description: | ||||
|
Operator ask (2026-07-09): dynamic inspection of the multi-node network, pikchr-rendered, reality-checked against what Fossil actually records — not just the declared wiki diagram. Companion: wiki "Node Launch Runbook" §3 (data inventory) and its open questions NQ-1/NQ-2/NQ-6.
Data already in Fossil (measured on the live repo: rcvfrom = 5,254 receipts from 18 distinct IPs): - rcvfrom (uid, mtime, ipaddr): who pushed artifacts, from where, when — the observed-traffic ground truth - config: last-sync-url, baseurl:* history, peer-name-*/peer-repo-* registry (peer-visibility c8fdc2bcc9) - user table: runner/operator logins per repo - accesslog/admin_log (accesslog needs the setting enabled — NQ-6) - unversioned storage (syncs): the publishing channel for declared profiles Scope: 1. Node-profile publishing: `agent-tool node-profile --publish` (or automatic on set) writes the machine's profile to Fossil unversioned `nodes/<node>.json` so declared roles sync cluster-wide (gated on NQ-1 consent; slotcar may opt out). 2. A Nodes page/panel (Agent Console family, next to the Peers panel): one row/box per known node = union of published profiles + distinct rcvfrom sources; columns: role, runs_runner, last-seen (max rcvfrom.mtime for its addresses), freshness color. 3. pikchr rendering: generate the topology diagram from that data (declared edges from the wiki §4 planes; observed edges from rcvfrom/last-sync-url), stale nodes visibly flagged — declared-vs-observed divergence is the whole point. 4. No page-refresh status (8f1e26ccaf rule 2): freshness via the established status-blob poll pattern. Depends on T1 (e38caae1c5, node profiles — shipped on session branch). Implementation intended for a Sonnet-driven ollama-codex session thread per operator directive (big model designs/reviews only). | ||||