[Bugfix #931] dashboard: map dev-approval gate to attention-kind--dev#935
Merged
Conversation
GATE_LABELS maps dev-approval -> 'dev review' (overview.ts), but gateKindClass in NeedsAttentionList.tsx had no 'dev review' case, so PIR dev-approval gate rows fell through to default 'attention-kind--plan' and rendered with the plan color. Add the 'dev review' case + a .attention-kind--dev CSS rule (grouped with the urgent pre-PR error gates, matching spec/plan). Remove the dead 'code review' case and its orphaned CSS rule (no GATE_LABELS value maps to it).
Asserts a dev-approval-pending builder yields kindClass 'attention-kind--dev'. Fails pre-fix (default 'attention-kind--plan').
Codex CMAP review (REQUEST_CHANGES) correctly noted that mapping .attention-kind--dev to var(--status-error) left dev rows visually identical to plan rows (both red) — so the user-visible symptom of #931 ('renders with the plan color instead of their own') was not actually resolved by the class rename alone. Use var(--status-implementing) (orange) instead: dev-approval is PIR's gate at the end of the implement phase, so the orange 'implementing' color is semantically apt and makes dev rows distinct from the red spec/plan design gates and the yellow PR/verify review waits (3-tier design -> implement -> review progression). Strengthen the regression test to assert dev never maps to the plan class.
f64b44a to
d9f81fd
Compare
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
Fixes #931
PIR
dev-approvalgate rows in the dashboard's Needs Attention list rendered with the plan gate's color instead of their own, becausegateKindClasshad no case for thedev reviewlabel.Root Cause
GATE_LABELSinpackages/codev/src/agent-farm/servers/overview.tsmapsdev-approval → 'dev review', and the overview server stamps that label ontoOverviewBuilder.blocked. ButgateKindClassinpackages/dashboard/src/components/NeedsAttentionList.tsxhad nocase 'dev review', so the label fell through todefault: 'attention-kind--plan'— every PIR dev-approval row got the plan styling.The switch also carried a dead
case 'code review'returningattention-kind--code-review: noGATE_LABELSvalue is'code review'(verified by grep across the repo), so that case (and its CSS rule) matched nothing.Fix
NeedsAttentionList.tsx: replace the deadcase 'code review'withcase 'dev review': return 'attention-kind--dev';.index.css: add.attention-kind--devusingvar(--status-implementing)(orange) and remove the orphaned.attention-kind--code-reviewrule + its stale comment reference.dev-approvalis PIR's gate at the end of the implement phase (the human reviews the running worktree before the PR exists). Orange "implementing" is semantically apt and makes dev rows visually distinct from the red spec/plan design gates and the yellow PR/verify review waits — a 3-tier design → implement → review progression. (An earlier revision used--status-error, which left dev rows the same red as plan rows; the CMAP review correctly flagged that as not actually resolving the visible symptom.)Dashboard-only. No behavior change beyond the row color.
Test Plan
NeedsAttentionList.test.tsx): adev-approval-pending builder yieldskindClass === 'attention-kind--dev'and!== 'attention-kind--plan'. Fails pre-fix (would beattention-kind--plan).NeedsAttentionListsuite passes (14/14).tsc --noEmit -p tsconfig.app.json).porch checkbuild + tests pass.Net Diff
~45 LOC across 3 files — well under the 300 BUGFIX threshold.
CMAP Review (3-way)
--devmapped tovar(--status-error), identical to plan, so the visible symptom wasn't resolved. Addressed by switching tovar(--status-implementing)+ strengthening the test; re-review flipped to APPROVE.Path not in workspace(consult wrote the diff to/tmp/..., outside Gemini's sandbox~/.gemini/tmp/bugfix-931). Environmental consult/Gemini-lane issue, not a real review — see note below.Notes for the architect (out of scope, not touched)
__tests__/scrollController.test.ts > … > warns on unexpected scroll-to-top (Issue #630)fails consistently (3/3 runs) on this branch and is unrelated to dashboard: gateKindClass missing 'dev review' case — dev-approval rows fall back to --plan styling #931 (terminal scroll behavior; imports nothing from the attention-row path — looks like a stale test where the prod code no longer emits that warning). Left untouched per the BUGFIX "unrelated failures are out of scope" rule. It's outside porch'stestscheck scope (which passes). Worth a separate issue./tmp/..., outside Gemini's allowed workspace. Reproduced across multiple runs. This is the consult tooling, not this PR.