Skip to content

Measurement

Prism’s scores — the headline Prompt Score and the supporting Completion rate — are built from what each sub-session records when it closes. This page explains where those records come from, how a sub-session’s start and end are decided, and what does the judging.

For the formulas and the per-page breakdown, see Prompt Score. For the full algorithm spec, see Algorithm Overview.

RecordSourceWhat it answers
Substance floorDeterministic detectorDid real work happen? — ≥3 turns OR ≥10 net lines of code OR ≥1 mutating tool call
Goal completeLLM outcome judgeDid the sub-session land its goal under per-intent criteria?
ReworkDeterministic detectorDid a later sub-session revert or rewrite this one?
Tokens usedOTel telemetryHow many tokens did the sub-session use?
Intent establishedLLM rubric judgeDid the sub-session commit to a clear task class (Question, Bug fix, Feature, etc.)?

The first three decide whether a sub-session crushes: the floor must pass, the goal must be complete, and it must not be rework. Intent is not part of that test — it decides which rubric checks apply to your prompts, and a sub-session the rubric judge couldn’t classify drops out of the score without being counted as a failure. See Prompt Score → What “crushed” means.

A deterministic filter — no LLM is involved. The floor catches sub-sessions that didn’t do real work and stops them from padding the denominator.

A sub-session passes the floor if any of these is true:

  • ≥3 turns between user and assistant.
  • ≥10 net lines of code added (across all files touched).
  • ≥1 mutating tool call — Edit, Write, Bash with side effects, etc.

Sub-sessions that fail the floor land on the Trivia page. They aren’t penalized — they’re filtered out of both sides of the ratio.

What counts as “finished” depends on what you were doing. The judge reads the sub-session, takes into account which kind of task it was, and applies the matching rule:

IntentCounts as complete when…Silent-completion floor
QuestionUser accepted the answer (no follow-up clarification)0.50
InvestigationReached a stated conclusion0.60
ReviewProduced an actionable verdict0.60
Plan / SpecPlan accepted in-session0.60
Small changeChange applied + no immediate revert0.50
Bug fixFix applied + verification evidence (test pass, error gone, repro confirmed)0.75
FeatureScaffolded matching scope + acceptance + (tests OR explicit “tests later”)0.75
RefactorBehavior-preservation evidence (tests green, lint clean, type check passes)0.75

The silent-completion floor is the confidence the judge needs from circumstantial evidence alone when no explicit “this worked” signal is present. Bug fixes, features, and refactors require the highest confidence — a fix without a verifying test usually won’t crush.

A deterministic check that runs after the sub-session has closed. If a later sub-session reverts or rewrites the same code, the earlier one is downgraded — it didn’t land, even if the outcome judge thought it did. This stops “claim it works, fix it tomorrow” from inflating the score.

A sub-session closes when any of these happen.

SignalWhat it means
/clearYou explicitly wiped the context. Starting a fresh terminal session counts the same way.
Topic shiftYour prompts moved on to materially different work.
30 minutes idleYou stopped for half an hour — lunch, a meeting, end of day.

/compact is not a boundary. It compresses the transcript but preserves the goal. Use /compact when you want more context room; use /clear when you’re starting something new.

/clear can fire mid-task — someone clears to get the context window back, then keeps working. A post-close merger rejoins sub-sessions when both are true:

  • The next sub-session starts within 10 minutes of the close.
  • They touch ≥50% of the same files.

The merger is what makes /clear safe to treat as a hard boundary. Without it, /clear-spam would tank the score of diligent users.

Some of these decisions are simple counting — the substance floor and rework detection are fixed rules, so they always give the same answer for the same session. The others need to read what actually happened, and those use a language model: deciding where one piece of work ends and the next begins, classifying what kind of task you were doing, grading each prompt against the rubric, and ruling on whether you landed the goal.

Every score view updates within a few minutes of a sub-session closing. Scoring starts when the sub-session actually closes, not on a fixed schedule, so there’s nothing to wait for beyond the processing itself.