Repository navigation
feat: default to GPT-6.1 Sol and Claude Opus 5.5 across Tiers 1-3 - #188
Conversation
…lts and pin v2.12.0 SkillSpector sends its own structured-output requests, so its model now comes from SKILLSPECTOR_DEFAULT_MODELS instead of the provider chat default. Precedence is SKILLSPECTOR_MODEL, then an explicit SKILL_EVAL_LLM_MODEL, then the per-provider SkillSpector default. The defaults keep today's values, so a later chat-default upgrade cannot reach SkillSpector before the pinned release supports it. The bridge now forwards operator-set SKILLSPECTOR_MODEL_<SLOT>, SKILLSPECTOR_MODEL_REGISTRY and SKILLSPECTOR_REASONING_EFFORT, and keeps SKILLSPECTOR_TEMPERATURE out. When every SkillSpector model is a GPT-6 model and no effort is set, SkillEvaluator sends reasoning effort medium; it never sets one for Claude models. The LLM stage records the requested skillspector_model and skillspector_reasoning_effort next to skillspector_version. The install hint, docs and their tests pin SkillSpector to v2.12.0, and a new test keeps every install reference on that one tag. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
…ze budgets per model family One shared helper set in provider_config decides the request shape for every model call: GPT-5 and GPT-6 models are reasoning models (no temperature, max_completion_tokens on native OpenAI), gateway catalog leaves such as aws/anthropic/bedrock-claude-opus-5-5 resolve to the Claude model they name, and Claude 5.5 or later is recognized for effort and refusal fallback. The LLM client, the host judge module and the in-container verifier template use it; the template keeps a mirrored copy with a drift test. Output budgets are sized per family: OpenAI reasoning models get at least 32768 tokens, other models 16384 for verification, rubric, dedup and judges, 8192 for report suggestions and 16000 for dataset generation. Reasoning effort goes only to GPT-6 models and native-Anthropic Claude 5.5 or later (verify high; rubric, dedup and judges medium), so today's default models get no new effort. RAGAS is skipped for reasoning judges. Refusals and truncation are typed errors in the shared client (OpenAI content_filter or refusal text, Anthropic stop_reason refusal or max_tokens, Bedrock via LiteLLM). Claude 5.5 requests to the native Claude API use server-side fallback to Claude Opus 4.8. In the verifier, Bedrock retries a content_filtered Claude 5.5 reply on Opus 4.8 in the same geography, and a refusal or empty reply moves on to the next LLM_JUDGE_FALLBACK_MODELS entry. --llm-verify and rubric evaluation report the failure cause. The verifier and dedup prompts ask for rationale instead of reasoning, and every consumer accepts both. Rubric and dedup verdicts thread a response schema. Judge details record judge_model_used, judge_reasoning_effort and judge_fallback_used, run_config records the judge effort, and lift leaves out cases whose arms used different judges (judge_mixed_cases). The unused CONTENT_DEDUP_LLM_* constants and LLM_VERIFY_MODEL are removed; explicit credentials now fall back to the provider default model. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
… 5.5 effort Harbor installs the latest agent CLI unless it is given a version, so a new Codex or Claude Code release could change Tier 3 results between runs. Pin the releases this integration was validated with: Codex 0.161.0 (keeping reasoning_effort=high) and Claude Code 2.1.292. Claude Code's default effort depends on the model. Claude 5.5 and later models now run with reasoning_effort=medium, set explicitly in the Harbor command; older models such as today's claude-opus-5 default keep Claude Code's own default, so current runs are unchanged. Local mode runs the operator's installed CLI, so it gets no version pin. Its Claude Code and Codex wrappers record the installed version and fail the trial before the agent starts when the CLI is too old for the model: Claude 5.5 needs Claude Code 2.1.280 or newer, and GPT-6 needs Codex 0.159.1 or newer. is_gpt6_model becomes public so the local wrappers can share it with the provider helpers. A drift test keeps the documented versions in step with the pins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Gateway Codex now defaults to openai/openai/gpt-6.1-sol and gateway Claude Code to aws/anthropic/bedrock-claude-opus-5-5. OpenCode keeps nvidia/nvidia/nemotron-3-super-120b-long-ctx as its own literal, so a later gateway chat-default change does not move it. Claude Code on the shared gateway key runs with CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1. Gateways that forward Anthropic-format requests to another provider reject pre-release fields such as context_management with HTTP 400. A separately configured Claude route (its own ANTHROPIC_API_KEY) is unchanged. The Claude 5.5 effort pin from the previous commit now applies to the gateway default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
CHAT_DEFAULT_OPENAI moves from gpt-5.6-sol to gpt-6.1-sol. Chat, judging, the dimension and insights judges, native Codex and the SkillSpector openai default follow it, so SkillSpector now runs at SKILLSPECTOR_REASONING_EFFORT=medium and the per-role effort values (verify high; rubric, dedup and judges medium) take effect on OpenAI. OpenCode on the native OpenAI provider keeps openai/gpt-5.6-sol (OPENCODE_OPENAI_DEFAULT_MODEL) while SKILL_EVAL_LLM_MODEL is unset. OpenCode calls tools through Chat Completions, and GPT-6.1 Sol supports tool calls only on the Responses API. An explicit SKILL_EVAL_LLM_MODEL still reaches OpenCode, and the model source is recorded as 'native OpenAI agent default'. The OpenCode namespace step now applies to every default source rather than a fixed list. The Harbor verifier template's last-resort judge becomes the provider-keyed DEFAULT_JUDGE_MODELS. It used to send an OpenAI model ID to Anthropic, Bedrock, NVIDIA Build and gateways when no model was configured. A drift test keeps it equal to CHAT_DEFAULT_MODELS. The unused host-side llm_judge.DEFAULT_JUDGE_MODEL is removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
CHAT_DEFAULT_ANTHROPIC moves from claude-opus-5 to claude-opus-5-5 and CHAT_DEFAULT_BEDROCK from us.anthropic.claude-opus-5 to us.anthropic.claude-opus-5-5. Chat, judging, native and Bedrock Claude Code, and the native Claude route for gateway Claude Code (a separate ANTHROPIC_API_KEY) follow them. On the native Claude API the per-role effort and server-side refusal fallback now apply to the defaults, and Claude Code runs them at reasoning_effort=medium. SkillSpector keeps claude-opus-5 and us.anthropic.claude-opus-5 through SKILLSPECTOR_DEFAULT_MODELS, because SkillSpector v2.12.0 does not return structured output for Claude 5.5. The verifier template's DEFAULT_JUDGE_MODELS moves with the chat defaults, as its drift test requires. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
…ests The SkillSpector provider-default test lists "AWS_BEARER_TOKEN_BEDROCK" followed by "us.anthropic.claude-opus-5". Gitleaks' generic-api-key rule reads that model ID as a secret: it follows a token name, contains a digit, has entropy above 3.5 and matches no default stopword. The full-history scan would keep failing even if a later commit changed the line, so add an exact-value, single-path allowlist entry and pin it with the other single-value entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
…omments The effort gate's docstring and test comment described GPT-5.6 Sol and Claude Opus 5 as today's defaults. After the default moves they are just other models, so say that instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
rng1995
left a comment
There was a problem hiding this comment.
Automated review: 9 findings (0 P1, 2 P2, 7 P3); 8 posted inline.
Findings outside the diff or about the description:
PR_DESCRIPTION: [P3] Description overstates Bedrock effort and fallback coverage and mislabels token budgets
The description says per-role effort is "applied only to gpt-6.x and Claude ≥ 5.5", and the plan table gives Bedrock us.anthropic.claude-opus-5-5 the verifier high and rubric/dedup medium values. In the code, effective_reasoning_effort returns None for every bedrock route, so the new Bedrock default gets no effort in any role. The CHANGELOG states this correctly ("on the Anthropic API"). Rollout gate 2 expects "fallbacks firing" on Bedrock, but host-side Bedrock calls (verifier, rubric, dedup) have no refusal fallback; only the in-container Tier 3 judge has one. "Token ceilings: GPT 32768, Claude 16384" is also inaccurate. For GPT-5/6, 32768 is a floor (max(max_tokens, 32768)). 16384 applies to every non-reasoning model, not only Claude. Dataset generation uses 16000 and report suggestions 8192.
Suggested fix: Say effort goes to GPT-6 (non-Bedrock routes) and to Claude 5.5+ on the anthropic provider, and mark Bedrock as "model default" in the effort table. Limit gate 2's Bedrock fallback check to the Tier 3 judge. Reword the budgets to: "GPT-5/6 at least 32,768; other models 16,384 for verifier, rubric, dedup and judges (8,192 report suggestions, 16,000 dataset generation)."
FindingVerifier went through LLMClient.process, which turned a reply cut off at the output-token limit into the empty fallback, so every complete NDJSON verdict line was discarded and the llm-verification stage was reported as skipped. LLMClient.process now parses the partial text for subclasses that set salvage_truncated_response, and FindingVerifier does. last_failure still records the truncation, and the partial-verdict message names it. Corrects the llm_judge comment that claimed the verifier already salvaged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
…ema downgrades per provider The Anthropic SDK refuses non-streaming requests above a per-model limit (8,192 for Claude Opus 4 and 4.1) before sending them, so the 16,384 role default and the 16,000 dataset-generation budget broke those models. The shared client now clamps max_tokens to the SDK's MODEL_NONSTREAMING_TOKENS entry when one exists; a test drives the real SDK through a mock transport. _call_with_schema_fallback no longer knows that Anthropic's output_config also carries the effort. It takes a build_kwargs(include_schema) callable, and each provider branch builds its own request with or without the schema, matching the Harbor template's pattern. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
…ent effort scope SKILLSPECTOR_DEFAULT_MODELS aliased the OpenAI and NVIDIA chat defaults, so the next chat-default bump would have moved SkillSpector without re-validating the pinned release. Every entry is now a literal; the test asserts the literals, and the changed-chat-default test covers every provider. effective_reasoning_effort's docstring said only native-Anthropic endpoints get an effort, but every anthropic-provider endpoint, including a custom ANTHROPIC_BASE_URL, does (and a test pins that). The docstring and the judge comment now say so; Bedrock and OpenAI-compatible Claude routes keep the model default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
For a multi-step trial without an authoritative root row, _logical_attempt_rewards synthesized a logical reward without the steps' details, so lift never saw which judge scored it. A case where one arm's step fell back to another judge model was neither left out of lift nor counted in judge_mixed_cases. The synthesized reward now carries the union of its steps' judge models per judge metric in a private _judge_models key, which _judge_models_by_case reads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
…nd insights judges Only the verifier, the rubric and the Tier 3 judge payload had request-level effort tests. A parametrized test now runs the deduplication LLM path, DimensionJudge and InsightsJudge against a mocked OpenAI SDK on gpt-6.1-sol and asserts reasoning_effort is medium, so dropping the dedup kwarg or the judges' default_reasoning_effort fails a test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
…ient's helpers call_public_llm sends judge requests through LLMClient, so llm_judge._chat_completion_payload had no production caller and its own token-limit, temperature and URL logic only checked the Harbor template against a second copy. It now composes LLMClient's _token_limit_kwargs, _temperature_kwargs and _build_openai_response_format with effective_reasoning_effort, so the template drift test compares against what the client sends. The duplicate _is_native_openai_chat_url is removed; its canonical and deceptive URL cases now assert the payload's token key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
|
Review follow-up for findings outside the diff:
|
Resolve the CHANGELOG.md conflict: keep main's Added entry (SkillSpector version in the Tier 1 card) and multiline-catalog fix alongside this branch's Changed and Fixed entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Resolve conflicts with #193: keep both imports in local_agents.py (provider_config model checks and the installed-agent classes) and both sides' Changed and Fixed entries in CHANGELOG.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Resolve the CHANGELOG.md conflict with NVIDIA#188 and NVIDIA#193 by keeping both sides' Fixed entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Resolve the CHANGELOG.md conflict with NVIDIA#188 and NVIDIA#193 by keeping both sides' Fixed entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Resolve the CHANGELOG.md conflict with NVIDIA#188 and NVIDIA#193 by keeping both sides' Fixed entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Resolve the CHANGELOG.md conflict with NVIDIA#188 and NVIDIA#193 by keeping both sides' Fixed entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Resolve conflicts with NVIDIA#188 in inference/client.py and rubric_eval.py. Keep NVIDIA#188's Anthropic and OpenAI request builders (reasoning effort, structured output, per-model SDK clamp, family token limits) and feed them this branch's per-request budget, so RubricJudge still raises the budget for reasoning models and caps it at 16,384 on the Anthropic provider. RubricJudge keeps both sides' class attributes. The rubric default is now 16,384 on main, so the CHANGELOG entry and the constants comment no longer say 4,096, and two budget tests follow main: an explicit endpoint now uses the provider default model. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Resolve the CHANGELOG.md conflict with NVIDIA#188 and NVIDIA#193 by keeping both sides' Fixed entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Brings in #184, #187 (SkillSpector version in the HTML report), #188 (GPT-6.1 Sol / Claude Opus 5.5 defaults, reasoning effort, structured output, token sizing, refusal fallback), #191 (multiline catalog descriptions), #193 (Docker agent bootstrap) and #199 (per-step token runtime-failure detection). Conflicts: - .gitleaks.toml: keep every allowlist from both sides (the PR's three history allowlists and main's Bedrock model ID allowlist). - CHANGELOG.md: every entry from both sides under Unreleased, one Added, Changed, Fixed and Security heading each; the shared docs entry once. - deduplication/intra_skill/intra_skill_validator.py: the client keeps the PR's LLM_VERIFY_MAX_TOKENS and gains main's medium reasoning effort. - deduplication/intra_skill/llm_analyzer.py: the PR's bounded prompt and verdict parsing, with main's structured-output schema request. - embedding/registry.py: keep the PR's _embed_texts refactor (main only reformatted the old loop); main's multiline-description check merged. - inference/__init__.py: export both sides' names. - reporting/html.py: the PR's run-status tables plus main's SkillSpector version helper; is_tier2_validator_name stays in run_status.py. - tier3/eval_core/llm_judge.py: drop _is_native_openai_chat_url (removed by main) and _configured_secret_values (moved by the PR). - tier3/harbor/collector.py: keep the PR's shared-metric pass lift and main's judge-model helpers; _compute_lift takes main's per-trial rewards and the PR's keyword-only N/A lists, and its overall uses the paired scores with the PR's N/A-aware basket check; lift.json keeps the PR's _paired_lift. - tier3/harbor/local_agents.py: the PR's SkillEvaluatorCodex (subagent rollouts, setup network errors) now extends main's bootstrap-aware installed_agents.SkillEvaluatorCodex; NVIDIA Build Claude Code keeps SetupNetworkErrorAgent on main's SkillEvaluatorClaudeCode. - tier3/harbor/runner.py: imports from both sides; Docker uses main's DOCKER_AGENT_IMPORT_PATHS, other Harbor backends the PR's HARBOR_AGENT_IMPORT_PATHS; agent kwargs from main's _harbor_agent_kwargs. - tier3/harbor/templates/eval.py: the PR's skill-metric N/A helpers and allow_not_applicable judges, with main's 16,384-token judge ceiling and judge_model_used / reasoning effort / fallback provenance. - utils/tool_runner.py: main's pinned SkillSpector v2.12.0 hint plus the PR's scanner hints. - validators/security.py: imports from both sides. - tests/inference/test_llm_client.py: keep both sides' tests. - tests/test_harbor_local_mode.py: main's parametrized Docker route check plus the PR's Codex subclass assertion. - tests/tier3/test_judge_parse_robustness.py: the PR's partial-salvage assertions plus main's new provenance and refusal tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
…icts Main's #188 changed the content-deduplication prompt to ask for `rationale` instead of `reasoning` and sends medium reasoning effort for deduplication verdicts. The PR's shared Tier 2 verdict parser read only `reasoning`, so after the merge an intra-skill verdict lost its explanation. parse_bounded_llm_verdict now reads `rationale` and still accepts `reasoning`, and the plugin Check B verdict client sends the same medium effort as the intra-skill one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Main's #188 leaves a case out of a judge metric's Skill lift when its two arms were judged by different models (a judge fallback in one arm) and counts it in lift.json `judge_mixed_cases`, through _compute_lift's per-trial rewards. The PR writes lift.json, integration_lift.json and loose_parts_lift.json through _paired_lift, which pairs both arms on the same cases first, so main's exclusion never reached those files after the merge. pair_metric_scores now takes the judge-mixed cases per metric and leaves each out of that metric only, listed in `basis.excluded_cases` with reason `judge_mixed`; _paired_lift passes them and records `judge_mixed_cases`. _compute_lift shares the same _judge_mixed_cases helper. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Brings in NVIDIA#188 (GPT-6.1 Sol / Claude Opus 5.5 defaults, reasoning effort, refusal handling, per-model token sizing), NVIDIA#193 (Docker agent Node/npm bootstrap) and NVIDIA#199 (per-step token runtime-failure evidence). Conflicts: - src/skillevaluator/inference/client.py: keep main's per-provider _openai_kwargs builder, reasoning effort and _extract_choice_content refusal/truncation checks; wrap that call in the PR's one-shot ADC token refresh on 401 for Vertex AI OpenAPI endpoints. - src/skillevaluator/tier3/harbor/runner.py: import both sides' provider_config names; docker and gke share the PR's branch, with docker defaulting to main's DOCKER_AGENT_IMPORT_PATHS and gke to the PR's CONTAINER_AGENT_IMPORT_PATHS, and the GKE secure environment kept. - src/skillevaluator/tier3/harbor/templates/eval.py: take main's _call_openai_compatible refactor (refusal fallback, empty-reply fallback, judge-call recording) and move the PR's Vertex ADC 401 refresh into _call_openai_compatible. - tests/test_provider_agent_routing.py: union of both sides' imports. - tests/validators/test_security.py: keep the PR's Vertex ADC SkillSpector tests and main's SkillSpector model/effort tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Brings in main through 3d91107, including #182 (Kata), #188 (model defaults), #193 (Docker agent bootstrap), and #77 (publication evidence). Kata, Runta, and Mosaic are all exposed: 26 Harbor-native backends plus local, 27 modes in total. cua-cloud, opensandbox, hf-sandbox, podman, prime, and smol stay disabled. Conflicts: - src/skillevaluator/tier3_environments.py: the registry-only comment lists the six backends that remain unexposed. - src/skillevaluator/tier3/harbor/runner.py: took main's Sequence import and staged_task_paths.extend(task_paths) for the #77 runtime-binding check. The Mosaic staging check from this branch stays after it. - docs/cli-reference.mdx, docs/tier3-live-evaluation.mdx, docs/agents-and-sandboxes.mdx: 27 modes / 26 Harbor-native backends, with kata, runta, and mosaic listed. The disabled list is the six above. Kept main's Kata kwarg notes, and kept both main's Podman rationale and this branch's Prime/Smol rationale. - tests/test_harbor_environment_contract.py: kept main's Kata tests and this branch's Runta/Mosaic tests. - tests/test_harbor_local_mode.py: the unexposed-backend set is the six above. - tests/test_oss_packaging.py: 27 environments, 26 native, and matching doc counts. - CHANGELOG.md (auto-merged into the released 0.5.0 section): restored 0.5.0 to main's text. Moved the Runta/Mosaic entry to Unreleased/Added, and folded the backend count into main's Unreleased/Changed Kata entry (24th-26th backends, six still disabled). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Narendran Raghavan <nraghavan@nvidia.com>
Summary
This PR moves SkillEvaluator's default models to GPT-6.1 Sol (OpenAI / Codex) and Claude Opus 5.5 (Anthropic / Bedrock / claude-code) across Tiers 1–3. It also lands the request-shape, refusal and runtime changes those models need. Opened as a draft until the live smoke runs listed under Rollout gates pass.
gpt-5.6-solgpt-6.1-solclaude-opus-5/us.anthropic.claude-opus-5claude-opus-5-5/us.anthropic.claude-opus-5-5openai/openai/gpt-5.6-sol/aws/anthropic/bedrock-claude-opus-5openai/openai/gpt-6.1-sol/aws/anthropic/bedrock-claude-opus-5-5gpt-6.1-solat effortmedium. anthropic / bedrock: stay onclaude-opus-5/us.anthropic.claude-opus-5until a SkillSpector release supports Claude 5.5. Install pinned tov2.12.0.@latest2.1.292, Codex0.161.0; codex efforthigh(unchanged), claude-codemediumfor Claude ≥ 5.5Changes
1883751feat(tier1): decouple the SkillSpector model from provider chat defaults and pin v2.12.068ba452feat(llm): gate reasoning-model request shape, detect refusals and size budgets per model familygpt-5*/gpt-6*). Those requests send no temperature and usemax_completion_tokens.anthropicprovider (including a customANTHROPIC_BASE_URL); Bedrock routes keep the model default:high;medium;xhighormax.reasoningis renamedrationale; parsers accept both.585940cfeat(tier3): pin Claude Code 2.1.292 and Codex 0.161.0 and set Claude 5.5 effort (local-mode version preflight)6d24e34feat(gateway): default gateway agents to GPT-6.1 Sol and Claude Opus 5.5fff8311feat(openai): default OpenAI to GPT-6.1 Sol (the last-resort judge is now keyed by provider)7b3431cfeat(anthropic): default Anthropic and Bedrock to Claude Opus 5.5f0d98cfci(gitleaks): allowlist the Bedrock model ID in SkillSpector bridge testsc3f75a6docs(provider-config): drop stale default-model wording from effort comments29e2926fix(llm): keep complete verifier verdicts from a truncated replyef1a715fix(llm): clamp Anthropic max_tokens to the SDK limit and rebuild schema downgrades per provider402eaa7fix(provider-config): pin SkillSpector defaults as literals and document effort scopec592290fix(tier3): carry step judge models into multi-step logical rewards749ce18test(llm): cover medium effort for dedup verdicts and the dimension and insights judgesa6d3721refactor(tier3): build the eval-core judge payload from the shared client's helpersTests
mainin this environment. The 2 failures aretests/test_harbor_secure_docker_environment.pysidecar tests; they need a protected execution state and fail identically onmainlocally.ruff check .clean;git diff --checkclean; every commit signed off (DCO); the open-source boundary scan passes.rationale/reasoningparsing;mediumeffort for dedup verdicts and the dimension and insights judges.Rollout gates (before marking ready)
gpt-6.1-sol: judge, SkillSpector stage (medium), verifier (high), dedup (medium).medium; the Anthropic server-side fallback firing, and on Bedrock the Tier 3 judge's Opus 4.8 retry (host-side Bedrock calls have no refusal fallback).Follow-up: once a SkillSpector release supports Claude 5.5 structured output, move SkillSpector's anthropic and bedrock defaults to Opus 5.5 and bump the pin.
Plan: GPT-6.1 Sol and Claude Opus 5.5 defaults
Plan: GPT-6.1 Sol and Claude Opus 5.5 defaults
Model changes by tier
gpt-5.6-sol→gpt-6.1-sol; anthropicclaude-opus-5and bedrockus.anthropic.claude-opus-5unchanged, now decoupled from the chat defaultmedium(set by SE); Claude unsetgpt-5.6-sol→gpt-6.1-sol; anthropicclaude-opus-5→claude-opus-5-5; bedrockus.anthropic.claude-opus-5→us.anthropic.claude-opus-5-5high; rubricmedium; dedupmedium(Bedrock: model default)gpt-5.6-sol→gpt-6.1-sol; gatewayopenai/openai/gpt-5.6-sol→openai/openai/gpt-6.1-solhigh(existing pin)claude-opus-5→claude-opus-5-5; bedrockus.anthropic.claude-opus-5→us.anthropic.claude-opus-5-5; gatewayaws/anthropic/bedrock-claude-opus-5→aws/anthropic/bedrock-claude-opus-5-5medium(pinned)nvidia/nvidia/nemotron-3-super-120b-long-ctx; native openaiopenai/gpt-5.6-sol(GPT-6.1 Sol has no tool calls on Chat Completions)gpt-5.6-solfor every providermedium(Bedrock: model default)nvidia/nvidia/nemotron-3-super-120b-long-ctx, unchangedWhy GPT-6.1 Sol or Opus 5.5
gpt-5.6-sol($2/$10 vs $4/$20 per MTok)Effort settings
highfalse_positivehides a real finding; low volumemediumxhigh/maxhigh/mediumPrerequisites in this PR
gpt-5*/gpt-6*; token budgets: GPT-5/6 at least 32,768, other models 16,384 (capped at the Anthropic SDK's non-streaming limit for Claude Opus 4/4.1)temperature/max_tokenscause 400s and reasoning truncates small capsv2.12.0Rollout gates (before merge)
gpt-6.1-sol.medium, the Anthropic server-side fallback, and the Tier 3 judge's Bedrock retry on Opus 4.8 (host-side Bedrock calls have no refusal fallback).Follow-up: SkillSpector anthropic/bedrock scans move to Opus 5.5 after a SkillSpector release supports Claude 5.5 structured output.
🤖 Generated with Claude Code