Dashboard: the landing page is the work waiting for you, in lanes #416
No reviewers
Labels
No labels
bug
contract
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
iterative-works/iw-cli!416
Loading…
Reference in a new issue
No description provided.
Delete branch "dashboard-control-plane"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The card (frozen)
Goal. I open the dashboard and the first thing I see is every worktree that wants me, across
all my projects, each naming what it wants. I work down that one list until it is empty, and I
never open a project to find out whether there is work inside it.
Fit test. I land on
http://localhost:9876/cold, after a break, and work my way througheverything waiting — without visiting a project page to discover work.
Fit passed 2026-08-12, on Michal's read of the running board.
At definition the same work cost ten project pages carrying 51 worktree cards — 2.4 cards
read per act, plus the overview to learn which ten to open. It is now one page.
What ships
GET /is the work waiting on you. One board across every project, read throughDashboardService.pendingActFor— the same resolution the per-project counts count, so therows and the counts cannot disagree. A test pins that equality.
row.
PendingAct.kindnames the lane,PendingAct.detailcarries what the kind drops(
#415,2 of 5), andPendingAct.rankputs closing-out behind the live work and theundecided behind everything. Recency orders the rest, and the lanes wrap rather than scroll
sideways.
whole card clicks through to the worktree.
needs_attention: true, oractivity: waitingwith a published status. Twelve worktrees were invisible to every count inthe dashboard because their workflow only ever published the second —
MEDECA-407among them.An explicit
falsestill withdraws the claim; absence leaves the activity to speak. 20 actsbecame 33.
GET /projectsis the project list, unchanged, with the SSH-host form. Every breadcrumbthat reached it still reaches it. Both pages reconcile with disk on load.
Two card amendments, approved at the fit reads
The card stayed frozen; both amendments are recorded in the tracker with Michal's words.
case — the claim rule above. Still one rule in
PendingAct.resolve, no second rule for theboard.
by lanes of cards. Grouping by project stays refused; the amendment groups by act.
Review
project-management/efforts/dashboard-control-plane/slices/05-the-work-not-the-projects/review-slice-2026-08-12.mdSeven skills, one round: 3 critical, 8 warnings, 11 suggestions. All three criticals fixed
in-loop — a lane whose rank depended on which card was newest,
/projectslosing the diskreconciliation, and the pull-request lane having no test through
WaitingWork.all.Gate: dashboard 241 · dashboard itest 240 · core 186 · E2E 176 BATS tests, 0 failures.
CI run 384 green.
Correction: the E2E gate was reported green in the first version of this body before it
was verified.
test/dashboard-dev-mode.batsstill assertedhref="/"on the not-foundpage, whose breadcrumb this slice moved to
/projects; CI caught it and it is fixed ine6fd8ea.Follow-ups (deferred, in the effort map)
PendingAct.rankas a lane type carrying name and rank together, so kind and rank cannotdrift apart by convention (the fixed critical is guarded by a test, not by the types).
WaitingWork/WaitingLaneout ofpresentation.viewsintoapplication/, withProjectSummary— they call back intoDashboardServiceand hide file I/O.PendingActPresentationinstead of wideningWorktreeCardRenderer.CaskServeras a god object (carried debt).GET /now discloses a cross-project inventory inone unauthenticated request. Pre-existing gap, widened surface — effort-level.
tell-the-projects-apart— project chips to filter by, and a colour per project instead ofone orange for everything. Named by Michal at the close read; the next slice.
liveness-is-not-a-claim— the board is accurate when you return from a break and stalewhile you work, because a review state is a deliberate signal and an agent running is a
mechanical one. Lifecycle hooks in their own channel, or running the agents under our own
system.
🤖 Generated with Claude Code