Repository navigation
Resolve model aliases the same way on every engine - #69487
Conversation
Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
…lution Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
|
Make sure resolution is tracked in agent unified session file |
|
@pelikhan It is: the shared resolver ( |
Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
…-aliases # Conflicts: # pkg/workflow/agy_harness_test.go Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
…navailable message Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
…mport cache Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
…west live match Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
…-aliases # Conflicts: # .github/workflows/duplicate-code-detector.lock.yml Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
|
Verified at End-to-end smokes, dispatched on this branch (all green);
Blocking: an exact model id is rewritten. Not blocking: every run reports the known |
|
@SivaKesava1 just push this PR in when you think it is ready. would be good to think about some QA test strategy for all this. |
Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
|
@copilot address the following outstanding work in one pass:
Push the necessary fixes, reply to each listed review thread and resolve it when addressed. Ignore feedback already answered or resolved. Use the pr-finisher skill and stop when only human review or CI remains; do not trigger CI. Sous-chef head: 2e35838
|
…-aliases # Conflicts: # pkg/workflow/testdata/TestWasmGolden_AllEngines/pi.golden Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Pushed merge commit 2ba9099 with latest main cbc3269 via |
|
@copilot address the following outstanding work in one pass:
Push the necessary fixes, reply to each listed review thread and resolve it when addressed. Ignore feedback already answered or resolved. Use the pr-finisher skill and stop when only human review or CI remains; do not trigger CI. Sous-chef head: 2ba9099
|
…-aliases Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Merged the latest |
Round 9: the branch is at
I updated only the description's validation section. |
* Initial plan * Add shared /reflect fixture for model resolution Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Resolve configured model aliases with one shared step on every engine Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Switch smokes to aliases, recompile locks, document shared model resolution Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Apply remaining changes Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Remove stray import cache file committed from a test run Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Keep pi's audit-classified startup phrase ahead of the shared model_unavailable message Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Restore pkg/workflow/.github files from main removed with the stray import cache Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Fix typecheck errors in shared model resolution callers Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Expect the pi smoke's gpt-5-mini sub-agent alias to resolve to the newest live match Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Keep buildInitialWorkflowData at main's length for largefunc lint Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Prefer a live exact model id over an alias with the same name; restore pi smoke gpt-5-mini expectation Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Merge main; regenerate frontmatter docs for models: aliases Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Pass bundled model ids through without AWF, emit GH_AW_MODEL_ALIASES for every harness, validate imported aliases Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Ship built-in model aliases with the setup action; emit only workflow aliases Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Recompile lock files without built-in alias maps Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> * Fix resolver JSDoc types; document alias env var reduction Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com> Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
|
🎉 This pull request is included in a new release. Release: |
Each engine handled
model:differently, so an alias or a family pin that worked on Copilot failed elsewhere. For example, pi withmodel: copilot/opusfailed with"opus" is not advertisedwhile Copilot resolvedopustoclaude-opus-5.5. This PR generalises Copilot's resolver into one shared step and runs it in every harness before the CLI starts.Shared resolution step (
resolve_model_alias.cjs)resolveConfiguredCopilotModeland the Copilot harness's single bounded/reflectrefetch becomeresolveEngineModel. There is still only one resolver.provider/prefix limits the lookup to that provider, socopilot/opusnow also works on the Copilot engine.?effort=carries through.autokeeps each engine's current meaning.model_unavailableandcatalog_unavailablecauses with the fix(copilot): reject silent configured-model substitution #68819 wording. The sentence about the agentic-workflows integration appears only when the provider is Copilot.catalog_unavailableafter one refetch.Harnesses
copilot/<alias>now resolves.aw_info.jsonmodel_selectionis kept.pi_models_json.cjs) and sub-agents (pi_subagent_config.cjs) both use the shared step.detect_agent_errorsstep, so its unavailable-model failure issue matches Copilot's.autovalues now resolve before Claude Code starts. Theautorule (Sonnet → Opus → Haiku) and the Claude on Copilot: pass Claude Code a modelOverrides map for Copilot's dotted Claude model ids #68839 model-id overrides still apply after resolution.sonnet,opusandhaikunow use gh-aw's alias map instead of Claude Code's built-ins.copilot/autostays the gateway sentinel.Recording the result
model resolution: engine=… role=… configured=… resolved=… provider=… status=….agent/model-resolution.json, which is added to the agent artifact.unified_session.cjsprojects that record into a runner-writtenmodel.resolutionevent inusage/aw_session.jsonl. This is spec §4.7, T-UAS-074, version 1.11.0, and the session schema is regenerated.Compiler
models:now accepts alias keys. The reserved keys (allowed,blocked,providers,default-ai-credits-pricing) keep their meaning, and the V-MAF key rules apply.workflow_builder.gopreviously passednilhere.Tests
agy_harness.test.cjs./reflect(fixtures/awf-reflect-ddg-38945917145.json). The incomplete-discovery variant (models_fetch_complete: false, Copilotmodels: null) is derived from it, and the tests say so.Smokes changed for the end-to-end checks
smoke-pi-sub-agents: main modelcopilot/gpt-5.3-codex→copilot/gpt-5.3. This is an alias that resolves togpt-5.3-codex.smoke-claude-on-copilot:claude-haiku-4.5→copilot/haiku.detect_agent_errorsstep and its conclusion env vars;model.resolutionadded to aider's interpreted event types;--modelin three pi locks that use agpt-5.4alias.Docs
reference/engines.mdhas a new "Model aliases" section, and the six engine pages each describe their engine's handling.model-tables.mdandglossary.mdare corrected: custom aliases now work, and resolution happens at runtime.model-alias-specification.mdis now 1.3.0: it adds §8.8 on provider-prefixed aliases, adds the reserved-keys note, and corrects the V-MAF-020 file mapping in §14.Validation status
12ba3ffcba, 41 checks). Lock files re-conflict whenevermainrecompiles every workflow (for example Bump MCP Gateway to v0.4.35 #69581); they are resolved bymake merge-main+make recompileonly.make agent-finish(round 5, on a merge withmainincluding AWF v0.28.62): stops attest-js; withmake -k,deps-dev,fmt,lint,build,build-wasm, Go tests (0 failures),test-wasm-golden,test-guidanceandvalidate-otelpass. JS: 6 of 22,269 tests fail:copilot_sdk_mcp_config(2),copilot_sdk_tool_config(1) andwork_queue_control_performance(2 timeouts) also fail onmain;awf_reflect_summary"returns null when file does not exist" fails onmaintoo in our WSL runs (a race between test files writing the same fixture).collect_usage_artifact_files_test.shalso fails onmain.fc81544567.model.resolutionevents in each run'susage/aw_session.jsonl): see Resolve model aliases the same way on every engine #69487 (comment). After round 4's precedence fix,smoke-pi-sub-agents39050461861 ateb5498e64frecordscopilot/gpt-5-mini→gpt-5-mini(exact),copilot/gpt-5.3→gpt-5.3-codex(resolved).gpt-5-mini,gemini-3.8-flash); the alias is used only when there is no exact live match.Out of scope
/reflectfiles withrouting_models: nullasinvalid_model_inventory.sandbox.agent.model-fallbackbehaviour.