KAN-73: Explain and validate MCP ticket description format #178

Open
Twyco wants to merge 1 commits from feature/KAN-73-mcp-description-contract into feature/KAN-72-complete-mcp-ticket-editing
Owner

MCP clients previously received no description format contract, so task checkboxes could be stored in descriptions and force the entire ticket description into source mode. This change advertises the shared Tiptap Markdown contract in initialize, every ticket-writing tool, and the description/acceptance_criteria schemas. Criteria belong exclusively in the structured checklist.

All three description-writing paths now reject incompatible Markdown before any ticket mutation. Existing descriptions and checklist IDs survive updates that omit description. A shared frontend/backend contract and compatibility corpus cover supported formatting, nested task checkboxes, tables, HTML, images, code examples, reference links, and unsafe destinations. The PHP check uses the existing CommonMark/URI libraries without adding a runtime or dependency.

Validation: 161 affected PHPUnit tests passed (1087 assertions); Pint, frontend ESLint, types:check, and production build passed. Browser regression checks verified formatted MCP example content in the WYSIWYG editor and detail preview, plus unchanged legacy tasklist source. Known build warnings concern existing Inter font asset paths.

Based on feature/KAN-72-complete-mcp-ticket-editing at 9ed8d0c6cc (PR #177), because this extends its update_ticket tool. Target remains that original base branch.

Production acceptance remains pending merge/deployment: reconnect the Production Kanban Git MCP and verify initialize/tools/list metadata and valid/invalid writes on a dedicated test ticket. The current connected production interface still serves the earlier metadata; this PR does not deploy it.

MCP clients previously received no description format contract, so task checkboxes could be stored in descriptions and force the entire ticket description into source mode. This change advertises the shared Tiptap Markdown contract in initialize, every ticket-writing tool, and the description/acceptance_criteria schemas. Criteria belong exclusively in the structured checklist. All three description-writing paths now reject incompatible Markdown before any ticket mutation. Existing descriptions and checklist IDs survive updates that omit description. A shared frontend/backend contract and compatibility corpus cover supported formatting, nested task checkboxes, tables, HTML, images, code examples, reference links, and unsafe destinations. The PHP check uses the existing CommonMark/URI libraries without adding a runtime or dependency. Validation: 161 affected PHPUnit tests passed (1087 assertions); Pint, frontend ESLint, types:check, and production build passed. Browser regression checks verified formatted MCP example content in the WYSIWYG editor and detail preview, plus unchanged legacy tasklist source. Known build warnings concern existing Inter font asset paths. Based on feature/KAN-72-complete-mcp-ticket-editing at 9ed8d0c6cc08e9ab80d8f7219e86b27baa02ae8e (PR #177), because this extends its update_ticket tool. Target remains that original base branch. Production acceptance remains pending merge/deployment: reconnect the Production Kanban Git MCP and verify initialize/tools/list metadata and valid/invalid writes on a dedicated test ticket. The current connected production interface still serves the earlier metadata; this PR does not deploy it.
Twyco added 1 commit 2026-10-02 12:04:19 +00:00
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feature/KAN-73-mcp-description-contract:feature/KAN-73-mcp-description-contract
git checkout feature/KAN-73-mcp-description-contract
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: PetschStudios/KanbanGit#178