2.5 KiB
2.5 KiB
ADDED Requirements
Requirement: Platform exposes observation freshness with lifecycle projection
Platform SHALL expose the last Run-projected server lifecycle state together with a generic observation freshness derived from the bound Run endpoint's status and heartbeat age. Freshness MUST be distinct from the server lifecycle state.
Scenario: Bound Run is fresh
- WHEN the bound Run endpoint has an accepted recent heartbeat within the configured freshness interval
- THEN Platform SHALL expose the server runtime observation as fresh
- AND the lifecycle projection MAY be presented as currently observed
Scenario: Bound Run heartbeat is overdue
- WHEN the bound Run endpoint is offline, disabled, or beyond the configured heartbeat freshness interval
- THEN Platform SHALL expose the runtime observation as unverified or unreachable
- AND it MUST retain the last lifecycle projection rather than convert it to stopped
Requirement: Management views label unverified runtime state
Server list, server detail, and management terminal views SHALL show when a displayed lifecycle state is not currently vouched for by a fresh bound Run. They MUST NOT label a stale lifecycle projection as current process truth.
Scenario: Last observation was running but Run is offline
- WHEN the last lifecycle projection is running and the bound Run is unreachable
- THEN the management UI SHALL show the last observed running state with an offline or unverified qualifier
- AND it MUST NOT display the server as confirmed online solely from the persisted projection
Scenario: Management terminal opens while Run is unverified
- WHEN an operator opens the management terminal for a server whose bound Run is unverified
- THEN the terminal SHALL show that live delivery depends on Run recovery
- AND it SHALL continue to display accepted historical logs through the bounded SSE replay
Requirement: Explicit server stop remains Run-observed
An operator-requested stop SHALL remain a Platform-authorized intent executed by Run's generic supervision and plugin-declared lifecycle action. Platform SHALL project stopped only from the resulting Run observation or accepted lifecycle result.
Scenario: Operator stops a server while Run is available
- WHEN an authorized operator requests a server stop and the bound Run completes the declared stop action
- THEN Platform SHALL project the reported stopped process state
- AND the UI SHALL present the result as a current observation while the Run remains fresh