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>
This commit is contained in:
parent
435731231a
commit
f4a76fae5f
3 changed files with 688 additions and 0 deletions
180
research/2026-07-19-work-orchestration-best-practices.md
Normal file
180
research/2026-07-19-work-orchestration-best-practices.md
Normal file
|
|
@ -0,0 +1,180 @@
|
||||||
|
# Work Orchestration Best Practices — External Research
|
||||||
|
|
||||||
|
> Research artefact — 2026-07-19. Phase 2 of the work-orchestration
|
||||||
|
> reconciliation effort. Surveys current (2025/2026) practice for organizing
|
||||||
|
> human, agent, and classic-automation workflows, filtered for relevance to
|
||||||
|
> a file-first, repo-anchored, solo-founder-plus-agent-fleet factory.
|
||||||
|
> Companion: `2026-07-19-work-orchestration-infrastructure-survey.md`.
|
||||||
|
|
||||||
|
## 1. GitOps / everything-as-code
|
||||||
|
|
||||||
|
The industry consensus for declarative operations maps directly onto ADR-001
|
||||||
|
and generalizes it:
|
||||||
|
|
||||||
|
- **Four GitOps principles**: declarative desired state; versioned &
|
||||||
|
immutable storage; state pulled automatically by agents; continuous
|
||||||
|
reconciliation between desired and actual state
|
||||||
|
([GitLab](https://about.gitlab.com/topics/gitops/),
|
||||||
|
[Spacelift](https://spacelift.io/blog/gitops-best-practices)).
|
||||||
|
Our `fix-consistency` is exactly a reconciliation loop; the gap is that it
|
||||||
|
runs on demand rather than continuously, and only covers workplans/tasks —
|
||||||
|
not queues, suggestions, or decisions.
|
||||||
|
- **Validate before apply**: schema validation, policy compliance, dry-run
|
||||||
|
in CI before a change reaches the runtime system
|
||||||
|
([Pulumi](https://www.pulumi.com/blog/gitops-best-practices-i-wish-i-had-known-before/)).
|
||||||
|
Applied to work items: queue/workplan YAML should be schema-validated in
|
||||||
|
Forgejo CI, not only at hub-ingest time.
|
||||||
|
- **Separate code and state repos** where lifecycles differ
|
||||||
|
([GitHub blog](https://github.blog/enterprise-software/devops/applying-gitops-principles-to-your-operations/))
|
||||||
|
— consistent with ADR-005 project repos and control-plane repos like
|
||||||
|
binky-control.
|
||||||
|
- **Ops-as-issues / IssueOps**: operations triggered and audited through
|
||||||
|
issue lifecycles. Validation of our issue-core direction; the key lesson
|
||||||
|
is that the issue is the *interface*, not the source of truth.
|
||||||
|
|
||||||
|
## 2. Human-in-the-loop tiering for agentic work
|
||||||
|
|
||||||
|
2026 agentic-governance literature converges on patterns our AutonomyPolicy
|
||||||
|
already anticipates — with refinements worth adopting:
|
||||||
|
|
||||||
|
- **Risk-tiered approval, not blanket oversight**: pre-approval
|
||||||
|
(human-in-the-loop) for irreversible actions (payments, contracts,
|
||||||
|
deletion, production changes); async monitoring (human-on-the-loop) for
|
||||||
|
high-volume recoverable work
|
||||||
|
([Strata](https://www.strata.io/blog/agentic-identity/practicing-the-human-in-the-loop/),
|
||||||
|
[StackAI](https://www.stackai.com/insights/human-in-the-loop-ai-agents-how-to-design-approval-workflows-for-safe-and-scalable-automation)).
|
||||||
|
Maps to Green/Blue (on-the-loop) vs. Yellow/Orange/Red (in-the-loop).
|
||||||
|
- **Approval gates before side effects — propose-then-commit**: block the
|
||||||
|
side-effecting call until approval is recorded
|
||||||
|
([Velt](https://velt.dev/blog/why-ai-agents-need-approval-layer)). Our
|
||||||
|
approval-package pattern satisfies this at the process level; the harness
|
||||||
|
tool-profile mechanism is where it becomes technically enforced.
|
||||||
|
- **Identity-aware orchestration**: pause execution, route to authorized
|
||||||
|
humans, time-boxed decision windows, log every intervention
|
||||||
|
([Strata](https://www.strata.io/blog/agentic-identity/practicing-the-human-in-the-loop/)).
|
||||||
|
`needed_by` / `fallback_if_no_response` in DecisionQueue are exactly
|
||||||
|
time-boxed windows; the hub should own the clock, not the file reader.
|
||||||
|
- **Every agent has an owner, risk profile, and documented decision
|
||||||
|
boundary**; outputs traceable to model versions and configs
|
||||||
|
([CMR "Governing the Agentic Enterprise"](https://cmr.berkeley.edu/2026/03/governing-the-agentic-enterprise-a-new-operating-model-for-autonomous-ai-at-scale/),
|
||||||
|
[McKinsey](https://www.mckinsey.com/capabilities/risk-and-resilience/our-insights/trust-in-the-age-of-agents)).
|
||||||
|
Matches `agt-…` hub identities + manifests; argues for making `lane` and
|
||||||
|
`owner` mandatory fields on every work item, not just on agents.
|
||||||
|
- **Durable pause/resume**: graph-based orchestrators persist state so a
|
||||||
|
workflow can wait days for human input and resume losslessly
|
||||||
|
([Virtido](https://virtido.com/blog/agentic-workflows-patterns-best-practices-enterprise)).
|
||||||
|
Our equivalent is the file+hub pair: a Yellow item *is* a paused workflow;
|
||||||
|
no in-memory orchestrator state should be required to resume it.
|
||||||
|
- **Reviewer quality matters**: "a poorly trained reviewer approving flawed
|
||||||
|
agent outputs is worse than no checkpoint"
|
||||||
|
([nhimg.org](https://nhimg.org/faq/how-should-security-teams-implement-human-in-the-loop-controls-for-ai-agents/))
|
||||||
|
— supports the approval-*package* discipline (evidence, recommendation,
|
||||||
|
fallback) over bare questions, and the attention-budget cap.
|
||||||
|
|
||||||
|
## 3. Flow management: WIP limits, metrics, prioritization
|
||||||
|
|
||||||
|
Kanban/lean portfolio practice supplies the quantitative layer the fleet
|
||||||
|
lacks:
|
||||||
|
|
||||||
|
- **Four flow metrics**: WIP, cycle time, work-item age, throughput
|
||||||
|
([ProKanban](https://www.prokanban.org/blog/https-prokanban-org-blog-the-kanban-pocket-guide-chapter-6-the-basic-metrics-of-flow)).
|
||||||
|
All four are computable from hub data (timestamped UUIDs + status
|
||||||
|
transitions) — none is surfaced today. Work-item age is the direct,
|
||||||
|
data-driven form of the "stalled" tag (aspect 6).
|
||||||
|
- **WIP limits at every state**, including portfolio level; WSJF
|
||||||
|
(cost-of-delay / job size) chooses the next item, WIP limits decide
|
||||||
|
whether the system may accept it
|
||||||
|
([Agility at Scale — WIP](https://agility-at-scale.com/safe/lpm/work-in-progress/),
|
||||||
|
[WSJF](https://agility-at-scale.com/safe/lpm/wsjf-weighted-shortest-job-first/)).
|
||||||
|
The founder attention budget (max 7 decisions/day) is a WIP limit on the
|
||||||
|
human workstation; the same construct should apply to agent lanes
|
||||||
|
(e.g. max active workplans per repo). A WSJF calibration experiment
|
||||||
|
already exists (`docs/daily-statehub-wsjf-calibration-2026-06-04.md`).
|
||||||
|
- **Epics as economic bets** with testable benefit hypotheses, decomposed
|
||||||
|
only for the near horizon; close the measurement loop on predicted
|
||||||
|
outcomes ([Agility at Scale — Epics](https://agility-at-scale.com/safe/lpm/epics/)).
|
||||||
|
Maps to domain/repo goals → workplans; argues for a lightweight
|
||||||
|
`hypothesis`/`expected_outcome` field on goals, checked at closure review.
|
||||||
|
- **Lean budget guardrails**: fund value streams within policy boundaries
|
||||||
|
instead of approving each piece of work; segment budgets per area of risk
|
||||||
|
([Atomic Object](https://spin.atomicobject.com/budget-guardrails-software-project/),
|
||||||
|
[Agility at Scale — Guardrails](https://agility-at-scale.com/safe/lpm/portfolio-guardrails/)).
|
||||||
|
Direct template for token/cost budgets: per-lane and per-workplan budget
|
||||||
|
envelopes with escalation on breach, instead of per-request permission.
|
||||||
|
|
||||||
|
## 4. Dependency and risk practice
|
||||||
|
|
||||||
|
- **Dependency mapping to see cascade risk**; identify risks early, attach
|
||||||
|
mitigation to the item
|
||||||
|
([Asana](https://asana.com/resources/project-risks),
|
||||||
|
[Atlassian](https://www.atlassian.com/work-management/project-management/project-risk-management)).
|
||||||
|
The hub has dependency edges (task- and workplan-level); the gap is
|
||||||
|
surfacing them (blocked-cascade views) and the absence of edges for
|
||||||
|
queue-item species.
|
||||||
|
- **Risk classification determines autonomy level, data access, and
|
||||||
|
approval requirements per agent**
|
||||||
|
([TM Forum](https://inform.tmforum.org/features-and-opinion/ai-autonomy-governance-a-governance-framework-for-agentic-ai-enabling-safe-accountable-and-scalable-autonomous-intelligence),
|
||||||
|
[Trend Micro](https://www.trendmicro.com/vinfo/us/security/news/cybercrime-and-digital-threats/from-anarchy-to-authority-closing-the-governance-gap-in-agentic-ai)).
|
||||||
|
Confirms lanes-as-risk-classes; suggests lane should also gate credential
|
||||||
|
catalog access (ops-warden already keyed per-lane).
|
||||||
|
|
||||||
|
## 5. Patterns worth *not* importing
|
||||||
|
|
||||||
|
- **Heavy portfolio ceremony** (SAFe boards, quarterly PI planning): the
|
||||||
|
attention budget is 90 min/day; anything requiring synchronous ceremonies
|
||||||
|
fails the constraint. Take the *metrics and limits*, skip the meetings.
|
||||||
|
- **Ticket-system-as-source-of-truth** (Jira-style): contradicts ADR-001;
|
||||||
|
issues/tickets remain interface projections.
|
||||||
|
- **Generic workflow engines as the primary model** (BPMN, Airflow-style
|
||||||
|
DAGs for knowledge work): our work is document-anchored and
|
||||||
|
interruption-driven; the task-flow-engine's assertion model (state =
|
||||||
|
provable properties, not engine position) is the better fit and is already
|
||||||
|
specced.
|
||||||
|
- **Per-item human approval as default**: the literature is unanimous that
|
||||||
|
blanket approval queues collapse under volume; risk-tiering is the
|
||||||
|
scalable form — the AutonomyPolicy default ("ask Bernd is never the
|
||||||
|
default") is the correct opinion.
|
||||||
|
|
||||||
|
## 6. Condensed implications for the draft
|
||||||
|
|
||||||
|
1. Treat *work intake* and *work execution* as separate concerns with
|
||||||
|
different friction budgets — intake must cost one YAML block or less
|
||||||
|
(the queues proved this), execution structure can cost a workplan file.
|
||||||
|
2. Every work-item species must live in the same reconciliation loop
|
||||||
|
(file → CI validation → hub index → derived views) or it becomes a
|
||||||
|
sidetrack by construction.
|
||||||
|
3. Human attention is a WIP-limited workstation; model it exactly like an
|
||||||
|
agent lane with a budget, a queue, and flow metrics.
|
||||||
|
4. States should be few and abstract (canon lifecycle); everything
|
||||||
|
situational (stalled, unclear, automatable, needs-human) should be a
|
||||||
|
**derived or policy-assigned tag**, not a state — states migrate badly,
|
||||||
|
tags migrate trivially.
|
||||||
|
5. Timestamped UUIDs internally + stable canonical names externally is the
|
||||||
|
correct layering and is industry-consistent (UUIDv7 for time-sortable
|
||||||
|
internal keys).
|
||||||
|
6. Budgets become guardrail envelopes (per lane / workplan / run) enforced
|
||||||
|
at the runtime layer (harness), metered to the hub, escalated on breach.
|
||||||
|
|
||||||
|
## Sources
|
||||||
|
|
||||||
|
- https://about.gitlab.com/topics/gitops/
|
||||||
|
- https://www.pulumi.com/blog/gitops-best-practices-i-wish-i-had-known-before/
|
||||||
|
- https://spacelift.io/blog/gitops-best-practices
|
||||||
|
- https://github.blog/enterprise-software/devops/applying-gitops-principles-to-your-operations/
|
||||||
|
- https://virtido.com/blog/agentic-workflows-patterns-best-practices-enterprise
|
||||||
|
- https://www.strata.io/blog/agentic-identity/practicing-the-human-in-the-loop/
|
||||||
|
- https://velt.dev/blog/why-ai-agents-need-approval-layer
|
||||||
|
- https://www.stackai.com/insights/human-in-the-loop-ai-agents-how-to-design-approval-workflows-for-safe-and-scalable-automation
|
||||||
|
- https://nhimg.org/faq/how-should-security-teams-implement-human-in-the-loop-controls-for-ai-agents/
|
||||||
|
- https://cmr.berkeley.edu/2026/03/governing-the-agentic-enterprise-a-new-operating-model-for-autonomous-ai-at-scale/
|
||||||
|
- https://www.mckinsey.com/capabilities/risk-and-resilience/our-insights/trust-in-the-age-of-agents
|
||||||
|
- https://inform.tmforum.org/features-and-opinion/ai-autonomy-governance-a-governance-framework-for-agentic-ai-enabling-safe-accountable-and-scalable-autonomous-intelligence
|
||||||
|
- https://www.trendmicro.com/vinfo/us/security/news/cybercrime-and-digital-threats/from-anarchy-to-authority-closing-the-governance-gap-in-agentic-ai
|
||||||
|
- https://agility-at-scale.com/safe/lpm/work-in-progress/
|
||||||
|
- https://agility-at-scale.com/safe/lpm/wsjf-weighted-shortest-job-first/
|
||||||
|
- https://agility-at-scale.com/safe/lpm/epics/
|
||||||
|
- https://agility-at-scale.com/safe/lpm/portfolio-guardrails/
|
||||||
|
- https://spin.atomicobject.com/budget-guardrails-software-project/
|
||||||
|
- https://www.prokanban.org/blog/https-prokanban-org-blog-the-kanban-pocket-guide-chapter-6-the-basic-metrics-of-flow
|
||||||
|
- https://asana.com/resources/project-risks
|
||||||
|
- https://www.atlassian.com/work-management/project-management/project-risk-management
|
||||||
234
research/2026-07-19-work-orchestration-infrastructure-survey.md
Normal file
234
research/2026-07-19-work-orchestration-infrastructure-survey.md
Normal file
|
|
@ -0,0 +1,234 @@
|
||||||
|
# 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 |
|
||||||
274
research/WorkOrchestrationArchitectureDraft.md
Normal file
274
research/WorkOrchestrationArchitectureDraft.md
Normal file
|
|
@ -0,0 +1,274 @@
|
||||||
|
# Work Orchestration Architecture — Draft for Discussion
|
||||||
|
|
||||||
|
> Draft v0.1 — 2026-07-19. Synthesis of
|
||||||
|
> `2026-07-19-work-orchestration-infrastructure-survey.md` (internal) and
|
||||||
|
> `2026-07-19-work-orchestration-best-practices.md` (external).
|
||||||
|
> Trigger: reconciling the binky-control automation queues with the
|
||||||
|
> suggestion/task/workplan backbone (AWQ-010 case). Status: **proposal** —
|
||||||
|
> nothing here is canon until ratified; terminology extensions are marked
|
||||||
|
> ⟨new⟩ and would land as a canon standard v0.1 after discussion.
|
||||||
|
|
||||||
|
## 0. Thesis
|
||||||
|
|
||||||
|
The queues were not a mistake — they were a **market signal**. Intake
|
||||||
|
through a one-YAML-block append beat the hub suggestion flow because its
|
||||||
|
friction was an order of magnitude lower, and it carried routing information
|
||||||
|
(lanes) the backbone lacks. The error was ontological, not practical: the
|
||||||
|
queue items became a second, unindexed species of work item.
|
||||||
|
|
||||||
|
The reconciliation is therefore not "move queues into the hub" but:
|
||||||
|
**make the backbone cheap enough at intake that the queue pattern becomes a
|
||||||
|
schema-valid, hub-indexed instance of it** — and make every future species
|
||||||
|
impossible to create outside the reconciliation loop without tripping an
|
||||||
|
alarm.
|
||||||
|
|
||||||
|
One sentence: *everything with an ID is a work record, every work record is
|
||||||
|
a repo file, every repo file is indexed, and every list anyone works from is
|
||||||
|
a derived view.*
|
||||||
|
|
||||||
|
## 1. The unified ontology
|
||||||
|
|
||||||
|
### 1.1 Work record ⟨new umbrella term⟩
|
||||||
|
|
||||||
|
A **work record** is any identified, lifecycle-bearing coordination artefact.
|
||||||
|
All existing species become *kinds* of work record:
|
||||||
|
|
||||||
|
```
|
||||||
|
work record
|
||||||
|
├── intake item ⟨new⟩ — spark: idea, mail finding, observation, request
|
||||||
|
│ (absorbs: AWQ items, hub suggestions, "actionable" mail-triage rows)
|
||||||
|
├── task — smallest executable unit (canon lifecycle)
|
||||||
|
│ (absorbs: workplan tasks, adhoc tasks, issue-core issues-as-interface)
|
||||||
|
├── workplan — structured, dependency-bearing body of work
|
||||||
|
├── decision — approval package + resolution
|
||||||
|
│ (absorbs: DEC items; hub decision records become the index)
|
||||||
|
├── engagement ⟨new⟩ — scheduled external interaction
|
||||||
|
│ (absorbs: OH items — office-hour/command-day bookings)
|
||||||
|
└── register entry — risk, technical debt, capability request, CCR,
|
||||||
|
interface change (existing species, unchanged
|
||||||
|
semantics, brought under the same conventions)
|
||||||
|
```
|
||||||
|
|
||||||
|
Every work record, regardless of kind, carries the same **conventional
|
||||||
|
spine** (aspect 4 — one framework, many demands):
|
||||||
|
|
||||||
|
| Field | Convention |
|
||||||
|
| --- | --- |
|
||||||
|
| `id` | canonical name per type registry (§1.3) |
|
||||||
|
| `uuid` | UUIDv7, hub-assigned at first index, written back to the file (like `state_hub_*_id` today) |
|
||||||
|
| `kind` | from the closed kind list above |
|
||||||
|
| `lane` | green/blue/yellow/orange/red (§2) |
|
||||||
|
| `status` | abstract canon lifecycle for its kind (§1.4) |
|
||||||
|
| `owner` | repo-anchored owner (agent identity or human) |
|
||||||
|
| `repo` | owning repo (ADR-001/ADR-005 anchor) |
|
||||||
|
| `tags` | policy + derived tags (§3) |
|
||||||
|
| `created`/`updated` | dates; UUIDv7 provides fine-grained internal time |
|
||||||
|
|
||||||
|
Kind-specific fields (budget, evidence, deadline_pressure,
|
||||||
|
attention_cost, …) extend the spine; they never replace it.
|
||||||
|
|
||||||
|
### 1.2 File-first, one reconciliation loop (aspect 3)
|
||||||
|
|
||||||
|
- Every work record originates in a repo file: workplans as today; intake
|
||||||
|
items, decisions, engagements as YAML blocks inside per-repo registry
|
||||||
|
documents (`queues/…` or the existing live documents — location is
|
||||||
|
convention, the schema is what matters).
|
||||||
|
- **Forgejo CI validates schemas** on push (yaml-block schema per kind —
|
||||||
|
the GitOps "validate before apply" rule).
|
||||||
|
- `fix-consistency` grows checks per kind (as C-06 does for workplans):
|
||||||
|
registers new records, writes UUIDs back, syncs status *from file to hub*.
|
||||||
|
The hub stays a read model; runtime operations data (logs, metrics, run
|
||||||
|
histories, token events) is the sanctioned exception and lives only in
|
||||||
|
hub/activity-core/monitoring stores.
|
||||||
|
- Derived views (§4) are generated *from the hub*, never hand-maintained:
|
||||||
|
the "Completed" tail of AutopilotWorkQueue.md, daily-brief queue summaries
|
||||||
|
etc. become materialized view output (ADR-003 pattern), clearly marked
|
||||||
|
`[auto]`.
|
||||||
|
|
||||||
|
### 1.3 Type registry and layered identity (aspect 5)
|
||||||
|
|
||||||
|
A single canon file (`canon/standards/work-record-types_v0.1.md` + machine
|
||||||
|
copy `work-record-types.yaml`) registers every id scheme:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- code: WP # {PREFIX}-WP-NNNN workplan
|
||||||
|
- code: T # {WP-ID}-TNN task
|
||||||
|
- code: IN # {PREFIX}-IN-NNNN intake item ⟨new; AWQ-* grandfathered⟩
|
||||||
|
- code: DEC # {PREFIX}-DEC-YYYY-NNN decision
|
||||||
|
- code: ENG # {PREFIX}-ENG-YYYY-NNN engagement ⟨OH-* grandfathered⟩
|
||||||
|
- code: RISK, TD, CAP, CCR, ADR … register entries (existing)
|
||||||
|
```
|
||||||
|
|
||||||
|
- **UUIDv7 is primary** for bookkeeping, relations, dependencies, history —
|
||||||
|
stable across renames, migrations, and terminology transitions
|
||||||
|
(the workstream→workplan migration cost is the proof this matters).
|
||||||
|
- **Canonical names are primary for humans and agents** in UI/CLI/API
|
||||||
|
output, prose, and commits; UUIDs inspectable on demand. This is already
|
||||||
|
practiced for WP/T — the registry universalizes it.
|
||||||
|
- Grandfathering rule (from the terminology standard): existing ids
|
||||||
|
(AWQ-, OH-) are never renamed; the registry maps legacy prefixes to kinds
|
||||||
|
and the legacy-meter discipline governs retirement of the *schemes*, not
|
||||||
|
the records.
|
||||||
|
|
||||||
|
### 1.4 Abstract states + flow profiles (aspect 4)
|
||||||
|
|
||||||
|
- The **abstract lifecycles stay minimal and canon-fixed**: task
|
||||||
|
`wait/todo/progress/done/cancel` (InfoTechCanon); workplan
|
||||||
|
`proposed/ready/active/blocked/backlog/finished/archived`; intake item
|
||||||
|
`open → vetted → routed → closed(promoted|declined|absorbed)` ⟨new,
|
||||||
|
replaces both suggestion stages and queue-item ad-hoc states⟩; decision
|
||||||
|
`prepared → resolved(approved|rejected|revised|deferred)`; engagement
|
||||||
|
`queued → prepared → done`.
|
||||||
|
- **Different work kinds** (development, ops, compliance, billing, sales…)
|
||||||
|
get their demands met by **flow profiles** on the existing task-flow
|
||||||
|
engine: named workstation definitions whose entry/exit assertions encode
|
||||||
|
the kind-specific gates (e.g. a compliance task cannot exit `progress`
|
||||||
|
without an evidence link; a sales engagement cannot enter `prepared`
|
||||||
|
without prepared_material). Profiles are YAML in repos → same
|
||||||
|
reconciliation loop. States stay abstract; rigor lives in assertions.
|
||||||
|
|
||||||
|
## 2. Lanes become fleet canon (aspects 1, 6, 7)
|
||||||
|
|
||||||
|
Promote binky-control's AutonomyPolicy lane model to
|
||||||
|
`canon/standards/autonomy-lanes_v0.1.md`, unchanged in substance:
|
||||||
|
|
||||||
|
- Green (safe autonomous) · Blue (reversible, logged) · Yellow (deferred
|
||||||
|
approval) · Orange (time-window approval) · Red (human-only).
|
||||||
|
- `lane` is a **mandatory field on every work record** and on every agent
|
||||||
|
manifest; the harness already enforces lane-scoped tool profiles — this
|
||||||
|
closes the loop from item to execution permission.
|
||||||
|
- Human attention is modeled as a **WIP-limited workstation**: the founder
|
||||||
|
attention budget (minutes/day, max decisions/day) is a lane capacity;
|
||||||
|
Yellow routes to the decision queue view, Orange to the engagement view,
|
||||||
|
both subject to that capacity. External research is unanimous that
|
||||||
|
risk-tiered gating is the only scalable human-oversight pattern.
|
||||||
|
- Time-boxing (`needed_by`, `fallback_if_no_response`) is hub-owned: the
|
||||||
|
hub (not a human reading a file) raises the escalation when a window
|
||||||
|
lapses — via the existing NATS → activity-core delegation.
|
||||||
|
|
||||||
|
## 3. Policy tags, not states (aspect 6)
|
||||||
|
|
||||||
|
Two tag classes, both in the `tags` field, never in `status`:
|
||||||
|
|
||||||
|
- **Derived tags** — computed by hub/activity-core from data, read-only in
|
||||||
|
files: `stalled` (work-item age over threshold — the flow-metrics form),
|
||||||
|
`stale` (reviewed against older repo state), `overdue-decision`,
|
||||||
|
`budget-breached`, `orphaned` (no goal/workplan link).
|
||||||
|
- **Policy tags** — assigned by agents/humans under tagging policies:
|
||||||
|
`automatable`, `needs-human`, `unclear-implementation`, `red-adjacent`
|
||||||
|
(touches a Red boundary), `compliance-relevant`. Tagging policies are
|
||||||
|
YAML rules (activity-core `ActivityDefinition`s may auto-apply them on
|
||||||
|
events) — auditable and evolvable without schema migrations.
|
||||||
|
|
||||||
|
Tags drive the optimization loop: `automatable` feeds the autopilot view;
|
||||||
|
`needs-human` + lane feeds attention routing; `stalled`+`unclear` feeds the
|
||||||
|
kaizen coach. This is how "what should be automated next" becomes a query
|
||||||
|
instead of a discovery.
|
||||||
|
|
||||||
|
## 4. Queues are views (the reconciliation itself)
|
||||||
|
|
||||||
|
The three binky queues are retained **as products, redefined as views**:
|
||||||
|
|
||||||
|
| Today | Becomes |
|
||||||
|
| --- | --- |
|
||||||
|
| AutopilotWorkQueue.md (hand-edited) | *Autopilot view*: `kind=intake∨task, lane∈{green,blue}, status∈{open,todo}, tag=automatable`, WSJF-ordered; "never empty" becomes a monitored invariant with an alert, not a plea |
|
||||||
|
| DecisionQueue.md open section | *Decision view*: `kind=decision, status=prepared`, ordered by needed_by; resolved log is generated |
|
||||||
|
| OfficeHourQueue.md | *Engagement view*: `kind=engagement`, batched per command day; runbook generation stays (officehour/) |
|
||||||
|
|
||||||
|
Mechanics: records are authored in files (cheap intake preserved — one YAML
|
||||||
|
block, schema-checked); `fix-consistency` indexes them; view documents are
|
||||||
|
regenerated `[auto]` sections. Pull protocol becomes a status transition
|
||||||
|
(`todo → progress` with owner) instead of a prose note — which makes claims
|
||||||
|
visible fleet-wide and collision-free (issue-core remains the claim
|
||||||
|
*interface* for harness runtime; the record is the truth).
|
||||||
|
|
||||||
|
Promotion (the AWQ-010 lesson) becomes a **first-class transition**:
|
||||||
|
`intake.routed → workplan|task|decision|engagement` with back-links
|
||||||
|
(`promoted_to`/`origin`), performable by one CLI/MCP call that writes both
|
||||||
|
files and re-syncs — never a manual transcription again.
|
||||||
|
|
||||||
|
## 5. Visibility, tenancy, scale (aspect 2)
|
||||||
|
|
||||||
|
- **state-hub** remains the dev-coordination read model (localhost,
|
||||||
|
file-first, fix-consistency).
|
||||||
|
- **core-hub** is the production visibility layer: dashboards, flow metrics
|
||||||
|
(WIP, cycle time, item age, throughput — all computable from UUIDv7 +
|
||||||
|
status transitions), cross-domain rollups, operator console. The work
|
||||||
|
record spine becomes part of the core-hub contract/IR so Gen-3 ingests
|
||||||
|
ADR-001 artefacts natively (its workplan-coordination spec already
|
||||||
|
commits to this).
|
||||||
|
- **Tenancy**: repo → domain → tenant, derived from repo classification
|
||||||
|
(never a parallel spine). agent-harness is already multi-tenant with
|
||||||
|
per-tenant credential lanes (ops-warden/OpenBao); dashboards get
|
||||||
|
tenant/domain scoping from the same derivation. Separation is by
|
||||||
|
classification + credential lanes; centralization is by shared runtime
|
||||||
|
(harness, activity-core, hubs) — efficient utilization with clean blast
|
||||||
|
radii.
|
||||||
|
- **Budgets as guardrail envelopes** (aspect 1): per-run token budgets
|
||||||
|
(harness manifests, enforced today) roll up to per-workplan and per-lane
|
||||||
|
envelopes recorded on the work record; `record_token_event` meters,
|
||||||
|
`budget-breached` tag + escalation on breach. Complex-project risk
|
||||||
|
control = dependency edges (existing) + lane gates + budget envelopes +
|
||||||
|
flow metrics, all on one spine.
|
||||||
|
|
||||||
|
## 6. Opinionated by construction (aspect 7)
|
||||||
|
|
||||||
|
- **The registry is closed.** An id pattern not in the type registry fails
|
||||||
|
CI and fix-consistency (the "sidetrack detector" — a warning that names
|
||||||
|
the reintegration cost explicitly). New kinds are added by canon PR, which
|
||||||
|
is deliberately cheap (one YAML entry + one schema) so the legitimate
|
||||||
|
path is easier than the workaround — the core lesson of the queues.
|
||||||
|
- **AGENTS.md generation** (state-hub templates) teaches the conventions in
|
||||||
|
every repo; the guidance and the enforcement come from the same source.
|
||||||
|
- **Intake friction budget**: creating an intake item must never cost more
|
||||||
|
than the AWQ pattern did (append one block). If a future workaround
|
||||||
|
appears anyway, the postmortem question is fixed: *which friction did we
|
||||||
|
fail to remove?*
|
||||||
|
|
||||||
|
## 7. Migration path (staged, history-preserving)
|
||||||
|
|
||||||
|
1. **Canonize** (docs only): work-record umbrella + type registry +
|
||||||
|
autonomy-lanes standard + intake lifecycle → canon standards v0.1;
|
||||||
|
extend `workplan-terminology-fleet` rather than fork it.
|
||||||
|
2. **Schema + CI**: YAML schemas per kind; Forgejo CI check; binky-control
|
||||||
|
is the pilot (its queues become schema-valid without renaming ids).
|
||||||
|
3. **Index**: fix-consistency checks for intake/decision/engagement kinds
|
||||||
|
(C-2x series); hub tables reuse existing entities where they fit
|
||||||
|
(suggestions table ⇢ intake items — suggestions gain file artefacts,
|
||||||
|
resolving their own ADR-001 tension; decisions already dual-exist,
|
||||||
|
the check just automates the mirroring both ways).
|
||||||
|
4. **Views**: generated `[auto]` sections replace hand-maintained queue
|
||||||
|
tails; hub owns needed_by clocks via NATS → activity-core.
|
||||||
|
5. **Tags + metrics**: derived-tag computation and the four flow metrics in
|
||||||
|
state-hub first, surfaced in core-hub dashboards as the contract lands.
|
||||||
|
6. **Retire** legacy singularities per legacy-meter discipline (e.g. the
|
||||||
|
hub-first suggestion create path) only after zero measured use.
|
||||||
|
|
||||||
|
Each stage is independently valuable; stopping after any stage leaves the
|
||||||
|
system consistent (no big-bang).
|
||||||
|
|
||||||
|
## 8. Open questions for discussion
|
||||||
|
|
||||||
|
1. **Naming**: "work record" vs. "work item" as umbrella; "intake item" vs.
|
||||||
|
keeping "suggestion" fleet-wide; German-friendly alternatives?
|
||||||
|
2. **Where intake blocks live**: per-repo `queues/intake.md` vs. today's
|
||||||
|
thematic live documents (AutopilotWorkQueue as a *view* argues for
|
||||||
|
separating authored records from generated views into distinct files).
|
||||||
|
3. **Engagements** as their own kind vs. decisions-with-a-time-window —
|
||||||
|
the Orange lane is behaviorally distinct (batching), which argues for
|
||||||
|
the separate kind, but the spine could carry it as a decision subtype.
|
||||||
|
4. **WSJF adoption**: reuse the 2026-06-04 calibration or start simpler
|
||||||
|
(lane + priority + age) and let kaizen metrics justify WSJF later?
|
||||||
|
5. **issue-core's long-term role**: claim interface only (proposed here),
|
||||||
|
or should issues become file-backed work records too?
|
||||||
|
6. **Suggestion table reuse vs. new intake entity** in state-hub — schema
|
||||||
|
archaeology needed before stage 3.
|
||||||
|
7. **Budget envelope placement**: frontmatter on workplans vs. a separate
|
||||||
|
`budgets.yaml` per repo (compliance kinds may want the latter).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Prepared from live fleet data (AWQ-010 reintegration, DEC-2026-003/004
|
||||||
|
dual bookkeeping, BINKY-WP-0002 slug drift) and the two research artefacts
|
||||||
|
alongside this file. Next step after discussion: canon standard drafts +
|
||||||
|
a CUST workplan for stage 1–2.*
|
||||||
Loading…
Add table
Add a link
Reference in a new issue