## ADDED Requirements ### Requirement: SCUM feature ownership is plugin-local The SCUM plugin SHALL own SCUM schemas, allowlists, migration adapters, Companion behavior, and feature UI. The platform SHALL retain only reusable authorization, isolation, approval, auditing, expiry, queues, protected storage, generic Run transport declarations, and generic plugin-host primitives. `platform_web` SHALL not import SCUM code or branch on `game.scum`. #### Scenario: Page mounting - **WHEN** an authorized administrator opens the installed plugin route - **THEN** the generic host mounts the declared plugin bundle with only server-scoped permission context ### Requirement: Feature availability is runtime scoped The plugin SHALL expose a feature as actionable only when its declared Companion handler or event producer is currently available for that server. Availability SHALL not be gated by a game or adapter version/build/revision. #### Scenario: One adapter fails - **WHEN** a schema probe for state patching fails - **THEN** state patching is unavailable with a typed reason while other declared capabilities remain independently available ### Requirement: Transitional records are read-only migration input Platform records MAY be displayed with provenance while plugin-owned records become authoritative per server and feature. Migration flags SHALL be scoped to the server and feature, never to a game version. #### Scenario: Migration flag is absent - **WHEN** no unique server-feature migration flag is present - **THEN** historical records remain readable and plugin writes stay disabled ### Requirement: Protected request declarations are generic The plugin manifest and SDK SHALL support generic declared protected request transports for SQL, RCON, and management-program text. Declarations SHALL use only logical server-bound transport/target keys and bounded text fields. Browser projections and audit records SHALL redact request text. Declarations shall not grant credentials, paths, raw connections, direct sockets, or host OS shell execution. #### Scenario: Plugin generates an SQL request - **WHEN** the plugin queues SQL text through a declared protected transport - **THEN** Platform stores and audits only its protected/redacted form and forwards it only after generic authorization and approval checks