2.5 KiB
Created as a follow-up to the closed manifest profiles work item after reviewing the original intent and the current built-in Nix profile shape.
Implementation plan written to artifacts/implementation-plan.md. Key recommendation: introduce a typed semantic profile artifact and manifestization step, move/centralize model catalog context-window resolution so compaction can derive from model metadata, and resolve builtin profiles in-process so normal default startup does not require external nix.
Plan
Implementation direction
Use the worktree + sibling coder/reviewer flow. The investigation Pod found the main boundary issue to be concentrated in crates/manifest/src/profile.rs: profile artifacts are currently deserialized as PodManifestConfig, while built-in Nix files expose a manifest-shaped authoring API.
Decisions for the implementation pass:
- Move data-only model catalog resolution to a cycle-free place owned by
manifestso profile manifestization can derive context-window-dependent settings. Keep live provider/client construction inprovider. - Introduce a semantic profile artifact format such as
insomnia.semantic-profile.v1; top-level semantic artifacts must useprofilemetadata pluspolicy, notmanifest/config. - Resolve built-in
defaultin-process so the normal default startup path does not require an externalnixcommand. User/project/path Nix profiles may still requirenix evalwith clear diagnostics. - Remove
pod.namefrom built-in profiles. Direct no-arginsomnia-podshould preserve the current effective default Pod nameinsomniaas runtime input, while--profile-pod-nameremains the explicit fresh-spawn override. - Do not preserve manifest-shaped Nix profiles as the normal authoring API.
--manifestremains the low-level concrete manifest escape hatch. - Keep the initial semantic policy narrow: explicit model ref, explicit reasoning effort, workspace scope policy, compaction ratios/preset derived from effective context window, memory/session/web policy sufficient to reproduce current builtin behavior.
- Update docs and tests so built-in examples no longer recommend
mkManifestor raw manifest-shaped profiles.
Implementation should remain narrow: preserve existing profile selection semantics, source-qualified selectors, ambiguity errors, TUI/client profile selection flow, and SpawnPod.scope authority.