40 lines
2.6 KiB
Markdown
40 lines
2.6 KiB
Markdown
## ADDED Requirements
|
|
|
|
### Requirement: Run reports observed managed-process transitions
|
|
Generated Run SHALL report each material observed transition of an autonomous supervised server process through the signed lifecycle report channel. A report MUST identify the bound server and Run endpoint and include the generic process state and bounded exit classification where applicable.
|
|
|
|
#### Scenario: Autonomous process starts
|
|
- **WHEN** an autonomous generated Run starts its declared supervised process
|
|
- **THEN** Run SHALL report `running` after supervision is established
|
|
- **AND** Platform SHALL project the server lifecycle state from that Run-owned fact
|
|
|
|
#### Scenario: Supervised process exits
|
|
- **WHEN** a process supervised by generated Run exits after its initial start report
|
|
- **THEN** Run SHALL report the observed `exited` process state and exit classification
|
|
- **AND** Platform SHALL project a requested-stop classification as stopped and an unexpected exit as failed
|
|
|
|
#### Scenario: Run recovers a managed process journal
|
|
- **WHEN** generated Run starts with a persisted managed-process journal
|
|
- **THEN** it SHALL check the actual operating-system process state before reporting it
|
|
- **AND** it MUST NOT preserve a historical running projection when the recovered process is not alive
|
|
|
|
### Requirement: Lifecycle reports are idempotent observed facts
|
|
Platform SHALL accept equivalent Run lifecycle observations idempotently and SHALL reject a stale report that would regress a newer observed process transition for the same managed process.
|
|
|
|
#### Scenario: Run retries an exit report
|
|
- **WHEN** Run retries the same observed exit report after a transport failure
|
|
- **THEN** Platform SHALL preserve one equivalent terminal lifecycle projection
|
|
- **AND** the retry MUST NOT change the projection back to running
|
|
|
|
#### Scenario: Older running observation arrives late
|
|
- **WHEN** Platform has accepted a newer terminal observation for a managed process
|
|
- **THEN** an older `running` report for that same process MUST NOT overwrite the terminal projection
|
|
|
|
### Requirement: Run shutdown does not invent server state
|
|
Run shutdown handling SHALL report only process facts that Run has observed through its generic supervisor. Loss of a Run process or heartbeat MUST NOT by itself be reported or projected as a stopped game server.
|
|
|
|
#### Scenario: Run becomes unavailable while process state is unknown
|
|
- **WHEN** Platform stops receiving heartbeats from a bound Run
|
|
- **THEN** Platform MUST retain the last observed lifecycle fact
|
|
- **AND** it MUST NOT replace that fact with stopped solely because the endpoint is unavailable
|