Review: Rails 8 app scaffold + Dockerfile + CI

review-1517-2026-06-18 Review

review ready

Verdict: READY

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- Foundation ticket, no blockers
  • [x] Repo -- ldraney/my-vibes-world
  • [x] User Story -- present, well-formed
  • [x] Context -- present, explains motivation
  • [x] File Targets -- present, lists directories and files to create
  • [x] Feature Flag -- No (greenfield scaffold, correct)
  • [x] Acceptance Criteria -- 9 items, all verifiable
  • [x] Test Expectations -- 6 items
  • [x] Constraints -- present, clear boundaries
  • [x] Checklist -- present
  • [x] Related -- present, references project and arch note

Traceability

  • [x] story:create-vibe label -- "Add a new vibe page with a Rails route, controller, and view, push to main, live in minutes"
  • [x] story note verified -- found in project-my-vibes-world user-stories section (key: create-vibe)
  • [x] arch:vibe-pages label -- Vibe Pages architecture component
  • [x] arch note verified -- arch-vibe-pages note exists (id: 2029), matches Rails 8 stack
  • [x] Forgejo issue -- ldraney/my-vibes-world#10, state: open

File Targets

All targets are net-new (greenfield scaffold). Repo currently contains only docs, README, and .gitignore. No existing file conflicts.
  • [x] Gemfile, Gemfile.lock -- to be created by rails new
  • [x] config/ (routes.rb, database.yml, importmap.rb, puma.rb) -- to be created by rails new
  • [x] app/ (controllers, views, layouts, javascript, assets) -- to be created by rails new
  • [x] db/ (schema) -- to be created by rails new
  • [x] Dockerfile -- to be created manually, Harbor base image specified
  • [x] .woodpecker.yaml -- to be created manually
  • [x] bin/ (rails, setup, dev) -- to be created by rails new

Repo Placement

OK. Issue filed on ldraney/my-vibes-world, all work targets the same repo. Single-repo ticket.

Dependencies

No blockers (confirmed). This is the foundation ticket -- all other vibe page tickets (#1518 Drake vibe, #1511, #1512 other vibes) and infra ticket #1519 (port 80 to 3000) depend on this scaffold. Infra tickets #1508 and #1509 (in_progress) are parallel work on DNS/service registration, not blocking this ticket.

Acceptance Criteria

9 ACs, all agent-verifiable:
  • Gemfile contents: grep check
  • Server boots on 3000: bin/rails server test
  • Root route: curl localhost:3000
  • Application layout: file content check for Turbo/Stimulus includes
  • importmap.rb pins: file content check for Tone.js, @hotwired/*
  • Propshaft: boot test confirms asset serving
  • Dockerfile: docker build test with specified base image
  • .woodpecker.yaml: file content check for build/push stages
  • .gitignore: file content check for Rails conventions

Blast Radius

Greenfield scaffold -- no existing code to break. No sibling services affected. Downstream vibe page tickets assume this scaffold's conventions (Rails routes, Stimulus controllers, importmap). The scaffold sets the foundation for all subsequent work.

Decomposition Assessment

No decomposition needed. rails new generates the entire scaffold atomically. All 9 ACs are within a single repo. Dockerfile and .woodpecker.yaml are small additions on top of the generated scaffold. A single agent pass can execute this in one shot. 5 points is appropriate for the scope.

Recommendation

No action needed.