4.2 KiB
Created
Created by LocalTicketBackend create.
Plan
Preflight / implementation intent
Classification: implementation-ready, should run before ticket-init-role-profile-scaffold.
Intent:
- Add an explicit runtime validation boundary for Ticket role launch config.
- Keep backend availability separate from role-launch readiness: backend-only config may list/show Tickets, but Panel Intake / Orchestrator launch must fail early if fixed role profile config is missing or non-executable.
- Preserve the policy distinction between explicit builtin selectors in config and implicit runtime fallback.
Requirements:
- Reject role launch readiness for:
- missing role table for the target role;
- missing role profile for the target role;
profile = "inherit"for top-level launch;- unresolvable concrete selector where this layer can validate it.
- Do not silently convert missing roles to
builtin:default,default, orinheritat runtime. - Keep backend defaults/list/show behavior working where possible.
- Panel Intake and workspace Orchestrator launch paths should use the stricter validation before spawn and emit bounded actionable diagnostics.
- Keep
TicketRoleLaunchPlan::spawn_configinheritrejection as a final defensive check.
Current code map:
crates/ticket/src/config.rsTicketConfig::load_workspacereturnsdefault_for_workspaceon missing config.RawTicketConfig::resolvestarts withTicketRoleProfiles::default()and overlays provided roles.TicketRoleConfig::default_for_roleusesProfileSelectorRef::inherit().- Tests around missing config/default roles need adjustment or expansion.
crates/client/src/ticket_role.rsplan_ticket_role_launch(_with_config)readsconfig.role(context.role)and currently does not distinguish explicit vs default role config.spawn_configrejectsinheritlate.
crates/tui/src/multi_pod.rs- Panel Intake / Orchestrator role launch surfaces should receive clearer diagnostics.
Implementation direction:
- Preserve enough metadata in parsed Ticket config to know whether a role was explicitly configured, or add a dedicated validation API that can report missing/implicit role defaults.
- Prefer a typed validation error with role name and actionable remediation text.
- Tests should cover backend-only config, partial role config, explicit
inherit, and full concrete role config.
Non-goals:
- Do not implement init/scaffold generation here;
ticket-init-role-profile-scaffoldfollows after this lands. - Do not add implicit builtin fallback.
- Do not allow top-level
inheritlaunch. - Do not redesign global provider/model/profile fallback policy.
Intake summary
Implementation-ready: add strict Ticket role launch config validation before spawn, keep backend availability separate from role-launch readiness, reject missing role profile and top-level inherit, and avoid implicit builtin/default fallback. This should land before init/scaffold generation.
State changed
Ticket intake complete; workflow_state intake -> ready.
Implementation report
Delegation
Implementation delegated to child Pod role-launch-config-validation-coder-20260607 in worktree .worktree/ticket-role-launch-config-strict-validation on branch work/ticket-role-launch-config-strict-validation.
Scope:
- Add strict runtime validation for Ticket role launch config.
- Keep backend availability separate from role-launch readiness.
- Reject missing role config and top-level
inheritbefore spawn with actionable diagnostics. - Do not implement init/scaffold generation here;
ticket-init-role-profile-scaffoldfollows after this lands.
The child should commit implementation work in the child worktree and report diff/tests. Merge, review, Ticket closure, and cleanup remain with the parent/human workflow.