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

# Functional Validation

> Check whether a PR implements what its linked Jira or Linear issue asked for

## Overview

Functional validation reads the Jira or Linear issues a PR claims to close, breaks each one into individual objectives, and judges every objective against the diff. The result is an **Implementation Status** section in the [Gitar dashboard comment](/gitar-dashboard), one block per linked issue, least complete first.

<CardGroup cols={2}>
  <Card title="Objective by Objective" icon="list-check">
    Each requirement in the issue is tracked on its own, so a PR that does most of the work reads as partial rather than done
  </Card>

  <Card title="Re-Judged on Every Push" icon="rotate">
    New commits are re-checked against the same objectives, so the section keeps up with the branch
  </Card>
</CardGroup>

<Note>
  Functional validation is included on the **Enterprise** plan and needs a connected [Jira](/integrations/jira) or [Linear](/integrations/linear) integration.
</Note>

## How It Works

<Steps>
  <Step title="Gitar finds the linked issue">
    Gitar looks for issue keys in the PR title, description, and branch name. Nothing is linked unless the PR claims the issue, so a passing mention is ignored.
  </Step>

  <Step title="The issue becomes a list of objectives">
    Gitar reads the issue text from Jira or Linear and derives the concrete objectives it asks for.
  </Step>

  <Step title="Each objective is judged against the diff">
    Every objective is marked complete or pending based on the current diff. Pushing new commits re-runs the judgement, and editing the issue reconciles the objective list against it.
  </Step>

  <Step title="Implementation Status appears in the dashboard comment">
    The section is added to the existing Gitar comment on the PR. There is no separate comment and no new status check.
  </Step>
</Steps>

## Linking an Issue

Reference the issue key in the PR title, the PR description, or the branch name, the way you already do to close an issue.

There is nothing to configure. Once Gitar finds a key belonging to a connected tracker, it links the issue and validates the PR against it.

## Reading the Section

The section header carries a count of issues fully implemented, and each issue gets its own block with a status badge and an objective counter.

| Badge | Meaning                                  |
| ----- | ---------------------------------------- |
| ✅     | Every objective in the issue is complete |
| 🟡    | Some objectives are complete             |
| ⬜     | None of the objectives are complete      |

Pending objectives are listed in full, since they are the ones that need attention. Completed objectives collapse behind a **complete** toggle. Blocks are ordered least complete first, and the whole section renders collapsed once every linked issue is fully implemented.

On Bitbucket the same content renders as headings and lists, since collapsible sections are not supported there.

The section is hidden when no linked issue produced any objectives, so PRs without a tracked issue look exactly as they do today.

## Changing the Issue

Objectives track the issue rather than a snapshot of it. Add a requirement and it shows up as pending on the next run. Remove one and it stops counting against the PR: the objective total drops instead of the completion count going up, so cutting scope can never read as work finished.

## Limits

A PR validates at most 5 linked issues. Extra keys beyond that are ignored.

Gitar reads the issue text but never writes to it. Objectives, statuses, and counts live only in the PR comment - your tracker stays the source of truth. To have Gitar post back to the issue on merge, see [Jira](/integrations/jira) and [Linear](/integrations/linear).

Objectives belong to the PR being reviewed. Two PRs against the same issue each track their own set, and there is no combined per-issue view yet.

## Related

<CardGroup cols={2}>
  <Card title="Jira Integration" icon="jira" href="/integrations/jira">
    Connect Jira so Gitar can read linked issues
  </Card>

  <Card title="Linear Integration" icon="list-check" href="/integrations/linear">
    Connect Linear so Gitar can read linked issues
  </Card>

  <Card title="The Gitar Dashboard" icon="comment" href="/gitar-dashboard">
    Where Implementation Status is rendered
  </Card>

  <Card title="Plans" icon="credit-card" href="/account-billing/plans">
    What each plan includes
  </Card>
</CardGroup>
