Files

70 lines
4.9 KiB
Markdown

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