core: Policy, Pflege-Agent (HITL), Healer, Lifecycle-Pipeline, Graduierung + Konfiguration

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-12 00:43:26 +02:00
co-authored by Claude Opus 5.5
parent f79e2a8556
commit f2da893f71
28 changed files with 2179 additions and 10 deletions
+11
View File
@@ -45,6 +45,9 @@ class Slot(BaseModel):
set_by: str | None = None
calibrated_context: int | None = None
base_model_override: str | None = None
canary_model: str | None = None
canary_share: float = 0.0
canary_cluster: str | None = None
@property
def name(self) -> str:
@@ -104,6 +107,9 @@ class Registry:
set_by=state.get("set_by"),
calibrated_context=state.get("effective_context"),
base_model_override=state.get("base_model"),
canary_model=state.get("canary_model"),
canary_share=state.get("canary_share") or 0.0,
canary_cluster=state.get("canary_cluster"),
)
def slots(self) -> list[Slot]:
@@ -127,6 +133,11 @@ class Registry:
def set_base_model(self, name: str, base_model: str | None) -> None:
self.store.set_slot_state(name, base_model=base_model)
def set_canary(self, name: str, model: str | None, share: float = 0.0, cluster: str | None = None) -> None:
"""Leitet `share` des Stufe-1-Verkehrs (optional nur eines Clusters) auf ein Kandidatenmodell."""
self.store.set_slot_state(name, canary_model=model, canary_share=share if model else 0.0,
canary_cluster=cluster if model else None)
# --- Adapter ----------------------------------------------------------------------------
def adapters(self) -> list[AdapterSpec]:
merged = {n: a.model_copy() for n, a in self._adapters.items()}