Repository navigation
fix: preserve native model reasoning capabilities - #579
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reachedNext included review available in 14 minutes. View limit detailsLimit details: You’ve used all 8 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (15)
📒 Files selected for processing (46)
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. Comment |
|
React Doctor found 1 new issue in 1 file · 1 warning · score 93 / 100 (Great) · 1 fixed · vs 1 warning
Reviewed by React Doctor for commit |
|
| Filename | Overview |
|---|---|
| internal/modelcatalog/live_sources_codex.go | Adds bounded, paginated Codex app-server discovery and preserves per-model reasoning metadata. |
| internal/modelcatalog/live_model_rows_opencode.go | Parses OpenCode verbose model metadata and provider-advertised reasoning variants. |
| internal/modelcatalog/reasoning_merge.go | Retains reasoning profiles backed by provider-specific transport bindings. |
| internal/reasoning/effort.go | Changes reasoning effort validation from a closed enum to extensible provider identifiers. |
| internal/session/manager_runtime_model_validation.go | Classifies unsupported Cursor options and missing bindings as invalid runtime overrides. |
| web/src/systems/session/hooks/use-session-prompt-runtime.ts | Serializes runtime writes successfully, but retries queued selections with a stale revision after conflicts. |
| web/src/systems/session/contexts/session-prompt-runtime-context.tsx | Preserves effective and selected ACP options during session hydration. |
| web/src/systems/model-catalog/lib/to-runtime-selector-options.ts | Passes well-formed provider-specific effort identifiers into runtime selector options. |
Sequence Diagram
sequenceDiagram
participant UI as Runtime selector
participant Hook as Session runtime hook
participant API as Runtime API
participant Store as Session store
UI->>Hook: Select runtime A
Hook->>API: PUT A (expected revision N)
UI->>Hook: Select runtime B
Hook->>Hook: Queue B
API-->>Hook: 409 conflict
Hook->>Store: Reset optimistic selection
Hook-->>API: PUT B (still revision N)
API-->>Hook: 409 conflict
Note over Hook,Store: Refreshed revision arrives too late
Reviews (1): Last reviewed commit: "fix: preserve native model reasoning cap..." | Re-trigger Greptile
| onSettled: () => { | ||
| if (runtimeSelectionController.current === controller) { | ||
| runtimeSelectionController.current = null; | ||
| const queued = queuedSelection.current; | ||
| queuedSelection.current = null; | ||
| if (queued && !controller.signal.aborted) { | ||
| persistRuntimeSelection(queued.value, queued.speed); | ||
| } |
There was a problem hiding this comment.
Queued retry uses stale revision
When an in-flight runtime update returns 409 because another client advanced the session revision, onSettled immediately retries the queued selection with the same stale revision. The conflict handler only starts an asynchronous session refresh, while the retry is sent synchronously before that refresh updates the store. The second request therefore conflicts again, and the user's latest runtime selection is not persisted. Wait for the refreshed revision before retrying, or retain the queued selection until that revision is acknowledged.
What & why
New models could appear in the catalog without their supported reasoning levels, and selecting an unsupported Cursor combination could return an internal server error. Discovery and merging were losing provider metadata, while a closed effort enum rejected Ultra and future provider identifiers.
How you verified it
ASTRA_ULTRA_OK; Cursor Grok 4.6 Extra high created the exact requested file; OpenCode Grok 4.6 Extra high returnedOPENCODE_REASONING_OKand acknowledged the selected model and effort through ACP. Grok 4.5 and Luna displayed their own advertised effort ranges. Invalid Cursor Ultra returned 400 and preserved the previous selection. Three OpenCode refreshes completed successfully.clean: true.The maintainer explicitly requested publishing this PR and running the remaining full gates in CI. The local gate was stopped accordingly; a complete local gate pass is not claimed.
QA report · Research and diagnosis
Impact
Reasoning effort fields accept additional advertised string identifiers; existing field names, routes, CLI surfaces, and the public SDK
ReasoningEffortexport remain intact. No SQLite schema change is required. Native runtime membership validation remains authoritative. Model-catalog docs, the official Compozy skill reference, and the affected QA scenarios are updated.Cross-surface impact audit. The historical queue/session/window-manager errors are documented as unproven causes outside the reproduced catalog failures. The production daemon was not restarted.