Skip to content

feat(models): codex second opinions default to gpt-6-astra - #24

Merged
datj9 merged 2 commits into
mainfrom
feat/gpt6-astra-default-model
Sep 8, 2026
Merged

datj9 merged 2 commits into
mainfrom
feat/gpt6-astra-default-model

Conversation

@datj9

@datj9 datj9 commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Summary

Adds GPT-6 Astra (gpt-6-astra, released 2026-09-03) as the default second-opinion model for the codex advisor, with a clean opt-out. Codex-native model, so it's scoped to codex only.

What changed

  • Advisor.default_model — optional per-advisor default model. Only codex sets it (gpt-6-astra); every other advisor is unchanged.
  • Per-advisor model aliases (MODEL_ALIASES, resolve_model) — gpt6/astragpt-6-astra, case-insensitive, scoped to codex so a shorthand never leaks to another CLI. Deliberately no fable alias (the Claude CLI resolves that itself).
  • effective_model() — single source of truth. The resolved id (not a raw alias or empty string) is what gets sent on argv and persisted to the session registry and command.json.
  • No mid-thread switchdefault_model is never injected on a resume; explicit --model still applies exactly as before.
  • Escape hatchesadvisors.json "codex": {"default_model": null}, or --model default to suppress the flag entirely.
  • Docs + CHANGELOG. No version bump.

Behaviour change

Codex second opinions with no --model now send --model gpt-6-astra. All other advisors are byte-for-byte unchanged. Documented above and in the CHANGELOG.

Testing

  • python -m pytest -q335 passed (was 298; +37 incl. 20 new tests).
  • Ruff: no new findings (the 6 pre-existing warnings are also on main).
  • Covered: alias expansion + case-insensitivity, no cross-advisor leak, --model default sentinel, resume skips the default, resolved id persisted to registry/command.json, "default_model": null override.

Plan (with the pre-implementation review notes addressed) is in docs/plans/gpt6-astra-default-model.md.

…gpt-6-astra

Add an optional default_model to the Advisor spec and a per-advisor model
alias map. The codex advisor now defaults its second-opinion model to
gpt-6-astra (GPT-6 Astra), with gpt6/astra as case-insensitive aliases
scoped to codex so a name never leaks across CLIs.

- effective_model() resolves the model once and is used by build_command,
  the session registry record, and command.json, so the resolved id (not a
  raw alias or empty string) is what gets persisted.
- default_model is never injected on resume, avoiding a mid-thread model
  switch on stored codex threads.
- Escape hatches: advisors.json ("codex": {"default_model": null}) or
  --model default to suppress the flag entirely.

Docs and CHANGELOG updated; no version bump.
@datj9 datj9 self-assigned this Sep 8, 2026
@datj9
datj9 merged commit 934788e into main Sep 8, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant