Review: feat: collapsible accordion sections sorted by most recently modified

review-1386-2026-06-07 Review

review needs-refinement

Verdict: NEEDS_REFINEMENT

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- Standalone, UX improvement
  • [x] Repo -- ldraney/paldocs
  • [x] User Story -- present, well-formed
  • [x] Context -- present, clear motivation
  • [x] File Targets -- 4 targets listed + exclusions
  • [x] Feature Flag -- "none" (appropriate for CSS/view-only change)
  • [x] Acceptance Criteria -- 7 criteria listed
  • [x] Test Expectations -- 2 test expectations + run command
  • [x] Constraints -- present (HTML details, lightweight, accessible)
  • [x] Checklist -- present
  • [x] Related -- references project-paldocs and issue #13
All required sections present per template-issue-feature.

Traceability

  • [x] story:project-pages label -- present on board item
  • [ ] story note MISSING -- story-paldocs-project-pages is referenced in project-paldocs user-stories section but the note itself does not exist in pal-e-docs. [SCOPE] Create story note story-paldocs-project-pages.
  • [x] arch:rails-hotwire label -- present on board item
  • [ ] arch note MISSING -- no arch-rails-hotwire note found in pal-e-docs. [SCOPE] Create architecture note arch-rails-hotwire for the Stimulus/Turbo component.
  • [x] Forgejo issue -- ldraney/paldocs#25, state: open

File Targets

  • [x] app/views/projects/show.html.erb -- verified: exists, contains flat note-group lists (lines 36-54) and flat repo-list (lines 57-76) that need accordion conversion
  • [x] app/controllers/projects_controller.rb -- verified: exists, line 8 sorts by title (sort_by(&:title).group_by(&:note_type)), needs changing to updated_at: :desc
  • [x] app/assets/stylesheets/ -- verified: directory exists, application.css present, no existing accordion styles
  • [x] app/javascript/controllers/ -- verified: directory exists, Stimulus fully configured via importmap with eager loading. Existing controllers: hello_controller.js, kanban_controller.js. New accordion controller would register automatically.

Repo Placement

OK. Issue filed on ldraney/paldocs, all file targets are in the paldocs Rails app. Single-repo change.

Dependencies

  • BLOCKER: Issue #13 (feat: add Postgres trigger to bump projects.updated_at) is still open and in_progress on the board (item #1344). The issue body claims "The trigger from #13 ensures projects.updated_at stays fresh. Sort order is ready." However, the migration exists at db/migrate/20260606120000_add_bump_project_updated_at_trigger.rb but the issue is not yet closed/merged. The accordion sorting depends on notes.updated_at (not projects.updated_at), so the core accordion feature can proceed, but the Related section's claim about #13 being done is inaccurate.
  • No other board items block this work.
  • Item #1385 (ldraney/paldocs#24) shares the story:project-pages label but has arch:rails-views -- no direct conflict.

Acceptance Criteria

  • [x] AC 1-6: Verifiable -- accordion rendering, counts, sort order, and "show all" link can all be tested in integration tests
  • [ ] AC 7: "Accordion state persists during the page session (doesn't collapse on Turbo navigation)" -- this is testable but requires Turbo-aware system testing (Capybara + JS driver). The spec directory has no system/feature specs yet, only rails_helper.rb and spec_helper.rb. [BODY] Clarify whether AC 7 requires a system test or just a Stimulus implementation note (e.g., Turbo permanent attribute).

Blast Radius

Low. The accordion change is isolated to the project show page. The flat-list pattern (note-group, note-list, repo-list CSS classes) is used only in projects/show.html.erb. No other views share these class names. No downstream consumers affected.

Decomposition Assessment

  • 4 file targets in 1 repo -- OK
  • 7 acceptance criteria -- borderline but manageable since they are tightly related (all accordion behavior)
  • Estimated agent work: ~3-4 minutes (view template + controller query change + CSS + optional Stimulus controller)
  • No decomposition needed.

Recommendations

  • [SCOPE] Create story note story-paldocs-project-pages -- referenced in project-paldocs user-stories section but note does not exist
  • [SCOPE] Create architecture note arch-rails-hotwire for the Hotwire/Stimulus/Turbo component
  • [BODY] Clarify AC 7 (Turbo persistence): specify implementation approach (e.g., data-turbo-permanent attribute on accordion containers) and whether a system test is expected given no existing system test infrastructure
  • [BODY] Update dependency note: issue #13 is still in_progress, not complete. The accordion sorting uses notes.updated_at (which already exists in the DB) so the feature is not actually blocked, but the Related section should reflect accurate status