Review: #42 Turbo Streams live delivery + cable fix (decomp:1792) [re-review]

review-1818-2026-07-06-v2 Review

review ready

Verdict: READY

Re-review of board item #1818. All three issues from review-1818-2026-07-06 (NEEDS_REFINEMENT) have been resolved.

Previous Issues -- Resolution

  • [x] arch-rails note -- now exists at slug arch-rails (architecture note, status: active)
  • [x] db/cable_migrate/ in File Targets -- now listed: "create: Solid Cable migration (generated by bin/rails solid_cable:install:migrations)"
  • [x] Constraints wording -- now says "create docs/messaging.md" with "(file does not exist yet)" clarification

Template Completeness

  • [x] Type -- Feature (child of #12)
  • [x] Lineage -- Parent #12, decomp:1792, dependencies #40 and #6
  • [x] Repo -- ldraney/intelligentstaffingsystems
  • [x] User Story -- As a lead or admin, real-time messages
  • [x] Context -- Cable.yml redis problem stated, first Turbo Streams usage noted
  • [x] File Targets -- 4 targets listed (cable.yml, message.rb, views/messages/, db/cable_migrate/)
  • [x] Feature Flag -- None (appropriate)
  • [x] Acceptance Criteria -- 3 criteria from parent #12 AC 6-7
  • [x] Test Expectations -- broadcast test, turbo frame response test, run command
  • [x] Constraints -- Solid Cable, docs-in-PR (create), CSRF reference
  • [x] Checklist -- 7 items
  • [x] Related -- Project, parent, sibling, blockers, US references

Traceability

  • [x] story:messaging label -- verified in project-iss user-stories section (Epic 4, US-4.1-4.2, role: Lead/Client/Admin)
  • [x] story note verified -- found in project-iss user-stories table
  • [x] arch:rails label -- arch note verified: arch-rails note exists in pal-e-docs (slug: arch-rails, type: architecture, status: active)
  • [x] Forgejo issue -- ldraney/intelligentstaffingsystems#42, state: open

File Targets

  • [x] config/cable.yml -- verified: exists, production adapter IS redis (line 8) with Redis URL (line 9). Matches ticket claim exactly.
  • [x] app/models/message.rb -- does not exist yet. Expected: depends on #40 Message CRUD which creates this file. Dependency documented.
  • [x] app/views/messages/ -- does not exist yet. Same dependency on #40. Documented.
  • [x] db/cable_migrate/ -- does not exist yet. database.yml (lines 35-38) references this path for the cable database. Will be created by solid_cable install. Now correctly listed in File Targets.
  • [x] Gemfile line 33 -- verified: solid_cable gem present. turbo-rails gem present at line 14.
  • [x] docs/security.md CSRF (line 200) -- verified: CSRF section at line 198-202 explicitly mentions Turbo Frame submissions for message create #12.

Repo Placement

OK. Issue filed on ldraney/intelligentstaffingsystems, Repo field matches, all file targets are in this repo. Single-repo ticket.

Dependencies

  • #40 Message CRUD (board item #1817) -- in next_up column. BLOCKER: message.rb and views/messages/ must exist before this ticket can execute. Dependency is documented in the issue.
  • #6 Keycloak OIDC auth (board item #1786) -- in validation column. Further along. Dependency documented.
  • Parent #12 (board item #1792) -- in backlog, marked decomposed. This ticket is Sub-B of the decomposition.
  • Sibling #40 must complete before this ticket. Ordering constraint is clear.

Acceptance Criteria

3 ACs, all verifiable by an agent:
  • AC1: Turbo Frame rendering -- testable via integration test (form submit returns turbo_stream response)
  • AC2: Real-time broadcast -- testable via ActionCable broadcast test
  • AC3: cable.yml adapter check -- simple file content assertion
Test commands are real (rails test). Criteria are clear and complete.

Blast Radius

Low. Redis references exist ONLY in config/cable.yml (lines 8-9). No other config, deployment, or application files reference Redis. The database.yml cable database entry (lines 35-38) is already prepared for solid_cable. No existing Turbo Streams or ActionCable broadcast patterns in the codebase. This is the first Turbo Streams usage -- no existing patterns to break.

Decomposition Assessment

No decomposition needed.
  • 4 file targets in 1 repo -- within limits
  • 3 acceptance criteria -- within limits
  • Estimated agent work: under 5 minutes (cable.yml edit, model annotation, view partial update, migration, tests)
  • 3 points -- appropriately sized

Recommendations

No action needed.