Drop legacy boards table — complete kanban unification #199
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/pal-e-api#199
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Feature
Lineage
Standalone — board-pal-e-docs kanban unification. Depends on: all previous migration tickets
Repo
forgejo_admin/pal-e-apiUser Story
As the platform owner
I want the legacy boards table removed
So that there's one source of truth — notes — and the recursive kanban architecture is clean
Context
Final cleanup after all consumers are migrated. Removes the boards table, drops the board_id column from board_items, and removes the dual-FK transition state. After this, boards ARE notes. Any note can have board items. Recursive kanban is fully enabled.
This also enables: sub-projects with their own boards, kanban within tickets, phase-level boards for complex phases.
File Targets
Source files to modify:
src/pal_e_docs/models.py— remove Board model, remove board_id from BoardItemsrc/pal_e_docs/schemas.py— remove BoardCreate/BoardUpdate if merged into note schemassrc/pal_e_docs/routes/boards.py— heaviest change (126 board_id/Board refs); rewrite all CRUD to use board_note_id exclusivelyalembic/versions/— migration to drop boards table and board_id columnTest files requiring updates (8 files reference Board/board_id):
tests/test_boards.pytests/test_board_sync.pytests/test_board_issue_sync.pytests/test_private_projects_boards.pytests/test_pagination_activity.pytests/test_note_type_enum.pytests/test_retype_migration.pytests/conftest.pyCross-Repo Blast Radius
pal-e-app consumes
board_idin 2 files — these will break when the field is removed:src/lib/api-client.ts—board_id: number;in type definition (line 40)src/routes/+page.svelte—boardMap[item.board_id]lookup (line 139)Resolved: Alias board_note_id as board_id in API responses for backward compatibility. Add deprecation warning header. pal-e-app migrates in a follow-up ticket. No coordinated breaking change.
If coordinated breaking change: a separate pal-e-app issue is needed to update api-client.ts and +page.svelte before or alongside this PR.
Acceptance Criteria
Test Expectations
pytest tests/ -vConstraints
Checklist
Related
project-pal-e-docs— final step of kanban unificationNotes for Betty Sue
arch:board-apilabel addedScope Review: NEEDS_REFINEMENT
Review note:
review-318-2026-03-27Missing file target (routes/boards.py has 41 board_id/Board references) and cross-repo blast radius in pal-e-app (2 files use board_id).
src/pal_e_docs/routes/boards.pyto File Targets -- heaviest change, not listedtests/to File Targets -- 8 test files reference Board/board_idarch:board-apilabel to board item #318Scope Review: NEEDS_REFINEMENT
Review note:
review-318-2026-03-27Re-review after refinement. Template is complete and file targets mostly verified, but 3 fixable issues remain before this can move to next_up.
### Reposaysforgejo_admin/pal-e-docs— should beforgejo_admin/pal-e-api(repo was renamed)notes.pylisted as file target with "2 board_id refs" — grep finds 0 board_id/Board refs. Remove or clarify.arch:board-apilabelScope Review: READY
Review note:
review-318-2026-03-27-v3V3 re-review: all 4 issues from v2 are resolved. Template complete, all 12 source+test file targets verified, cross-repo blast radius documented with alias approach, dependency chain (#314-#317) satisfied.
arch:board-apilabel to board item #318 before moving to next_up (per Notes for Betty Sue)