Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/providers/registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ export type ProviderConfigSeed = Pick<
// 260710 context refresh: Tier-2 evidence in
// devlog/_plan/260710_provider_hardening/001_research_frontier.md.
const ANTHROPIC_MODELS = ["claude-fable-5", "claude-sonnet-5", "claude-opus-5", "claude-opus-4-8", "claude-opus-4-7", "claude-opus-4-6", "claude-sonnet-4-6", "claude-haiku-4-5"];
const ANTHROPIC_MODEL_CONTEXT_WINDOWS: Record<string, number> = { "claude-sonnet-5": 1_000_000, "claude-fable-5": 1_000_000, "claude-opus-5": 1_000_000, "claude-opus-4-8": 1_000_000, "claude-haiku-4-5": 200_000 };
const ANTHROPIC_MODEL_CONTEXT_WINDOWS: Record<string, number> = { "claude-sonnet-5": 1_000_000, "claude-fable-5": 1_000_000, "claude-opus-5": 1_000_000, "claude-opus-4-8": 1_000_000, "claude-opus-4-7": 1_000_000, "claude-opus-4-6": 1_000_000, "claude-sonnet-4-6": 1_000_000, "claude-haiku-4-5": 200_000 };

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

rg -n 'claude-(opus-4-7|opus-4-6|sonnet-4-6)(\[1m\])?' \
  src/providers/registry.ts \
  src/generated/jawcode-model-metadata.ts

Repository: lidge-jun/opencodex

Length of output: 13756


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- registry context ---'
sed -n '190,235p' src/providers/registry.ts

printf '%s\n' '--- metadata symbols and consumers ---'
rg -n -C 3 'jawcode-model-metadata|MODEL_CONTEXT_WINDOWS|contextWindow|context_window|claude-sonnet-4-6' \
  src package.json README.md 2>/dev/null | head -n 240

printf '%s\n' '--- generated-file provenance ---'
rg -n -i -C 3 'jawcode-model-metadata|model metadata|generate.*metadata|metadata.*generat' \
  . --glob '!src/generated/jawcode-model-metadata.ts' --glob '!node_modules' --glob '!dist' --glob '!build' | head -n 240

Repository: lidge-jun/opencodex

Length of output: 50377


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- generated metadata import and catalog merge ---'
rg -n -C 8 'jawcodeModelMetadata|JawcodeModelMetadata|apply.*Metadata|contextWindow.*metadata|metadata.*contextWindow|modelContextWindows' \
  src/codex/catalog.ts src/providers src/router.ts

printf '%s\n' '--- Anthropic registry entries ---'
rg -n -C 18 'anthropic-apikey|anthropic-oauth|ANTHROPIC_MODEL_CONTEXT_WINDOWS|ANTHROPIC_MODELS' \
  src/providers/registry.ts

printf '%s\n' '--- generator source ---'
sed -n '1,180p' scripts/generate-jawcode-metadata.ts

printf '%s\n' '--- catalog contract and resync notes ---'
sed -n '30,58p' devlog/_chase/_model/002_catalog_contract.md
sed -n '84,94p' devlog/_chase/_model/008_logic_delta.md
sed -n '70,110p' devlog/_plan/260730_remote_issue_merge_round/090_generated_metadata_resync.md

Repository: lidge-jun/opencodex

Length of output: 50375


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- catalog metadata application ---'
rg -n -C 14 'augmentRoutedModelsWithJawcodeMetadata|applyProviderConfigHints|jawcode|metadata' \
  src/codex/catalog/provider-fetch.ts src/codex/catalog/*.ts | head -n 260

printf '%s\n' '--- catalog model construction and precedence ---'
rg -n -C 12 'modelContextWindows|contextWindow|context_window' \
  src/codex/catalog/provider-fetch.ts src/codex/catalog/aggregation.ts src/codex/catalog/parsing.ts | head -n 260

printf '%s\n' '--- generator input and output contract ---'
cat -n scripts/generate-jawcode-metadata.ts | sed -n '1,150p'

printf '%s\n' '--- direct source-of-truth statements ---'
rg -n -C 3 'PROVIDER_REGISTRY.*(source|truth|authoritative)|registry.*(source|truth|authoritative)|generated.*metadata.*(hint|snapshot)|context.*(registry|generator)' \
  devlog docs-site src | head -n 220

Repository: lidge-jun/opencodex

Length of output: 50375


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- jawcode augmentation implementation ---'
rg -n 'function augmentRoutedModelsWithJawcodeMetadata|export function augmentRoutedModelsWithJawcodeMetadata|listJawcodeModelMetadata|getJawcodeModelMetadata' \
  src/codex/catalog/provider-fetch.ts
sed -n '600,700p' src/codex/catalog/provider-fetch.ts

printf '%s\n' '--- metadata lookup and model merge calls ---'
rg -n -C 10 'augmentRoutedModelsWithJawcodeMetadata|applyProviderConfigHints\(.*metadata|metadata.*contextWindow|contextWindow.*metadata' \
  src/codex/catalog/provider-fetch.ts

printf '%s\n' '--- generator override application ---'
sed -n '80,180p' scripts/generate-jawcode-metadata.ts

printf '%s\n' '--- relevant tests ---'
rg -n -C 8 'jawcode.*metadata|sonnet-4-6|contextWindow.*200.?000|contextWindow.*1.?000.?000' \
  tests src --glob '*test*' --glob '*.spec.*' | head -n 280

Repository: lidge-jun/opencodex

Length of output: 36362


🏁 Script executed:

#!/bin/bash
set -euo pipefail

sed -n '842,930p' src/codex/catalog/provider-fetch.ts
sed -n '930,1010p' src/codex/catalog/provider-fetch.ts

printf '%s\n' '--- exact catalog parity assertions ---'
sed -n '590,625p' tests/provider-registry-parity.test.ts

printf '%s\n' '--- generator override references and rationale ---'
rg -n -C 8 'CONTEXT_WINDOW_OVERRIDES|claude-sonnet-4-6\[1m\]|claude-sonnet-4-6.*200' \
  scripts tests devlog src --glob '!src/generated/jawcode-model-metadata.ts'

Repository: lidge-jun/opencodex

Length of output: 17502


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
import re
from pathlib import Path

registry = Path("src/providers/registry.ts").read_text()
generator = Path("scripts/generate-jawcode-metadata.ts").read_text()
metadata = Path("src/generated/jawcode-model-metadata.ts").read_text()
catalog = Path("src/codex/catalog/provider-fetch.ts").read_text()

def value(pattern, text, label):
    match = re.search(pattern, text)
    if not match:
        raise SystemExit(f"missing {label}")
    return int(match.group(1).replace("_", ""))

registry_window = value(
    r'"claude-sonnet-4-6"\s*:\s*([0-9_]+)',
    registry,
    "registry window",
)
override_window = value(
    r'"anthropic/claude-sonnet-4-6"\s*:\s*([0-9_]+)',
    generator,
    "generator override",
)
metadata_match = re.search(
    r'\["claude-sonnet-4-6",\s*([0-9]+).*?\]\s*,\s*\["claude-sonnet-4-6\[1m\]",\s*([0-9]+)',
    metadata,
)
if not metadata_match:
    raise SystemExit("missing generated metadata rows")
metadata_window = int(metadata_match.group(1))
metadata_1m_window = int(metadata_match.group(2))

if "Math.min(model.contextWindow, configuredCap)" not in catalog:
    raise SystemExit("missing lower-bound merge rule")

effective_catalog_window = min(metadata_window, registry_window)

print({
    "registry": registry_window,
    "generator_override": override_window,
    "generated_base": metadata_window,
    "generated_1m": metadata_1m_window,
    "effective_catalog_window": effective_catalog_window,
})
assert registry_window == 1_000_000
assert override_window == 200_000
assert metadata_window == 200_000
assert metadata_1m_window == 200_000
assert effective_catalog_window == 200_000

Repository: lidge-jun/opencodex

Length of output: 382


Align the Claude Sonnet 4.6 context-window contract.

src/providers/registry.ts:217 sets claude-sonnet-4-6 to 1_000_000, while scripts/generate-jawcode-metadata.ts:30-32 intentionally overrides both generated IDs to 200_000. The catalog merge therefore uses 200_000, but direct provider configuration uses 1_000_000. Choose one supported limit and align the registry, generator override, and related tests. Do not add a [1m] variant unless the Anthropic registry exposes and routes that ID.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/providers/registry.ts` at line 217, Align the Claude Sonnet 4.6
context-window limit across ANTHROPIC_MODEL_CONTEXT_WINDOWS, the overrides in
generate-jawcode-metadata.ts, and related tests by choosing one supported value.
Keep claude-sonnet-4-6 consistent between catalog generation and direct provider
configuration, and do not add a [1m] variant unless the Anthropic registry
exposes and routes that model ID.


const ZAI_GLM_52_MODELS = ["glm-5.2", "glm-5.2[1m]"];
const ZAI_GLM_52_REASONING_EFFORTS = ["low", "medium", "high", "xhigh", "max"];
Expand Down
7 changes: 7 additions & 0 deletions tests/provider-registry-parity.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -607,6 +607,13 @@ describe("provider registry parity", () => {
expect(OAUTH_PROVIDERS.anthropic.providerConfig.models).toContain("claude-sonnet-5");
expect(OAUTH_PROVIDERS.anthropic.providerConfig.models).toContain("claude-fable-5");
expect(OAUTH_PROVIDERS.anthropic.providerConfig.modelContextWindows?.["claude-sonnet-5"]).toBe(1_000_000);
expect(OAUTH_PROVIDERS.anthropic.providerConfig.modelContextWindows?.["claude-opus-4-7"]).toBe(1_000_000);
expect(OAUTH_PROVIDERS.anthropic.providerConfig.modelContextWindows?.["claude-opus-4-6"]).toBe(1_000_000);
expect(OAUTH_PROVIDERS.anthropic.providerConfig.modelContextWindows?.["claude-sonnet-4-6"]).toBe(1_000_000);
// A missing window makes the model advertise max_input_tokens: null and lose its [1m] picker row.
for (const model of OAUTH_PROVIDERS.anthropic.providerConfig.models ?? []) {
expect(OAUTH_PROVIDERS.anthropic.providerConfig.modelContextWindows?.[model]).toBeGreaterThan(0);
}
expect(OAUTH_PROVIDERS.xai.providerConfig.defaultModel).toBe("grok-4.5");
expect(OAUTH_PROVIDERS.xai.providerConfig.liveModels).toBe(true);
expect(OAUTH_PROVIDERS.xai.providerConfig.models).toContain("grok-4.5");
Expand Down
Loading