Board items should not require Forgejo issues — support standalone tickets #57

Open
opened 2026-03-31 00:47:55 +00:00 by forgejo_admin · 1 comment
Contributor

Type

Feature

Lineage

Escalated from spike forgejo_admin/pal-e-mcp#56. Discovered during westside-accounting project — every item is a human task, not code.

Repo

forgejo_admin/pal-e-mcp

User Story

As a project manager, I want to create board items for human tasks without needing a Forgejo issue or pal-e-docs note, so that non-code projects can use kanban tracking.

Context

Board system forces every item into: issue (requires forgejo_issue_url), todo (requires note_slug), or plan/phase/repo/project (require note_slug). No standalone ticket type exists. Operations projects cannot use kanban without creating throwaway Forgejo repos. Terminology is also wrong — these are tickets, not issues. Tickets can be phone calls, payments, errands, decisions.

File Targets

  • src/pal_e_docs/routes/boards.py — add ticket item_type validation
  • src/pal_e_docs/models/board.py — add ticket to item_type enum
  • ~/.claude/hooks/check-board-item.sh — allow ticket type without forgejo_issue_url

Files NOT to touch:

  • Existing item_type handling for issue/todo/plan/phase — don't break those

Acceptance Criteria

  • create_board_item(item_type="ticket", title="Call PA Vital Records") works
  • Hook allows ticket type in backlog without forgejo_issue_url
  • westside-accounting board can be fully populated with tickets

Test Expectations

  • Unit test: create_board_item with item_type="ticket" and only title succeeds
  • Unit test: create_board_item with item_type="ticket" without title fails
  • Integration test: ticket appears in list_board_items response
  • Run command: pytest tests/ -k board

Constraints

  • Don't break existing issue/todo/plan/phase item types
  • Ticket type needs title (required) and description (optional) — nothing else mandatory
  • Follow existing board item API patterns

Checklist

  • PR opened
  • Tests pass
  • Hook updated
  • No unrelated changes
  • forgejo_admin/pal-e-mcp#56 — original spike
  • board-westside-accounting — first consumer
  • project-westside-accounting — operations project that surfaced this
### Type Feature ### Lineage Escalated from spike `forgejo_admin/pal-e-mcp#56`. Discovered during westside-accounting project — every item is a human task, not code. ### Repo `forgejo_admin/pal-e-mcp` ### User Story As a project manager, I want to create board items for human tasks without needing a Forgejo issue or pal-e-docs note, so that non-code projects can use kanban tracking. ### Context Board system forces every item into: `issue` (requires `forgejo_issue_url`), `todo` (requires `note_slug`), or `plan/phase/repo/project` (require `note_slug`). No standalone ticket type exists. Operations projects cannot use kanban without creating throwaway Forgejo repos. Terminology is also wrong — these are **tickets**, not issues. Tickets can be phone calls, payments, errands, decisions. ### File Targets - `src/pal_e_docs/routes/boards.py` — add `ticket` item_type validation - `src/pal_e_docs/models/board.py` — add `ticket` to item_type enum - `~/.claude/hooks/check-board-item.sh` — allow `ticket` type without forgejo_issue_url Files NOT to touch: - Existing item_type handling for issue/todo/plan/phase — don't break those ### Acceptance Criteria - [ ] `create_board_item(item_type="ticket", title="Call PA Vital Records")` works - [ ] Hook allows ticket type in backlog without forgejo_issue_url - [ ] westside-accounting board can be fully populated with tickets ### Test Expectations - [ ] Unit test: create_board_item with item_type="ticket" and only title succeeds - [ ] Unit test: create_board_item with item_type="ticket" without title fails - [ ] Integration test: ticket appears in list_board_items response - Run command: `pytest tests/ -k board` ### Constraints - Don't break existing issue/todo/plan/phase item types - Ticket type needs title (required) and description (optional) — nothing else mandatory - Follow existing board item API patterns ### Checklist - [ ] PR opened - [ ] Tests pass - [ ] Hook updated - [ ] No unrelated changes ### Related - `forgejo_admin/pal-e-mcp#56` — original spike - `board-westside-accounting` — first consumer - `project-westside-accounting` — operations project that surfaced this
Author
Contributor

Correction on framing:

This is NOT "tickets for human work, issues for code work." That's a false dichotomy.

Everything on a board is a ticket. A ticket is the unit of work. Some tickets have a linked Forgejo issue (code work with a spec). Some have a linked note. Some stand alone. The linked entity is an optional reference, not a requirement.

The real fix: forgejo_issue_url and note_slug should be optional on all item types. The board item itself IS the ticket. Rename the concept from "board item" to "ticket" across the API and SOPs. Stop forcing a linked entity as a prerequisite for tracking work.

**Correction on framing:** This is NOT "tickets for human work, issues for code work." That's a false dichotomy. Everything on a board is a **ticket**. A ticket is the unit of work. Some tickets have a linked Forgejo issue (code work with a spec). Some have a linked note. Some stand alone. The linked entity is an optional reference, not a requirement. The real fix: `forgejo_issue_url` and `note_slug` should be **optional on all item types**. The board item itself IS the ticket. Rename the concept from "board item" to "ticket" across the API and SOPs. Stop forcing a linked entity as a prerequisite for tracking work.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/pal-e-mcp#57
No description provided.