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

# INVEST Scoring

> How TestForge scores user stories against the INVEST framework.

# INVEST Scoring

## The six criteria

| Letter | Criterion   | What it checks                                               |
| ------ | ----------- | ------------------------------------------------------------ |
| **I**  | Independent | Can the story be delivered without being blocked by another? |
| **N**  | Negotiable  | Can the scope be adjusted without losing core value?         |
| **V**  | Valuable    | Does it deliver clear, measurable value?                     |
| **E**  | Estimable   | Can the team estimate the effort with confidence?            |
| **S**  | Small       | Does it fit within one sprint?                               |
| **T**  | Testable    | Are the acceptance criteria concrete and verifiable?         |

## How scoring works

### On-demand INVEST score

Click **Analyse (INVEST)** for a full LLM-powered analysis. Each criterion receives one of three statuses:

| Status        | Score contribution |
| ------------- | ------------------ |
| ✅ **ok**      | 100                |
| ⚠️ **weak**   | 50                 |
| ❌ **missing** | 0                  |

The INVEST score (0–100) is derived deterministically from the six criteria: average of the six values, rounded. The number and the I/N/V/E/S/T grid always agree — they share the same source.

If the score is below 40, an alert prompts you to improve the story before generating tests.

No LLM call fires on panel open — the score only appears after you explicitly click **Analyse (INVEST)**.

Each criterion also shows a justification and inline suggestions. Click any criterion cell to expand its suggestions.

### Before → after score

After clicking **Rewrite in ADO**, the panel re-reads the story fields from the ADO server (not the form cache) and resets the analysis. Click **Analyse (INVEST)** again to compute the **after score** on the improved version.

### When the LLM is unavailable

If your provider is not configured or unreachable, a descriptive message with a link to the Config tab is shown — no phantom score is displayed.

## Score levels

| Score  | Level                                           |
| ------ | ----------------------------------------------- |
| 70–100 | ✅ **Ready** — can enter the sprint              |
| 40–69  | ⚠️ **Needs work** — one or more criteria weak   |
| 0–39   | ❌ **Critical** — needs rework before estimation |

## Language invariant

All generated content is produced in the **same language as the source story**. If your story is in French, the output is in French. TestForge never silently translates.
