Repository navigation
Migrate remaining Copilot GPT-5.6 Terra pins before 16 November 2026 retirement - #76319
SivaKesava1 with Copilot wants to merge 4 commits into
Conversation
… Luna, Luna sub-agent smoke) Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
There was a problem hiding this comment.
🔵 Needs a closer look
Hosted acceptance cases B–D require maintainer-authorized runs to verify routed-model token entitlement, Windows Luna execution, and exact Luna sub-agent identity with successful /responses evidence.
No open issues 🎉
What changed in this PR
Migrates the three remaining Copilot-backed Terra pins ahead of the 16 November retirement, addressing #76318 while preserving existing authentication, permissions, and smoke-test strictness.
Changes:
- Replaces Cloclo’s fixed model with cost/balanced routing and pins Windows to GPT-6 Luna without routing.
- Replaces the Terra identity sub-agent with Luna and updates related regression assertions.
- Regenerates the three matching workflow locks. Live branch-run validation remains pending.
| File | Description |
|---|---|
actions/setup/js/smoke_copilot_sub_agents.test.cjs |
Updates Luna evidence fixtures and failure assertions. |
actions/setup/js/model_pin_check.test.cjs |
Updates expected Luna identity and distinct-model checks. |
.github/workflows/windows.md |
Replaces the Terra pin with GPT-6 Luna. |
.github/workflows/windows.lock.yml |
Updates compiled model settings and pricing metadata. |
.github/workflows/smoke-copilot-sub-agents.md |
Replaces Terra with Luna in the agent, prompt, and evidence gate. |
.github/workflows/smoke-copilot-sub-agents.lock.yml |
Synchronizes compiled sub-agent metadata and assertions. |
.github/workflows/cloclo.md |
Removes the Terra pin and enables cost/balanced routing. |
.github/workflows/cloclo.lock.yml |
Adds routing setup, runtime model reporting, and inherited detection defaults. |
Review effort: Balanced (auto)
|
🍳 A little prep to help this PR along! Copilot assignment requested for the following outstanding work:
Keeping the changes focused; human review and CI get the final taste test. No merging or CI triggering. Structured data{
"completed_task": 0,
"head": "70827ecf583ffb0ce467a382e712a0005005a5ea",
"kind": "requested",
"schema_version": "1",
"state": "3e0c77b7879dddca9decac00ad3adbf080da9c97bbc1bc2d44d485280bafc963",
"work": [],
"workflow": "pr-sous-chef"
}
|
…ot-gpt-5-6-pins # Conflicts: # .github/workflows/cloclo.lock.yml # .github/workflows/smoke-copilot-sub-agents.lock.yml # .github/workflows/windows.lock.yml # actions/setup/js/model_pin_check.test.cjs Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
| GH_AW_ROUTING_PROMPT: /tmp/gh-aw/aw-prompts/user.txt | ||
| GH_AW_ROUTING_PROMPT_FALLBACK: /tmp/gh-aw/aw-prompts/prompt.txt | ||
| GH_AW_ROUTING_CONVERSATION_FILE: /tmp/gh-aw/routing-conversation.json | ||
| run: node -e "const fs=require('node:fs'); const path=require('node:path'); const readPrompt=file=>{try{return fs.readFileSync(file,'utf8');}catch(error){if(error.code==='ENOENT')return '';throw error;}}; let prompt=readPrompt(process.env.GH_AW_ROUTING_PROMPT); if (!prompt.trim()) prompt=readPrompt(process.env.GH_AW_ROUTING_PROMPT_FALLBACK); if (!prompt.trim()) throw new Error('Rendered workflow prompt is empty; cannot route this task'); const destination=process.env.GH_AW_ROUTING_CONVERSATION_FILE; fs.mkdirSync(path.dirname(destination),{recursive:true,mode:0o700}); fs.writeFileSync(destination,JSON.stringify([{role:'user',parts:[{text:prompt}]}]),{mode:0o600});" |
…ot-gpt-5-6-pins Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
| GH_AW_ROUTING_PROMPT: /tmp/gh-aw/aw-prompts/user.txt | ||
| GH_AW_ROUTING_PROMPT_FALLBACK: /tmp/gh-aw/aw-prompts/prompt.txt | ||
| GH_AW_ROUTING_CONVERSATION_FILE: /tmp/gh-aw/routing-conversation.json | ||
| run: node -e "const fs=require('node:fs'); const path=require('node:path'); const readPrompt=file=>{try{return fs.readFileSync(file,'utf8');}catch(error){if(error.code==='ENOENT')return '';throw error;}}; let prompt=readPrompt(process.env.GH_AW_ROUTING_PROMPT); if (!prompt.trim()) prompt=readPrompt(process.env.GH_AW_ROUTING_PROMPT_FALLBACK); if (!prompt.trim()) throw new Error('Rendered workflow prompt is empty; cannot route this task'); const destination=process.env.GH_AW_ROUTING_CONVERSATION_FILE; fs.mkdirSync(path.dirname(destination),{recursive:true,mode:0o700}); fs.writeFileSync(destination,JSON.stringify([{role:'user',parts:[{text:prompt}]}]),{mode:0o600});" |
GitHub retires GPT-5.6 Terra in Copilot on 16 November 2026. Three workflows still pin it through Copilot, and AWF's automatic recovery for retired models doesn't map Terra. That gives no guarantee those runs keep working, and it would break the exact-identity smoke.
Changes
cloclo: drops the top-levelcopilot/gpt-5.6-terrapin and adds cost/balanced routing to the existing Codex/GitHub engine.allowed-models, so the compiler limits candidates togithub-copilot/gpt-*.secrets.COPILOT_GITHUB_TOKEN, with nocopilot-requests: writeadded.windows: model changes tocopilot/gpt-6-luna. No routing, because AWF routing requires a Linux host and this runs onwindows-latest.smoke-copilot-sub-agents:terra-whoamibecomesluna-whoamiongpt-6-luna.["luna-whoami", "gpt-6-luna", "exact", "/responses"].gpt5-whoami, SDK mode, the experiment, and the gate's strictness..lock.ymlfiles are regenerated, withmake recompile.smoke_copilot_sub_agents.test.cjsandmodel_pin_check.test.cjs.gpt-6.1-sol, so it doesn't collide with Luna's served model.Detection and evals
Their configuration is untouched; only what they inherit changes:
clocloGH_AW_MODEL_DETECTION_COPILOT→GH_AW_DEFAULT_MODEL_COPILOT→detection; not routedcopilot/gpt-6-luna-decisions(unchanged)windowscopilot/gpt-6-lunacopilot/gpt-6-luna-decisions(unchanged)smoke-copilot-sub-agentsgpt-5.3-codex(unchanged)copilot/gpt-6-luna-decisions(unchanged)Case A (compile and inventory)
.mdstill has a Copilot Terra pin orterra-whoami. The remaining Terra references are out of scope:openai/gpt-5.6-terraindaily-fact,windows-growerandfeature-growersmoke-codex-routed'sallowed-modelslist and its matching assertionKnown failures on main
make validate-otel-contractfails on main as well.make fixfails on main: a codemod errors onsighthound-security-scan.md. The unrelated rewrites it makes elsewhere are not included here.