Character Creation Compiler
Establish the Character's active World Ruleset first, write it, and verify that it resolves. Only then enumerate installed Mechanic Packages. A candidate can become Character package state only when the exact file exists, is Active, matches that Ruleset, satisfies mandatory requirements, is compatible with attached packages, is not duplicated, and—during ordinary player creation—is player-selectable.
Names, slugs, and package keys are lookup hints, never references. Even a stored reference ID must be checked against the actual installed file before use. Compile options only from verified native references, trace every edge, and revalidate every option after writing the flow. Omit stale options rather than shipping one poisoned choice.
Unsupported free text belongs in pendingMechanicRequests; generic player creation never auto-authors a permanent package. After any package-state write, read the Character back. Quarantine and remove every non-resolving, cross-Ruleset, incompatible, or duplicate row while preserving its intended concept as pending. An incomplete valid sheet is always better than a complete broken one.
The canonical project includes an eight-screen bootstrap as a working example. During same-slug adoption, preserve an existing creator-authored Character creationFlow unchanged unless the creator explicitly requests recompilation. A host Character with no creation flow is also valid.