Skip to content

GPT-6 Sol and GPT-6 Luna: catalog rows, family prompt preset, and default-model support #2023

Description

@code-yeongyu

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

  1. senpi --provider openai --model gpt-6-sol (or gpt-6-luna, or the same ids under chatgpt-subscription) on 2026.9.22-4.
  2. The model is not in the built-in catalog, so it is unselectable through the first-party providers.
  3. 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.
  4. 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

  • Catalog rows + -fast variants + ladder + budgets as above, regenerated with --strict; packages/ai/test/gpt-6-family-catalog.test.ts green; the input-cap invariant still rejects a 1,050,000 row.
  • models.ts id inference for map-less Sol/Luna rows.
  • Preset resolution for every Sol/Luna id shape; rendered prompt identical to Astra's.
  • Recommended ladder, provider defaults and the high-reasoning warning cover gpt-6-sol.
  • Changelog: Added (first-party rows, preset, defaults) and Fixed (OpenRouter ladder/budget).

Related

Activity

  1. code-yeongyu commented on Sep 23, 2026

    @code-yeongyu
    OwnerAuthor

    PR #2024 is open with the four surfaces (catalog, effort inference, family preset, defaults), each RED→GREEN, plus a real-CLI mock-loop proof (24/24: gpt-6-sol effort=medium, gpt-6-luna effort=none, GPT-6 sections on the wire). Waiting on CI.

  2. code-yeongyu commented on Sep 23, 2026

    @code-yeongyu
    OwnerAuthor

    CI on the first push had one real failure: test/provider-default-model-selection.test.ts pinned the openai provider default at gpt-5.6-sol with a fixture registry that has no gpt-6-sol, so the resolver fell through to first-available. The test now pins the gpt-6-sol default and adds an explicit case: a registry carrying only gpt-5.6-sol resolves it as first-available. Re-pushed as 09a4a35.

  3. code-yeongyu commented on Sep 23, 2026

    @code-yeongyu
    OwnerAuthor

    Released in 2026.9.23 (tag v2026.9.23 = eba6318, publish run 35809989489). Verified on the published tarball, presence preconditions first (blob 200, 44215332 bytes, 27070 entries, nested pi-ai data present), then 6/6 row assertions: openai gpt-6-sol contextWindow 400000, gpt-6-luna 922000, gpt-6-sol-fast serviceTier priority, gpt-6-luna thinkingLevelMap.off none, chatgpt-subscription gpt-6-sol max, gpt-6-luna-fast upstream gpt-6-luna; the same script scores 6/6 FAIL on 2026.9.22-4, so the pass is not vacuous. sha1 86c18362d287eecfe25e525cd9fb8dabdd41bcaa matches the publish log; dist-tag latest now 2026.9.23.

  4. code-yeongyu commented on Sep 23, 2026

    @code-yeongyu
    OwnerAuthor

    Adopted downstream: omo 5.0.0-beta.85 pins 2026.9.23 (#8706 → 9649aba20; release tag v5.0.0-beta.85 = ea4269ae5, npm omo-ai@5.0.0-0.beta.85), and omo-desktop-app #1052 (e4514ec62) pins v2026.9.23 with the runtime manifest resolving to eba6318.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions