From e1215c79bebfd27f61160406a14f470c03f4b85d Mon Sep 17 00:00:00 2001 From: Hare Date: Sat, 6 Jun 2026 03:48:27 +0900 Subject: [PATCH] ticket: close ticket config roles --- .../artifacts/.gitkeep | 0 .../artifacts/implementation-report.md | 0 .../artifacts/investigation-plan.md | 0 .../artifacts/review.md | 0 .../item.md | 4 +- .../resolution.md | 53 ++++++++++++++++ .../thread.md | 61 +++++++++++++++++++ 7 files changed, 116 insertions(+), 2 deletions(-) rename work-items/{open => closed}/20260605-173322-ticket-config-role-profile-mapping/artifacts/.gitkeep (100%) rename work-items/{open => closed}/20260605-173322-ticket-config-role-profile-mapping/artifacts/implementation-report.md (100%) rename work-items/{open => closed}/20260605-173322-ticket-config-role-profile-mapping/artifacts/investigation-plan.md (100%) rename work-items/{open => closed}/20260605-173322-ticket-config-role-profile-mapping/artifacts/review.md (100%) rename work-items/{open => closed}/20260605-173322-ticket-config-role-profile-mapping/item.md (99%) create mode 100644 work-items/closed/20260605-173322-ticket-config-role-profile-mapping/resolution.md rename work-items/{open => closed}/20260605-173322-ticket-config-role-profile-mapping/thread.md (86%) diff --git a/work-items/open/20260605-173322-ticket-config-role-profile-mapping/artifacts/.gitkeep b/work-items/closed/20260605-173322-ticket-config-role-profile-mapping/artifacts/.gitkeep similarity index 100% rename from work-items/open/20260605-173322-ticket-config-role-profile-mapping/artifacts/.gitkeep rename to work-items/closed/20260605-173322-ticket-config-role-profile-mapping/artifacts/.gitkeep diff --git a/work-items/open/20260605-173322-ticket-config-role-profile-mapping/artifacts/implementation-report.md b/work-items/closed/20260605-173322-ticket-config-role-profile-mapping/artifacts/implementation-report.md similarity index 100% rename from work-items/open/20260605-173322-ticket-config-role-profile-mapping/artifacts/implementation-report.md rename to work-items/closed/20260605-173322-ticket-config-role-profile-mapping/artifacts/implementation-report.md diff --git a/work-items/open/20260605-173322-ticket-config-role-profile-mapping/artifacts/investigation-plan.md b/work-items/closed/20260605-173322-ticket-config-role-profile-mapping/artifacts/investigation-plan.md similarity index 100% rename from work-items/open/20260605-173322-ticket-config-role-profile-mapping/artifacts/investigation-plan.md rename to work-items/closed/20260605-173322-ticket-config-role-profile-mapping/artifacts/investigation-plan.md diff --git a/work-items/open/20260605-173322-ticket-config-role-profile-mapping/artifacts/review.md b/work-items/closed/20260605-173322-ticket-config-role-profile-mapping/artifacts/review.md similarity index 100% rename from work-items/open/20260605-173322-ticket-config-role-profile-mapping/artifacts/review.md rename to work-items/closed/20260605-173322-ticket-config-role-profile-mapping/artifacts/review.md diff --git a/work-items/open/20260605-173322-ticket-config-role-profile-mapping/item.md b/work-items/closed/20260605-173322-ticket-config-role-profile-mapping/item.md similarity index 99% rename from work-items/open/20260605-173322-ticket-config-role-profile-mapping/item.md rename to work-items/closed/20260605-173322-ticket-config-role-profile-mapping/item.md index 65f81299..caec47e2 100644 --- a/work-items/open/20260605-173322-ticket-config-role-profile-mapping/item.md +++ b/work-items/closed/20260605-173322-ticket-config-role-profile-mapping/item.md @@ -2,12 +2,12 @@ id: 20260605-173322-ticket-config-role-profile-mapping slug: ticket-config-role-profile-mapping title: Ticket config role profile mapping -status: open +status: closed kind: task priority: P1 labels: [ticket, config, profile, orchestration] created_at: 2026-06-05T17:33:22Z -updated_at: 2026-06-05T18:45:41Z +updated_at: 2026-06-05T18:48:15Z assignee: null legacy_ticket: null --- diff --git a/work-items/closed/20260605-173322-ticket-config-role-profile-mapping/resolution.md b/work-items/closed/20260605-173322-ticket-config-role-profile-mapping/resolution.md new file mode 100644 index 00000000..27937751 --- /dev/null +++ b/work-items/closed/20260605-173322-ticket-config-role-profile-mapping/resolution.md @@ -0,0 +1,53 @@ +Ticket config role profile mapping is complete and merged. + +Implementation: + +- `767870a ticket: add workspace ticket config` +- `8fab67b ticket: reject nix profile selectors` +- merge commit: `9910df4 merge: add ticket config roles` + +Summary: + +- Added `.yoi/ticket.config.toml` support through `crates/ticket/src/config.rs`. +- Added fixed Ticket roles only: + - `intake` + - `orchestrator` + - `coder` + - `reviewer` + - `investigator` +- Added role config fields: + - `profile` + - optional `launch_prompt` + - optional `workflow` +- Did not add role-level `system_instruction`; durable role/system behavior remains owned by the selected Profile. +- Added backend config for local Ticket storage: + - `kind = "local"` + - `root = "work-items"` +- Missing config defaults to local `/work-items`, all role profiles `inherit`, no launch prompts, and documented workflow defaults. +- Unknown roles/fields, unsupported backend kinds, malformed refs, path-like profile refs, `.lua`, and `.nix` profile refs are rejected. +- Wired the configured backend root into `crates/pod/src/feature/builtin/ticket.rs`. +- Preserved fail-closed/no-register behavior for malformed config or unusable backend roots. +- Kept dependency direction clean: `pod -> ticket`; `ticket` does not depend on `pod` or `manifest`. + +Review: + +- External sibling review initially requested one blocker fix: reject `*.nix` profile selectors to align with `SpawnPod.profile` validation. +- Coder fixed it in `8fab67b` and added a focused `legacy.nix` rejection test. +- Re-review approved with no blockers. + +Non-blocker follow-ups: + +- Normalize `HostAuthority::TicketBackend { root }` and canonical backend root consistently before relying on root strings for stricter security/audit comparison. +- Add an execution-level Pod adapter test that runs a Ticket tool against the configured backend root. +- Later role launcher should resolve Profile selectors/prompt refs/workflow refs at runtime and commit launch prompts as user/task messages. + +Post-merge validation passed: + +- `cargo test -p ticket` +- `cargo test -p pod ticket --lib` +- `cargo test -p pod feature --lib` +- `cargo check --workspace --all-targets` +- `cargo fmt --check` +- `git diff --check` +- `./tickets.sh doctor` +- `nix build .#yoi --no-link` diff --git a/work-items/open/20260605-173322-ticket-config-role-profile-mapping/thread.md b/work-items/closed/20260605-173322-ticket-config-role-profile-mapping/thread.md similarity index 86% rename from work-items/open/20260605-173322-ticket-config-role-profile-mapping/thread.md rename to work-items/closed/20260605-173322-ticket-config-role-profile-mapping/thread.md index a68a6a1b..61a960b4 100644 --- a/work-items/open/20260605-173322-ticket-config-role-profile-mapping/thread.md +++ b/work-items/closed/20260605-173322-ticket-config-role-profile-mapping/thread.md @@ -318,4 +318,65 @@ Coder-reported validation for the blocker fix passed: Yes. +--- + + + +## Closed + +Ticket config role profile mapping is complete and merged. + +Implementation: + +- `767870a ticket: add workspace ticket config` +- `8fab67b ticket: reject nix profile selectors` +- merge commit: `9910df4 merge: add ticket config roles` + +Summary: + +- Added `.yoi/ticket.config.toml` support through `crates/ticket/src/config.rs`. +- Added fixed Ticket roles only: + - `intake` + - `orchestrator` + - `coder` + - `reviewer` + - `investigator` +- Added role config fields: + - `profile` + - optional `launch_prompt` + - optional `workflow` +- Did not add role-level `system_instruction`; durable role/system behavior remains owned by the selected Profile. +- Added backend config for local Ticket storage: + - `kind = "local"` + - `root = "work-items"` +- Missing config defaults to local `/work-items`, all role profiles `inherit`, no launch prompts, and documented workflow defaults. +- Unknown roles/fields, unsupported backend kinds, malformed refs, path-like profile refs, `.lua`, and `.nix` profile refs are rejected. +- Wired the configured backend root into `crates/pod/src/feature/builtin/ticket.rs`. +- Preserved fail-closed/no-register behavior for malformed config or unusable backend roots. +- Kept dependency direction clean: `pod -> ticket`; `ticket` does not depend on `pod` or `manifest`. + +Review: + +- External sibling review initially requested one blocker fix: reject `*.nix` profile selectors to align with `SpawnPod.profile` validation. +- Coder fixed it in `8fab67b` and added a focused `legacy.nix` rejection test. +- Re-review approved with no blockers. + +Non-blocker follow-ups: + +- Normalize `HostAuthority::TicketBackend { root }` and canonical backend root consistently before relying on root strings for stricter security/audit comparison. +- Add an execution-level Pod adapter test that runs a Ticket tool against the configured backend root. +- Later role launcher should resolve Profile selectors/prompt refs/workflow refs at runtime and commit launch prompts as user/task messages. + +Post-merge validation passed: + +- `cargo test -p ticket` +- `cargo test -p pod ticket --lib` +- `cargo test -p pod feature --lib` +- `cargo check --workspace --all-targets` +- `cargo fmt --check` +- `git diff --check` +- `./tickets.sh doctor` +- `nix build .#yoi --no-link` + + ---