Repository navigation
Restore OMP thinking choices for non-running models - #36158
Conversation
Walkthrough
Priority: Merge Risk:
|
|
Choosing another OMP model could remove selectable thinking levels before that model had reported its own menu. A newer unknown catalog observation could also replace an older known menu. The existing picker now offers OMP’s native choices while keeping an unobserved model’s capability and default unknown. Known menus, including known-empty menus, win over unknown suggestions. Strict agents retain their behavior; native model-before-effort writes and rejection handling are unchanged. Full review completed two correctness rounds, an architecture challenge, final comparison with the common pattern, readiness and performance passes. No production defect was found. Review fixes add persistence/resting-picker and phone contracts, measured 10/100-model operation/payload bounds, and repair the test import graph. No in-scope findings remain open. All CI passed on 98e1f2b: 35 successful checks, 16 skipped. Named projection14/14, persisted/resting-picker10/10, desktop30/30, phone29/29 and retained adapter/host56/56 checks passed; these counts overlap. Recorded real native output and existing wire compatibility are covered. Real OMP18.2.1 ran both target flows on gated Windows: a newly created chat selected B/Low while native A/High worked, let A finish naturally, then received two B replies; a completed A chat closed and resumed through Session History selected B/Low while its provider was dormant, then received two replies. B was unknown with seven selectable native choices before execution. Accepted submissions and native options confirmed B/low after each of all four replies; no clamping. Earlier retention-only, interrupted and restored-chat setup attempts are excluded. The pinned baseline offered read-only High during A work and no selectable alternatives after History resume. Its working-A comparison used an A-only prompt in its resumed chat to reproduce the same native input; zero baseline B sends. Functional coverage is complete, with procedural qualifications: ownership checks matched and app identity repeatedly matched, but the driver did not refresh the app identity API before every action; two early baseline setup snapshots also lacked an immediately preceding ownership-file reread, with critical picker evidence rechecked. For Brennan’s review — whole-window comparisons, with B selected and still unknown:
The three judgment points are the native-acceptance declaration, unknown-model projection, and known-menu provenance. Intended differences from the common pattern: retain existing model-row menus for independently updated hosts/desktop/phone clients, distinguish strict native rejection from OMP resolution, and avoid discovery writes that change provider use. Suggestions never become known capability or invented defaults. No temporary difference. QA ran on 8191a87. Later commits 31e981d, b30be79, df0ce54 and 98e1f2b change only tests/fixtures. Final review covers98e. All test copies/drivers stopped and protected config hashes are unchanged. The shared catalog change (which effort menu wins when model listings merge) is a tests row, covered by agent-model-catalog-entry.test.ts and the recorded-output tests. |
…6242) #34592 made the effort picker hide any model whose effort menu is unconfirmed (effortsKnown: false), which Pi needs because its menus are exact. #36158 relies on OMP showing exactly such recorded menus for models that are not running, so the two merged into failing OMP tests on main. The hide now applies to Pi only; OMP, Claude and Codex offer unconfirmed menus as before.






Choosing an OMP model other than the running session’s model could hide the thinking-level selector. Orca discarded OMP’s native choices when the selected model’s own menu was still unknown. A newer unknown catalog observation could also replace an older known menu.
Restore the native choices in the existing picker for listed non-running OMP models without inventing their default effort. Keep known menus, including known-empty menus, over unknown suggestions. OMP resolves selected native levels for the target model; stricter agents keep their existing behavior. Model-before-effort writes and explicit native rejection handling remain unchanged.
tracked in STA-11790
Full review path: this changes catalog merge semantics and is a second fix in the ACP projection mechanism. The pre-code plan and review panel are complete; two correctness rounds found no production defect. Review repairs add persistence, phone and measured scaling contracts. Production changes remain 28 lines.
Intended differences from the common pattern: retain the existing model-row payload for independently updated desktop/mobile clients and hosts. Suggested menus remain unknown capability and are supplied only when the dialect declares native acceptance of unlisted levels. Preserve explicit rejection of user selections and avoid discovery writes that alter provider usage. Explicit menus and defaults retain their provenance; unlisted/model-less behavior is unchanged.
Validation on the final test-only head: projection 14/14, persisted/resting-picker contracts 10/10, desktop picker 30/30, phone options 29/29, and retained adapter/host contracts 56/56 passed. Recorded real OMP config-options output is paired with explicitly synthetic model context. The performance contract drives production read, publication, listing-key and installation at 10 and 100 models, including repeated and changed native menus. Normal pre-commit hooks, static analysis/typecheck and mobile verification passed. All CI checks passed on98e1f2b, including cross-version wire compatibility, persistence, packaging and all selected unit shards.
Real OMP 18.2.1 QA completed in an isolated gated Windows copy. A newly created chat changed from working A/High to unknown B/Low, let A finish naturally, then returned two real B replies. A saved A chat resumed through Session History offered B’s choices before starting its dormant provider, then returned two B replies. Native options confirmed B/low after each of all four replies, with B/low in accepted submissions and no clamping. The pinned baseline offered only read-only High during A work and no selectable alternatives after History resume; the branch offered seven native levels at both boundaries.
QA ran on 8191a87. Later commits 31e981d, b30be79, df0ce54 and 98e1f2b change only tests/fixtures. Recorded ownership checks stayed matched; the driver did not refresh the app identity API immediately before every action. Earlier retention-only and interrupted attempts are excluded from the completed-flow evidence.