Files

54 lines
2.3 KiB
Markdown

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