54 lines
2.3 KiB
Markdown
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
|