# 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`