the-custodian/research/2026-07-19-work-orchestration-infrastructure-survey.md
codex f4a76fae5f
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 6s
research: work orchestration reconciliation — fleet survey, best practices, architecture draft
Trigger: binky-control automation queues (AWQ/DEC/OH) emerged as an
unindexed parallel work-item ontology (AWQ-010 reintegration case).
Three artefacts:
- research/2026-07-19-work-orchestration-infrastructure-survey.md —
  inventory of the ADR-001/005 backbone, state models, task-flow engine,
  hub generations, execution stack, and the >=9 live work-item species
- research/2026-07-19-work-orchestration-best-practices.md — external
  2025/26 practice: GitOps reconciliation, risk-tiered HITL, flow
  metrics/WIP, lean budget guardrails; anti-patterns to skip
- research/WorkOrchestrationArchitectureDraft.md — v0.1 proposal:
  unified work-record ontology, type registry + UUIDv7/canonical-name
  layering, lanes to fleet canon, policy/derived tags, queues as
  generated views, staged migration; open questions for discussion

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 15:21:08 +02:00

234 lines
13 KiB
Markdown

# Work Orchestration Infrastructure Survey — Coulomb Fleet
> Research artefact — 2026-07-19. Phase 1 of the work-orchestration
> reconciliation effort (trigger: AWQ-010 reintegration in binky-control,
> founder direction 2026-07-19). Surveys every mechanism the fleet currently
> uses to plan, organize, implement and document work. Companion:
> `2026-07-19-work-orchestration-best-practices.md` (external), synthesized in
> `WorkOrchestrationArchitectureDraft.md`.
## 1. The canonical backbone (what is settled)
### ADR-001 — files first, hub as read model
Workplans and work items originate as Markdown files in the owning repo;
the State Hub indexes them and must be rebuildable from repo files alone
(`canon/architecture/adr-001-workplans-as-repo-artefacts.md`). Corollaries:
DB is disposable; MCP bootstrap tools are index/sync tools; the sanctioned
registration path is *write file → commit → `statehub fix-consistency`*
(C-06 registers, writes UUIDs back into frontmatter). A closure protocol
(closure review, stale-task cleanup as fallback) governs finishing.
### ADR-005 — cross-repo work gets a project repo
Every workplan has exactly one repo anchor; genuinely cross-repo efforts get
a dedicated `category: project` repo with lifecycle
`draft → active → completed → archived` and a completion record listing
modified repos. Repos are recognized as "the most stable, git-managed
entities in the ecosystem".
### Terminology canon
`canon/standards/workplan-terminology-fleet_v0.1.md`: **workplan** is the
fleet term (legacy: workstream, metered retirement via legacy-meter,
STATE-WP-0069). IDs: `{PREFIX}-WP-NNNN` for workplans, `{WP}-TNN` for tasks;
hub UUID is internal and opaque — exactly the layered id scheme aspect 5
asks for, already practiced.
### State models
- **Workplan lifecycle** (`state-hub/docs/workplan-state-model-proposal.md`):
`proposed | ready | active | blocked | backlog | finished | archived`, with
`stale/stalled/oldies` explicitly **derived health labels, not stored
states** — an important precedent for aspect 6 (policy tagging).
- **Task lifecycle** (`state-hub/docs/task-state-canon-migration.md`): the
InfoTechCanon model `wait | todo | progress | done | cancel` (symbolic
codes WAIT/TODO/PROG/DONE/CNCL). Deliberately separate from workplan
lifecycle. Canon source lives in `info-tech-canon` — the abstract-state
backbone for aspect 4 already has a home.
- **Task flow engine** (`state-hub/docs/task-flow-engine-spec.md`, plus hub
`list_flow_definitions`/`get_flow_state`): a generic workstation +
assertion substrate ("information objects move through named workstations";
pure predicates over object properties, no domain knowledge). This is the
existing mechanism for *kind-specific* lifecycles under shared abstractions
— largely underused so far.
### Hub ecosystem generations
`docs/hub-ecosystem-architecture.md`: **hub-core** (library) / **state-hub**
(dev coordination, file-first, localhost) / **core-hub** (Gen-3 production
framework, `/api/v2`, contract-first FastAPI/Postgres, operator console,
`hub.coulomb.social`). core-hub's `docs/specs/workplan-coordination.md`
explicitly preserves the file-first rule and commits to ingesting ADR-001
workplans before replacing state-hub operations. Gen 2 (inter-hub/IHP) is
being drained. The dashboard/global-visibility layer of aspect 2 is
core-hub's charter.
### Event / automation delegation
`state-hub/docs/activity-core-delegation.md`: the hub is a read model, **not
a task factory**. It publishes lifecycle events on NATS
(`org.statehub.repo.registered`, `…workstream.completed`,
`…decision.resolved`, `…domain.goal.activated`, `…task.stale`);
activity-core reacts via declarative `ActivityDefinition` YAML (cron + event
triggers, rule expressions, instructions; Temporal-backed history). "Rules
auditable, testable, modifiable without redeploying the hub."
### Execution stack
`agent-harness/docs/architecture.md` three-layer model:
| Layer | Repo | Artefact |
| --- | --- | --- |
| Blueprint | kaizen-agentic | agent personas, schedule blueprints, coach/metrics loop |
| Instance | consuming repo | `.kaizen/schedule.yml` manifest — declarative only: blueprint, cadence, `lane` (green/blue), named `tool_profile`, `budget` (tokens/run), pinned harness major |
| Runtime | agent-harness | task intake (issue-core poll/claim), persona bind, credential acquisition (OpenBao/ops-warden lanes), bounded session, commit verification, hub + kaizen reporting |
Notable: **manifest declares, harness enforces**; completion events are the
idempotence currency; budgets and lanes are already machine-enforced at this
layer. issue-core provides claimable task distribution (Gitea/local
backends); ops-warden is the policy front door for credentials; llm-connect
abstracts model providers.
### Supporting hub entities (from the dev-hub surface)
Suggestions (staged lifecycle with `relevance_weight`, vet / decline /
promote-to-task), capability requests (request/accept/reroute/dispute),
contributions, interface changes, technical debt, risks, domain & repo
goals (with `needs_workplan` guidance), decisions (record/resolve,
auto-escalation of financial/legal pending decisions "per constitution §4"),
token events (`record_token_event`, `get_token_summary`), ad-hoc and
interactive task records (`record_adhoc_task`, `record_interactive_task`),
DOI checks, kaizen agent registry, human-flagging (`flag_for_human`,
`needs_human`, intervention notes), messages (agent inbox).
## 2. The binky-control queue layer (the new thing to reconcile)
Built during company-kernel bootstrap (BINKY-WP-0002/0003), governed by
`AutonomyPolicy.md`:
| Document | Role | Item ids | Lane semantics |
| --- | --- | --- | --- |
| `AutopilotWorkQueue.md` | evergreen pull queue for idle agent capacity; "never empty" | `AWQ-NNN` | Green/Blue |
| `DecisionQueue.md` | prepared approval packages for the founder | `DEC-YYYY-NNN` | Yellow/Red |
| `OfficeHourQueue.md` | business-hour interactions batched into command days | `OH-YYYY-NNN` | Orange |
| `OperatingRhythm.md` | cadence: daily brief, queue hygiene, bridge scheduler → harness cutover | — | — |
| `ControlLoopCatalog.md` | company as Sense→Interpret→Decide→Act→Record→Learn loops | Loop N | — |
| `RiskRegister.md` | risks | `RISK-NNN` | — |
The **autonomy lanes** (Green safe-autonomous / Blue reversible-logged /
Yellow deferred-approval / Orange time-window / Red human-only) are the
conceptual spine: "maximize Green+Blue throughput, queue Yellow, batch
Orange, protect Red." Approval packages, founder attention budget
(minutes/day, max decisions/day), and founder availability as first-class
state are defined here — none of it yet fleet canon.
### What the queues got right
1. **Cheap intake.** A YAML block appended to a live document — far lighter
than authoring a workplan file. Mail triage → `AWQ-010` took one commit.
2. **Lane-aware routing.** Items are born with an execution route (pull
queue vs. decision package vs. office-hour batch) — the suggestion→task
flow has no equivalent.
3. **Human attention as a budgeted resource.** DecisionQueue +
OfficeHourQueue are effectively WIP-limited human workstations.
4. **Pull protocol.** Idle agents self-serve; matches issue-core's
claim model but in file form.
### Where they break the backbone
1. **Not indexed.** AWQ/OH/DEC/RISK items have ids and states but no hub
representation → invisible to `get_domain_summary`, dashboards, dependency
modeling, staleness detection. (DEC items acquired ad-hoc
`state_hub_decision_id` mirroring only via manual dual bookkeeping —
done by hand twice on 2026-07-19.)
2. **Parallel ontology.** A queue item *is* a work item (or a decision) with
a different id scheme, different state vocabulary (`queued|prepared|done`,
`prepared|resolved|deferred`), and hand-maintained "Completed" logs
instead of the canonical task lifecycle.
3. **Manual promotion.** AWQ-010 → BINKY-WP-0005 required a human/agent to
notice, transcribe, and re-register — the exact "sidetrack reintegration"
signal aspect 7 names.
4. **Repo-local convention.** Nothing stops other repos from inventing
different queue formats; there is no schema, no fix-consistency check, no
canon standard.
## 3. Adjacent mechanisms with overlapping ontology
- **Suggestions (hub)** overlap AWQ intake almost 1:1 (idea → vet →
promote-to-task) but are **hub-first entities with no file artefact**
themselves in tension with ADR-001.
- **issue-core issues** overlap task distribution (claim/execute/close) —
used as harness intake sink, but issues are not file-backed either.
- **ADHOC workplans** (`workplans/ADHOC-YYYY-MM-DD.md`) cover spontaneous
low-risk work — a third intake form.
- **OH/DEC vs. hub decisions**: decisions exist in three places (queue file,
hub record, DecisionQueue resolved log).
- **Capability requests, CCRs (credential change requests,
railiance-platform), interface changes**: further typed work-item species
with their own id schemes and states.
**Count of intake/work-item species currently live: ≥ 9** (workplan task,
adhoc task, suggestion, issue, AWQ item, OH item, DEC item, capability
request, CCR) — with ~5 distinct state vocabularies and ~8 id schemes.
## 4. Existing budget / risk / policy controls
- Token budget policy (workstation CLAUDE.md): 8k soft / 10k hard per task —
human-convention enforced only, but `record_token_event` +
`get_token_summary` exist in the hub, and the harness manifest has a
machine-enforced `budget` (tokens/run).
- Lanes + tool profiles: enforced at harness runtime, declared in manifests.
- Decision auto-escalation: hub escalates pending financial/legal decisions
(constitution §4) — observed live on DEC-2026-004.
- `needs_human` flag + intervention notes; `flag_for_human` /
`clear_human_flag`; `list_blocked_tasks`.
- Derived health labels (stalled/stale) specified but only partially
implemented in views.
- Consistency: `statehub fix-consistency` (ADR-001 checks C-01…C-24
including C-06 registration, C-24 repo classification) — the natural
enforcement point for any new convention.
## 5. Markup / knowledge persistence infrastructure
- All coordination artefacts are Markdown + embedded YAML blocks; hub parses
```task blocks and frontmatter.
- markitect family (markitect-main/-tool/-filter/-quarkdown, marki-docx)
provides the markup toolchain; DOCX/PDF only as external inputs/outputs —
matches aspect 3's stance and needs only codifying, not building.
- Research artefacts precedent: `core-hub/docs/research/2026-06-27-…` and
binky-control `integrations/*.md` design docs; briefs in `briefs/`,
evidence CSVs in `mailmeta/reports/`.
## 6. Observed pain points (data, not speculation)
1. **AWQ-010** — queue item had to be manually re-integrated as a workplan
(2026-07-19). Root cause: no automatic path from intake item to
registered work.
2. **Dual decision bookkeeping** — DEC-2026-003/004 each required manual
file+hub mirroring in both directions (create and resolve).
3. **Suggestion flow unused in practice** — binky-control never used
suggestions; the queue format won because intake friction was lower.
The infrastructure lost to a Markdown file — that is the efficiency bar.
4. **BINKY-WP-0002 hub slug drift** (`bnky-wp-0001` slug, title mismatch) —
registration by early manual path left inconsistent index data; C-06-era
registrations are clean.
5. **Historic DB-first violations** required ADR-001 remediation; the
pattern recurs whenever a new entity type (suggestions, issues) is added
hub-first or file-only without the sync pair.
6. **Terminology migrations are expensive** (workstream→workplan:
4 workplans, a legacy-meter, a fleet standard) — arguing for getting the
umbrella ontology right *before* the queue pattern spreads beyond
binky-control.
## 7. Assets to build on (summary)
| Aspect (founder list) | Existing asset |
| --- | --- |
| 1 agile + planned, dependencies, budgets | queues (agile) + workplans (planned); `create_dependency`/`create_workplan_dependency`; harness budgets + token events |
| 2 global visibility, tenancy | core-hub charter; domains/topics/repos; agent-harness multi-tenant; repo-classification standard |
| 3 repos as base unit, X-as-Code, rebuildable | ADR-001/ADR-005, fix-consistency, ActivityDefinitions-as-YAML, manifests-as-YAML; markitect |
| 4 one framework, many work kinds | InfoTechCanon task model + task-flow-engine workstations |
| 5 layered ids, migration-stable history | UUID internal / canonical name external, already practiced; legacy-meter retirement discipline |
| 6 policy tagging | derived health labels precedent; needs_human; lanes |
| 7 opinionated, anti-sidetrack | fix-consistency as gate; AGENTS.md generation from state-hub templates |