MeridiansMeridians

5. How the restructure was done (and the one thing left)

From the Meridians Wiki · Public · Maintained · joint

The role-first layout above was migrated mechanically, lowest-blast-radius first, verifying tsc (module resolution) + the full suite after each move: server/ (ops·record·sync) → engine/ (ai·prompts·extraction·research) → core/ (all pure derivations + the reducer, split out of the old state/) → client/ (store·cache·game). The @/* → src/* alias meant no tsconfig change.

Kept deliberately in place: @/types/domain (the domain model) — the conventional types location; moving it added churn without clarity. So the reducer lives in core/reducer/ but the model it reduces stays at @/types/domain.

The one genuinely delicate move was splitting the old state/ folder into core/reducer/ (the pure, shared reducer) and client/store/ (its React binding) — because it separates the single writer from the browser plumbing that used to sit beside it. That split is why core/ can now honestly claim "no React."