openclaw/apps/shared
Ayaan Zaidi 849c962118
fix: stop offering Fast when the selected request cannot use it (#141852)
## What Problem This Solves

The Control UI offers Fast for some selected requests that cannot use it. Sonnet 5 can enable and save Fast even though its Anthropic request has neither native Fast nor Priority Tier mapping.

## Why This Change Was Made

Anthropic request construction and the lightweight provider policy now share one applicability plan. The private model projection uses the selected route, authentication and existing parameters to publish an optional result. The UI disables confirmed no-op choices and preserves existing behavior when applicability is unknown.

## User Impact

Saved Fast preferences remain visible and clearable. Mapped Opus requests remain usable. Preference inheritance, explicit service-tier precedence, native runtime behavior and transport restrictions stay intact. Applicability does not imply vendor entitlement, fulfillment or speed.

## Evidence

- The real baseline Gateway and matching served UI offered and saved Sonnet Fast. Clearing the preference and the Opus control also worked.
- The candidate built Gateway and served UI disable fresh Sonnet Fast, allow clearing a saved Sonnet preference, and allow Opus Fast with matching public session readback. An independent validator confirmed those three clauses.
- The same independent validator freshly passed the remaining unknown-applicability control: API control was selected, Fast remained usable with applicability absent, and public readback recorded the preference on that model. All four public clauses pass. Both earlier unavailable-runtime fixture failures remain preserved; the final fixture uses the documented model-scoped runtime setting, without installing a native plugin.
- The public runtime is build `897e3b2e`, produced by required CI from candidate `54371355`. Current head `ac933c86` adds only a type declaration correction and generated Swift fields; the exercised Linux runtime and UI are unchanged.
- 53 provider/request checks, 11 focused UI checks, 3 metadata checks using the real lightweight policy loader, and 7 existing config-doc checks passed. Focused boundary checks and pinned formatting passed. No local build or typecheck ran.
- Exact-head CI run 34189519641 completed with two unrelated failures. The provider-transport failure reproduces with all Fast changes removed and passes without the preceding leaking mock. The lint-status failure occurs in its unchanged synthetic command/process-cleanup fixture before lint runs. Both remain recorded with their causal evidence.

Related: #136257

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-09-08 12:00:33 +05:30
..
mermaid feat(android): render Mermaid diagrams in chat (#135342) 2026-09-01 14:53:31 -07:00
OpenClawKit fix: stop offering Fast when the selected request cannot use it (#141852) 2026-09-08 12:00:33 +05:30
OpenClawMLXTTSProtocol chore: refresh dependencies after seven-day cooldown (#128414) 2026-08-24 03:01:54 -07:00
OpenClawWatchRTC fix: keep Linux widget replies connected and simplify Rust ownership (#139664) 2026-09-06 02:35:32 -07:00