stella scoreboard
What the work cost, and whether anyone said it was good — calls, characters typed, follow-ups, and the verdict a merged or closed pull request implies. No model judges anything.
stella scoreboard reports four numbers per unit of work: how many times intelligence was invoked, how much a person had to type, how many times they came back, and what they thought of the result. Three are counted from rows the store already writes. The fourth is read from a pull request somebody merged or closed.
Reads local state only — no API key, and no model judges anything here, which is the point.
Synopsis
stella scoreboardWhat it does
Agent quality metrics have an obvious failure mode: ask the model how it did. Stella's store does carry a self-rating field (execution_reflection.self_rating) and the scoreboard deliberately does not use it — that is the model grading its own homework. Every number here is either counted from events that happened or read from a judgement a human made.
How many times intelligence was invoked for this unit of work. Counted from the execution rows.
How much a person had to write to get the result — prompt characters, summed. The cost of the work that was not automated.
How many times a person came back. Every execution begins with something a person typed,
so N executions are N human inputs — which makes follow-ups N - 1.
What a person actually thought, read from the pull request they merged or closed.
Verdicts come from pull requests, not opinions
A pull request status maps to a verdict, with one deliberate gap:
mergedSomeone accepted the work.
closedSomeone rejected it.
draft / openNot a verdict. Work still in flight has not been judged.
Counting an open PR as anything would be inventing an opinion nobody expressed — which is the exact failure this surface exists to avoid.
# What did the work cost, and did anyone say it was good?
stella scoreboardThe arithmetic lives in stella-core and is unit-tested there, so the CLI reads rows and renders rather than re-deriving numbers. A rollup is rebuilt from the underlying event sequence, which is why the totals cannot drift away from the events that produced them.
interrupted is never reported today: nothing in the store distinguishes a human cancellation from a provider error, so the scoreboard declines to guess rather than mislabeling one as the other.