Skip to content

ADR 0229: Practice stats are counted, local, and never comparative

Status: accepted

Context

§

The logbook records the practice's whole history — landings, gate runs, cycle times, pins — and the patterns readers mine it for what needs attention. Nothing read it back for the human driving the practice: the owner who wants to show, or just enjoy, what the agents shipped under their direction. That is a social and psychological surface, and social surfaces invite a specific failure mode: scores, grades, percentiles, and rankings, which start as motivation and end as targets. The logbook's own rules also bind any new reader: metadata only, nothing leaves the machine (ADR 0160), and evidence over inference — a baked-in score would fossilize the day it shipped exactly the way a baked-in driver inference would (ADR 0162).

Decision

§

discern patterns --stats computes practice stats as plain counts and durations only, from the same analysis population the detectors read (CI, previews, and setup-era events excluded). Each number carries its denominator where one exists. The payload is flag-gated: data.stats is present exactly when the invocation asked for it, so the default report and MCP surface stay lean. The MCP tool takes stats: true so an owner can ask their agent for the card.

The explicit nos:

  • No scores, grades, tiers, or rankings — not even a composite "practice score". The counts are the product.
  • No comparisons to anyone else's numbers. The logbook never leaves the machine, so there is no corpus to rank against; the card never pretends otherwise. Sharing is the owner's move, outside the tool.
  • No steering. The card recommends nothing and gates nothing; the advisory boundary stays with the detector findings, and enforcement stays with standards.

Consequences

§
  • Every number on the card can be re-derived from the checkout, so a shared card can be checked rather than taken on faith — the counts are worth exactly the evidence behind them.
  • The card stays honest on a bad week: streaks of one and empty sections go quiet instead of being dressed up, and a young logbook says there is nothing to stats about yet.
  • Anyone proposing points, badges, streak freezes, or percentile ranks is proposing to reverse this record, not to extend it.
  • The wire shape (PatternsStatsSchema) is additive and optional, so the published results schema stays compatible; holding the no-scores line means future additions must arrive as new counts, not as judgments over the existing ones.

Alternatives considered

§
  • A separate verb (discern stats). Rejected: the read is the patterns read — same logbook, same population, same tolerant stream — and a verb implies a new subsystem where a rendering of an existing one is the truth.
  • Always computing data.stats. Rejected: every MCP patterns call would pay the payload for a surface aimed at humans; flag-gating keeps the default result focused on findings.
  • Scores for sharing ("top 5% of gates"). Rejected outright: with a local-only corpus any percentile would be invented, and the logbook's read-aloud bar has no room for numbers the evidence cannot defend.
choose openEsc close