Harden reconciliation conflict handling

This commit is contained in:
2026-05-23 18:18:44 +02:00
parent 7831673820
commit 706b360736
8 changed files with 445 additions and 22 deletions

View File

@@ -4,7 +4,7 @@ type: workplan
title: "UI State Change Reconciliation"
domain: custodian
repo: state-hub
status: active
status: finished
owner: codex
topic_slug: custodian
planning_priority: high
@@ -159,7 +159,7 @@ human-confirmation cases.
```task
id: STATE-WP-0048-T06
status: todo
status: done
priority: high
state_hub_task_id: "b1769ce0-de21-4faf-9db4-75ebc8506044"
```
@@ -170,11 +170,16 @@ missing, the workplan is archived, or the State Hub host path is unavailable.
Done when reconciliation failures produce clear, actionable records instead of
partially applied state.
Result 2026-05-23: apply-mode reconciliation now blocks stale UI requests,
repo file/cache drift, missing host-path access, and failed file patch attempts
before DB mutation. These cases create reconciliation messages with actionable
reasons and return `conflict: true` for dashboard display.
## T07 - Tests And Consistency Integration
```task
id: STATE-WP-0048-T07
status: todo
status: done
priority: high
state_hub_task_id: "7d7e36e8-783d-494f-9691-5213e35c7539"
```
@@ -191,6 +196,12 @@ Progress 2026-05-23: routed dashboard status controls through the
reconciliation API so UI-originated changes exercise the same write-through and
deferred-record path as API clients.
Result 2026-05-23: added API coverage for stale expected status, workplan
file/cache drift, and unavailable host paths. Added a dependency-free dashboard
component test that verifies status controls post the reconciliation contract,
include `expected_current_status`, keep local state on conflicts, and surface
`out of sync` to the user.
## Acceptance Criteria
- Dashboard state changes never create silent DB/file divergence.