Summary
OpenAI's GPT-6 family is Astra, Sol and Luna (https://developers.openai.com/api/docs/guides/latest-model). senpi 2026.9.22-4 supports Astra only: the catalog ships gpt-6-astra rows, the GPT-6 prompt preset matches only Astra ids, and the recommended/default OpenAI model is still gpt-5.6-sol.
Reproduction
senpi --provider openai --model gpt-6-sol (or gpt-6-luna, or the same ids under chatgpt-subscription) on 2026.9.22-4.
- The model is not in the built-in catalog, so it is unselectable through the first-party providers.
- Through OpenRouter,
openai/gpt-6-sol and openai/gpt-6-luna do exist (models.dev regeneration pulled them) but carry no effort ladder, so xhigh / max cannot be selected and the row sits at the raw 922k window.
- Even with a hand-written
models.json row, the session runs on the generic prompt: resolvePresetName returns undefined for gpt-6-sol / gpt-6-luna while gpt-6-astra gets the GPT-6 preset.
Expected (ideal state)
gpt-6-sol and gpt-6-luna are first-class catalog rows on openai and chatgpt-subscription (plus Azure / OpenCode / OpenRouter / Venice / Vercel passthrough rows), with published pricing (Sol $2/$10, Luna $0.10/$0.50 per 1M tokens, >272k tiers), 128k output, text + image, tool search / additional tools, Priority -fast variants, and the documented ladder none/low/medium/high/xhigh/max (no minimal; unlike Astra, off stays selectable).
- Prompt budgets: Luna ships the full 922k input cap, Sol ships 400k, Astra keeps 600k, stamped on every provider row like Astra already is.
- Map-less custom rows infer
xhigh / max from the id.
- The whole GPT-6 family renders the GPT-6 system prompt (one prompting guide for the family).
gpt-6-sol joins the recommended-model ladder and becomes the implicit default for the OpenAI providers; the high-reasoning warning covers it at xhigh / max.
Actual
See Reproduction: Astra-only catalog, OpenRouter rows without a ladder, generic prompt for Sol/Luna, gpt-5.6-sol defaults.
Evidence
packages/ai/src/providers/data/openai.json / chatgpt-subscription.json at v2026.9.22-4: no gpt-6-sol / gpt-6-luna keys (control: gpt-6-astra present in 7 shards).
packages/ai/src/providers/data/openrouter.json at v2026.9.22-4: openai/gpt-6-sol, openai/gpt-6-luna (+-pro, :batch) with thinkingLevelMap absent, contextWindow: 922000.
packages/coding-agent/src/core/extensions/builtin/prompt-preset/presets.ts: hasGpt6AstraSignal matches gpt-6-astra only.
packages/coding-agent/src/core/extensions/builtin/recommended-models/index.ts: ladder is astra, gpt-5.6-sol, ...; model-resolver.ts defaultModelPerProvider.openai = gpt-5.6-sol.
Root cause
Every GPT-6 branch in the generator, the preset matcher and the defaults was written against the Astra id alone when Astra was the only GPT-6 model.
Scope / acceptance criteria
Related
Summary
OpenAI's GPT-6 family is Astra, Sol and Luna (https://developers.openai.com/api/docs/guides/latest-model). senpi 2026.9.22-4 supports Astra only: the catalog ships
gpt-6-astrarows, the GPT-6 prompt preset matches only Astra ids, and the recommended/default OpenAI model is stillgpt-5.6-sol.Reproduction
senpi --provider openai --model gpt-6-sol(orgpt-6-luna, or the same ids underchatgpt-subscription) on 2026.9.22-4.openai/gpt-6-solandopenai/gpt-6-lunado exist (models.dev regeneration pulled them) but carry no effort ladder, soxhigh/maxcannot be selected and the row sits at the raw 922k window.models.jsonrow, the session runs on the generic prompt:resolvePresetNamereturnsundefinedforgpt-6-sol/gpt-6-lunawhilegpt-6-astragets the GPT-6 preset.Expected (ideal state)
gpt-6-solandgpt-6-lunaare first-class catalog rows onopenaiandchatgpt-subscription(plus Azure / OpenCode / OpenRouter / Venice / Vercel passthrough rows), with published pricing (Sol $2/$10, Luna $0.10/$0.50 per 1M tokens, >272k tiers), 128k output, text + image, tool search / additional tools, Priority-fastvariants, and the documented laddernone/low/medium/high/xhigh/max(nominimal; unlike Astra,offstays selectable).xhigh/maxfrom the id.gpt-6-soljoins the recommended-model ladder and becomes the implicit default for the OpenAI providers; the high-reasoning warning covers it atxhigh/max.Actual
See Reproduction: Astra-only catalog, OpenRouter rows without a ladder, generic prompt for Sol/Luna,
gpt-5.6-soldefaults.Evidence
packages/ai/src/providers/data/openai.json/chatgpt-subscription.jsonat v2026.9.22-4: nogpt-6-sol/gpt-6-lunakeys (control:gpt-6-astrapresent in 7 shards).packages/ai/src/providers/data/openrouter.jsonat v2026.9.22-4:openai/gpt-6-sol,openai/gpt-6-luna(+-pro,:batch) withthinkingLevelMapabsent,contextWindow: 922000.packages/coding-agent/src/core/extensions/builtin/prompt-preset/presets.ts:hasGpt6AstraSignalmatchesgpt-6-astraonly.packages/coding-agent/src/core/extensions/builtin/recommended-models/index.ts: ladder is astra, gpt-5.6-sol, ...;model-resolver.tsdefaultModelPerProvider.openai=gpt-5.6-sol.Root cause
Every GPT-6 branch in the generator, the preset matcher and the defaults was written against the Astra id alone when Astra was the only GPT-6 model.
Scope / acceptance criteria
-fastvariants + ladder + budgets as above, regenerated with--strict;packages/ai/test/gpt-6-family-catalog.test.tsgreen; the input-cap invariant still rejects a 1,050,000 row.models.tsid inference for map-less Sol/Luna rows.gpt-6-sol.Related