Files

43 lines
2.1 KiB
Markdown

# plugin-owned-game-lifecycle Specification
## Purpose
Ensure game-specific server lifecycle behavior lives in game plugins while platform and run remain generic.
## ADDED Requirements
### Requirement: Game plugins own game-specific lifecycle policy
The system SHALL keep game-specific install, update, pre-start, start argument, stop, status, executable path, app id, and default launch flag policy in plugin-owned manifests, action specs, templates, or scripts.
#### Scenario: SCUM lifecycle declares concrete commands in plugin assets
- **WHEN** SCUM requires SteamCMD installation/update or server start
- **THEN** the Steam app id `3792580`, `SCUMServer.exe` relative path, `+app_update 3792580 validate`, `-port`, `-MaxPlayers`, and `-log` are provided by SCUM plugin assets or plugin startup fields
- **AND** platform and run do not hardcode those values to make SCUM lifecycle work
### Requirement: Platform dispatches plugin lifecycle actions generically
The platform SHALL dispatch lifecycle jobs using plugin-declared action references and generic lifecycle/deployment inputs, and SHALL NOT require a game-specific run capability for SCUM deployment.
#### Scenario: SCUM install job is queued
- **WHEN** a SCUM server create/install lifecycle job is created
- **THEN** the job target key references the SCUM plugin install action
- **AND** the job execution input does not include a SCUM-specific server deployment plan
- **AND** required run capabilities contain only generic lifecycle/deployment capabilities
### Requirement: Run executes generic actions only
Run SHALL execute lifecycle action templates and scoped process/file operations generically, and SHALL NOT branch on a game id or contain per-game deployment executors.
#### Scenario: Legacy SCUM deployment plan reaches run
- **WHEN** a run assignment includes a legacy `serverDeploymentPlan`
- **THEN** run rejects it as unsupported legacy input instead of executing game-specific deployment logic
#### Scenario: Run capability report
- **WHEN** run reports supported capabilities
- **THEN** the report does not include `deployment.scum.v1`