Files

2.2 KiB

ADDED Requirements

Requirement: Companion uses runtime capability isolation

The SCUM Companion SHALL dispatch only declared typed handlers bound to its authorized server. Handler availability SHALL come from runtime capability and schema probes, not a game, UE4SS, database, build, revision, or version gate. A probe or command failure SHALL affect only that handler invocation.

Scenario: A runtime adapter is unavailable

  • WHEN a typed port or schema probe is unavailable
  • THEN the Companion returns a typed unavailable/failed/unknown result for that command and does not disable an unrelated plugin feature

Requirement: Run data channels are bounded

Run SHALL send SCUM stdout/stderr records to the Companion through the durable log channel and SHALL provide database data only as typed allowlisted projections and fixed server-management operations. No plugin, web page, or AI request SHALL receive a path, DSN, credential, raw row, arbitrary SQL, shell, socket, or RCON command.

Scenario: Unknown console output

  • WHEN stdout or stderr does not match a declared semantic parser
  • THEN the Companion records a bounded diagnostic and uploads no semantic event or raw line

Requirement: Mutations prove safety

State patch adapters SHALL use field allowlists, a pre-read, safe-window verification, a bounded write, and read-after-write confirmation. Reward adapters SHALL freeze their typed grant and return delivered, failed, or unknown without automatically retrying unknown outcomes.

Scenario: Confirmation cannot be established

  • WHEN a typed write or post-write read cannot establish success
  • THEN the Companion returns unknown and does not repeat the operation

Requirement: Vehicle spawning remains fixed

vehicle.spawn SHALL accept only a catalogued vehicle code and create exactly #spawnvehicle <vehicleCode> inside the Companion. Protected audit text SHALL not be present in command results or browser payloads.

Scenario: Unsafe spawn input

  • WHEN input includes an unlisted code, an extra field, command text, SQL, a path, credential, socket, shell text, or RCON text
  • THEN no transport call occurs and validation fails