the-custodian/workplans/CUST-WP-0055-workplan-terminology-fleet-refactor.md
codex 2e0deee2ef
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 6s
feat(terminology): prose sweep tool and custodian workplan cleanup (CUST-WP-0055 T04)
Add sweep_workstream_prose.py for agent-guidance files, sweep active workplan
prose in-repo, tighten scan allowlist exclusions, and update ADR-001 closure
protocol to workplan-first terminology.
2026-07-08 16:35:37 +02:00

13 KiB
Raw Blame History

id type title domain repo status owner topic_slug planning_priority planning_order created updated state_hub_workstream_id
CUST-WP-0055 workplan Fleet-wide workplan terminology refactor (workplan → workplan) infotech the-custodian active codex custodian medium 55 2026-07-08 2026-07-08 d96b72d5-24f2-492b-8bb4-50c39058848a

CUST-WP-0055 — Fleet-wide workplan terminology refactor

Goal

Make workplan the consistent product and documentation term across all Coulomb-registered repositories, while preserving compatibility bridges where clients, events, or frontmatter still depend on legacy workplan identifiers.

Context

State Hub already completed the spine rename (STATE-WP-0065) and the compatibility-first terminology transition (STATE-WP-0054, docs/workplan-terminology-transition.md). Preferred REST/MCP surfaces expose workplan; legacy workplan paths remain metered via legacy-meter.

A fleet scan on 2026-07-08 (see inventory below) shows the term is still widespread outside State Hub internals:

Metric Value
Registered repos scanned 76
Repos with workplan hits 73
Total occurrences 22,237
Files touched 7,823
Missing local checkouts markitect-project, vergabe_teilnahme — exclude from exit counts until paths exist or repos marked dormant

Top repos by hit count

Repo Occurrences Files Notes
state-hub 13,418 4,229 Legacy compat layer, tests, migrations, dashboard
agentic-resources 5,307 2,226 Bulk mirrored agent assets (other bucket)
the-custodian 754 143 Canon, workplans, governance docs
repo-scoping 318 123 Generated classification artefacts
railiance-fabric 306 54 Graph/read-model payloads
activity-core 214 46 Event contracts + State Hub resolver code

Pattern totals (all repos)

Pattern Count Refactor stance
workplans (generic) 13,108 Prose/docs → workplans; code paths case-by-case
workstream_id 3,830 Keep API alias until legacy-meter retires
workplan (prose) 2,420 Replace in user-facing text
state_hub_workstream_id 1,065 Keep frontmatter bridge until dedicated migration
/workstreams/ routes 490 Keep compat routes; docs point to /workplans/
create_workstream MCP 346 Keep alias; guidance prefers create_workplan
open_workstreams 145 Internal summary cache — rename when clients move
update_workstream MCP 128 Keep alias
list_workstreams MCP 7 Keep alias

Re-run the inventory anytime:

python tools/scan_workstream_terminology.py
python tools/scan_workstream_terminology.py --repo the-custodian --json

Terminology policy (fleet)

Surface Canonical term Legacy bridge Action in this plan
Human docs, SCOPE, AGENTS, workplan bodies workplan Replace prose
Workplan frontmatter link field state_hub_workstream_id holds workplan UUID Document; rename field in later WP
REST/MCP params workplan_id preferred workstream_id alias Guidance only; retire per legacy-meter
REST routes /workplans/ /workstreams/ Docs + dashboard; retire per meter
NATS / State Hub events org.statehub.workplan.completed org.statehub.workplan.completed State Hub dual-publishes today; retire legacy per meter
activity-core event catalog org.statehub.workplan.completed org.workplan.completed Align catalog to State Hub subjects; retire custodian-era type
Python/TS identifiers workplan_* workstream_* Refactor when behaviour unchanged
DB tables / ORM models workplan Done in STATE-WP-0065

Do not mass-rename state_hub_workstream_id in workplan files or DB UUID columns in this plan — that is a separate bridge-field migration.

Event namespace note: three subjects exist in the fleet today. State Hub emits org.statehub.workplan.completed (preferred) and org.statehub.workplan.completed (legacy, metered) on the same transition — see state-hub/api/routers/workstreams.py. activity-core still documents the older custodian catalog type org.workplan.completed (activity-core/event-types/org.workplan.completed.md). This plan aligns activity-core to the State Hub subjects; it does not introduce a bare org.workplan.completed subject.

Ready gate (proposedready)

Promote this workplan when all of the following are true:

  1. T01 canon addendum draft exists under the-custodian/canon/.
  2. STATE-WP-0069 workplan file exists in state-hub (created by T02-T01).
  3. T03 subject names match state-hub/docs/workplan-terminology-transition.md.
  4. T08 scan exclusions are committed (tools/scan_workstream_terminology.py or tools/scan_workstream_allowlist.yaml).
  5. 2026-07-08 baseline JSON artefact path is named in T01 completion notes.

Task: Canon and agent-template alignment

id: CUST-WP-0055-T01
status: done
priority: high
state_hub_task_id: "9db434bd-55c5-4499-a365-8ac6a47726c8"

Publish a short canon addendum (or ADR supplement) in the-custodian/canon/ defining workplan as the fleet term and listing the legacy bridges above. Update state-hub/scripts/project_rules/*.template so regenerated AGENTS.md / session-protocol files are workplan-first (templates already partially note the legacy mapping — close remaining gaps).

Done when update_agent_instruction_files output uses workplan in prose and only mentions workplan in an explicit compatibility footnote.

Progress 2026-07-08: canon addendum drafted at canon/standards/workplan-terminology-fleet_v0.1.md (fleet term, legacy bridges, event subjects, agent rules, retirement rule). Baseline JSON at docs/evidence/workplan-terminology-baseline-20260708.json. Template regeneration (state-hub/scripts/project_rules/*.template) verified workplan-first with explicit legacy footnotes only.

Task: State Hub and hub-core legacy surface retirement plan

id: CUST-WP-0055-T02
status: progress
priority: high
state_hub_task_id: "2bb01721-a86b-43a0-ab4c-e5966743d295"

T02-T01 (blocking): create child workplan state-hub/workplans/STATE-WP-0069-workplan-terminology-legacy-retirement.md before any interface retirement executes.

T02-T02: inventory remaining workplan strings in dashboard, tests, flows (flows/workplan.yaml), and compat routers; tie each to a legacy-meter key; set retirement order after weekly review shows zero callers.

Deliverables: STATE-WP-0069 file registered via fix-consistency, ranked retirement backlog, dashboard route rename plan, and grep budget targets per release (e.g. reduce state-hub hit count by 50% per phase). Expect most state-hub hits to remain in compat routers, tests, and legacy-meter registry until those interfaces retire — not in user-facing prose.

Task: activity-core event and resolver migration

id: CUST-WP-0055-T03
status: done
priority: high
state_hub_task_id: "72c2ecf3-c0c1-4241-b0f2-339a97ccf949"

Align activity-core to State Hub's existing dual-publish contract:

Subject Role Action
org.statehub.workplan.completed preferred Add/rename activity-core event type; new automations subscribe here
org.statehub.workplan.completed legacy (State Hub) Document as legacy; register in legacy-meter if not already
org.workplan.completed legacy (custodian catalog) Deprecate; map subscribers to org.statehub.workplan.completed

State Hub already emits both org.statehub.* subjects on workplan completion; activity-core must not invent org.workplan.completed. Update activity-core/event-types/, activity_core/context_resolvers/state_hub.py log messages, k8s manifests, and workplan prose. Publish a sunset date for org.workplan.completed in the activity-core catalog.

Done when activity-core event definitions and subscribers use org.statehub.workplan.completed, legacy subjects are documented with replacement refs, and legacy-meter shows the custodian-era type at zero new subscriptions.

Task: Domain repo prose sweep (template-driven)

id: CUST-WP-0055-T04
status: progress
priority: medium
state_hub_task_id: "2ff6cef9-7ec2-4d44-bce0-b232b1f889dc"

Mechanical pass on the ~60 domain repos with the standard bootstrap shape (typically 2580 hits each): AGENTS.md, SCOPE.md, INTENT.md, README.md, and active root workplans. Replace user-facing workplan with workplan; leave state_hub_workstream_id and API examples that demonstrate legacy aliases.

Use scan_workstream_terminology.py --json before/after per repo; target zero prose:workplan hits in agent-guidance buckets (per T08 exclusions). Batch ~10 repos per PR to limit merge churn.

Task: Code and integration sweep (activity-core, issue-core, railiance-*)

id: CUST-WP-0055-T05
status: todo
priority: medium
state_hub_task_id: "120a8075-3d1f-426d-8800-aa9edac32043"

Repos with non-trivial Python/TS code references: activity-core, issue-core, railiance-platform, railiance-infra, hub-core, core-hub, ops-warden, reuse-surface. Rename variables, comments, and client payloads to workplan where they denote the domain concept; keep wire-compat keys until T02 retires the API alias.

Out of active sweep: inter-hub-haskell (retired 2026-07-08, CORE-WP-0007) — historical reference only; do not schedule new terminology edits there unless preserving a compatibility footnote.

Task: Generated and bulk-content repos

id: CUST-WP-0055-T06
status: todo
priority: medium
state_hub_task_id: "726c12bf-e6e0-4293-b675-e2c0fd10800e"

Address high-volume generated trees:

  • agentic-resources (~5.3k hits, mostly other bucket) — fix upstream generator templates, not files by hand.
  • repo-scoping / railiance-fabric — fix generators or export schemas so new artefacts are workplan-first.

Done when regenerating those repos drops terminology hits by ≥90% without manual per-file edits.

Task: Historical workplan and archive hygiene

id: CUST-WP-0055-T07
status: todo
priority: low
state_hub_task_id: "362790c8-cf27-4042-81e4-533a6b48fb26"

Update active workplan prose only; for workplans/archived/, add a single header note that historical text may say workplan. Optionally normalize titles in archived files when the edit is mechanical (no ID renames).

Grandfathered filenames containing workplan (e.g. CUST-WP-0010-workstream-lifecycle-docs.md) keep their paths per ADR-001 non-rename policy.

Task: Verification gate and legacy-meter criteria

id: CUST-WP-0055-T08
status: done
priority: high
state_hub_task_id: "5b6596ef-fd04-4469-b421-f548d292cb0d"

Define fleet exit criteria and scan exclusions.

Scan exclusions (must not fail the prose gate):

  • workplans/archived/ under any repo
  • state-hub legacy-meter registry, compat routers, and docs/workplan-terminology-transition.md
  • tools/scan_workstream_terminology.py and allowlist config
  • Explicit compatibility footnotes that document the legacy term (canon addendum, AGENTS.md legacy bridge section)
  • Generated bulk trees until T06 regenerates them (agentic-resources)

Commit exclusions as tools/scan_workstream_allowlist.yaml or extend the scan script with --apply-allowlist.

Exit criteria:

  1. scan_workstream_terminology.py — zero prose:workplan across domain repos (with exclusions); state-hub under agreed grep budget for non-compat prose only.
  2. State Hub legacy-meter weekly review — no new prose-only legacy keys.
  3. fix-consistency / interface-change registry — no new workplan-named public tools without a workplan alias.
  4. CI or activity-core scheduled check fails when prose hits regress outside the allowlist.

Done when all four checks are automated and the 2026-07-08 baseline is stored as docs/evidence/workplan-terminology-baseline-20260708.json (or equivalent) at T01 completion.

Sequencing

T01 canon/templates + baseline JSON artefact
T02-T01 draft STATE-WP-0069 (blocking)
 ├─ T02-T02 state-hub legacy retirement inventory
 ├─ T04 domain prose sweep (parallel, ~10 repos/PR)
 ├─ T06 generated repos (early — repo-scoping, railiance-fabric)
 ├─ T03 activity-core event catalog alignment
 ├─ T05 code sweep (after T02 defines wire-compat keys)
 └─ T08 allowlist + regression gate (continuous)
T07 archives (low priority, anytime)

Workplan stays proposed until the ready gate above is satisfied.

Relationship to existing workplans

  • Done: STATE-WP-0054, STATE-WP-0065, STATE-WP-0046, CUST-WP-0053 (C-26 prefix lint), CUST-WP-0050 (classification spine coordination).
  • This plan owns cross-repo coordination; implementation splits into state-hub, activity-core, and per-domain PRs tracked as child tasks or linked workplans.
  • Out of scope: renaming state_hub_workstream_id frontmatter field; database table re-migration (already completed).