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:
@@ -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()}
|
||||
|
||||
Reference in New Issue
Block a user