DEV Community

Jesse Piaścik
Jesse Piaścik

Posted on

My 2026 resolution: stop picking Jira resolutions

meme: Jira when you transition to done. Pick a resolution!

TL;DR: In Jira, Status and Resolution are different fields. Depending on your workflow, Jira may prompt you for a resolution… or it may not. That’s how teams end up with issues that are Done but still Unresolved. I shipped a small fix in imdone-cli 0.28.0 so moving to Done doesn’t require another decision.


It’s amazing how many developer interruptions come from tiny “paper cut” fields.

This one shows up right when you’re trying to wrap up work.

You do the right thing: move the issue to Done.

And then… you’re suddenly staring at a drop-down asking you to pick a Resolution.

Or worse: you don’t get asked, you assume it’s fine, and later someone says “why is this still unresolved?”

Same feeling either way: you were finishing the work, and Jira found one last way to pull you out of the zone.

Status vs Resolution (the thing nobody explains clearly)

Jira separates two concepts that many teams treat like one:

  • Status: where the issue is in the workflow (To Do → In Progress → Done)
  • Resolution: why the issue ended (Fixed, Won’t Fix, Duplicate, etc.)

That means this state is totally possible:

  • status = Done
  • resolution = Unresolved

And it’s not just “cosmetic.” It leaks into dashboards, filters, and sometimes workflow rules.

The nuance: Jira doesn’t always prompt you

This is where people talk past each other:

“Jira always prompts you for a resolution.”

“No it doesn’t.”

Both can be true, because prompting is not a universal Jira behavior. It’s workflow configuration.

In the wild you’ll find all three:

  1. Prompting

    The transition screen includes a Resolution field, so Jira asks you to pick one.

  2. Auto-setting

    A post-function or automation sets Resolution behind the scenes. No prompt.

  3. Not set at all

    No prompt, no automation, no post-function… and you end up Done + Unresolved.

If you’ve got multiple projects, inherited workflows, or “just one tweak” done years ago, you can end up with inconsistent behavior across boards.

Why it matters (even if you hate dashboards)

This mismatch creates a bunch of low-grade pain:

1) “Resolved” reporting gets weird

Some reports/gadgets treat “resolved” as “has a resolution,” not “is in Done.”

2) JQL starts lying to you

People write filters like “show me unresolved issues,” and Done issues sneak in. Or you filter for Done work and a chunk is still “unresolved.”

3) Transitions get blocked on some projects

Some teams add validators that require resolution on the Done transition. Others don’t. So developers get different friction depending on which project they’re working in.

Quick check: do you have “Done but Unresolved” issues?

Try a query like this (tweak project key and status names):

project = PROJ AND statusCategory = Done AND resolution = Unresolved
Enter fullscreen mode Exit fullscreen mode

If your instance doesn’t support statusCategory, try something like:

project = PROJ AND status in (Done, Closed) AND resolution = Unresolved
Enter fullscreen mode Exit fullscreen mode

If either query returns results, you’ve got the footgun in your workflow somewhere.

How teams usually fix it (in Jira)

The standard fixes are all admin-side:

  • Add a post-function to set Resolution on Done transitions
  • Add a validator requiring Resolution before the transition can complete
  • Add automation: “when status category becomes Done, set resolution (if empty)”

Those can work great.

But they also tend to fail in the exact way “paper cuts” fail:

  • it’s different per project
  • it’s easy to forget which workflows have what
  • it requires admin attention
  • edge cases happen and you’re back to manual cleanup

Scratching an itch (the developer-side fix)

So here’s the thing: the path developers use the most should be the path that’s hardest to mess up.

Moving an issue to Done is a “closing ritual.” It should be quick, consistent, and not require one more decision unless you explicitly want it.

That’s what I shipped in imdone-cli 0.28.0.

What changed in 0.28.0

When you move an issue into a Done status category, imdone-cli will:

  • automatically set Resolution = "Done" if the issue has no resolution
  • never overwrite an existing resolution
  • stay non-blocking: the move succeeds even if resolution setting fails
  • only attempt this when moving to a status in the Done category

In other words: move it to Done and keep coding.

Commands

Default behavior (automatic)

imdone move PROJ-123 Done
Enter fullscreen mode Exit fullscreen mode

Set a specific resolution

Sometimes you do want to be explicit:

imdone move PROJ-123 Done -r "Fixed"
Enter fullscreen mode Exit fullscreen mode

Skip resolution entirely

If your Jira workflow already handles it, or you want to leave it alone:

imdone move PROJ-123 Done --no-resolution
Enter fullscreen mode Exit fullscreen mode

Prompt me (interactive)

If you want a choice, make it a choice:

imdone move PROJ-123 Done -p
Enter fullscreen mode Exit fullscreen mode

The interactive mode:

  • fetches available resolutions from the Jira API (with descriptions)
  • includes a Skip option
  • falls back to common resolutions if the API call fails

The real point: fewer interruptions

This isn’t about being “more compliant with Jira.”

It’s about removing one of those tiny context switches that happen right at the end of a work loop.

If your Jira already prompts or auto-sets resolution, great. But if you’ve ever been bitten by:

  • “why is this still unresolved?”
  • “why didn’t that chart move?”
  • “why did this transition fail on this project but not that one?”

…this is a small, practical way to make “Done” mean what developers think it means.

Question for you

On your team, does Jira:

  1. prompt for resolution
  2. auto-set it
  3. or ignore it entirely?

I’m genuinely curious how common each setup is across real teams.


Docs for the move command (all options + details):
https://www.npmjs.com/package/imdone-cli#user-content-move--move-issue-to-new-status

Top comments (0)