refactor(queue): vocabulaire uit scrum4me-shared, source krijgt mcp #71
No reviewers
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
janpeter/scrum4me-workers!71
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/queue-identity-shared"
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?
Derde van vijf PR's. Volgt op
scrum4me-shared#40 (gemerged) enScrum4Me#140 (open). Spec:scrum4me-mcpdocs/superpowers/specs/2026-07-25-queue-identity-shared-module-design.md§6.2.Waarom
lib/queue/types.tsdroeg een handkopie van het queue-vocabulaire — de bestandsheader zei dat zelf. Sinds #40 inscrum4me-sharedis er één gedeelde definitie; deze PR maakt workers daar consument van.En hij repareert een echte drift:
AgentMessage.sourcewas'cli' | 'dashboard'terwijl de gedeployde CHECK'mcp'toestaat en fase 2 die waarde gaat schrijven.Ontwerpdoel: nul call-sites wijzigen
lib/queue/types.tsre-exporteert het vocabulaire onder exact de namen die het al gebruikte. Alle zeven consumenten blijven ongemoeid — vijf in productiecode plus twee tests. De diff raakt precies twee paden: dit bestand en de submodule-pointer.Het bestand blijft bestaan omdat het de workers-eigen vormen houdt (
AgentMessage,NotifyEnvelope,CHANNEL,STALE_CLAIM_INTERVAL, retentie,validateTaskMeta). De re-export is dus geen extra laag maar één bestand met gemengde inhoud, waarvan de herkomst per export leesbaar is.Reviewnotities
isolatedModules, en hetimport type-blok weglaten faalt 14× met TS2304 —export type {…} fromvult de lokale scope niet, terwijlAgentMessageenNotifyEnvelopedie namen wél nodig hebben.messages-view.tsxgebruiktSERVERS[1],MODELS[0]enREQUEST_TYPES[0]alsuseState-seeds; die leveren nog steeds'scrum4me-server','claude'en'task'.source-verbreding breekt geen exhaustiviteit. De enige lezer rendert de waarde als ReactNode; de schrijvers zetten'dashboard'hardcoded in SQL-tekst.@shared/queue-identitybelandt nu in de client-bundle (types.ts wordt geïmporteerd door een'use client'-component). Het is een pure constanten-module zonder node-imports, en zes bestaande client-componenten importeren al runtime-waarden uit@shared/*.lib/queue/ops-db.tsheeft nog één SQL-literalstatus IN ('done','failed','cancelled'). Bewust ongemoeid: dat is SQL-tekst, geen TS-waarde.Verificatie
Baseline vóór de wijziging en uitkomst erna zijn identiek:
npm run typecheckexit 0, en 46 tests groen in de drie queue-testbestanden. De reviewer draaide daarnaast de volledige suite (113 bestanden, 777 tests groen) en een wegwerp-equivalentietest die oude en nieuwe module naast elkaar importeert: identieke array-inhoud en -volgorde, identiekereplyTypeFor-uitkomst, identiek guard-gedrag over 18 probes.ops-db-realdb.test.tsis niet gedraaid — die vraagt een database.Na de merge
De header van
scrum4me-shared/lib/queue-identity.tsbeschrijft workers dan nog als handkopie. Die krijgt een kleine vervolg-PR samen met de pariteitsgate-tekst.🤖 Generated with Claude Code
Verdict: REQUEST_CHANGES
Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.
Findings
lib/queue/types.ts:83/__tests__/lib/queue/fixtures/agent_message.sql:41:AgentMessage.sourcekomt nu uitQueueSource, en de gebumpte shared module bevatQUEUE_SOURCES = ['cli', 'dashboard', 'mcp']. De workers realdb-fixture houdt de database-CHECK echter op('cli','dashboard'). Daarmee is het nieuwe typecontract niet paritair met de DB-constraint die deze app test en documenteert; zodra een pad eenmcp-bron leest/schrijft of een realdb-test dit gaat bewijzen, loopt dit uiteen. Neem de bijbehorende ops-migratie/fixture-update of een expliciete pariteitsbewaking mee in dezelfde wijziging.Verificatie
vendor/scrum4me-shared/lib/queue-identity.tsexporteertQUEUE_SOURCESinclusiefmcp.node node_modules/typescript/bin/tsc --noEmitgeprobeerd; resultaat is niet bruikbaar voor deze PR door niet-gegenereerde Prisma-types in de tijdelijke checkout./tmp.