Skip to content

feat(routing): add role reasoning-effort profiles and equal-budget ablation - #631

Open
cursor[bot] wants to merge 3 commits into
mainfrom
cursor/bc-c2ea167b-6bfb-4033-8b91-26f484fd7ea7-6379
Open

feat(routing): add role reasoning-effort profiles and equal-budget ablation#631
cursor[bot] wants to merge 3 commits into
mainfrom
cursor/bc-c2ea167b-6bfb-4033-8b91-26f484fd7ea7-6379

Conversation

@cursor

@cursor cursor Bot commented Aug 16, 2026

Copy link
Copy Markdown

Buyer next action

Run python tests/test_reasoning_effort_profile.py. Keep live route/conduct defaults unchanged while production_default_change_allowed is 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

  • Versioned reasoning_effort_profile with fail-closed parse (unknown keys, NaN/inf, booleans-as-numbers).
  • Role catalog for thinker / worker / verifier / synthesizer / planner / judge.
  • Replayable snapshot_hash for later sync/stream/batch/route/conduct attach.
  • Equal-budget ablation: single-model route baseline vs role-differentiated conduct, plus one-factor sweeps for effort, temperature, recursion depth, workflow steps, and access-list scope.
  • Production default gate stays locked (robustness_passed is false in this slice).

Doctoring (APA 7th)

  • Sakana AI. (2026). Sakana Fugu Technical Report.
  • Xu, J., Sun, Q., Schwendeman, P., Nielsen, S., Cetin, E., & Tang, Y. (2025). Trinity: An evolved LLM coordinator (arXiv:2512.04695).
  • Nielsen, S., Cetin, E., Schwendeman, P., Sun, Q., Xu, J., & Tang, Y. (2025). Learning to orchestrate agents in natural language with the Conductor (arXiv:2512.04388).

PDFs are cited, not vendored, where redistribution is unclear.

Out of scope (do not fold in)

Verify

python tests/test_reasoning_effort_profile.py
python tests/test_paper_contracts.py
python tests/test_conventions.py
Open in Web View Automation 

…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>
@cursor
cursor Bot requested a review from seonghobae August 16, 2026 16:14
cursoragent and others added 2 commits August 16, 2026 16:15
…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>

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Stale comment

Buyer next action

Do not merge this draft. Review #650 (a1ab71e) instead: #650

Run python tests/test_reasoning_effort_profile.py on #650. 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_rmse ignores the θ values. RMSE is a rank formula repeated len(true_theta) times. A buyer running the advertised command gets a tautology, not θ̂ vs true θ.
  • run(), stream_route(), and batch_route() drop reasoning_effort_snapshot. HTTP and persist use run(), so the hash is not on the live record.
  • Parse/hash fail open on None, blank profile_version, fractional seed, 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_profile had no fuzz target.

Production OrchestrationPolicy defaults 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 ModelClient request knobs (reasoning_effort, max_output_tokens) without changing OrchestrationPolicy defaults. Live NIM evidence stays issue #86.

Open in Web View Automation 

Sent by Cursor Automation: Fix Issues

Comment thread contextual_orchestrator/reasoning_effort_profile.py
Comment thread contextual_orchestrator/reasoning_effort_profile.py
Comment thread contextual_orchestrator/reasoning_effort_profile.py
Comment thread contextual_orchestrator/reasoning_effort_profile.py
Comment thread contextual_orchestrator/reasoning_effort_profile.py
Comment thread contextual_orchestrator/orchestrator.py
@seonghobae
seonghobae marked this pull request as ready for review August 16, 2026 16:32
@cursor

cursor Bot commented Aug 16, 2026

Copy link
Copy Markdown
Author

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.

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

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_rmse ignores the θ values. RMSE is a rank formula repeated len(true_theta) times. A buyer running the advertised command gets a tautology, not θ̂ vs true θ.
  • run(), stream_route(), and batch_route() drop reasoning_effort_snapshot. HTTP and persist use run(), so the hash is not on the live record.
  • Parse/hash fail open on None, blank profile_version, fractional seed, 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.

View PR

Open in Web View Automation 

Sent by Cursor Automation: Fix Issues

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant