Skip to content

fix(catalog): consolidate capability overrides, modality seeds, and exclusions - #5529

Closed
luvs01 wants to merge 11 commits into
stack/codex-routing-observabilityfrom
stack/codex-catalog-policy
Closed

luvs01 wants to merge 11 commits into
stack/codex-routing-observabilityfrom
stack/codex-catalog-policy

Conversation

@luvs01

@luvs01 luvs01 commented Sep 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

Consolidate #5466, #5273, #5296, #5282, and the explicit-vision corrections carried by e0504ae42d69943bb2292e6dc9509f71cc3ebd7a and 37ae15eda35a68325fb82f4ea6939cdf7475860b into one catalog/capability layer above #5504 in Stack #5505.

  • Resolve case-insensitive capability overrides consistently and expose the correct owner of each merged capability. Preserve the lower registry/operator limit for OpenAI API-key models.
  • Support provider verbosity records, explicit vision modality seeds, and model-rename migration without reviving excluded Codex catalog aliases.
  • Preserve all ten source commits and attribution. A follow-up fixes two reproduced case-folded cap regressions and moves the unchanged exclusion regression into a registered sibling test to respect the existing size limit.
  • Keep the related client, routing, and catalog work in one three-layer review stack. No GUI changes in this layer.

Verification

  • Prepared catalog branch: 515 distinct provider/routing/client/catalog/management tests passed. Final layout/ratchet checks: 28 passed. Direct changed-file regression check: 41 passed.
  • After integrating above exact parent 8ca80420b4da6cedac59738db850e85b48b10829: bun run typecheck, bun run structure:check, and the file-size ratchet passed. Four focused catalog/provider/management files passed: 44 tests, 198 assertions, zero failures.
  • The new cap tests failed before the follow-up and passed afterward; three query casings, both lower/higher operator caps, provenance, and input immutability are covered.
  • Prepared branch privacy scan and diff checks passed. No limits or baselines were raised.
  • Docs-site build was not run because its dependencies were unavailable. Full-suite, exact-head cross-platform CI, and independent security review remain pending; this PR stays draft. Earlier transient cleanup-hook failure is excluded from successful counts and was followed by a complete passing provider run.

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

luvs01 and others added 11 commits September 22, 2026 19:59
(cherry picked from commit bff4129)
(cherry picked from commit 8b0b5bb297f174548212c5e9c5eee7132cd10c81)
A case-varied operator key in modelReasoningEffortMap claimed nothing: nestedMapFill kept the registry-spelled row beside it, and the case-folded runtime lookup hit the registry row first. The outer key now claims case-insensitively while the claimed row's inner entries still fill underneath the operator's inner map.

(cherry picked from commit 0fa7712)
(cherry picked from commit 1087c9f7e14b3aab15be60db7d7d8c7595c86cb4)
Per review on #5466: provenance answered 'registry' when the winning key was registry-spelled but case-equal to an operator key, even though mapFill semantics mean the operator value won. legacyModelSource now claims case-equal registry keys into the operator row before the walk, matching the merged map the value lookup sees. Adds a provenance regression test for model id claude-opus-5 with operator key Claude-Opus-5.

(cherry picked from commit 84e6417)
(cherry picked from commit 7ae837a8722f531978d4cef37facbe5787451337)
(cherry picked from commit 39db215)
(cherry picked from commit f0bf7bead9bc18eb7517ddcc3c8e4dc916ae8b58)
The provider management validator shape-checked sibling capability records but not modelSupportsVerbosity, so an invalid value (array, non-boolean values, empty keys) could persist and reach consumers unchecked.

(cherry picked from commit 3f5c4f8)
(cherry picked from commit faaa2e98f05698f7b665f2cfb90b79e8ace795e4)
(cherry picked from commit 0e97a45)
(cherry picked from commit f9869840194f7b7a1e60b9dd24fc056e70ae6d69)
(cherry picked from commit 7c7b1f5)
(cherry picked from commit 9e6ea3b6f9ea8d7e6315f82f17ddf9b607cd25d1)
…r guide

Co-Authored-By: Epinephrine <luvs01@hanmail.net>
(cherry picked from commit ad19aec)
(cherry picked from commit a45f2c6527d90e916238c9e945f1aa5497e5edff)
…ility

(cherry picked from commit ceb8807)
(cherry picked from commit 9dbbf8f983a5820eb5c49770c5bed7e320dbda12)
(cherry picked from commit fd795db)
(cherry picked from commit 9a0039883cf764b90caca52ccb750d70aa9145c3)
Claim case-equal API-key limit rows consistently with policy provenance while retaining the lower registry/operator cap. Cover smaller and larger limits across query casing without mutating inputs. Move the compatibility exclusion test intact to a registered sibling file to respect the unchanged catalog test size cap.

(cherry picked from commit a55ed987bc3b8e93770cbe05037b179e1c41924c)
@coderabbitai

coderabbitai Bot commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@luvs01
luvs01 added this pull request to stack #5505 September 22, 2026 11:07
@github-actions github-actions Bot added the bug Something isn't working label Sep 22, 2026
@lidge-jun

Copy link
Copy Markdown
Owner

리뷰 · 우선순위 62 / 80

이 PR은 카탈로그·능력치(capability) 고침 여러 개를 한 스택 층으로 모읍니다. 본문이 말하는 원천은 #5466, #5273, #5296, #5282와 그 밖의 조각들입니다. 하는 일은 네 덩어리입니다. (1) 운영자가 모델 이름을 대소문자만 다르게 적어도, 레지스트리 값이 그 위에 덮이지 않게 mapFill / nestedMapFill / positiveCapMap / provenance를 맞춥니다. OpenAI API 키 쪽 한도는 예전처럼 더 작은 값을 지킵니다. (2) 관리 API가 modelSupportsVerbosity 모양을 다른 boolean 맵처럼 검사합니다. (3) Codex effort 호환 검사에서 파서가 허용하는 none / minimal을 “런타임이 거부한다”고 오해하지 않게 하고, deepseek·opencode-godeepseek-v4-pro를 라우팅 카탈로그에서 빼 둡니다. (4) OpenCode Go의 deepseek-v4.1-flash는 레지스트리에 text+image로 두고, 예전에 저장해 둔 text-only를 부팅 때 고쳐 쓰던 stale-vision-classification-migration은 삭제합니다. 이미 저장된 제한은 그대로 두고, 문서로만 수동 전환을 안내합니다. GUI는 없고, base는 dev가 아니라 스택 브랜치 stack/codex-routing-observability입니다. draft이고, 테스트·문서·structure 설명이 같이 따라옵니다.

라인 - base stack/codex-routing-observability — 선호 base dev가 아닙니다. 스택 층이라 그럴 수 있지만, #5504 위에 쌓인 순서·머지 경로가 맞는지 한 번만 확인이 필요합니다.
라인 - src/providers/stale-vision-classification-migration.ts 삭제 — 이미 opencode-go를 쓰던 설치는 저장해 둔 noVisionModels / modelInputModalities 때문에 계속 sidecar로 갑니다. 새 설치만 네이티브 vision이 됩니다. 의도된 정책이면 문서 안내로 충분하고, “저장값이 예전 시드인지 운영자 의도인지 구분 불가”라는 설명과도 맞습니다.
라인 - tests/codex-integration/codex-catalog-exclusions.test.ts — describe 이름이 여전히 Gemini image-capable exemption입니다. 옮긴 내용은 deepseek 제외·호환 필터입니다. 이름만 헷갈립니다.
라인 - 중복 PR — #5466, #5273, #5296, #5282가 아직 OPEN입니다. 이 통합 PR이 그 내용을 담았다면 무효/중복으로 닫는 편이 맞습니다.
라인 - 검증 — draft이고 CI 테스트 샤드·gates가 아직 pending입니다. 본문 체크리스트의 security 항목도 비어 있습니다. 머지 전에 통과·검토를 끝내야 합니다.

메인테이너의 판단이 필요한 지점

기존 사용자 vision을 (A) 지금처럼 수동 opt-in으로 둘지, (B) 예전처럼 안전한 범위의 자동 수리를 다시 넣을지. 그리고 이 스택 층을 언제 draft에서 빼서 #5504 등과 어떤 순서로 올릴지. 원천 PR 네 개는 이 PR 머지(또는 ready)와 함께 닫을지.

너의 추천

케이스 접기·provenance·cap·verbosity 검증·제외 목록은 방향이 분명하고 회귀 테스트도 같이 왔습니다. 이 형태로 가는 쪽을 추천합니다. ready 전에 (1) CI를 끝까지 보고, (2) describe 이름만 고치고, (3) #5466/#5273/#5296/#5282는 이 PR이 대체한다고 확인되면 닫으세요. vision 자동 마이그레이션을 다시 넣지 않는 선택은 문서·structure 설명과 일치하니, 기존 사용자 영향만 릴리스 노트에 한 줄 더 적어 두면 충분합니다. types.ts/config.ts 쪼개기·preview deploy는 이번 범위와 무관합니다.

이 댓글은 grok-bot이 작성했습니다

@lidge-jun

Copy link
Copy Markdown
Owner

Superseded by #5609, which is open and not yet merged. The case-folding, verbosity-validation, effort-sentinel and DeepSeek-exclusion work is carried there. Cherry-picked (authored by you): 65a94a3, d0f5b83, ffb6f91 + e54086b, c7e976d. Reimplemented with you as co-author: 33e5ce5, 87ab453, d11f35f, e4b6cc2. The pinned GPT-6 Luna effort ladder is kept. Not carried: e0504ae and its guide 37ae15e. They would remove the startup repair from #5164 (3ebdbd4), which rewrites only rows still equal to the stale seed and leaves modelCapabilities alone, and without it existing installs would keep stripping images. Thank you!

@lidge-jun lidge-jun closed this Sep 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants