Files
PodTui/tasks/yazi-remake/07-verify-remake.md
Michael Freno 6cd90ad6c0 docs(yazi-remake): mark task 07 blocked, file task 04 blocker for player/search panes
The verification gate found that Task 04's core deliverable was never
implemented: Player and Search pages are not routed through <YaziPaneRow>,
so Player renders a single full-width column and Search's three columns
sit at equal thirds (31/32/31) instead of the target 1:3:3 ratio
(~14/43/43).

- Mark task 07 status BLOCKED with a pointer to the blocker evidence
- Add 07-blocker-task-04-player-search.md documenting the missing
  implementation, evidence (player/search harness frames), failing exit
  criteria, and a fix plan for the task 04 do-over
2026-07-31 19:30:40 -04:00

3.0 KiB

07. Verify the remake — build + diagnostics + harness walk-through

meta: id: yazi-remake-07 feature: yazi-remake priority: P1 depends_on: [yazi-remake-03, yazi-remake-04, yazi-remake-05, yazi-remake-06] tags: [verification, tests-required] status: BLOCKED # see .harness/verification-07.md + tasks/yazi-remake/07-blocker-task-04-player-search.md

objective:

  • Confirm the yazi remake meets every exit criterion via a clean build, zero diagnostics, and a full harness walk-through of every tab and depth.

deliverables:

  • A passing bun run build
  • lens_diagnostics mode=all with zero errors across edited files
  • Harness frames + state proving the parent|current|preview 1:3:3 layout, drill/pop behaviour, tab switching, and status bar across all six tabs

steps:

  • Run bun run build — expect "Build complete"
  • Run lens_diagnostics mode=all severity=error — expect 0 findings across all session-edited files
  • Run the drive harness (scripts/tui-harness.tsx) walk-through:
    • init → confirm no sidebar, 3 columns at 1:3:3, focus on current, bottom tab strip visible
    • Feed: l (depth 0→1, parent fills) → l (1→2) → h (2→1) → h (1→0, parent blanks) ; j/k move current
    • 2 → MyShows: drill show→episodes, parent reflects
    • 3 → Discover: category→results, parent shows categories
    • 6 → Settings: sections→items→editor, parent shows the previous list at each depth
    • 4 → Search: query|results|detail at 1:3:3; type + Enter works
    • 5 → Player: blank|transport|notes at 1:3:3
  • Capture the status bar content (active tab + depth + counts + now-playing + tab strip) from a representative frame

tests:

  • Build: bun run build exits 0 with "Build complete"
  • Diagnostics: lens_diagnostics mode=all → 0 errors
  • Harness (integration/e2e): the walk-through above produces the expected frames & state (parent blank at depth 0, populates on drill, blanks on pop; digits switch tabs; h noop at depth 0)

acceptance_criteria:

  • bun run build passes
  • lens_diagnostics mode=all reports zero errors
  • All six tabs render 3 stable columns at 1:3:3
  • Parent pane is blank at depth 0; drill fills it with the previous-depth list; pop empties it
  • h is a noop at depth 0; l drills; 1-6/[/] switch tabs; j/k move current only
  • No sidebar; focus starts on current; bottom bar shows active tab + depth + counts + tab strip

validation:

  • bun run build 2>&1 | tail -3 → "Build complete"
  • lens_diagnostics mode=all severity=error → "No error issues…"
  • Harness state nav after init shows pane === 0 (current), not -1
  • Harness frames for Feed depth 0/1/2 show the parent slot transition blank→list→list

notes:

  • This is the gate for the whole feature — do not mark done if any criterion fails; open a blocker task instead
  • If the harness reveals a visual regression (e.g. parent collapses, ratios off), file it against the responsible task (02 or 03) rather than patching here
  • Save a representative .harness/last-frame.txt snapshot if a visual reference is useful for future sessions