feat(issues): issue-tracker-tools — create/update/list/get + Forgejo-inline-sync #117
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/issue-tracker"
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?
Fase 6 van het issue-tracker-plan (
docs/superpowers/plans/2026-08-16-issue-tracker.mdin Scrum4Me; specdocs/superpowers/specs/2026-08-16-issue-tracker-design.md, beide dubbel-GO). Vier MCP-tools waarmee agents problemen op max2 en scrum4me-server kunnen registreren, onderzoeken en oplossen — met een spiegel naar Forgejo zodat het daar ook zichtbaar is.Tools
create_issue— registreert een probleem als ISS-n. Met een stabielefingerprint(<host>:<component>:<kern>) telt een herhaling op bij het bestaande open issue in plaats van een kopie te maken; is dat issue gesloten als FIXED of CANNOT_REPRODUCE, dan spreekt de nieuwe melding die conclusie tegen en heropent het als regressie. Bij WONT_FIX, DUPLICATE en INVALID gebeurt dat bewust niet — daar is de beslissing genomen. De partial unique index maakt dedup race-bestendig; de verliezer van een gelijktijdige insert vangt P2002 en valt eenmalig terug op het optel-pad.update_issue— appendt aan onderzoek en oplossing in plaats van te overschrijven: meerdere agents werken na elkaar aan hetzelfde issue. Elke append krijgt een scheider met tijdstip en afzender, uitauthored_byof anders de token-username — bewust nooit uitIssue.reported_by, want dat is de mélder. In de normale gang van zaken (max2 meldt, een andere agent onderzoekt) zou elke regel anders de verkeerde naam dragen, team-zichtbaar én gespiegeld.list_issues/get_issue— lezen; gesloten issues blijven standaard buiten de lijst.Spiegel
src/lib/issue-sync.tsdraait hetzelfde algoritme als de web-executor: session-scoped advisory lock op een pooler-vrije verbinding (hij moet de HTTP-calls overspannen), render én CAS-snapshot uit één verse read ná de lock, boekhouding via de pg-client zodatupdated_atonaangeraakt blijft. ZonderDIRECT_URLslaat de MCP inline-sync over in plaats van te forceren —forgejo_dirtyblijft staan en de repair-sweep in Scrum4Me is het gegarandeerde pad.Lockstep
Submodule
vendor/scrum4me-sharedopc63f0bd(scrum4me-shared #51 + #52). Scrum4Me bumpt naar dezelfde basis; de DB-migratie hoort bij die kant.Verificatie
npm testgroen: 190 testbestanden, 1419 tests, waarvan 32 nieuw (7 create, 8 update, 5 list/get, 12 sync).npm run typecheckgroen.🤖 Generated with Claude Code