Wave target: @jhizzard/termdeck@1.3.0 -> 1.4.0 + @jhizzard/termdeck-stack@1.3.0 -> 1.4.0
Pattern: 3+1+1 with Codex auditor; ~65 min wall-clock from inject to FINAL-VERDICT GREEN
Tests: 375/375 root npm test green (+80 since v1.3.0's 295)
Bundles Brad's 2026-05-12 + 2026-05-13 v2 dashboard feedback (project-filter
chips + always-visible orchestrator panel + dead-panel cleanup) and Joshua's
2026-05-16 layout asks. meta.role is a new optional POST /api/sessions field
(additive, non-breaking) -- minor bump.
Lanes:
- T1 (client): project-filter chips (auto-discovered, live counts, localStorage)
+ ORCH-pin row (meta.role-routed, gold border + ORCH badge) + tile auto-removal
on panel_exited + status-aware api() 410-trap + born-hidden auto-switch guard
+ Path A layouts (1x2/2x5/5x2/4x3/3x4/4x4) + global font-size stepper.
- T2 (server): meta.role field (whitelist-validated, SQLite-persisted with
PRAGMA-guarded migration, status_broadcast flow-through) + exited-session
filtering (?includeExited legacy restore) + 410 Gone on dead-panel inject
+ panel_exited WS frame + per-adapter idle/parked detection verified (Sprint 60).
- T3 (verification): sprint-65-acceptance.test.js (11/11, Brad 18-panel repro)
+ ACCEPTANCE-CHECKLIST.md + 2A-OPENS-INVISIBLE-ANALYSIS.md + periodic-capture
date-rot fix (pre-existing Sprint-64 fixture, not a Sprint 65 regression).
- T4-CODEX: 2 AUDIT-REDs (role-in-summary scope; SQLite-install migration gap)
+ multiple AUDIT-CONCERNs, all resolved pre-FIX-LANDED; FINAL-VERDICT GREEN.
Born-hidden catch: the new chip filter would have manufactured a fresh
"opens invisible" (panel spawned under an active filter born display:none) --
caught by T3 hypothesis analysis, fixed in-sprint via chip auto-switch.
Deferred to Sprint 66 (docs/BACKLOG.md D.5): draggable grid resize; 2a
hypotheses A/C/D pending Brad's repro; meta.role-in-session_summary;
legacy orch layout gate/retire; repo-root tests/ glob consolidation.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>