Skip to content

status: per volume×destination coverage + durability panel (CLI, then TUI in this issue) #159

Description

@mbertschler

Problem (friction log F16 + F17 + F23, all S2)

Two standing questions no surface can answer:

  • "Is every configured target caught up?" (F16) — the TUI dashboard/volumes tab show a single LAST SYNC cell per volume, but reference-photos syncs to four targets; a destination can fail for a week behind a fresh ✓ earned by any other target.
  • "What is durable where, and what could I offload?" (F17/F23) — vectors, verify methods, evidence ages, and offloadable bytes exist only in the DB, surfaced indirectly through offload refusals. The edge machine that most needs the answer (roaming laptop, small disk) is completely blind to its own safety.

Decision (Martin, 2026-07-24 — option 5a + 5b in the same issue)

Build the CLI squirrel status first, then the TUI dashboard rework on the same query layer as a second step within this issue.

Plan

Shared query layer producing, per (volume × destination/node):

  • last successful run + age, colored against that pair's own cadence (a pair is "late" relative to its sync_every, not a global constant);
  • standing states from runs: every failure and refusal becomes a run row or a standing state #157 (refused / alarm / needs-bootstrap);
  • durability: vector coverage for local content origins, verify method, evidence age vs offload_max_evidence_age;
  • offload readiness: bytes/files currently passing the gate per volume ("N GB offloadable now" — the F17 decision-support without running offload --dry-run).

Step 1: squirrel status [volume] renders the grid; exit code reflects worst state (scriptable green/amber/red). Step 2: the TUI dashboard's top panel becomes this grid (replacing the single LAST SYNC column), reusing the same layer; "am I safe?" in one glance per design/ux-principles.md principle 3.

See design/friction-log.md F16/F17/F23.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions