Turn two State Hub sync failures into clean outcomes.
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Build and Publish Multi-Context Image / build-and-push (push) Successful in 31s

An over-long blocked_on now returns a 422 instead of a 500, and decided decision records such as 'approved' map onto the hub's made type.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 57383@bnt-lap001
Assistant-Session: ef71febe-2a37-4c34-a979-2508ca973c91
This commit is contained in:
tegwick 2026-10-06 11:16:00 +02:00
parent 2b5d8f90f8
commit 7d992821fb
5 changed files with 79 additions and 4 deletions

View file

@ -9,6 +9,7 @@ owner: claude-code
topic_slug: state-hub
created: "2026-10-06"
updated: "2026-10-06"
state_hub_workstream_id: "b73dbcde-1e01-5ed0-a8ed-9f3feac1f15b"
---
## Stop historical split views from writing their parent's status
@ -17,6 +18,7 @@ updated: "2026-10-06"
id: STATE-WP-ADHOC-2026-10-06-T01
status: done
priority: medium
state_hub_task_id: "09274552-5e91-5b2c-93bb-797704d52761"
```
Activity's custodian-WP-0003a/b/c split views carry the archived parent's UUID
@ -30,3 +32,30 @@ receiving, which takes the row from the parent only and gives historical
workplans no edges. A direct `consistency_check.py --repo activity-core --fix`
set the parent back to `archived`, and a re-run reports nothing to fix. UUIDs
and tasks were untouched. Unblocks RMGR-WP-0019-T03 (see STATE-WP-0095).
## Reject over-long blocked_on with a 422 instead of a 500
```task
id: STATE-WP-ADHOC-2026-10-06-T02
status: done
priority: low
```
`tasks.blocked_on` is `String(200)`, but `TaskCreate`/`TaskUpdate` accepted any
length, so a longer value failed in Postgres and returned HTTP 500 (hit by Repo
Manager's C-41 sync of RMGR-WP-0019-T03). The schemas now cap it at 200 and
return a 422 that names the field; long text belongs in `blocking_reason`
(Text). Live after the next State Hub deploy.
## Map file decision_type values onto the hub's made/pending
```task
id: STATE-WP-ADHOC-2026-10-06-T03
status: done
priority: low
```
C-32 sent a file's `decision_type` verbatim; repo-manager's RMGR-DEC-2026-004
says `approved`, which the hub rejects with a 422, so that decision was never
indexed. `normalise_decision_type` maps resolved records and decided synonyms
to `made`, and everything else to `pending`.