sync_board should propagate note title changes to phase board items #192

Closed
opened 2026-03-22 17:07:00 +00:00 by forgejo_admin · 3 comments

Type

Feature

Lineage

plan-pal-e-docs → Board Workflow → discovered scope from Westside docs sync

Repo

forgejo_admin/pal-e-api

User Story

As a session agent updating phase notes
I want sync_board to detect and propagate title drift on phase items
So that board titles stay accurate without manual intervention

Context

When a phase note title changes (e.g. "Phase 11: Girls Tryout — March 21" → "March 24"), the board item title stays stale. sync_board reconciles columns (backlog/in_progress/done) based on note status, but does not detect or propagate title drift.

The update_board_item API already supports title (PATCH endpoint + SDK). The gap is only in sync_board logic.

Pattern to follow: sync_issues (lines 458-462 in routes/boards.py) already detects drift — apply the same pattern to phase items in sync_board.

Discovered during Westside Phase 11 date correction (2026-03-22). Review: review-281-2026-03-22.

File Targets

Files the agent should modify:

  • src/pal_e_docs/routes/boards.pysync_board function (line 324+), add title drift detection for phase items following the sync_issues pattern (lines 458-462)

Files the agent should NOT touch:

  • src/pal_e_docs/routes/boards.py update_board_item endpoint — already supports title
  • src/pal_e_docs/schemas.py BoardItemUpdate — already has title field

Acceptance Criteria

  • sync_board detects when a phase board item title differs from its linked note title and updates it
  • Updated items increment the updated count in sync response
  • Items with current titles are skipped (no unnecessary writes)
  • Non-phase items with manually set titles are not overwritten

Test Expectations

  • Unit test: sync_board updates stale phase item title, returns updated=1
  • Unit test: sync_board skips phase item with current title, returns skipped=1
  • Unit test: non-phase items with manual titles are not touched by sync
  • Run command: pytest tests/ -k board_sync or sync_board

Constraints

  • Follow the existing sync_issues drift detection pattern (lines 458-462)
  • sync_board already returns created/updated/skipped counts — title updates should increment updated
  • Must not break existing column sync behavior

Checklist

  • PR opened
  • Tests pass
  • No unrelated changes
  • project-pal-e-docs — project this affects
  • sop-board-workflow — board workflow SOP
  • phase-wkq-11-girls-tryout — the note that exposed this gap
  • review-281-2026-03-22 — ticket review note
### Type Feature ### Lineage `plan-pal-e-docs` → Board Workflow → discovered scope from Westside docs sync ### Repo `forgejo_admin/pal-e-api` ### User Story As a session agent updating phase notes I want `sync_board` to detect and propagate title drift on phase items So that board titles stay accurate without manual intervention ### Context When a phase note title changes (e.g. "Phase 11: Girls Tryout — March 21" → "March 24"), the board item title stays stale. `sync_board` reconciles columns (backlog/in_progress/done) based on note status, but does not detect or propagate title drift. The `update_board_item` API already supports `title` (PATCH endpoint + SDK). The gap is only in `sync_board` logic. Pattern to follow: `sync_issues` (lines 458-462 in `routes/boards.py`) already detects drift — apply the same pattern to phase items in `sync_board`. Discovered during Westside Phase 11 date correction (2026-03-22). Review: `review-281-2026-03-22`. ### File Targets Files the agent should modify: - `src/pal_e_docs/routes/boards.py` — `sync_board` function (line 324+), add title drift detection for phase items following the `sync_issues` pattern (lines 458-462) Files the agent should NOT touch: - `src/pal_e_docs/routes/boards.py` `update_board_item` endpoint — already supports title - `src/pal_e_docs/schemas.py` `BoardItemUpdate` — already has title field ### Acceptance Criteria - [ ] `sync_board` detects when a phase board item title differs from its linked note title and updates it - [ ] Updated items increment the `updated` count in sync response - [ ] Items with current titles are skipped (no unnecessary writes) - [ ] Non-phase items with manually set titles are not overwritten ### Test Expectations - [ ] Unit test: sync_board updates stale phase item title, returns updated=1 - [ ] Unit test: sync_board skips phase item with current title, returns skipped=1 - [ ] Unit test: non-phase items with manual titles are not touched by sync - Run command: `pytest tests/ -k board_sync or sync_board` ### Constraints - Follow the existing `sync_issues` drift detection pattern (lines 458-462) - `sync_board` already returns created/updated/skipped counts — title updates should increment `updated` - Must not break existing column sync behavior ### Checklist - [ ] PR opened - [ ] Tests pass - [ ] No unrelated changes ### Related - `project-pal-e-docs` — project this affects - `sop-board-workflow` — board workflow SOP - `phase-wkq-11-girls-tryout` — the note that exposed this gap - `review-281-2026-03-22` — ticket review note
Author
Owner

Scope Review: NEEDS_REFINEMENT

Review note: review-281-2026-03-22

The API and SDK already support title on update_board_item. The real gap is the MCP tool layer (pal-e-docs-mcp), not this repo.

  • src/pal_e_docs/services/board_sync.py does not exist — sync logic is in routes/boards.py at sync_board (line 251). Fix the file target.
  • AC #1 is already implemented at the API/SDK layer. The missing title param is in pal-e-docs-mcp/src/pal_e_docs_mcp/tools/boards.py — needs its own issue on forgejo_admin/pal-e-docs-mcp.
  • AC #2 (sync_board title drift) is a valid gap in this repo. sync_issues already handles title drift (lines 394-399) — same pattern applies.
  • AC #1 says "PUT" but the endpoint is PATCH.
## Scope Review: NEEDS_REFINEMENT Review note: `review-281-2026-03-22` The API and SDK already support `title` on `update_board_item`. The real gap is the MCP tool layer (pal-e-docs-mcp), not this repo. - `src/pal_e_docs/services/board_sync.py` does not exist — sync logic is in `routes/boards.py` at `sync_board` (line 251). Fix the file target. - AC #1 is already implemented at the API/SDK layer. The missing `title` param is in `pal-e-docs-mcp/src/pal_e_docs_mcp/tools/boards.py` — needs its own issue on `forgejo_admin/pal-e-docs-mcp`. - AC #2 (sync_board title drift) is a valid gap in this repo. `sync_issues` already handles title drift (lines 394-399) — same pattern applies. - AC #1 says "PUT" but the endpoint is PATCH.
Author
Owner

Rescoped per review-ticket verdict

Per review review-281-2026-03-22:

This issue is now scoped to sync_board title drift only.

  • AC #1 removed — update_board_item API already supports title. The gap is in the MCP tool layer (pal-e-docs-mcp), tracked separately.
  • File target corrected: src/pal_e_docs/routes/boards.py (function sync_board at line 251), not services/board_sync.py.
  • Endpoint verb corrected: PATCH, not PUT.

MCP tool gap tracked in separate issue on pal-e-docs-mcp.

## Rescoped per review-ticket verdict Per review `review-281-2026-03-22`: **This issue is now scoped to `sync_board` title drift only.** - AC #1 removed — `update_board_item` API already supports `title`. The gap is in the MCP tool layer (`pal-e-docs-mcp`), tracked separately. - File target corrected: `src/pal_e_docs/routes/boards.py` (function `sync_board` at line 251), not `services/board_sync.py`. - Endpoint verb corrected: PATCH, not PUT. MCP tool gap tracked in separate issue on `pal-e-docs-mcp`.
forgejo_admin changed title from Board API: update_board_item should support title field to sync_board should propagate note title changes to phase board items 2026-03-22 17:24:03 +00:00
Author
Owner

Scope Review: NEEDS_REFINEMENT

Review note: review-281-2026-03-28

Re-review after prior rescope (review-281-2026-03-22). Template is complete and scope is correct (sync_board title drift only). Four minor fixes needed before READY:

  • [LABEL] Add story:superuser-maintain label to board item #281 (missing traceability)
  • [LABEL] Add arch:board-api label to board item #281 (convention is arch: not scope:)
  • [BODY] Update stale line numbers: sync_board is at line 324 (not 251+), sync_issues drift pattern is at lines 458-462 (not 394-399)
  • [BODY] Update Repo field from forgejo_admin/pal-e-docs to forgejo_admin/pal-e-api (repo was renamed)
## Scope Review: NEEDS_REFINEMENT Review note: `review-281-2026-03-28` Re-review after prior rescope (review-281-2026-03-22). Template is complete and scope is correct (sync_board title drift only). Four minor fixes needed before READY: - `[LABEL]` Add `story:superuser-maintain` label to board item #281 (missing traceability) - `[LABEL]` Add `arch:board-api` label to board item #281 (convention is `arch:` not `scope:`) - `[BODY]` Update stale line numbers: sync_board is at line 324 (not 251+), sync_issues drift pattern is at lines 458-462 (not 394-399) - `[BODY]` Update Repo field from `forgejo_admin/pal-e-docs` to `forgejo_admin/pal-e-api` (repo was renamed)
forgejo_admin 2026-03-28 18:47:09 +00:00
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
forgejo_admin/pal-e-api#192
No description provided.