Repository navigation
feat(usai-catalog): refresh models and withhold undeployed gateway entries - #519
Conversation
…tries USAi released new models. Regenerates the harness-neutral catalog and both downstream kit artifacts from the live gateway and models.dev feeds. Added: claude-sonnet-5.5 and gpt-6-astra. Retired upstream: gemini-2.5-pro. Two embedding models the gateway now lists, cohere_english_v3 and text-embedding-005, were already excluded by the non-chat filter. Three advertised GPT-6 chat models are withheld. The gateway lists gpt-6-luna, gpt-6-sol-latest-guardrails-defaultv2 and gpt-6.1-sol-latest-guardrails-defaultv2 in /v1/models, but a /chat/completions call to each returns HTTP 404, "The API deployment for this resource does not exist". Every one was confirmed with a real completion request and re-probed to rule out a transient, against a control group of sibling models on the same route, including gpt-5.6-luna and gpt-5.6-sol, that answered 200. Shipping them would place a model in the picker that fails the moment a user selects it, so they are suppressed through the existing non-chat exclusion map in both the catalog builder and the kit generator, each carrying the measured reason. Remove the entries once the deployments land. The shipped snapshot subset kept gemini-2.5-pro, which no longer exists upstream. It moves to gemini-2.5-flash, the surviving model on that line, so the subset's one-per-vendor coverage stays intact. The prime-agent kit's committed models.json is regenerated from the same catalog; its byte-exact lockstep test caught it as stale. Verified: 21 chat models; usai-provider tests 76/76; providers/usai tests 100/100 including both byte-exact emitter guards; build-catalog --check clean; validate-kits --strict 10 kits plus 2 templates; INDEX current; the shipped JSONC parses through the real startup merge path with both working new models present, all withheld and retired ids absent, and both default selections still resolving. Co-authored-by: OpenCode [claude-opus-4] <[email protected]>
basiliskus
left a comment
There was a problem hiding this comment.
Verdict: request changes — 85f8c6e
The acq-kits sync script now excludes the three undeployed GPT-6 models, but its required lockstep sbx-kits counterpart was not updated. The repository's drift guard fails on this exact mismatch, and an SBX user who runs model sync would still reintroduce those advertised-but-unusable models. Please mirror the exclusion change into integrations/isolation/sbx-kits/usai-provider-kit/scripts/sync-usai-models.mjs and rerun the full test suite.
Assisted-by: OpenCode [usai/gpt-5.6-sol-latest-guardrails-defaultv2] skill:change-review
…-kits sync The acq-kits sync script gained the three undeployed GPT-6 exclusions, but its sbx-kits counterpart did not. The two are required to be byte-identical, so the repository's acq/sbx drift guard failed, and an SBX user running model sync would have reintroduced the advertised-but-unusable models the acq path now withholds. Copies the acq-kits script over the sbx-kits one so the two are byte-identical again rather than hand-editing the second copy, which is how they drift. Verified: the drift guard passes 12/12; sbx-kits usai-provider-kit tests 64/64; acq-kits 76/76; providers/usai 100/100; full python suite 483 passed; build-catalog --check clean at 21 models; validate-kits --strict 10 kits plus 2 templates; INDEX current. Co-authored-by: OpenCode [claude-opus-4] <[email protected]>
|
@basiliskus — valid finding, fixed in You were right that I missed the lockstep counterpart. Your user-impact read is also correct: an SBX user running I copied the acq-kits script over the sbx-kits one rather than hand-editing the second copy, since hand-maintaining two copies is how they diverge in the first place. They are byte-identical again and the exclusions are present at lines 193-197 of the sbx-kits script. Worth noting for anyone reading later: the Re-verified after the fix
The four Ready for another look when you have a moment. |
|
The big comment blocks are repetitive and I'm not sure they're necessary since what's immediately below them didn't change much, but I'm approving because I don't think that should hold up the merge. |
🤖 I have created a release *beep* *boop* --- ## [1.15.0](v1.14.0...v1.15.0) (2026-10-21) ### Features * **acq-kits:** add OpenDesign browser kit ([#438](#438)) ([83e202f](83e202f)) * **isolation:** define provider-neutral input contract ([#518](#518)) ([28a8ebd](28a8ebd)) * **usai-catalog:** refresh models and withhold undeployed gateway entries ([#519](#519)) ([03421e0](03421e0)) ### Bug Fixes * **usai-catalog:** refuse a near-miss instead of enriching from the wrong model ([#484](#484)) ([c3a6dac](c3a6dac)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
## Summary Moves `PATTERNS_KIT_REF` from v1.12.0 (`56d1f5f`) to agentic-coding-patterns v1.15.0 (`f3c6acb`), so the built-in kit bundle picks up: - **opencode kit → OpenCode 2.0.30** (GSA-TTS/agentic-coding-patterns#499). OpenCode 2.0.0–2.0.29 ignore config `instructions` (anomalyco/opencode#51341, fixed in 2.0.30), so a sandbox on an image without a baked OpenCode (`devenv-shell`, or the `devenv-shell` default proposed in #584) currently runs the bundled 2.0.22 and silently drops `instructions`-based conventions. - **paseo kit → Paseo 0.12.0** (GSA-TTS/agentic-coding-patterns#504): fixes for OpenCode v2 under Paseo (daemon OOM on long v2 streams, multi-select answers, HTTP 500s instead of tool errors) and the host-sleep daemon-status fix. - **Kit verify scripts gain a "could not check" verdict** (GSA-TTS/agentic-coding-patterns#460); it only affects kit verify output. Also v1.13.0: usai-provider's host-side catalog normalizer (#436), the paseo identity-gate script (#453), and the team-kit and personal-kit templates under `acq-kits/examples/`. None changes what acq applies by default beyond the two kits above. Also v1.15.0: refreshed usai-provider model catalog (GSA-TTS/agentic-coding-patterns#519, GSA-TTS/agentic-coding-patterns#484), the OpenDesign opt-in kit (GSA-TTS/agentic-coding-patterns#438), and the provider-neutral input contract (GSA-TTS/agentic-coding-patterns#518). acq's provider-facts loader reads `provider-facts/usai.env`, which v1.15.0 does not change. The doc examples and Bats assertions that spell the pin move with it. KNOWN_FAILURE_MODES §9 now names 2.0.30 as the version the kit installs and notes its 15-minute default `chunkTimeout` (the timeout message and retry limits are unchanged from 2.0.22). ## Verification On the v1.15.0 pin: - Focused Bats: `135-configure`, `95-kit-ref-persistence`, `36-agent-catalog`, `50-kit-list-completeness` (63/63) - markdownlint on the changed docs On the earlier v1.14.0 pin (not re-run for v1.15.0): - `npm run lint:md` - `RUN_ACQ=1 scripts/verify-backends --only msb` on macOS, msb 0.7.8: 16 passed, 1 skipped (playbook fetch, no `gh` login), run with `TMPDIR` set to its resolved `/private/var/...` path to get past an unrelated create failure that also hits `main` (#594) - Downstream, with this pin on msb 0.7.8 and `ACQ_IMAGE=devenv-shell:1.0.0`: a team kit's end-to-end verify passed 71/71 (OpenCode 2.0.30 runs and loads `instructions`); with the paseo kit added, Paseo 0.12.0 drove an OpenCode 2.0.30 agent that received the team `instructions`, and its sessions survived a backup, `acq rm`, recreate and restore ## Rollback Revert this PR to restore the v1.12.0 bundle.
Summary
USAi released new models. This regenerates the harness-neutral catalog and both downstream kit artifacts from the live gateway and models.dev feeds, and withholds three models the gateway advertises but cannot serve.
Nothing here was hand-edited. Every artifact is generated output.
Model delta
The gateway now lists 26 models against the committed catalog's 20.
Added and shipped
claude-sonnet-5.5gpt-6-astraRetired upstream
gemini-2.5-pro— no longer in/v1/modelsAlready filtered by the existing non-chat pattern
cohere_english_v3,text-embedding-005— embedding modelsFinal shipped catalog: 21 chat models.
Three advertised GPT-6 models are withheld
The gateway lists these in
/v1/models, but a/chat/completionscall to each returns HTTP 404:gpt-6-lunagpt-6-sol-latest-guardrails-defaultv2gpt-6.1-sol-latest-guardrails-defaultv2Each was confirmed with a real completion request and re-probed to rule out a transient. Against a control group on the same route, the failure is specific rather than environmental:
gpt-5.6-lunagpt-5.6-sol-latest-guardrails-defaultv2gpt-5.6-terraclaude-sonnet-5gemini-2.5-flashclaude-sonnet-5.5(new)gpt-6-astra(new)Shipping them would put a model in the picker that fails the moment a user selects it. They are suppressed through the existing non-chat exclusion map in both the catalog builder and the kit generator, each carrying the measured reason, so the mechanism is not new and the rationale travels with the code. Remove the entries once the deployments land.
This is a gateway-side inconsistency, not a defect in this repo. Reporting it to the USAi team separately so the model list and the deployments can be reconciled at the source.
Snapshot subset correction
model-catalog-snapshot.jsonis a hand-trimmed subset with one model per vendor, guarded by a byte-equality test against the normalizer. It keptgemini-2.5-pro, which no longer exists upstream, so that test failed.It moves to
gemini-2.5-flash, the surviving model on that line, preserving the subset's vendor coverage. The subset is deliberately small; this is the minimum change that keeps the gate meaningful rather than dropping a vendor.prime-agent lockstep
prime-agent/files/home/prime-agent-config/models.jsonis generated from the samecatalog.jsonby the prime-agent emitter. Its byte-exact lockstep test correctly caught the committed file as stale once the catalog moved, so it is regenerated from the emitter rather than edited.That test earning its keep here is worth noting: without it, the prime-agent kit would have silently shipped a stale model list.
One behavioral note
gpt-6-astrarejectsmax_tokensbelow 16:Other models accept 8. A reasoning-model floor. Harmless with the shipped config, which sets no such cap, but it will surface for anyone who sets a very small limit. Not worked around here, since the right fix belongs to whatever sets the cap.
Verification
build-catalog.mjs --check— up to date, 21 modelsusai-providertests — 76/76providers/usaitests — 100/100, including both byte-exact emitter guardsvalidate-kits.py --strict— 10 kits plus 2 templates validgenerate_index.py --check— INDEX currentgit diff --check— cleanBeyond the suites, the shipped JSONC was parsed through the real startup merge path (
parseJsoncfrommerge-global-config.mjs), confirming:gemini-2.5-pro, and both embedding models absentmodelandsmall_modeldefaults still resolve to models that existDefault selections are unchanged:
usai/claude-sonnet-5andusai/claude_4_5_haiku.make validatefails 4 validators (frontmatter schema, cross-reference, network-tier baseline, balanced-allowlist guard). I verified by stashing that all four fail identically on unmodifiedorigin/main— pre-existing and unrelated to this change. Not introduced here, and not fixed here.Downstream
Kits are consumed at a pinned ref, so this does not reach users until a patterns release is cut and
GSA-TTS/agentic-coding-quickstartbumpsPATTERNS_KIT_REF. That pin currently sits two releases behind, which is a separate problem already being addressed.Type of Change
Safety Checklist
apiKeyEnvholds the env-var name, never a value; a test asserts no key material appears in any emitted artifact.AI Assistance Disclosure