Review: Project status schema + paldocs sprint planning interface
Verdict: NEEDS_REFINEMENT
Template Completeness
- [x] Type -- Feature
- [x] Lineage -- story: sprint-orchestration | arch: docs
- [x] Repo -- claude-custom, pal-e-docs, paldocs
- [x] User Story -- present, well-written
- [x] Context -- clear motivation and background
- [x] File Targets -- 9 targets across 3 repos, tabular format
- [x] Feature Flag -- "None" with rationale (schema change)
- [x] Acceptance Criteria -- 6 criteria
- [x] Test Expectations -- present for both repos
- [x] Constraints -- 3 constraints documented
- [x] Checklist -- 7 items
- [x] Related -- 4 related issues + note-conventions reference
All required feature template sections are present.
Traceability
- [x] story:sprint-orchestration label -- present on board item
- [ ] story note MISSING -- project-claude-custom user-stories section only contains "operational-reference". No "sprint-orchestration" entry exists. [SCOPE] Create user story entry "sprint-orchestration" on project-claude-custom user-stories section.
- [x] arch:docs label -- present on board item
- [ ] arch note MISSING -- searched pal-e-docs for "arch-docs" and "arch-docs-claude-custom" -- no matching note found. [SCOPE] Create architecture note arch-docs for the docs component of claude-custom.
- [x] Forgejo issue -- https://forgejo.tail5b443a.ts.net/ldraney/claude-custom/issues/283, open
File Targets
- [x] ~/pal-e-docs/src/pal_e_docs/models.py -- verified: Project class at line 56, confirmed NO status column exists. Change is valid.
- [x] ~/pal-e-docs/alembic/versions/ -- verified: directory exists with 4 existing migrations. New migration is valid.
- [x] ~/pal-e-docs/src/pal_e_docs/schemas.py -- verified: ProjectOut (line 49), ProjectCreate, ProjectUpdate all lack status field. Change is valid.
- [x] ~/pal-e-docs/src/pal_e_docs/routes/projects.py -- verified: list_projects (line 35) has no status filtering. Change is valid.
- [x] ~/paldocs/app/models/project.rb -- verified: exists, no status scope. Change is valid.
- [x] ~/paldocs/app/controllers/ -- verified: directory exists with projects_controller.rb. Sprint controller would be new.
- [x] ~/paldocs/db/ci_schema.sql -- verified: projects table (line 5) has no status column. Change is valid.
- [x] docs/operations.md -- verified: Sprint Orchestration section exists at line 59. Already mentions paldocs as target interface. Update is valid.
- [x] docs/mcp-servers.md -- verified: exists. Adding project status field documentation is valid.
All 9 file targets verified. All paths exist and the described changes are accurate.
Repo Placement
Issue filed on claude-custom (tracking repo) -- correct, since changes span 3 repos: pal-e-docs (schema/API), paldocs (Rails UI), claude-custom (docs). However, changes to pal-e-docs and paldocs will need separate PRs in those repos. The issue does not explicitly document this multi-repo PR strategy. This is acceptable for a tracking issue but will need decomposition into per-repo sub-tickets.
Dependencies
- claude-custom#277 (stale board cleanup) -- documented as related. Blocked on knowing which projects are relevant, which this ticket enables. Correct dependency.
- claude-custom#280 (Sprint SOP) -- documented as related. Sprint planning interface is part of the SOP. Correct dependency.
- claude-custom#281 (Dispatch wave 1) -- documented as related. Needs the interface to stage waves. Correct dependency.
- #274 (Ollama restore, in_progress) -- no direct dependency.
- #275 (dictionary, in_progress) -- no direct dependency.
- Execution order: pal-e-docs schema change MUST land before paldocs can consume the status column. This sequencing is implied by the constraints but not explicitly stated as a dependency chain.
Acceptance Criteria
- AC1: "projects table has status column" -- testable via migration + model inspection
- AC2: "list_projects API defaults to active" -- testable via API call
- AC3: "Dead projects marked as archived" -- requires human review (constraint #2 says "needs Lucas's review"). Not automatable by agent alone.
- AC4: "Paldocs shows only active projects in sprint planning views" -- testable via controller spec + UI
- AC5: "Paldocs can display boards from multiple selected projects" -- significant new UI feature, multiple views/controllers
- AC6: "claude-custom docs updated" -- testable via file content check
6 acceptance criteria. AC3 requires human decision (which projects to archive). AC5 is a substantial UI feature that alone could be a separate ticket.
Blast Radius
- pal-e-docs MCP tools (list_projects) will inherit the status filter -- all MCP consumers will only see active projects by default. This is the desired behavior but is not called out in the AC.
- The Repo model already has a status column (line 94 of models.py) with active/archived -- the Project status column follows the same pattern, good consistency.
- paldocs ci_schema.sql must stay in sync with the real schema -- adding status there is correct for CI.
- No other repos appear to directly query the projects table.
Decomposition Assessment
NEEDS DECOMPOSITION
- 9 file targets across 3 repos -- exceeds threshold of >3 files across >2 repos
- 6 acceptance criteria -- exceeds threshold of >5 AC
- Estimated agent work: well over 5 minutes. The pal-e-docs schema change alone is a focused task (migration + model + schema + route). The paldocs sprint planning UI is a separate, substantial feature (new controller, views, board integration). The docs update is a third independent unit.
- Natural decomposition boundary: (1) pal-e-docs schema + API, (2) paldocs status scope + CI schema, (3) paldocs sprint planning UI, (4) claude-custom docs update, (5) bulk archive dead projects (human-gated).
[DECOMPOSE] 9 file targets across 3 repos, 6 AC. Route to skill-decompose-ticket.
Recommendation
- [SCOPE] Create user story entry "sprint-orchestration" on project-claude-custom user-stories section.
- [SCOPE] Create architecture note arch-docs for the docs component of claude-custom. (Memory references "arch-docs-claude-custom" but the note does not exist in pal-e-docs.)
- [BODY] Add explicit dependency chain: "pal-e-docs PR must merge before paldocs PR can be created (paldocs reads the schema)."
- [DECOMPOSE] 9 file targets across 3 repos, 6 AC, well over 5 minutes. Route to skill-decompose-ticket for sub-ticket creation.