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

3.1 KiB
Raw Blame History

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:

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

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.