Seed neo48-perk-fresh and neo48-perk-branch via Game:FixturePlayerIds; level_too_low uses isolated fresh player, branch_already_chosen sets up neo48-perk-branch in pre-request instead of skipping on shared state.
Retroactive path-auto unlock on branch pick, unlock rollback, CanWritePlayer gate, expanded deny tests, gather-hook smoke, decomposition docs, review strikethroughs.
Add V004 perk tables, in-memory/Postgres stores, PerkUnlockEngine (tier-1 branch pick, path-auto tier-2 unlocks), level-up hook in skill XP grants, and AAA tests. Bruno docs note internal perk reevaluation on level-up (HTTP in NEO-48).