49 lines
1.9 KiB
Markdown
49 lines
1.9 KiB
Markdown
# Spec Delta — game-server / integrations capability
|
|
|
|
## ADDED Requirements
|
|
|
|
### Requirement: EnhancedGameServer top-of-stack bootstrap
|
|
|
|
The `@suaveplan/game-server` package SHALL expose an `EnhancedGameServer`
|
|
class under the `./integrations/enhanced-server` subpath export that
|
|
bootstraps the canonical engine + plugin stack via a single
|
|
`bootstrap(options)` entry point.
|
|
|
|
#### Scenario: Bootstrap installs all eight plugins
|
|
|
|
- **WHEN** `bootstrap()` is invoked with valid options
|
|
- **THEN** a `GameLoop`, `PluginManager`, and `GameEngine` SHALL be
|
|
constructed and wired
|
|
- **AND** all eight built-in plugins (`ABTestPlugin`, `AnalyticsPlugin`,
|
|
`FeatureFlagPlugin`, `LoggingPlugin`, `PersistencePlugin`, `RulesPlugin`,
|
|
`WorkflowPlugin`, and one further reserved slot satisfied by
|
|
`BasePlugin` derivatives) SHALL be installed in dependency order via
|
|
`PluginManager.installAll`
|
|
- **AND** the `GameEngine` SHALL be returned ready to `start()`.
|
|
|
|
#### Scenario: Double bootstrap rejected
|
|
|
|
- **WHEN** `bootstrap()` is invoked twice on the same `EnhancedGameServer`
|
|
- **THEN** the second call SHALL throw `GameServerError` with code
|
|
`GAME_SERVER.ALREADY_BOOTSTRAPPED`.
|
|
|
|
#### Scenario: Plugin install failure rolls back
|
|
|
|
- **WHEN** any plugin install fails during `bootstrap()`
|
|
- **THEN** the failure SHALL be wrapped as `GameServerError` with code
|
|
`GAME_SERVER.BOOTSTRAP_FAILED`
|
|
- **AND** the underlying `cause` SHALL be the original error.
|
|
|
|
#### Scenario: Lifecycle deferral
|
|
|
|
- **WHEN** the caller invokes `start()` / `tick()` / `stop()` / `dispose()`
|
|
- **THEN** the `EnhancedGameServer` SHALL delegate to the underlying
|
|
`GameEngine` so existing engine lifecycle codes propagate unchanged.
|
|
|
|
#### Scenario: Injected dependencies are honoured
|
|
|
|
- **WHEN** `bootstrap(options)` is invoked
|
|
- **THEN** every plugin SHALL receive the injected `Clock` and
|
|
`LoggerLike` so deterministic tests observe stable timestamps and
|
|
captured logs.
|