Problem
#9 added codex:gpt-6-astra, codex:gpt-6-sol, and codex:gpt-6-luna as an "additional" matrix: selectable in /setup-pstack, absent from the first-run sheet, and fenced off by tests so the upstream-owned stock matrix stayed byte-identical. That split was a sync-hygiene choice, not a technical one. In practice it means a fresh install still defaults every Codex role to GPT-5.6 Sol and the docs call the GPT-6 families "optional", which is not how this fork wants to present them.
Decision
Make the three GPT-6 families stock. One model matrix, no "additional" tier, and a first-run sheet that uses them.
Proposed first-run role map
| Role |
Today |
Proposed |
| feature, refactoring |
grok:grok-4.6@xhigh |
codex:gpt-6-sol@high |
| bug-fix |
codex:gpt-5.6-sol@max |
codex:gpt-6-sol@high |
| perf-issue |
codex:gpt-5.6-sol@max |
codex:gpt-6-sol@high |
| hillclimb |
codex:gpt-5.6-sol@max |
codex:gpt-6-sol@high |
| judgment and prose |
claude:fable@max |
unchanged |
| hardest tasks |
claude:fable@max |
unchanged |
| how explorer |
grok:grok-4.6@xhigh |
codex:gpt-6-luna@high |
| how explainer |
claude:fable@max |
unchanged |
| why / reflect roles |
inherit-parent |
unchanged |
| swarm workers |
grok:grok-4.6@xhigh |
codex:gpt-6-luna@high |
| arena runners |
fable, gpt-5.6-sol, grok, opus |
claude:fable@max, codex:gpt-6-astra@high, grok:grok-4.6@xhigh, claude:opus@xhigh |
| arena cross-judge pool |
same four |
same as arena runners |
| architect runners |
same four |
same as arena runners |
| interrogate reviewers |
same four |
same as arena runners |
Reasoning: GPT-6 Sol is Codex's coding workhorse, so it takes the solo code-writing roles. Luna is the fast low-cost tier, so it takes exploration and swarm verification lanes. Astra is the frontier tier, so it replaces GPT-5.6 Sol in every panel. codex:gpt-5.6-sol stays in the matrix as a selectable family for existing sheets; it just leaves the defaults. Panels keep four lanes across three providers, so diversity is unchanged. Efforts stay at high, the value #9's live probes used; raise per family in setup if wanted.
Open to changing any row before implementation.
Scope
references/provider-dispatch.md: fold the three rows into the stock matrix; remove the "Additional model matrix" section; keep the route note (native spawn_agent under Codex, external runner under Claude Code).
skills/setup-pstack/SKILL.md: new first-run sheet; drop "additional" wording; probe table rows become plain matrix rows.
- Skill and playbook text that names the old defaults (
architect, arena, interrogate, poteto-mode SKILL.md and the feature / bug-fix / perf-issue / hillclimb playbooks).
- Tests:
runner/model-matrix.test.ts (stock rows, first-run panel alignment, the "without changing the stock matrix" block) and the solo code roles stay on the sol row invariant in tests/skill-collision-repro.sh.
- Docs: README (rewrite as pstack-flex, one family table, no optional tier, no roadmap section),
docs/LANES.md, docs/USAGE.md, docs/reference.md, UPSTREAM.md exclusions note, UPSTREAM-FLEX.md (the "stock matrix and first-run sheet are byte-unchanged" promise no longer holds; record the new conflict surface), CHANGES.md.
Consequences to accept
- Every upstream sync now conflicts on the matrix and first-run sheet. Cursor is moving its defaults to Opus 5.5 / Grok 4.7, not GPT-6, so these conflicts are permanent and resolved by hand each time.
- Existing sheets are untouched. Only a first run, or an explicit role change in setup, picks up the new defaults.
- Merge gate per AGENTS.md: the exact candidate installed in both harnesses,
/setup-pstack first run producing the new sheet with passing probes for Astra, GPT-6 Sol, and Luna, and one mixed-panel smoke. Runner probes alone do not satisfy it.
Problem
#9 added
codex:gpt-6-astra,codex:gpt-6-sol, andcodex:gpt-6-lunaas an "additional" matrix: selectable in/setup-pstack, absent from the first-run sheet, and fenced off by tests so the upstream-owned stock matrix stayed byte-identical. That split was a sync-hygiene choice, not a technical one. In practice it means a fresh install still defaults every Codex role to GPT-5.6 Sol and the docs call the GPT-6 families "optional", which is not how this fork wants to present them.Decision
Make the three GPT-6 families stock. One model matrix, no "additional" tier, and a first-run sheet that uses them.
Proposed first-run role map
grok:grok-4.6@xhighcodex:gpt-6-sol@highcodex:gpt-5.6-sol@maxcodex:gpt-6-sol@highcodex:gpt-5.6-sol@maxcodex:gpt-6-sol@highcodex:gpt-5.6-sol@maxcodex:gpt-6-sol@highclaude:fable@maxclaude:fable@maxgrok:grok-4.6@xhighcodex:gpt-6-luna@highclaude:fable@maxinherit-parentgrok:grok-4.6@xhighcodex:gpt-6-luna@highclaude:fable@max, codex:gpt-6-astra@high, grok:grok-4.6@xhigh, claude:opus@xhighReasoning: GPT-6 Sol is Codex's coding workhorse, so it takes the solo code-writing roles. Luna is the fast low-cost tier, so it takes exploration and swarm verification lanes. Astra is the frontier tier, so it replaces GPT-5.6 Sol in every panel.
codex:gpt-5.6-solstays in the matrix as a selectable family for existing sheets; it just leaves the defaults. Panels keep four lanes across three providers, so diversity is unchanged. Efforts stay athigh, the value #9's live probes used; raise per family in setup if wanted.Open to changing any row before implementation.
Scope
references/provider-dispatch.md: fold the three rows into the stock matrix; remove the "Additional model matrix" section; keep the route note (nativespawn_agentunder Codex, external runner under Claude Code).skills/setup-pstack/SKILL.md: new first-run sheet; drop "additional" wording; probe table rows become plain matrix rows.architect,arena,interrogate,poteto-modeSKILL.md and thefeature/bug-fix/perf-issue/hillclimbplaybooks).runner/model-matrix.test.ts(stock rows, first-run panel alignment, the "without changing the stock matrix" block) and thesolo code roles stay on the sol rowinvariant intests/skill-collision-repro.sh.docs/LANES.md,docs/USAGE.md,docs/reference.md,UPSTREAM.mdexclusions note,UPSTREAM-FLEX.md(the "stock matrix and first-run sheet are byte-unchanged" promise no longer holds; record the new conflict surface),CHANGES.md.Consequences to accept
/setup-pstackfirst run producing the new sheet with passing probes for Astra, GPT-6 Sol, and Luna, and one mixed-panel smoke. Runner probes alone do not satisfy it.