feat: JobKindConfig fase 2 — web-migratie + seed (9 kinds) #90

Merged
janpeter merged 4 commits from claude/job-kind-config-phase2 into main 2026-06-17 09:31:18 +02:00
Owner

Summary

Fase 2 van de JobKindConfig-feature (per-kind tool/skill/runtime-config) in scrum4me-web (designated migrator). Bouwt op fase 1 (scrum4me-shared, gemerged via PR #21).

  • Submodule-bump vendor/scrum4me-shared072b241 (bevat JobKindConfig + codex-config/tool-registry/skills-registry + resolveRuntimeJobConfig); prisma/schema.prisma geregenereerd via gen-schema.sh.
  • Migratie prisma/migrations/20260617120000_add_job_kind_config/CREATE TABLE job_kind_config (additief, geen FK/backfill). DDL gegenereerd via prisma migrate diff (schema→schema, DB-vrij), dus drift-vrij t.o.v. het schema.
  • Seedprisma/seed-data/job-kind-defaults.ts + idempotente upsert in prisma/seed.ts voor alle 9 kinds: de 6 bestaande 1:1 uit KIND_DEFAULTS; de 3 review-kinds (PR_REVIEW/SPEC_REVIEW/TASK_REVIEW) krijgen een expliciete read-allowlist i.p.v. de oude FALLBACK-null (=alle tools). codex_model=null, codex_sandbox_mode op intentie (read-only voor lezende kinds, workspace-write voor schrijvende).

⚠️ Niet tegen de DB gedraaid

De web-env wijst naar de gedeelde/productie-DB, dus deze PR is lokaal geauthored zonder DB-writes. Bij merge/deploy nog uitvoeren via de normale designated-migrator-flow:

  • prisma migrate deploy (past 20260617120000_add_job_kind_config toe)
  • npm run seed (idempotente upsert van de 9 kinds)

Test Plan

  • prisma validate — valid 🚀 (web-schema met datasource)
  • migratie drift-vrij: prisma migrate diff (origin/main-schema → nieuw schema) == de migration.sql
  • npx vitest run __tests__/job-kind-config-seed-data.test.ts — 8 groen (9 kinds, 1:1 uit KIND_DEFAULTS, tools in master-lijst, sandbox-intentie)
  • npm run typecheck (tsc --noEmit) — exit 0 (na manual:build-codegen; prisma.jobKindConfig bestaat in de client)
  • op deploy: prisma migrate deploy + npm run seed

Sandbox-voorbehoud (fase 4)

codex_sandbox_mode is op intentie geseed (read-only/workspace-write). Of die in de afgeschermde codex-container werken wordt in fase 4 (docker) geverifieerd; faalt die gate, dan zet een vervolg-seed terug op danger-full-access.

🤖 Generated with Claude Code

## Summary Fase 2 van de JobKindConfig-feature (per-kind tool/skill/runtime-config) in **scrum4me-web** (designated migrator). Bouwt op fase 1 (scrum4me-shared, gemerged via PR #21). - **Submodule-bump** `vendor/scrum4me-shared` → `072b241` (bevat `JobKindConfig` + `codex-config`/`tool-registry`/`skills-registry` + `resolveRuntimeJobConfig`); `prisma/schema.prisma` geregenereerd via `gen-schema.sh`. - **Migratie** `prisma/migrations/20260617120000_add_job_kind_config/` — `CREATE TABLE job_kind_config` (additief, geen FK/backfill). DDL gegenereerd via `prisma migrate diff` (schema→schema, **DB-vrij**), dus drift-vrij t.o.v. het schema. - **Seed** — `prisma/seed-data/job-kind-defaults.ts` + idempotente upsert in `prisma/seed.ts` voor alle **9** kinds: de 6 bestaande 1:1 uit `KIND_DEFAULTS`; de 3 review-kinds (`PR_REVIEW`/`SPEC_REVIEW`/`TASK_REVIEW`) krijgen een expliciete read-allowlist i.p.v. de oude FALLBACK-`null` (=alle tools). `codex_model=null`, `codex_sandbox_mode` op intentie (read-only voor lezende kinds, workspace-write voor schrijvende). ## ⚠️ Niet tegen de DB gedraaid De web-env wijst naar de gedeelde/productie-DB, dus deze PR is **lokaal geauthored zonder DB-writes**. Bij merge/deploy nog uitvoeren via de normale designated-migrator-flow: - `prisma migrate deploy` (past `20260617120000_add_job_kind_config` toe) - `npm run seed` (idempotente upsert van de 9 kinds) ## Test Plan - [x] `prisma validate` — valid 🚀 (web-schema met datasource) - [x] migratie drift-vrij: `prisma migrate diff` (origin/main-schema → nieuw schema) == de migration.sql - [x] `npx vitest run __tests__/job-kind-config-seed-data.test.ts` — 8 groen (9 kinds, 1:1 uit KIND_DEFAULTS, tools in master-lijst, sandbox-intentie) - [x] `npm run typecheck` (tsc --noEmit) — exit 0 (na `manual:build`-codegen; `prisma.jobKindConfig` bestaat in de client) - [ ] **op deploy:** `prisma migrate deploy` + `npm run seed` ## Sandbox-voorbehoud (fase 4) `codex_sandbox_mode` is op intentie geseed (read-only/workspace-write). Of die in de afgeschermde codex-container werken wordt in **fase 4 (docker)** geverifieerd; faalt die gate, dan zet een vervolg-seed terug op `danger-full-access`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
CREATE TABLE job_kind_config — additief, geen FK/backfill. DDL via
prisma migrate diff (DB-vrij, schema→schema). NIET tegen de gedeelde DB
gedraaid: migrate deploy + seed gebeuren via de normale deploy.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
feat(seed): idempotente JobKindConfig-upsert voor alle 9 kinds
All checks were successful
CI / Lint, Typecheck, Test & Build (pull_request) Successful in 3m30s
CI / Deploy Manual (workflow_dispatch) (pull_request) Has been skipped
CI / Detect deploy-relevant changes (pull_request) Has been skipped
CI / Deploy Preview (PR) (pull_request) Has been skipped
CI / Deploy Production (main) (pull_request) Has been skipped
28b1f64b7c
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!90
No description provided.