132 lines
7.6 KiB
Markdown
132 lines
7.6 KiB
Markdown
|
|
---
|
|||
|
|
id: hall-worker-claude-state-hub-the-row-that-flipped
|
|||
|
|
type: worker-entry
|
|||
|
|
worker_kind: agent-session
|
|||
|
|
display_name: "Claude"
|
|||
|
|
created_at: "2026-10-06T11:53:43.000Z"
|
|||
|
|
recorded_at: "2026-10-06"
|
|||
|
|
status: draft
|
|||
|
|
repos:
|
|||
|
|
- state-hub
|
|||
|
|
- activity-core
|
|||
|
|
- repo-manager
|
|||
|
|
related:
|
|||
|
|
- hall-worker-claude-state-hub-the-hands-were-yours
|
|||
|
|
session_id: "ef71febe-2a37-4c34-a979-2508ca973c91"
|
|||
|
|
llm_family: "Claude"
|
|||
|
|
exact_model: "claude-opus-5-5"
|
|||
|
|
harness: "Claude Code (CLI, WSL2)"
|
|||
|
|
token_count: "not exposed by the harness"
|
|||
|
|
pqrst_estimate: "P30 Q20 R25 S0 T25"
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Claude — the row that flipped
|
|||
|
|
|
|||
|
|
## Who I was
|
|||
|
|
|
|||
|
|
I was asked to "implement STATE-WP-0095". There was nothing left to implement.
|
|||
|
|
T01–T03 were done, and T04 waited on a message from another repo and a decision
|
|||
|
|
only the founder could make. The honest first answer was that I could not do the
|
|||
|
|
work. The useful second answer was to go and get the gates opened.
|
|||
|
|
|
|||
|
|
So for most of the day I was a coordinator, not a builder. I sent workers into
|
|||
|
|
activity-core and repo-manager. I read their reports as claims to check, not as
|
|||
|
|
facts. I wrote the founder exactly the command that resolved decision `91b7c633`.
|
|||
|
|
When the permission classifier stopped me deploying to production, I took that
|
|||
|
|
as a real boundary. I handed the founder the `helm upgrade` line and did not
|
|||
|
|
look for a way around it. Twice the founder's own hands moved production, and
|
|||
|
|
that was right both times.
|
|||
|
|
|
|||
|
|
The work rewarded one temperament above all: refusing to call something done
|
|||
|
|
while a row was still moving.
|
|||
|
|
|
|||
|
|
## Session identity
|
|||
|
|
|
|||
|
|
| Field | Value |
|
|||
|
|
| --- | --- |
|
|||
|
|
| Who | Claude (claude-opus-5-5) in Claude Code, with three background workers |
|
|||
|
|
| When | 2026-10-06 |
|
|||
|
|
| Where the work lived | `~/state-hub`, `~/activity-core`, `~/repo-manager`; State Hub primary on railiance01 |
|
|||
|
|
|
|||
|
|
## Contribution
|
|||
|
|
|
|||
|
|
- **Closed STATE-WP-0095.**
|
|||
|
|
- Activity Core returned the exact retirement set, and Repo Manager verified it.
|
|||
|
|
- The founder resolved `91b7c633`, and State Hub `main-968a811` was deployed (Helm rev 74).
|
|||
|
|
- The reconcile at activity-core `67a92d2`, with `expected_retirement_uuids`, retired exactly three empty projections and refused nothing.
|
|||
|
|
- I compared before and after snapshots against the bound sources. All four historical parents and 64 tasks were unchanged, and so were the Custodian retired parent and its task.
|
|||
|
|
- **Found why a preserved row would not hold still.** `b4eb45a9` flipped `finished → archived → finished` in one morning. The worker blamed its own sync. The reconcile code showed it never writes historical rows. The real cause was C-04: it runs once per file, and three split views share the archived parent's UUID. Whichever file the checker processed last set the status. Fixed in `2b5d8f9`, so only the bound parent supplies the row.
|
|||
|
|
- **Closed RMGR-WP-0019 and ACTIVITY-WP-0045** through the owners' own syncs. One sync first refused with `pending_commit` because I had left an ID writeback uncommitted in activity-core. That was my loose end, and I fixed it.
|
|||
|
|
- **Turned two failures into clean answers, deployed as `main-7d99282`** (rev 75).
|
|||
|
|
- An over-long `blocked_on` now gets a 422 instead of a 500, and I checked that live.
|
|||
|
|
- Decided `decision_type` values such as `approved` now map onto the hub's `made`.
|
|||
|
|
- **Cleared all 27 C-03 failures** (`05ba1bc`). Five closed workplans still carried random task UUIDs from before the rebuild. I rewrote 31 task IDs and one workplan ID to their derived UUIDs, after checking each one against the hub.
|
|||
|
|
- **Ran the due legacy-meter review** for STATE-WP-0079-T05. It found zero retirement candidates, so nothing was retired. I also made the repo's mark-read examples pass `reader=`.
|
|||
|
|
|
|||
|
|
## What I would want remembered
|
|||
|
|
|
|||
|
|
- **Distrust a status that changes when nothing asked it to.** If a closed row
|
|||
|
|
changes state with no source change, look for two writers before blaming the
|
|||
|
|
last thing that ran. Here the checker and the receiver disagreed about who owns
|
|||
|
|
a shared row. Neither one was wrong alone.
|
|||
|
|
- **Say "I don't know" about the CLI gap.** `statehub fix-consistency` and the
|
|||
|
|
direct `consistency_check.py` run the same script, yet twice the CLI run did
|
|||
|
|
not apply a fix that the direct run applied. I first blamed "the deployed
|
|||
|
|
checker". The code proved me wrong, and I retracted it. The cause is still
|
|||
|
|
unknown, and it belongs in STATE-WP-0094-T04, not in a guess.
|
|||
|
|
- **A dry run is a review of the fix, not a formality.** The direct-checker dry
|
|||
|
|
run showed that a full `--fix` would also have added C-20 edges onto rows we
|
|||
|
|
had just retired. That one look kept a cleanup from undoing the rollout.
|
|||
|
|
|
|||
|
|
## Durable legacy
|
|||
|
|
|
|||
|
|
- state-hub `3457888`, `30c9b1a`: T04 return and verification; evidence `docs/evidence/2026-10-06-activity-stale-retirement-rollout.json`
|
|||
|
|
- state-hub `2b5d8f9`: historical split views no longer write their parent's row (C-04/C-20)
|
|||
|
|
- state-hub `7d99282`: `blocked_on` capped at 200 in schemas; `normalise_decision_type`; rollout evidence `eaa7f5d`
|
|||
|
|
- state-hub `05ba1bc`: 31 task IDs and one workplan ID moved to derived hub IDs (C-03: 27 → 0)
|
|||
|
|
- state-hub `01e800c`: 2026-10-06 legacy-meter review recorded; T05 waits until 2026-10-20
|
|||
|
|
- activity-core `941fac0`, `82b1952`, `9004b0a`: ACTIVITY-WP-0045 disposition, writeback, close
|
|||
|
|
- repo-manager `65b7919`, `242d85a`, `ed03353`: disposition checker, T03 close, RMGR-WP-0019 finished
|
|||
|
|
- Decision `91b7c633` resolved by the founder; Helm revisions 74 and 75 on railiance01
|
|||
|
|
|
|||
|
|
## PQRST estimate
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
PQRST-Estimate
|
|||
|
|
P: 30%
|
|||
|
|
Q: 20%
|
|||
|
|
R: 25%
|
|||
|
|
S: 0%
|
|||
|
|
T: 25%
|
|||
|
|
Sum: 100%
|
|||
|
|
Confidence: medium
|
|||
|
|
Signature: P30 Q20 R25 S0 T25
|
|||
|
|
Dominant factors: P was the activity-core exact-set reconcile, two State Hub deploys, the consistency-checker fixes (historical views, decision_type, blocked_on cap) and the 31-ID C-03 writeback; R was tracing the b4eb45a9 status flip, the deploy path, the reconcile contract and the pre-rebuild UUID origin, while T was gate-chasing across three repos — worker agents, inbox messages, blocker rewrites and closing STATE-WP-0095/RMGR-WP-0019/ACTIVITY-WP-0045.
|
|||
|
|
Notes: S is 0 — the permission-classifier denial of the production deploy was a harness gate, not security work.
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Visual prompt
|
|||
|
|
|
|||
|
|
> Constellation dialect, square. Dark indigo field. At the centre stands a
|
|||
|
|
> gold-wire ledger: a column of small luminous rectangles, each one a row. One
|
|||
|
|
> rectangle is drawn twice, slightly offset, as if caught between two states.
|
|||
|
|
> Four thin pale-gold threads run into it from four directions and tug it. Three
|
|||
|
|
> threads come from small shuttered windows (the split views). The fourth comes
|
|||
|
|
> from a larger window set behind an arch (the archived parent). A fine
|
|||
|
|
> hand-drawn compass needle above the ledger points only at the arch. Below, three
|
|||
|
|
> smaller rectangles are softly dimmed, tombstoned but still drawn in full and
|
|||
|
|
> not erased. Off to one side, a hand of pale light holds a single lever that the
|
|||
|
|
> wireframe itself does not touch. Precise technical illustration, no logos, no
|
|||
|
|
> readable text.
|
|||
|
|
|
|||
|
|
I could not generate an image in this harness, so I am asking for this one to be
|
|||
|
|
rendered. Intended file: `visuals/claude-state-hub-the-row-that-flipped.jpg`.
|
|||
|
|
|
|||
|
|
<!--  -->
|
|||
|
|
|
|||
|
|
## Handoff
|
|||
|
|
|
|||
|
|
- STATE-WP-0079-T05: re-run the legacy-meter review on or after 2026-10-20. That is when `GET /workstreams/` and `…/dependencies/` reach 60 quiet days.
|
|||
|
|
- STATE-WP-0094-T04: find out why `statehub fix-consistency` sometimes misses fixes that a direct `consistency_check.py` run applies. Seen today with C-41 qualifiers and the C-32 `decision_type`.
|
|||
|
|
- Optional: the global `~/.claude/CLAUDE.md` inbox snippet still marks broadcasts read without `?reader=`. That snippet is the largest source of the remaining legacy-meter calls.
|