Files

35 lines
2.0 KiB
Markdown

## ADDED Requirements
### Requirement: Frozen deployment execution
Platform SHALL send a typed, versioned deployment definition with every lifecycle job for a configured server, and Run SHALL reject a definition it cannot validate or execute for the requested lifecycle action.
#### Scenario: Start uses the leased revision
- **WHEN** Run receives a valid `process.start` job with deployment revision 7
- **THEN** it SHALL execute only the fields in that leased revision and SHALL not fetch a mutable replacement definition
#### Scenario: Incompatible Run is rejected
- **WHEN** a selected Run does not advertise deployment-execution support
- **THEN** Platform SHALL reject dispatch before assigning a lifecycle job
### Requirement: Execution revision receipt
Run SHALL include a non-sensitive deployment execution receipt in each terminal deployment-aware lifecycle result, and Platform SHALL validate the receipt against the job's leased definition before projecting confirmation.
#### Scenario: Matching receipt is projected
- **WHEN** Run succeeds a start job and returns the job's deployment revision and action
- **THEN** Platform SHALL show that Run confirmed execution of that revision
#### Scenario: Mismatched receipt is rejected
- **WHEN** Run reports a deployment revision or lifecycle action different from the lease
- **THEN** Platform SHALL reject the terminal result and SHALL not mark the job successful
### Requirement: Explicit deployment field clearing
Platform SHALL preserve a deployment value when an update omits it and SHALL clear an optional field only when the update explicitly names that field for clearing.
#### Scenario: Omitted shell remains unchanged
- **WHEN** an editor saves a deployment update without a shell value
- **THEN** Platform SHALL preserve the saved shell selection
#### Scenario: Optional command is cleared
- **WHEN** an editor submits `stopCommand` in its explicit clear list
- **THEN** Platform SHALL store no stop command for the next deployment revision