11 KiB
Public builtin workflows and Yoi dogfood workflows
Yoi should split workflows into public builtin procedures and project-local dogfood procedures. The builtin set should teach the general Ticket/role lifecycle; this repository's Git worktree, branch, cargo, nix, merge, cleanup, and report conventions should stay project-local unless they are explicitly selected as an optional extension.
This document records the design/audit decision for Ticket 00001KTRKZ14C. It does not implement the builtin workflow loader.
Decision
- Add a typed builtin workflow source, conceptually
WorkflowSource::Builtin, with clear provenance in any list/show/launch surface. - Store public builtin workflow resources under
resources/workflows/<slug>.md, not underresources/prompts.- Workflows are user-visible procedural artifacts selected by slug and source. They need source/provenance/listing semantics distinct from prompt fragments.
- They are still embedded runtime resources, but prompt-fragment override rules should not silently become workflow authority.
- Source priority for workflow lookup should be:
- explicit path/file selector, if the CLI/config surface allows one;
- workspace
.yoi/workflow/<slug>.md; - user workflow directory, if/when one is added;
- builtin
resources/workflows/<slug>.md; - external skill/plugin workflow sources, only when explicitly enabled and named.
- Workspace workflows override builtin workflows by slug. Overrides must show provenance so a role launch can say whether it used workspace, user, builtin, or plugin workflow text.
- Keep role Profile policy separate from workflow prose. Profiles select role behavior/tool policy; workflows provide procedural flow; launch prompts provide concrete Ticket/action context.
- Public resident core should remain small: intake requirements sync and orchestrator routing. Multi-agent implementation/review is builtin-available but not necessarily resident in every profile. Git worktree mechanics are optional/project-local by default.
Audit of current workspace workflows
| Current slug | Public builtin candidate | Dogfood/project-local material | Decision |
|---|---|---|---|
ticket-intake-workflow |
Yes. The core requirement-sync flow, existing-Ticket refinement, readiness, duplicate avoidance, and Ticket materialization are product-generic. | Mentions current local storage and Yoi-specific Ticket command examples. | Move cleaned generic version to builtin core. Keep storage-command specifics either bounded and product-generic or in project-local notes. |
ticket-orchestrator-routing |
Yes. The routing classifications, queued acceptance contract, relation/orchestration-plan checks, and planning-return rules are product-generic. | Contains Yoi dogfood examples, worktree/multi-agent handoff specifics, and merge-completion guidance tied to this repo's operating policy. | Move generic routing gate to builtin core. Split dogfood merge/worktree details into workspace override or separate dogfood workflow. |
ticket-preflight-workflow |
Compatibility candidate only. It now describes planning/requirements sync and legacy canonical id compatibility rather than a standalone lane. | Mostly project-history wording and deprecated-preflight vocabulary. | Do not make resident core. Keep as builtin compatibility alias only if existing configs still reference it; otherwise replace references with intake/planning sync. |
multi-agent-workflow |
Partly. The sibling coder/reviewer loop, intent packet, branch-local review, and merge-ready dossier are useful product concepts. | Heavy Yoi dogfood specifics: Git worktrees, commits, cargo/nix validation, branch cleanup, docs/report conventions, and parent/child policy. | Split into builtin multi-agent-workflow for role loop + dossier, and workspace dogfood extension for Git worktree/cargo/nix mechanics. |
worktree-workflow |
Not resident public core. | Almost entirely this repository's Git worktree mechanics and .yoi path exclusions. |
Keep workspace-local dogfood workflow. Optionally create a non-resident builtin git-worktree-isolation later, disabled unless explicitly selected. |
Slug and .yoi/ticket.config.toml migration decision
Use explicit dogfood slugs for workflows whose semantics differ from the public builtin workflow. Same-slug workspace overrides are allowed for local wording/policy tweaks of the same public contract, but they should not be used to hide Yoi repository Git/worktree/cargo/nix/merge semantics behind a public slug. This avoids accidental shadowing when a user expects multi-agent-workflow to mean the generic builtin role loop.
Planned selector mapping for this repository after builtin workflow loading exists:
| Role/config surface | Workflow selector | Source intent | Rationale |
|---|---|---|---|
[roles.intake].workflow |
ticket-intake-workflow |
builtin core by default; workspace same-slug override only if this repo needs a true local refinement of the same intake contract | Intake is mostly product-generic; dogfood Git/worktree policy does not belong here. |
[roles.orchestrator].workflow |
ticket-orchestrator-routing |
builtin core by default; dogfood merge/worktree instructions come from explicit launch context or a separate dogfood workflow, not a hidden same-slug override | Routing semantics should stay public/generic; repo-specific implementation mechanics should be opt-in and visible. |
[roles.coder].workflow |
yoi-dogfood-multi-agent-workflow |
workspace-local dogfood workflow | Coder work in this repository is tied to the repo worktree/branch/validation contract and must not shadow generic builtin multi-agent-workflow. |
[roles.reviewer].workflow |
yoi-dogfood-multi-agent-workflow |
workspace-local dogfood workflow | Reviewer evidence in this repository includes branch/worktree/cargo/nix/Ticket-doctor conventions; use an explicit dogfood slug. |
| compatibility references | ticket-preflight-workflow |
builtin compatibility alias or workspace compatibility file, non-resident | Do not keep it as a role default. It should point to planning/requirements sync language only. |
| dogfood worktree helper | yoi-dogfood-worktree-workflow |
workspace-local helper, not a role default by itself | Referenced from yoi-dogfood-multi-agent-workflow; keeps Git worktree mechanics out of generic builtin workflows. |
multi-agent-workflow should be reserved for the generic builtin sibling coder/reviewer loop. This repository should not keep a same-slug workspace override with dogfood semantics once the builtin exists. If a temporary same-slug override is needed during migration, it must be short-lived and the Ticket/config comment must say it shadows the builtin intentionally.
Builtin workflow set
Resident builtin core
These should be advertised by default when Ticket support is enabled:
ticket-intake-workflow- generic Ticket requirements sync/materialization;
- existing Ticket refinement with explicit user agreement;
- readiness and duplicate handling;
- no Yoi repository cargo/nix/worktree policy.
ticket-orchestrator-routing- explicit routing gate;
- queued acceptance before implementation side effects;
- relation/orchestration-plan/context checks;
- implementation-ready IntentPacket shape;
- no repository-specific merge authority or Git cleanup policy.
Builtin available but optional
These can be embedded and selectable, but should not be injected as resident core unless the active Profile/config opts in:
multi-agent-workflow- generic sibling coder/reviewer loop;
- intent packet, reviewer evidence, blocker/fix-loop, merge-ready dossier;
- no mandatory Git worktree, cargo, nix, or
.yoicleanup rules.
ticket-preflight-workflow- transitional alias for old configurations that still name preflight;
- should route to planning/requirements sync language and avoid reintroducing preflight as a lifecycle state.
Workspace-local dogfood workflows
These remain in this repository under .yoi/workflow/ as overrides or dogfood-only slugs:
worktree-workflow- mechanical Yoi project worktree setup;
- tracked
.yoiproject records visible; .yoi/memory, local/runtime/log/lock/secret-like paths excluded;- branch/worktree cleanup policy.
- A dogfood extension for multi-agent/merge-completion, if the generic builtin
multi-agent-workflowis cleaned:- concrete
cargo fmt,cargo test,target/debug/yoi ticket doctor,nix build .#yoivalidation policy; - merge authority boundaries for this repository;
- docs/report conventions.
- concrete
Stale vocabulary cleanup
Builtin workflows and active workspace workflows should remove or replace the following old wording:
Action required/Attention requiredas storage or state concepts. Use explicit Ticket state, typed relation metadata, orchestration-plan waiting notes, or Ticket thread comments instead.preflightas a lifecycle lane/state. Use planning/requirements sync or compatibility alias language.open/pending/closed bucketauthority. Current authority isstateplus optionalresolution.mdfor closed Tickets.- Long-lived umbrella/progress-container Ticket terminology. Use concrete implementation Tickets and optional Objective context.
Follow-up implementation boundaries
-
Builtin workflow resource loader
- Add embedded
resources/workflows/*.mdresources. - Add
WorkflowSource::Builtin/ equivalent typed provenance. - Update workflow discovery/list/show/launch so workspace overrides builtin by slug and provenance is visible.
- Include tests for source priority and override behavior.
- Add embedded
-
Public workflow text cleanup
- Create cleaned builtin versions of
ticket-intake-workflowandticket-orchestrator-routing. - Split generic
multi-agent-workflowfrom Yoi dogfood Git/worktree/cargo/nix mechanics. - Keep
ticket-preflight-workflowas compatibility-only or remove references if no longer needed.
- Create cleaned builtin versions of
-
Dogfood workflow retention
- Keep or rename workspace-local dogfood workflows for this repository's implementation mechanics.
- Ensure
.yoi/ticket.config.tomlrole workflow selectors intentionally point to builtin generic workflows or workspace dogfood overrides, with no accidental slug shadowing.
-
Vocabulary migration
- Sweep active workflow text, prompts, docs, and Ticket UI wording for
Action required,Attention required, and old preflight lane language. - Replace with typed state/relation/orchestration-plan terminology.
- Sweep active workflow text, prompts, docs, and Ticket UI wording for
-
Panel/role launch provenance display
- When a role launches with a workflow, include the workflow source/provenance in diagnostic/launch context so builtin vs workspace override is debuggable.
Non-goals for this Ticket
- Implementing the builtin workflow loader.
- Moving current workflow files into runtime resources in this branch.
- Changing Ticket lifecycle states.
- Changing role Profile policy.
- Changing scheduler/queue behavior.