← Field notes
Delivery truth

Your Jira board is lying to you

Every “Done” column hides a question the board can’t answer: is there merged code behind it? The gap between board-done and code-done is where slipping sprints quietly wait — until demo day makes them loud.

KalMatrix·July 7, 2026·5 min read

Here is a scene that plays out in almost every sprint review. A ticket sits in the Done column. It is green. It has an assignee, a story-point value, a tidy little checkmark. Nobody questions it, because questioning a “Done” ticket feels like accusing a teammate of lying. So the number gets rolled up, the velocity chart looks healthy, and leadership walks out of the room believing the sprint is on track.

Then, two days before the release, someone actually tries to ship. And the ticket that was “Done” turns out to have an open pull request, one failing check, and a review that has been sitting unread since Tuesday. The work was finished in the sense that an engineer stopped thinking about it. It was not done in the sense that anything runs in production.

The watermelon problem

We call this a watermelon status: green on the board, red in the code. It is the single most expensive lie in software delivery, and it is expensive precisely because it is comfortable. A board is a report your team writes about itself. People move cards when they feel done, when they want to unblock a dependency, when the standup is dragging and they would rather not defend a card that is technically still in progress. None of that is malicious. It is just human. But it means the board measures intention, not reality.

The code, by contrast, cannot flatter you. A branch either merged or it did not. A check either passed or it did not. A reviewer either approved or the PR is still hanging. There is no optimism in a git history — which is exactly why it is the only trustworthy record of what your team actually delivered.

The board is a story your team tells. The code is the fact. When they disagree, the code is right — and the board is where your next slip is hiding.

Where the gap does its damage

Take a sprint we will call CHK — a checkout rewrite, the kind of load-bearing project every fintech eventually has to do. Say the board reports 82% complete with three days left. Reassuring. But look at the code and a different picture appears: of the points marked “Done,” a meaningful slice has no merged PR behind it. One story is a Stripe webhook migration that is blocked on a sandbox credential nobody has chased. Fourteen more points sit downstream of that blocker, unable to start. The board averaged all of this into a single confident percentage and quietly buried the one fact that mattered.

This is how sprints slip without anyone seeing it coming. Not in a dramatic collapse, but in a slow accumulation of small fictions: a ticket closed before review, a dependency that looked resolved, an epic that was 90% done for six days straight. Each is invisible on its own. Together they are the reason a sprint that “looked fine on Wednesday” misses on Friday.

How the Truth Gap engine catches it

KalMatrix reads your Jira and your GitHub together and does the one reconciliation nobody has time to do by hand: it checks every “done” ticket against merged code. Where the two agree, it stays quiet — you do not need another dashboard congratulating you. Where they disagree, it surfaces the gap by name: this ticket is closed with an open PR, this epic is board-done but code-cold, this reviewer is holding eleven points behind a single unread request.

  • Closed-but-not-merged — tickets marked done with no corresponding merged code, ranked by the points they overstate.
  • Blast-radius blockers — the one stuck item that is quietly holding a dozen downstream points hostage.
  • Reviewer bottlenecks, by name — where “in review” actually means “waiting on one person since Tuesday.”
  • Scope creep — points added mid-sprint that the burn-up is silently absorbing.
The goal is not to police your engineers. It is to make sure the number leadership acts on is a number the code can back up — before it gets reported upward and becomes a promise.

None of this requires your team to change how they work. There are no new fields to fill in, no process to adopt, no “please remember to update your tickets” Slack message that everyone ignores. KalMatrix reads the tools you already live in and does the cross-checking a great delivery lead would do if they had the time to open every PR — every day, across every sprint, on every team.

Your board is not lying on purpose. It is just answering a different question than the one you are asking. You are asking “will this ship?” and the board is answering “how does the team feel about it?” The Truth Gap engine closes that distance — so the next time a ticket says Done, you can trust that it means the same thing the code does.

Stop reading about it. Read your own brief.

The demo is a fully-populated workspace — real sprints, real forecasts, the same daily diagnosis this post describes. No signup, nothing to configure.

← Back to the blog

Keep reading

All field notes
Forecasting

Why late work hurts more: the S-curve nobody plans for

Sprint work does not finish in a straight line — it finishes on an S-curve. That single fact is why a late epic hurts far more than its point count suggests, and why naive burndown lies to you at exactly the wrong moment.

Read the note
Product

From dashboards to decisions

A dashboard reports the past and leaves the thinking to you. A chief-of-staff brief does the thinking and hands you a decision. Here is why one clear call a day beats ten charts that make you feel informed.

Read the note
Delivery

Why your sprints keep slipping — and the four causes hiding in your data

Roughly four in five agile teams roll work over every sprint. It is almost never a capacity problem. It is four specific, findable causes — and they are already sitting in your Jira and Git history.

Read the note
Leadership

How a CTO can actually know if the team will hit the deadline

Most status turns red overnight in week eleven — after the recovery options have expired. Here is how to get a defensible read on a deadline early enough to change the outcome, without micromanaging a single engineer.

Read the note
Estimation

Story points can’t forecast a date — and were never meant to

Velocity is a useful planning heuristic and a terrible crystal ball. If you are turning a story-point average into a delivery date, here is why it keeps betraying you — and what to denominate your forecast in instead.

Read the note
Delivery truth

Watermelon status: how to catch a project that’s green outside, red inside

Watermelon reporting is the most expensive lie in delivery because it is comfortable. Here is how green-on-the-outside, red-on-the-inside status forms, and how to catch it with evidence instead of accusation.

Read the note
Forecasting

Monte Carlo vs velocity: how to forecast a delivery date you can defend

A single-date forecast from a velocity average is a promise you will almost certainly break. A probabilistic forecast gives you a range and the odds. Here is the difference — and why leaders trust the range.

Read the note
Leadership

Engineering metrics that matter — without surveilling your developers

The metrics that predict delivery and the metrics that destroy trust are not the same list. Here is how to measure the system without measuring the people — and why the distinction is the whole game.

Read the note