From 97db2a972f31b05f4dcbbdb4d78259558c299a00 Mon Sep 17 00:00:00 2001 From: codex Date: Tue, 21 Jul 2026 01:57:25 +0200 Subject: [PATCH] CUST-WP-0061 finished: closure review (6/6 tasks done, same-day) Stage 3 delivered end-to-end: intake hub entity (T01), fix-consistency registration (T02), the promotion transition (T03, the actual point of this workplan), generated per-repo index (T04), queue closures retargeted to it (T05), suggestions retired with a real-data migration (T06). All live-verified against the running API/DB, not just tests -- including catching and fixing a real bug in T03 (silent false-success on a missing repo_id). 563 tests green throughout. Carried forward, not blocking: full transclusion rendering (markitect, T04 follow-on), an engagement hub entity (T02's honest deferral), the pre-existing sync_schedules bug found 2026-07-20 (TD f29e49eb, out of scope), and the 10 migrated intake findings needing their actual domain owners to pick them up. The reconciliation that started with AWQ-010 is complete. Co-Authored-By: Claude Fable 5 --- ...rk-record-stage3-intake-promotion-index.md | 78 ++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/workplans/CUST-WP-0061-work-record-stage3-intake-promotion-index.md b/workplans/CUST-WP-0061-work-record-stage3-intake-promotion-index.md index f16e77f..60430b3 100644 --- a/workplans/CUST-WP-0061-work-record-stage3-intake-promotion-index.md +++ b/workplans/CUST-WP-0061-work-record-stage3-intake-promotion-index.md @@ -3,7 +3,7 @@ id: CUST-WP-0061 type: workplan title: "Work-record stage 3 — intake entity, promotion transition, generated index" domain: infotech -status: active +status: finished owner: codex topic_slug: custodian planning_priority: high @@ -137,3 +137,79 @@ status: done priority: low state_hub_task_id: "af5b6c2e-c7ea-422f-884f-7c23a74c2ae0" ``` + +## Closure Review — 2026-07-21 + +**Outcome:** All 6 tasks completed same-day; stage 3 delivered end-to-end +with live proof at every step, not just tests. + +### Completed +- T01 — `Intake`/`IntakeNote` hub entity (fresh, per founder decision): + `new_uuid7()`, ORM models with DB-level CHECK constraints, migration, + REST router, Pydantic schemas, 4 MCP tools. 12 tests. Live-verified: full + create→route→close cycle against the running API. +- T02 — **C-32**, fix-consistency registration for intake/decision kinds + anywhere in a repo (engagement correctly deferred, no hub entity yet). + 15 tests. Live-verified on real binky-control data: found and registered + 3 genuinely open, previously-unlinked AWQ items. +- T03 — **the promotion transition** (`statehub promote-intake`), the + actual point of stage 3: `intake.routed → workplan|task|decision| + engagement` in one call. 17 tests. Live proof caught a real bug (silent + false-success on missing `repo_id`) — fixed, regression-tested, + re-verified clean for workplan and decision promotion, including through + the documented CLI entrypoint itself. +- T04 — **C-33**, generated per-repo `WORK-RECORDS.md` index, file-derived + (no hub query, ADR-001 rebuild principle intact). 13 tests. Live-verified + at two scales: binky-control and the-custodian (52 workplans, 332 + tasks) — both correct, both idempotent on re-run. +- T05 — queue closures retargeted to the generated index: closing an item + is now an in-place status transition on its own yaml block, not a + hand-written log entry. Zero new code — `WORK-RECORDS.md` (T04) already + was the generated view; this was a convention update across + AutopilotWorkQueue.md, DecisionQueue.md, OfficeHourQueue.md, + OperatingRhythm.md. Historical logs frozen as prose, not migrated. +- T06 — suggestions retired to read-only legacy: all 5 mutation endpoints + 410, GET/list stay live. The 10 records still open at retirement (real + cross-domain signal, not noise) were migrated to file-backed intake + records in `intake-legacy-suggestions-migration.md` rather than + discarded, then declined in the hub with a pointer back. Dead code + removed (unused imports, stage-guard helpers). 7 tests replacing the + old 5 (creation-dependent tests rewritten to seed via direct DB session, + since creation is now blocked). Live-verified: POST 410s, historical + reads intact. + +### Evidence +- state-hub full suite: 563 tests green throughout (started at 271 after + T03, grew through T04/T06's additions/replacements). +- Live proofs performed and cleaned up after: T01 (create/route/close + cycle), T02 (real AWQ-002/003/006 registration — kept, not test data), + T03 (workplan promotion ×2 incl. one bug-catching run, decision + promotion ×1 — all scratch artefacts removed/archived/resolved), T04 + (binky-control + the-custodian index generation, idempotence confirmed), + T06 (410 + historical-read verification against the running API). +- One process note: a state-hub commit message came out slightly garbled + (unescaped backticks in a double-quoted `-m` string triggered bash + command substitution) — content still accurate, not worth a force-push + to fix cosmetically on an already-pushed commit. + +### Carried forward (not blocking closure) +- **Generated index, second-generation work:** full transclusion rendering + (markitect integration) named as a T04 follow-on, not started. +- **Engagement hub entity:** still doesn't exist; C-32 defers it correctly. + Needed before engagement can flow through the promotion transition's + hub-registration path (file-only promotion already works). +- **Pre-existing bug found, not fixed:** `sync_schedules`'s + `ScheduleAlreadyRunningError` crash (found 2026-07-20, registered as + technical debt `TD f29e49eb`) — unrelated to this workplan's scope, + live production Temporal state, left for its own fix. +- **10 migrated intake findings** (`CUST-IN-0001`..`0010`) are real + cross-domain backlog now sitting in `the-custodian`, `status: open` — + they need their actual domain owners (ops-warden, state-hub/financials) + to vet/route/promote them. Not this workplan's job to resolve their + content, only to preserve it faithfully — done. + +The reconciliation that started with AWQ-010 is complete: intake exists as +a first-class hub entity, registration is automatic, promotion is one +call, the cross-repo index is generated, the queues point at it, and the +legacy suggestions table is closed out. Nothing about this required +another manual reintegration.