types.py file-level

at sha256:a · View file ↗ · Intel ↗

History
1 files
1 commits
0 hotspots
0 🧊 dead
0 💥 blast risk
sha256:6 fix(ISR): default require_independent_second_reviewer to require Opera… · aaronrene · Sep 2, 2026
1 """Types for declarative model-routing (§PR.4)."""
2
3 from __future__ import annotations
4
5 from dataclasses import dataclass
6
7
8 @dataclass(frozen=True)
9 class RouteSelector:
10 """Query or ``when`` selector triple; ``None`` means wildcard."""
11
12 position: str | None = None
13 phase_tier: str | None = None
14 gate: str | None = None
15
16
17 @dataclass(frozen=True)
18 class RouteEntry:
19 """One ordered routing rule."""
20
21 id: str
22 when: RouteSelector
23 model_tier: str
24 fallback: tuple[str, ...]
25
26
27 @dataclass(frozen=True)
28 class RoutingPolicy:
29 """Parsed routing policy (version 1)."""
30
31 version: int
32 defaults_model_tier: str
33 defaults_fallback: tuple[str, ...]
34 routes: tuple[RouteEntry, ...]
35
36
37 @dataclass(frozen=True)
38 class RouteDecision:
39 """Resolved routing decision returned by ``overseer route``."""
40
41 route_id: str
42 model_tier: str
43 fallback: tuple[str, ...]
44
45
46 @dataclass(frozen=True)
47 class PolicyValidationResult:
48 """Outcome of ``--validate`` or status policy-validity check."""
49
50 valid: bool
51 violation: str | None = None