state-hub/docs/evidence/workstream-caller-inventory-20260709.md
tegwick ef51b99ff5
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 5s
STATE-WP-0072: remediate remaining workstream HTTP callers
Research sweep captured in research/20260709-workstream-caller-sweep.md.
Migrate dashboard detail tasks query, custodian_cli POST bodies, and
onboarding curl to workplan-first paths; re-capture 8h legacy-meter evidence.
2026-07-09 01:48:53 +02:00

4.8 KiB

Workstream caller inventory — 2026-07-09 (second sweep)

Follow-up after STATE-WP-0071 railiance01 deploy. Eight-hour legacy-meter window (2026-07-09) still shows heavy GET /workstreams/* traffic (~1.7k in 8h for GET /workstreams/ alone); attribution remains mostly unknown.

Newly found — actionable HTTP callers

Caller Repo Legacy usage Fix
dashboard/src/workstreams/[id].md state-hub GET /tasks/?workstream_id= ?workplan_id=
custodian_cli.py state-hub POST /tasks/ body workstream_id (onboarding, add-task) workplan_id
runtime/prompts/daily_statehub_wsgi_triage.md the-custodian Instructs GET /workstreams/workplan-index (410) and ?workstream_id= enrichment /workplans/index, ?workplan_id=
k8s/railiance/21-custodian-runtime.yaml activity-core Same stale prompt text projected to cluster Roll after prompt fix
wise-validator/reporter.py wise-validator POST /progress/ body workstream_id workplan_id
session_memory/curate/decisions.py agentic-resources Dual-write workplan_id + workstream_id on decisions Drop workstream_id key

Newly found — response / field aliases (no extra REST path)

Caller Repo Notes
context_resolvers/state_hub.py _safe_next_step activity-core Dual-keys workplan_* + workstream_* in digest JSON (downstream prose only)
k8s/railiance/20-runtime.yaml sink configs activity-core workstream_id: in YAML sink scope — read bridge in state_hub_write.py
schedule_health.py activity-core Accepts legacy param; prefers workplan_id
dashboard/src/components/field-help.js state-hub Nav links /workstreams/{id} (UI route compat, not API)
api/routers/state.py state-hub Response fields workstream_id, open_workstreams in /state/summary
runtime/context.py the-custodian Reads open_workstreams from summary (response field, not REST caller)

Confirmed migrated (no change since 2026-07-08 inventory)

  • scripts/consistency_check.py, cleanup_stale_tasks.py, validate_repo_adr.py/workplans/
  • custodian_cli.py list/CRUD paths → /workplans/ (body fields still legacy — see above)
  • Dashboard list pages (workstreams.md, extensions.md, tasks.md, …) → apiFetch("/workplans/")
  • Dashboard data loaders → GET /workplans
  • mcp_server/server.py REST calls → /workplans (tool/param aliases remain by design)
  • activity-core/context_resolvers index/detail/tasks fetches → /workplans/*
  • can-you-assist/shell_session.py orientation → GET /workplans/?

Intentional legacy (meter-gated — STATE-WP-0070)

Surface Notes
api/routers/workstreams.py Compat router; workplan-index + DELETE already 410
api/routers/workstream_dependencies.py Legacy dependency aliases
api/routers/execution.py PATCH /execution/workstreams/{id}/intent
Query/body aliases on /tasks/, /progress/, /decisions/ Metered per-key
MCP tools create_workstream, list_workstreams, … Aliases; internal REST uses /workplans/
state://workstreams/{topic_slug} resource Deprecated wrapper
DB columns / JSON response fields workstream_id STATE-WP-0070 T04
Frontmatter state_hub_workstream_id Fleet bridge — separate migration
tests/test_legacy_meter.py, test_routers_core.py Regression coverage

Likely sources of remaining GET /workstreams/* volume

  1. Remote fix-consistency hosts not yet on state-hub14b7d84 (coulombcore runners, cron sweep nodes).
  2. Dashboard detail page task poll via ?workstream_id= (every workplan detail view).
  3. Agent prompts still telling models to call retired workplan-index legacy path (410 but metered).
  4. External REST clients (bookmarks, old scripts, Claude settings curl examples in activity-core/.claude/settings.local.json).
  5. Legacy query aliases elsewhere in dashboard/docs (docs/onboarding.md curl example).

Remediation (STATE-WP-0072 — 2026-07-09)

  • dashboard/src/workstreams/[id].md?workplan_id=
  • custodian_cli.py POST bodies → workplan_id
  • docs/onboarding.md curl → /workplans/
  • the-custodian/runtime/prompts/daily_statehub_wsgi_triage.md
  • activity-core/k8s/railiance/21-custodian-runtime.yaml
  • wise-validator/reporter.py, agentic-resources/curate/decisions.py
  • 8h meter re-capture (legacy-meter-weekly-review-20260709.json)

Outstanding: remote fix-consistency hosts; activity-core k8s rollout of prompt projection; meter decline over subsequent 8h windows.

Verification

python scripts/capture_legacy_meter_evidence.py   # 8h window
rg '/workstreams|workstream_id' --glob '!**/workplans/**' --glob '!**/tests/**' <repo>