feat: JobKindConfig fundering (fase 1) — model + runtime-aware resolver + registries #21

Merged
janpeter merged 5 commits from claude/job-kind-config-phase1 into main 2026-06-17 07:15:18 +02:00
Owner

Summary

Fase 1 van de JobKindConfig-feature (per-kind tool/skill/runtime-config). Additief in scrum4me-shared — bestaande API (JobConfig/resolveJobConfig/snapshotFromConfig/KIND_DEFAULTS/mapBudgetToEffort) onaangeroerd.

  • JobKindConfig Prisma-model (@@map("job_kind_config"), PK = ClaudeJobKind-enum)
  • lib/codex-config.ts: CODEX_SANDBOX_MODES + mapBudgetToCodexEffort
  • lib/tool-registry.ts: MASTER_TOOL_LIST + isKnownTool
  • lib/skills-registry.ts: SKILLS_REGISTRY (scrum4me-job-workflow) + isKnownSkill
  • lib/job-config.ts: runtime-aware resolveRuntimeJobConfig + JobKindConfigInput + RuntimeJobConfig (runtime-gesplitste model/permissie; CODEX slaat product.preferred_model + requires_opus over)

Onderdeel van de JobKindConfig-track (spec v4 + 6 fase-plannen, 3× codex-reviewed → 6/6 GO). Dit is fase 1 (fundering); fase 2 = scrum4me-web migratie + seed (designated migrator).

Test Plan

  • npm run typecheck (tsc --noEmit) — exit 0
  • npx vitest run — 161 tests groen (134 baseline + 27 nieuw)
  • purity-gate scripts/verify-no-deps.shlib/ is dep-clean
  • puur additief: git diff origin/main -- lib/job-config.ts heeft 0 verwijderde regels
  • model postgres-valide (geïsoleerde prisma validate met postgresql-datasource; bare canonieke schema heeft geen datasource → validate daarop N/A)

🤖 Generated with Claude Code

## Summary Fase 1 van de JobKindConfig-feature (per-kind tool/skill/runtime-config). **Additief** in scrum4me-shared — bestaande API (`JobConfig`/`resolveJobConfig`/`snapshotFromConfig`/`KIND_DEFAULTS`/`mapBudgetToEffort`) onaangeroerd. - `JobKindConfig` Prisma-model (`@@map("job_kind_config")`, PK = `ClaudeJobKind`-enum) - `lib/codex-config.ts`: `CODEX_SANDBOX_MODES` + `mapBudgetToCodexEffort` - `lib/tool-registry.ts`: `MASTER_TOOL_LIST` + `isKnownTool` - `lib/skills-registry.ts`: `SKILLS_REGISTRY` (`scrum4me-job-workflow`) + `isKnownSkill` - `lib/job-config.ts`: runtime-aware `resolveRuntimeJobConfig` + `JobKindConfigInput` + `RuntimeJobConfig` (runtime-gesplitste model/permissie; CODEX slaat `product.preferred_model` + `requires_opus` over) Onderdeel van de JobKindConfig-track (spec v4 + 6 fase-plannen, 3× codex-reviewed → 6/6 GO). Dit is fase 1 (fundering); fase 2 = scrum4me-web migratie + seed (designated migrator). ## Test Plan - [x] `npm run typecheck` (tsc --noEmit) — exit 0 - [x] `npx vitest run` — 161 tests groen (134 baseline + 27 nieuw) - [x] purity-gate `scripts/verify-no-deps.sh` — `lib/ is dep-clean` - [x] puur additief: `git diff origin/main -- lib/job-config.ts` heeft 0 verwijderde regels - [x] model postgres-valide (geïsoleerde `prisma validate` met postgresql-datasource; bare canonieke schema heeft geen datasource → `validate` daarop N/A) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Nieuwe los staande tabel job_kind_config (PK kind = ClaudeJobKind-enum),
@@map snake_case conform conventie. Geverifieerd postgres-valid in isolatie
(prisma validate op bare canonieke schema is N/A — geen datasource).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Additief: bestaande JobConfig/resolveJobConfig/snapshotFromConfig/KIND_DEFAULTS/
mapBudgetToEffort onaangeroerd. Runtime-gesplitste model/permissie; CODEX slaat
product.preferred_model + requires_opus over.

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-shared!21
No description provided.