Luci · Read brief first.
Luci
Read brief first.
Luci
Brief clear. Read full spec next + invoke dev-loop (mandatory before edits).
Luci
Brief is exhaustive worker brief: implement + tests green + report. No commit/push/restart (controller handles). Tier 2. Read target files now.
Luci
Now app.py target sections + test harness.
Luci
Find priority rank + ALLOWED_STATUS_TRANSITIONS. Search.
Luci
No priority rank constant. Check how `order_by="priority"` sorts in models.
Luci
Priority: critical=0,high=1,medium=2,low=3. Now ticket.html sections.
Luci
Find ticket detail route for Bug 3 wiring.
Luci
Read test harness patterns.
Luci
Check existing board_v2 tests touching phase lanes / quick actions / humanise to avoid regressions.
Luci
rtk mangling output. Get class names directly.
Luci
Use Grep tool instead.
Luci
Read tests that may interact with my changes.
Luci
Found regression risk: existing tests assert waiting lane exists. Read remaining affected tests.
Luci
Run baseline before changes.
Luci
Find ticket.html comment composer anchor for v2AnswerTicket.
Luci
Have full context. Start app.py edits. First add module-level priority rank + named-lane keys near phase lanes, and trim the waiting lane.
Luci
Now the quick-action map + comment block (Feature B1).
Luci
Now humaniser: acronyms + parked handling + truncation helper.
Luci
Add truncation helper after `_v2_humanise_pending_state`.
Luci
Now `_v2_enrich_ticket`: pending_human/full + the `__answer__`-aware quick actions.
Luci
Now Bug 13 future-snooze filter in the `kept` loop.
Luci
Now B3 needs-you sort + the lane catch-all in `_board_v2_context`.
Luci
Now Bug 4: search default limit in `api_list_tickets`.
Luci
Now Bug 3: pass `pending_human` to ticket.html.
Luci
app.py edits done. Sanity-check syntax.
Luci
Rewrite card partial: hoist style out (Bug 1), `|title` (Bug 9), liveness dot (Bug 2), title full text (Bug 6), action buttons (B1).
Luci
Now panel: grid uses var (B2), header wraps (Bug 12).
Luci
Insert hoisted card CSS + new button variants + liveness dot + B2 collapse rules before panel's `</style>`.
Luci
Now panel markup: compute grid var + collapse classes on open columns.
Luci
Now board_v2.html — Bug 10 legend.
Luci
Bug 11: mobile default segment picks first non-empty (prefer needs_you).
Luci
Feature B1: `v2AnswerTicket` JS, next to `v2PostStatus`.
Luci
Bug 11 overflow affordance: edge fade on mobile switcher (panel CSS).
Luci
Now ticket.html — Bug 3: route hero Next Action through humaniser.
Luci
Bug 7: remove controller dropdown from header (relocate into Advanced next).
Luci
Re-read ticket.html region for Bug 8 + B1 lift (line numbers shifted).
Luci
Bug 8 (remove dup runtime-status) + B1 (lift guidance above Advanced fold). Replace the runtime-status section with the lifted guidance section.
Luci
Step 2: remove the now-duplicated guidance block from inside the Runtime console. Read current region.
Luci
Add `?focus=comment` handler in ticket.html. Read comment composer region.
Luci
All implementation edits done. Run tests to see breaks.
Luci
Expected 8 failures from design change. Read TestMC4779CardChipCap to fix the `</style>` split.
Luci
Fix the two card-chip tests (card no longer has `<style>`), then update the 4 lane tests + 2 action-label tests to the new design.
Luci
Now the 4 lane tests:
Luci
Now the 2 action-label tests (Resume now valid on waiting; in-flight buttons split):
Luci
196 green. Now write the new regression test file (brief's 7 cases).
Luci
Remove the stray empty test that references `self.conn` in a DB-less class.
Luci
New file 19 passed. Run the full brief command + new file together.
Luci
215 green. My ticket.html edits could affect other suites. Search tests for affected anchors.
Luci
Read test_ticket_advanced_disclosure.py — it asserts `ticket-runtime-status-human` (which I removed).
Luci
Run advanced-disclosure suite to confirm the expected Bug 8 conflict.
Luci
Confirmed: only that one test fails — it guarded the section Bug 8 mandates removing. Update it to the new read-only surfaces (hero Runtime + mobile bar).
Luci
9 passed. Run other plausibly-affected suites (pending CTA, waiting lifecycle, board counts, api list).
Luci
Triage. Read dark-theme test + check if inbox-count/4318 are pre-existing.
Luci
Card CSS moved to panel — update 2 dark-theme tests. First check if inbox-count/4318 failures pre-exist (stash my tracked edits, run, restore).
Luci
Pre-existing failures (fail on baseline too) — not mine. Only the 2 dark-theme tests are from my hoist. Update them to point at the panel (where card CSS now lives).
Luci
Run the required brief command + new file — the contractual gate.
Luci
Required gate green. Confirm board_v2.py count vs the 171 baseline.
Luci
All green: board_v2=172 (+1), regressions=24. Compile all 4 templates to catch any Jinja syntax error.
Luci
Smoke-render the ticket route (most surgery) to catch runtime errors. Use the in-memory harness.
Luci
500 is a smoke-harness schema gap (`ticket_attempts` table absent), not a template bug. Stub the data-access fns and retry to isolate template rendering.
Luci
Verify Bug 3 hero text (no double-waiting) renders.
Luci
Bug 3 confirmed. Check for other tests asserting on the `/api/v1/tickets` limit I changed.
Luci
Search hits are in already-passing board_v2 search tests (more results only helps). Final consolidated run of all touched/added suites.
Luci
All 289 green. Final changed-files list.
Luci
Done. All work in worktree, no commit/push/restart (controller owns deploy).
## MC-4795 board overhaul round 2 — complete
**Test gate (required command): GREEN**
- `test_board_v2.py` = **172** passed (baseline 171; +1 from test swap, no behavior regression)
- `test_mc_board_regressions.py` = **24** passed
- New `tests/test_mc4795_board_round2.py` = **19** passed (7 brief cases + edge coverage)
- All touched suites consolidated = **289 passed, 44 subtests**
- Templates compile + ticket route smoke-renders 200 across all guidance branches.
**Changed files**
- `app.py` — Bug 5 (drop waiting lane + "Other" catch-all), Bug 6 (ess/rsvp acronyms, parked* skip, truncation helper, pending_human_full), Feature B1 (quick-action map + `__answer__` sentinel filter), Bug 13 (future-snooze drop), B3 (needs-you priority-then-age), Bug 4 (search limit 200), Bug 3 (ticket route pending_human).
- `templates/partials/board_v2_card.html` — Bug 1 (style hoisted out, markup-only), Bug 9 (`|title`), Bug 2 (liveness dot), Bug 6 (full-text title), B1 (answer/transition buttons).
- `templates/partials/board_v2_panel.html` — Bug 1 (receives hoisted card CSS), B2 (empty-column collapse + grid var + new btn variants + dot CSS), Bug 12 (header wrap), Bug 11 (switcher fade).
- `templates/board_v2.html` — Bug 10 (legend incl Blocked, drop Waiting), Bug 11 (non-empty default segment), B1 (`v2AnswerTicket`).
- `templates/ticket.html` — Bug 3 (humanised hero), Bug 7 (controller dropdown → Advanced), Bug 8 (drop dup runtime-status), B1 (lift guidance above fold + `?focus=comment` handler).
- Tests updated for approved design changes: `test_board_v2.py` (lane/action tests), `test_board_v2_dark_theme.py` (card CSS now in panel), `test_ticket_advanced_disclosure.py` (Bug 8 surviving surfaces).
**Decisions (technical calls, mine)**
1. **Waiting-lane removal risked orphaning** Luci-handled `waiting` tickets (phase_group "waiting" → no lane → counted-but-invisible). Made **"Other" a catch-all** so lane-sum == active_count. Added an assertion guarding that invariant.
2. **B1 overturns old MC-4597** "no in-flight buttons / no Resume" rule → replaced 2 obsolete `TestActionLabels` tests with new ones matching the Elmar-approved set.
3. **B2 excludes the Done column** from auto-collapse — collapsing empty-today Done would hide the "View all done" history toggle. Collapse scoped to desktop **>1100px** only (mobile/tablet untouched); empty open columns render as a vertical-text rail.
4. **"Not needed" (cancelled) stays immediate-POST**, no confirm dialog — no existing v2 confirm pattern and the existing test pins the exact onclick. Matches the legacy no-undo model.
5. **Bug 11 affordance** = right-edge `mask-image` fade (brief-endorsed, simplest non-destructive).
**Note — pre-existing failures (NOT MC-4795):** `test_board_inbox_count.py` (3) and `test_mc4318_pending_view.py` (8) fail on the **untouched baseline** too (legacy v1-board tab tests). Left as-is.