Review: Add "board" to NoteType

review-314-2026-03-24 Review

review ready

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 todo column, 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 str for 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.py and BoardItemType enum in models.py are 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.