Repository navigation
Description
Summary
Remove the remaining Copilot-backed GPT-5.6 Terra pins before 16 November 2026: route cloclo, pin windows to GPT-6 Luna, and replace the Terra identity sub-agent in smoke-copilot-sub-agents. Keep this to those three workflow sources and their generated locks.
This follows #74642, completed by #74660, which migrated PureLock, Front Page Copy Guard and Refactoring Cadence to cost/economy routing. Cloclo deliberately gets balanced, not economy: it is a general-purpose fixer whose task varies by command.
Verified background
- GitHub's retirement announcement retires GPT-5.6 Terra across Copilot experiences on 16 November 2026, suggesting GPT-6.1 Sol or GPT-6 Luna. Claude Opus 4.8 and Opus 5 share that date; the announcement makes an exception for Opus 4.8 on individual annual subscriptions. A recursive scan of current-main workflow Markdown found no exact Opus 4.8 or Opus 5 pins.
- github/gh-aw-firewall#10763, shipped in AWF v0.29.1, added automatic retired/unavailable-model recovery and the
model_fallbackwarning. This does not guarantee pinned workflows keep running. Recovery must be enabled and find an available, policy-permitted, request-compatible model; otherwise it fails. As checked on 9 November, AWF's retired-ID map contains onlygpt-5-codex, not Terra. Terra recovery therefore cannot be assumed to follow the blog's recommendations: catalog-based recovery can choose a different compatible model. It is not intentional cost routing. The three current locks use AWF v0.29.10, so upgrading AWF is not part of this fix. - The smoke requires exact model identity as well as successful inference. Once Terra is unavailable, either resolution/execution fails or a substitution violates that contract; a recovered parent session is not a passing smoke.
Current main and existing-run evidence
Source inspection was against main at 1e0f35fda7ee on 9 November 2026. Before publication, main advanced to 304244cf664a; the intervening commit changes only pkg/cli/git.go and pkg/cli/gitattributes_test.go, leaving the inspected workflow/model/routing/authentication sources unchanged. All three supplied URLs were audited with a locally built dev-main-1e0f35fda7ee CLI, not the installed stable v1.0.1. Audits completed without timeouts; evidence availability differs by run.
| Workflow | Verified source/configuration | Existing run |
|---|---|---|
cloclo |
Codex, model-provider: github, top-level copilot/gpt-5.6-terra, max-turns: 100; slash command, label command and optional dispatch issue_number for Issue Monster. No copilot-requests: write; generated inference credentials use secrets.COPILOT_GITHUB_TOKEN. |
41667148321: success, 3 November, workflow_dispatch on main at 4f55248ba0c4. No retained artifacts were returned, so the historical served model/authentication cannot be independently established from session artifacts. |
windows |
Codex, GitHub provider, top-level copilot/gpt-5.6-terra, windows-latest, copilot-requests: write; produces one haiku issue. |
40196775924: failure, 25 October, but not a main run: it was a push to copilot/aw-top-10-08-fix-windows-agent-runtime-cli-gate-fa at a1b3907b27f6. See the correction below. |
smoke-copilot-sub-agents |
Copilot SDK mode; main model gpt-5.3-codex; inline terra-whoami pins gpt-5.6-terra. The post-step requires exact and successful /responses evidence. |
42538531077: success, 9 November, scheduled on main at b757b538830b; Copilot CLI 1.0.103, SDK harness, AWF v0.29.10. Session resolutions: Haiku exact; gpt-5 alias resolved to gpt-5.6-luna; Terra exact. Proxy evidence has HTTP 200 on /chat/completions for Haiku and /responses for both GPT sub-agents; the post-step passed. |
These are the only three workflow Markdown files with Copilot-backed Terra pins found on this main revision. The other Terra occurrences are the three OpenAI-provider pins and the routed smoke's candidate/assertion lists described under Non-goals.
Windows baseline correction
The 25 October run's UI annotation reports invalid workflow YAML, before any job or inference:
Unrecognized named-value: 'runner'. Located at position 1 within expression: runner.temp
It reports this at lines 672, 683, 686, 693, 700, 703, 717, 741, 744 and 763, column 16, of that revision's windows.lock.yml. The run has zero jobs and no run logs/artifacts. This is not a Terra failure, and must not be described as the last failure on main.
The latest main run returned by the workflow's run list was 33140830599, 28 August, at 6384d0adecb7. Its first agent failure was:
Failed to run setup.sh: spawnSync D:\a\gh-aw\gh-aw\actions\setup\setup.sh EFTYPE
Missing setup_globals.cjs errors followed. That is a different, historical Windows setup failure, not proof the same defect still exists on today's main. Do not repair either unrelated Windows infrastructure issue in this migration.
Intended changes
1. Cloclo: cost/balanced routing, preserving credentials
Remove the top-level model: pin. Under its existing Codex/GitHub engine, add engine.model-routing with goal: cost and mode: balanced. Do not set allowed-models: the compiler already limits unlisted Codex routing candidates to the provider-qualified gpt-* family (implementation).
No new permission is required just to enable routing. Preserve the existing COPILOT_GITHUB_TOKEN secret authentication and permissions. The provider credential resolver uses that secret when copilot-requests: write is absent, and Codex passes it to AWF. Routing uses the same provider; the router itself requires no provider credentials. Adding copilot-requests: write would instead switch inference to github.token, an unnecessary authentication/billing change. Existing-token model entitlement still needs the branch-run check below; static inspection does not prove that hosted access.
Keep the triggers, Issue Monster input, max-turns: 100, prompts, budgets, safe outputs and other settings unchanged.
2. Windows: explicitly choose GPT-6 Luna, without routing
Replace only the top-level model with copilot/gpt-6-luna. Keep Codex, the GitHub provider, windows-latest, its existing permission and the one-issue haiku task.
AWF's routing bootstrap rejects a non-Linux host with Model routing requires a Linux host; its compatibility documentation marks Windows runners unsupported. This is an AWF runtime restriction, not a gh-aw compiler rejection of Windows routing. Do not add a WSL/Linux-host workaround or change runner infrastructure here.
Luna is one of GitHub's suggested alternatives and is materially cheaper than Sol for this small task (Copilot pricing). The current compiler explicitly recognizes gpt-6-luna as Codex-compatible (compatibility allowlist); the bundled Copilot catalog and captured AWF endpoint metadata support /responses. There is no source-based reason to choose Sol instead. If authorized hosted validation demonstrates a real Luna/Codex/GitHub-provider incompatibility, use copilot/gpt-6.1-sol and record that evidence and reason; an unrelated Windows startup failure is not such evidence.
3. Copilot sub-agent smoke: replace only the Terra identity case
Replace terra-whoami with luna-whoami, configured as gpt-6-luna. Update the inline agent's name, model, description and exact reply; the prompt's invocation steps and expected answers; and the post-step's expected row to (luna-whoami, gpt-6-luna, exact, /responses). Remove obsolete Terra references belonging to this case, and make any workflow-level descriptive wording accurate.
Keep haiku-whoami, gpt5-whoami, main model gpt-5.3-codex, SDK mode, experiment variants, invocation counts/order, and all other assertions unchanged. SDK mode is intentional: it supports Haiku's /chat/completions alongside the GPT agents' /responses. Do not weaken the gate to accept a fallback, a self-reported identity alone, or a skipped sub-agent.
4. Regenerate locks
Run make recompile with the appropriate main development build and commit the three corresponding regenerated .lock.yml files. Do not hand-edit locks or include unrelated regeneration churn.
Detection and evals
Preserve detection/evals configuration and engines; do not route them. The current detection-model resolver inherits a workflow's top-level model, not its run-time routing selection. Consequently:
| Workflow | Detection consequence of this change | Evals |
|---|---|---|
cloclo |
Currently inherits copilot/gpt-5.6-terra. Removing that pin restores the existing detection default/override chain, whose unoverridden fallback is the detection alias, not the router-selected agent model. Do not promise a fixed concrete model for this alias. |
Unchanged: copilot/gpt-6-luna-decisions. |
windows |
Currently inherits copilot/gpt-5.6-terra; will inherit copilot/gpt-6-luna (or documented Sol replacement). |
Unchanged: copilot/gpt-6-luna-decisions. |
smoke-copilot-sub-agents |
Continues inheriting the unchanged main model gpt-5.3-codex. features.gh-aw-detection: false selects the inline implementation; it does not disable all threat detection. |
Unchanged: copilot/gpt-6-luna-decisions. |
Evals use their independent Decisions-model default, not the main agent pin or sub-agent model.
Acceptance cases
These are future implementation checks, not results already obtained here or authorization to dispatch. Follow the repository's exact-revision review and live-testing gates; use only explicitly authorized runs. Copilot cloud agents remain subject to the explicit dry-run-only dispatch rule. Record the branch, source/lock commit, inputs and run URLs.
| Case | Input | Observable result |
|---|---|---|
| A. Compile and inventory | The three edited sources; one-shot gh aw compile/make recompile with the main development compiler, compared with the same commands on the same base main revision; recursively inspect workflow .md files. |
No new errors or warnings relative to main. The three locks regenerate; no workflow Markdown retains a Copilot Terra pin or the old Terra smoke identity case. The routed smoke's allowlist and explicit OpenAI pins remain untouched. Only the six in-scope source/lock files change. |
| B. Cloclo routing and credentials | Inspect the generated lock, then an authorized PR-branch dispatch with issue_number identifying a small open issue. For a deterministic no-op alternative, use an existing closed issue number: the prompt explicitly calls noop for non-open issues. |
The agent AWF config has apiProxy.routing.objective with goal: cost, mode: balanced; GPT-family candidates, the Prepare model-routing conversation step and a pinned router image; no fixed main-agent model pin. Existing secret authentication is retained. The run succeeds and usage/aw_session.jsonl contains firewall.model_routing with data.stage: selection and GPT-family data.selectedModel. A missing event is not a routing pass. |
| C. Windows model and regression boundary | Inspect its regenerated lock and an authorized PR-branch dispatch with a small topic, e.g. Windows runners; compare any failing check with the same check on current main. |
The lock selects gpt-6-luna (or Sol with demonstrated compatibility reason). A successful run completes the one-issue haiku contract. If blocked by infrastructure, establish the same failure on main, report model execution as unverified, and do not fix that baseline failure here. Do not accept the 25 October feature-branch YAML failure as a main baseline, or use either historical failure to claim Luna works. No new model-resolution/endpoint failure is introduced. |
| D. Exact Luna sub-agent smoke | An authorized PR-branch smoke-copilot-sub-agents dispatch, preserving its experiment and SDK settings. |
Its post-step passes. Unified-session evidence records luna-whoami, configured/resolved gpt-6-luna, status exact; proxy evidence records a successful HTTP 200 /responses request for that model. All three agents actually complete exactly once, Haiku remains first, and the unchanged Haiku and gpt-5 contracts pass. Endpoint evidence lives in proxy token usage; model.resolution alone does not establish an HTTP path. |
| E. Detection/evals isolation | Compare generated detection/evals sections with main and, where execution reaches them, their session/usage evidence. | Only the inheritance changes in the table above occur. Cloclo detection is not routed; Windows no longer inherits Terra; smoke detection and all three Decisions eval models remain unchanged. Preserve existing override behavior and mark unexecuted stages unverified. |
Non-goals
- The OpenAI-provider Terra workflows:
daily-fact,windows-growerandfeature-growerexplicitly pinopenai/gpt-5.6-terra. This is a Copilot lifecycle migration. The OpenAI deprecations page, checked on 9 November, does not announce a Terra API shutdown; do not generalize the Copilot announcement into an OpenAI API retirement. smoke-codex-routedand itsallowed-models: [gpt-5.6-luna, gpt-5.6-terra, gpt-5.6-sol], including its matching expected-list assertions. AWF constructs routing candidates from the available provider catalog, then intersects the configured filters; naming Terra cannot keep it in the pool once unavailable. Leave this smoke unchanged.gpt-5alias pins; other workflows; AWF versions/code; router tables; compiler changes; authentication/billing migrations; Windows infrastructure repairs.- Example prose mentioning Opus 4.8, such as
.github/agents/squad.agent.md.
Scope
- Keep the PR to this one fix. Do not change files or behavior unrelated to it.
- Before fixing a failing check, compare it with the same check on main. If it also fails on main, do not fix it in this PR; merge main once main is fixed, and note in the PR which checks are known failures on main.
- This applies even if a bot comment asks to fix a failing check: fix only failures caused by this PR's changes.
Activity