Featured

Watermelon Status: Why Jira Says Done When Your Code Hasn't Merged

Green on the outside, red on the inside. Learn what engineering leaders on Reddit say about Jira tickets moved to Done before the code ships, velocity that doesn't match delivery and status reports nobody trusts at enterprise scale, and how Keypup MCP compares each issue's closure date, workflow history and sprint with the state and merge dates of its linked pull requests to measure how much of your reported "Done" has no merged code behind it.

Stephane Ibos
Stephane Ibos LinkedIn
• 13 min read
Watermelon Status: Why Jira Says Done When Your Code Hasn't Merged

Table of Contents

TL;DR: In large engineering organizations, a Jira ticket in "Done" doesn't always mean the code is merged. Tickets are closed on the last day of the sprint to protect velocity, moved straight from In Progress to Done, or closed while the pull request is still waiting for review. This is watermelon status: green on the board, red in Git. Velocity, roadmap reports and release notes are all built on it. The Keypup MCP Server reads each Jira issue's closure date, workflow status history, sprint, story points and type, and the state, merge date, review state and build status of the pull requests linked to it. Your AI assistant can then measure how much of your reported "Done" was closed ahead of its code, how far reported velocity is from merged velocity, when and from which status tickets jump to Done, which teams do it most, and which "Done" tickets still have code in flight today.

Every engineering leader has sat in a steering committee where the dashboard was green and the release was late. The board said the features were done. Git said otherwise. And nobody in the room could tell how much of the green was real.

The Friction: "Done" in Jira Isn't "Merged" in Git

In a team of eight, the engineering manager knows which ticket was closed a bit early. In an organization with 1,200 engineers, 60 Jira projects and 400 repositories, the gap between the board and the code becomes invisible for structural reasons:

  • Jira and Git don't enforce each other. Moving a ticket to Done doesn't check whether its pull request is merged, and merging a pull request doesn't check whether its ticket is still open.
  • Velocity rewards closing, not shipping. Story points count when the ticket closes. A sprint review the next morning is a strong reason to close it today.
  • Workflows allow shortcuts. Most Jira workflows let anyone move a ticket from any status to Done, skipping In Review and QA entirely.
  • Status reports aggregate the board. Program managers roll up ticket statuses into epics, epics into initiatives and initiatives into a portfolio slide. Nobody rolls up the pull requests.

The result is a status report that is green on the outside and red on the inside — and leaders who stop trusting it.

Why This Matters: The Real Cost of Watermelon Status

The Forecasting Problem

Roadmap forecasts are built on velocity. If one point in five was booked before its code was merged, every forecast built on it is optimistic by the same amount — and the gap shows up as a slipped release, not as a data quality issue.

The Release Problem

Release managers build their scope from the tickets in Done. Tickets closed ahead of their code end up in release notes for features that aren't in the build, or in "ready to ship" lists for code that is still waiting for review.

The Trust Problem

Once leaders discover that Done doesn't mean done, they stop reading the board and start asking people. Status meetings multiply, engineers spend more time reporting than building, and the tool meant to give visibility becomes the reason for more meetings.

The Enterprise Discussion: What Engineering Leaders Are Actually Saying

"Watermelon projects", tickets closed to hit sprint commitments and velocity that doesn't match what ships come up again and again wherever engineering managers, program managers and directors compare notes. The quotes below are representative of recurring threads on r/ExperiencedDevs, r/EngineeringManagers, r/projectmanagement and r/agile.

Director of Engineering, Insurance Group (r/EngineeringManagers)

"Every program was green in the monthly review. Then integration testing started and half the 'done' stories had PRs still open or not even created. We weren't lying, exactly. We just measured the board instead of the code."

Senior Program Manager, Enterprise SaaS (r/projectmanagement)

"Teams move tickets to Done on the last afternoon of the sprint so the burndown looks right, then merge the PR on Monday. Multiply that by forty teams and my roll-up is fiction. I don't know by how much."

Staff Engineer, Retail Platform (r/ExperiencedDevs)

"Our velocity went up 30% in a year and nobody could explain why delivery didn't. Turned out a couple of teams were closing tickets when the PR was opened, not when it merged. Nobody was checking."

The pattern holds: leaders report on the board, but nobody checks whether the code behind "Done" was actually merged.

How Keypup MCP Measures Watermelon Status

The Keypup Model Context Protocol (MCP) Server gives your AI assistant structured access to the data Keypup imports from Jira and from GitHub, GitLab, Bitbucket and Azure DevOps. For this analysis, what matters is each Jira issue's closure date, current workflow status, workflow status history, sprint and sprint end date, story points, type and project, and, for the pull requests linked to it, their state, the date of the last merge, their review state, build status and lines changed.

A pull request is linked to an issue when it references the issue key — in its title, or in its body or a commit message after a closing keyword such as "fixes" or "resolves". Issues without linked pull requests are left out of every prompt below: that work may not need code, or its pull requests may not reference the key. An issue was closed ahead of its code when at least one linked pull request merged after the issue was closed or is still open today, or when none of its linked pull requests were merged. "Done" statuses are the names your workflows use — here Done, Closed and Resolved. Durations are in business days — Monday to Friday, 09:00 to 17:00 UTC by default; adjust the working hours and time zone to match your teams.

1. Running a Status Integrity Health Check

The first question: how much of what Jira calls Done was closed before its code was merged?

MCP Prompt:

For Jira issues closed in a Done, Closed or Resolved status in
the last 12 months that have at least one linked pull request,
show the number closed, the share closed before all their linked
code was merged, the number whose last linked pull request merged
after closure with the median business days between the two, and
the number whose linked pull requests are still open or were all
closed without merging.

Output: Status Integrity Health Check — Last 12 Months

Four KPI cards: 48,200 Jira issues closed in the last 12 months with at least one linked pull request across 64 projects; 14.6%, 7,040 issues, closed before all their linked code was merged; 4,390 issues whose last linked pull request merged after closure, median 2.6 business days late; 2,650 issues whose code is still open (1,490) or whose linked pull requests were all closed unmerged (1,160)

Key Insight: One "Done" issue in seven was closed before its code was merged. Most of that code lands a few days later — but 2,650 issues reported as delivered have no merged code behind them at all.

2. Comparing Reported Velocity With Merged Velocity

Velocity is where watermelon status does the most damage: it feeds every forecast.

MCP Prompt:

For the PAY project's last 8 closed sprints, considering only
issues with at least one linked pull request, show as a dumbbell
chart the story points of issues closed by the sprint end date,
against the story points of those issues whose linked pull
requests were all merged by the sprint end date.

Output: Reported Velocity vs Merged Velocity

Dumbbell chart for the PAY project's last 8 closed sprints: story points closed by sprint end against story points with all linked code merged by sprint end — Sprint 41 96 vs 81, Sprint 42 102 vs 84, Sprint 43 88 vs 79, Sprint 44 110 vs 86, Sprint 45 94 vs 80, Sprint 46 118 vs 89, Sprint 47 99 vs 83, Sprint 48 121 vs 90; 828 points reported, 672 with merged code

Key Insight: About one reported point in five had no merged code by the end of its sprint. Reported velocity grew 26% between sprint 41 and sprint 48; merged velocity grew 11%. The gap is widening — and every forecast built on reported velocity inherits it.

3. Seeing When Watermelon Issues Get Closed

If tickets are closed to protect the sprint, the timing will show it.

MCP Prompt:

For the same issues, group them by business days between closure
and the end date of their sprint — 5 or more before, 2 to 5,
1 to 2, the last day, after the sprint end. Show the number closed
as columns and the share closed before all their linked code was
merged as a line.

Output: When Do Watermelon Issues Get Closed?

Column and line chart of 48,200 issues by business days between closure and sprint end: 5 or more days before, 18,400 issues, 7% closed ahead of code; 2 to 5 days before, 12,100, 12%; 1 to 2 days before, 6,900, 17%; last day of sprint, 7,300, 33%; after sprint end, 3,500, 20%

Key Insight: Issues closed on the last day of the sprint are almost five times as likely to be ahead of their code as issues closed a week earlier — 33% against 7%. The sprint boundary, not the work, decides when they move to Done.

4. Finding Which Status Issues Jump to Done From

A ticket that goes through In Review and QA before Done has passed checkpoints. A ticket that jumps from In Progress hasn't.

MCP Prompt:

For every workflow status change into Done, Closed or Resolved in
the last 12 months, show as a donut chart the share by the status
the issue moved from.

Output: Which Status Do Issues Jump to Done From?

Donut chart of 52,600 workflow status changes into Done, Closed or Resolved by previous status: In Review 38%, QA or Testing 27%, In Progress 19%, To Do or Backlog 9%, other statuses 7%; callout showing 28% of moves to Done came straight from In Progress, To Do or Backlog

Key Insight: More than one move to Done in four skips the statuses meant to prove the work is finished. Some of it is legitimate — duplicates and won't-fix tickets closed from the backlog — but In Progress straight to Done is the board's version of "trust me, it's merged". The status names depend on your workflows: map yours before reading the split.

5. Comparing Teams Month by Month

An organization-wide rate hides the teams where the board and the code have drifted furthest apart.

MCP Prompt:

As a heatmap, show by Jira project and month of closure over the
last 6 months the share of issues with linked pull requests that
were closed before all their linked code was merged.

Output: Which Teams Report Ahead of Their Code?

Heatmap of the share of issues closed ahead of their code by Jira project and month from 2026-05 to 2026-10: MOB between 23% and 28%; PAY between 16% and 20%; DATA rising from 12% to 18%; PLAT falling from 21% to 8%; PRT, CHK and SRCH between 8% and 13%; IDN between 5% and 7%

Key Insight: MOB sits above 23% every month and DATA is drifting up, while PLAT went from 21% to 8% in six months. The spread between teams is far larger than month-to-month noise — which means it's a practice, not an accident, and practices can be copied.

6. Checking Whether High Velocity Is Partly Watermelon

The teams with the highest velocity get the most attention in planning. Is their velocity real?

MCP Prompt:

For each Jira project, show as a scatter plot the average story
points closed per sprint over the last 12 months against the
share of issues closed before all their linked code was merged.
Size each point by the number of issues closed.

Output: Is High Velocity Partly Watermelon?

Bubble scatter of 12 Jira projects by average story points closed per sprint and share closed ahead of code, bubble size showing issues closed: MOB 118 points per sprint and 26%, PAY 104 and 18%, BILL 88 and 19%, CORE 80 and 13%, CHK 72 and 10%, DATA 66 and 15%, down to IDN 48 and 6%, SRCH 44 and 9%, NOTIF 39 and 7%; dashed trend line rising with velocity

Key Insight: The three highest-velocity projects are also among the most likely to close work ahead of their code. Part of what looks like speed is points booked before the merge. CORE and CHK show that high throughput doesn't require it — they're the teams to learn from.

7. Listing "Done" Issues With Code Still in Flight

The last step turns the analysis into a list someone can act on this week.

MCP Prompt:

List open or draft pull requests whose linked Jira issue is
closed. Show the issue key, issue type, story points, issue
status, business days since the issue was closed, the pull
request state, review state, build status and lines changed.
Sort by time since the issue was closed.

Output: Done Issues With Code Still in Flight

Table of seven open or draft pull requests whose linked Jira issue is closed, sorted by business days since closure: PAY-4812 Story, 8 points, Done, 14.5 days, open, changes requested, build failure, 1,240 lines; MOB-2290, 11.0 days, draft; BILL-1733 Bug, Resolved, 9.5 days, pending review; DATA-907, 7.0 days, changes requested; MOB-2311, 4.5 days; PAY-4840, 2.0 days, approved; CHK-6120, Closed, 1.0 day, approved, build failure
IssueTypePointsStatusSince Done (bd)PR StateReview StateBuildLines
PAY-4812Story8Done14.5OPENCHANGES_REQUESTEDFAILURE1,240
MOB-2290Story5Done11.0DRAFTNONENONE860
BILL-1733Bug3Resolved9.5OPENPENDINGSUCCESS310
DATA-907Task5Done7.0OPENCHANGES_REQUESTEDSUCCESS540
MOB-2311Story3Done4.5OPENPENDINGIN_PROGRESS220
PAY-4840Bug2Done2.0OPENAPPROVEDSUCCESS95
CHK-6120Story5Closed1.0OPENAPPROVEDFAILURE410

Key Insight: Seven issues counted as delivered still have code waiting. PAY-4812 was closed three weeks ago with changes requested and a failing build, and MOB-2290's pull request is still a draft. PAY-4840 just needs a merge; CHK-6120 needs a green build first. Either reopen these tickets or finish the code — but stop counting them as shipped.

The Technical Implementation: What Keypup MCP Actually Reads

Every number above comes from fields Keypup already imports from Jira and your Git platforms. It helps to be precise about what they are — and what they aren't.

Keypup links a pull request to a Jira issue when the pull request references the issue key — in its title, or in its body or a commit message after a closing keyword such as "fixes", "closes" or "resolves". Each issue then carries the list of its linked pull requests, a resolution state — in progress when at least one linked pull request is open, implemented when all of them are merged, none when they were all closed without merging — and the dates of the first and last merge among them. Pull requests that don't reference a key can't be linked, so the share of issues with linked pull requests is the first number to check: if it's low, start by agreeing on a pull request title convention.

"Ahead of Code" Compares a Status With Dates

An issue was closed ahead of its code when its closure date is earlier than the last merge of its linked pull requests, or when its resolution state isn't implemented. Keypup doesn't read your code to decide whether a ticket is "really" done: it compares when the ticket closed with when the code merged. A ticket closed because the work wasn't needed after all will appear here if its linked pull requests were closed without merging — which is a status worth correcting anyway.

Workflow History Comes From Jira Transitions

Keypup imports each issue's workflow timeline and every workflow status change, including the status it moved from and the user who moved it. Status names are whatever your Jira workflows use, so a prompt that says "In Review" or "QA" needs to use the names your projects actually have.

Velocity Depends on Your Story Points and Sprints

Story points and sprints come from Jira's own fields. Each issue carries the sprint it is attached to, with that sprint's end date, the list of past sprints it went through, and the issue's story points. Projects that don't estimate in points or don't run sprints won't appear in the velocity and sprint-timing views; for them, count issues instead of points.

Pull Request States and Builds Are the Current Ones

For each linked pull request, Keypup records its current state — open, draft, merged or closed — its review state, its latest build status and its lines changed. They describe the pull request today, not on the day the ticket closed.

Business Days Come From a Formula, Not a Calendar

Keypup's BUSINESS_DAYS function counts working time between two dates — Monday to Friday, 09:00 to 17:00 UTC by default — and accepts a different time zone, working hours and working days. It doesn't know about public holidays or vacations: Keypup doesn't import calendars.

Real-World Impact: Enterprise Case Studies

Case Study 1: Global Insurance Group

Before Keypup MCP:

  • 1,100 engineers across 52 Jira projects and 380 repositories
  • Two major programs reported green until integration testing, then slipped by a quarter
  • Program reviews built entirely on ticket statuses rolled up from Jira

After Keypup MCP:

  • The health check showed 17% of "Done" issues closed ahead of their code, which moved the conversation from "teams are slow" to "the board is optimistic"
  • The sprint-timing view showed last-day closures as the main source; teams agreed that a story only counts toward velocity once its pull requests are merged
  • The share of issues closed ahead of their code fell from 17% to 6% in two quarters, and program reviews now show merged velocity next to reported velocity

"Our dashboards weren't wrong, they were early. Showing the merged number next to the reported one ended the debate in one meeting — and it's the number we forecast with now."

— CTO, Global Insurance Group

Case Study 2: European E-Commerce Platform

Before Keypup MCP:

  • 700 engineers, 40 teams, two-week sprints
  • Release notes listing features that weren't in the build
  • Workflows allowing any status to move straight to Done

After Keypup MCP:

  • The status-history view showed a third of moves to Done coming from In Progress; the Jira admins added a transition rule requiring In Review first for stories
  • The "Done with code in flight" list became part of every release cut: anything on it is either merged or moved out of the release notes
  • Teams with the lowest rates shared their practices, starting with putting the ticket key in every pull request title

"The list of Done tickets with open pull requests is the first thing our release manager opens. It's short now. A year ago it was the reason our release notes were wrong."

— VP Engineering, European E-Commerce Platform

Implementation: Getting Started with Keypup MCP

1. Connect Jira and Your Git Platforms

Connect Jira and GitHub, GitLab, Bitbucket or Azure DevOps to Keypup. Issues, workflow history, sprints, pull requests, reviews and builds are imported automatically.

2. Check How Many Pull Requests Reference an Issue Key

Every analysis here depends on links. Ask your assistant for the share of merged pull requests linked to an issue, by repository. Where it's low, agree on a convention — the issue key at the start of every pull request title is the easiest to enforce.

3. Map Your "Done" and Review Statuses

List the workflow statuses that mean Done, review and QA in each project, and reuse the same list in every prompt so numbers stay comparable across teams and over time.

4. Connect the MCP Server to Your AI Assistant

Follow the MCP documentation to connect Keypup to Claude, ChatGPT, Cursor or any MCP-compatible assistant.

5. Report Merged Velocity Next to Reported Velocity

Run the health check and the velocity comparison to set a baseline. Then check the "Done with code in flight" list before every sprint review and release, review the team heatmap monthly, and show merged velocity next to reported velocity in every roadmap forecast.

Frequently Asked Questions

What is watermelon status in software development?

Watermelon status is a project or ticket that looks green from the outside — reported as done or on track — while the underlying work is red. In engineering, it typically means Jira issues moved to Done before their code was merged.

How do you detect Jira tickets closed before the code was merged?

Compare each issue's closure date with the merge dates of the pull requests linked to it. If a linked pull request merged later or is still open, or none of them merged, the ticket was closed ahead of its code. Keypup MCP does this from data it already imports, as long as pull requests reference the issue key.

Why doesn't velocity match what we actually deliver?

Story points count when the ticket closes, not when the code ships. If tickets are closed before their pull requests merge — often on the last day of the sprint — reported velocity runs ahead of delivery. Comparing points closed with points whose code was merged by the sprint end shows the gap.

Does Keypup MCP replace Jira workflow rules?

No. Workflow rules and automations can stop some shortcuts; Keypup MCP measures how often the board and the code still disagree — by team, sprint, status and ticket — so you know which rules to add and whether they work.

The Bottom Line

A Done column only tells you that someone moved a ticket. Keypup MCP shows how much of your "Done" has merged code behind it, and where it doesn't:

✅ Measuring how much "Done" was closed ahead of its code across every Jira project ✅ Comparing reported velocity with merged velocity, sprint by sprint ✅ Showing when tickets close ahead of their code, relative to the sprint end ✅ Finding which status tickets jump to Done from, and how often reviews and QA are skipped ✅ Comparing teams month by month to find the practices worth copying ✅ Checking whether high velocity is partly watermelon ✅ Listing "Done" tickets with code still in flight before the next review or release

Ready to see how much of your green is real? Connect the Keypup MCP Server and ask your AI assistant.

Ready to Transform Your Analytics?

Join teams already using AI to make data-driven decisions faster than ever.

Most Recent Articles

Timesheet Theater: Why Jira Time Logs Don't Match What Your Engineers Actually Built

Timesheet Theater: Why Jira Time Logs Don't Match What Your Engineers Actually Built

Software capitalization, client billing and R&D tax credits all run on Jira time logs that engineers fill in on Friday afternoon, from memory. Learn what engineering and finance leaders on Reddit say about time tracking nobody trusts, and how Keypup MCP compares Jira worklogs with linked pull requests, commits and merges to show when time is logged, how late it arrives, and which hours have code behind them.

Thomas Williams
The Hidden Queue: Why Most of Your Lead Time Happens Before the First Commit

The Hidden Queue: Why Most of Your Lead Time Happens Before the First Commit

Your pipelines got faster and your reviews got shorter, yet features still take months to reach customers. Learn what engineering leaders on Reddit say about work that waits weeks in Backlog, Ready for Development and To Do before anyone writes code, why delivery dashboards that start at the first commit miss it, and how Keypup MCP uses Jira workflow history, sprints and the commit and merge dates of linked pull requests to measure the queue in front of your code.

Liam Davis
Approval Drift: Why Code Changed After Approval Keeps Reaching Your Main Branch

Approval Drift: Why Code Changed After Approval Keeps Reaching Your Main Branch

An approved pull request isn't always approved code. Learn what engineering leaders on Reddit say about commits pushed after approval, self-merges and bypassed branch protection at enterprise scale, and how Keypup MCP uses approval dates, last commit dates, approval counts, required approvals, mergers, target branches and build status to measure how much code reaches your protected branches without anyone reviewing what actually shipped.

Arnaud Lachaume