Skip to main content

Module m0015_seed_starter_skills

Module m0015_seed_starter_skills 

Source
Expand description

Seed the global Skills catalog (db_skills, per-channel) with a curated starter set on fresh install.

Runs exactly once per channel, tracked in that channel’s db_migrations table — NOT gated on “is the catalog currently empty.” The prior seed_starter_skills_if_empty gate (removed) couldn’t distinguish “never seeded” from “seeded then the user deleted every starter skill on purpose,” so a normal srv restart after a full deletion silently resurrected the defaults (reagent P2, PR #2141 round 2 — confirmed by skill_seed.rs’s own former test). The migration framework’s once-ever-per-channel tracking fixes this at the root: once 0015_seed_starter_skills is marked applied, it never runs again for that channel regardless of what the user does to the catalog afterward.

Self-heals against installs that already ran the retired pre-migration startup-seed path (#2141) before this migration existed — every such channel already has the 6 starter-skill names present, which would collide with skill_upsert_unique_global’s name-uniqueness check and permanently fail this migration on every boot if seeding were attempted unconditionally (reagent P1, PR #2144). up() checks for an existing name collision first and treats it as “already seeded” rather than inserting.

Structs§

M0015SeedStarterSkills