Conductor is the template my Roblox games start from, and the framework at the centre of it. The orchestrator itself is about 300 lines with no dependencies: it finds every ModuleScript under the folders you hand it, requires them all, runs onInit on each in priority order, then runs every onStart in its own thread. There is no registration step. A module takes part because of where it is and what it is called, which is what keeps the framework small and is also the source of every sharp edge in it.
Around that sits the part every game needs and nobody wants to write twice: the boot sequence, saved player data mirrored live to its owner, a typed network layer compiled from schema files, the controller and React split for UI, an admin console with server enforced roles, a sound layer, and one worked feature wired end to end as a shape to copy. It is deliberately almost empty otherwise.
The thesis of the whole thing is that this architecture fails silently. A service Conductor never starts, a network module older than its schema, a typo in an ignore list: none of those error, none of them fail to type check, and each produces a game that boots and is quietly missing something. So the template carries a verification loop that turns every one of them into a red line, in about ten seconds, without opening Studio.
Everything is pinned. Rojo, selene, StyLua, lune, luau-lsp and the Blink compiler come from Rokit at exact versions, packages come from pesde, and even the Roblox API surface the type checker reads is pinned to a commit, because an unpinned linter or analyzer moves the quality floor underneath you.