Review: Projects tab: project request and management (v2)
Verdict: APPROVED
Re-review of board item #1821 — Forgejo issue
ldraney/intelligentstaffingsystems#51. Feature type, sprint:B, 5 points. Previous review review-1821-2026-07-17 was NEEDS_REFINEMENT with 8 recommendations. This re-review verifies refinements were applied.Refinement Audit
5 of 5
[BODY] recommendations applied correctly. 1 [DECOMPOSE] acknowledged with deliberate deferral. 2 [SCOPE] items remain as documentation follow-up (tracked in issue body).| # | Tag | Recommendation | Status |
|---|---|---|---|
| 1 | [SCOPE] | Create "projects" user story entry on project-iss | NOT DONE — tracked in issue body Traceability section |
| 2 | [SCOPE] | Create arch-rails note | NOT DONE — acknowledged as general-purpose label in issue body |
| 3 | [BODY] | Fix file targets: controller + index.html.erb to "modify" | FIXED |
| 4 | [BODY] | Add config/routes.rb to file targets | FIXED |
| 5 | [BODY] | Add test file targets | FIXED |
| 6 | [BODY] | Add Lead model has_many to file targets | FIXED |
| 7 | [BODY] | Clarify AC #6 status field | FIXED — now specifies submitted/active/completed |
| 8 | [DECOMPOSE] | 8 AC, ~10 file targets, route to skill-decompose-ticket | ACKNOWLEDGED — Decomposition Note added, deliberately kept as one ticket |
Template Completeness
- [x] Type — Feature
- [x] Lineage
- [x] Repo
- [x] User Story
- [x] Context
- [x] File Targets — now properly split into "Files to modify" and "Files to create" with accurate descriptions
- [x] Feature Flag — None (acceptable; no feature-flags doc in repo)
- [x] Acceptance Criteria — 8 items, all testable
- [x] Test Expectations — 9 items with run command
- [x] Constraints
- [x] Checklist
- [x] Related
- [x] Decomposition Note (extra section, acceptable)
- [x] Traceability (extra section, documents outstanding gaps)
Traceability
- [x] story:projects label present
- [ ] story note MISSING — project-iss user-stories section has no "projects" key. Issue body explicitly tracks this: "needs to be created before or during implementation." Non-blocking for implementation — the user story IS defined in the issue body itself.
- [x] arch:rails label present
- [ ] arch note MISSING — search for arch-rails returned no results. This is a general-purpose label shared across ~15 board items. Issue body acknowledges as "general Rails application component." Non-blocking — this is a platform-wide documentation gap, not specific to this ticket.
- [x] Forgejo issue — ldraney/intelligentstaffingsystems#51, state: open
File Targets
All file targets verified against
main branch:Files to modify (all verified to exist):
- [x]
app/controllers/projects_controller.rb— exists as stub from #49, empty index action. Correctly listed as modify. - [x]
app/views/projects/index.html.erb— exists as stub from #49, empty-state placeholder. Correctly listed as modify. - [x]
config/routes.rb— exists, hasresources :projects, only: %i[index]. Correctly describes adding :new, :create. - [x]
app/models/lead.rb— exists, currently hashas_many :messagesonly. Correctly listed for addinghas_many :project_requests. - [x]
test/controllers/projects_controller_test.rb— exists with 7 tests. Correctly listed as extend.
Files to create (all verified to NOT exist):
- [x]
app/views/projects/new.html.erb— does not exist. Correct. - [x]
app/views/projects/_project_card.html.erb— does not exist. Correct. - [x]
app/models/project_request.rb— does not exist. Correct. Model fields specified (lead_id, business_name, description, target_audience, inspiration, status). - [x]
app/assets/stylesheets/projects.css— does not exist. Correct. - [x]
db/migrate/XXX_create_project_requests.rb— no project migrations exist. Correct. Status column default specified (submitted). - [x]
test/models/project_request_test.rb— does not exist. Correct.
Repo Placement
OK — issue filed on
ldraney/intelligentstaffingsystems, all work targets that repo. No cross-repo impact.Dependencies
- #49 (tab bar restructure, board item 1829) — in validation column. Created stubs this ticket extends. Already merged to main (commit bf5f912). Not a blocker.
- #56 (CRM, Sprint C, board item 1826) — in backlog. Forward dependency: CRM will consume ProjectRequest records. Documented in issue body. Not a blocker.
- #50 (catalog Sprint B, board item 1820) — in todo. Same sprint, independent work. No conflict.
- #52 (communications Sprint B, board item 1822) — in backlog. Same sprint, independent work. No conflict.
- No blockers found. All dependencies documented in issue body.
Acceptance Criteria
8 AC, all testable by an agent:
- AC 1-5 and 7-8: clear, directly testable via endpoint tests and model tests
- AC 6: now includes explicit status field values (submitted, active, completed) — FIXED from previous review. Agent can implement status enum and test card rendering by status.
Test Expectations section includes 9 specific test cases with a run command. Comprehensive coverage.
Blast Radius
- Navigation helper (app/helpers/navigation_helper.rb) — already references :projects tab with path /projects for lead/client/admin roles. No changes needed.
- Tab bar tests (test/controllers/tab_bar_test.rb) — already verify projects tab link. Additive controller changes should not break.
- Existing stub tests (test/controllers/projects_controller_test.rb) — 7 tests for index access and empty state. Extension is additive.
- Lead model — adding has_many :project_requests is additive. No existing code depends on absence of this association.
- docs/user-stories.md — already mentions ProjectRequest (line 156). Consistent with ticket scope.
- No blast radius concerns.
Decomposition Assessment
Two of three 5-minute rule criteria exceeded (same as v1 review):
- >3 file targets across >2 repos — NO (1 repo)
- >5 acceptance criteria — YES (8 AC)
- Estimated agent work >5 minutes — YES (~10 minutes)
Issue body includes explicit Decomposition Note acknowledging this and deliberately keeping as one ticket: "the implementing agent can assess whether to split at implementation time." This is a reasonable override — the work is cohesive (one repo, one domain, one feature) and the natural split would add coordination overhead without improving clarity. Accepted as deliberate deferral.
Recommendation
All [BODY] refinements from review-1821-2026-07-17 were correctly applied. The issue body is complete, accurate, and implementable. Two [SCOPE] items remain as non-blocking follow-up:
[SCOPE]Create user story entry "projects" on project-iss user-stories section — tracked in issue body, can be done during or after implementation.[SCOPE]Create architecture note arch-rails — platform-wide gap affecting ~15 board items, not specific to this ticket. Consider creating as a separate todo.
No action needed on the issue body. Ticket is ready for implementation.