Review: Crew tab: admin oversight of team members and their daily lists (re-review)

review-1339-2026-06-06-v2 Review

review ready

Verdict: READY

Re-review of board item #1339 following NEEDS_REFINEMENT verdict in review-1339-2026-06-06. The issue body has been updated to address both [BODY] recommendations from the first review.

First Review Findings Resolved

  • [x] [BODY] Data model gap — AC #2 (per-member Today queue) replaced with member profile page (name, role, active status, Keycloak username). AC #5 (completion counts) replaced with active/inactive status indicator. Context section now explicitly states WorkQueueItem has no crew member column. Out of Scope explicitly lists per-member queue filtering and per-member completion counts. Resolved.
  • [x] [BODY] Missing role_access_spec.rbspec/requests/role_access_spec.rb now listed under Files to modify. Resolved.

Template Completeness

  • [x] Type
  • [x] Lineage
  • [x] Repo
  • [x] User Story
  • [x] Context
  • [x] File Targets
  • [x] Acceptance Criteria
  • [x] Test Expectations
  • [x] Constraints
  • [x] Out of Scope
  • [x] Checklist
  • [x] Related

Traceability

  • [x] story:auth label — present on board item
  • [ ] story note MISSING — no "auth" entry in project-landscaping-assistant user-stories table. [SCOPE] Create user story entry for "auth" on project-landscaping-assistant. Known gap, deferred per first review.
  • [x] arch:rails-app label — present on board item
  • [ ] arch note MISSING — no arch-rails-app note found in pal-e-docs. [SCOPE] Create architecture note arch-rails-app. Known gap, deferred per first review.
  • [x] Forgejo issue — ldraney/landscaping-assistant#117, open

File Targets

Files to modify (all verified to exist):
  • [x] app/controllers/crew_controller.rb — verified: placeholder controller with require_role :admin, :super_admin and empty index action
  • [x] app/views/crew/index.html.erb — verified: placeholder view with "coming soon" text
  • [x] config/routes.rb — verified: resources :crew, only: [:index] at line 37, needs :show added
  • [x] app/assets/stylesheets/application.css — verified: exists (29k)
  • [x] spec/requests/role_access_spec.rb — verified: exists (207 lines), has crew index tests for all roles, needs crew show route tests added. NEW in this revision — addresses first review finding.
Files to create (all verified to not yet exist):
  • [x] db/migrate/YYYYMMDD_create_crew_members.rb — does not exist yet, correct
  • [x] app/models/crew_member.rb — does not exist yet, correct
  • [x] app/views/crew/show.html.erb — does not exist yet, correct
  • [x] spec/requests/crew_spec.rb — exists (60 lines from PR #136), ticket says "expand existing specs", correct
  • [x] spec/models/crew_member_spec.rb — does not exist yet, correct
  • [x] lib/tasks/crew.rake — does not exist yet, correct. Pattern matches existing feature_flags.rake with find_or_create_by! idiom.

Repo Placement

OK. Issue filed on ldraney/landscaping-assistant, all file targets are in the same repo. Single-repo change.

Dependencies

  • PR #136 / board item #1354 (done) — created the Crew tab skeleton. Dependency satisfied.
  • Board item #1317 / #107 (done) — parent issue for role-based tab visibility. Dependency satisfied.
  • Board item #1337 / #115 (done) — Phase 1 Keycloak login. Dependency satisfied.
  • Board item #1363 / #137 (in_progress) — Person icon views. Sibling phase:2 work, no blocking dependency.
  • No undocumented blocking dependencies found.

Acceptance Criteria

All 5 ACs are now self-contained and achievable without changes to WorkQueueItem:
  • [x] "Crew index shows list of all active crew members with their name and role badge" — testable, depends on CrewMember model (will be created)
  • [x] "Clicking a crew member navigates to their profile page (name, role, active status, Keycloak username)" — testable, no dependency on WorkQueueItem. Revised from first review — was "Today queue", now "profile page".
  • [x] "Admin and super_admin can access Crew tab; all other roles get 404" — testable, role gating already in place
  • [x] "CrewMember model with validations and crew:sync rake task" — testable
  • [x] "Crew member list shows active/inactive status indicator" — testable, depends only on CrewMember.active boolean. Revised from first review — was "completion count", now "active/inactive indicator".

Blast Radius

  • Adding CrewMember model is isolated — no existing code references crew_members table.
  • Adding :show to crew routes requires updating role_access_spec.rb (now in Files to modify).
  • Nav layout in app/views/layouts/application.html.erb (lines 85-86) already handles crew tab visibility, no changes needed.
  • No WorkQueueItem changes — blast radius is minimal compared to first review version.

Decomposition Assessment

6 files to create + 5 to modify = 11 file targets. 5 acceptance criteria. Single repo. Estimated agent work: ~7-8 minutes. The show page is now simpler (profile display vs. per-member queue), reducing complexity from the first review estimate. Borderline but cohesive — no decomposition needed.

Recommendations

  • [SCOPE] (deferred) Create user story entry for "auth" on project-landscaping-assistant user-stories section.
  • [SCOPE] (deferred) Create architecture note arch-rails-app.
No new [BODY] or [LABEL] recommendations. All actionable issues from the first review have been resolved.