## ADDED Requirements ### Requirement: Independently verified current map facts The system SHALL store and present current player, vehicle, flag, and squad-territory coordinates only when each resource's plugin adapter maps a compatible current-service source, identity, coordinate, and observation time. #### Scenario: One position resource is incompatible - **WHEN** player and flag positions are compatible but the vehicle query lacks a required column, type, identity, or unique join - **THEN** Platform keeps the verified player/flag layers available, disables only the vehicle layer, and SHALL NOT return an empty vehicle list as a successful current result #### Scenario: Vehicle ownership is unverified - **WHEN** the source proves a vehicle identity/class and coordinate but does not prove a player or squad owner - **THEN** Platform stores the verified fields and leaves ownership null instead of inferring it from nearby players, movement history, or an expiry heuristic #### Scenario: Position scan later fails - **WHEN** verified positions were previously stored and a later current-service scan fails or is partial - **THEN** the map may retain the last completed rows with their concrete collection time and connection interruption, but SHALL NOT call them current or replace them with empty/generated points ### Requirement: Declared SCUM map asset and coordinate transform The realtime map SHALL use a plugin-declared distributable map asset/version and integrity digest, verified world bounds, and a tested coordinate transform version/digest compatible with the current SCUM adapter. #### Scenario: Verified coordinate is rendered - **WHEN** a player, vehicle, flag, or territory coordinate falls within the declared bounds and transform version - **THEN** the map places the marker at the tested map position and shows object type, name/ID, source coordinate, and collection time #### Scenario: Map metadata is incompatible or absent - **WHEN** the map asset, version, bounds, or transform does not match the current server adapter - **THEN** the map shows a readable unavailable/error state and SHALL NOT fall back to a gradient board, arbitrary percentage transform, fake points, or sample routes #### Scenario: Map asset digest does not match - **WHEN** the packaged/browser-served map asset or transform contract fails its plugin-declared integrity check - **THEN** the map is unavailable and SHALL NOT render coordinates against an unverified replacement asset #### Scenario: Coordinate is outside bounds - **WHEN** a source coordinate is non-finite or outside the declared world bounds - **THEN** Platform rejects it from the current map dataset and records a bounded validation failure ### Requirement: Automatically updated and distinguishable map layers The realtime map SHALL consume platform-local data automatically and provide distinguishable player, vehicle, and flag/squad-territory layers with player/squad filtering. #### Scenario: Operator changes layer visibility - **WHEN** an operator toggles players, vehicles, or flags/territory or applies a player/squad filter - **THEN** the map updates the visible verified markers without dispatching a Run query or manual refresh operation #### Scenario: Platform receives a newer coordinate - **WHEN** a verified automatic sync or declared companion position event updates a current position - **THEN** Platform publishes a safe local update and the open map can update through the platform event stream #### Scenario: Source cadence is insufficient - **WHEN** measured SCUM.db updates cannot support the declared realtime threshold - **THEN** the plugin uses a declared verified companion position source or the feature presents the measured cadence honestly; it SHALL NOT increase unsafe polling or fabricate intermediate movement #### Scenario: Map legend is rendered - **WHEN** multiple entity types are visible - **THEN** the UI provides icons or textual legend labels so entity meaning does not rely only on color #### Scenario: Historical movement was not requested - **WHEN** only current positions are available under this change - **THEN** the product SHALL NOT fabricate trajectories, 24-hour trails, ride associations, sampling history, or playback controls to satisfy realtime-map acceptance ### Requirement: Server-isolated realtime-map API The realtime-map API SHALL authorize the target server and return only bounded local current-position and safe object-summary fields needed by the map. #### Scenario: Foreign map selector is supplied - **WHEN** a player, squad, vehicle, flag, or territory selector belongs only to another server - **THEN** Platform returns no foreign marker and does not reveal its existence or server identity #### Scenario: Browser requests protected source material - **WHEN** a browser attempts to request raw database rows, SQL, host paths, database identifiers, map-source credentials, or Run connection details - **THEN** the API rejects the request and returns only named safe map fields