Review: Add "board" to NoteType
Verdict: READY
Template Completeness
- [x] Type
- [x] Lineage
- [x] Repo
- [x] User Story
- [x] Context
- [x] File Targets (includes both modify and do-not-touch lists)
- [x] Acceptance Criteria (4 items)
- [x] Test Expectations (4 items, references existing test file)
- [x] Constraints
- [x] Checklist
- [x] Related
File Targets
- [x]
src/pal_e_docs/schemas.py— verified: NoteType Literal at lines 6-23, currently 15 types, no "board" present - [x]
src/pal_e_docs/routes/notes.py— verified: VALID_STATUSES dict at lines 45-62, entries for all 15 current types, no "board" entry - [x]
src/pal_e_docs/routes/boards.py— verified exists, correctly marked as do-not-touch - [x]
src/pal_e_docs/models.py— verified exists, correctly marked as do-not-touch - [x]
tests/test_note_type_enum.py— verified exists, follows parametrized pattern suitable for adding "board" type tests
Repo Placement
OK — Issue #195 is filed on
forgejo_admin/pal-e-docs and all file targets are in that repo. Single-repo change, no cross-repo coordination needed.Dependencies
- Board item #314 is in
todocolumn, position 0 — first in the kanban-daily-review story sequence. - Downstream items with same story label (all in backlog, sequenced): #315 (board_note_id FK, 5pts, pos 1), #316 (board API update, 5pts, pos 2), #317 (MCP+SDK+hooks, 3pts, pos 3), #318 (drop legacy table, 2pts, pos 4).
- No blockers — #314 has no upstream dependencies.
- #294 (Remove sprint note type) is
in_progress— no conflict. Removing a type and adding a type are independent changes to the same Literal, but no merge conflict risk since they touch different lines.
Acceptance Criteria
All four criteria are testable by an agent:
- POST /notes with note_type="board" — directly testable via API call
- Board notes accept statuses active/archived — testable via API call with status param
- Existing board functionality unchanged — existing test suite covers this
- No regression in existing note types — existing parametrized tests in test_note_type_enum.py cover this
Test command
pytest tests/test_note_type_enum.py -v is valid — file exists at that path.Blast Radius
- SDK (pal-e-docs-sdk): Uses
strfor note_type, not a Literal. No SDK changes needed — "board" passes through as-is. - MCP (pal-e-docs-mcp): Field descriptions at lines 164, 228, 297 hardcode the note_type list. Already stale — missing reference, incident, journal, post, milestone. Pre-existing drift, not introduced by this ticket. Downstream ticket #317 covers MCP updates.
- Board API:
routes/boards.pyandBoardItemTypeenum inmodels.pyare unaffected — this ticket only adds to NoteType, not BoardItemType. - pal-e-app frontend: No frontend impact — the app renders note_type as a string, no hardcoded type list.
Recommendation
No action needed — scope is solid, all file targets verified, dependencies are documented via the story label sequence, and blast radius is contained. Ready for agent execution.
Note
Discovered: "review" is not a valid note_type. The skill-review-ticket spec calls for
note_type: review but the NoteType Literal does not include it. This review note was created as doc type instead. Consider adding "review" to NoteType in a future ticket.