types.py
python
sha256:a78e7e5a8740e03315f325d19edeb3aa1b306b3337d04abbaa9a9e0f3bbeb7a1
docs: MuseHub-first before ISR #74 — staging solidify NEXT
Human
11 hours ago
| 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 |
File History
1 commit
sha256:a78e7e5a8740e03315f325d19edeb3aa1b306b3337d04abbaa9a9e0f3bbeb7a1
docs: MuseHub-first before ISR #74 — staging solidify NEXT
Human
11 hours ago