# Sample output format — REFERENCE

> The stage-progression-validator skill must emit the report in this exact
> format. Downstream renderers (Slack digest job, weekly email) parse this
> Markdown — keep section headings and ordering stable.

## Report header

```markdown
# Stage progression validation — week ending YYYY-MM-DD

Window: YYYY-MM-DD → YYYY-MM-DD
Methodology: MEDDPICC (rubric last reviewed YYYY-MM-DD)
Opportunities scored: N
- pass: N
- flag: N
- fail: N
- needs_manager_review: N
- needs_methodology: N
```

If the rubric `last_reviewed` is more than 90 days old, prepend a single line: `> WARNING: stage-criteria rubric last reviewed YYYY-MM-DD (over 90 days).`

## fail section

One block per failed deal. Order by deterministic-score ascending (worst first), tie-break by qualitative-score ascending.

```markdown
## fail (N)

### {Account name} — {New stage label}
- Opp ID: 006xxxxxxxxxxxxxxx
- Owner: owner@example.com
- Progressed: YYYY-MM-DD
- Deterministic score: D.DD (X of Y rules satisfied)
- Qualitative score: D.DD (X of Y claims supported)

Deterministic misses:
- `{field}` is NULL
- `OpportunityContactRole` has no role matching `/{regex}/`
- `Task.Type = '{type}'` not found in last {N} days

Qualitative misses:
- `{field}` claim: no Gong call in last 30 days matches pattern `{pattern_name}`
- `{field}` claim: no Gong call in last 30 days contains `{pattern}` near claimed value

Recording coverage: {N} recorded calls in last 30 days (floor: {M}).
```

## flag section

Same block format as `fail`. Order by combined score ascending.

## needs_manager_review section

Same block format. Add a one-line `Reason:` field naming why the deal landed in the borderline band — `low recording coverage`, `one rule short`, `mixed signal across deterministic and qualitative`, etc.

## needs_methodology section

```markdown
## needs_methodology (N)

| Opp | Owner | New stage | Reason |
|---|---|---|---|
| {Opp ID} | {owner} | {stage label} | no rubric entry for stage |
```

## pass section

Tabular, no per-deal block — passes are not interesting in the digest.

```markdown
## pass (N)

| Opp | Owner | New stage | Deterministic | Qualitative |
|---|---|---|---|---|
| {Opp ID} | {owner} | {stage label} | 1.00 | 1.00 |
```

## Footer

```markdown
---
Generated by stage-progression-validator skill at YYYY-MM-DDTHH:MM:SSZ
Inputs: methodology_path={path}, borderline_threshold={float}
```
