state-hub/workplans/ADHOC-2026-10-06.md
repo-manager f6839b5236
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Build and Publish Multi-Context Image / build-and-push (push) Successful in 32s
repo.work.assign_missing_identifiers
source: repo-manager
reason: deterministic projection registration

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a1346b-72a4-7d40-b8bd-8b8ca346cfa2
2026-10-13 16:36:33 +02:00

63 lines
2.3 KiB
Markdown

---
id: STATE-WP-ADHOC-2026-10-06
type: workplan
title: "Ad hoc fixes — 2026-10-06"
domain: infotech
repo: state-hub
status: finished
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
```task
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
`b4eb45a9-69e3-4ab0-b00c-67a53c3117c5`. C-04 ran per file, so each
`fix-consistency` run set the shared row to whichever file it processed last.
On 2026-10-06 it flipped `finished` → `archived` → `finished`. The parent file
says `archived`; the views say `done`. C-04 and the frontmatter C-20 now skip
bound historical views (`historical_view_paths` from `historical_projection`
BINDINGS), so only the parent file supplies the row. This matches Forge
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
state_hub_task_id: "46401155-5d96-5d4f-87d4-3f4bacb36e73"
```
`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
state_hub_task_id: "9b21161e-b82f-5357-8f39-03eabaad6311"
```
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`.