You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(admin): schedule and spend on the graph, and the HTML honesty carry-through (issue #175)
The third insights slice: the facts the graph computed and never said.
- Trigger nodes gain cost (the typed spend foldTriggerCosts maps onto
the node id) -- a node FACT beside runs/lastOutcome, no new edge kind,
no new flag, the closed vocabularies pinned unchanged. The assemblers
wire it with one extra file read and two pure folds over the scan
they already paid for; the GRAPH view's entry-plus-r-only refresh
policy is untouched and the real-poll pin proves it.
- Cron rows finally render next/overdue: next as a countdown against
the model's own generatedAt (never a live clock; a stale model shows
its stale countdown honestly), overdue in the error color. Both in
the TUI and in /dispatch graph text.
- Spend renders only through fmtCost/styler.fmtCost, so a plan-covered
trigger reads plan:<id> on the graph too, never $0.00.
- graph.html: normalizeModel carries meta.chainRefusals,
meta.injectedUnreachable and observed-edge lastEndedAt; the legend
states the two counters the text and TUI always stated; an observed
wire's label says how fresh it is beside its count. Node cost is
deliberately NOT allowlisted there: the page cannot use the from
clause, and a hand-copied money formatter is a parity liability the
insights artifact avoids by taking the real formatter.
Specs in the same PR: REQ-TOPOLOGY-GRAPH gains (h);
REQ-GRAPH-HTML-EXPORT amended (honesty counters, edge recency);
DES-GRAPH-EDGE-DERIVATION and DES-ADMIN-VIA-PI-EXTENSION amended;
REQ-COST-ANALYTICS UNCHANGED, checked; DES-COST-FOLD-BY-SCAN
UNCHANGED, checked. docs/graph.md updated.
Suite green in the CI posture: 2197 tests, 0 skipped, live Valkey.
Signed-off-by: Rob Boerman <robboerman@live.nl>
0 commit comments