From b5861e6bf2064002ac72cb163d4f04ecb2c8592f Mon Sep 17 00:00:00 2001 From: Hare Date: Sun, 7 Jun 2026 17:44:58 +0900 Subject: [PATCH] config: add workspace role profiles --- .yoi/profiles.toml | 21 ++++++++ .yoi/profiles/_base.lua | 44 +++++++++++++++++ .yoi/profiles/coder.lua | 7 +++ .yoi/profiles/companion.lua | 7 +++ .yoi/profiles/intake.lua | 7 +++ .yoi/profiles/orchestrator.lua | 7 +++ .yoi/profiles/reviewer.lua | 7 +++ .yoi/ticket.config.toml | 12 ++--- .../artifacts/.gitkeep | 0 .../item.md | 48 +++++++++++++++++++ .../thread.md | 7 +++ 11 files changed, 159 insertions(+), 8 deletions(-) create mode 100644 .yoi/profiles.toml create mode 100644 .yoi/profiles/_base.lua create mode 100644 .yoi/profiles/coder.lua create mode 100644 .yoi/profiles/companion.lua create mode 100644 .yoi/profiles/intake.lua create mode 100644 .yoi/profiles/orchestrator.lua create mode 100644 .yoi/profiles/reviewer.lua create mode 100644 .yoi/tickets/open/20260607-084344-remove-fixed-investigator-ticket-role/artifacts/.gitkeep create mode 100644 .yoi/tickets/open/20260607-084344-remove-fixed-investigator-ticket-role/item.md create mode 100644 .yoi/tickets/open/20260607-084344-remove-fixed-investigator-ticket-role/thread.md diff --git a/.yoi/profiles.toml b/.yoi/profiles.toml new file mode 100644 index 00000000..89c30499 --- /dev/null +++ b/.yoi/profiles.toml @@ -0,0 +1,21 @@ +default = "project:companion" + +[profile.companion] +description = "Companion role profile: GPT-5.5 with bundled default behavior" +path = "profiles/companion.lua" + +[profile.intake] +description = "Intake role profile: GPT-5.5 with bundled default behavior" +path = "profiles/intake.lua" + +[profile.orchestrator] +description = "Orchestrator role profile: GPT-5.5 with bundled default behavior" +path = "profiles/orchestrator.lua" + +[profile.coder] +description = "Coder role profile: GPT-5.5 with bundled default behavior" +path = "profiles/coder.lua" + +[profile.reviewer] +description = "Reviewer role profile: GPT-5.5 with bundled default behavior" +path = "profiles/reviewer.lua" diff --git a/.yoi/profiles/_base.lua b/.yoi/profiles/_base.lua new file mode 100644 index 00000000..e1a8e46b --- /dev/null +++ b/.yoi/profiles/_base.lua @@ -0,0 +1,44 @@ +local profile = require("yoi.profile") +local scope = require("yoi.scope") +local compact = require("yoi.compact") + +return function(opts) + return profile { + slug = opts.slug, + description = opts.description, + + scope = scope.workspace_write(), + + session = { + record_event_trace = true, + }, + + worker = { + reasoning = "high", + }, + + model = { + ref = opts.model_ref, + }, + + compaction = compact.tokens { + threshold = 240000, + request_threshold = 270000, + worker_context_max_tokens = 100000, + }, + + memory = { + extract_threshold = 50000, + consolidation_threshold_files = 5, + consolidation_threshold_bytes = 50000, + }, + + web = { + enabled = true, + search = { + provider = "brave", + api_key_secret = "web/brave/default", + }, + }, + } +end diff --git a/.yoi/profiles/coder.lua b/.yoi/profiles/coder.lua new file mode 100644 index 00000000..8327b406 --- /dev/null +++ b/.yoi/profiles/coder.lua @@ -0,0 +1,7 @@ +local base = require("_base") + +return base { + slug = "coder", + description = "Coder role profile: GPT-5.5 with bundled default behavior", + model_ref = "codex-oauth/gpt-5.5", +} diff --git a/.yoi/profiles/companion.lua b/.yoi/profiles/companion.lua new file mode 100644 index 00000000..4744ea78 --- /dev/null +++ b/.yoi/profiles/companion.lua @@ -0,0 +1,7 @@ +local base = require("_base") + +return base { + slug = "companion", + description = "Companion role profile: GPT-5.5 with bundled default behavior", + model_ref = "codex-oauth/gpt-5.5", +} diff --git a/.yoi/profiles/intake.lua b/.yoi/profiles/intake.lua new file mode 100644 index 00000000..9327ffac --- /dev/null +++ b/.yoi/profiles/intake.lua @@ -0,0 +1,7 @@ +local base = require("_base") + +return base { + slug = "intake", + description = "Intake role profile: GPT-5.5 with bundled default behavior", + model_ref = "codex-oauth/gpt-5.5", +} diff --git a/.yoi/profiles/orchestrator.lua b/.yoi/profiles/orchestrator.lua new file mode 100644 index 00000000..ac1d4968 --- /dev/null +++ b/.yoi/profiles/orchestrator.lua @@ -0,0 +1,7 @@ +local base = require("_base") + +return base { + slug = "orchestrator", + description = "Orchestrator role profile: GPT-5.5 with bundled default behavior", + model_ref = "codex-oauth/gpt-5.5", +} diff --git a/.yoi/profiles/reviewer.lua b/.yoi/profiles/reviewer.lua new file mode 100644 index 00000000..03852e9b --- /dev/null +++ b/.yoi/profiles/reviewer.lua @@ -0,0 +1,7 @@ +local base = require("_base") + +return base { + slug = "reviewer", + description = "Reviewer role profile: GPT-5.5 with bundled default behavior", + model_ref = "codex-oauth/gpt-5.5", +} diff --git a/.yoi/ticket.config.toml b/.yoi/ticket.config.toml index 0c3b2f40..d8c8210a 100644 --- a/.yoi/ticket.config.toml +++ b/.yoi/ticket.config.toml @@ -3,21 +3,17 @@ provider = "builtin:yoi_local" root = ".yoi/tickets" [roles.intake] -profile = "builtin:default" +profile = "project:intake" workflow = "ticket-intake-workflow" [roles.orchestrator] -profile = "builtin:default" +profile = "project:orchestrator" workflow = "ticket-orchestrator-routing" [roles.coder] -profile = "builtin:default" +profile = "project:coder" workflow = "multi-agent-workflow" [roles.reviewer] -profile = "builtin:default" +profile = "project:reviewer" workflow = "multi-agent-workflow" - -[roles.investigator] -profile = "builtin:default" -workflow = "ticket-preflight-workflow" diff --git a/.yoi/tickets/open/20260607-084344-remove-fixed-investigator-ticket-role/artifacts/.gitkeep b/.yoi/tickets/open/20260607-084344-remove-fixed-investigator-ticket-role/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/open/20260607-084344-remove-fixed-investigator-ticket-role/item.md b/.yoi/tickets/open/20260607-084344-remove-fixed-investigator-ticket-role/item.md new file mode 100644 index 00000000..5b2d9fce --- /dev/null +++ b/.yoi/tickets/open/20260607-084344-remove-fixed-investigator-ticket-role/item.md @@ -0,0 +1,48 @@ +--- +id: 20260607-084344-remove-fixed-investigator-ticket-role +slug: remove-fixed-investigator-ticket-role +title: Remove fixed investigator Ticket role +status: open +kind: task +priority: P2 +labels: [ticket, orchestration, role, cleanup] +workflow_state: intake +created_at: 2026-06-07T08:43:44Z +updated_at: 2026-06-07T08:43:44Z +assignee: null +legacy_ticket: null +--- + +## Background + +`investigator` was introduced by prior AI-driven Ticket orchestration design as a fixed Ticket role alongside `intake`, `orchestrator`, `coder`, and `reviewer`. It was not part of the current desired role profile set, and the former TUI `:ticket investigate` surface has already been removed. + +Investigation/read-only research remains useful, but it should be modeled as a task-specific helper Pod spawned by Intake/Orchestrator/preflight when needed, not as a permanent fixed Ticket role with workspace config/profile slots. + +## Goal + +Remove `investigator` as a fixed Ticket role and clean up user/project-facing references while preserving the ability for Orchestrator/preflight flows to spawn read-only investigation helper Pods as ordinary task-specific Pods. + +## Requirements + +- Remove `TicketRole::Investigator` from the fixed role model. +- Update Ticket config parsing/scaffold/defaults so `.yoi/ticket.config.toml` only requires/advertises: + - `intake` + - `orchestrator` + - `coder` + - `reviewer` +- Treat `[roles.investigator]` in current config according to the project’s desired compatibility policy; prefer a clear config error or documented migration over silently using an unsupported role. +- Update launcher/client/TUI tests and prompt generation that currently mention or branch on `Investigator`. +- Remove docs/workflow wording that presents `investigator` as a fixed role or configured role slot. +- Preserve wording/behavior that allows Orchestrator/preflight to create read-only helper Pods for investigation when explicitly useful. +- Do not reintroduce the removed TUI `:ticket investigate` command surface. +- Do not add a generic arbitrary role registry as part of this cleanup. + +## Acceptance criteria + +- No runtime fixed-role enum/config/scaffold path exposes `investigator` as a Ticket role. +- `yoi ticket init` no longer emits `[roles.investigator]`. +- Project docs describe investigation as an optional helper-Pod activity under Intake/Orchestrator/preflight, not a configured Ticket role. +- Existing Ticket role launch flows for intake/orchestrator/coder/reviewer still work. +- Focused tests for `ticket::config`, `client::ticket_role`, and any affected TUI role-launch/panel paths pass. +- `target/debug/yoi ticket doctor`, `cargo fmt --check`, and `git diff --check` pass. diff --git a/.yoi/tickets/open/20260607-084344-remove-fixed-investigator-ticket-role/thread.md b/.yoi/tickets/open/20260607-084344-remove-fixed-investigator-ticket-role/thread.md new file mode 100644 index 00000000..f9998d4b --- /dev/null +++ b/.yoi/tickets/open/20260607-084344-remove-fixed-investigator-ticket-role/thread.md @@ -0,0 +1,7 @@ + + +## Created + +Created by LocalTicketBackend create. + +---