268 lines
13 KiB
Markdown
268 lines
13 KiB
Markdown
---
|
||
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.
|