the-custodian/workplans/CUST-WP-0075-dependency-graph-driven-unblocking.md
codex 786b082a19
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Python Tests / pytest (push) Successful in 23s
CUST-WP-0075: reconcile owner waits and decision routing
2026-10-04 01:17:18 +02:00

268 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: CUST-WP-0075
type: workplan
title: "Use the dependency graph to shrink the blocked set and route human gates to decisions"
domain: infotech
repo: the-custodian
status: finished
owner: the-custodian
topic_slug: custodian
flavor: planning
created: "2026-10-03"
updated: "2026-10-04"
related:
- CUST-WP-0072
- CUST-WP-0074
- STATE-WP-0092
- COORDINATION-WP-0005
origin: analysis
origin_ref: the-custodian/docs/evidence/2026-10-03-dependency-graph-triage/README.md
state_hub_workstream_id: "6dac666d-b2f8-5d50-b060-272713b6e8a1"
---
# Use the dependency graph to shrink the blocked set
## Why
`CUST-WP-0072` and `CUST-WP-0074` built the facility: `flavor`, workplan
and task `depends_on`, `needs_human`, `blocked_on`, `wait_until`,
`decision_id`, indexed by C-20 and checked by C-39/C-40/C-41. Nobody has
yet *read* the resulting graph. On 2026-10-03 the open set is 108
workplans (100 blocked) with 232 wait tasks. The security concepts
(credential custody, attended OpenBao provisioning, identity, access
engine) are the dominant blockers, and every one of their 69 human gates
is free text: zero carry a `decision_id`, so Bernd has no single list to
resolve and C-40 rule 4 never fires.
This workplan uses the graph in three ways: clear what the graph says is
already satisfied, correct what the graph says is mis-statused, and
collapse the human gates into a handful of hub decisions that one
attended session can resolve. Evidence and scripts:
`docs/evidence/2026-10-03-dependency-graph-triage/`.
Rules: owner repos are edited directly (Bernd's 2026-09-30 direction on
`CUST-WP-0074-T06`), one commit per repo, synced by `fix-consistency`;
no hub writes except recording and resolving decisions; residual-flavor
workplans are left alone except to finish one whose tasks are all done.
## Capture the graph and publish the triage
```task
id: CUST-WP-0075-T01
status: done
priority: high
state_hub_task_id: "9d9e994d-0b48-5945-ab13-f301f3343aae"
```
File-view and hub-view scans committed under
`docs/evidence/2026-10-03-dependency-graph-triage/` with the headline
numbers in its README. Done 2026-10-03.
## Clear satisfied waits and correct mis-statused workplans
```task
id: CUST-WP-0075-T02
status: done
priority: high
state_hub_task_id: "0e524c1f-3fd7-5736-9fb2-883f4e6df70a"
```
Graph says satisfied (every `depends_on` target terminal):
`ACTIVITY-WP-0032-T05`, `COORDINATION-WP-0004-T02`, `TD-WP-0003-T07`,
`USER-WP-0027-T04`, `USER-WP-0028-T03`, `RCLK-WP-0005-T04` (keeps its
`blocked_on`), `RAPPS-WP-0014-T03` and `MARKITECT-WP-0002-T07` (keep
their human gate; drop the satisfied `depends_on`).
Mis-statused: `UPC-WP-0002/0003/0004` blocked without a wait task;
`MARKITECT-WP-0002` and `RBT-WP-0006` active while every open task
waits; `ACTIVITY-WP-0042` proposed with three unqualified waits;
`RAIL-FAB-WP-0031` blocked with all tasks done; `FLUID-WP-0007` carries
the non-canonical status `done`; `NK-WP-0011` depends on
`NK-WP-0003/0004/0006`, which no file carries.
Done when each owner repo is committed and synced and a re-run of the
file scan lists none of the above.
## Route the human gates to decisions
```task
id: CUST-WP-0075-T03
status: done
priority: high
state_hub_task_id: "a363639a-d688-5c72-9224-63d06dec670e"
```
Cluster the 69 `needs_human` waits by the person's actual act (one
attended OpenBao provisioning window, one ArgoCD go-ahead, one Telegram
operator session, Vergabe two-user acceptance, trust-root design, and
so on). For each cluster record one hub decision whose description lists
the task ids, then set `decision_id` on those tasks in the owner files.
Done when every `needs_human` wait in a non-residual open workplan
carries a `decision_id` and Bernd has one ranked decision list.
## Record the security-infrastructure lessons
```task
id: CUST-WP-0075-T04
status: done
priority: medium
state_hub_task_id: "b861e0af-43ad-5052-b224-9bd95762ddfd"
```
Write `history/20261003-security-gate-packets.md`: what the graph shows
about how credential, identity and access work gets blocked, and the
improvements that make it easier to maintain and extend (decision-linked
gates, batched attended windows, delegated-applier scope, catalog lanes
as the unit of provisioning). Proposals only; no canon change here.
## Monitor: keep repo and hub in step
```task
id: CUST-WP-0075-T05
status: done
priority: medium
state_hub_task_id: "c78b104d-cdf0-5aca-81a4-b5569cc90479"
```
After every slice: commit, `statehub fix-consistency` for each touched
repo, one progress event on this workplan, and the headline numbers
appended below so progress is visible from the hub.
2026-10-03 Codex continuation: repeatable read-only monitor implemented in
`scripts/monitor_dependency_triage.py`, with seven regression checks covering
YAML lists/quoting, pagination, missing projections, decision drift, residual
exclusion and independent human gates. Run it with `--output <scratch-dir>`;
review `monitor.json` before acting. Current live findings are retained in
`docs/evidence/2026-10-03-dependency-graph-triage/monitor-2026-10-03.json`:
four unrouted human gates, sixteen unqualified waits and twelve qualifier
differences. This task remains in progress until those findings are reconciled;
the earlier T02/T03 results are point-in-time, not a current clean scan.
## Hand the infrastructure proposals to their owners
```task
id: CUST-WP-0075-T06
status: done
priority: high
state_hub_task_id: "91fd64c1-2dfd-57d1-8930-51477c530202"
```
`history/20261003-security-gate-packets.md` proposes P1 (unrouted human
gate is a WARN), P2 (standing attended provisioning window with a
generated checklist), P3 (decide the dual-control value path), P4 (catalog
lane as the unit of extension), P5 (daily owner-return sweep) and P6a (CLI
qualifier sync gap, already reported to state-hub as message `70d08f35`).
2026-10-03: sent state-hub `b4825539` (P1, P5, P6), railiance-platform
`f84637fa` (P2, P3), ops-warden `79549660` (P4). Send each owner one message with
the proposal and the evidence; record their workplan ids here. Do not
write their workplans for them.
2026-10-03 Codex continuation: all three original proposal messages remain
unread; no acceptance, owner workplan ID or decline found. Three local derived
`cross_owner_wait` observations are attached under `handoffs` in the monitor
snapshot, with stable case IDs and original message IDs. Obligor workplan IDs
remain unknown pending owner identification. Newer platform/warden replies
concern D1 readiness and the fetch-policy bug, respectively; neither answers
these proposals. No worker was woken. T06 remains `wait`.
2026-10-03 worker continuation (founder explicitly requested repo workers):
state-hub, railiance-platform and ops-warden workers dispatched first, with
further affected repos queued in
`docs/evidence/2026-10-03-dependency-graph-triage/worker-dispatch-2026-10-03.json`.
ops-warden accepted P4 through reply `cda45346-67d1-4c1c-a0b1-4a13b5032551`:
`WARDEN-WP-0041` owns catalog/template source delivery, with T02 implementation
and T03 platform-seam acceptance still open. Source review and handoff are done
in `ac112d8`. The proposed contract is
`ops-warden/wiki/CatalogLaneScaffoldContract.md`; platform owns its rendering
schema. This resolves that owner handoff, not the downstream implementation.
Reviewed dispositions live in `owner-handoff-receipts.json` in the evidence folder.
## Progress log
- 2026-10-03 start: 108 open / 100 blocked / 232 wait / 69 human gates /
0 with `decision_id`.
- 2026-10-03 T02: satisfied or mis-statused records fixed in 11 repos.
COORDINATION-WP-0004, RAIL-FAB-WP-0031 and FLUID-WP-0007 finished.
ACTIVITY-WP-0032-T05, COORDINATION-WP-0004-T02 and TD-WP-0003-T07 had
prose-only blockers; the real edge was encoded (or, for the canon
registration, found already delivered and closed).
- 2026-10-03 T03: eleven hub decisions recorded (D1 attended OpenBao window
`62aa95e4` … D11 operator setups `b6a44b55`). 70 human gates carry a
`decision_id` in their owner files across 29 repos. `WARDEN-WP-0037-T03` has
no stated gate and stays with its owner.
- 2026-10-03 T04: `history/20261003-security-gate-packets.md`.
- 2026-10-03 sweep: 17 owner-return waits had an unread reply from the very
agent they wait on. Repo agents dispatched for ops-mason (5) and
gate-house (5); user-engine (3), activity-core, railiance-platform and
rapp-policy-nexus follow.
- 2026-10-03 sweep results: COORDINATION-WP-0004 finished (owner return sat
unread a week). RCLK-WP-0002-T01 done: railiance-master ruled 2026-09-21,
gate-house reviewed today, repo-manager registered `RCLK-WP` (`03869ff`).
GH-WP-0004-T07/T08 and MASON-WP-0007-T03 done; MASON-WP-0005-T02 and
RPF-WP-0043-T02 to todo (the latter broke a mutual wait with
rapp-policy-nexus). Other replies were questions back (answered) or
hand-offs to a founder decision (encoded).
- 2026-10-03 D12 recorded for the company-vessel founder actions; WARDEN-WP-0037-T03
routed to D3. All 83 human-gated waits in open non-residual workplans carry
a `decision_id`. Ranked list: `docs/decision-packets-2026-10-03.md`.
- 2026-10-03 finding: the CLI sync left the hub without the `decision_id` on
57 of 58 routed tasks; a direct checker run with `--fix` is pushing them
(see the assessment, P6a).
- 2026-10-03 close of day: every routed gate verified in the hub (84 of 84
carry the file's `decision_id` after a direct `consistency_check.py --fix`
over 32 repos). File view: 107 open workplans, 232 wait tasks, 83 human
gates in non-residual plans, all routed to 12 decisions; 0 satisfied
waits, 0 unqualified waits, 0 blocked plans without a wait task. Owner-return
waits 62 → 52. T02/T03 done; T05 continues as the monitor; T06 next.
- 2026-10-03 later: CCR-2026-0031 live end to end (fetch gate fixed and deployed,
core-hub rev 29, verify-publisher 121/2). Re-scan: 109 open, 0 satisfied or
unqualified waits. Next candidates: 45 open todo tasks that agents can pick up
(NK-WP-0011 T02–T09 active, NK-WP-0045 T02/T03, INFD-WP-0005 T04/T07,
FEP-WP-0002-T03, GH-WP-0004-T12, ORGREF-WP-0001 T01/T03–T05, MASON-WP-0005-T02,
RPF-WP-0043-T02, STATE-WP-0079-T04, REINAH-WP-0003-T05, CR-WP-0005 T01–T03),
and two unread owner replies: GH-WP-0004-T06 (informed-decision) and
NK-WP-0042-T02 (user-engine). Follow-up on the CCR-2026-0031 lane: ops-warden
catalog entry plus fetch-pin regeneration (checklist row 6).
- 2026-10-03 Codex continuation: monitored 146 registered repos; six checkouts
unavailable. Visible file view: 107 open plans including residuals; actionable
non-residual view: 100 open / 94 blocked / 232 wait / 79 human gates, four
unrouted; 56 owner returns. Twelve qualifier differences and sixteen
unqualified waits are recorded as T05 follow-up. Four waits have terminal
predecessors, but separate human/owner gates and task prose still need review.
T06's three proposals remain unanswered. The monitor and seven regression
checks are implemented; no fleet cleanup or proposal acceptance is claimed.
- 2026-10-04 owner handoffs complete: STATE-WP-0094, RPF-WP-0050 and
WARDEN-WP-0041 are live implementation records. State Hub reply
`c17795db-b3f2-47e8-8be8-04d5d6dfecbf` partially accepts P1/P5/P6a;
P1 and owner-return detection are delivered, wakeup execution, causal diagnosis
and graph freshness remain T03/T04/T05. Legacy remote nightly sweep declined.
Platform reply `981a20fc-315b-4fd8-9783-9c3460a4840d` accepts local checklist
preparation; P3 remains an explicit human custody choice and P4 remains source
scaffold delivery. Reviewed original-thread receipts close T06 only.
- Residual handed off before closure: CUST-WP-0076-T01 owns the operator's
provisioning scope/date/cadence choice, returning to RPF-WP-0050-T03.
It remains residual and is not implemented or scheduled.
- Activity Core current source gates are reconciled separately from the
historical registrar defect. Request `6bf8ca98-ada1-43ab-83e7-207d4ab195fe`
and ACTIVITY-WP-0042-T08 retain that actual blocker. Read-only derivation proof
found omitted legacy YAML task lists and a shared bound UUID; the prepared
preflight-only patch is deliberately unapplied. No receiving preservation,
consumer refresh or runtime acceptance is inferred.
- 2026-10-04 closing verification: all 28 selected qualifier/dependency rows,
six human decision routes and three Activity/User actual-wait records match
source at their task UUIDs. Freedom Intelligence was fast-forwarded before
its checker repair; warning-level PASS alone was not accepted.
T05 completes this reconciliation and the repeatable read-only monitor.
Continuing automation and receiving diagnosis remain STATE-WP-0094,
owner source scaffolds remain RPF-WP-0050/WARDEN-WP-0041, and cadence
remains the unpromoted live residual CUST-WP-0076.
Validation: 11 monitor tests; 182 State Hub checker/CLI tests; 118 Warden
routing/plan tests; 7 platform renderer tests. Platform existing-suite
catalog assertion (52/53) and three historical C07 assessment failures
remain explicitly reported; no broad estate-wide clean audit is claimed.
- Closing monitor: `monitor-workers-2026-10-04.json`: 146 registered repos,
144 available checkouts; 106 open non-residual plans, 241 waits, 86 human
gates; zero unrouted/unqualified/terminal-predecessor waits and zero qualifier
drift. All three owner handoffs satisfied. Two missing checkouts and sixteen
historical parse warnings remain explicit coverage limits.