Files

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