36 lines
2.5 KiB
Markdown
36 lines
2.5 KiB
Markdown
## 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
|