feat(dashboard): add needs-attention status, distinct from testing - #7
Merged
Merged
Conversation
Testing and needs-attention were conflated: both put a finished-enough card in front of the Admiral, but only needs-attention actually blocks on him. A card can now be set to needs-attention with a --reason that renders directly on the card, sorts above every other status, and gets its own loud always-visible section on the page. The fleet auditor's sweep now treats a needs-attention card's age as a finding, since that status - unlike testing - is not supposed to sit unanswered. Existing databases migrate in place; the new column is nullable and existing cards, history, and statuses are untouched.
joliverMI
added a commit
that referenced
this pull request
Aug 19, 2026
Testing and needs-attention were conflated: both put a finished-enough card in front of the Admiral, but only needs-attention actually blocks on him. A card can now be set to needs-attention with a --reason that renders directly on the card, sorts above every other status, and gets its own loud always-visible section on the page. The fleet auditor's sweep now treats a needs-attention card's age as a finding, since that status - unlike testing - is not supposed to sit unanswered. Existing databases migrate in place; the new column is nullable and existing cards, history, and statuses are untouched. Co-authored-by: joliverMI <joliver@sensibletech.biz>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
needs-attention, distinct fromtesting:testingis done and optional to review (nothing lost if he never looks),needs-attentionis genuinely blocking on him (a decision, an answer, a physical action).needs-attentiongets its own column color, its own always-visible section at the very top of the page (above Favorites), sorts first under--sort status, and carries an optional--reasonthat renders directly on the card.fm-dashboard.sh status <id> needs-attention --reason "..."), HTTP API (POST /api/tasks/{id}/status), thefleet-dashboardskill, anddocs/dashboard.mdare all updated together so the status is actually usable end to end.needs-attentioncard age as an asymmetric finding: a long-livedneeds-attentioncard is a discrepancy (he wasn't asked clearly, or the ask never reached him); a long-livedtestingcard is not, by design.PRAGMA table_info+ALTER TABLE); verified against a copy of the live productiondashboard.db(20 existing cards, all intact, nowaiting/pausedcards currently in play).Reclassification of existing Testing cards
The brief noted several cards currently in
testingmay actually belong inneeds-attention. I reviewed the full recorded data (prompt + all note tabs) for all 11 cards currently intestingon the live board and found no card carrying an explicit unresolved question, aneeds-tab ask, or other recorded signal that it is blocked on the Admiral rather than just built-and-optional-to-review - each reads as a self-contained implementation/bug-fix request.One soft, uncertain candidate:
colour-groups-become-override-layers-h9mk("Apply the current overrides that I have from back when it made more sense in spot FX") references override values that may only exist in the Admiral's own head/records rather than in the repo - worth checking whether the implementation used his real values or a placeholder. I did not move it; flagging for firstmate's/his judgment rather than guessing.No cards were moved by this PR - only the mechanism to move them was added. Reclassification (if any) is a live-data change on the running board, not a code change, so it stays out of this diff.
Test plan
tests/fm-dashboard.test.shpasses locally, including newtest_needs_attention_status_carries_reason_and_sorts_firstcoverage (reason persistence, sort-order-first, reason clears on leaving the status).bin/fm-lint.shclean (shellcheck) on the changed shell files.python3 -m py_compileclean on the changed Python files;node --checkclean onapp.js.dashboard.db- existing rows untouched, new column nullable.