step 5
This commit is contained in:
@@ -7,8 +7,8 @@ Phases 1-5 separate durable state, coordination policy, render-facing snapshots,
|
||||
## Status
|
||||
|
||||
- Phase 6 design package: proposed.
|
||||
- Phase 6 implementation: Step 4 complete.
|
||||
- Current alignment: `RuntimeStore` owns durable serialization, config, package metadata, preset IO, and persistence requests; `CommittedLiveState` owns the current committed/session layer state; and `RuntimeCoordinator` publishes typed persistence requests for persisted mutations. The remaining issue is that actual disk writes are still synchronous store work rather than queued, debounced, atomic background writes.
|
||||
- Phase 6 implementation: Step 5 complete.
|
||||
- Current alignment: `RuntimeStore` owns durable serialization, config, package metadata, preset IO, and persistence request execution; `CommittedLiveState` owns the current committed/session layer state; and `RuntimeCoordinator` publishes typed persistence requests for persisted mutations. Runtime-state persistence is now requested through the coordinator/event path and executed by the background writer.
|
||||
|
||||
Current persistence footholds:
|
||||
|
||||
@@ -252,9 +252,17 @@ Route `RuntimePersistenceRequested` or coordinator persistence outcomes into the
|
||||
|
||||
Initial target:
|
||||
|
||||
- accepted durable mutations request persistence
|
||||
- transient-only mutations do not
|
||||
- runtime reload/preset policies remain explicit
|
||||
- [x] accepted durable mutations request persistence
|
||||
- [x] transient-only mutations do not
|
||||
- [x] runtime reload/preset policies remain explicit
|
||||
|
||||
Current implementation:
|
||||
|
||||
- Store mutation methods update committed durable/session state and mark render state dirty, but no longer enqueue runtime-state writes directly.
|
||||
- `RuntimeCoordinator` remains the owner of the persistence decision and publishes `RuntimePersistenceRequested` only for accepted durable mutations.
|
||||
- `RuntimeUpdateController` handles `RuntimePersistenceRequested` and calls `RuntimeStore::RequestPersistence(...)`.
|
||||
- `RuntimeStore::RequestPersistence(...)` validates the request target, builds the runtime-state snapshot, enqueues it on `PersistenceWriter`, and records enqueue failures in `HealthTelemetry`.
|
||||
- Stack preset save remains a synchronous preset-file write; preset load updates state and relies on the coordinator persistence request for runtime-state persistence.
|
||||
|
||||
### Step 6. Define Shutdown Flush
|
||||
|
||||
@@ -307,14 +315,14 @@ Operator-triggered preset save often feels like it should complete before report
|
||||
|
||||
Phase 6 can be considered complete once the project can say:
|
||||
|
||||
- [ ] durable mutations enqueue persistence instead of directly writing from mutation paths
|
||||
- [ ] runtime-state writes are debounced/coalesced
|
||||
- [ ] writes use temp-file/replace or equivalent atomic policy
|
||||
- [ ] persistence failures are reported through structured health/events
|
||||
- [ ] transient/live-only mutations do not request persistence
|
||||
- [x] durable mutations enqueue persistence instead of directly writing from mutation paths
|
||||
- [x] runtime-state writes are debounced/coalesced
|
||||
- [x] writes use temp-file/replace or equivalent atomic policy
|
||||
- [x] persistence failures are reported through structured health/events
|
||||
- [x] transient/live-only mutations do not request persistence
|
||||
- [ ] shutdown flush behavior is explicit and tested
|
||||
- [ ] `RuntimeStore` remains durable-state/serialization owner, not worker policy owner
|
||||
- [ ] persistence behavior has focused non-render tests
|
||||
- [x] `RuntimeStore` remains durable-state/serialization owner, not worker policy owner
|
||||
- [x] persistence behavior has focused non-render tests
|
||||
|
||||
## Open Questions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user