322 lines
10 KiB
Markdown
322 lines
10 KiB
Markdown
---
|
|
id: CUST-WP-0044
|
|
type: workplan
|
|
title: "Daily State Hub WSJF Triage"
|
|
domain: custodian
|
|
repo: the-custodian
|
|
status: finished
|
|
owner: custodian
|
|
topic_slug: custodian
|
|
planning_priority: high
|
|
planning_order: 44
|
|
created: "2026-05-17"
|
|
updated: "2026-06-04"
|
|
state_hub_workstream_id: "99993845-be6a-401d-be98-f8107014abed"
|
|
---
|
|
|
|
# CUST-WP-0044 - Daily State Hub WSJF Triage
|
|
|
|
## Goal
|
|
|
|
Create a daily Custodian operating loop that reviews the State Hub situation,
|
|
identifies loose ends, and recommends which open workplans or tasks should be
|
|
worked next, revisited, parked, split, or closed.
|
|
|
|
The daily output should be a short, reviewable prioritization report with WSJF
|
|
scores for the most relevant open workplans and next tasks. It should reduce
|
|
coordination drag without silently changing canonical workplan files or
|
|
promoting work into execution without human or agent review.
|
|
|
|
## Context
|
|
|
|
As of 2026-05-17, the State Hub snapshot shows:
|
|
|
|
- 24 active workstreams and 2 blocked workstreams
|
|
- 184 todo tasks, 5 in-progress tasks, and 5 blocked tasks
|
|
- 5 open decisions
|
|
- several large active workplans with low completion ratios
|
|
|
|
The system is now good at preserving work, but that also makes it easy to
|
|
accumulate half-open threads. A daily triage loop gives the Custodian a small,
|
|
repeatable way to turn State Hub from a passive ledger into an active focus
|
|
surface.
|
|
|
|
## Scope
|
|
|
|
In scope:
|
|
|
|
- Daily State Hub situation review using the local brief, State Hub API, and
|
|
MCP tools when available.
|
|
- WSJF assessment for open workplans and representative next tasks.
|
|
- Detection of loose-end patterns: stale active plans, large unstarted plans,
|
|
blocked work, open decisions, dependency-cleared work, zero-task workstreams,
|
|
and inconsistent file-backed state.
|
|
- A daily recommendation artifact that separates:
|
|
- work to do next
|
|
- workplans that need review before execution
|
|
- cleanup or closure candidates
|
|
- blocked items requiring human or cross-agent attention
|
|
- A progress event summarizing each daily review.
|
|
|
|
Out of scope:
|
|
|
|
- Directly editing `canon/`.
|
|
- Automatically committing, archiving, closing, or reprioritizing workplans
|
|
without a review gate.
|
|
- Solving the canonical workplan state model; that belongs to `CUST-WP-0042`.
|
|
- Replacing human judgment for money, legal, security, or external-reputation
|
|
decisions.
|
|
|
|
## Daily Review Contract
|
|
|
|
Each daily run should collect:
|
|
|
|
- `.custodian-brief.md` from `the-custodian`
|
|
- State Hub summary via `get_state_summary()` or `GET /state/summary`
|
|
- hub inbox via `get_messages(to_agent="hub", unread_only=True)` or
|
|
`GET /messages/?to_agent=hub&unread_only=true`
|
|
- open workstreams, open tasks, blocked tasks, blocking decisions, next-step
|
|
hints, workplan index, and repo goal guidance
|
|
- relevant git status and consistency state for repos whose workplans are
|
|
likely to be touched
|
|
|
|
Each daily run should produce:
|
|
|
|
- a dated working-memory note under `memory/working/`
|
|
- a progress event in State Hub
|
|
- a compact top-priority table of no more than 10 workplans/tasks
|
|
- explicit "revisit" recommendations for stale, blocked, oversized, or
|
|
ambiguous workplans
|
|
- explicit "do not act yet" notes for items that require human approval
|
|
|
|
## WSJF Rubric
|
|
|
|
Use a 1-5 scale for each numerator factor and denominator factor.
|
|
|
|
| Factor | Meaning |
|
|
|--------|---------|
|
|
| Strategic value | Alignment with current Custodian, State Hub, Railiance, or dependency-chain goals. |
|
|
| Time criticality | Whether waiting increases operational risk, blocks other work, or lets context decay. |
|
|
| Risk reduction | How much the work reduces security, reliability, data-loss, coordination, or governance risk. |
|
|
| Opportunity enablement | How much the work unlocks other active workstreams or reduces future agent friction. |
|
|
| Job size | Estimated effort and uncertainty; 1 is small/clear, 5 is large/uncertain. |
|
|
|
|
Formula:
|
|
|
|
```text
|
|
WSJF = (strategic_value + time_criticality + risk_reduction + opportunity_enablement) / job_size
|
|
```
|
|
|
|
Tiebreakers:
|
|
|
|
- Prefer items that close or unblock multiple existing tasks.
|
|
- Prefer finishing nearly complete high-value work over starting new large work.
|
|
- Prefer safety, backup, identity, secrets, and deployment foundation work when
|
|
downstream plans depend on them.
|
|
- Prefer explicit revisit/parking over leaving stale plans in `active`.
|
|
|
|
## Tasks
|
|
|
|
### T01 - Define Daily Triage Prompt And Output Template
|
|
|
|
```task
|
|
id: CUST-WP-0044-T01
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "cb450d56-b606-4c89-9e6e-64e139d6ac6b"
|
|
```
|
|
|
|
Write the daily review prompt and a concise Markdown output template.
|
|
|
|
The template should include:
|
|
|
|
- State Hub headline counts
|
|
- inbox and blocker summary
|
|
- WSJF-ranked workplan/task table
|
|
- loose-end findings
|
|
- revisit/park/close recommendations
|
|
- proposed next actions for the next Custodian session
|
|
- guardrails for items that need human approval
|
|
|
|
Done when a future agent can run the daily review from the template without
|
|
guessing what to inspect or how to structure the result.
|
|
|
|
### T02 - Implement Daily Review Automation
|
|
|
|
```task
|
|
id: CUST-WP-0044-T02
|
|
status: done
|
|
priority: high
|
|
depends_on: [CUST-WP-0044-T01]
|
|
state_hub_task_id: "078c547b-82e0-4ae9-a29c-7bab930924da"
|
|
```
|
|
|
|
Create or configure the daily run so the Custodian performs the review once per
|
|
day.
|
|
|
|
The automation should:
|
|
|
|
- run against `/home/worsch/the-custodian` and inspect `/home/worsch/state-hub`
|
|
when available
|
|
- tolerate State Hub API or MCP downtime by falling back to
|
|
`.custodian-brief.md`
|
|
- avoid making file changes unless the run is explicitly asked to apply a
|
|
recommendation
|
|
- record a progress event when the State Hub API is reachable
|
|
|
|
Done when a daily run can complete unattended and leave a useful report.
|
|
|
|
### T03 - Add WSJF Scoring Procedure
|
|
|
|
```task
|
|
id: CUST-WP-0044-T03
|
|
status: done
|
|
priority: high
|
|
depends_on: [CUST-WP-0044-T01]
|
|
state_hub_task_id: "85fb98ba-3716-4524-88d2-6340a3674d0a"
|
|
```
|
|
|
|
Define the scoring procedure for open workplans and next tasks.
|
|
|
|
The procedure should explain how to estimate:
|
|
|
|
- strategic value
|
|
- time criticality
|
|
- risk reduction
|
|
- opportunity enablement
|
|
- job size
|
|
|
|
It should also define how to flag confidence as high, medium, or low when the
|
|
available evidence is incomplete.
|
|
|
|
Done when daily reports can explain why a high-ranked item is high-ranked,
|
|
without pretending the score is more precise than the evidence supports.
|
|
|
|
### T04 - Detect Loose-End And Revisit Candidates
|
|
|
|
```task
|
|
id: CUST-WP-0044-T04
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "14b3be2c-fe9e-464e-8db5-ec1b293f5829"
|
|
```
|
|
|
|
Add daily checks for work that should be revisited before more execution starts.
|
|
|
|
Signals include:
|
|
|
|
- active workplans with no recent progress
|
|
- large active workplans with many todo tasks and no in-progress task
|
|
- blocked workplans whose dependencies are now resolved or misclassified
|
|
- workstreams with zero parsed tasks
|
|
- high-priority workplans with stale `updated` metadata
|
|
- tasks still open after their parent workstream appears effectively complete
|
|
- workplans whose file-backed state differs from State Hub state
|
|
|
|
Done when the daily report names concrete revisit candidates and the reason
|
|
each candidate needs attention.
|
|
|
|
### T05 - Define Recommendation Actions And Review Gates
|
|
|
|
```task
|
|
id: CUST-WP-0044-T05
|
|
status: done
|
|
priority: medium
|
|
depends_on: [CUST-WP-0044-T03, CUST-WP-0044-T04]
|
|
state_hub_task_id: "0b2d01e4-8c64-4b2f-bb51-502f6c1af975"
|
|
```
|
|
|
|
Define the action vocabulary for daily recommendations.
|
|
|
|
Allowed recommendation actions:
|
|
|
|
- `work-next`
|
|
- `revisit`
|
|
- `split`
|
|
- `park`
|
|
- `close-out`
|
|
- `needs-human`
|
|
- `needs-cross-agent`
|
|
- `needs-consistency-sync`
|
|
|
|
For each action, document when it is safe for an agent to proceed and when a
|
|
human review gate is required.
|
|
|
|
Done when the daily loop can recommend action without accidentally crossing
|
|
governance boundaries.
|
|
|
|
### T06 - First Three Daily Runs And Calibration
|
|
|
|
```task
|
|
id: CUST-WP-0044-T06
|
|
status: done
|
|
priority: medium
|
|
depends_on: [CUST-WP-0044-T02, CUST-WP-0044-T03, CUST-WP-0044-T04, CUST-WP-0044-T05]
|
|
state_hub_task_id: "46c48fde-bb5f-4fe5-98cc-9cf788c98fc5"
|
|
```
|
|
|
|
Run the daily loop for three consecutive days and compare the recommendations
|
|
against actual follow-up work.
|
|
|
|
Calibrate:
|
|
|
|
- scoring weights
|
|
- job-size estimates
|
|
- maximum number of recommendations
|
|
- treatment of stale but intentionally parked work
|
|
- whether daily notes are too verbose or too thin
|
|
|
|
Done when the daily review is useful enough to continue as a standing
|
|
Custodian habit.
|
|
|
|
**2026-06-04:** T06 complete after reviewing three consecutive activity-core
|
|
daily triage notes:
|
|
|
|
- `memory/working/daily-triage-2026-06-02-f9b97749.md`
|
|
- `memory/working/daily-triage-2026-06-03-6d2737e3.md`
|
|
- `memory/working/daily-triage-2026-06-04-65e273bf.md`
|
|
|
|
The recommendations were stable and useful: `CUST-WP-0044` and `CUST-WP-0045`
|
|
were repeatedly ranked as high-confidence `work-next`, human-gated work stayed
|
|
clearly marked, and `CUST-WP-0046` remained visible as a revisit/unblock item.
|
|
Calibration notes live in
|
|
`docs/daily-statehub-wsjf-calibration-2026-06-04.md`. The main adjustment is
|
|
that future executable JSON reports must include rank plus WSJF component
|
|
scores; the schema, prompt, and ActivityDefinition were updated accordingly.
|
|
The daily review is useful enough to continue as a standing Custodian habit,
|
|
so `CUST-WP-0044` is finished.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- The Custodian has a daily review path for the State Hub situation.
|
|
- The daily report ranks open workplans and next tasks with a transparent WSJF
|
|
assessment.
|
|
- Loose ends are surfaced as explicit revisit, park, split, or close-out
|
|
recommendations.
|
|
- Daily runs leave progress events so future sessions can see the review.
|
|
- No canonical workplan or canon changes happen without the appropriate review
|
|
gate.
|
|
|
|
## Implementation Notes - 2026-05-17
|
|
|
|
The daily triage loop initially had two explicit layers:
|
|
|
|
- Active runner: Codex app automation `daily-state-hub-wsjf-triage`.
|
|
- Durable target substrate: activity-core ActivityDefinition draft at
|
|
`activity-definitions/daily-statehub-wsjf-triage.md`.
|
|
|
|
The reusable prompt, report template, WSJF procedure, loose-end detectors, and
|
|
recommendation gates live in
|
|
`runtime/prompts/daily_statehub_wsgi_triage.md`.
|
|
|
|
As of 2026-05-17, the activity-core definition was intentionally disabled while
|
|
the Codex automation was the active runner. It existed so the schedule and
|
|
context contract were reviewable in the same Markdown-as-definition style
|
|
activity-core already uses. The intended target was to enable that definition
|
|
and disable the Codex app automation once activity-core could run the
|
|
Custodian report action directly.
|
|
|
|
This changed after the activity-core cutover in `CUST-WP-0045`; the
|
|
ActivityDefinition is now the active runner and the three-run calibration is
|
|
complete.
|