1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//! Effort-capability derivation for a capability rule.
//!
//! `thinking_modes` is the single owner. Three spellings in a fragment can
//! assert that a route takes an effort ladder -- `thinking_modes` containing
//! `effort`, the legacy `reasoning_effort_supported` flag, and a non-empty
//! `reasoning_effort_levels` -- and the other two are absorbed here rather than
//! compared. Absorbing makes the contradiction unrepresentable instead of
//! merely detectable: a fragment used to be able to declare a three-rung ladder
//! while leaving `effort` out of `thinking_modes`, and the two halves of Harn
//! then disagreed about the same route. The reasoning policy read the flag and
//! produced an `Effort` config; the option validator read the modes and refused
//! the config the policy had just built, so the route was unusable through
//! either entry point.
//!
//! Each extra spelling can only ADD `effort`, never remove it. Declaring a
//! ladder or setting the flag is an affirmative claim; the way to say a route
//! does not take effort is to leave `effort` out of `thinking_modes` and not
//! make the claim elsewhere.
use ProviderRule;
/// The reasoning-control shapes a route accepts.
pub
/// Whether the route takes a reasoning-effort ladder.
///
/// Derived from the resolved modes, so it cannot disagree with them. Consumers
/// used to hedge with `caps_supports(caps, "effort") || caps.reasoning_effort_supported`
/// precisely because the two could differ; that hedge is now redundant.
pub