Login
View Ticket
Login
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).