feat(mcp): update_idea tool + update_idea_grill_md productgrens (slice-1 Laag B) #54

Merged
janpeter merged 4 commits from claude/idea-mcp-tools into main 2026-06-14 16:43:49 +02:00
Owner

Slice-1 Laag B van het copilot Ideeen-menu (scrum4me-mcp).

Wat

  • B1 — shared-submodule bump naar scrum4me-shared main (PR #17-merge, 3b852c8): brengt de nieuwe update_idea-entry in READ_ONLY_MCP_TOOLS + behoudt content-policy. Schema ongewijzigd (A1 raakte alleen copilot-access.ts).
  • B1b — guard-test __tests__/create-idea-gate.test.ts die borgt dat create_idea AVG-gated is (durende hardstop tegen een ongated-create-venster). De gate zelf was al aanwezig (#53 gemerged) -- alleen de test toegevoegd.
  • B2 — nieuwe MCP-tool update_idea(idea_id, product_id, title?, description?): product-bound (where:{id,user_id,product_id} -> not found bij cross-product/andere user), AVG content-policy-gate (fail-closed, identiek aan create_idea), editable-status-check, dan prisma.idea.update. Geregistreerd in registerSharedTools.
  • B3update_idea_grill_md krijgt een optionele-maar-afgedwongen product_id: de copilot-service geeft 'm altijd mee (product-bound; mismatch -> 404-stijl); de bestaande worker-caller (zonder param) blijft backward-compatible.

Waarom

update_idea ontbrak als schrijfpad voor titel/beschrijving; de copilot-service (Laag C) roept 'm product-bound aan. De productgrens dekt het "binding-user kan ideeen over meerdere producten bezitten"-risico (codex plan-review-P1).

Tests

820 tests groen (112 files, +9 nieuw); typecheck schoon. Nieuwe tests: update_idea (happy / AVG-reject / malformed-policy-fail-closed / cross-product-ownership / status-niet-editable / demo-reject), update_idea_grill_md cross-product, create_idea-gate-guard.

Volgorde / deploy

Vereist scrum4me-shared #17 (gemerged). Merge + deploy deze mcp zodat update_idea live is voordat Laag C (copilot-service) z'n idee-routes aanroept (die callen de MCP-tools at runtime).

Plan/spec

scrum4me-copilot docs/superpowers/specs|plans/2026-06-14-ideas-menu-crud-grill* (branch claude/ideas-menu-crud-grill), cross-review-cleared (codex + 154).

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com

**Slice-1 Laag B** van het copilot Ideeen-menu (scrum4me-mcp). ## Wat - **B1** — shared-submodule bump naar scrum4me-shared `main` (PR #17-merge, `3b852c8`): brengt de nieuwe `update_idea`-entry in `READ_ONLY_MCP_TOOLS` + behoudt content-policy. Schema ongewijzigd (A1 raakte alleen `copilot-access.ts`). - **B1b** — guard-test `__tests__/create-idea-gate.test.ts` die borgt dat `create_idea` AVG-gated is (durende hardstop tegen een ongated-create-venster). De gate zelf was al aanwezig (#53 gemerged) -- alleen de test toegevoegd. - **B2** — nieuwe MCP-tool `update_idea(idea_id, product_id, title?, description?)`: product-bound (`where:{id,user_id,product_id}` -> not found bij cross-product/andere user), AVG content-policy-gate (fail-closed, identiek aan `create_idea`), editable-status-check, dan `prisma.idea.update`. Geregistreerd in `registerSharedTools`. - **B3** — `update_idea_grill_md` krijgt een optionele-maar-afgedwongen `product_id`: de copilot-service geeft 'm altijd mee (product-bound; mismatch -> 404-stijl); de bestaande worker-caller (zonder param) blijft backward-compatible. ## Waarom `update_idea` ontbrak als schrijfpad voor titel/beschrijving; de copilot-service (Laag C) roept 'm product-bound aan. De productgrens dekt het "binding-user kan ideeen over meerdere producten bezitten"-risico (codex plan-review-P1). ## Tests 820 tests groen (112 files, +9 nieuw); typecheck schoon. Nieuwe tests: `update_idea` (happy / AVG-reject / malformed-policy-fail-closed / cross-product-ownership / status-niet-editable / demo-reject), `update_idea_grill_md` cross-product, `create_idea`-gate-guard. ## Volgorde / deploy Vereist scrum4me-shared #17 (gemerged). **Merge + deploy deze mcp** zodat `update_idea` live is voordat Laag C (copilot-service) z'n idee-routes aanroept (die callen de MCP-tools at runtime). ## Plan/spec scrum4me-copilot `docs/superpowers/specs|plans/2026-06-14-ideas-menu-crud-grill*` (branch `claude/ideas-menu-crud-grill`), cross-review-cleared (codex + 154). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pins vendor/scrum4me-shared on scrum4me-shared main 3b852c8 (PR #17 merge,
descendant of 9a0a0bd): brings the new update_idea entry in READ_ONLY_MCP_TOOLS
and keeps content-policy. Schema unchanged (A1 touched copilot-access.ts only).
Precondition for the update_idea tool (Laag B) + the copilot-service routes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Guard-test bevestigt dat product.findUnique aangeroepen wordt en een
verboden veld geweigerd wordt. #53 was al gemerged: de gate was al
aanwezig in create-idea.ts — alleen de test is toegevoegd.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mirror of create_idea: requireWriteAccess demo-gate, product-bound load
(where id+user_id+product_id => 404 cross-product), content_policy AVG-gate
(fail-closed), editable-status check, then prisma.idea.update. Registered in
registerSharedTools.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds an optional product_id; when supplied (copilot-service) the tool enforces
idea.product_id === product_id (404 on mismatch, product-bound). The existing
worker-caller passes no product_id and is unchanged (backward-compatible).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No labels
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
janpeter/scrum4me-mcp!54
No description provided.