Canonical schema + pure-TS lib shared between Scrum4Me, scrum4me-workers and scrum4me-mcp
  • TypeScript 97.2%
  • Shell 2.8%
Find a file
Janpeter Visser feb67f3b20
All checks were successful
CI / Verify (push) Successful in 36s
Merge pull request 'feat(dispatch): root/reply-id in DispatchView en __dispatch_input-bron (M41)' (#68)
Merge pull request #68 (M41 increment 1)
2026-10-02 15:43:46 +02:00
.forgejo/workflows ci: tijdelijke smoke-green (T-164) weer verwijderd 2026-09-30 22:45:00 +02:00
__tests__ feat(dispatch): root/reply-id in DispatchView en __dispatch_input-bron (M41 T1) 2026-10-02 14:47:03 +02:00
fixtures feat(queue): define versioned review document references and Markdown profile 2026-09-14 15:04:22 +02:00
lib feat(dispatch): root/reply-id in DispatchView en __dispatch_input-bron (M41 T1) 2026-10-02 14:47:03 +02:00
prisma feat(notes): Note, NoteKeyword, NoteKeywordLink (IDEA-226) 2026-09-28 05:27:53 +02:00
scripts fix(idea-169): keep shared runtime inside lib boundary 2026-08-23 18:53:50 +02:00
.gitignore chore: initial scaffold 2026-05-26 13:08:02 +02:00
AGENTS.md docs: Scrum4Me-product-binding (methodiek + product_id) 2026-05-29 09:09:11 +02:00
CLAUDE.md docs: apply agent guide startup contract (T-156) 2026-09-30 19:13:26 +02:00
package-lock.json build(shared): add yaml dep; widen zod peer to ^3.25.0 || ^4.0.0 2026-06-07 10:16:31 +02:00
package.json build(shared): declare type:module so Node/tsx runtimes resolve the ESM source 2026-06-07 13:38:06 +02:00
README.md docs(audit): documenteer managed dispatch-contracten en document-reader (PR #61) 2026-09-22 07:44:59 +02:00
tsconfig.json chore: add tooling (package.json, tsconfig, vitest) 2026-05-26 13:08:41 +02:00
vitest.config.ts chore(vitest): remove unused @shared alias 2026-05-26 13:29:18 +02:00

scrum4me-shared

Canonical Prisma schema + pure-TypeScript library shared between:

  • Scrum4Me (web/Vercel)
  • scrum4me-workers (worker-management UI)
  • scrum4me-mcp (MCP server)

Consumer usage

git submodule add https://git.jp-visser.nl/janpeter/scrum4me-shared.git vendor/scrum4me-shared
bash vendor/scrum4me-shared/scripts/gen-consumer-schema.sh > prisma/schema.prisma
npx prisma generate

Imports via path-alias:

import { resolveJobConfig } from '@/vendor/scrum4me-shared/lib/job-config'

Hardstop

lib/*.ts imports alleen TypeScript built-ins, zod, and other files within scrum4me-shared/lib/. No @prisma/client, next/*, react, or runtime-specifieke Node APIs (behalve crypto).

CI gate: scripts/verify-no-deps.sh.

Versioning

Consumers pinnen via submodule-SHA (geen tag-flow nodig). Bij breaking schema-changes: rollout-volgorde Scrum4Me (migrate) -> workers/mcp (generate).

See: Scrum4Me/docs/specs/2026-05-26-scrum4me-platform-split-design.md.

Review document contract

lib/queue-review-documents.ts defines versioned, defensively validated review document references for queue review requests. lib/markdown-profile.ts defines the stable Markdown profile identity and preview size limit; source examples for platform clients are in fixtures/markdown-v1.json.

lib/queue-document-reader.ts leest zo'n referentie uit via injecteerbare ports (DocumentSourcePorts) en geeft altijd een DocumentResult terug — bij falen met een getypeerde DocumentFailureReason in plaats van een throw.

Managed dispatch contract

lib/queue-dispatch.ts definieert de dispatch-types (DispatchInput, DispatchResult, DispatchState, PublishMode) voor managed queue dispatch; lib/queue-dispatch-state.ts bevat de statetabel (decideDispatchTransition) en lib/queue-dispatch-validation.ts de zod-schema's en size-limieten. lib/queue-dispatch-start-permit.ts definieert de getekende start-permit (claims, keyset-selectie op kid, klok-tolerantie), lib/queue-dispatch-sources.ts de bronpinning via een getekend prepared-sources-manifest, en lib/queue-dispatch-runtime-observation.ts de gebonden runtime-stopobservatie. lib/queue-dispatch-projection.ts projecteert een dispatch op queue-berichten. Adressen lopen via de scrum4me-dispatch-server uit lib/queue-identity.ts; de bijbehorende job-kinds zijn QUEUE_TASK en QUEUE_REVIEW. Canonieke voorbeelden staan in __tests__/fixtures/dispatch-*.json.