| # ADR-0008: Second Scenario Proves Modularity | |
| ## Status | |
| Accepted | |
| ## Context | |
| A "modular engine" claim is only proven when it is reused. Adding Mystery | |
| Roots is not just a feature — it is the test that confirms the engine/scenario | |
| boundary is correct. | |
| ## Decision | |
| Add `src/scenarios/mystery_roots.py` as a structurally distinct second scenario: | |
| - Different cognitive task (convergent mystery-solving vs. divergent world-growth) | |
| - Different agent cast (ClueGatherer, HypothesisFormer, DevilsAdvocate, MysteryJudge) | |
| - Different scheduling policy (4-phase cycle vs. even/odd/triple turns) | |
| - Same engine: Conductor, Ledger, Governor, ContextBuilder, EpisodicMemory | |
| The rule: **zero engine edits to add the scenario**. Only new files and a | |
| two-line addition to `scenarios/__init__.py`. | |
| ## Consequences | |
| - The engine/scenario boundary is verified, not assumed. | |
| - Adding a third scenario (illustrated serial, blackboard swarm, etc.) has a | |
| demonstrated path: one new file, one registry line. | |
| - The test `test_mystery_roots.py` acts as a regression guard for the contract. | |
| ## Result | |
| Mystery Roots shipped with **zero engine edits**. The modularity claim holds. | |