The design docs describe a cartridge model with GameDriver / GameRun style separation, but the live implementation no longer visibly reflects that architecture. We need either to restore that boundary or explicitly define the replacement contract.
Expected value / why now
Without an explicit boundary contract, future work will keep drifting back into lobby/ and the cartridge idea will remain aspirational only.
Acceptance criteria
Decide whether the original GameDriver / GameRun model is being restored as designed, or replaced by a simpler but explicit cartridge contract.
Document the chosen boundary in repo docs and make it discoverable from the active architecture path.
Ensure routing/state ownership in code aligns with the documented contract.
State how a future non-FupOgFakta game would plug in without adding game-specific branching to lobby/.
PR references #311 and records the architectural decision clearly.
Scope boundary
Not implementing a second game.
Not forcing full generic timer/plugin infra if a smaller explicit contract is enough for MVP.
Parent issue: #311
## Problem statement
The design docs describe a cartridge model with `GameDriver` / `GameRun` style separation, but the live implementation no longer visibly reflects that architecture. We need either to restore that boundary or explicitly define the replacement contract.
## Expected value / why now
Without an explicit boundary contract, future work will keep drifting back into `lobby/` and the cartridge idea will remain aspirational only.
## Acceptance criteria
- Decide whether the original `GameDriver` / `GameRun` model is being restored as designed, or replaced by a simpler but explicit cartridge contract.
- Document the chosen boundary in repo docs and make it discoverable from the active architecture path.
- Ensure routing/state ownership in code aligns with the documented contract.
- State how a future non-FupOgFakta game would plug in without adding game-specific branching to `lobby/`.
- PR references #311 and records the architectural decision clearly.
## Scope boundary
- Not implementing a second game.
- Not forcing full generic timer/plugin infra if a smaller explicit contract is enough for MVP.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Parent issue: #311
Problem statement
The design docs describe a cartridge model with
GameDriver/GameRunstyle separation, but the live implementation no longer visibly reflects that architecture. We need either to restore that boundary or explicitly define the replacement contract.Expected value / why now
Without an explicit boundary contract, future work will keep drifting back into
lobby/and the cartridge idea will remain aspirational only.Acceptance criteria
GameDriver/GameRunmodel is being restored as designed, or replaced by a simpler but explicit cartridge contract.lobby/.Scope boundary