Motivation
Slot-level agent customization is incomplete: a runner template pins model + effort and direct chats can override both, but a crew slot can only override the runtime — the model chip is gated behind a runtime override (UI and backend: resolve_runtime_override early-returns without one, and mission spawns pass None for effort), and effort has no slot column at all. A slot should describe the complete agent configuration for that seat, with the runner template as the default.
Scope
slots.effort_override column + plumbing (commands, MCP slot_update, types).
- Resolver rework: model/effort overrides apply without a runtime override; runtime override still resets model/effort to the new engine's defaults before slot overrides apply;
pinned stays runtime-only.
- Mission spawn passes the slot's effort override.
- Crew editor slot rows: model and effort chips always visible, dim when inheriting / accent when overridden; effort resets with engine changes like model does.
Implementation Phases
- Backend — migration, plumbing, resolver + spawn wiring, rust tests.
- Frontend — ungated model chip + effort chip, reset semantics, vitest.
- Docs — refresh stale feature-41 assumptions if referenced.
Spec: docs/features/59-slot-model-effort-overrides.md
Motivation
Slot-level agent customization is incomplete: a runner template pins
model+effortand direct chats can override both, but a crew slot can only override the runtime — the model chip is gated behind a runtime override (UI and backend:resolve_runtime_overrideearly-returns without one, and mission spawns passNonefor effort), and effort has no slot column at all. A slot should describe the complete agent configuration for that seat, with the runner template as the default.Scope
slots.effort_overridecolumn + plumbing (commands, MCPslot_update, types).pinnedstays runtime-only.Implementation Phases
Spec:
docs/features/59-slot-model-effort-overrides.md