Skip to content
The Operon Library

Volume V · Chapter 9

Workflow Optimization

Measuring workflows and tuning them; friction dashboards.2026-07-12 · 7 min read

A quarterly retro reaches the question every team eventually asks about a practice this many chapters deep: are we actually getting better at this? By this point the team has adopted most of what the preceding chapters describe — a flight plan that tracks a goal instead of losing it by turn ten, a scope boundary that reverts rather than destroys, a checkpoint between plan steps, a friction detector that flags a stalling session while it is still running, a way to resume cleanly after a laptop closes mid-task. Every one of those mechanisms works, session by session, exactly as designed. Nobody in the room can actually answer the retro’s question.

The reason is not that the mechanisms are weak. It is that every one of them produces its signal, does its job, and then the signal dies at the session boundary — a friction banner dismissed, a checkpoint approved, a resume that quietly worked — with no record of any of it surviving past the session it happened in. A team that instrumented cost per session in this Library’s Volume I terms, under the name Session ROI, at least has a number to trend over time. A team that built checkpoints and friction detectors and never rolled them up across sessions has produced eight chapters’ worth of real signal and thrown all of it away the moment each session ended, which is a strange place to stop instrumenting.

What one session actually proves

One session’s data is a story about that session, and only that session. A single instance of edit thrashing might mean the codebase has a genuinely gnarly file, or that one engineer’s prompt was underspecified, or nothing more than the ordinary noise of unfamiliar work — three edits to converge on a fix is not obviously a failure. Read in isolation, an outlier session invites exactly the narrative a retro tends to produce anyway: a plausible story, told with total confidence, checked against nothing but whichever one session someone happened to remember. What a single session cannot answer is whether what it shows is typical — for this team, on this kind of task, in this part of the codebase — and typical is the only version of the question a retro is actually trying to ask.

One session’s friction is an anecdote. The same pattern across a hundred sessions is a finding.

Four signals worth tracking, not four dashboards

None of what follows is a new instrument. Each of the four categories below is a plain rollup of a signal a single session, per the chapters that already named it, already produces — the work here is aggregation and a rate, not new detection logic layered on top of what exists. The trap worth naming up front, in the right-hand column, is the same trap in every row: a number that looks like the practice improving, and might just be a number the team has quietly learned to produce.

SignalPer-session originTeam-level question it answersVanity-metric trap
Friction-pattern frequencyEdit thrashing, search spiral, error cascade flags (Ch. 6)What share of sessions hit each pattern this week, and is the rate rising or fallingCounting raw alert volume instead of a rate per session
Checkpoint outcomesApprove, reject, rollback at each plan-step gate (Ch. 4)Is the rejection rate falling because judgment improved, or because checkpoints stopped being readTreating any falling rejection rate as unambiguously good
Time-to-recoveryResume, handoff, continuation after an interruption (Ch. 7)How long, typically, between an interruption and a session picking back up without re-deriving lost contextRewarding fast resumes that skip writing a real handoff
Cost, duration, completion by archetypePlan-first, test-first, iterate, explore-first, greenfield (Ch. 8)Which archetype is actually cheapest or most reliable for which kind of task, on this team’s own historyComparing archetypes without controlling for task type

Why the rollup is the evidence, not the reading

Software engineering research reached a version of this conclusion about developer productivity broadly, by a more expensive route than this volume has had to take. The researchers behind the SPACE framework argue plainly that developer productivity “cannot be measured by a single metric or dimension” — a conclusion drawn from years of organizations over-trusting isolated proxies like commit count or lines shipped, proxies that degraded the moment they were treated as targets instead of descriptions of what had already happened. A team tracking only “checkpoint approvals per week,” or only “sessions completed,” is running the AI-workflow version of the identical mistake: one number standing in for a practice that has at least four independently moving parts, any one of which can look fine while the others quietly get worse.

The value of a rollup is concrete rather than abstract, which is why it belongs in a chapter and not just a slide. One session that hits edit thrashing proves nothing actionable on its own; sessions stall for a hundred one-off reasons, most of them not worth a standing agenda item. A team where three sessions in ten hit edit thrashing every week, concentrated in the same handful of files, is a different kind of finding: something about those specific files, or a prompt pattern the team keeps reaching for, or a habit nobody has named yet, is producing the same failure repeatedly — and it is now specific enough to actually investigate, roughly in that order of likely payoff. Where three-in-ten stops being a shrug and starts being a signal is not a fixed number; it is exactly what an aggregate view exists to let a team find for itself, and exactly what no individual session’s transcript could ever show.

A single session cannot tell a team whether its practice is improving. A hundred sessions, compared against each other, can.

What this already looks like

The honest limit: once the dashboard is the target

Every metric in the framework above is vulnerable to the same failure the moment it stops describing a practice and starts being the thing the practice is judged by — a dynamic with a name older than software. Goodhart’s Law is usually cited today in the form anthropologist Marilyn Strathern gave it while studying a very different audit system: a measure ceases to be a good measure the moment it becomes a target. The dynamic is not hypothetical here. A checkpoint rejection rate a team is visibly being measured on is a standing invitation to reject less — not because judgment improved, but because reading a diff carefully and pushing back costs something a reviewer would rather not pay once the number is what gets reported upward.

That is the same ceremony failure mode this Library has already named twice, in its chapters on plan-mode review and on hooks and gates — a safety step performed without being felt — arriving here by a new route: a dashboard instead of a habit. Every one of the four signals has an equally quiet way to be gamed without anyone deciding to game it. A friction detector under watch gets its thresholds loosened until it stops firing, not maliciously, just because a team under schedule pressure starts reading “fewer alerts” as “fewer problems” instead of “a less sensitive detector.” A time-to-recovery figure improves the moment engineers resume sessions without writing the handoff note that made resuming possible — trading a better number for thinner institutional memory nobody will notice missing until the day it mattered.

DORA’s own guidance on measurement is blunt about a version of this problem that predates AI tooling entirely: “it is also a common misconception that logs-based metrics are objective” — instrumentation choices, edge cases, and interpretation all carry bias before anyone reads a single number off a dashboard. The defense is not to stop measuring. It is to treat every figure in a friction dashboard as diagnostic rather than evaluative — a prompt to go look at the actual sessions behind a number, never a score anyone is rewarded or penalized for moving — and to periodically sample what the dashboard calls “good” against what those sessions actually produced, the same outcome-tagging discipline Volume I applied to cost under the name Session ROI. A metric nobody ever checks against ground truth is a number a team has simply agreed to trust.

What a dashboard actually needs

  1. Keep all four signals descriptive, never tied to one engineer’s review count or performance number — attaching a consequence to a metric is the exact moment its incentive to be gamed changes.
  2. Report rates, not raw counts. “Three sessions hit edit thrashing” means nothing without knowing whether that is three of ten sessions or three of two hundred.
  3. Window every rollup the way Chapter 6’s own detectors window their counters — weekly or monthly, not a lifetime cumulative figure that can only ever look worse over time.
  4. Sample real sessions behind every metric on a fixed cadence, especially the best-looking ones; a suspiciously good number deserves the same scrutiny as a suspiciously bad one.
  5. Revisit thresholds and definitions out loud, on a schedule, so a quiet drift in what counts as a rejection or a recovery is a decision the team made rather than an accident nobody chose.

None of this replaces the judgment the preceding eight chapters spent their pages building — a friction dashboard does not choose a flight plan’s boundary, and it does not read a checkpoint’s diff for anyone. What it does is answer the one question none of those mechanisms could answer alone: whether the practice built around them is actually getting better, getting worse, or simply staying exactly as inconsistent as it has always been, one session at a time.

For Discussion

  1. If a colleague asked whether your team’s AI-assisted practice is improving month over month, could you answer from data you already have — or would you be reconstructing a story from memory, the way the retro in this chapter’s opening did?
  2. Which of your team’s currently-tracked numbers, if any, would visibly get easier to hit without the underlying practice actually improving? Have you checked?
  3. How many sessions would need to hit the same friction pattern in the same week before your team treated it as a signal worth a standing agenda item, rather than a bad session someone mentions once in standup?

References

  1. establishedGuidance on choosing measurement frameworks; logs-based metrics are not automatically objective — instrumentation, errors, and interpretation all carry biasDORA — "Choosing measurement frameworks to fit your organizational goals," State of AI-assisted Software Development 2025 · 2025-09
  2. establishedDeveloper productivity "cannot be measured by a single metric or dimension"; isolated proxies like commit count degrade once treated as targetsForsgren, Storey, Maddila, Zimmermann, Houck & Butler — "The SPACE of Developer Productivity," ACM Queue · 2021-02
  3. establishedThe most widely cited reformulation of Goodhart’s Law — a measure ceases to be a good measure once it becomes a target — from a study of British university audit practicesMarilyn Strathern — "'Improving ratings': audit in the British university system," European Review, Vol. 5, No. 3 · 1997-07
  4. emergingAI-assisted teams complete more tasks and merge more pull requests while delivery metrics stay flat and review time grows 91%, in a 10,000-developer datasetFaros AI — key takeaways from the DORA report 2025 · 2025-10
  5. establishedAutonomy raises both cost and the potential for compounding errors in agent workflowsAnthropic — Building Effective Agents · 2024-12-19
  6. establishedHigh-volume, low-precision alerts cause analysts to second-guess, skim, or ignore incoming warnings — alert fatigueACM Computing Surveys — Alert Fatigue in Security Operations Centres · 2025-04
  7. emergingAgents that succeed only 22% of the time predicted a 77% success rate for themselves — self-reported confidence carries little informationKaddour, Patel, Dovonon, Richter, Minervini & Kusner — "Agentic Uncertainty Reveals Agentic Overconfidence" · 2026-02-06