Files
Dimension-47/.planning/phases/01-level-up-pf2e-regelkonform/SEED-README.md
Alexander Zielonka ce214ab70c fix(01-03): align Foundry path with pf2e-8.0.3 layout
- Foundry pf2e v8 nests pf2e packs under packs/pf2e/ (v7 had packs/classes/ directly)
- Update FOUNDRY_CLASSES_DIR path to packs/pf2e/classes/
- Document v8 layout in SEED-README and update failure-mode path string
- Pitfall #5 mitigation: comment in seed script explains version-specific path

Worked-example verification (Wizard end-to-end):
- 320 ClassProgression rows seeded (16 classes x 20 levels)
- Wizard L1..L19 carry ARCANE spell-slot increments + L1 has 5 cantrips
- Wizard L1 has choiceType=school, choiceOptionsRef=wizard-school
- 1 ClassFeatureOption row for wizard-school (battle-magic / School of Battle Magic)
- Idempotent on re-run: 0 created, 320 updated, 0 errors
2026-04-27 14:53:46 +02:00

67 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase 1 — ClassProgression Seed README
The seed script `server/prisma/seed-class-progression.ts` populates the `ClassProgression`
and `ClassFeatureOption` tables from the Foundry pf2e system repository (license: Apache 2.0
+ OGL 1.0a + Paizo Community Use Policy — verified 2026-04-27).
## One-time dev setup
Clone the pinned Foundry pf2e tag into the gitignored data folder:
```bash
cd server/prisma/data
git clone --depth 1 --branch pf2e-8.0.3 https://github.com/foundryvtt/pf2e.git foundry-pf2e
```
`server/prisma/data/foundry-pf2e/` is excluded from version control (.gitignore line added in Plan 01).
Do NOT commit the clone. Re-clone after a Foundry pf2e major version ships.
**Pinned tag:** `pf2e-8.0.3` (Pathfinder 2e system release on the `foundryvtt/pf2e` repo;
selected from `https://github.com/foundryvtt/pf2e/tags` — current stable Pathfinder 2e
release as of 2026-04-27, includes Player Core / APG content for all 16 D-16 classes).
> **Tag drift note (RESEARCH §Pitfall 5):** The Foundry pf2e JSON shape may change across
> major versions. If the seed script fails with "Class JSON does not match expected schema",
> either pin to an older tag here or update the parser in `seed-class-progression.ts`.
> Do **not** auto-track HEAD.
## Run the seed
```bash
cd server
npm run db:seed:class-progression
```
Idempotent: running twice does not duplicate rows. Console output reports `created` and
`updated` counts plus any errors.
## Foundry pf2e v8 layout note
In Foundry pf2e v8 (the pinned tag `pf2e-8.0.3`), class JSONs live under
`packs/pf2e/classes/`. Earlier major versions (v7) used `packs/classes/` directly. The
seed script reads from the v8 path; if you bump the pinned tag back to a v7 release,
update `FOUNDRY_CLASSES_DIR` in `server/prisma/seed-class-progression.ts` accordingly.
## Failure modes
- **"Foundry pf2e clone not found at server/prisma/data/foundry-pf2e/packs/pf2e/classes/"** —
run the `git clone` step above.
- **"Class JSON does not match expected schema"** — Foundry pf2e changed the JSON shape
between major versions. Update the seed parser or pin to an older tag.
## What gets seeded (cumulative across Plan 03 and Plan 03b)
- **ClassProgression** rows: 16 classes × 20 levels = 320 rows, with `grants[]`,
`proficiencyChanges`, `spellSlotIncrement`, `cantripIncrement`, `repertoireIncrement`,
`choiceType`, `choiceOptionsRef`. Plan 03 ships Wizard L1..L20 fully (worked example);
Plan 03b adds remaining 15 classes' L1..L20 rows (data-only — Plan 03's pipeline already
seeds 320 rows; Plan 03b just enriches them with overlay data).
- **ClassFeatureOption** rows: hand-curated Cleric Doctrines, Wizard Schools, Champion
Causes, Sorcerer Bloodlines (where L1-set), Druid Orders, etc. Joint goal across both
plans: ≥50 rows. Plan 03 ships at least 1 (Wizard School worked example); Plan 03b
ships ≥49 more.
- Spell-slot/cantrip/repertoire progressions come from the hand-curated overlay
`server/prisma/data/spell-slot-overlays.ts` because Foundry encodes them in prose
(Pitfall #6). Plan 03 ships Wizard's full L1..L19 entries; Plan 03b ships the other
6 caster classes plus empty arrays for non-casters.