diff --git a/.agents/skills/cgs-adopt/SKILL.md b/.agents/skills/cgs-adopt/SKILL.md index c34348a..866d4d8 100644 --- a/.agents/skills/cgs-adopt/SKILL.md +++ b/.agents/skills/cgs-adopt/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-adopt description: Use for adopt tasks that inventory existing source, assets, docs, and tests before mapping work into CGS structure; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low argument-hint: Describe the adopt objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-architecture-decision/SKILL.md b/.agents/skills/cgs-architecture-decision/SKILL.md index 9a96e85..7468342 100644 --- a/.agents/skills/cgs-architecture-decision/SKILL.md +++ b/.agents/skills/cgs-architecture-decision/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-architecture-decision description: Use for architecture decision tasks that write an ADR with context, options, decision, consequences, validation, and rollback; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high argument-hint: Describe the architecture-decision objective, target files/assets, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-architecture-review/SKILL.md b/.agents/skills/cgs-architecture-review/SKILL.md index 508c617..aef4884 100644 --- a/.agents/skills/cgs-architecture-review/SKILL.md +++ b/.agents/skills/cgs-architecture-review/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-architecture-review description: Use for architecture review tasks that review architecture for layer violations, scalability risks, engine misuse, testing seams, and production readiness; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high argument-hint: Describe the architecture-review objective, target files/assets, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-art-bible/SKILL.md b/.agents/skills/cgs-art-bible/SKILL.md index 5f25522..a5b020e 100644 --- a/.agents/skills/cgs-art-bible/SKILL.md +++ b/.agents/skills/cgs-art-bible/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-art-bible description: Use for art bible tasks that define visual identity, shape language, palette, camera, animation, UI style, and asset constraints; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low argument-hint: Describe the art-bible objective, target files/assets, constraints, and verification evidence. primary-agent: game-designer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-asset-audit/SKILL.md b/.agents/skills/cgs-asset-audit/SKILL.md index c16d928..5034cbb 100644 --- a/.agents/skills/cgs-asset-audit/SKILL.md +++ b/.agents/skills/cgs-asset-audit/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-asset-audit description: Use for asset audit tasks that audit game assets for completeness, naming, import settings, ownership, licensing, and production risk; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the asset-audit objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-asset-spec/SKILL.md b/.agents/skills/cgs-asset-spec/SKILL.md index 8821dcb..be1bfd2 100644 --- a/.agents/skills/cgs-asset-spec/SKILL.md +++ b/.agents/skills/cgs-asset-spec/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-asset-spec description: Use for asset spec tasks that specify an individual asset with purpose, constraints, references, dimensions, states, and acceptance criteria; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the asset-spec objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-balance-check/SKILL.md b/.agents/skills/cgs-balance-check/SKILL.md index 7fdb995..2d58954 100644 --- a/.agents/skills/cgs-balance-check/SKILL.md +++ b/.agents/skills/cgs-balance-check/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-balance-check description: Use for balance check tasks that evaluate tuning values, progression pacing, economy levers, exploits, and player-skill assumptions; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the balance-check objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-brainstorm/SKILL.md b/.agents/skills/cgs-brainstorm/SKILL.md index f871e87..defad40 100644 --- a/.agents/skills/cgs-brainstorm/SKILL.md +++ b/.agents/skills/cgs-brainstorm/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-brainstorm description: Use for brainstorm tasks that explore the game idea with player fantasy, verbs, pillars, audience, constraints, and scope tiers; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the brainstorm objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-bug-report/SKILL.md b/.agents/skills/cgs-bug-report/SKILL.md index b081c77..82a6fe7 100644 --- a/.agents/skills/cgs-bug-report/SKILL.md +++ b/.agents/skills/cgs-bug-report/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-bug-report description: Use for bug report tasks that capture a reproducible bug with environment, steps, expected/actual behavior, severity, evidence, and owner; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the bug-report objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-bug-triage/SKILL.md b/.agents/skills/cgs-bug-triage/SKILL.md index 91f4a5a..e7307b4 100644 --- a/.agents/skills/cgs-bug-triage/SKILL.md +++ b/.agents/skills/cgs-bug-triage/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-bug-triage description: Use for bug triage tasks that classify bugs by severity, priority, reproduction confidence, owner role, risk, and release impact; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the bug-triage objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-bugfix/SKILL.md b/.agents/skills/cgs-bugfix/SKILL.md index 1713fdb..07ca438 100644 --- a/.agents/skills/cgs-bugfix/SKILL.md +++ b/.agents/skills/cgs-bugfix/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-bugfix description: Use for bugfix tasks that fix a bounded bug with reproduction evidence, minimal change, regression coverage, and handoff notes; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 -model_reasoning_effort: medium +model: gpt-5.6-terra +model_reasoning_effort: high argument-hint: Describe the bugfix objective, target files/assets, constraints, and verification evidence. primary-agent: gameplay-programmer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-changelog/SKILL.md b/.agents/skills/cgs-changelog/SKILL.md index 81855e0..ce93732 100644 --- a/.agents/skills/cgs-changelog/SKILL.md +++ b/.agents/skills/cgs-changelog/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-changelog description: Use for changelog tasks that maintain a developer-facing changelog grouped by feature, fix, content, performance, and breaking change; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4-mini +model: gpt-5.6-luna model_reasoning_effort: low argument-hint: Describe the changelog objective, target files/assets, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-code-review/SKILL.md b/.agents/skills/cgs-code-review/SKILL.md index 8c08887..51f4390 100644 --- a/.agents/skills/cgs-code-review/SKILL.md +++ b/.agents/skills/cgs-code-review/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-code-review description: Use for code review tasks that review changes for correctness, maintainability, security, tests, engine idioms, and scope control; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 -model_reasoning_effort: medium +model: gpt-5.6-terra +model_reasoning_effort: high argument-hint: Describe the code-review objective, target files/assets, constraints, and verification evidence. primary-agent: gameplay-programmer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-consistency-check/SKILL.md b/.agents/skills/cgs-consistency-check/SKILL.md index 60c2cb6..16c2000 100644 --- a/.agents/skills/cgs-consistency-check/SKILL.md +++ b/.agents/skills/cgs-consistency-check/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-consistency-check description: Use for consistency check tasks that find contradictions across design, narrative, systems, UI, content, and implementation artifacts; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the consistency-check objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-content-audit/SKILL.md b/.agents/skills/cgs-content-audit/SKILL.md index 35b5ff3..7a74c63 100644 --- a/.agents/skills/cgs-content-audit/SKILL.md +++ b/.agents/skills/cgs-content-audit/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-content-audit description: Use for content audit tasks that audit content coverage, duplication, tone consistency, localization needs, and production completeness; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the content-audit objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-create-architecture/SKILL.md b/.agents/skills/cgs-create-architecture/SKILL.md index 971c951..c579584 100644 --- a/.agents/skills/cgs-create-architecture/SKILL.md +++ b/.agents/skills/cgs-create-architecture/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-create-architecture description: Use for create architecture tasks that design the technical architecture, layers, data ownership, engine boundaries, and control manifest; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high argument-hint: Describe the create-architecture objective, target files/assets, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-create-control-manifest/SKILL.md b/.agents/skills/cgs-create-control-manifest/SKILL.md index f87ce25..43d4bf9 100644 --- a/.agents/skills/cgs-create-control-manifest/SKILL.md +++ b/.agents/skills/cgs-create-control-manifest/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-create-control-manifest description: Use for create control manifest tasks that define implementation rules, boundaries, allowed dependencies, validation commands, and review gates; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the create-control-manifest objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-create-epics/SKILL.md b/.agents/skills/cgs-create-epics/SKILL.md index 0212f85..d596a5c 100644 --- a/.agents/skills/cgs-create-epics/SKILL.md +++ b/.agents/skills/cgs-create-epics/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-create-epics description: Use for create epics tasks that break project goals into epics with outcomes, dependencies, risks, and validation gates; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the create-epics objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-create-stories/SKILL.md b/.agents/skills/cgs-create-stories/SKILL.md index f6574cb..e4e7468 100644 --- a/.agents/skills/cgs-create-stories/SKILL.md +++ b/.agents/skills/cgs-create-stories/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-create-stories description: Use for create stories tasks that break an epic into small stories with acceptance criteria, owner role, files, and verification; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the create-stories objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-day-one-patch/SKILL.md b/.agents/skills/cgs-day-one-patch/SKILL.md index 7471174..fb67a00 100644 --- a/.agents/skills/cgs-day-one-patch/SKILL.md +++ b/.agents/skills/cgs-day-one-patch/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-day-one-patch description: Use for day one patch tasks that plan launch-window fixes, risk acceptance, validation, platform submission, and player communication; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the day-one-patch objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-design-review/SKILL.md b/.agents/skills/cgs-design-review/SKILL.md index 1ee1a79..afcc5fd 100644 --- a/.agents/skills/cgs-design-review/SKILL.md +++ b/.agents/skills/cgs-design-review/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-design-review description: Use for design review tasks that review design artifacts against pillars, player experience, production scope, and downstream implementation risk; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-sol +model_reasoning_effort: medium argument-hint: Describe the design-review objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-design-system/SKILL.md b/.agents/skills/cgs-design-system/SKILL.md index 2e0941f..cfea995 100644 --- a/.agents/skills/cgs-design-system/SKILL.md +++ b/.agents/skills/cgs-design-system/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-design-system description: Use for design system tasks that author a system GDD with rules, data, edge cases, progression, feedback, and implementation acceptance tests; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the design-system objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-dev-story/SKILL.md b/.agents/skills/cgs-dev-story/SKILL.md index 478a151..1210848 100644 --- a/.agents/skills/cgs-dev-story/SKILL.md +++ b/.agents/skills/cgs-dev-story/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-dev-story description: Use for dev story tasks that turn a design or bug into an implementation-ready story with owner, files, acceptance tests, and dependencies; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 +model: gpt-5.6-terra model_reasoning_effort: medium argument-hint: Describe the dev-story objective, target files/assets, constraints, and verification evidence. primary-agent: gameplay-programmer diff --git a/.agents/skills/cgs-estimate/SKILL.md b/.agents/skills/cgs-estimate/SKILL.md index 1bce4da..3f9e5f8 100644 --- a/.agents/skills/cgs-estimate/SKILL.md +++ b/.agents/skills/cgs-estimate/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-estimate description: Use for estimate tasks that estimate scope using uncertainty, dependencies, discipline handoffs, risk buffers, and confidence ranges; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low argument-hint: Describe the estimate objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-gate-check/SKILL.md b/.agents/skills/cgs-gate-check/SKILL.md index 5549b09..1cd7b76 100644 --- a/.agents/skills/cgs-gate-check/SKILL.md +++ b/.agents/skills/cgs-gate-check/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-gate-check description: Use for gate check tasks that run an advisory phase or artifact gate with criteria, evidence, concerns, and user-controlled next decision; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the gate-check objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-help/SKILL.md b/.agents/skills/cgs-help/SKILL.md index c6b076e..716540e 100644 --- a/.agents/skills/cgs-help/SKILL.md +++ b/.agents/skills/cgs-help/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-help description: Use for help tasks that summarize available CGS workflows, next phase options, required artifacts, and safe commands; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4-mini -model_reasoning_effort: low +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the help objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-hotfix/SKILL.md b/.agents/skills/cgs-hotfix/SKILL.md index 492b2f1..0b0d528 100644 --- a/.agents/skills/cgs-hotfix/SKILL.md +++ b/.agents/skills/cgs-hotfix/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-hotfix description: Use for hotfix tasks that scope and execute an urgent fix with reproduction, minimal change, verification, release notes, and rollback; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 -model_reasoning_effort: medium +model: gpt-5.6-terra +model_reasoning_effort: high argument-hint: Describe the hotfix objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-launch-checklist/SKILL.md b/.agents/skills/cgs-launch-checklist/SKILL.md index 0ee13e8..88d4b9e 100644 --- a/.agents/skills/cgs-launch-checklist/SKILL.md +++ b/.agents/skills/cgs-launch-checklist/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-launch-checklist description: Use for launch checklist tasks that coordinate day-of-launch readiness, monitoring, community, support, rollback, and hotfix paths; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high argument-hint: Describe the launch-checklist objective, target files/assets, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-localize/SKILL.md b/.agents/skills/cgs-localize/SKILL.md index d9c90cc..3a27032 100644 --- a/.agents/skills/cgs-localize/SKILL.md +++ b/.agents/skills/cgs-localize/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-localize description: Use for localize tasks that plan localization keys, context, screenshots, pluralization, text expansion, and review workflow; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 -model_reasoning_effort: medium +model: gpt-5.6-luna +model_reasoning_effort: low argument-hint: Describe the localize objective, target files/assets, constraints, and verification evidence. primary-agent: game-designer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-map-systems/SKILL.md b/.agents/skills/cgs-map-systems/SKILL.md index 697f246..8e99e0a 100644 --- a/.agents/skills/cgs-map-systems/SKILL.md +++ b/.agents/skills/cgs-map-systems/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-map-systems description: Use for map systems tasks that decompose the concept into game systems with dependency order, priority tiers, and validation needs; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the map-systems objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-milestone-review/SKILL.md b/.agents/skills/cgs-milestone-review/SKILL.md index 39b18ac..96d07e5 100644 --- a/.agents/skills/cgs-milestone-review/SKILL.md +++ b/.agents/skills/cgs-milestone-review/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-milestone-review description: Use for milestone review tasks that review milestone readiness, completed evidence, blockers, carryover, and phase transition risk; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the milestone-review objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-onboard/SKILL.md b/.agents/skills/cgs-onboard/SKILL.md index 11cb070..76b139e 100644 --- a/.agents/skills/cgs-onboard/SKILL.md +++ b/.agents/skills/cgs-onboard/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-onboard description: Use for onboard tasks that orient a new contributor or agent to project state, file layout, stage, risks, and next work; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the onboard objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-patch-notes/SKILL.md b/.agents/skills/cgs-patch-notes/SKILL.md index 09f657e..5e8e6a2 100644 --- a/.agents/skills/cgs-patch-notes/SKILL.md +++ b/.agents/skills/cgs-patch-notes/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-patch-notes description: Use for patch notes tasks that write player-facing patch notes with fixes, known issues, balance changes, and verification caveats; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4-mini +model: gpt-5.6-luna model_reasoning_effort: low argument-hint: Describe the patch-notes objective, target files/assets, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-perf-profile/SKILL.md b/.agents/skills/cgs-perf-profile/SKILL.md index 7f5c74f..b9fa514 100644 --- a/.agents/skills/cgs-perf-profile/SKILL.md +++ b/.agents/skills/cgs-perf-profile/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-perf-profile description: Use for perf profile tasks that profile frame time, memory, loading, assets, rendering, scripting, and platform constraints; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 -model_reasoning_effort: medium +model: gpt-5.6-terra +model_reasoning_effort: high argument-hint: Describe the perf-profile objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-playtest-report/SKILL.md b/.agents/skills/cgs-playtest-report/SKILL.md index 566cb93..df2475a 100644 --- a/.agents/skills/cgs-playtest-report/SKILL.md +++ b/.agents/skills/cgs-playtest-report/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-playtest-report description: Use for playtest report tasks that capture player observations, comprehension, friction, loop completion, bugs, quotes, and design implications; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 -model_reasoning_effort: medium +model: gpt-5.6-luna +model_reasoning_effort: low argument-hint: Describe the playtest-report objective, target files/assets, constraints, and verification evidence. primary-agent: qa-playtester tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-project-stage-detect/SKILL.md b/.agents/skills/cgs-project-stage-detect/SKILL.md index af6a2e4..568e7fe 100644 --- a/.agents/skills/cgs-project-stage-detect/SKILL.md +++ b/.agents/skills/cgs-project-stage-detect/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-project-stage-detect description: Use for project stage detect tasks that detect whether the project is in concept, design, technical setup, pre-production, production, polish, or release; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4-mini -model_reasoning_effort: low +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the project-stage-detect objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-propagate-design-change/SKILL.md b/.agents/skills/cgs-propagate-design-change/SKILL.md index 7bcf20f..755853d 100644 --- a/.agents/skills/cgs-propagate-design-change/SKILL.md +++ b/.agents/skills/cgs-propagate-design-change/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-propagate-design-change description: Use for propagate design change tasks that trace a design change through systems, docs, tasks, tests, content, and release risk; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 +model: gpt-5.6-terra model_reasoning_effort: high argument-hint: Describe the propagate-design-change objective, target files/assets, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-prototype/SKILL.md b/.agents/skills/cgs-prototype/SKILL.md index 1b642ad..62a8634 100644 --- a/.agents/skills/cgs-prototype/SKILL.md +++ b/.agents/skills/cgs-prototype/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-prototype description: Use for prototype tasks that build or plan a throwaway concept prototype around a falsifiable design hypothesis and cleanup boundary; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the prototype objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-qa-plan/SKILL.md b/.agents/skills/cgs-qa-plan/SKILL.md index 023f048..ea83a9c 100644 --- a/.agents/skills/cgs-qa-plan/SKILL.md +++ b/.agents/skills/cgs-qa-plan/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-qa-plan description: Use for qa plan tasks that plan focused QA coverage across features, risks, platforms, devices, regressions, and acceptance criteria; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 +model: gpt-5.6-terra model_reasoning_effort: medium argument-hint: Describe the qa-plan objective, target files/assets, constraints, and verification evidence. primary-agent: qa-playtester diff --git a/.agents/skills/cgs-quick-design/SKILL.md b/.agents/skills/cgs-quick-design/SKILL.md index 77bb05e..a04fae8 100644 --- a/.agents/skills/cgs-quick-design/SKILL.md +++ b/.agents/skills/cgs-quick-design/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-quick-design description: Use for quick design tasks that draft a constrained design slice fast while preserving pillars, assumptions, and open questions; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the quick-design objective, target files/assets, constraints, and verification evidence. primary-agent: game-designer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-regression-suite/SKILL.md b/.agents/skills/cgs-regression-suite/SKILL.md index 29fd888..7a10a85 100644 --- a/.agents/skills/cgs-regression-suite/SKILL.md +++ b/.agents/skills/cgs-regression-suite/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-regression-suite description: Use for regression suite tasks that define or run regression coverage for changed systems, prior bugs, critical paths, and release blockers; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 -model_reasoning_effort: medium +model: gpt-5.6-terra +model_reasoning_effort: high argument-hint: Describe the regression-suite objective, target files/assets, constraints, and verification evidence. primary-agent: qa-playtester tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-release-checklist/SKILL.md b/.agents/skills/cgs-release-checklist/SKILL.md index 05f320c..a68bcfb 100644 --- a/.agents/skills/cgs-release-checklist/SKILL.md +++ b/.agents/skills/cgs-release-checklist/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-release-checklist description: Use for release checklist tasks that check build, packaging, store, QA, localization, accessibility, rollback, and ship/no-ship readiness; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high argument-hint: Describe the release-checklist objective, target files/assets, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-retrospective/SKILL.md b/.agents/skills/cgs-retrospective/SKILL.md index 35216bf..2805f2e 100644 --- a/.agents/skills/cgs-retrospective/SKILL.md +++ b/.agents/skills/cgs-retrospective/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-retrospective description: Use for retrospective tasks that facilitate a retrospective with what worked, what failed, root causes, actions, and owner follow-up; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: low argument-hint: Describe the retrospective objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-reverse-document/SKILL.md b/.agents/skills/cgs-reverse-document/SKILL.md index 4e46fd9..cf42fb7 100644 --- a/.agents/skills/cgs-reverse-document/SKILL.md +++ b/.agents/skills/cgs-reverse-document/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-reverse-document description: Use for reverse document tasks that create design or technical documentation from existing implementation without inventing unverified behavior; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the reverse-document objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-review-all-gdds/SKILL.md b/.agents/skills/cgs-review-all-gdds/SKILL.md index 9d9262e..8402053 100644 --- a/.agents/skills/cgs-review-all-gdds/SKILL.md +++ b/.agents/skills/cgs-review-all-gdds/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-review-all-gdds description: Use for review all gdds tasks that cross-check all GDDs for consistency, missing systems, dependency conflicts, and production readiness; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-sol +model_reasoning_effort: medium argument-hint: Describe the review-all-gdds objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-scope-check/SKILL.md b/.agents/skills/cgs-scope-check/SKILL.md index ef7f10e..01b82f0 100644 --- a/.agents/skills/cgs-scope-check/SKILL.md +++ b/.agents/skills/cgs-scope-check/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-scope-check description: Use for scope check tasks that assess whether requested work fits the milestone and propose cuts, deferrals, or safer slices; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the scope-check objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-security-audit/SKILL.md b/.agents/skills/cgs-security-audit/SKILL.md index e71441a..5a17de6 100644 --- a/.agents/skills/cgs-security-audit/SKILL.md +++ b/.agents/skills/cgs-security-audit/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-security-audit description: Use for security audit tasks that audit secrets, network surfaces, auth, saves, platform APIs, dependencies, and exploit risks; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high argument-hint: Describe the security-audit objective, target files/assets, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-setup-engine/SKILL.md b/.agents/skills/cgs-setup-engine/SKILL.md index c2cd279..62c5bd3 100644 --- a/.agents/skills/cgs-setup-engine/SKILL.md +++ b/.agents/skills/cgs-setup-engine/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-setup-engine description: Use for setup engine tasks that pin engine version, verify project markers, document conventions, and run engine smoke checks; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the setup-engine objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-skill-improve/SKILL.md b/.agents/skills/cgs-skill-improve/SKILL.md index c36d81e..a5cc501 100644 --- a/.agents/skills/cgs-skill-improve/SKILL.md +++ b/.agents/skills/cgs-skill-improve/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-skill-improve description: Use for skill improve tasks that improve a skill after observed failures while preserving trigger, procedure, validation, and handoff clarity; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the skill-improve objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-skill-test/SKILL.md b/.agents/skills/cgs-skill-test/SKILL.md index 3eb8cce..e044c06 100644 --- a/.agents/skills/cgs-skill-test/SKILL.md +++ b/.agents/skills/cgs-skill-test/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-skill-test description: Use for skill test tasks that test a repository skill against fixtures, required sections, dry-runs, and behavioral expectations; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 +model: gpt-5.6-luna model_reasoning_effort: medium argument-hint: Describe the skill-test objective, target files/assets, constraints, and verification evidence. primary-agent: qa-playtester diff --git a/.agents/skills/cgs-smoke-check/SKILL.md b/.agents/skills/cgs-smoke-check/SKILL.md index e1cbe76..a966768 100644 --- a/.agents/skills/cgs-smoke-check/SKILL.md +++ b/.agents/skills/cgs-smoke-check/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-smoke-check description: Use for smoke check tasks that run the fastest useful checks proving the project opens, builds, starts, and reaches a basic playable state; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4-mini -model_reasoning_effort: low +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the smoke-check objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-soak-test/SKILL.md b/.agents/skills/cgs-soak-test/SKILL.md index e5b1cad..477889b 100644 --- a/.agents/skills/cgs-soak-test/SKILL.md +++ b/.agents/skills/cgs-soak-test/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-soak-test description: Use for soak test tasks that plan longer stability checks for memory, performance drift, save/load, networking, and live-ops loops; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 +model: gpt-5.6-terra model_reasoning_effort: medium argument-hint: Describe the soak-test objective, target files/assets, constraints, and verification evidence. primary-agent: qa-playtester diff --git a/.agents/skills/cgs-sprint-plan/SKILL.md b/.agents/skills/cgs-sprint-plan/SKILL.md index ae4e766..b06f372 100644 --- a/.agents/skills/cgs-sprint-plan/SKILL.md +++ b/.agents/skills/cgs-sprint-plan/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-sprint-plan description: Use for sprint plan tasks that create a 1-2 week sprint plan with goals, tasks, owners, dependencies, risks, and acceptance criteria; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the sprint-plan objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-sprint-status/SKILL.md b/.agents/skills/cgs-sprint-status/SKILL.md index 6350ba8..123dc88 100644 --- a/.agents/skills/cgs-sprint-status/SKILL.md +++ b/.agents/skills/cgs-sprint-status/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-sprint-status description: Use for sprint status tasks that report sprint progress, blockers, risk changes, completed work, and next decisions; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4-mini +model: gpt-5.6-luna model_reasoning_effort: low argument-hint: Describe the sprint-status objective, target files/assets, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-standards-ai-code/SKILL.md b/.agents/skills/cgs-standards-ai-code/SKILL.md index 668c4df..4816335 100644 --- a/.agents/skills/cgs-standards-ai-code/SKILL.md +++ b/.agents/skills/cgs-standards-ai-code/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-standards-ai-code description: Use for ai code standards: review target files, apply Codex-native boundaries, produce violations, fixes, verification evidence, and handoff notes. -model: gpt-5.4-mini -model_reasoning_effort: low +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Provide the standards objective, target files/assets/docs, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-standards-data-files/SKILL.md b/.agents/skills/cgs-standards-data-files/SKILL.md index bae9e64..65183f1 100644 --- a/.agents/skills/cgs-standards-data-files/SKILL.md +++ b/.agents/skills/cgs-standards-data-files/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-standards-data-files description: Use for data file standards: review target files, apply Codex-native boundaries, produce violations, fixes, verification evidence, and handoff notes. -model: gpt-5.4-mini +model: gpt-5.6-luna model_reasoning_effort: low argument-hint: Provide the standards objective, target files/assets/docs, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-standards-design-docs/SKILL.md b/.agents/skills/cgs-standards-design-docs/SKILL.md index a97da32..7778344 100644 --- a/.agents/skills/cgs-standards-design-docs/SKILL.md +++ b/.agents/skills/cgs-standards-design-docs/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-standards-design-docs description: Use for design document standards: review target files, apply Codex-native boundaries, produce violations, fixes, verification evidence, and handoff notes. -model: gpt-5.4-mini +model: gpt-5.6-luna model_reasoning_effort: low argument-hint: Provide the standards objective, target files/assets/docs, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-standards-engine-code/SKILL.md b/.agents/skills/cgs-standards-engine-code/SKILL.md index 0236d78..af40917 100644 --- a/.agents/skills/cgs-standards-engine-code/SKILL.md +++ b/.agents/skills/cgs-standards-engine-code/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-standards-engine-code description: Use for engine code standards: review target files, apply Codex-native boundaries, produce violations, fixes, verification evidence, and handoff notes. -model: gpt-5.4-mini -model_reasoning_effort: low +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Provide the standards objective, target files/assets/docs, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-standards-gameplay-code/SKILL.md b/.agents/skills/cgs-standards-gameplay-code/SKILL.md index 3648990..d1d511b 100644 --- a/.agents/skills/cgs-standards-gameplay-code/SKILL.md +++ b/.agents/skills/cgs-standards-gameplay-code/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-standards-gameplay-code description: Use for gameplay code standards: review target files, apply Codex-native boundaries, produce violations, fixes, verification evidence, and handoff notes. -model: gpt-5.4-mini -model_reasoning_effort: low +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Provide the standards objective, target files/assets/docs, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-standards-gameplay/SKILL.md b/.agents/skills/cgs-standards-gameplay/SKILL.md index ef4ed17..36f2f86 100644 --- a/.agents/skills/cgs-standards-gameplay/SKILL.md +++ b/.agents/skills/cgs-standards-gameplay/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-standards-gameplay description: Use for standards gameplay tasks that mechanics, tuning, data-driven values, engine idioms, and player-facing acceptance checks; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4-mini +model: gpt-5.6-luna model_reasoning_effort: low argument-hint: Describe the standards-gameplay objective, target files/assets, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-standards-narrative/SKILL.md b/.agents/skills/cgs-standards-narrative/SKILL.md index 01c2de2..ba68a59 100644 --- a/.agents/skills/cgs-standards-narrative/SKILL.md +++ b/.agents/skills/cgs-standards-narrative/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-standards-narrative description: Use for narrative standards: review target files, apply Codex-native boundaries, produce violations, fixes, verification evidence, and handoff notes. -model: gpt-5.4-mini +model: gpt-5.6-luna model_reasoning_effort: low argument-hint: Provide the standards objective, target files/assets/docs, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-standards-network-code/SKILL.md b/.agents/skills/cgs-standards-network-code/SKILL.md index 30c53b3..a642bbb 100644 --- a/.agents/skills/cgs-standards-network-code/SKILL.md +++ b/.agents/skills/cgs-standards-network-code/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-standards-network-code description: Use for network code standards: review target files, apply Codex-native boundaries, produce violations, fixes, verification evidence, and handoff notes. -model: gpt-5.4-mini -model_reasoning_effort: low +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Provide the standards objective, target files/assets/docs, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-standards-prototype-code/SKILL.md b/.agents/skills/cgs-standards-prototype-code/SKILL.md index 801117a..0dc489c 100644 --- a/.agents/skills/cgs-standards-prototype-code/SKILL.md +++ b/.agents/skills/cgs-standards-prototype-code/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-standards-prototype-code description: Use for prototype code standards: review target files, apply Codex-native boundaries, produce violations, fixes, verification evidence, and handoff notes. -model: gpt-5.4-mini +model: gpt-5.6-luna model_reasoning_effort: low argument-hint: Provide the standards objective, target files/assets/docs, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-standards-prototype/SKILL.md b/.agents/skills/cgs-standards-prototype/SKILL.md index de2e594..138d064 100644 --- a/.agents/skills/cgs-standards-prototype/SKILL.md +++ b/.agents/skills/cgs-standards-prototype/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-standards-prototype description: Use for standards prototype tasks that fast experiments with explicit hypotheses, throwaway boundaries, and graduation criteria; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4-mini +model: gpt-5.6-luna model_reasoning_effort: low argument-hint: Describe the standards-prototype objective, target files/assets, constraints, and verification evidence. primary-agent: producer diff --git a/.agents/skills/cgs-standards-shader-code/SKILL.md b/.agents/skills/cgs-standards-shader-code/SKILL.md index 0caabcd..7a03746 100644 --- a/.agents/skills/cgs-standards-shader-code/SKILL.md +++ b/.agents/skills/cgs-standards-shader-code/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-standards-shader-code description: Use for shader code standards: review target files, apply Codex-native boundaries, produce violations, fixes, verification evidence, and handoff notes. -model: gpt-5.4-mini -model_reasoning_effort: low +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Provide the standards objective, target files/assets/docs, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-standards-test-standards/SKILL.md b/.agents/skills/cgs-standards-test-standards/SKILL.md index 08bf365..ab4ed12 100644 --- a/.agents/skills/cgs-standards-test-standards/SKILL.md +++ b/.agents/skills/cgs-standards-test-standards/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-standards-test-standards description: Use for test standards: review target files, apply Codex-native boundaries, produce violations, fixes, verification evidence, and handoff notes. -model: gpt-5.4-mini -model_reasoning_effort: low +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Provide the standards objective, target files/assets/docs, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-standards-tests/SKILL.md b/.agents/skills/cgs-standards-tests/SKILL.md index 94d0127..bbc43e0 100644 --- a/.agents/skills/cgs-standards-tests/SKILL.md +++ b/.agents/skills/cgs-standards-tests/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-standards-tests description: Use for standards tests tasks that unit, integration, engine smoke, playtest, and regression coverage; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4-mini +model: gpt-5.6-luna model_reasoning_effort: low argument-hint: Describe the standards-tests objective, target files/assets, constraints, and verification evidence. primary-agent: qa-playtester diff --git a/.agents/skills/cgs-standards-ui-code/SKILL.md b/.agents/skills/cgs-standards-ui-code/SKILL.md index 7e9eced..8147f55 100644 --- a/.agents/skills/cgs-standards-ui-code/SKILL.md +++ b/.agents/skills/cgs-standards-ui-code/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-standards-ui-code description: Use for ui code standards: review target files, apply Codex-native boundaries, produce violations, fixes, verification evidence, and handoff notes. -model: gpt-5.4-mini -model_reasoning_effort: low +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Provide the standards objective, target files/assets/docs, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-standards-ui/SKILL.md b/.agents/skills/cgs-standards-ui/SKILL.md index e639c23..796c1f3 100644 --- a/.agents/skills/cgs-standards-ui/SKILL.md +++ b/.agents/skills/cgs-standards-ui/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-standards-ui description: Use for standards ui tasks that hUD, menus, accessibility, localization, controller navigation, and input states; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4-mini +model: gpt-5.6-luna model_reasoning_effort: low argument-hint: Describe the standards-ui objective, target files/assets, constraints, and verification evidence. primary-agent: game-designer diff --git a/.agents/skills/cgs-start/SKILL.md b/.agents/skills/cgs-start/SKILL.md index 23643bd..178d6ce 100644 --- a/.agents/skills/cgs-start/SKILL.md +++ b/.agents/skills/cgs-start/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-start description: Use for start tasks that clarify the game concept, engine, production mode, first milestone, and next required artifact; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low argument-hint: Describe the start objective, target files/assets, constraints, and verification evidence. primary-agent: game-designer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-story-done/SKILL.md b/.agents/skills/cgs-story-done/SKILL.md index caf62cc..1b3974a 100644 --- a/.agents/skills/cgs-story-done/SKILL.md +++ b/.agents/skills/cgs-story-done/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-story-done description: Use for story done tasks that check if a story is complete with changed files, tests, acceptance evidence, and handoff notes; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 +model: gpt-5.6-luna model_reasoning_effort: medium argument-hint: Describe the story-done objective, target files/assets, constraints, and verification evidence. primary-agent: gameplay-programmer diff --git a/.agents/skills/cgs-story-readiness/SKILL.md b/.agents/skills/cgs-story-readiness/SKILL.md index e91c5f5..b354eb8 100644 --- a/.agents/skills/cgs-story-readiness/SKILL.md +++ b/.agents/skills/cgs-story-readiness/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-story-readiness description: Use for story readiness tasks that check if a story is implementable with clear inputs, acceptance criteria, dependencies, and validation; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 +model: gpt-5.6-luna model_reasoning_effort: medium argument-hint: Describe the story-readiness objective, target files/assets, constraints, and verification evidence. primary-agent: gameplay-programmer diff --git a/.agents/skills/cgs-team-audio/SKILL.md b/.agents/skills/cgs-team-audio/SKILL.md index 1c1c5d3..6bf78d5 100644 --- a/.agents/skills/cgs-team-audio/SKILL.md +++ b/.agents/skills/cgs-team-audio/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-team-audio description: Use for team audio tasks that coordinate audio design, implementation, asset readiness, mix targets, and QA for audio work; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low argument-hint: Describe the team-audio objective, target files/assets, constraints, and verification evidence. primary-agent: game-designer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-team-combat/SKILL.md b/.agents/skills/cgs-team-combat/SKILL.md index ca20402..5e45d61 100644 --- a/.agents/skills/cgs-team-combat/SKILL.md +++ b/.agents/skills/cgs-team-combat/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-team-combat description: Use for team combat tasks that coordinate combat design, implementation, tuning, animation, VFX, audio, and QA handoffs; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low argument-hint: Describe the team-combat objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-team-level/SKILL.md b/.agents/skills/cgs-team-level/SKILL.md index 7a4b54e..304e7b1 100644 --- a/.agents/skills/cgs-team-level/SKILL.md +++ b/.agents/skills/cgs-team-level/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-team-level description: Use for team level tasks that coordinate level design, blockout, art, scripting, lighting, optimization, and playtest handoffs; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low argument-hint: Describe the team-level objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-team-live-ops/SKILL.md b/.agents/skills/cgs-team-live-ops/SKILL.md index a57ce97..14575fc 100644 --- a/.agents/skills/cgs-team-live-ops/SKILL.md +++ b/.agents/skills/cgs-team-live-ops/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-team-live-ops description: Use for team live ops tasks that coordinate events, telemetry, economy, content cadence, support, and incident readiness; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low argument-hint: Describe the team-live-ops objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-team-narrative/SKILL.md b/.agents/skills/cgs-team-narrative/SKILL.md index 4d35bf0..e9bc45c 100644 --- a/.agents/skills/cgs-team-narrative/SKILL.md +++ b/.agents/skills/cgs-team-narrative/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-team-narrative description: Use for team narrative tasks that coordinate narrative content, dialogue, localization, implementation hooks, and consistency review; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low argument-hint: Describe the team-narrative objective, target files/assets, constraints, and verification evidence. primary-agent: game-designer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-team-polish/SKILL.md b/.agents/skills/cgs-team-polish/SKILL.md index 44ef0ca..68ba984 100644 --- a/.agents/skills/cgs-team-polish/SKILL.md +++ b/.agents/skills/cgs-team-polish/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-team-polish description: Use for team polish tasks that coordinate final polish across game feel, UI, audio, art, bugs, performance, and accessibility; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low argument-hint: Describe the team-polish objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-team-qa/SKILL.md b/.agents/skills/cgs-team-qa/SKILL.md index bc18ac3..2285756 100644 --- a/.agents/skills/cgs-team-qa/SKILL.md +++ b/.agents/skills/cgs-team-qa/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-team-qa description: Use for team qa tasks that coordinate QA coverage, bug triage, regression, platform checks, and release evidence; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 -model_reasoning_effort: medium +model: gpt-5.6-terra +model_reasoning_effort: low argument-hint: Describe the team-qa objective, target files/assets, constraints, and verification evidence. primary-agent: qa-playtester tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-team-release/SKILL.md b/.agents/skills/cgs-team-release/SKILL.md index 4e1e755..ee9d4d3 100644 --- a/.agents/skills/cgs-team-release/SKILL.md +++ b/.agents/skills/cgs-team-release/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-team-release description: Use for team release tasks that coordinate release management, build pipeline, store assets, QA signoff, comms, and rollback; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low argument-hint: Describe the team-release objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-team-ui/SKILL.md b/.agents/skills/cgs-team-ui/SKILL.md index f958b6d..a7368c2 100644 --- a/.agents/skills/cgs-team-ui/SKILL.md +++ b/.agents/skills/cgs-team-ui/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-team-ui description: Use for team ui tasks that coordinate UI design, implementation, accessibility, localization, controller support, and UX QA; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low argument-hint: Describe the team-ui objective, target files/assets, constraints, and verification evidence. primary-agent: game-designer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-tech-debt/SKILL.md b/.agents/skills/cgs-tech-debt/SKILL.md index 852815f..e4d991c 100644 --- a/.agents/skills/cgs-tech-debt/SKILL.md +++ b/.agents/skills/cgs-tech-debt/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-tech-debt description: Use for tech debt tasks that identify technical debt, production risk, payoff, safe refactor slices, and validation needed; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the tech-debt objective, target files/assets, constraints, and verification evidence. primary-agent: producer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-test-evidence-review/SKILL.md b/.agents/skills/cgs-test-evidence-review/SKILL.md index dea703b..446d617 100644 --- a/.agents/skills/cgs-test-evidence-review/SKILL.md +++ b/.agents/skills/cgs-test-evidence-review/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-test-evidence-review description: Use for test evidence review tasks that review validation output, logs, screenshots, recordings, and manual checks for sufficiency and gaps; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 +model: gpt-5.6-luna model_reasoning_effort: medium argument-hint: Describe the test-evidence-review objective, target files/assets, constraints, and verification evidence. primary-agent: qa-playtester diff --git a/.agents/skills/cgs-test-flakiness/SKILL.md b/.agents/skills/cgs-test-flakiness/SKILL.md index 18e08a1..979b74e 100644 --- a/.agents/skills/cgs-test-flakiness/SKILL.md +++ b/.agents/skills/cgs-test-flakiness/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-test-flakiness description: Use for test flakiness tasks that diagnose flaky tests by isolating timing, randomness, ordering, environment, and cleanup causes; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 -model_reasoning_effort: medium +model: gpt-5.6-terra +model_reasoning_effort: high argument-hint: Describe the test-flakiness objective, target files/assets, constraints, and verification evidence. primary-agent: qa-playtester tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-test-helpers/SKILL.md b/.agents/skills/cgs-test-helpers/SKILL.md index 29243a5..7eaa492 100644 --- a/.agents/skills/cgs-test-helpers/SKILL.md +++ b/.agents/skills/cgs-test-helpers/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-test-helpers description: Use for test helpers tasks that design reusable test helpers without hiding assertions, over-mocking, or coupling tests to implementation details; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4-mini -model_reasoning_effort: low +model: gpt-5.6-luna +model_reasoning_effort: medium argument-hint: Describe the test-helpers objective, target files/assets, constraints, and verification evidence. primary-agent: qa-playtester tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-test-setup/SKILL.md b/.agents/skills/cgs-test-setup/SKILL.md index 8318cec..e1af61d 100644 --- a/.agents/skills/cgs-test-setup/SKILL.md +++ b/.agents/skills/cgs-test-setup/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-test-setup description: Use for test setup tasks that configure test harnesses, fixtures, commands, and documentation so validation is repeatable; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.4 +model: gpt-5.6-terra model_reasoning_effort: medium argument-hint: Describe the test-setup objective, target files/assets, constraints, and verification evidence. primary-agent: qa-playtester diff --git a/.agents/skills/cgs-ui-ux-review/SKILL.md b/.agents/skills/cgs-ui-ux-review/SKILL.md index 11e5bef..677afe0 100644 --- a/.agents/skills/cgs-ui-ux-review/SKILL.md +++ b/.agents/skills/cgs-ui-ux-review/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-ui-ux-review description: Use for ui ux review tasks that review UI and UX implementation for clarity, accessibility, localization, controller support, and player comprehension; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the ui-ux-review objective, target files/assets, constraints, and verification evidence. primary-agent: game-designer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-ux-design/SKILL.md b/.agents/skills/cgs-ux-design/SKILL.md index 84e4352..dddadfd 100644 --- a/.agents/skills/cgs-ux-design/SKILL.md +++ b/.agents/skills/cgs-ux-design/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-ux-design description: Use for ux design tasks that design user journeys, menus, HUD, onboarding, input states, accessibility, and localization-ready UX copy; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the ux-design objective, target files/assets, constraints, and verification evidence. primary-agent: game-designer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-ux-review/SKILL.md b/.agents/skills/cgs-ux-review/SKILL.md index 77fa94e..9d9a30f 100644 --- a/.agents/skills/cgs-ux-review/SKILL.md +++ b/.agents/skills/cgs-ux-review/SKILL.md @@ -1,8 +1,8 @@ --- name: cgs-ux-review description: Use for ux review tasks that review UX flows for clarity, friction, accessibility, localization, controller support, and player comprehension; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium argument-hint: Describe the ux-review objective, target files/assets, constraints, and verification evidence. primary-agent: game-designer tool-policy: read/edit/shell/tests/git as needed within the repository write policy diff --git a/.agents/skills/cgs-vertical-slice/SKILL.md b/.agents/skills/cgs-vertical-slice/SKILL.md index 7f2f1e1..965c435 100644 --- a/.agents/skills/cgs-vertical-slice/SKILL.md +++ b/.agents/skills/cgs-vertical-slice/SKILL.md @@ -1,7 +1,7 @@ --- name: cgs-vertical-slice description: Use for vertical slice tasks that validate whether a full game loop can be built at representative quality before production commitment; produce verification evidence, changed or proposed files, and handoff boundaries. -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high argument-hint: Describe the vertical-slice objective, target files/assets, constraints, and verification evidence. primary-agent: producer @@ -13,7 +13,6 @@ user-invocable: true --- # Codex Game Studio Vertical Slice - Use this skill for vertical slice work in Template Game. ## Objective diff --git a/.codex/agents/accessibility-specialist.toml b/.codex/agents/accessibility-specialist.toml index 7b257dc..28a47b1 100644 --- a/.codex/agents/accessibility-specialist.toml +++ b/.codex/agents/accessibility-specialist.toml @@ -1,7 +1,7 @@ name = "accessibility_specialist" description = "Owns accessibility specialist work: Review accessibility for controls, visual/audio feedback, readability, cognitive load, difficulty options, platform conventions, and testable accommodations. Produces Accessibility review, Accommodation checklist, Inclusive design risks; hand off requests outside accessibility specialist ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/accessibility-specialist.md" # source_hash = "82c8550000b2882a1083338fdb97f46759ca8d493845d697b7594d219f362529" diff --git a/.codex/agents/ai-programmer.toml b/.codex/agents/ai-programmer.toml index 0e30f49..f5b836f 100644 --- a/.codex/agents/ai-programmer.toml +++ b/.codex/agents/ai-programmer.toml @@ -1,7 +1,7 @@ name = "ai_programmer" description = "Owns ai programmer work: Implement game AI behavior, decision logic, navigation, perception, tuning hooks, debug visibility, and deterministic verification for NPC or systemic agents. Produces AI implementation, Behavior tuning notes, Debug and test evidence; hand off requests outside ai programmer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/ai-programmer.md" # source_hash = "f9decba41651b4c225f1c4d4bf3f3bcf0eca088caf9cb3a0b3cb28f43e392b56" diff --git a/.codex/agents/audio-director.toml b/.codex/agents/audio-director.toml index 5d84323..c5152c7 100644 --- a/.codex/agents/audio-director.toml +++ b/.codex/agents/audio-director.toml @@ -1,7 +1,7 @@ name = "audio_director" description = "Owns audio director work: Define audio pillars, music direction, soundscape priorities, implementation constraints, mix goals, and cross-discipline audio production handoffs. Produces Audio direction, Soundscape priorities, Implementation constraints; hand off requests outside audio director ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-luna" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/audio-director.md" # source_hash = "6f40a1c899e6f2d1f348eb91af54fa3d40a29c7236469fdc59d15f0f08c0c85a" diff --git a/.codex/agents/community-manager.toml b/.codex/agents/community-manager.toml index 2ef939d..65e011c 100644 --- a/.codex/agents/community-manager.toml +++ b/.codex/agents/community-manager.toml @@ -1,7 +1,7 @@ name = "community_manager" description = "Owns community manager work: Plan player communication, feedback triage, community launch beats, moderation risks, sentiment signals, and actionable handoffs to production roles. Produces Community plan, Feedback triage notes, Messaging risks; hand off requests outside community manager ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-luna" +model_reasoning_effort = "low" model_verbosity = "medium" # source_reference = ".claude/agents/community-manager.md" # source_hash = "ba552c736a42cb83f8d04d79199f29c3b8dc81914c7530e86c266ab11c034496" diff --git a/.codex/agents/creative-director.toml b/.codex/agents/creative-director.toml index 61cd3fa..27fe86e 100644 --- a/.codex/agents/creative-director.toml +++ b/.codex/agents/creative-director.toml @@ -1,7 +1,7 @@ name = "creative_director" description = "Owns creative director work: Set creative pillars, protect player fantasy, align experience goals across disciplines, and keep scope coherent for Codex-executed game work. Produces Creative direction, Scope decisions, Experience pillars; hand off requests outside creative director ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-sol" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/creative-director.md" # source_hash = "00b9dc2b494b5feeefa5203fdefbd9bd9a4789a23ed2d192898b5ef84036b966" diff --git a/.codex/agents/data-scientist.toml b/.codex/agents/data-scientist.toml index 73adb70..f1164ae 100644 --- a/.codex/agents/data-scientist.toml +++ b/.codex/agents/data-scientist.toml @@ -1,7 +1,7 @@ name = "data_scientist" description = "Owns data scientist work: Define analytics events, success metrics, experiment plans, dashboards, and evidence loops that support design and production decisions. Produces Analytics plan, Event taxonomy, Experiment outline; hand off requests outside data scientist ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".codex/agents/data-scientist.toml" # source_hash = "51f87821156c61a975630826f11e834291c841b07efd545f4f89aa24fe1c65b8" diff --git a/.codex/agents/devops-engineer.toml b/.codex/agents/devops-engineer.toml index d9cbfc4..97abbb3 100644 --- a/.codex/agents/devops-engineer.toml +++ b/.codex/agents/devops-engineer.toml @@ -1,6 +1,6 @@ name = "devops_engineer" description = "Owns devops engineer work: Design build, packaging, CI, release automation, environment setup, cache strategy, and reproducible validation flows for game projects. Produces Build automation, CI or packaging notes, Reproducibility checks; hand off requests outside devops engineer ownership or missing verification evidence." -model = "gpt-5.5" +model = "gpt-5.6-terra" model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".claude/agents/devops-engineer.md" diff --git a/.codex/agents/economy-designer.toml b/.codex/agents/economy-designer.toml index 2828fe2..fe42956 100644 --- a/.codex/agents/economy-designer.toml +++ b/.codex/agents/economy-designer.toml @@ -1,7 +1,7 @@ name = "economy_designer" description = "Owns economy designer work: Model currencies, rewards, sinks, pacing, pricing, progression pressure, and fairness risks for game economies without adding hidden monetization assumptions. Produces Economy model, Reward and sink table, Balance risks; hand off requests outside economy designer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/economy-designer.md" # source_hash = "523d9faf11dfe6581df5fa3248c4a3d43b8d284715502c868cb8e796fd55eae0" diff --git a/.codex/agents/engine-programmer.toml b/.codex/agents/engine-programmer.toml index a0dfbe8..bbd362e 100644 --- a/.codex/agents/engine-programmer.toml +++ b/.codex/agents/engine-programmer.toml @@ -1,6 +1,6 @@ name = "engine_programmer" description = "Owns engine programmer work: Work on engine integration, performance-sensitive systems, build setup, runtime foundations, and platform constraints. Produces Technical implementation, Performance notes, Build impact; hand off requests outside engine programmer ownership or missing verification evidence." -model = "gpt-5.5" +model = "gpt-5.6-terra" model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".claude/agents/engine-programmer.md" diff --git a/.codex/agents/game-designer.toml b/.codex/agents/game-designer.toml index b616b8c..989f716 100644 --- a/.codex/agents/game-designer.toml +++ b/.codex/agents/game-designer.toml @@ -1,7 +1,7 @@ name = "game_designer" description = "Owns game designer work: Design implementation-level mechanics, feature rules, tuning values, edge cases, and player-facing acceptance criteria with practical scope. Produces Feature spec, Tuning notes, Acceptance criteria; hand off requests outside game designer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/game-designer.md" # source_hash = "a1b4fb4f1466b69140a23f8e12d3a5eba624d2a6318da32e2b755e471d41584f" diff --git a/.codex/agents/game-feel-designer.toml b/.codex/agents/game-feel-designer.toml index 3994864..612d901 100644 --- a/.codex/agents/game-feel-designer.toml +++ b/.codex/agents/game-feel-designer.toml @@ -1,7 +1,7 @@ name = "game_feel_designer" description = "Owns game feel designer work: Tune controls, feedback, pacing, animation timing, juice, camera response, and moment-to-moment player feel with actionable changes. Produces Feel review, Tuning recommendations, Feedback checklist; hand off requests outside game feel designer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".codex/agents/game-feel-designer.toml" # source_hash = "9f3a3af018bc213d900e5c9a6e1d41ee328c5c2f8f25d893527f00b0f90f54dd" diff --git a/.codex/agents/gameplay-programmer.toml b/.codex/agents/gameplay-programmer.toml index 2095acc..922a177 100644 --- a/.codex/agents/gameplay-programmer.toml +++ b/.codex/agents/gameplay-programmer.toml @@ -1,7 +1,7 @@ name = "gameplay_programmer" description = "Owns gameplay programmer work: Implement gameplay systems with focused file edits, engine-native idioms, deterministic behavior, and verification evidence. Produces Code changes, Verification results, Implementation notes; hand off requests outside gameplay programmer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/gameplay-programmer.md" # source_hash = "287ac70fb839e40b0e392e47e6e23ddd90851103d41c0a82df7f56e0e168834e" diff --git a/.codex/agents/godot-csharp-specialist.toml b/.codex/agents/godot-csharp-specialist.toml index 648507f..033ad69 100644 --- a/.codex/agents/godot-csharp-specialist.toml +++ b/.codex/agents/godot-csharp-specialist.toml @@ -1,7 +1,7 @@ name = "godot_csharp_specialist" description = "Owns godot csharp specialist work: Implement and review Godot C# code using .NET idioms, typed Node access, exported properties, Signal delegates, nullable annotations, and async patterns. Separate C# ownership from GDScript or GDExtension handoffs while preserving Godot scene and resource conventions. Produces Godot C# guidance, .NET integration risks, Typed API verification; hand off requests outside godot csharp specialist ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/godot-csharp-specialist.md" # source_hash = "eb50b0319c763df430003ef4ed028fa2b5c025474491e2d045eadaf79a9df21d" diff --git a/.codex/agents/godot-gdextension-specialist.toml b/.codex/agents/godot-gdextension-specialist.toml index eea2ab3..40afa6b 100644 --- a/.codex/agents/godot-gdextension-specialist.toml +++ b/.codex/agents/godot-gdextension-specialist.toml @@ -1,6 +1,6 @@ name = "godot_gdextension_specialist" description = "Owns godot gdextension specialist work: Implement and review GDExtension boundaries, native bindings, build files, C++ or Rust integration, custom nodes, and performance-critical native code paths. Define when native code is justified over GDScript or C# and keep build, ABI, and export risks explicit. Produces GDExtension guidance, Native binding risks, Build verification notes; hand off requests outside godot gdextension specialist ownership or missing verification evidence." -model = "gpt-5.5" +model = "gpt-5.6-terra" model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".claude/agents/godot-gdextension-specialist.md" diff --git a/.codex/agents/godot-gdscript-specialist.toml b/.codex/agents/godot-gdscript-specialist.toml index c3a576b..216c04d 100644 --- a/.codex/agents/godot-gdscript-specialist.toml +++ b/.codex/agents/godot-gdscript-specialist.toml @@ -1,7 +1,7 @@ name = "godot_gdscript_specialist" description = "Owns godot gdscript specialist work: Implement and review GDScript code with static typing, typed arrays, class_name usage, exports, signals, and Godot naming conventions. Design signal, resource, coroutine, and node communication patterns that keep gameplay code maintainable and performant. Produces GDScript implementation guidance, Signal and typing risks, Godot script verification; hand off requests outside godot gdscript specialist ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/godot-gdscript-specialist.md" # source_hash = "29ca22d29e9d3f4884f6bb1911aca4642013d7d5a58b2758efa43c4f0c130fcf" diff --git a/.codex/agents/godot-shader-specialist.toml b/.codex/agents/godot-shader-specialist.toml index 5dc7480..b9aec85 100644 --- a/.codex/agents/godot-shader-specialist.toml +++ b/.codex/agents/godot-shader-specialist.toml @@ -1,7 +1,7 @@ name = "godot_shader_specialist" description = "Owns godot shader specialist work: Implement and review Godot shader code, materials, particles, visual shader choices, post-processing, lighting, and VFX handoffs. Keep shader recommendations tied to visual goals, render pipeline constraints, GPU cost, and inspectable scene/material files. Produces Godot shader guidance, Rendering and VFX risks, Visual verification notes; hand off requests outside godot shader specialist ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/godot-shader-specialist.md" # source_hash = "b33f9203282cd4e53cf0a7c793f9d2d465409d49c5d6c9fc64f2f5a5eae2da23" diff --git a/.codex/agents/godot-specialist.toml b/.codex/agents/godot-specialist.toml index 6fcb43a..3842fc0 100644 --- a/.codex/agents/godot-specialist.toml +++ b/.codex/agents/godot-specialist.toml @@ -1,7 +1,7 @@ name = "godot_specialist" description = "Owns godot specialist work: Apply Godot-specific implementation and review guidance using only the active project's Godot reference pack and project files. Produces Godot guidance, Engine-specific risks, Verification notes; hand off requests outside godot specialist ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/godot-specialist.md" # source_hash = "3156133f9bff9463a12cb48e6337f49a3ab39359550c18eabac4ac70b84b6e37" diff --git a/.codex/agents/level-designer.toml b/.codex/agents/level-designer.toml index b9a7703..ccab9ba 100644 --- a/.codex/agents/level-designer.toml +++ b/.codex/agents/level-designer.toml @@ -1,7 +1,7 @@ name = "level_designer" description = "Owns level designer work: Design levels, encounter spaces, navigation beats, pacing, objective flow, metrics, blockout notes, and testable acceptance criteria for playable content. Produces Level brief, Blockout notes, Playtest criteria; hand off requests outside level designer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-luna" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/level-designer.md" # source_hash = "6121007acde96a808235c4290669bb5de11f1874cd1da6c9d4f0c8c7fad7ef61" diff --git a/.codex/agents/live-ops-designer.toml b/.codex/agents/live-ops-designer.toml index 1a97945..ba2bf0b 100644 --- a/.codex/agents/live-ops-designer.toml +++ b/.codex/agents/live-ops-designer.toml @@ -1,7 +1,7 @@ name = "live_ops_designer" description = "Owns live ops designer work: Design live events, retention loops, update cadence, economy impacts, player messaging, operational risks, and post-launch measurement plans. Produces Live ops plan, Event loop notes, Measurement and risk summary; hand off requests outside live ops designer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/live-ops-designer.md" # source_hash = "19fead72a61b75adceaf03763416ab3f4f0c88d8545bc2a844ae2e03d0e62f04" diff --git a/.codex/agents/localization-lead.toml b/.codex/agents/localization-lead.toml index 6bc43d1..f7feef3 100644 --- a/.codex/agents/localization-lead.toml +++ b/.codex/agents/localization-lead.toml @@ -1,7 +1,7 @@ name = "localization_lead" description = "Owns localization lead work: Plan localization scope, string readiness, culturalization risks, text expansion, asset dependencies, voice/subtitle needs, and handoff checks. Produces Localization plan, String and asset risks, Culturalization notes; hand off requests outside localization lead ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-luna" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/localization-lead.md" # source_hash = "96991fd33e46cc60179d1abca967ac56f6e809908a8a5fdd71aafa1be3571704" diff --git a/.codex/agents/market-analyst.toml b/.codex/agents/market-analyst.toml index a325624..aa45f81 100644 --- a/.codex/agents/market-analyst.toml +++ b/.codex/agents/market-analyst.toml @@ -1,7 +1,7 @@ name = "market_analyst" description = "Owns market analyst work: Analyze audience, competitors, positioning, pricing, discoverability, and market risks using project constraints and clearly labeled assumptions. Produces Market analysis, Competitor positioning, Audience risks; hand off requests outside market analyst ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-luna" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".codex/agents/market-analyst.toml" # source_hash = "91f30005d8a94c5d1fdff7b8b6a1fd0d112cd3b2192224aff247e6df5887d58b" diff --git a/.codex/agents/narrative-designer.toml b/.codex/agents/narrative-designer.toml index 284a864..35e1fa0 100644 --- a/.codex/agents/narrative-designer.toml +++ b/.codex/agents/narrative-designer.toml @@ -1,7 +1,7 @@ name = "narrative_designer" description = "Owns narrative designer work: Shape story, tone, world rules, character and content needs, and narrative consistency while respecting production constraints. Produces Narrative brief, Content list, Tone guidance; hand off requests outside narrative designer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".codex/agents/narrative-designer.toml" # source_hash = "02eadc45737f8a1e5950b32fa1d7daa4382608a4c82136ad6e162eb76616c684" diff --git a/.codex/agents/network-programmer.toml b/.codex/agents/network-programmer.toml index 4bfa512..bcd6666 100644 --- a/.codex/agents/network-programmer.toml +++ b/.codex/agents/network-programmer.toml @@ -1,6 +1,6 @@ name = "network_programmer" description = "Owns network programmer work: Implement networked gameplay, replication, synchronization, authority boundaries, latency handling, rollback risks, and multiplayer verification notes. Produces Networking implementation, Synchronization notes, Multiplayer verification; hand off requests outside network programmer ownership or missing verification evidence." -model = "gpt-5.5" +model = "gpt-5.6-terra" model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".claude/agents/network-programmer.md" diff --git a/.codex/agents/performance-analyst.toml b/.codex/agents/performance-analyst.toml index a6c5894..d14099b 100644 --- a/.codex/agents/performance-analyst.toml +++ b/.codex/agents/performance-analyst.toml @@ -1,7 +1,7 @@ name = "performance_analyst" description = "Owns performance analyst work: Profile frame time, memory, loading, asset cost, CPU/GPU bottlenecks, instrumentation needs, and optimization priorities for game builds. Produces Performance report, Optimization priorities, Measurement plan; hand off requests outside performance analyst ownership or missing verification evidence." -model = "gpt-5.4" -model_reasoning_effort = "medium" +model = "gpt-5.6-terra" +model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".claude/agents/performance-analyst.md" # source_hash = "c155149e303e200a00074721cd3d9bf5b92d080871ab6298670954aec5705468" diff --git a/.codex/agents/producer.toml b/.codex/agents/producer.toml index 2c695d9..f70e85c 100644 --- a/.codex/agents/producer.toml +++ b/.codex/agents/producer.toml @@ -1,7 +1,7 @@ name = "producer" description = "Owns producer work: Convert goals into bounded production plans, milestone slices, risk lists, owner recommendations, and verification gates for Codex-executed game work. Produces Production plan, Milestone tasks, Risk register; hand off requests outside producer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/producer.md" # source_hash = "05f8bf426001cbd07ca9ca40dde0348139e208f97af7d87abcfecf8ca84c3257" diff --git a/.codex/agents/qa-playtester.toml b/.codex/agents/qa-playtester.toml index d3f2d07..4f75c49 100644 --- a/.codex/agents/qa-playtester.toml +++ b/.codex/agents/qa-playtester.toml @@ -1,6 +1,6 @@ name = "qa_playtester" description = "Owns qa playtester work: Find reproducible gameplay, usability, accessibility, and regression issues with clear severity, evidence, and verification steps. Produces Issue list, Repro steps, Severity notes; hand off requests outside qa playtester ownership or missing verification evidence." -model = "gpt-5.4" +model = "gpt-5.6-luna" model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".codex/agents/qa-playtester.toml" diff --git a/.codex/agents/release-manager.toml b/.codex/agents/release-manager.toml index cdb854e..94348bb 100644 --- a/.codex/agents/release-manager.toml +++ b/.codex/agents/release-manager.toml @@ -1,6 +1,6 @@ name = "release_manager" description = "Owns release manager work: Assess ship readiness, release risk, packaging, validation status, milestone blockers, and remaining warnings before release decisions. Produces Ship checklist, Release risks, Validation summary; hand off requests outside release manager ownership or missing verification evidence." -model = "gpt-5.5" +model = "gpt-5.6-sol" model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".claude/agents/release-manager.md" diff --git a/.codex/agents/security-engineer.toml b/.codex/agents/security-engineer.toml index 5a073e2..ba2a0e0 100644 --- a/.codex/agents/security-engineer.toml +++ b/.codex/agents/security-engineer.toml @@ -1,6 +1,6 @@ name = "security_engineer" description = "Owns security engineer work: Review game client, tools, build scripts, online surfaces, secrets handling, abuse cases, and dependency risks with practical mitigation steps. Produces Security review, Threat notes, Mitigation checklist; hand off requests outside security engineer ownership or missing verification evidence." -model = "gpt-5.5" +model = "gpt-5.6-sol" model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".claude/agents/security-engineer.md" diff --git a/.codex/agents/senior-game-artist.toml b/.codex/agents/senior-game-artist.toml index 11a7117..7b86f54 100644 --- a/.codex/agents/senior-game-artist.toml +++ b/.codex/agents/senior-game-artist.toml @@ -1,7 +1,7 @@ name = "senior_game_artist" description = "Owns senior game artist work: Define art direction, asset style, visual constraints, production quality bars, reference needs, and asset review notes. Produces Art direction, Asset list, Visual quality bar; hand off requests outside senior game artist ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "low" model_verbosity = "medium" # source_reference = ".codex/agents/senior-game-artist.toml" # source_hash = "fb3b1ec6a173ddac5a5c4cbc9b840d470d983b29b424fc553ef622c141d01d3e" diff --git a/.codex/agents/senior-game-designer.toml b/.codex/agents/senior-game-designer.toml index 4884543..c9c78da 100644 --- a/.codex/agents/senior-game-designer.toml +++ b/.codex/agents/senior-game-designer.toml @@ -1,6 +1,6 @@ name = "senior_game_designer" description = "Owns senior game designer work: Own high-level systems, progression, economy, core loops, balancing direction, and design cohesion across feature slices. Produces Systems design, Progression model, Acceptance criteria; hand off requests outside senior game designer ownership or missing verification evidence." -model = "gpt-5.5" +model = "gpt-5.6-sol" model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".codex/agents/senior-game-designer.toml" diff --git a/.codex/agents/sound-designer.toml b/.codex/agents/sound-designer.toml index 405de81..a7d22ff 100644 --- a/.codex/agents/sound-designer.toml +++ b/.codex/agents/sound-designer.toml @@ -1,7 +1,7 @@ name = "sound_designer" description = "Owns sound designer work: Specify sound effects, feedback cues, ambience, music triggers, implementation events, and audio verification notes for gameplay moments. Produces Sound cue list, Audio event notes, Verification checklist; hand off requests outside sound designer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-luna" +model_reasoning_effort = "low" model_verbosity = "medium" # source_reference = ".claude/agents/sound-designer.md" # source_hash = "4ebaef7c7069a5dd5a68ed12ca251035f0f9b2852fd29b9eca3ea2c5a4fdf088" diff --git a/.codex/agents/studio-orchestrator.toml b/.codex/agents/studio-orchestrator.toml index 3759443..d7bb631 100644 --- a/.codex/agents/studio-orchestrator.toml +++ b/.codex/agents/studio-orchestrator.toml @@ -1,7 +1,7 @@ name = "studio_orchestrator" description = "Owns studio orchestrator work: Route work between roles, maintain concise handoffs, protect project scope, identify blockers, and select the next bounded studio action without running hidden parallel work. Produces Studio handoff, Next-role routing, Blocker summary; hand off requests outside studio orchestrator ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".codex/agents/studio-orchestrator.toml" # source_hash = "cd8a03e5cc3890c988d77144d10650616d3eed1a172746dd0bc0b9d3650eb087" diff --git a/.codex/agents/systems-designer.toml b/.codex/agents/systems-designer.toml index e419771..cc1ecdd 100644 --- a/.codex/agents/systems-designer.toml +++ b/.codex/agents/systems-designer.toml @@ -1,7 +1,7 @@ name = "systems_designer" description = "Owns systems designer work: Design interconnected rules, progression loops, resource flows, balancing levers, edge cases, and acceptance tests for durable game systems. Produces Systems spec, Balance levers, Edge-case notes; hand off requests outside systems designer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/systems-designer.md" # source_hash = "b12973f4dce65c5add8e31fc570c4ece2b6f9855d2c89ce1645c0901a14adc17" diff --git a/.codex/agents/technical-artist.toml b/.codex/agents/technical-artist.toml index 37cc40f..498ab60 100644 --- a/.codex/agents/technical-artist.toml +++ b/.codex/agents/technical-artist.toml @@ -1,6 +1,6 @@ name = "technical_artist" description = "Owns technical artist work: Bridge art direction and runtime constraints for shaders, materials, import settings, optimization, and visual pipelines. Produces Art pipeline guidance, Asset constraints, Optimization notes; hand off requests outside technical artist ownership or missing verification evidence." -model = "gpt-5.5" +model = "gpt-5.6-terra" model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".claude/agents/technical-artist.md" diff --git a/.codex/agents/technical-director.toml b/.codex/agents/technical-director.toml index 0a37d4d..1e0940b 100644 --- a/.codex/agents/technical-director.toml +++ b/.codex/agents/technical-director.toml @@ -1,6 +1,6 @@ name = "technical_director" description = "Owns technical director work: Coordinate technical architecture, engineering tradeoffs, engine constraints, risk triage, validation gates, and discipline handoffs for game production. Produces Technical direction, Architecture tradeoffs, Risk and gate summary; hand off requests outside technical director ownership or missing verification evidence." -model = "gpt-5.5" +model = "gpt-5.6-sol" model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".claude/agents/technical-director.md" diff --git a/.codex/agents/tools-programmer.toml b/.codex/agents/tools-programmer.toml index 6a343f3..5f2e973 100644 --- a/.codex/agents/tools-programmer.toml +++ b/.codex/agents/tools-programmer.toml @@ -1,7 +1,7 @@ name = "tools_programmer" description = "Owns tools programmer work: Build editor, pipeline, automation, and developer workflow tools that reduce repeated production effort and failure-prone manual steps. Produces Tooling changes, Usage notes, Failure modes; hand off requests outside tools programmer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/tools-programmer.md" # source_hash = "1304ed30dc06506f043cbe6df33617a483988a1f73aedec1f9867bbc5de7d20b" diff --git a/.codex/agents/ue-blueprint-specialist.toml b/.codex/agents/ue-blueprint-specialist.toml index 7553689..9bf1b9c 100644 --- a/.codex/agents/ue-blueprint-specialist.toml +++ b/.codex/agents/ue-blueprint-specialist.toml @@ -1,7 +1,7 @@ name = "ue_blueprint_specialist" description = "Owns ue blueprint specialist work: Implement and review Blueprint graphs, Blueprint Function Libraries, Blueprint/C++ boundaries, naming, event graphs, and optimization hotspots. Keep visual scripting maintainable, data-driven, reviewable, and clear about when C++ ownership is required. Produces Blueprint architecture guidance, C++ boundary risks, Graph verification notes; hand off requests outside ue blueprint specialist ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/ue-blueprint-specialist.md" # source_hash = "0b5a78bf73a5131eae52cc3d9154f684ad2a8f6fb926d5b769eafa56a4471c40" diff --git a/.codex/agents/ue-gas-specialist.toml b/.codex/agents/ue-gas-specialist.toml index 71ca043..56b22be 100644 --- a/.codex/agents/ue-gas-specialist.toml +++ b/.codex/agents/ue-gas-specialist.toml @@ -1,6 +1,6 @@ name = "ue_gas_specialist" description = "Owns ue gas specialist work: Implement and review Gameplay Ability System abilities, Gameplay Effects, Attribute Sets, Gameplay Tags, Ability Tasks, costs, cooldowns, and prediction behavior. Keep GAS values data-driven, lifecycle-safe, replication-aware, and coordinated with gameplay/UI/network owners. Produces GAS architecture guidance, Attribute and prediction risks, Ability verification notes; hand off requests outside ue gas specialist ownership or missing verification evidence." -model = "gpt-5.5" +model = "gpt-5.6-terra" model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".claude/agents/ue-gas-specialist.md" diff --git a/.codex/agents/ue-replication-specialist.toml b/.codex/agents/ue-replication-specialist.toml index 9ac98b5..ab8b58a 100644 --- a/.codex/agents/ue-replication-specialist.toml +++ b/.codex/agents/ue-replication-specialist.toml @@ -1,6 +1,6 @@ name = "ue_replication_specialist" description = "Owns ue replication specialist work: Implement and review replicated properties, RepNotify, RPC validation, prediction/correction, relevancy, dormancy, net serialization, and bandwidth tuning. Separate gameplay ownership from network transport concerns and escalate GAS-specific prediction to GAS ownership when relevant. Produces Replication guidance, RPC and bandwidth risks, Network verification notes; hand off requests outside ue replication specialist ownership or missing verification evidence." -model = "gpt-5.5" +model = "gpt-5.6-terra" model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".claude/agents/ue-replication-specialist.md" diff --git a/.codex/agents/ue-umg-specialist.toml b/.codex/agents/ue-umg-specialist.toml index 1707af6..ab0a715 100644 --- a/.codex/agents/ue-umg-specialist.toml +++ b/.codex/agents/ue-umg-specialist.toml @@ -1,7 +1,7 @@ name = "ue_umg_specialist" description = "Owns ue umg specialist work: Implement and review UMG widgets, CommonUI screen stacks, data binding, input routing, focus behavior, HUD performance, and UI accessibility hooks. Coordinate Unreal UI implementation with UX specs, localization text expansion, controller/keyboard input, and gameplay events. Produces UMG and CommonUI guidance, Widget and input risks, UI verification notes; hand off requests outside ue umg specialist ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/ue-umg-specialist.md" # source_hash = "da7ea606752e25eef2c9ac46ccfab90a5186654fc9eb928895e1e90e42e1baee" diff --git a/.codex/agents/ui-programmer.toml b/.codex/agents/ui-programmer.toml index 96f3dce..1b5fcff 100644 --- a/.codex/agents/ui-programmer.toml +++ b/.codex/agents/ui-programmer.toml @@ -1,7 +1,7 @@ name = "ui_programmer" description = "Owns ui programmer work: Implement HUD, menu, input, state binding, responsive layout, accessibility hooks, and UI runtime behavior from designer-facing interaction specs. Produces UI implementation, State binding notes, Interaction verification; hand off requests outside ui programmer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/ui-programmer.md" # source_hash = "6cd29c2088724918b2680d3cc35c379276b7af11d6aa10ac990172280b1d5f48" diff --git a/.codex/agents/ui-ux-designer.toml b/.codex/agents/ui-ux-designer.toml index 2248a57..beecda8 100644 --- a/.codex/agents/ui-ux-designer.toml +++ b/.codex/agents/ui-ux-designer.toml @@ -1,7 +1,7 @@ name = "ui_ux_designer" description = "Owns ui ux designer work: Design interface flows, usability heuristics, HUD layout, onboarding, accessibility, menu interactions, and interaction risks. Produces UI flow review, HUD/menu recommendations, Accessibility notes; hand off requests outside ui ux designer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "low" model_verbosity = "medium" # source_reference = ".codex/agents/ui-ux-designer.toml" # source_hash = "f211da5110cd95d6a5a92d1835249eb7a4a398561cb3a23a71ed364cdb245ce9" diff --git a/.codex/agents/unity-addressables-specialist.toml b/.codex/agents/unity-addressables-specialist.toml index 2fafcf5..47cefaf 100644 --- a/.codex/agents/unity-addressables-specialist.toml +++ b/.codex/agents/unity-addressables-specialist.toml @@ -1,6 +1,6 @@ name = "unity_addressables_specialist" description = "Owns unity addressables specialist work: Implement and review Addressables groups, labels, async loading, release handles, content update flows, asset bundles, remote catalogs, and memory budgets. Surface asset ownership, CDN/package delivery, unload behavior, and runtime memory risks before asset loading changes expand. Produces Addressables guidance, Asset loading and memory risks, Content pipeline verification; hand off requests outside unity addressables specialist ownership or missing verification evidence." -model = "gpt-5.5" +model = "gpt-5.6-terra" model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".claude/agents/unity-addressables-specialist.md" diff --git a/.codex/agents/unity-dots-specialist.toml b/.codex/agents/unity-dots-specialist.toml index 4a6804f..e455f78 100644 --- a/.codex/agents/unity-dots-specialist.toml +++ b/.codex/agents/unity-dots-specialist.toml @@ -1,6 +1,6 @@ name = "unity_dots_specialist" description = "Owns unity dots specialist work: Implement and review DOTS/ECS architecture, component data, systems, Jobs, Burst constraints, hybrid rendering, and conversion boundaries. Separate data-oriented performance work from ordinary MonoBehaviour code and keep profiling evidence explicit. Produces DOTS architecture guidance, ECS and Burst risks, Performance verification notes; hand off requests outside unity dots specialist ownership or missing verification evidence." -model = "gpt-5.5" +model = "gpt-5.6-terra" model_reasoning_effort = "high" model_verbosity = "medium" # source_reference = ".claude/agents/unity-dots-specialist.md" diff --git a/.codex/agents/unity-shader-specialist.toml b/.codex/agents/unity-shader-specialist.toml index a3038d5..168a3b1 100644 --- a/.codex/agents/unity-shader-specialist.toml +++ b/.codex/agents/unity-shader-specialist.toml @@ -1,7 +1,7 @@ name = "unity_shader_specialist" description = "Owns unity shader specialist work: Implement and review Unity shader code, Shader Graph, VFX Graph, materials, lighting, SRP constraints, and visual effect handoffs. Keep shader and VFX recommendations tied to visual goals, render pipeline choice, GPU budgets, and inspectable scene/material files. Produces Unity shader guidance, VFX and rendering risks, Visual verification notes; hand off requests outside unity shader specialist ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/unity-shader-specialist.md" # source_hash = "fb211eb2185d99400904d3a7b6d6013548d0bfa6e9e5876c9e3ce0a71a7eab70" diff --git a/.codex/agents/unity-specialist.toml b/.codex/agents/unity-specialist.toml index 41536cd..d01ec0c 100644 --- a/.codex/agents/unity-specialist.toml +++ b/.codex/agents/unity-specialist.toml @@ -1,7 +1,7 @@ name = "unity_specialist" description = "Owns unity specialist work: Apply Unity-specific implementation and review guidance using only the active project's Unity reference pack and project files. Produces Unity guidance, Engine-specific risks, Verification notes; hand off requests outside unity specialist ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/unity-specialist.md" # source_hash = "81777b58e3a30f4a131025e01af6ac8fb42065214df6271e59df1aa11e5374e4" diff --git a/.codex/agents/unity-ui-specialist.toml b/.codex/agents/unity-ui-specialist.toml index b34c3bb..380858a 100644 --- a/.codex/agents/unity-ui-specialist.toml +++ b/.codex/agents/unity-ui-specialist.toml @@ -1,7 +1,7 @@ name = "unity_ui_specialist" description = "Owns unity ui specialist work: Implement and review Unity UI Toolkit, UGUI, UXML/USS, canvas hierarchy, data binding, navigation, responsive layout, and accessibility hooks. Coordinate UI implementation with UX specs, localization expansion, input modality, and platform conventions. Produces Unity UI guidance, Input and layout risks, UI verification notes; hand off requests outside unity ui specialist ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/unity-ui-specialist.md" # source_hash = "11b3e07dd14dda9c62560831cd1e9f6c03e61a43bde9c9371025590fd1b984c7" diff --git a/.codex/agents/unreal-specialist.toml b/.codex/agents/unreal-specialist.toml index ef412cf..e1522e7 100644 --- a/.codex/agents/unreal-specialist.toml +++ b/.codex/agents/unreal-specialist.toml @@ -1,7 +1,7 @@ name = "unreal_specialist" description = "Owns unreal specialist work: Apply Unreal-specific implementation and review guidance using only the active project's Unreal reference pack and project files. Produces Unreal guidance, Engine-specific risks, Verification notes; hand off requests outside unreal specialist ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-terra" +model_reasoning_effort = "medium" model_verbosity = "medium" # source_reference = ".claude/agents/unreal-specialist.md" # source_hash = "03794a0b048f1df4cd882ae73a964cd5368c629e00320e36051bc3d025a65c15" diff --git a/.codex/agents/world-builder.toml b/.codex/agents/world-builder.toml index f07325f..ae26235 100644 --- a/.codex/agents/world-builder.toml +++ b/.codex/agents/world-builder.toml @@ -1,7 +1,7 @@ name = "world_builder" description = "Owns world builder work: Define factions, places, rules, environmental storytelling hooks, collectible lore, and setting constraints that support level, narrative, and content production. Produces World bible slice, Environment hooks, Consistency constraints; hand off requests outside world builder ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-luna" +model_reasoning_effort = "low" model_verbosity = "medium" # source_reference = ".claude/agents/world-builder.md" # source_hash = "9e3399c5478ea2491bfc8e42745948b7aec4c2045ecd008a318d4f72a8fad2ea" diff --git a/.codex/agents/writer.toml b/.codex/agents/writer.toml index 985fff5..6c14e0f 100644 --- a/.codex/agents/writer.toml +++ b/.codex/agents/writer.toml @@ -1,7 +1,7 @@ name = "writer" description = "Owns writer work: Draft shippable dialogue, item text, barks, tutorial copy, lore snippets, and narrative-facing implementation notes that fit the project's tone and production constraints. Produces Draft copy, Tone notes, Implementation handoff; hand off requests outside writer ownership or missing verification evidence." -model = "gpt-5.5" -model_reasoning_effort = "high" +model = "gpt-5.6-luna" +model_reasoning_effort = "low" model_verbosity = "medium" # source_reference = ".claude/agents/writer.md" # source_hash = "8eafe2f3cd7f2c12acc0d8f93ed93bf638a915490ed5ca5a11721f1bf60f49d7" diff --git a/.codex/workflows/accessibility-doc.md b/.codex/workflows/accessibility-doc.md index f5ac728..4e3026a 100644 --- a/.codex/workflows/accessibility-doc.md +++ b/.codex/workflows/accessibility-doc.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low primary-agent: accessibility-specialist linked-skills: [cgs-standards-ui, cgs-ux-design] phase: plan diff --git a/.codex/workflows/analytics-setup.md b/.codex/workflows/analytics-setup.md index 747c100..c73523a 100644 --- a/.codex/workflows/analytics-setup.md +++ b/.codex/workflows/analytics-setup.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low primary-agent: data-scientist linked-skills: [cgs-standards-gameplay, cgs-vertical-slice] phase: plan diff --git a/.codex/workflows/architecture-decision.md b/.codex/workflows/architecture-decision.md index 927b716..e7810d5 100644 --- a/.codex/workflows/architecture-decision.md +++ b/.codex/workflows/architecture-decision.md @@ -1,5 +1,5 @@ --- -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high primary-agent: technical-director linked-skills: [cgs-architecture-decision, cgs-vertical-slice] diff --git a/.codex/workflows/architecture-review.md b/.codex/workflows/architecture-review.md index 9b52265..cbf7dda 100644 --- a/.codex/workflows/architecture-review.md +++ b/.codex/workflows/architecture-review.md @@ -1,5 +1,5 @@ --- -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high primary-agent: technical-director linked-skills: [cgs-architecture-review, cgs-vertical-slice] diff --git a/.codex/workflows/art-bible.md b/.codex/workflows/art-bible.md index dafa558..bbea47b 100644 --- a/.codex/workflows/art-bible.md +++ b/.codex/workflows/art-bible.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: senior-game-artist linked-skills: [cgs-art-bible, cgs-standards-gameplay] phase: plan diff --git a/.codex/workflows/art-direction.md b/.codex/workflows/art-direction.md index f29a671..fcdad0b 100644 --- a/.codex/workflows/art-direction.md +++ b/.codex/workflows/art-direction.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low primary-agent: senior-game-artist linked-skills: [cgs-standards-gameplay, cgs-vertical-slice] phase: plan diff --git a/.codex/workflows/asset-audit.md b/.codex/workflows/asset-audit.md index 197150c..fb5acc5 100644 --- a/.codex/workflows/asset-audit.md +++ b/.codex/workflows/asset-audit.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium primary-agent: senior-game-artist linked-skills: [cgs-asset-audit, cgs-content-audit] phase: review diff --git a/.codex/workflows/asset-spec.md b/.codex/workflows/asset-spec.md index 5eec81b..747bbc4 100644 --- a/.codex/workflows/asset-spec.md +++ b/.codex/workflows/asset-spec.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium primary-agent: senior-game-artist linked-skills: [cgs-asset-spec, cgs-art-bible] phase: plan diff --git a/.codex/workflows/balance-check.md b/.codex/workflows/balance-check.md index da46a77..96ea538 100644 --- a/.codex/workflows/balance-check.md +++ b/.codex/workflows/balance-check.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: economy-designer linked-skills: [cgs-balance-check, cgs-map-systems] phase: review diff --git a/.codex/workflows/brainstorm.md b/.codex/workflows/brainstorm.md index 799efa2..a224a5b 100644 --- a/.codex/workflows/brainstorm.md +++ b/.codex/workflows/brainstorm.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: creative-director linked-skills: [cgs-brainstorm, cgs-vertical-slice] phase: plan diff --git a/.codex/workflows/bug-report.md b/.codex/workflows/bug-report.md index a2c81ff..a5c3d23 100644 --- a/.codex/workflows/bug-report.md +++ b/.codex/workflows/bug-report.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium primary-agent: qa-playtester linked-skills: [cgs-bug-report, cgs-bug-triage] phase: review diff --git a/.codex/workflows/bugfix.md b/.codex/workflows/bugfix.md index 66d8ede..af7729b 100644 --- a/.codex/workflows/bugfix.md +++ b/.codex/workflows/bugfix.md @@ -1,6 +1,6 @@ --- -model: gpt-5.4 -model_reasoning_effort: medium +model: gpt-5.6-terra +model_reasoning_effort: high primary-agent: gameplay-programmer linked-skills: [cgs-bugfix] phase: implement diff --git a/.codex/workflows/changelog.md b/.codex/workflows/changelog.md index 10182a7..469cc73 100644 --- a/.codex/workflows/changelog.md +++ b/.codex/workflows/changelog.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: low primary-agent: release-manager linked-skills: [cgs-changelog, cgs-team-release] phase: ship diff --git a/.codex/workflows/code-review.md b/.codex/workflows/code-review.md index 4787462..cf1aac5 100644 --- a/.codex/workflows/code-review.md +++ b/.codex/workflows/code-review.md @@ -1,5 +1,5 @@ --- -model: gpt-5.5 +model: gpt-5.6-terra model_reasoning_effort: high primary-agent: technical-director linked-skills: [cgs-code-review, cgs-tech-debt] diff --git a/.codex/workflows/consistency-check.md b/.codex/workflows/consistency-check.md index f562342..504cfce 100644 --- a/.codex/workflows/consistency-check.md +++ b/.codex/workflows/consistency-check.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium primary-agent: studio-orchestrator linked-skills: [cgs-consistency-check, cgs-propagate-design-change] phase: review diff --git a/.codex/workflows/control-manifest.md b/.codex/workflows/control-manifest.md index ce2d2f3..3c5460d 100644 --- a/.codex/workflows/control-manifest.md +++ b/.codex/workflows/control-manifest.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium primary-agent: ui-ux-designer linked-skills: [cgs-create-control-manifest, cgs-standards-ui] phase: plan diff --git a/.codex/workflows/create-architecture.md b/.codex/workflows/create-architecture.md index 3406cbd..3488111 100644 --- a/.codex/workflows/create-architecture.md +++ b/.codex/workflows/create-architecture.md @@ -1,5 +1,5 @@ --- -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high primary-agent: technical-director linked-skills: [cgs-create-architecture, cgs-architecture-review] diff --git a/.codex/workflows/create-epics.md b/.codex/workflows/create-epics.md index aa1ba13..d28242c 100644 --- a/.codex/workflows/create-epics.md +++ b/.codex/workflows/create-epics.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: producer linked-skills: [cgs-create-epics, cgs-vertical-slice] phase: plan diff --git a/.codex/workflows/create-stories.md b/.codex/workflows/create-stories.md index f24013b..2790038 100644 --- a/.codex/workflows/create-stories.md +++ b/.codex/workflows/create-stories.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: producer linked-skills: [cgs-create-stories, cgs-vertical-slice] phase: plan diff --git a/.codex/workflows/design-review-concept.md b/.codex/workflows/design-review-concept.md index 3dbb9f3..7119da5 100644 --- a/.codex/workflows/design-review-concept.md +++ b/.codex/workflows/design-review-concept.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-sol +model_reasoning_effort: medium primary-agent: senior-game-designer linked-skills: [cgs-design-review, cgs-quick-design] phase: review diff --git a/.codex/workflows/design-review.md b/.codex/workflows/design-review.md index dbca959..d09b9df 100644 --- a/.codex/workflows/design-review.md +++ b/.codex/workflows/design-review.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-sol +model_reasoning_effort: medium primary-agent: senior-game-designer linked-skills: [cgs-design-review, cgs-review-all-gdds] phase: review diff --git a/.codex/workflows/design-spec.md b/.codex/workflows/design-spec.md index 4d02007..3b7a20a 100644 --- a/.codex/workflows/design-spec.md +++ b/.codex/workflows/design-spec.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: senior-game-designer linked-skills: [cgs-standards-gameplay, cgs-vertical-slice] phase: plan diff --git a/.codex/workflows/design-system.md b/.codex/workflows/design-system.md index b707708..920bc92 100644 --- a/.codex/workflows/design-system.md +++ b/.codex/workflows/design-system.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: systems-designer linked-skills: [cgs-design-system, cgs-standards-gameplay] phase: plan diff --git a/.codex/workflows/engine-setup.md b/.codex/workflows/engine-setup.md index df4a2b4..9b59d04 100644 --- a/.codex/workflows/engine-setup.md +++ b/.codex/workflows/engine-setup.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium primary-agent: technical-director linked-skills: [cgs-setup-engine, cgs-standards-gameplay] phase: plan diff --git a/.codex/workflows/entity-inventory.md b/.codex/workflows/entity-inventory.md index 37132c3..e937727 100644 --- a/.codex/workflows/entity-inventory.md +++ b/.codex/workflows/entity-inventory.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium primary-agent: systems-designer linked-skills: [cgs-map-systems, cgs-design-system] phase: plan diff --git a/.codex/workflows/game-concept.md b/.codex/workflows/game-concept.md index bc39466..3d6e050 100644 --- a/.codex/workflows/game-concept.md +++ b/.codex/workflows/game-concept.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-sol +model_reasoning_effort: medium primary-agent: creative-director linked-skills: [cgs-brainstorm, cgs-quick-design] phase: plan diff --git a/.codex/workflows/game-feel-tuning.md b/.codex/workflows/game-feel-tuning.md index 3176747..29646d0 100644 --- a/.codex/workflows/game-feel-tuning.md +++ b/.codex/workflows/game-feel-tuning.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: game-feel-designer linked-skills: [cgs-standards-gameplay, cgs-vertical-slice] phase: review diff --git a/.codex/workflows/handoff.md b/.codex/workflows/handoff.md index 192bada..ae2c092 100644 --- a/.codex/workflows/handoff.md +++ b/.codex/workflows/handoff.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium primary-agent: studio-orchestrator linked-skills: [cgs-standards-gameplay, cgs-vertical-slice] phase: plan diff --git a/.codex/workflows/hotfix.md b/.codex/workflows/hotfix.md index 0d5b66d..88a7307 100644 --- a/.codex/workflows/hotfix.md +++ b/.codex/workflows/hotfix.md @@ -1,6 +1,6 @@ --- -model: gpt-5.4 -model_reasoning_effort: medium +model: gpt-5.6-terra +model_reasoning_effort: high primary-agent: gameplay-programmer linked-skills: [cgs-hotfix, cgs-bugfix] phase: review diff --git a/.codex/workflows/implement.md b/.codex/workflows/implement.md index ea4b152..798fbd7 100644 --- a/.codex/workflows/implement.md +++ b/.codex/workflows/implement.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: gameplay-programmer linked-skills: [cgs-dev-story, cgs-standards-gameplay] phase: implement diff --git a/.codex/workflows/launch-checklist.md b/.codex/workflows/launch-checklist.md index 06e95f8..5c2f058 100644 --- a/.codex/workflows/launch-checklist.md +++ b/.codex/workflows/launch-checklist.md @@ -1,5 +1,5 @@ --- -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high primary-agent: release-manager linked-skills: [cgs-launch-checklist, cgs-release-checklist] diff --git a/.codex/workflows/localization-plan.md b/.codex/workflows/localization-plan.md index 51eee18..8dfefe0 100644 --- a/.codex/workflows/localization-plan.md +++ b/.codex/workflows/localization-plan.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: localization-lead linked-skills: [cgs-standards-gameplay, cgs-vertical-slice] phase: plan diff --git a/.codex/workflows/map-systems.md b/.codex/workflows/map-systems.md index e023428..74879f9 100644 --- a/.codex/workflows/map-systems.md +++ b/.codex/workflows/map-systems.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: systems-designer linked-skills: [cgs-map-systems, cgs-design-system] phase: plan diff --git a/.codex/workflows/market-analysis.md b/.codex/workflows/market-analysis.md index fec7898..b7d6927 100644 --- a/.codex/workflows/market-analysis.md +++ b/.codex/workflows/market-analysis.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low primary-agent: market-analyst linked-skills: [cgs-standards-gameplay, cgs-vertical-slice] phase: plan diff --git a/.codex/workflows/onboard.md b/.codex/workflows/onboard.md index aeaaa21..f2b36bc 100644 --- a/.codex/workflows/onboard.md +++ b/.codex/workflows/onboard.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium primary-agent: studio-orchestrator linked-skills: [cgs-onboard, cgs-vertical-slice] phase: plan diff --git a/.codex/workflows/patch-notes.md b/.codex/workflows/patch-notes.md index 4826ae6..a5076f1 100644 --- a/.codex/workflows/patch-notes.md +++ b/.codex/workflows/patch-notes.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: low primary-agent: release-manager linked-skills: [cgs-patch-notes, cgs-team-release] phase: ship diff --git a/.codex/workflows/perf-profile.md b/.codex/workflows/perf-profile.md index 860f93e..c2380b3 100644 --- a/.codex/workflows/perf-profile.md +++ b/.codex/workflows/perf-profile.md @@ -1,6 +1,6 @@ --- -model: gpt-5.4 -model_reasoning_effort: medium +model: gpt-5.6-terra +model_reasoning_effort: high primary-agent: performance-analyst linked-skills: [cgs-perf-profile, cgs-bugfix] phase: review diff --git a/.codex/workflows/playtest-polish.md b/.codex/workflows/playtest-polish.md index e3d5b49..8393ed8 100644 --- a/.codex/workflows/playtest-polish.md +++ b/.codex/workflows/playtest-polish.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: qa-playtester linked-skills: [cgs-playtest-report, cgs-smoke-check] phase: review diff --git a/.codex/workflows/playtest.md b/.codex/workflows/playtest.md index 05f7781..95454d0 100644 --- a/.codex/workflows/playtest.md +++ b/.codex/workflows/playtest.md @@ -1,5 +1,5 @@ --- -model: gpt-5.4 +model: gpt-5.6-terra model_reasoning_effort: medium primary-agent: qa-playtester linked-skills: [cgs-standards-gameplay, cgs-bugfix] diff --git a/.codex/workflows/production-milestone.md b/.codex/workflows/production-milestone.md index 8f698ff..c2ecd05 100644 --- a/.codex/workflows/production-milestone.md +++ b/.codex/workflows/production-milestone.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: producer linked-skills: [cgs-standards-gameplay, cgs-vertical-slice] phase: plan diff --git a/.codex/workflows/prototype.md b/.codex/workflows/prototype.md index 99a61dd..000aa08 100644 --- a/.codex/workflows/prototype.md +++ b/.codex/workflows/prototype.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: producer linked-skills: [cgs-prototype, cgs-vertical-slice] phase: plan diff --git a/.codex/workflows/qa-plan.md b/.codex/workflows/qa-plan.md index 4f6c79c..16439d1 100644 --- a/.codex/workflows/qa-plan.md +++ b/.codex/workflows/qa-plan.md @@ -1,5 +1,5 @@ --- -model: gpt-5.4 +model: gpt-5.6-terra model_reasoning_effort: medium primary-agent: qa-playtester linked-skills: [cgs-qa-plan, cgs-bugfix] diff --git a/.codex/workflows/regression-suite.md b/.codex/workflows/regression-suite.md index 82de499..6294027 100644 --- a/.codex/workflows/regression-suite.md +++ b/.codex/workflows/regression-suite.md @@ -1,6 +1,6 @@ --- -model: gpt-5.4 -model_reasoning_effort: medium +model: gpt-5.6-terra +model_reasoning_effort: high primary-agent: qa-playtester linked-skills: [cgs-regression-suite, cgs-bugfix] phase: review diff --git a/.codex/workflows/release-checklist.md b/.codex/workflows/release-checklist.md index 4f3913c..539547a 100644 --- a/.codex/workflows/release-checklist.md +++ b/.codex/workflows/release-checklist.md @@ -1,5 +1,5 @@ --- -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high primary-agent: release-manager linked-skills: [cgs-release-checklist, cgs-vertical-slice] diff --git a/.codex/workflows/retrospective.md b/.codex/workflows/retrospective.md index 70b3e04..0328638 100644 --- a/.codex/workflows/retrospective.md +++ b/.codex/workflows/retrospective.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: low primary-agent: producer linked-skills: [cgs-retrospective, cgs-sprint-status] phase: review diff --git a/.codex/workflows/review-all-gdds.md b/.codex/workflows/review-all-gdds.md index 5e0363c..a82b07b 100644 --- a/.codex/workflows/review-all-gdds.md +++ b/.codex/workflows/review-all-gdds.md @@ -1,5 +1,5 @@ --- -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high primary-agent: senior-game-designer linked-skills: [cgs-review-all-gdds, cgs-consistency-check] diff --git a/.codex/workflows/review.md b/.codex/workflows/review.md index d1edbca..0328c02 100644 --- a/.codex/workflows/review.md +++ b/.codex/workflows/review.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium primary-agent: qa-playtester linked-skills: [cgs-standards-gameplay, cgs-vertical-slice] phase: review diff --git a/.codex/workflows/scope-check.md b/.codex/workflows/scope-check.md index 303570f..020a6cc 100644 --- a/.codex/workflows/scope-check.md +++ b/.codex/workflows/scope-check.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: producer linked-skills: [cgs-scope-check, cgs-gate-check] phase: review diff --git a/.codex/workflows/security-audit.md b/.codex/workflows/security-audit.md index 98cd631..aabc1fb 100644 --- a/.codex/workflows/security-audit.md +++ b/.codex/workflows/security-audit.md @@ -1,5 +1,5 @@ --- -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high primary-agent: security-engineer linked-skills: [cgs-security-audit, cgs-vertical-slice] diff --git a/.codex/workflows/ship-check.md b/.codex/workflows/ship-check.md index bff8c4a..a9ded48 100644 --- a/.codex/workflows/ship-check.md +++ b/.codex/workflows/ship-check.md @@ -1,5 +1,5 @@ --- -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high primary-agent: release-manager linked-skills: [cgs-standards-gameplay, cgs-vertical-slice] diff --git a/.codex/workflows/sprint-plan.md b/.codex/workflows/sprint-plan.md index f6861c2..e292acc 100644 --- a/.codex/workflows/sprint-plan.md +++ b/.codex/workflows/sprint-plan.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: producer linked-skills: [cgs-sprint-plan, cgs-vertical-slice] phase: plan diff --git a/.codex/workflows/sprint-status.md b/.codex/workflows/sprint-status.md index 0ee911e..6651b05 100644 --- a/.codex/workflows/sprint-status.md +++ b/.codex/workflows/sprint-status.md @@ -1,5 +1,5 @@ --- -model: gpt-5.4-mini +model: gpt-5.6-luna model_reasoning_effort: low primary-agent: studio-orchestrator linked-skills: [cgs-sprint-status, cgs-vertical-slice] diff --git a/.codex/workflows/story-done.md b/.codex/workflows/story-done.md index db084de..de257c0 100644 --- a/.codex/workflows/story-done.md +++ b/.codex/workflows/story-done.md @@ -1,5 +1,5 @@ --- -model: gpt-5.4 +model: gpt-5.6-luna model_reasoning_effort: medium primary-agent: qa-playtester linked-skills: [cgs-story-done, cgs-bugfix] diff --git a/.codex/workflows/story-readiness.md b/.codex/workflows/story-readiness.md index e889799..90accad 100644 --- a/.codex/workflows/story-readiness.md +++ b/.codex/workflows/story-readiness.md @@ -1,5 +1,5 @@ --- -model: gpt-5.4 +model: gpt-5.6-luna model_reasoning_effort: medium primary-agent: producer linked-skills: [cgs-story-readiness, cgs-bugfix] diff --git a/.codex/workflows/team-feature.md b/.codex/workflows/team-feature.md index 7a1503c..385233e 100644 --- a/.codex/workflows/team-feature.md +++ b/.codex/workflows/team-feature.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: producer linked-skills: [cgs-create-epics, cgs-create-stories] phase: plan diff --git a/.codex/workflows/team-polish.md b/.codex/workflows/team-polish.md index 324663c..7103630 100644 --- a/.codex/workflows/team-polish.md +++ b/.codex/workflows/team-polish.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: low primary-agent: producer linked-skills: [cgs-team-polish, cgs-scope-check] phase: plan diff --git a/.codex/workflows/test-setup.md b/.codex/workflows/test-setup.md index 370b619..cb687fe 100644 --- a/.codex/workflows/test-setup.md +++ b/.codex/workflows/test-setup.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-luna +model_reasoning_effort: medium primary-agent: qa-playtester linked-skills: [cgs-test-setup, cgs-qa-plan] phase: plan diff --git a/.codex/workflows/ui-ux-review.md b/.codex/workflows/ui-ux-review.md index 362d5e4..61649f6 100644 --- a/.codex/workflows/ui-ux-review.md +++ b/.codex/workflows/ui-ux-review.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: ui-ux-designer linked-skills: [cgs-ui-ux-review, cgs-vertical-slice] phase: review diff --git a/.codex/workflows/ux-design.md b/.codex/workflows/ux-design.md index b7b6fd4..4eb99e1 100644 --- a/.codex/workflows/ux-design.md +++ b/.codex/workflows/ux-design.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: ui-ux-designer linked-skills: [cgs-ux-design, cgs-team-ui] phase: plan diff --git a/.codex/workflows/ux-review.md b/.codex/workflows/ux-review.md index d2acd29..73e07fd 100644 --- a/.codex/workflows/ux-review.md +++ b/.codex/workflows/ux-review.md @@ -1,6 +1,6 @@ --- -model: gpt-5.5 -model_reasoning_effort: high +model: gpt-5.6-terra +model_reasoning_effort: medium primary-agent: ui-ux-designer linked-skills: [cgs-ux-review, cgs-ui-ux-review] phase: review diff --git a/.codex/workflows/vertical-slice.md b/.codex/workflows/vertical-slice.md index 43fd25d..496d3ca 100644 --- a/.codex/workflows/vertical-slice.md +++ b/.codex/workflows/vertical-slice.md @@ -1,5 +1,5 @@ --- -model: gpt-5.5 +model: gpt-5.6-sol model_reasoning_effort: high primary-agent: producer linked-skills: [cgs-vertical-slice] diff --git a/AGENTS.md b/AGENTS.md index 75656a0..6abf111 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -27,6 +27,14 @@ Before broad inspection, use compact context helpers when available, then read o - `npm run ctx:workflow -- ` - `npm run ctx:changed` +## Model Routing + +- Prompt surfaces declare both a concrete model and a reasoning effort; runtime derives only the model tier from the centralized model policy. +- Choose the model family by capability and blast radius: Sol for difficult/high-risk architecture, security, release, or cross-system decisions; Terra for bounded implementation, QA, docs, and production work; Luna for simple, repetitive, mechanical, or objectively verifiable work. +- Choose reasoning effort independently for each prompt surface. Valid combinations include Luna/medium for cheap-but-careful review, Terra/low for bounded routine work, Terra/high for difficult implementation, and Sol/medium when Sol capability is useful without maximum reasoning. +- Explicit user or task-tier overrides change the model family but preserve the selected surface's reasoning effort unless an escalation policy deliberately raises it. +- Designated fallback models are fixed by family: Sol to GPT-5.5, Terra to GPT-5.4, and Luna to GPT-5.4-mini; fallback execution keeps the selected surface effort. + ## Coding Conventions - Prefer engine-native idioms and small, reviewable changes. diff --git a/README.md b/README.md index f721ad2..d26302b 100644 --- a/README.md +++ b/README.md @@ -235,15 +235,15 @@ Tasks, approvals, locks, context manifests, and run metadata live under `.codex/ ## Model Routing -Prompt surfaces declare exact Codex model policy in tracked files: +Prompt surfaces declare concrete Codex model and reasoning-effort policy in tracked files: -| Work type | Model | -|-----------|-------| -| Complex design, architecture, production, and release gates | `gpt-5.5` | -| Moderate implementation, QA, docs, bugfix, and bounded workflows | `gpt-5.4` | -| Simple help, status, classification, checklist, and lookup work | `gpt-5.4-mini` | +| Routing dimension | Policy | +|-------------------|--------| +| Model family | Use `gpt-5.6-sol` for difficult/high-risk architecture, security, release, or cross-system decisions; `gpt-5.6-terra` for bounded implementation, QA, docs, bugfix, and production work; `gpt-5.6-luna` for simple, repetitive, mechanical, checklist, status, and objectively verifiable work. | +| Reasoning effort | Choose `low`, `medium`, or `high` per surface independently from the model family. A prompt may use Luna/medium, Terra/low, Terra/high, Sol/medium, or Sol/high when that case warrants it. | +| Fallback model | Sol falls back to `gpt-5.5`, Terra to `gpt-5.4`, and Luna to `gpt-5.4-mini` while preserving the selected surface effort. | -Runtime dry-runs and run metadata expose the selected model and reasoning effort. Codex execution receives the exact selected model instead of a generic tier name. +Runtime dry-runs and run metadata expose the selected model and reasoning effort. Codex execution receives both values explicitly instead of a generic tier name. ## Documentation diff --git a/docs/user-guide.md b/docs/user-guide.md index 0eb9549..caad4c6 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -179,4 +179,4 @@ Inspect the relevant tracked template surface or project-state file before trust ## Codex prompt model routing -Prompt surfaces declare exact Codex model policy in tracked template files. Complex design, architecture, production, and release-gate surfaces use `gpt-5.5`; moderate implementation, QA, docs, bugfix, and bounded workflow surfaces use `gpt-5.4`; simple help, status, classification, checklist, and lookup surfaces use `gpt-5.4-mini`. Runtime dry-runs and run metadata expose the selected model and reasoning effort, and Codex execution receives the exact selected model instead of a generic tier name. +Prompt surfaces declare concrete Codex model and reasoning-effort policy in tracked template files. The model family (`gpt-5.6-sol`, `gpt-5.6-terra`, or `gpt-5.6-luna`) is chosen by capability and blast radius, while reasoning effort is chosen independently per prompt surface. For example, a cheap-but-careful routine review can use Luna/medium, bounded routine production work can use Terra/low, difficult implementation can use Terra/high, and Sol can use medium or high effort depending on risk. Runtime dry-runs and run metadata expose both selected values, and Codex execution receives the exact model and effort instead of a generic tier name. diff --git a/references/prompt-surface-uplift-matrix.json b/references/prompt-surface-uplift-matrix.json index 27e4a93..fa52cb7 100644 --- a/references/prompt-surface-uplift-matrix.json +++ b/references/prompt-surface-uplift-matrix.json @@ -6424,7 +6424,7 @@ "tests/template-repository-surfaces.test.ts", "tests/validation.test.ts" ], - "lineCount": 89, + "lineCount": 88, "upstreamLineCount": 359, "depthScore": 68, "metadata": { diff --git a/references/prompt-surface-uplift-matrix.md b/references/prompt-surface-uplift-matrix.md index 61252a2..46702a3 100644 --- a/references/prompt-surface-uplift-matrix.md +++ b/references/prompt-surface-uplift-matrix.md @@ -206,4 +206,4 @@ Decisions: adopt, adapt, merge, split, defer, out-of-scope. | skill | `.agents/skills/cgs-ui-ux-review/SKILL.md` | | defer | deferred | 78 | | 67 | yes | pass | `tests/template-repository-surfaces.test.ts`
`tests/validation.test.ts` | | skill | `.agents/skills/cgs-ux-design/SKILL.md` | `.claude/skills/ux-design/SKILL.md` | adapt | complete | 77 | 989 | 67 | yes | pass | `tests/template-repository-surfaces.test.ts`
`tests/validation.test.ts` | | skill | `.agents/skills/cgs-ux-review/SKILL.md` | `.claude/skills/ux-review/SKILL.md` | adapt | complete | 77 | 263 | 67 | yes | pass | `tests/template-repository-surfaces.test.ts`
`tests/validation.test.ts` | -| skill | `.agents/skills/cgs-vertical-slice/SKILL.md` | `.claude/skills/vertical-slice/SKILL.md` | adapt | complete | 89 | 359 | 68 | yes | pass | `tests/template-repository-surfaces.test.ts`
`tests/validation.test.ts` | +| skill | `.agents/skills/cgs-vertical-slice/SKILL.md` | `.claude/skills/vertical-slice/SKILL.md` | adapt | complete | 88 | 359 | 68 | yes | pass | `tests/template-repository-surfaces.test.ts`
`tests/validation.test.ts` | diff --git a/scripts/audit-prompt-surfaces.ts b/scripts/audit-prompt-surfaces.ts index 579dea6..7342deb 100644 --- a/scripts/audit-prompt-surfaces.ts +++ b/scripts/audit-prompt-surfaces.ts @@ -3,7 +3,6 @@ import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from import path from "node:path"; import { fileURLToPath } from "node:url"; import { - defaultModelPolicyForId, parsePromptSurfaceFrontmatter, parseTomlCommentArrayField, parseTomlCommentStringField, @@ -148,9 +147,7 @@ function rowFor(type: SurfaceRow["sourceType"], file: string): SurfaceRow { const source = type === "agent" ? upstreamAgentFor(localPath) : type === "skill" ? upstreamSkillFor(localPath) : undefined; const sourceBody = source ? readFileSync(source, "utf8") : undefined; const id = type === "skill" ? localPath.split("/")[2].replace(/^cgs-/, "") : path.basename(localPath).replace(/\.(toml|md)$/, ""); - const defaultPolicy = defaultModelPolicyForId(id); const metadata = type === "agent" ? tomlMetadata(body) : markdownMetadata(body); - if (!metadata.model && defaultPolicy.model) metadata.model = false; const depthScore = depthScoreFor(body); return { sourceType: type, diff --git a/src/agents.ts b/src/agents.ts index 1b43bdd..65139ec 100644 --- a/src/agents.ts +++ b/src/agents.ts @@ -5,6 +5,8 @@ import type { EngineConfigRegistry } from "./engines.js"; import { engineReferenceProjectPath, selectedEngineReferencePrompts } from "./engine-reference.js"; import { renderGeneratedSurfaceMetadata } from "./generated-surfaces.js"; import { projectRoleIdsForEngine, renderRoleContractSections, rolePackages, studioRoleIds, type StudioRoleId } from "./roles.js"; +import { packageAssetPath } from "./paths.js"; +import { isReasoningEffort, modelTierForModel, parseTomlStringField, type CodexModelName, type ReasoningEffort } from "./prompt-surface-metadata.js"; export function validateBaseAgents(): string[] { @@ -36,6 +38,7 @@ export const projectAgentsMdRequiredSections = [ "## Engine", "## Commands", "## Context Bootstrap", + "## Model Routing", "## Coding Conventions", "## Asset Conventions", "## Studio Roles", @@ -78,6 +81,15 @@ Before broad inspection, use compact context helpers when available, then read o - \`npm run ctx:workflow -- \` - \`npm run ctx:changed\` +## Model Routing + +- Prompt surfaces declare a concrete model; runtime derives its tier from the centralized model policy instead of inferring importance from names. +- Use Sol for important, high-risk, architectural, security, release, or cross-system decisions. +- Use Terra for routine implementation, testing, QA, documentation, and other bounded work. +- Use Luna only for trivial, mechanical, objectively verifiable work; escalate ambiguity or failed verification to Terra. +- Explicit user or task-tier overrides take precedence; otherwise use the selected agent or workflow tier. +- Fixed fallbacks are Sol to GPT-5.5 at xhigh reasoning, Terra to GPT-5.4 at high reasoning, and Luna to GPT-5.4-mini at low reasoning. + ## Coding Conventions - Prefer engine-native idioms. @@ -116,10 +128,20 @@ function tomlMultiline(value: string): string { return `"""\n${value.replace(/"""/g, '\"\"\"')}\n"""`; } +function trackedRoleModelTarget(role: StudioRoleId): { model: CodexModelName; effort: ReasoningEffort } { + const body = readFileSync(packageAssetPath(`.codex/agents/${role}.toml`), "utf8"); + const model = parseTomlStringField(body, "model"); + const effort = parseTomlStringField(body, "model_reasoning_effort"); + if (!modelTierForModel(model)) throw new Error(`${role} has an invalid or unregistered model`); + if (!isReasoningEffort(effort)) throw new Error(`${role} has an invalid or missing model reasoning effort`); + return { model: model as CodexModelName, effort }; +} + export function renderProjectCustomAgentToml(role: StudioRoleId, config: ProjectConfig, engines: EngineConfigRegistry): string { const pkg = rolePackages[role]; const engine = engines[config.project.engine]; const sourceInput = projectRolePromptSourceInput(role, config, engines); + const modelTarget = trackedRoleModelTarget(role); const body = [ `# generated-by: codex-game-studio`, `# surface: custom-agent`, @@ -129,7 +151,8 @@ export function renderProjectCustomAgentToml(role: StudioRoleId, config: Project "", `name = ${tomlString(role.replace(/-/g, "_"))}`, `description = ${tomlString(`Game development ${pkg.displayName} agent for ${role} tasks in this repository. Use for ${pkg.responsibilities.slice(0, 2).join(", ").toLowerCase()}.`)}`, - `model_reasoning_effort = "medium"`, + `model = "${modelTarget.model}"`, + `model_reasoning_effort = "${modelTarget.effort}"`, `developer_instructions = ${tomlMultiline([ `You are the ${pkg.displayName} role for ${config.project.name}.`, `Engine: ${engine.display_name} ${config.project.engine_version}.`, @@ -217,6 +240,7 @@ export function projectRolePromptSourceInput(role: StudioRoleId, config: Project })); return { role, + modelTarget: trackedRoleModelTarget(role), displayName: pkg.displayName, contextStrategy: pkg.contextStrategy, systemPrompt: pkg.systemPrompt, diff --git a/src/cli.ts b/src/cli.ts index e389040..fa346cc 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -23,6 +23,7 @@ import { renderWorkflowPrompt, workflowAliases, workflowRegistry, type WorkflowI import { createWorkflowTasks } from "./workflow-recipes.js"; import { isStudioRoleId, unknownStudioRoleMessage } from "./roles.js"; import type { ProjectStage, StudioMode } from "./studio-policy.js"; +import { isModelTier, type ModelTier } from "./prompt-surface-metadata.js"; const program = new Command(); @@ -34,6 +35,11 @@ function collectScope(value: string, previous: string[] = []): string[] { return [...previous, value]; } +function parseModelTier(value: string): ModelTier { + if (!isModelTier(value)) throw new Error(`Unsupported model tier: ${value}; use sol, terra, or luna`); + return value; +} + program.name("codex-game-studio").description("Codex Game Studio: a Codex-native game-development workflow layer").version("0.1.0"); const sha256Pattern = /^[a-f0-9]{64}$/i; @@ -307,6 +313,7 @@ program .option("--max-fix-passes ", "maximum automatic fix passes", "1") .option("--approved-by-user", "explicitly approve a guided-studio local override") .option("--constrained-sandbox", "use Codex workspace-write instead of the default full-access sandbox") + .option("--model-tier ", "override the selected surface model tier", parseModelTier) .action(async (role, objectiveParts: string[], opts) => { const verifyCommand = opts.verifyCommand ? { command: opts.verifyCommand as string, args: opts.verifyArg as string[] } : undefined; const result = prepareRun(role, { @@ -322,7 +329,8 @@ program fix: opts.fix, maxFixPasses: Number(opts.maxFixPasses), approvedByUser: opts.approvedByUser, - constrainedSandbox: opts.constrainedSandbox + constrainedSandbox: opts.constrainedSandbox, + modelTier: opts.modelTier }); console.log(result.output); if (opts.dryRun || opts.printPrompt) return; @@ -349,6 +357,7 @@ task .option("--workflow ", "source workflow id for this task") .option("--group ", "task group id") .option("--priority ", "task priority; higher values run earlier", "0") + .option("--model-tier ", "set the task's explicit model tier", parseModelTier) .option("--verify-command ", "structured verification command") .option("--verify-arg ", "structured verification argument; repeat for multiple args", (value, previous: string[] = []) => [...previous, value], []) .argument("") @@ -365,7 +374,8 @@ task dependencies: opts.dependsOn, workflowId: opts.workflow, groupId: opts.group, - priority: Number(opts.priority) + priority: Number(opts.priority), + runPolicy: opts.modelTier ? { modelTier: opts.modelTier } : undefined }); console.log(created.id); }); @@ -380,6 +390,7 @@ task .option("--approval-scope ", "approval diagnostic scope for task run objective hashing; repeat for multiple scopes", collectScope, []) .option("--approved-by-user", "explicitly approve a guided-studio local override") .option("--constrained-sandbox", "use Codex workspace-write instead of the default full-access sandbox") + .option("--model-tier ", "override the task or workflow model tier", parseModelTier) .argument("") .action(async (taskId: string, opts) => { const projectRoot = resolveTaskProject(opts.project); @@ -390,7 +401,8 @@ task maxFixPasses: Number(opts.maxFixPasses), approvedByUser: opts.approvedByUser, constrainedSandbox: opts.constrainedSandbox, - approvalScope: opts.approvalScope + approvalScope: opts.approvalScope, + modelTier: opts.modelTier }); console.log(opts.dryRun ? result.prepared.output : `${result.prepared.output}\n${result.lifecycle?.output ?? ""}\n${taskId} ${result.task.status}`); if (result.lifecycle?.finalStatus === "blocked") process.exitCode = 1; @@ -408,6 +420,7 @@ task .option("--approval-scope ", "approval diagnostic scope for task run objective hashing; repeat for multiple scopes", collectScope, []) .option("--approved-by-user", "explicitly approve a guided-studio local override") .option("--constrained-sandbox", "use Codex workspace-write instead of the default full-access sandbox") + .option("--model-tier ", "override all selected task model tiers", parseModelTier) .argument("[task-id...]", "specific task ids to orchestrate") .action(async (taskIds: string[], opts) => { const result = await orchestrateTasks({ @@ -421,7 +434,8 @@ task maxFixPasses: Number(opts.maxFixPasses), approvedByUser: opts.approvedByUser, constrainedSandbox: opts.constrainedSandbox, - approvalScope: opts.approvalScope + approvalScope: opts.approvalScope, + modelTier: opts.modelTier }); console.log(result.output); if (result.status === "blocked") process.exitCode = 1; diff --git a/src/codex-runtime.ts b/src/codex-runtime.ts index c3c3f4c..b6ba39e 100644 --- a/src/codex-runtime.ts +++ b/src/codex-runtime.ts @@ -1,12 +1,13 @@ import { spawn, spawnSync } from "node:child_process"; import type { CodexSandboxMode } from "./codex-session.js"; -import type { CodexModelName } from "./prompt-surface-metadata.js"; +import type { CodexModelName, ReasoningEffort } from "./prompt-surface-metadata.js"; export type CodexRuntimeOptions = { projectRoot: string; sandbox?: CodexSandboxMode; codexBin?: string; model?: CodexModelName; + reasoningEffort?: ReasoningEffort; }; export type CodexAvailability = { @@ -23,6 +24,15 @@ export type CodexExecutionResult = { stdout: string; stderr: string; error?: Error; + executedModel?: CodexModelName; + fallbackFromModel?: CodexModelName; +}; + +export type CodexFallbackExecution = { + primary: { command: string; args: string[] }; + fallback: { command: string; args: string[] }; + primaryModel: CodexModelName; + fallbackModel: CodexModelName; }; export function resolveCodexCommand(env: NodeJS.ProcessEnv | Record = process.env): string { @@ -30,7 +40,16 @@ export function resolveCodexCommand(env: NodeJS.ProcessEnv | Record { @@ -81,6 +100,23 @@ export async function executeCodexCommand( }); } +export function isModelUnavailableResult(result: CodexExecutionResult): boolean { + if (!result.error && result.status === 0) return false; + const message = `${result.error?.message ?? ""}\n${result.stderr}\n${result.stdout}`.toLowerCase(); + return /(?:model|access).*(?:not available|unavailable|not supported|unsupported|not found|unknown|no access|does not have access)|(?:not available|unavailable|not supported|unsupported|not found|unknown).*(?:model)/.test(message); +} + +export async function executeCodexCommandWithFallback( + route: CodexFallbackExecution, + input: string, + options: { cwd: string; timeoutMs?: number } +): Promise { + const primary = await executeCodexCommand(route.primary, input, options); + if (!isModelUnavailableResult(primary)) return { ...primary, executedModel: route.primaryModel }; + const fallback = await executeCodexCommand(route.fallback, input, options); + return { ...fallback, executedModel: route.fallbackModel, fallbackFromModel: route.primaryModel }; +} + export async function executeCodexPrompt(prompt: string, options: CodexRuntimeOptions): Promise { const command = options.codexBin ?? resolveCodexCommand(); const args = buildCodexExecArgs(options); diff --git a/src/customization.ts b/src/customization.ts index d22173a..6915d18 100644 --- a/src/customization.ts +++ b/src/customization.ts @@ -12,6 +12,7 @@ export const customRoleSchema = z.object({ displayName: z.string().min(1), promptFile: relativePathSchema, contextStrategy: z.enum(["minimal", "focused", "broad"]), + modelTier: z.enum(["sol", "terra", "luna"]).default("terra"), phase: z.enum(["plan", "implement", "review", "ship"]).default("plan"), expectedOutputs: z.array(z.string().min(1)).min(1), reviewChecklist: z.array(z.string().min(1)).min(1), @@ -33,6 +34,7 @@ export const customWorkflowSchema = z.object({ id: z.string().min(1), role: z.string().min(1), phase: z.enum(["plan", "implement", "review", "ship"]), + modelTier: z.enum(["sol", "terra", "luna"]).default("terra"), objective: z.string().min(1), file: relativePathSchema, contextFiles: z.array(relativePathSchema).default([]), diff --git a/src/orchestrator.ts b/src/orchestrator.ts index 475fd28..f91b0ef 100644 --- a/src/orchestrator.ts +++ b/src/orchestrator.ts @@ -5,6 +5,8 @@ import { resolveProjectRoot } from "./paths.js"; import { executeRunLifecycle, prepareRun, type PreparedRun, type RunLifecycleResult } from "./runner.js"; import { acquireTaskLocks, releaseTaskLocks, taskLockKeys, type AcquiredTaskLock } from "./orchestrator-locks.js"; import { getTask, readTaskStore, writeTaskStore, type StudioTask, type StudioTaskStatus, type TaskStore } from "./tasks.js"; +import type { ModelTier } from "./prompt-surface-metadata.js"; +import { workflowRegistry, type WorkflowId } from "./workflows.js"; export type OrchestrateOptions = { project: string; @@ -19,6 +21,7 @@ export type OrchestrateOptions = { constrainedSandbox?: boolean; approvalScope?: string[]; codexBin?: string; + modelTier?: ModelTier; }; export type OrchestrationResult = { @@ -216,7 +219,9 @@ export async function orchestrateTasks(options: OrchestrateOptions): Promise = { - complex: "gpt-5.5", - moderate: "gpt-5.4", - simple: "gpt-5.4-mini" +const policyByTier: Record = { + sol: { + tier: "sol", + primary: { model: "gpt-5.6-sol", effort: "high" }, + fallback: { model: "gpt-5.5", effort: "high" } + }, + terra: { + tier: "terra", + primary: { model: "gpt-5.6-terra", effort: "medium" }, + fallback: { model: "gpt-5.4", effort: "medium" } + }, + luna: { + tier: "luna", + primary: { model: "gpt-5.6-luna", effort: "low" }, + fallback: { model: "gpt-5.4-mini", effort: "low" } + } }; -export function codexModelForComplexity(complexity: PromptSurfaceComplexity): CodexModelName { - return modelByComplexity[complexity]; +export function isModelTier(value: string | undefined): value is ModelTier { + return !!value && (modelTiers as readonly string[]).includes(value); +} + +export function modelPolicyForTier(tier: ModelTier): ModelTierPolicy { + const policy = policyByTier[tier]; + return { tier: policy.tier, primary: { ...policy.primary }, fallback: { ...policy.fallback } }; +} + +export function modelTierForModel(model: string | undefined): ModelTier | undefined { + if (!model) return undefined; + return modelTiers.find((tier) => { + const policy = policyByTier[tier]; + return policy.primary.model === model || policy.fallback.model === model; + }); +} + +export function resolveModelRoute(options: { surfaceModel: CodexModelName; surfaceEffort: ReasoningEffort; requestedTier?: ModelTier }): ResolvedModelRoute { + const surfaceTier = modelTierForModel(options.surfaceModel); + if (!surfaceTier) throw new Error(`Codex model is not assigned to a routing tier: ${options.surfaceModel}`); + const surfaceRoute = modelPolicyForTier(surfaceTier); + if (!options.requestedTier) { + return { + ...surfaceRoute, + primary: { model: options.surfaceModel, effort: options.surfaceEffort }, + fallback: { ...surfaceRoute.fallback, effort: options.surfaceEffort }, + source: "surface" + }; + } + const overrideRoute = modelPolicyForTier(options.requestedTier); + return { + ...overrideRoute, + primary: { ...overrideRoute.primary, effort: options.surfaceEffort }, + fallback: { ...overrideRoute.fallback, effort: options.surfaceEffort }, + source: "explicit-tier" + }; } export function isCodexModelName(value: string | undefined): value is CodexModelName { @@ -68,7 +130,9 @@ export function isReasoningEffort(value: string | undefined): value is Reasoning export function validateModelPolicy(policy: ModelPolicy): { valid: boolean; issues: string[] } { const issues: string[] = []; if (!isCodexModelName(policy.model)) issues.push(`invalid Codex model: ${policy.model}`); - if (policy.model_reasoning_effort && !isReasoningEffort(policy.model_reasoning_effort)) issues.push(`invalid reasoning effort: ${policy.model_reasoning_effort}`); + if (!policy.model_reasoning_effort) issues.push("missing reasoning effort"); + else if (!isReasoningEffort(policy.model_reasoning_effort)) issues.push(`invalid reasoning effort: ${policy.model_reasoning_effort}`); + if (isCodexModelName(policy.model) && !modelTierForModel(policy.model)) issues.push(`Codex model is not assigned to a routing tier: ${policy.model}`); return { valid: issues.length === 0, issues }; } @@ -121,19 +185,6 @@ export function parseTomlCommentArrayField(body: string, key: string): string[] return match[1].split(",").map((part) => part.trim().replace(/^['\"]|['\"]$/g, "")).filter(Boolean); } -export function inferComplexityFromId(id: string): PromptSurfaceComplexity { - if (/help|status|changelog|patch-notes|smoke-check|project-stage-detect|standards/.test(id)) return "simple"; - if (/bugfix|hotfix|qa|test|regression|playtest|localize|perf|code-review|dev-story|task|story/.test(id)) return "moderate"; - return "complex"; -} - -export function defaultModelPolicyForId(id: string): { model: CodexModelName; effort: ReasoningEffort } { - const complexity = inferComplexityFromId(id); - if (complexity === "complex") return { model: "gpt-5.5", effort: "high" }; - if (complexity === "moderate") return { model: "gpt-5.4", effort: "medium" }; - return { model: "gpt-5.4-mini", effort: "low" }; -} - function discoveryQuality(diagnostics: PromptDiscoveryDiagnostic[]): PromptDiscoveryQuality { return { valid: diagnostics.length === 0, diagnostics }; } diff --git a/src/runner.ts b/src/runner.ts index b95d781..8271b92 100644 --- a/src/runner.ts +++ b/src/runner.ts @@ -1,8 +1,8 @@ -import { mkdirSync, readFileSync, realpathSync, writeFileSync } from "node:fs"; +import { existsSync, mkdirSync, readFileSync, realpathSync, writeFileSync } from "node:fs"; import path from "node:path"; import { explainApprovalMismatch, normalizeApprovalScope, readApprovalStore, type ApprovalMismatchDiagnostic } from "./approvals.js"; import { renderProjectRolePrompt } from "./agents.js"; -import { buildCodexExecArgs, executeCodexCommand, resolveCodexCommand, type CodexExecutionResult } from "./codex-runtime.js"; +import { buildCodexExecArgs, executeCodexCommandWithFallback, resolveCodexCommand, type CodexExecutionResult } from "./codex-runtime.js"; import { renderCodexPrompt } from "./codex-prompts.js"; import { createCodexStudioSession, type VerificationCommand } from "./codex-session.js"; import type { ProjectConfig } from "./config.js"; @@ -11,7 +11,18 @@ import { loadEngineConfigs } from "./engines.js"; import { engineReferenceContextRequests } from "./engine-reference.js"; import { stripGeneratedMetadata } from "./generated-surfaces.js"; import { renderContextContract } from "./prompt-context.js"; -import { defaultModelPolicyForId, type CodexModelName, type ReasoningEffort } from "./prompt-surface-metadata.js"; +import { + modelPolicyForTier, + modelTierForModel, + isReasoningEffort, + parseTomlStringField, + resolveModelRoute, + type CodexModelName, + type ModelSelectionSource, + type ModelTier, + type ReasoningEffort, + type ResolvedModelRoute +} from "./prompt-surface-metadata.js"; import { readStudioProject, type StudioProjectState } from "./projects.js"; import { isRoleAvailableForEngine, isStudioRoleId, unknownStudioRoleMessage, type StudioRoleId } from "./roles.js"; import { customPhaseForRun, customTemplateIdsForRole, findCustomRole, renderCustomRolePrompt } from "./customization.js"; @@ -37,7 +48,9 @@ export type RunOptions = { approvedByUser?: boolean; constrainedSandbox?: boolean; noWrite?: boolean; - model?: CodexModelName; + modelTier?: ModelTier; + surfaceModel?: CodexModelName; + surfaceEffort?: ReasoningEffort; }; export type PreparedRun = { @@ -50,14 +63,22 @@ export type PreparedRun = { contextFiles: string[]; verification?: VerificationCommand; codexCommand: { command: string; args: string[]; display: string }; + fallbackCodexCommand: { command: string; args: string[]; display: string }; reviewCodexCommand?: { command: string; args: string[]; display: string }; + reviewFallbackCodexCommand?: { command: string; args: string[]; display: string }; + fixCodexCommand?: { command: string; args: string[]; display: string }; + fixFallbackCodexCommand?: { command: string; args: string[]; display: string }; output: string; reviewPrompt?: string; fixPrompt?: string; maxFixPasses: number; eligibility: StudioRunEligibility; + selectedModelTier: ModelTier; selectedModel: CodexModelName; modelReasoningEffort: ReasoningEffort; + fallbackModel: CodexModelName; + fallbackReasoningEffort: ReasoningEffort; + modelSelectionSource: ModelSelectionSource; }; export type ReviewResult = { @@ -95,13 +116,69 @@ function requireTask(task: string): string { return task.trim(); } -export function codexExecInvocation(projectRoot: string, codexBin = resolveCodexCommand(), sandbox: CodexSandboxMode = "danger-full-access", model?: CodexModelName): { command: string; args: string[]; display: string } { - const args = buildCodexExecArgs({ projectRoot, sandbox, model }); +function modelFromCommand(command: { args: string[] }): CodexModelName { + const index = command.args.indexOf("--model"); + const model = index >= 0 ? command.args[index + 1] : undefined; + const tier = modelPolicyForTier("terra"); + const supported = [ + modelPolicyForTier("sol").primary.model, + modelPolicyForTier("sol").fallback.model, + tier.primary.model, + tier.fallback.model, + modelPolicyForTier("luna").primary.model, + modelPolicyForTier("luna").fallback.model + ]; + if (!model || !supported.includes(model as CodexModelName)) throw new Error("Codex command does not contain a supported model"); + return model as CodexModelName; +} + +function roleSurfaceTarget(projectRoot: string, role: StudioRoleId): { model: CodexModelName; effort: ReasoningEffort } { + const file = path.join(projectRoot, ".codex", "agents", `${role}.toml`); + if (!existsSync(file)) return modelPolicyForTier("terra").primary; + const body = readFileSync(file, "utf8"); + const model = parseTomlStringField(body, "model"); + const effort = parseTomlStringField(body, "model_reasoning_effort"); + if (!modelTierForModel(model)) throw new Error(`${role} has an invalid or unregistered model`); + if (!isReasoningEffort(effort)) throw new Error(`${role} has an invalid or missing model reasoning effort`); + return { model: model as CodexModelName, effort }; +} + +function reviewRouteFor(route: ResolvedModelRoute): ResolvedModelRoute { + const review = modelPolicyForTier(route.tier === "sol" ? "sol" : "terra"); + const effort = route.primary.effort === "low" || route.primary.effort === "minimal" ? "medium" : route.primary.effort; + return { ...review, primary: { ...review.primary, effort }, fallback: { ...review.fallback, effort }, source: "surface" }; +} + +function fixRouteFor(route: ResolvedModelRoute): ResolvedModelRoute { + if (route.tier !== "luna") return route; + const fix = modelPolicyForTier("terra"); + const effort = route.primary.effort === "low" || route.primary.effort === "minimal" ? "medium" : route.primary.effort; + return { ...fix, primary: { ...fix.primary, effort }, fallback: { ...fix.fallback, effort }, source: "verification-escalation" }; +} + +export function codexExecInvocation( + projectRoot: string, + codexBin = resolveCodexCommand(), + sandbox: CodexSandboxMode = "danger-full-access", + model?: CodexModelName, + reasoningEffort?: ReasoningEffort +): { command: string; args: string[]; display: string } { + const args = buildCodexExecArgs({ projectRoot, sandbox, model, reasoningEffort }); return { command: codexBin, args, display: [codexBin, ...args.map((arg) => JSON.stringify(arg))].join(" ") }; } export async function executeCodexPromptForRun(run: PreparedRun, prompt: string, command = run.codexCommand): Promise { - return await executeCodexCommand(command, prompt, { cwd: run.projectRoot }); + const isReview = command === run.reviewCodexCommand; + const isFix = command === run.fixCodexCommand; + const fallback = isReview ? run.reviewFallbackCodexCommand : isFix ? run.fixFallbackCodexCommand : run.fallbackCodexCommand; + if (!fallback) throw new Error("Codex fallback command is missing"); + const primaryModel = isReview || isFix ? modelFromCommand(command) : run.selectedModel; + const fallbackModel = isReview || isFix ? modelFromCommand(fallback) : run.fallbackModel; + return await executeCodexCommandWithFallback( + { primary: command, fallback, primaryModel, fallbackModel }, + prompt, + { cwd: run.projectRoot } + ); } export async function executeCodexRun(run: PreparedRun): Promise { @@ -144,11 +221,22 @@ function configFromStudio(studio: StudioProjectState): ProjectConfig { }; } -function renderRuntimeContextBlock(role: StudioRoleId, studio: StudioProjectState, task: string): string { +function renderRuntimeContextBlock(role: StudioRoleId, studio: StudioProjectState, task: string, route: ResolvedModelRoute): string { const projectRolePrompt = stripGeneratedMetadata(renderProjectRolePrompt(role, configFromStudio(studio), loadEngineConfigs(packageAssetPath("engine_configs")))); const templateBodies = renderSelectedTemplates(selectTemplates(role, task)); - const modelPolicy = defaultModelPolicyForId(role); - const modelBlock = ["## Runtime Model Policy", "", `- Selected model: ${modelPolicy.model}`, `- Reasoning effort: ${modelPolicy.effort}`, `- Source surface: .codex/agents/${role}.toml`, "- Output contract: summary, changed files or proposed files, verification evidence, blockers, risks, and handoff owner when needed.", "- Stop condition: do not continue when required project state, write approval, or verification evidence is missing.", ""].join("\n"); + const modelBlock = [ + "## Runtime Model Policy", + "", + `- Selected tier: ${route.tier}`, + `- Selected model: ${route.primary.model}`, + `- Reasoning effort: ${route.primary.effort}`, + `- Designated fallback: ${route.fallback.model} (${route.fallback.effort})`, + `- Selection source: ${route.source}`, + `- Source surface: .codex/agents/${role}.toml`, + "- Output contract: summary, changed files or proposed files, verification evidence, blockers, risks, and handoff owner when needed.", + "- Stop condition: do not continue when required project state, write approval, or verification evidence is missing.", + "" + ].join("\n"); return ["", `# Runtime Role Context: ${role}`, "", modelBlock, projectRolePrompt.trim(), templateBodies, ""].join("\n"); } @@ -255,7 +343,8 @@ function reviewFailed(review: ReviewPassResult | undefined): boolean { } function formatCodex(label: string, result: CodexExecutionResult): string[] { - const lines = [`${label}: exit=${result.status ?? "null"}${result.signal ? ` signal=${result.signal}` : ""}${result.error ? ` error=${result.error.message}` : ""}`]; + const route = result.executedModel ? ` model=${result.executedModel}${result.fallbackFromModel ? ` fallback-from=${result.fallbackFromModel}` : ""}` : ""; + const lines = [`${label}: exit=${result.status ?? "null"}${result.signal ? ` signal=${result.signal}` : ""}${result.error ? ` error=${result.error.message}` : ""}${route}`]; if (result.stdout.trim()) lines.push(`${label} stdout:\n${result.stdout.trim()}`); if (result.stderr.trim()) lines.push(`${label} stderr:\n${result.stderr.trim()}`); return lines; @@ -310,7 +399,7 @@ export async function executeRunLifecycle(run: PreparedRun): Promise extends infer T ? NonNullable : never, options: RunOptions, cwd: string, roleInput: string, task: string, projectRoot: string): PreparedRun { const studio = readStudioProject(projectRoot); + const customPolicy = modelPolicyForTier(role.modelTier); + const modelRoute = resolveModelRoute({ surfaceModel: customPolicy.primary.model, surfaceEffort: options.surfaceEffort ?? customPolicy.primary.effort, requestedTier: options.modelTier }); + const reviewRoute = reviewRouteFor(modelRoute); + const fixRoute = fixRouteFor(modelRoute); const artifactRefs = (options.includeArtifact ?? []).map((artifact) => { const { full, display } = safeArtifact(projectRoot, artifact); return { full, display }; @@ -390,6 +483,9 @@ function prepareCustomRun(role: ReturnType extends infer `Sandbox: ${eligibility.codexSandbox}`, `Write Policy: ${eligibility.writePolicy}`, `File Edits: ${eligibility.allowFileEdits ? "allowed" : "not allowed"}`, + `Model Tier: ${modelRoute.tier}`, + `Model: ${modelRoute.primary.model} (${modelRoute.primary.effort})`, + `Fallback: ${modelRoute.fallback.model} (${modelRoute.fallback.effort})`, "", "## Context Files", contextFilesForRun.length ? contextFilesForRun.map((file) => `- ${file}`).join("\n") : "- None selected", @@ -428,7 +524,7 @@ function prepareCustomRun(role: ReturnType extends infer entries: reviewSelection.entries, readOnlyReview: true }) - })}${renderRuntimeContextBlock("qa-playtester", studio, reviewObjective)}` + })}${renderRuntimeContextBlock("qa-playtester", studio, reviewObjective, reviewRoute)}` : undefined; const fixContract = renderContextContract({ session: { phase: "fix", writePolicy: eligibility.writePolicy, sandbox: eligibility.codexSandbox, allowFileEdits: eligibility.allowFileEdits }, @@ -452,6 +548,10 @@ function prepareCustomRun(role: ReturnType extends infer `Sandbox: ${eligibility.codexSandbox}`, `Write Policy: ${eligibility.writePolicy}`, `File Edits: ${eligibility.allowFileEdits ? "allowed" : "not allowed"}`, + `Model Tier: ${fixRoute.tier}`, + `Model: ${fixRoute.primary.model} (${fixRoute.primary.effort})`, + `Fallback: ${fixRoute.fallback.model} (${fixRoute.fallback.effort})`, + `Selection Source: ${fixRoute.source}`, "", fixContract, "", @@ -470,23 +570,30 @@ function prepareCustomRun(role: ReturnType extends infer const runDir = path.join(projectRoot, ".codex", "runs", `${runId}-${role.id}`); const promptPath = path.join(runDir, "prompt.md"); const metadataPath = path.join(runDir, "metadata.json"); - const modelPolicy = defaultModelPolicyForId(role.id); - const selectedModel = options.model ?? modelPolicy.model; - const modelReasoningEffort = modelPolicy.effort; + const selectedModelTier = modelRoute.tier; + const selectedModel = modelRoute.primary.model; + const modelReasoningEffort = modelRoute.primary.effort; + const fallbackModel = modelRoute.fallback.model; + const fallbackReasoningEffort = modelRoute.fallback.effort; + const modelSelectionSource = modelRoute.source; if (!options.printPrompt && !options.dryRun && !options.noWrite) { mkdirSync(runDir, { recursive: true }); writeFileSync(promptPath, prompt); writeFileSync( metadataPath, - `${JSON.stringify({ timestamp: new Date().toISOString(), product: "codex-game-studio", project: path.relative(cwd, projectRoot) || ".", role: role.id, task, customRole: true, prompt_chars: prompt.length, prompt_cache_path: path.relative(cwd, promptPath), selectedModel, modelReasoningEffort, review: Boolean(reviewPrompt), fix: Boolean(fixPrompt), max_fix_passes: maxFixPasses, writePolicy: eligibility.writePolicy, allowFileEdits: eligibility.allowFileEdits, codexSandbox: eligibility.codexSandbox, eligibility }, null, 2)}\n` + `${JSON.stringify({ timestamp: new Date().toISOString(), product: "codex-game-studio", project: path.relative(cwd, projectRoot) || ".", role: role.id, task, customRole: true, prompt_chars: prompt.length, prompt_cache_path: path.relative(cwd, promptPath), selectedModelTier, selectedModel, modelReasoningEffort, fallbackModel, fallbackReasoningEffort, modelSelectionSource, review: Boolean(reviewPrompt), fix: Boolean(fixPrompt), max_fix_passes: maxFixPasses, writePolicy: eligibility.writePolicy, allowFileEdits: eligibility.allowFileEdits, codexSandbox: eligibility.codexSandbox, eligibility }, null, 2)}\n` ); } const codexBin = options.codexBin ?? resolveCodexCommand(); - const codexCommand = codexExecInvocation(projectRoot, codexBin, eligibility.codexSandbox, selectedModel); - const reviewCodexCommand = reviewPrompt ? codexExecInvocation(projectRoot, codexBin, "read-only", "gpt-5.4") : undefined; + const codexCommand = codexExecInvocation(projectRoot, codexBin, eligibility.codexSandbox, selectedModel, modelReasoningEffort); + const fallbackCodexCommand = codexExecInvocation(projectRoot, codexBin, eligibility.codexSandbox, fallbackModel, fallbackReasoningEffort); + const reviewCodexCommand = reviewPrompt ? codexExecInvocation(projectRoot, codexBin, "read-only", reviewRoute.primary.model, reviewRoute.primary.effort) : undefined; + const reviewFallbackCodexCommand = reviewPrompt ? codexExecInvocation(projectRoot, codexBin, "read-only", reviewRoute.fallback.model, reviewRoute.fallback.effort) : undefined; + const fixCodexCommand = fixPrompt ? codexExecInvocation(projectRoot, codexBin, eligibility.codexSandbox, fixRoute.primary.model, fixRoute.primary.effort) : undefined; + const fixFallbackCodexCommand = fixPrompt ? codexExecInvocation(projectRoot, codexBin, eligibility.codexSandbox, fixRoute.fallback.model, fixRoute.fallback.effort) : undefined; const dryRunExtra = [ - reviewPrompt ? `\n\nReview Codex command: ${reviewCodexCommand?.display}\n\nReview prompt:\n${reviewPrompt}\n\nExpected review JSON schema: {"blockers":[],"warnings":[],"summary":"","needsFix":false}` : "", - fixPrompt ? `\n\nFix prompt (max passes: ${maxFixPasses}):\n${fixPrompt}` : "" + reviewPrompt ? `\n\nReview Codex command: ${reviewCodexCommand?.display}\nReview fallback: ${reviewFallbackCodexCommand?.display}\n\nReview prompt:\n${reviewPrompt}\n\nExpected review JSON schema: {"blockers":[],"warnings":[],"summary":"","needsFix":false}` : "", + fixPrompt ? `\n\nFix Codex command: ${fixCodexCommand?.display}\nFix fallback: ${fixFallbackCodexCommand?.display}\nFix prompt (max passes: ${maxFixPasses}):\n${fixPrompt}` : "" ].join(""); const approvalDiagnostic = options.dryRun && studio.studioMode !== "fast-prototype" @@ -495,12 +602,13 @@ function prepareCustomRun(role: ReturnType extends infer { projectStage: studio.mode, studioMode: studio.studioMode, approvalScopes } ) : ""; + const modelSummary = `Selected tier: ${selectedModelTier}\nSelected model: ${selectedModel} (${modelReasoningEffort})\nFallback model: ${fallbackModel} (${fallbackReasoningEffort})\nSelection source: ${modelSelectionSource}`; const output = options.printPrompt ? prompt : options.dryRun - ? `Prompt cache (not written): ${promptPath}\nMetadata (not written): ${metadataPath}\nSelected model: ${selectedModel} (${modelReasoningEffort})\n${formatEligibility(eligibility)}\nContext files:\n${contextFilesForRun.map((f) => `- ${f}`).join("\n")}\nCodex command: ${codexCommand.display}${approvalDiagnostic ? `\n\n${approvalDiagnostic}` : ""}${dryRunExtra}` - : `Prompt cache written: ${promptPath}\nSelected model: ${selectedModel} (${modelReasoningEffort})\n${formatEligibility(eligibility)}\nExecuting Codex: ${codexCommand.display}`; - return { prompt, promptPath, metadataPath, projectRoot, role: roleInput, task, contextFiles: contextFilesForRun, verification: options.verifyCommand, codexCommand, reviewCodexCommand, output, reviewPrompt, fixPrompt, maxFixPasses, eligibility, selectedModel, modelReasoningEffort }; + ? `Prompt cache (not written): ${promptPath}\nMetadata (not written): ${metadataPath}\n${modelSummary}\n${formatEligibility(eligibility)}\nContext files:\n${contextFilesForRun.map((f) => `- ${f}`).join("\n")}\nCodex command: ${codexCommand.display}\nFallback command: ${fallbackCodexCommand.display}${approvalDiagnostic ? `\n\n${approvalDiagnostic}` : ""}${dryRunExtra}` + : `Prompt cache written: ${promptPath}\n${modelSummary}\n${formatEligibility(eligibility)}\nExecuting Codex: ${codexCommand.display}`; + return { prompt, promptPath, metadataPath, projectRoot, role: roleInput, task, contextFiles: contextFilesForRun, verification: options.verifyCommand, codexCommand, fallbackCodexCommand, reviewCodexCommand, reviewFallbackCodexCommand, fixCodexCommand, fixFallbackCodexCommand, output, reviewPrompt, fixPrompt, maxFixPasses, eligibility, selectedModelTier, selectedModel, modelReasoningEffort, fallbackModel, fallbackReasoningEffort, modelSelectionSource }; } export function prepareRun(roleInput: string, options: RunOptions, cwd = process.cwd()): PreparedRun { @@ -511,6 +619,10 @@ export function prepareRun(roleInput: string, options: RunOptions, cwd = process if (!isStudioRoleId(roleInput)) throw new Error(unknownStudioRoleMessage(roleInput)); const role = roleInput as StudioRoleId; const studio = readStudioProject(projectRoot); + const roleTarget = roleSurfaceTarget(projectRoot, role); + const modelRoute = resolveModelRoute({ surfaceModel: options.surfaceModel ?? roleTarget.model, surfaceEffort: options.surfaceEffort ?? roleTarget.effort, requestedTier: options.modelTier }); + const reviewRoute = reviewRouteFor(modelRoute); + const fixRoute = fixRouteFor(modelRoute); if (!isRoleAvailableForEngine(role, studio.engine)) { throw new Error(`${role} is not available for ${studio.engine} projects; use one of ${studio.roles.join(", ")} for this project.`); } @@ -569,7 +681,7 @@ export function prepareRun(roleInput: string, options: RunOptions, cwd = process writePolicy: eligibility.writePolicy, eligibility }); - const runtimeContextBlock = renderRuntimeContextBlock(role, studio, task); + const runtimeContextBlock = renderRuntimeContextBlock(role, studio, task, modelRoute); const prompt = `${renderCodexPrompt({ ...session, contextContract: renderContextContract({ @@ -609,7 +721,7 @@ export function prepareRun(roleInput: string, options: RunOptions, cwd = process entries: reviewSelection.entries, readOnlyReview: true }) - })}${renderRuntimeContextBlock("qa-playtester", studio, reviewObjective)}` + })}${renderRuntimeContextBlock("qa-playtester", studio, reviewObjective, reviewRoute)}` : undefined; const fixSession = createCodexStudioSession({ projectRoot, @@ -636,15 +748,18 @@ export function prepareRun(roleInput: string, options: RunOptions, cwd = process entries: contextSelection.entries, blockers: ["Review and verification blockers will be supplied at execution time."] }) - })}${runtimeContextBlock}` + })}${renderRuntimeContextBlock(role, studio, task, fixRoute)}` : undefined; const runId = `${new Date().toISOString().replace(/[-:.TZ]/g, "").slice(0, 17)}-${process.pid}-${++runSequence}`; const runDir = path.join(projectRoot, ".codex", "runs", `${runId}-${role}`); const promptPath = path.join(runDir, "prompt.md"); const metadataPath = path.join(runDir, "metadata.json"); - const modelPolicy = defaultModelPolicyForId(role); - const selectedModel = options.model ?? modelPolicy.model; - const modelReasoningEffort = modelPolicy.effort; + const selectedModelTier = modelRoute.tier; + const selectedModel = modelRoute.primary.model; + const modelReasoningEffort = modelRoute.primary.effort; + const fallbackModel = modelRoute.fallback.model; + const fallbackReasoningEffort = modelRoute.fallback.effort; + const modelSelectionSource = modelRoute.source; if (!options.printPrompt && !options.dryRun && !options.noWrite) { mkdirSync(runDir, { recursive: true }); writeFileSync(promptPath, prompt); @@ -659,8 +774,12 @@ export function prepareRun(roleInput: string, options: RunOptions, cwd = process task, prompt_chars: prompt.length, prompt_cache_path: path.relative(cwd, promptPath), + selectedModelTier, selectedModel, modelReasoningEffort, + fallbackModel, + fallbackReasoningEffort, + modelSelectionSource, review: Boolean(reviewPrompt), fix: Boolean(fixPrompt), max_fix_passes: maxFixPasses, @@ -675,11 +794,15 @@ export function prepareRun(roleInput: string, options: RunOptions, cwd = process ); } const codexBin = options.codexBin ?? resolveCodexCommand(); - const codexCommand = codexExecInvocation(projectRoot, codexBin, eligibility.codexSandbox, selectedModel); - const reviewCodexCommand = reviewPrompt ? codexExecInvocation(projectRoot, codexBin, "read-only", "gpt-5.4") : undefined; + const codexCommand = codexExecInvocation(projectRoot, codexBin, eligibility.codexSandbox, selectedModel, modelReasoningEffort); + const fallbackCodexCommand = codexExecInvocation(projectRoot, codexBin, eligibility.codexSandbox, fallbackModel, fallbackReasoningEffort); + const reviewCodexCommand = reviewPrompt ? codexExecInvocation(projectRoot, codexBin, "read-only", reviewRoute.primary.model, reviewRoute.primary.effort) : undefined; + const reviewFallbackCodexCommand = reviewPrompt ? codexExecInvocation(projectRoot, codexBin, "read-only", reviewRoute.fallback.model, reviewRoute.fallback.effort) : undefined; + const fixCodexCommand = fixPrompt ? codexExecInvocation(projectRoot, codexBin, eligibility.codexSandbox, fixRoute.primary.model, fixRoute.primary.effort) : undefined; + const fixFallbackCodexCommand = fixPrompt ? codexExecInvocation(projectRoot, codexBin, eligibility.codexSandbox, fixRoute.fallback.model, fixRoute.fallback.effort) : undefined; const dryRunExtra = [ - reviewPrompt ? `\n\nReview Codex command: ${reviewCodexCommand?.display}\n\nReview prompt:\n${reviewPrompt}\n\nExpected review JSON schema: {"blockers":[],"warnings":[],"summary":"","needsFix":false}` : "", - fixPrompt ? `\n\nFix prompt (max passes: ${maxFixPasses}):\n${fixPrompt}` : "" + reviewPrompt ? `\n\nReview Codex command: ${reviewCodexCommand?.display}\nReview fallback: ${reviewFallbackCodexCommand?.display}\n\nReview prompt:\n${reviewPrompt}\n\nExpected review JSON schema: {"blockers":[],"warnings":[],"summary":"","needsFix":false}` : "", + fixPrompt ? `\n\nFix Codex command: ${fixCodexCommand?.display}\nFix fallback: ${fixFallbackCodexCommand?.display}\nFix prompt (max passes: ${maxFixPasses}):\n${fixPrompt}` : "" ].join(""); const approvalDiagnostic = options.dryRun && studio.studioMode !== "fast-prototype" @@ -690,10 +813,11 @@ export function prepareRun(roleInput: string, options: RunOptions, cwd = process : ""; const eligibilitySummary = formatEligibility(eligibility); const nativeSurfaceSummary = [`Codex custom agent: .codex/agents/${role}.toml`, "Relevant skills:", "- .agents/skills/cgs-standards-gameplay/SKILL.md", "- .agents/skills/cgs-bugfix/SKILL.md"].join("\n"); + const modelSummary = `Selected tier: ${selectedModelTier}\nSelected model: ${selectedModel} (${modelReasoningEffort})\nFallback model: ${fallbackModel} (${fallbackReasoningEffort})\nSelection source: ${modelSelectionSource}`; const output = options.printPrompt ? prompt : options.dryRun - ? `Prompt cache (not written): ${promptPath}\nMetadata (not written): ${metadataPath}\nSelected model: ${selectedModel} (${modelReasoningEffort})\n${eligibilitySummary}\n${nativeSurfaceSummary}\nContext files:\n${contextFilesForRun.map((f) => `- ${f}`).join("\n")}\nCodex command: ${codexCommand.display}${approvalDiagnostic ? `\n\n${approvalDiagnostic}` : ""}${dryRunExtra}` - : `Prompt cache written: ${promptPath}\nSelected model: ${selectedModel} (${modelReasoningEffort})\n${eligibilitySummary}\nExecuting Codex: ${codexCommand.display}`; - return { prompt, promptPath, metadataPath, projectRoot, role, task, contextFiles: contextFilesForRun, verification: options.verifyCommand, codexCommand, reviewCodexCommand, output, reviewPrompt, fixPrompt, maxFixPasses, eligibility, selectedModel, modelReasoningEffort }; + ? `Prompt cache (not written): ${promptPath}\nMetadata (not written): ${metadataPath}\n${modelSummary}\n${eligibilitySummary}\n${nativeSurfaceSummary}\nContext files:\n${contextFilesForRun.map((f) => `- ${f}`).join("\n")}\nCodex command: ${codexCommand.display}\nFallback command: ${fallbackCodexCommand.display}${approvalDiagnostic ? `\n\n${approvalDiagnostic}` : ""}${dryRunExtra}` + : `Prompt cache written: ${promptPath}\n${modelSummary}\n${eligibilitySummary}\nExecuting Codex: ${codexCommand.display}`; + return { prompt, promptPath, metadataPath, projectRoot, role, task, contextFiles: contextFilesForRun, verification: options.verifyCommand, codexCommand, fallbackCodexCommand, reviewCodexCommand, reviewFallbackCodexCommand, fixCodexCommand, fixFallbackCodexCommand, output, reviewPrompt, fixPrompt, maxFixPasses, eligibility, selectedModelTier, selectedModel, modelReasoningEffort, fallbackModel, fallbackReasoningEffort, modelSelectionSource }; } diff --git a/src/tasks.ts b/src/tasks.ts index ee30ac7..dfdb7e0 100644 --- a/src/tasks.ts +++ b/src/tasks.ts @@ -7,7 +7,8 @@ import { resolveProjectRoot } from "./paths.js"; import { readStudioProject } from "./projects.js"; import { isStudioRoleId, type StudioRoleId } from "./roles.js"; import { executeRunLifecycle, prepareRun, type PreparedRun, type RunLifecycleResult } from "./runner.js"; -import type { CodexModelName, ReasoningEffort } from "./prompt-surface-metadata.js"; +import { isModelTier, type CodexModelName, type ModelTier, type ReasoningEffort } from "./prompt-surface-metadata.js"; +import { workflowRegistry, type WorkflowId } from "./workflows.js"; export type StudioTaskStatus = "ready" | "running" | "blocked" | "done" | "cancelled" | "skipped"; @@ -20,6 +21,7 @@ export type StudioTaskRunPolicy = { maxFixPasses?: number; review?: boolean; constrainedSandbox?: boolean; + modelTier?: ModelTier; }; export type StudioTask = { @@ -40,6 +42,7 @@ export type StudioTask = { updatedAt: string; lastRunId?: string; lastRunModel?: CodexModelName; + lastRunModelTier?: ModelTier; lastRunReasoningEffort?: ReasoningEffort; lastRunSurface?: string; }; @@ -59,6 +62,7 @@ export type ExecuteTaskRunOptions = { approvedByUser?: boolean; constrainedSandbox?: boolean; approvalScope?: string[]; + modelTier?: ModelTier; }; export type ExecuteTaskRunResult = { @@ -118,6 +122,8 @@ function normalizeTask(raw: RawTask, projectRoot: string, timestamp = migrationT const dependencies = (raw.dependencies ?? []).map(normalizeDependency); const notes = raw.notes ?? []; if (!Array.isArray(notes) || !notes.every((note) => typeof note === "string")) throw new Error(`Invalid task notes: ${raw.id}`); + if (raw.runPolicy?.modelTier !== undefined && !isModelTier(raw.runPolicy.modelTier)) throw new Error(`Invalid task model tier: ${raw.runPolicy.modelTier}`); + if (raw.lastRunModelTier !== undefined && !isModelTier(raw.lastRunModelTier)) throw new Error(`Invalid last run model tier: ${raw.lastRunModelTier}`); return { id: raw.id, title: raw.title, @@ -136,6 +142,7 @@ function normalizeTask(raw: RawTask, projectRoot: string, timestamp = migrationT updatedAt: raw.updatedAt ?? timestamp, lastRunId: raw.lastRunId, lastRunModel: raw.lastRunModel, + lastRunModelTier: raw.lastRunModelTier, lastRunReasoningEffort: raw.lastRunReasoningEffort, lastRunSurface: raw.lastRunSurface }; @@ -237,13 +244,14 @@ export function createTask( return task; } -export function updateTaskStatus(projectRoot: string, taskId: string, status: StudioTaskStatus, note?: string, updates: Partial> = {}): StudioTask { +export function updateTaskStatus(projectRoot: string, taskId: string, status: StudioTaskStatus, note?: string, updates: Partial> = {}): StudioTask { const store = readTaskStore(projectRoot); const task = getTask(store, taskId); task.status = status; task.updatedAt = nowIso(); if (updates.lastRunId) task.lastRunId = updates.lastRunId; if (updates.lastRunModel) task.lastRunModel = updates.lastRunModel; + if (updates.lastRunModelTier) task.lastRunModelTier = updates.lastRunModelTier; if (updates.lastRunReasoningEffort) task.lastRunReasoningEffort = updates.lastRunReasoningEffort; if (updates.lastRunSurface) task.lastRunSurface = updates.lastRunSurface; if (note?.trim()) task.notes.push(`${new Date().toISOString()} ${note.trim()}`); @@ -268,6 +276,7 @@ export function renderTaskRun(projectRoot: string, taskId: string): { task: Stud export async function executeTaskRun(projectRoot: string, taskId: string, options: ExecuteTaskRunOptions = {}): Promise { const task = getTask(readTaskStore(projectRoot), taskId); + const workflow = task.workflowId ? workflowRegistry[task.workflowId as WorkflowId] : undefined; const prepared = prepareRun( task.role, { @@ -284,17 +293,22 @@ export async function executeTaskRun(projectRoot: string, taskId: string, option maxFixPasses: options.maxFixPasses ?? task.runPolicy?.maxFixPasses, approvedByUser: options.approvedByUser, constrainedSandbox: options.constrainedSandbox ?? task.runPolicy?.constrainedSandbox, - approvalScope: options.approvalScope + approvalScope: options.approvalScope, + modelTier: options.modelTier ?? task.runPolicy?.modelTier, + surfaceModel: workflow?.model, + surfaceEffort: workflow?.modelReasoningEffort }, process.cwd() ); if (options.dryRun || options.noWrite) return { task, prepared }; - updateTaskStatus(projectRoot, taskId, "running", `Codex task run started with ${prepared.selectedModel} (${prepared.modelReasoningEffort})`, { lastRunModel: prepared.selectedModel, lastRunReasoningEffort: prepared.modelReasoningEffort, lastRunSurface: `.codex/agents/${task.role}.toml` }); + updateTaskStatus(projectRoot, taskId, "running", `Codex task run started with ${prepared.selectedModel} (${prepared.modelReasoningEffort})`, { lastRunModelTier: prepared.selectedModelTier, lastRunModel: prepared.selectedModel, lastRunReasoningEffort: prepared.modelReasoningEffort, lastRunSurface: `.codex/agents/${task.role}.toml` }); try { const lifecycle = await executeRunLifecycle(prepared); const finalStatus: StudioTaskStatus = lifecycle.finalStatus === "done" ? "done" : "blocked"; - const updated = updateTaskStatus(projectRoot, taskId, finalStatus, `Codex task run finished: ${lifecycle.finalStatus}`); + const executedModel = lifecycle.implementation.executedModel ?? prepared.selectedModel; + const executedEffort = executedModel === prepared.fallbackModel ? prepared.fallbackReasoningEffort : prepared.modelReasoningEffort; + const updated = updateTaskStatus(projectRoot, taskId, finalStatus, `Codex task run finished: ${lifecycle.finalStatus}`, { lastRunModel: executedModel, lastRunReasoningEffort: executedEffort }); return { task: updated, prepared, lifecycle }; } catch (error) { const updated = updateTaskStatus(projectRoot, taskId, "blocked", `Codex task run failed uncertainly: ${(error as Error).message}`); diff --git a/src/validation.ts b/src/validation.ts index 1073cf4..c5689db 100644 --- a/src/validation.ts +++ b/src/validation.ts @@ -272,7 +272,7 @@ export function validateTemplateSurfaces(root = process.cwd()): ValidationCheck[ checks.push(fail("template.AGENTS.exists", "AGENTS.md missing", agentsMd)); } else { const body = readFileSync(agentsMd, "utf8"); - checks.push(body.includes("template") && body.includes(".codex/agents") && !body.includes("NodeNext") && !body.includes("Truthmark Workflow") ? pass("template.AGENTS.game_facing", "AGENTS.md is game-facing", agentsMd) : fail("template.AGENTS.game_facing", "AGENTS.md must be game-facing template guidance", agentsMd)); + checks.push(body.includes("template") && body.includes(".codex/agents") && body.includes("## Model Routing") && !body.includes("NodeNext") && !body.includes("Truthmark Workflow") ? pass("template.AGENTS.game_facing", "AGENTS.md is game-facing", agentsMd) : fail("template.AGENTS.game_facing", "AGENTS.md must be game-facing template guidance with model routing", agentsMd)); } return checks; } diff --git a/src/workflows.ts b/src/workflows.ts index 695ceda..e23f625 100644 --- a/src/workflows.ts +++ b/src/workflows.ts @@ -11,7 +11,7 @@ import { evaluateStudioRunEligibility } from "./studio-policy.js"; import { engineReferenceContextRequests } from "./engine-reference.js"; import { renderSelectedTemplates, type TemplateId } from "./templates.js"; import { findCustomRole, findCustomWorkflow, projectRelativePath, renderCustomRolePrompt, type CustomWorkflowDefinition } from "./customization.js"; -import { defaultModelPolicyForId, type CodexModelName, type ReasoningEffort } from "./prompt-surface-metadata.js"; +import { isReasoningEffort, modelTierForModel, type CodexModelName, type ModelTier, type ReasoningEffort } from "./prompt-surface-metadata.js"; export type WorkflowCategory = | "onboarding-discovery" @@ -97,28 +97,32 @@ export type WorkflowDefinition = { templateIds?: TemplateId[]; cliAlias?: string; cliAliases?: string[]; + modelTier: ModelTier; model: CodexModelName; modelReasoningEffort: ReasoningEffort; }; -type WorkflowInput = Omit & { +type WorkflowInput = Omit & { extraContextFiles?: string[]; }; function workflow(input: WorkflowInput): WorkflowDefinition { - const modelPolicy = defaultModelPolicyForId(input.id); + const modelTier = modelTierForModel(input.model); + if (!modelTier) throw new Error(`Workflow ${input.id} has an invalid or unregistered model: ${input.model}`); + if (!isReasoningEffort(input.modelReasoningEffort)) throw new Error(`Workflow ${input.id} has an invalid or missing model reasoning effort`); return { ...input, file: `.codex/workflows/${input.id}.md`, contextFiles: ["AGENTS.md", ".codex/studio.json", `.codex/workflows/${input.id}.md`, ...(input.extraContextFiles ?? [])], - model: modelPolicy.model, - modelReasoningEffort: modelPolicy.effort + modelTier }; } export const workflowRegistry: Record = { "vertical-slice": workflow({ id: "vertical-slice", + model: "gpt-5.6-sol", + modelReasoningEffort: "high", role: "producer", phase: "plan", category: "implementation-planning", @@ -128,6 +132,8 @@ export const workflowRegistry: Record = { }), bugfix: workflow({ id: "bugfix", + model: "gpt-5.6-terra", + modelReasoningEffort: "high", role: "gameplay-programmer", phase: "implement", category: "release-hotfix", @@ -136,6 +142,8 @@ export const workflowRegistry: Record = { }), playtest: workflow({ id: "playtest", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "qa-playtester", phase: "review", category: "qa-testing", @@ -145,6 +153,8 @@ export const workflowRegistry: Record = { }), "market-analysis": workflow({ id: "market-analysis", + model: "gpt-5.6-terra", + modelReasoningEffort: "low", role: "market-analyst", phase: "plan", category: "onboarding-discovery", @@ -156,6 +166,8 @@ export const workflowRegistry: Record = { }), "analytics-setup": workflow({ id: "analytics-setup", + model: "gpt-5.6-terra", + modelReasoningEffort: "low", role: "data-scientist", phase: "plan", category: "onboarding-discovery", @@ -166,6 +178,8 @@ export const workflowRegistry: Record = { }), "engine-setup": workflow({ id: "engine-setup", + model: "gpt-5.6-luna", + modelReasoningEffort: "medium", role: "technical-director", phase: "plan", category: "onboarding-discovery", @@ -176,6 +190,8 @@ export const workflowRegistry: Record = { }), "game-concept": workflow({ id: "game-concept", + model: "gpt-5.6-sol", + modelReasoningEffort: "medium", role: "creative-director", phase: "plan", category: "onboarding-discovery", @@ -186,6 +202,8 @@ export const workflowRegistry: Record = { }), "design-review-concept": workflow({ id: "design-review-concept", + model: "gpt-5.6-sol", + modelReasoningEffort: "medium", role: "senior-game-designer", phase: "review", category: "design-architecture", @@ -197,6 +215,8 @@ export const workflowRegistry: Record = { }), "art-bible": workflow({ id: "art-bible", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "senior-game-artist", phase: "plan", category: "design-architecture", @@ -207,6 +227,8 @@ export const workflowRegistry: Record = { }), "map-systems": workflow({ id: "map-systems", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "systems-designer", phase: "plan", category: "design-architecture", @@ -218,6 +240,8 @@ export const workflowRegistry: Record = { }), "design-system": workflow({ id: "design-system", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "systems-designer", phase: "plan", category: "design-architecture", @@ -229,6 +253,8 @@ export const workflowRegistry: Record = { }), "design-review": workflow({ id: "design-review", + model: "gpt-5.6-sol", + modelReasoningEffort: "medium", role: "senior-game-designer", phase: "review", category: "design-architecture", @@ -240,6 +266,8 @@ export const workflowRegistry: Record = { }), "review-all-gdds": workflow({ id: "review-all-gdds", + model: "gpt-5.6-sol", + modelReasoningEffort: "high", role: "senior-game-designer", phase: "review", category: "design-architecture", @@ -251,6 +279,8 @@ export const workflowRegistry: Record = { }), "consistency-check": workflow({ id: "consistency-check", + model: "gpt-5.6-luna", + modelReasoningEffort: "medium", role: "studio-orchestrator", phase: "review", category: "team-coordination", @@ -262,6 +292,8 @@ export const workflowRegistry: Record = { }), "create-architecture": workflow({ id: "create-architecture", + model: "gpt-5.6-sol", + modelReasoningEffort: "high", role: "technical-director", phase: "plan", category: "design-architecture", @@ -273,6 +305,8 @@ export const workflowRegistry: Record = { }), "control-manifest": workflow({ id: "control-manifest", + model: "gpt-5.6-luna", + modelReasoningEffort: "medium", role: "ui-ux-designer", phase: "plan", category: "localization-accessibility", @@ -283,6 +317,8 @@ export const workflowRegistry: Record = { }), "accessibility-doc": workflow({ id: "accessibility-doc", + model: "gpt-5.6-terra", + modelReasoningEffort: "low", role: "accessibility-specialist", phase: "plan", category: "localization-accessibility", @@ -293,6 +329,8 @@ export const workflowRegistry: Record = { }), "entity-inventory": workflow({ id: "entity-inventory", + model: "gpt-5.6-luna", + modelReasoningEffort: "medium", role: "systems-designer", phase: "plan", category: "design-architecture", @@ -304,6 +342,8 @@ export const workflowRegistry: Record = { }), "asset-spec": workflow({ id: "asset-spec", + model: "gpt-5.6-luna", + modelReasoningEffort: "medium", role: "senior-game-artist", phase: "plan", category: "design-architecture", @@ -315,6 +355,8 @@ export const workflowRegistry: Record = { }), "ux-design": workflow({ id: "ux-design", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "ui-ux-designer", phase: "plan", category: "localization-accessibility", @@ -326,6 +368,8 @@ export const workflowRegistry: Record = { }), "ux-review": workflow({ id: "ux-review", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "ui-ux-designer", phase: "review", category: "localization-accessibility", @@ -337,6 +381,8 @@ export const workflowRegistry: Record = { }), "test-setup": workflow({ id: "test-setup", + model: "gpt-5.6-luna", + modelReasoningEffort: "medium", role: "qa-playtester", phase: "plan", category: "qa-testing", @@ -348,6 +394,8 @@ export const workflowRegistry: Record = { }), implement: workflow({ id: "implement", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "gameplay-programmer", phase: "implement", category: "implementation-planning", @@ -359,6 +407,8 @@ export const workflowRegistry: Record = { }), "code-review": workflow({ id: "code-review", + model: "gpt-5.6-terra", + modelReasoningEffort: "high", role: "technical-director", phase: "review", category: "qa-testing", @@ -370,6 +420,8 @@ export const workflowRegistry: Record = { }), "bug-report": workflow({ id: "bug-report", + model: "gpt-5.6-luna", + modelReasoningEffort: "medium", role: "qa-playtester", phase: "review", category: "qa-testing", @@ -381,6 +433,8 @@ export const workflowRegistry: Record = { }), retrospective: workflow({ id: "retrospective", + model: "gpt-5.6-luna", + modelReasoningEffort: "low", role: "producer", phase: "review", category: "team-coordination", @@ -392,6 +446,8 @@ export const workflowRegistry: Record = { }), "team-feature": workflow({ id: "team-feature", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "producer", phase: "plan", category: "team-coordination", @@ -403,6 +459,8 @@ export const workflowRegistry: Record = { }), "scope-check": workflow({ id: "scope-check", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "producer", phase: "review", category: "team-coordination", @@ -414,6 +472,8 @@ export const workflowRegistry: Record = { }), "balance-check": workflow({ id: "balance-check", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "economy-designer", phase: "review", category: "design-architecture", @@ -425,6 +485,8 @@ export const workflowRegistry: Record = { }), "asset-audit": workflow({ id: "asset-audit", + model: "gpt-5.6-luna", + modelReasoningEffort: "medium", role: "senior-game-artist", phase: "review", category: "design-architecture", @@ -436,6 +498,8 @@ export const workflowRegistry: Record = { }), "playtest-polish": workflow({ id: "playtest-polish", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "qa-playtester", phase: "review", category: "qa-testing", @@ -447,6 +511,8 @@ export const workflowRegistry: Record = { }), "team-polish": workflow({ id: "team-polish", + model: "gpt-5.6-terra", + modelReasoningEffort: "low", role: "producer", phase: "plan", category: "team-coordination", @@ -458,6 +524,8 @@ export const workflowRegistry: Record = { }), "patch-notes": workflow({ id: "patch-notes", + model: "gpt-5.6-luna", + modelReasoningEffort: "low", role: "release-manager", phase: "ship", category: "release-hotfix", @@ -469,6 +537,8 @@ export const workflowRegistry: Record = { }), changelog: workflow({ id: "changelog", + model: "gpt-5.6-luna", + modelReasoningEffort: "low", role: "release-manager", phase: "ship", category: "release-hotfix", @@ -480,6 +550,8 @@ export const workflowRegistry: Record = { }), "launch-checklist": workflow({ id: "launch-checklist", + model: "gpt-5.6-sol", + modelReasoningEffort: "high", role: "release-manager", phase: "ship", category: "release-hotfix", @@ -491,6 +563,8 @@ export const workflowRegistry: Record = { }), "design-spec": workflow({ id: "design-spec", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "senior-game-designer", phase: "plan", category: "design-architecture", @@ -502,6 +576,8 @@ export const workflowRegistry: Record = { }), "game-feel-tuning": workflow({ id: "game-feel-tuning", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "game-feel-designer", phase: "review", category: "design-architecture", @@ -512,6 +588,8 @@ export const workflowRegistry: Record = { }), "art-direction": workflow({ id: "art-direction", + model: "gpt-5.6-terra", + modelReasoningEffort: "low", role: "senior-game-artist", phase: "plan", category: "design-architecture", @@ -522,6 +600,8 @@ export const workflowRegistry: Record = { }), "ui-ux-review": workflow({ id: "ui-ux-review", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "ui-ux-designer", phase: "review", category: "localization-accessibility", @@ -532,6 +612,8 @@ export const workflowRegistry: Record = { }), "production-milestone": workflow({ id: "production-milestone", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "producer", phase: "plan", category: "team-coordination", @@ -543,6 +625,8 @@ export const workflowRegistry: Record = { }), handoff: workflow({ id: "handoff", + model: "gpt-5.6-luna", + modelReasoningEffort: "medium", role: "studio-orchestrator", phase: "plan", category: "team-coordination", @@ -553,6 +637,8 @@ export const workflowRegistry: Record = { }), review: workflow({ id: "review", + model: "gpt-5.6-luna", + modelReasoningEffort: "medium", role: "qa-playtester", phase: "review", category: "qa-testing", @@ -561,6 +647,8 @@ export const workflowRegistry: Record = { }), "ship-check": workflow({ id: "ship-check", + model: "gpt-5.6-sol", + modelReasoningEffort: "high", role: "release-manager", phase: "ship", category: "release-hotfix", @@ -571,6 +659,8 @@ export const workflowRegistry: Record = { }), onboard: workflow({ id: "onboard", + model: "gpt-5.6-luna", + modelReasoningEffort: "medium", role: "studio-orchestrator", phase: "plan", category: "onboarding-discovery", @@ -583,6 +673,8 @@ export const workflowRegistry: Record = { }), brainstorm: workflow({ id: "brainstorm", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "creative-director", phase: "plan", category: "design-architecture", @@ -594,6 +686,8 @@ export const workflowRegistry: Record = { }), prototype: workflow({ id: "prototype", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "producer", phase: "plan", category: "implementation-planning", @@ -605,6 +699,8 @@ export const workflowRegistry: Record = { }), "architecture-decision": workflow({ id: "architecture-decision", + model: "gpt-5.6-sol", + modelReasoningEffort: "high", role: "technical-director", phase: "plan", category: "design-architecture", @@ -616,6 +712,8 @@ export const workflowRegistry: Record = { }), "architecture-review": workflow({ id: "architecture-review", + model: "gpt-5.6-sol", + modelReasoningEffort: "high", role: "technical-director", phase: "review", category: "design-architecture", @@ -626,6 +724,8 @@ export const workflowRegistry: Record = { }), "create-epics": workflow({ id: "create-epics", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "producer", phase: "plan", category: "implementation-planning", @@ -637,6 +737,8 @@ export const workflowRegistry: Record = { }), "create-stories": workflow({ id: "create-stories", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "producer", phase: "plan", category: "implementation-planning", @@ -648,6 +750,8 @@ export const workflowRegistry: Record = { }), "sprint-plan": workflow({ id: "sprint-plan", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "producer", phase: "plan", category: "team-coordination", @@ -659,6 +763,8 @@ export const workflowRegistry: Record = { }), "sprint-status": workflow({ id: "sprint-status", + model: "gpt-5.6-luna", + modelReasoningEffort: "low", role: "studio-orchestrator", phase: "review", category: "team-coordination", @@ -670,6 +776,8 @@ export const workflowRegistry: Record = { }), "story-readiness": workflow({ id: "story-readiness", + model: "gpt-5.6-luna", + modelReasoningEffort: "medium", role: "producer", phase: "review", category: "team-coordination", @@ -680,6 +788,8 @@ export const workflowRegistry: Record = { }), "story-done": workflow({ id: "story-done", + model: "gpt-5.6-luna", + modelReasoningEffort: "medium", role: "qa-playtester", phase: "review", category: "team-coordination", @@ -690,6 +800,8 @@ export const workflowRegistry: Record = { }), "qa-plan": workflow({ id: "qa-plan", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "qa-playtester", phase: "plan", category: "qa-testing", @@ -701,6 +813,8 @@ export const workflowRegistry: Record = { }), "regression-suite": workflow({ id: "regression-suite", + model: "gpt-5.6-terra", + modelReasoningEffort: "high", role: "qa-playtester", phase: "review", category: "qa-testing", @@ -711,6 +825,8 @@ export const workflowRegistry: Record = { }), "security-audit": workflow({ id: "security-audit", + model: "gpt-5.6-sol", + modelReasoningEffort: "high", role: "security-engineer", phase: "review", category: "qa-testing", @@ -720,6 +836,8 @@ export const workflowRegistry: Record = { }), "perf-profile": workflow({ id: "perf-profile", + model: "gpt-5.6-terra", + modelReasoningEffort: "high", role: "performance-analyst", phase: "review", category: "qa-testing", @@ -730,6 +848,8 @@ export const workflowRegistry: Record = { }), "release-checklist": workflow({ id: "release-checklist", + model: "gpt-5.6-sol", + modelReasoningEffort: "high", role: "release-manager", phase: "ship", category: "release-hotfix", @@ -741,6 +861,8 @@ export const workflowRegistry: Record = { }), hotfix: workflow({ id: "hotfix", + model: "gpt-5.6-terra", + modelReasoningEffort: "high", role: "gameplay-programmer", phase: "review", category: "release-hotfix", @@ -751,6 +873,8 @@ export const workflowRegistry: Record = { }), "localization-plan": workflow({ id: "localization-plan", + model: "gpt-5.6-terra", + modelReasoningEffort: "medium", role: "localization-lead", phase: "plan", category: "localization-accessibility", diff --git a/tests/agent-context.test.ts b/tests/agent-context.test.ts index e69bab8..e5295ea 100644 --- a/tests/agent-context.test.ts +++ b/tests/agent-context.test.ts @@ -69,6 +69,24 @@ describe("agent context helper scripts", () => { expect(workflow).not.toContain("Compact Context First"); }); + test("shared model routing semantics live in AGENTS while surfaces avoid redundant tier metadata", () => { + const root = packageRoot(); + const agentsMd = readFileSync(path.join(root, "AGENTS.md"), "utf8"); + const agent = readFileSync(path.join(root, ".codex", "agents", "gameplay-programmer.toml"), "utf8"); + const workflow = readFileSync(path.join(root, ".codex", "workflows", "bugfix.md"), "utf8"); + const skill = readFileSync(path.join(root, ".agents", "skills", "cgs-bugfix", "SKILL.md"), "utf8"); + + expect(agentsMd).toContain("## Model Routing"); + expect(agentsMd).toContain("Sol"); + expect(agentsMd).toContain("Terra"); + expect(agentsMd).toContain("Luna"); + for (const surface of [agent, workflow, skill]) { + expect(surface).not.toMatch(/^#?\s*model_tier\s*[:=]/m); + expect(surface).toMatch(/^model\s*[:=]\s*["']?gpt-5\.6-(sol|terra|luna)/m); + expect(surface).not.toContain("## Model Routing"); + } + }); + test("changed context degrades gracefully outside Git checkouts", () => { const cwd = mkdtempSync(path.join(tmpdir(), "ogs-context-no-git-")); const pack = renderAgentContext({ kind: "changed", cwd }); diff --git a/tests/codex-runtime.test.ts b/tests/codex-runtime.test.ts index 41e0c00..092f826 100644 --- a/tests/codex-runtime.test.ts +++ b/tests/codex-runtime.test.ts @@ -4,7 +4,7 @@ import { tmpdir } from "node:os"; import path from "node:path"; import { describe, test } from "node:test"; import { expect } from "expect"; -import { buildCodexExecArgs, checkCodexAvailability, resolveCodexCommand } from "../src/codex-runtime.js"; +import { buildCodexExecArgs, checkCodexAvailability, executeCodexCommandWithFallback, resolveCodexCommand } from "../src/codex-runtime.js"; describe("codex runtime", () => { test("resolves Codex command from CODEX_BIN only", () => { @@ -13,11 +13,12 @@ describe("codex runtime", () => { expect(resolveCodexCommand({})).toBe("codex"); }); - test("builds structured codex exec args with cwd, sandbox, and stdin prompt", () => { - const args = buildCodexExecArgs({ projectRoot: "/repo", sandbox: "read-only", model: "gpt-5.5" }); + test("builds structured codex exec args with cwd, sandbox, model, reasoning, and stdin prompt", () => { + const args = buildCodexExecArgs({ projectRoot: "/repo", sandbox: "read-only", model: "gpt-5.6-sol", reasoningEffort: "high" }); expect(args).toContain("exec"); expect(args).toContain("--model"); - expect(args).toContain("gpt-5.5"); + expect(args).toContain("gpt-5.6-sol"); + expect(args).toEqual(expect.arrayContaining(["-c", 'model_reasoning_effort="high"'])); expect(args).toContain("--cd"); expect(args).toContain("/repo"); expect(args).toContain("--sandbox"); @@ -41,4 +42,35 @@ describe("codex runtime", () => { expect(result.ok).toBe(true); expect(result.command).toBe(stub); }); + + test("uses the designated fallback only when the primary model is unavailable", async () => { + const cwd = mkdtempSync(path.join(tmpdir(), "ogs-codex-fallback-")); + const stub = path.join(cwd, "codex-stub.mjs"); + writeFileSync(stub, `#!/usr/bin/env node\nconst model = process.argv[process.argv.indexOf('--model') + 1];\nif (model === 'gpt-5.6-sol') { console.error('model gpt-5.6-sol is not available for this account'); process.exit(1); }\nconsole.log(model);\n`); + chmodSync(stub, 0o755); + const primary = { command: stub, args: buildCodexExecArgs({ projectRoot: cwd, model: "gpt-5.6-sol", reasoningEffort: "high" }) }; + const fallback = { command: stub, args: buildCodexExecArgs({ projectRoot: cwd, model: "gpt-5.5", reasoningEffort: "high" }) }; + + const result = await executeCodexCommandWithFallback({ primary, fallback, primaryModel: "gpt-5.6-sol", fallbackModel: "gpt-5.5" }, "prompt", { cwd }); + + expect(result.status).toBe(0); + expect(result.stdout.trim()).toBe("gpt-5.5"); + expect(result.executedModel).toBe("gpt-5.5"); + expect(result.fallbackFromModel).toBe("gpt-5.6-sol"); + }); + + test("does not hide ordinary execution failures behind a fallback", async () => { + const cwd = mkdtempSync(path.join(tmpdir(), "ogs-codex-no-fallback-")); + const stub = path.join(cwd, "codex-stub.mjs"); + writeFileSync(stub, "#!/usr/bin/env node\nconsole.error('tests failed'); process.exit(2);\n"); + chmodSync(stub, 0o755); + const primary = { command: stub, args: buildCodexExecArgs({ projectRoot: cwd, model: "gpt-5.6-terra", reasoningEffort: "medium" }) }; + const fallback = { command: stub, args: buildCodexExecArgs({ projectRoot: cwd, model: "gpt-5.4", reasoningEffort: "medium" }) }; + + const result = await executeCodexCommandWithFallback({ primary, fallback, primaryModel: "gpt-5.6-terra", fallbackModel: "gpt-5.4" }, "prompt", { cwd }); + + expect(result.status).toBe(2); + expect(result.executedModel).toBe("gpt-5.6-terra"); + expect(result.fallbackFromModel).toBeUndefined(); + }); }); diff --git a/tests/prompt-surface-metadata.test.ts b/tests/prompt-surface-metadata.test.ts index bb59552..3510608 100644 --- a/tests/prompt-surface-metadata.test.ts +++ b/tests/prompt-surface-metadata.test.ts @@ -1,33 +1,60 @@ import { describe, test } from "node:test"; import { expect } from "expect"; import { - codexModelForComplexity, isCodexModelName, + modelPolicyForTier, + modelTierForModel, parsePromptSurfaceFrontmatter, + resolveModelRoute, validateAgentDescriptionQuality, validateModelPolicy, validateSkillDescriptionQuality, - validateWorkflowArgumentHintQuality, - type PromptSurfaceComplexity + validateWorkflowArgumentHintQuality } from "../src/prompt-surface-metadata.js"; describe("prompt surface metadata", () => { - test("maps complexity to exact Codex model names", () => { - const cases: Array<[PromptSurfaceComplexity, string]> = [["complex", "gpt-5.5"], ["moderate", "gpt-5.4"], ["simple", "gpt-5.4-mini"]]; - for (const [complexity, model] of cases) expect(codexModelForComplexity(complexity)).toBe(model); + test("maps stable model tiers to primary and safe fallback defaults", () => { + expect(modelPolicyForTier("sol")).toEqual({ + tier: "sol", + primary: { model: "gpt-5.6-sol", effort: "high" }, + fallback: { model: "gpt-5.5", effort: "high" } + }); + expect(modelPolicyForTier("terra")).toEqual({ + tier: "terra", + primary: { model: "gpt-5.6-terra", effort: "medium" }, + fallback: { model: "gpt-5.4", effort: "medium" } + }); + expect(modelPolicyForTier("luna")).toEqual({ + tier: "luna", + primary: { model: "gpt-5.6-luna", effort: "low" }, + fallback: { model: "gpt-5.4-mini", effort: "low" } + }); }); - test("rejects Claude and abstract model names", () => { - for (const valid of ["gpt-5.5", "gpt-5.4", "gpt-5.4-mini"]) expect(isCodexModelName(valid)).toBe(true); + test("infers surface tiers while preserving per-surface reasoning effort", () => { + expect(resolveModelRoute({ surfaceModel: "gpt-5.6-terra", surfaceEffort: "low" })).toMatchObject({ tier: "terra", source: "surface", primary: { model: "gpt-5.6-terra", effort: "low" }, fallback: { model: "gpt-5.4", effort: "low" } }); + expect(resolveModelRoute({ surfaceModel: "gpt-5.6-luna", surfaceEffort: "medium", requestedTier: "sol" })).toMatchObject({ tier: "sol", source: "explicit-tier", primary: { model: "gpt-5.6-sol", effort: "medium" } }); + expect(modelTierForModel("gpt-5.5")).toBe("sol"); + expect(modelTierForModel("gpt-5.4")).toBe("terra"); + expect(modelTierForModel("gpt-5.4-mini")).toBe("luna"); + }); + + test("rejects unregistered models and invalid reasoning effort values without coupling the two", () => { + for (const valid of ["gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5", "gpt-5.4", "gpt-5.4-mini"]) expect(isCodexModelName(valid)).toBe(true); for (const invalid of ["sonnet", "haiku", "opus", "claude-3.5-sonnet", "complex", "moderate", "simple", "gpt5.5"]) { expect(isCodexModelName(invalid)).toBe(false); - expect(validateModelPolicy({ model: invalid, model_reasoning_effort: "medium" }).valid).toBe(false); + expect(validateModelPolicy({ model: invalid, model_reasoning_effort: "high" }).valid).toBe(false); } + expect(validateModelPolicy({ model: "gpt-5.6-sol", model_reasoning_effort: "medium" }).valid).toBe(true); + expect(validateModelPolicy({ model: "gpt-5.6-luna", model_reasoning_effort: "high" }).valid).toBe(true); + expect(validateModelPolicy({ model: "gpt-5.6-sol" }).issues).toContain("missing reasoning effort"); + expect(validateModelPolicy({ model: "gpt-5.6-sol", model_reasoning_effort: "extreme" }).issues).toContain("invalid reasoning effort: extreme"); }); test("parses markdown frontmatter", () => { - const parsed = parsePromptSurfaceFrontmatter(`---\nname: cgs-prototype\nmodel: gpt-5.5\nmodel_reasoning_effort: high\nrelated-agents: [producer, qa-playtester]\n---\n\n# Body`); - expect(parsed.frontmatter.model).toBe("gpt-5.5"); + const parsed = parsePromptSurfaceFrontmatter(`---\nname: cgs-prototype\nmodel: gpt-5.6-sol\nmodel_reasoning_effort: high\nrelated-agents: [producer, qa-playtester]\n---\n\n# Body`); + expect(parsed.frontmatter.model_tier).toBeUndefined(); + expect(parsed.frontmatter.model).toBe("gpt-5.6-sol"); expect(parsed.frontmatter.model_reasoning_effort).toBe("high"); expect(parsed.body).toContain("# Body"); }); diff --git a/tests/prompt-surface-validation.test.ts b/tests/prompt-surface-validation.test.ts index c5f7d05..36961cf 100644 --- a/tests/prompt-surface-validation.test.ts +++ b/tests/prompt-surface-validation.test.ts @@ -13,22 +13,35 @@ function makeRoot(): string { mkdirSync(path.join(root, ".agents", "skills", "cgs-bugfix"), { recursive: true }); mkdirSync(path.join(root, ".agents", "skills", "cgs-standards-gameplay"), { recursive: true }); writeFileSync(path.join(root, "AGENTS.md"), "# Template\n\n.codex/agents game template guidance.\n"); - writeFileSync(path.join(root, ".codex", "agents", "producer.toml"), `name = "producer"\ndescription = "Producer"\nmodel = "gpt-5.5"\nmodel_reasoning_effort = "high"\n# source_reference = ".claude/agents/producer.md"\n# source_hash = "${"a".repeat(64)}"\n# primary_skills = ["cgs-bugfix"]\n# allowed_tool_categories = ["read", "edit", "shell"]\ndeveloper_instructions = """\n## Stop Conditions\n\nStop.\n## Use When\n\nUse.\n## Do Not Use When\n\nDo not.\n## Procedure\n\n1. Do work.\n## Handoff Contract\n\nReport evidence.\n"""\n`); + writeFileSync(path.join(root, ".codex", "agents", "producer.toml"), `name = "producer"\ndescription = "Producer"\nmodel = "gpt-5.6-sol"\nmodel_reasoning_effort = "high"\n# source_reference = ".claude/agents/producer.md"\n# source_hash = "${"a".repeat(64)}"\n# primary_skills = ["cgs-bugfix"]\n# allowed_tool_categories = ["read", "edit", "shell"]\ndeveloper_instructions = """\n## Stop Conditions\n\nStop.\n## Use When\n\nUse.\n## Do Not Use When\n\nDo not.\n## Procedure\n\n1. Do work.\n## Handoff Contract\n\nReport evidence.\n"""\n`); const skillBody = (name: string, model: string, effort: string, hash: string) => `---\nname: ${name}\ndescription: ${name}\nmodel: ${model}\nmodel_reasoning_effort: ${effort}\nargument-hint: describe target\nprimary-agent: producer\ntool-policy: read/edit/shell\nisolation: repository-root\nsource-reference: local\nsource-hash: ${hash}\n---\n\n# ${name}\n\n## Objective\n\nObjective.\n## Inputs\n\nInputs.\n## Arguments\n\nArgs.\n## Procedure\n\nProcedure.\n## Output Contract\n\nOutput.\n## Quality Gates\n\nQuality.\n## Decision Gates\n\nGates.\n## Handoff\n\nHandoff.\n`; - writeFileSync(path.join(root, ".agents", "skills", "cgs-bugfix", "SKILL.md"), skillBody("cgs-bugfix", "gpt-5.4", "medium", "b".repeat(64))); - writeFileSync(path.join(root, ".agents", "skills", "cgs-standards-gameplay", "SKILL.md"), skillBody("cgs-standards-gameplay", "gpt-5.4-mini", "low", "c".repeat(64))); - writeFileSync(path.join(root, ".codex", "workflows", "bugfix.md"), `---\nmodel: gpt-5.4\nmodel_reasoning_effort: medium\nprimary-agent: producer\nlinked-skills: [cgs-bugfix]\nphase: implement\nrisk: medium\nargument-hint: describe bug\nsource-reference: .codex/workflows/bugfix.md\nsource-hash: ${"d".repeat(64)}\n---\n\n# Bugfix\n\n## Purpose\n\nPurpose.\n## Inputs\n\nInputs.\n## Phase Gates\n\nGates.\n## Required Artifacts\n\nArtifacts.\n## Context Contract\n\nContext.\n## Output Contract\n\nOutput.\n## Stop Conditions\n\nStop.\n## Handoff\n\nHandoff.\n`); + writeFileSync(path.join(root, ".agents", "skills", "cgs-bugfix", "SKILL.md"), skillBody("cgs-bugfix", "gpt-5.6-terra", "medium", "b".repeat(64))); + writeFileSync(path.join(root, ".agents", "skills", "cgs-standards-gameplay", "SKILL.md"), skillBody("cgs-standards-gameplay", "gpt-5.6-luna", "low", "c".repeat(64))); + writeFileSync(path.join(root, ".codex", "workflows", "bugfix.md"), `---\nmodel: gpt-5.6-terra\nmodel_reasoning_effort: medium\nprimary-agent: producer\nlinked-skills: [cgs-bugfix]\nphase: implement\nrisk: medium\nargument-hint: describe bug\nsource-reference: .codex/workflows/bugfix.md\nsource-hash: ${"d".repeat(64)}\n---\n\n# Bugfix\n\n## Purpose\n\nPurpose.\n## Inputs\n\nInputs.\n## Phase Gates\n\nGates.\n## Required Artifacts\n\nArtifacts.\n## Context Contract\n\nContext.\n## Output Contract\n\nOutput.\n## Stop Conditions\n\nStop.\n## Handoff\n\nHandoff.\n`); return root; } describe("prompt surface validation", () => { test("fails exact metadata regressions with stable diagnostics", () => { const root = makeRoot(); - writeFileSync(path.join(root, ".codex", "agents", "bad.toml"), `name = "bad"\ndescription = "Bad"\nmodel = "sonnet"\nmodel_reasoning_effort = "medium"\n# source_reference = "local"\n# primary_skills = ["missing-skill"]\n# allowed_tool_categories = ["read"]\ndeveloper_instructions = """thin"""\n`); + writeFileSync(path.join(root, ".codex", "agents", "bad.toml"), `name = "bad"\ndescription = "Bad"\nmodel = "sonnet"\nmodel_reasoning_effort = "high"\n# source_reference = "local"\n# primary_skills = ["missing-skill"]\n# allowed_tool_categories = ["read"]\ndeveloper_instructions = """thin"""\n`); const failures = validateTemplateSurfaces(root).filter((check) => check.status === "fail").map((check) => check.id); expect(failures).toEqual(expect.arrayContaining(["prompt_surface.agent.bad.model", "prompt_surface.agent.bad.traceability", "prompt_surface.agent.bad.links", "prompt_surface.agent.bad.depth"])); }); + test("accepts independent model and reasoning-effort combinations but rejects invalid efforts", () => { + const root = makeRoot(); + const workflow = path.join(root, ".codex", "workflows", "bugfix.md"); + writeFileSync(workflow, readFileSync(workflow, "utf8").replace("model: gpt-5.6-terra", "model: gpt-5.6-sol")); + + let failures = validateTemplateSurfaces(root).filter((check) => check.status === "fail").map((check) => check.id); + expect(failures).not.toContain("prompt_surface.workflow.bugfix.model"); + + writeFileSync(workflow, readFileSync(workflow, "utf8").replace("model_reasoning_effort: medium", "model_reasoning_effort: impossible")); + failures = validateTemplateSurfaces(root).filter((check) => check.status === "fail").map((check) => check.id); + expect(failures).toContain("prompt_surface.workflow.bugfix.model"); + }); + test("skill validation rejects duplicated generic adapter sections", () => { const root = makeRoot(); const skill = path.join(root, ".agents", "skills", "cgs-bugfix", "SKILL.md"); diff --git a/tests/runner.test.ts b/tests/runner.test.ts index cc70fdc..010da4f 100644 --- a/tests/runner.test.ts +++ b/tests/runner.test.ts @@ -96,6 +96,35 @@ describe("runner", () => { expect(existsSync(path.join(projectRoot, ".codex", "prompts"))).toBe(false); }); + test("infers the agent surface tier from its model and preserves override precedence", () => { + const cwd = mkdtempSync(path.join(tmpdir(), "codex-game-studio-runner-model-tier-")); + const { projectRoot } = initTemplateProject({ name: "Model Tier", engine: "godot", mode: "prototype", studioMode: "fast-prototype", nonInteractive: true }, cwd); + const agentPath = path.join(projectRoot, ".codex", "agents", "gameplay-programmer.toml"); + const agent = readFileSync(agentPath, "utf8") + .replace(/^model = ".*"$/m, 'model = "gpt-5.6-luna"') + .replace(/^model_reasoning_effort = ".*"$/m, 'model_reasoning_effort = "low"'); + writeFileSync(agentPath, agent); + + const surfaceRun = prepareRun("gameplay-programmer", { project: projectRoot, task: "Rename one label", dryRun: true }, cwd); + expect(surfaceRun.selectedModelTier).toBe("luna"); + expect(surfaceRun.selectedModel).toBe("gpt-5.6-luna"); + expect(surfaceRun.modelReasoningEffort).toBe("low"); + expect(surfaceRun.fallbackModel).toBe("gpt-5.4-mini"); + expect(surfaceRun.fallbackReasoningEffort).toBe("low"); + expect(surfaceRun.prompt).toContain("Selected tier: luna"); + + const lunaFixRun = prepareRun("gameplay-programmer", { project: projectRoot, task: "Format the inventory", dryRun: true, fix: true }, cwd); + expect(lunaFixRun.fixCodexCommand?.args).toContain("gpt-5.6-terra"); + expect(lunaFixRun.fixCodexCommand?.args).toEqual(expect.arrayContaining(["-c", 'model_reasoning_effort="medium"'])); + expect(lunaFixRun.fixFallbackCodexCommand?.args).toContain("gpt-5.4"); + + const overrideRun = prepareRun("gameplay-programmer", { project: projectRoot, task: "Review architecture", dryRun: true, modelTier: "sol" }, cwd); + expect(overrideRun.selectedModelTier).toBe("sol"); + expect(overrideRun.selectedModel).toBe("gpt-5.6-sol"); + expect(overrideRun.modelReasoningEffort).toBe("low"); + expect(overrideRun.modelSelectionSource).toBe("explicit-tier"); + }); + test("missing tracked custom agent is reported as context blocker", () => { const cwd = mkdtempSync(path.join(tmpdir(), "ogs-runner-")); const { projectRoot } = initTemplateProject({ name: "Missing Agent Game", engine: "godot", mode: "design", nonInteractive: true }, cwd); diff --git a/tests/tasks.test.ts b/tests/tasks.test.ts index a3b7d33..f9e58bf 100644 --- a/tests/tasks.test.ts +++ b/tests/tasks.test.ts @@ -42,4 +42,21 @@ describe("tasks", () => { }); expect(result.prepared.output).toContain("Write policy: override-write"); }); + + test("task overrides take precedence over the workflow model-derived tier", async () => { + const cwd = mkdtempSync(path.join(tmpdir(), "ogs-task-model-tier-")); + const { projectRoot } = initProject({ name: "Tiered Task Game", engine: "godot", mode: "prototype", studioMode: "fast-prototype", nonInteractive: true }, cwd); + const workflowTask = createTask(projectRoot, { title: "Format sprint status", role: "producer", workflowId: "sprint-status" }); + const taskOverride = createTask(projectRoot, { title: "Review sprint status", role: "producer", workflowId: "sprint-status", runPolicy: { modelTier: "terra" } }); + + const workflowRun = await executeTaskRun(projectRoot, workflowTask.id, { dryRun: true }); + expect(workflowRun.prepared.selectedModelTier).toBe("luna"); + expect(workflowRun.prepared.modelSelectionSource).toBe("surface"); + + const taskRun = await executeTaskRun(projectRoot, taskOverride.id, { dryRun: true }); + expect(taskRun.prepared.selectedModelTier).toBe("terra"); + + const userOverride = await executeTaskRun(projectRoot, taskOverride.id, { dryRun: true, modelTier: "sol" }); + expect(userOverride.prepared.selectedModelTier).toBe("sol"); + }); });