feat: publish unblended AI-plan effectiveness series

Report booked cost, entitlement, token coverage, and work as three
series: work per measured token, work per measured+estimated token,
and work per euro. Months below 50% coverage are unfit for token
trends. There is no blended efficiency number.
This commit is contained in:
tegwick 2026-08-15 19:53:28 +02:00
parent ee90ba2873
commit 033ad3f41f
12 changed files with 512 additions and 6 deletions

View file

@ -36,6 +36,14 @@ class SessionTokenSlice(BaseModel):
return value
class SessionTokenWork(BaseModel):
model_config = ConfigDict(extra="forbid")
unit: Literal["task", "outcome"] = "task"
count: int = Field(ge=0)
source: str = Field(min_length=1)
class SessionTokenAssociation(BaseModel):
model_config = ConfigDict(extra="forbid")
@ -64,6 +72,7 @@ class SessionTokenEvidence(BaseModel):
source_evidence: list[str] = Field(min_length=1)
totals: dict[str, SessionTokenSlice] = Field(default_factory=dict)
associations: list[SessionTokenAssociation] = Field(default_factory=list)
work: SessionTokenWork | None = None
@field_validator("totals")
@classmethod