4.7 KiB
ADDED Requirements
Requirement: Lean SCUM player record
The SCUM product SHALL maintain only server-scoped player identity, current display name, first/last seen times, online session/login history, and verified current-server player details required for management.
Scenario: Player changes display name
- WHEN a newer authentic login event reports a different display name for an existing server-scoped player
- THEN Platform updates the current display name and SHALL NOT create alias-intelligence, shared-IP, access-risk, or automatic-enforcement records
Scenario: SCUM player model is migrated
- WHEN the new player store becomes authoritative
- THEN SCUM page/API/manifest/log-ingestion flows no longer create, update, read, or expose player-intelligence, access-attempt, shared-fingerprint, security-signal, alias-history, projection, observation, or Workflow records; a shared non-SCUM domain may remain only for a proven non-SCUM consumer
Requirement: Searchable and paginated player roster
The system SHALL provide a server-authorized local player-list API and full-width table with server-side pagination, bounded search, online-state and squad filters, and allowlisted sorting.
Scenario: Operator searches the roster
- WHEN an authorized operator searches by display name or external player ID and selects online or squad filters
- THEN Platform returns only matching players from the target server with total/page information and deterministic ordering
Scenario: Cross-server player identifier is supplied
- WHEN the same external player ID exists on another server or a filter references another server's squad
- THEN the response includes no cross-server row and reveals no other server association
Scenario: Unauthorized user requests players
- WHEN the session lacks effective read access to the target server
- THEN Platform denies the request without revealing whether any player exists
Requirement: Trustworthy roster values
The player roster SHALL display current stored business fields without fabricating defaults and SHALL distinguish online-session evidence from database details.
Scenario: Verified player details exist
- WHEN local records contain verified fame, cash, gold, squad, and last activity facts
- THEN the roster shows player name, unique identifier, online state, those verified facts, and their last synchronized time
Scenario: Database details are not yet known
- WHEN a login-created player has no successful detail row yet
- THEN the roster shows the player identity/session with unknown detail fields and SHALL NOT substitute zero,
1, sample data, or a guessed profile identifier
Scenario: No players have been recorded
- WHEN the local player table is confirmed empty
- THEN the page shows a normal player-data empty state without projection/Workflow terminology, sample players, or an action that starts data collection
Requirement: Player detail and login history
The system SHALL provide a player detail surface containing server-scoped identity, current verified facts, current known coordinate, login history, and last synchronized/collected times.
Scenario: Operator opens player detail
- WHEN an authorized operator selects a roster row
- THEN a drawer, dialog, or detail route shows the player's known fields and bounded login history without exposing raw logs, IP addresses, database rows, SQL, XML, paths, or credentials
Scenario: Coordinate is unavailable
- WHEN no verified current coordinate exists for the player
- THEN the detail surface states that the coordinate is unavailable and SHALL NOT calculate or render a default map point
Requirement: Explicit player edit form
The user-management surface SHALL edit player values through a named-field form that shows current and proposed values and delegates execution to the controlled-write capability.
Scenario: Operator edits an economy field
- WHEN an operator opens the Fame, cash, or gold edit control
- THEN the form requires an explicit target value and reason and SHALL NOT use hard-coded
+100,+1000, or other fixed increment behavior
Scenario: Attribute current value is unknown
- WHEN an operator opens an attribute or
855preset edit without verified current named values - THEN the UI prevents submission and explains that current values must be known; it SHALL NOT default the before or after value to
0or1
Scenario: User has read but not write access
- WHEN the current session may read players but lacks the effective permission for the selected field
- THEN the roster and detail remain available while the edit action is hidden or disabled with a readable permission explanation