diff --git a/.yoi/tickets/open/20260607-031439-ticket-init-role-profile-scaffold/item.md b/.yoi/tickets/open/20260607-031439-ticket-init-role-profile-scaffold/item.md index f2d8282c..c8a7e942 100644 --- a/.yoi/tickets/open/20260607-031439-ticket-init-role-profile-scaffold/item.md +++ b/.yoi/tickets/open/20260607-031439-ticket-init-role-profile-scaffold/item.md @@ -6,9 +6,9 @@ status: open kind: task priority: P1 labels: [ticket, config, init, profiles, panel] -workflow_state: intake +workflow_state: ready created_at: 2026-06-07T03:14:39Z -updated_at: 2026-06-07T03:14:39Z +updated_at: 2026-06-07T03:43:38Z assignee: null legacy_ticket: null --- diff --git a/.yoi/tickets/open/20260607-031439-ticket-init-role-profile-scaffold/thread.md b/.yoi/tickets/open/20260607-031439-ticket-init-role-profile-scaffold/thread.md index 8a310e28..929f26c0 100644 --- a/.yoi/tickets/open/20260607-031439-ticket-init-role-profile-scaffold/thread.md +++ b/.yoi/tickets/open/20260607-031439-ticket-init-role-profile-scaffold/thread.md @@ -4,4 +4,74 @@ Created by LocalTicketBackend create. +--- + + + +## Plan + +## Preflight / implementation intent + +Classification: implementation-ready after `ticket-role-launch-config-strict-validation` landed. + +Intent: +- Add a Ticket-focused scaffold/init path that writes an explicit `.yoi/ticket.config.toml` with concrete fixed role profiles. +- This is explicit config generation, not runtime fallback. The generated file may choose builtin presets, but the runtime must continue requiring explicit role config. + +Current state: +- There is no top-level `yoi init` command in `crates/yoi/src/main.rs`. +- `yoi ticket` currently has no `init` command. +- `yoi ticket` already documents fallback backend behavior when config is absent, but role launch validation now requires explicit role config for Panel Intake/Orchestrator launches. + +Implementation direction: +- Introduce a narrow `yoi ticket init` scaffold command rather than a broad product-level init redesign. +- The command should create `.yoi/ticket.config.toml` if missing, and optionally ensure the local Ticket root `.yoi/tickets` exists. +- Default generated config should explicitly include: + - `[backend] provider = "builtin:yoi_local"`, `root = ".yoi/tickets"`; + - fixed `[roles.*]` tables for intake, orchestrator, coder, reviewer, investigator; + - each role has a concrete `profile`, initially `builtin:default` unless role-specific builtin profiles are introduced in the same small diff; + - each role has explicit `workflow` matching the role defaults. +- Do not overwrite an existing `.yoi/ticket.config.toml` unless an explicit force flag is intentionally added and tested. A minimal first pass can fail with an actionable diagnostic when the config already exists. +- Generated config should pass the strict role launch validation added by the previous ticket. + +Suggested command shape: +- `yoi ticket init` +- Optional flags only if small and useful: + - `--force` is not required for first pass; + - `--print`/dry-run is not required for first pass. + +Code map: +- `crates/yoi/src/ticket_cli.rs`: add parse/run/help for `init` and tests. +- `crates/ticket/src/config.rs`: add reusable scaffold string/helper if that keeps config generation testable near config types. +- `crates/client/src/ticket_role.rs`: use existing launch validation tests to verify generated config is launch-ready. +- `.yoi/ticket.config.toml`: update this repository's config through the new intended shape or keep repository config update in main workspace if child worktree excludes `.yoi`; the implementation should at least make the scaffold generate that shape. + +Non-goals: +- Do not loosen runtime validation. +- Do not add implicit builtin/default fallback. +- Do not implement broad global `yoi init` unless the existing CLI structure makes it clearly smaller than `yoi ticket init`. +- Do not design role-specific builtin profiles unless it is trivial and scoped; `builtin:default` as explicit scaffold output is acceptable for now. + +Validation: +- Tests should cover generated config shape, refusal to overwrite existing config, and successful role launch validation against generated config. +- Run focused `cargo test -p ticket config --lib`, `cargo test -p client ticket_role --lib`, and `cargo test -p yoi ticket` or equivalent ticket CLI tests. +- Run `cargo fmt --check` and `git diff --check`. + +--- + + + +## Intake summary + +Implementation-ready after strict role launch validation: add a narrow `yoi ticket init` scaffold path that writes explicit backend and fixed role profile config to `.yoi/ticket.config.toml`, using concrete selectors such as explicit `builtin:default` for now, without adding runtime fallback. + +--- + + + +## State changed + +Ticket intake complete; workflow_state intake -> ready. + + ---