> ## Documentation Index
> Fetch the complete documentation index at: https://www.minitap.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Triaging your issues

> How issues surface, what's in one, and the three actions you take on them — same flow in the dashboard or in Slack.

When a criterion fails, miniTest opens an **issue** in the **Issues**
tab. One issue per failing criterion, deduplicated across runs so a
single broken user story doesn't fan out into N copies.

Triage works the same wherever you are — dashboard or Slack thread.
State is shared across surfaces, so an action in one place updates
the other instantly.

<img src="https://mintcdn.com/minitap-30239763/wLvqfpOkfUc7rcKB/minitest/images/issues.png?fit=max&auto=format&n=wLvqfpOkfUc7rcKB&q=85&s=535004e28a02d5881f7608a61f5aeaae" alt="Issues tab — left rail lists issues with criticality + age, right pane shows before/after, expected/actual, and suggestions" width="2880" height="1620" data-path="minitest/images/issues.png" />

## Inside an issue

<CardGroup cols={2}>
  <Card title="Criterion" icon="list-checks">
    The exact wording that didn't hold.
  </Card>

  <Card title="Criticality" icon="triangle-alert">
    `Critical`, `Warning`, or `Pass`. Inferred by Mini from what it
    observed, and overridable per issue when the inference doesn't
    match your business reality.
  </Card>

  <Card title="Status" icon="circle-dot">
    Where the issue is in the triage workflow below.
  </Card>

  <Card title="Last seen" icon="clock">
    The most recent run where the issue reproduced.
  </Card>

  <Card title="Evidence" icon="video">
    A short clip of the failure plus a deep link to the
    [run report](/docs/minitest/runs/run-report) at the right moment.
  </Card>

  <Card title="Fix prompt" icon="clipboard-copy">
    The same paste-ready block from the run report, one click away.
  </Card>
</CardGroup>

## The triage actions

Every issue exposes three buttons. Pick one — that's the whole loop.

<CardGroup cols={3}>
  <Card title="Acknowledge" icon="eye">
    You've seen it; nothing else to say yet. The issue stays open in
    the queue.
  </Card>

  <Card title="Not a bug" icon="circle-slash">
    Intentional change, flaky criterion, false positive. You're asked
    for a short note explaining why it isn't a bug. The issue stops
    counting against the app.
  </Card>

  <Card title="Resolved" icon="circle-check">
    The underlying problem is fixed. You're asked for feedback on
    what the fix was, and the next clean run closes it for real.
  </Card>
</CardGroup>

<Tip>
  Every triaged issue keeps a **Back to review** button that returns
  it to the open queue if you change your mind.
</Tip>

<Note>
  Every note you write — on **Not a bug** or on **Resolved** — feeds
  [Mini's memory](/docs/minitest/suite/mini-maintains-your-suite). Next time it
  sees something similar, it has your reasoning to draw on, so the
  same false positive doesn't show up twice and the same fix patterns
  inform future suggestions.
</Note>

## Overriding the criticality

Mini infers criticality from what it observed, but you know your
product. If the inference is wrong, override it on the issue itself:

* A small-looking criterion that protects revenue
  (`Order total matches sum of items`) → bump to **Critical**.
* A serious-looking criterion that's actually cosmetic
  (`A small "Beta" badge is shown`) → drop to **Warning**.

The override is sticky on that issue and reflected everywhere the
issue appears.

## Where issues live

<CardGroup cols={2}>
  <Card title="In the dashboard" icon="layout-dashboard" href="https://app.minitap.ai">
    The **Issues** tab on every app. Left rail lists open issues by
    criticality and age, right pane shows the criterion, evidence,
    and the triage actions.
  </Card>

  <Card title="In Slack" icon="message-circle" href="/docs/minitest/integrations/mini-in-slack#the-run-heartbeat">
    The same actions sit in the run heartbeat thread. Triage where
    the conversation already is — the dashboard updates the moment
    you click.
  </Card>
</CardGroup>
