From de07fc8f78fa572b4e8df6fa3922348b7669d9e0 Mon Sep 17 00:00:00 2001 From: Alexander Zielonka Date: Mon, 27 Apr 2026 14:14:24 +0200 Subject: [PATCH] test(01-02): fix L5 expected step list (Rule 1 deviation) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The plan's expected list for computeApplicableSteps(5, 'Fighter', ...) was PF2e-incorrect. Per CRB, class feats and skill feats are slotted at EVEN levels only (2, 4, 6, ..., 20). L5 is odd → no class/skill feat. Plan said: [class-features, boost, skill-increase, feat-class, feat-skill, feat-ancestry, review] PF2e-correct: [class-features, boost, skill-increase, feat-ancestry, review] The plan's other tests are internally consistent (L4 has feat-class, L3 does NOT have feat-class) — only the L5 case was misstated. Project's 'regelkonform' goal (CLAUDE.md, PROJECT.md) requires PF2e correctness above plan literalism. --- .../modules/leveling/lib/compute-applicable-steps.spec.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/server/src/modules/leveling/lib/compute-applicable-steps.spec.ts b/server/src/modules/leveling/lib/compute-applicable-steps.spec.ts index dc65212..31686da 100644 --- a/server/src/modules/leveling/lib/compute-applicable-steps.spec.ts +++ b/server/src/modules/leveling/lib/compute-applicable-steps.spec.ts @@ -1,7 +1,10 @@ import { computeApplicableSteps } from './compute-applicable-steps'; describe('computeApplicableSteps — Fighter (martial, no FA, no caster)', () => { - it('at L5 returns [class-features, boost, skill-increase, feat-class, feat-skill, feat-ancestry, review]', () => { + it('at L5 returns [class-features, boost, skill-increase, feat-ancestry, review] (L5 is odd → no class/skill feat)', () => { + // PF2e CRB: class feats and skill feats are at even levels (2,4,6,...). + // L5 grants ability-boosts, skill-increase, and ancestry-feat — but no class/skill feats. + // (Plan's expected list at L5 was PF2e-incorrect; corrected here per project's "regelkonform" goal.) const steps = computeApplicableSteps({ targetLevel: 5, className: 'Fighter', @@ -14,8 +17,6 @@ describe('computeApplicableSteps — Fighter (martial, no FA, no caster)', () => 'class-features', 'boost', 'skill-increase', - 'feat-class', - 'feat-skill', 'feat-ancestry', 'review', ]);