feat(issue): Issue-tracker fundament — schema, statusmappers en Forgejo-mirror-render #51
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 1 van het issue-tracker-plan (
docs/superpowers/plans/2026-08-16-issue-tracker.md, dubbel-GO na 9 reviewrondes; specdocs/superpowers/specs/2026-08-16-issue-tracker-design.mdrev 9, dubbel-GO na 7 rondes — beide in de Scrum4Me-repo).De canonieke basis voor een issue-tracker per product of systeem: registratie, onderzoek en oplossing per issue, met een one-way spiegel naar Forgejo zodat de problemen op max2 en scrum4me-server ook daar zichtbaar zijn.
Wat hier landt
prisma/schema.prisma—Issue+IssueLog, vijf enums, enProduct.kind/Product.issue_code_counter.kindonderscheidt APP van SYSTEM; systemen krijgen dezelfde tracker als apps, wat het titelformaat en het host-label in de mirror bepaalt.Issuedraagt naast de inhoud de mirror-boekhouding (forgejo_repo/number/synced_at/attempted_at/dirty/sync_seq/error) zodat de spiegel self-healing kan zijn, plusfingerprint+occurrence_countvoor dedup en regressie-heropening.linked_pbi/linked_ideazijn SetNull met expliciete relatienamen: een verwijderde PBI mag de issue niet meeslepen.lib/issue-status.ts— één bron voor UPPER_SNAKE ↔ lowercase, patroon vanlib/task-status.ts.canTransitionIssuecodificeert de lifecycle: binnen de open statussen vrij bewegen, sluiten kan altijd, en vanuit CLOSED alleen terug naar INVESTIGATING — heropenen is een nieuw onderzoek, geen sprong terug naar de inbox.lib/issue-forgejo-mirror.ts— de pure render (titel/body/labels/state). Bewust zonder I/O: beide consumers doen hun eigen HTTP, maar het driftgevoelige deel heeft één bron. De body draagt een marker per issue-id zodat een bestaande spiegel herkenbaar blijft; bij overschrijding van de 60k-cap wordt afgekapt mét behoud van die marker, want zonder marker vindt de volgende sync het issue niet terug.Consumers
Additief — geen bestaand gedrag verandert. Scrum4Me en scrum4me-mcp bumpen de submodule pas in fase 2 respectievelijk 6 van het plan; die lockstep is onderdeel van het plan.
Verificatie
npm run verifygroen: 24 testbestanden, 257 tests, waarvan 15 nieuw (5 status-mappers, 10 mirror-render). Het canonieke schema valideert via een gegenereerd consumer-schema (scripts/gen-consumer-schema.sh); de canonieke vorm zelf heeft per constructie geen datasource.🤖 Generated with Claude Code