# Requirements Quality Checklist

Score the generated requirement files, `requirements/index.json`, and `requirements/requirements.md` against these 14 items before handoff.
**Pass criterion: 14/14.** Any failed item MUST be fixed and re-scored.

1. **Proposal used.** `docs/discovery/<project-slug>/inputs/business-proposal.md` exists and was included as source `business-proposal`.
2. **Shared inputs used correctly.** Only `ready` entries from `docs/inputs/<project-slug>/index.json` were read.
3. **Index valid.** `requirements/index.json` is valid pretty JSON with `project` and `requirements`; every entry includes `id`, `kind`, `title`, `module`, `md`, `sources`, and `status`.
4. **Kind valid.** Every requirement has `kind` equal to `FR` or `NFR`.
5. **IDs valid.** Functional IDs use `RF-###`; non-functional IDs use `RNF-###`; no duplicate IDs exist.
6. **One item file per requirement.** Every indexed requirement has exactly one Markdown file under `requirements/items/`.
7. **Module grouping.** Every requirement declares a non-empty `module`/area, and `requirements.md` groups functional requirements by module (not a flat list).
8. **Priority assigned.** Every requirement has a priority from the fixed scale (`Alta|Media|Baja`, or `High|Medium|Low` in `en`); no priority is empty or free-text.
9. **FR fields complete.** Every `FR` item file has actors, numbered acceptance criteria (`AC-<REQ-ID>-NN`), and business rules (numbered `BR-<REQ-ID>-NN` or `N/A`).
10. **NFR fields complete.** Every `NFR` item file was assembled with the NFR template and has a `category` and a `verification criterion` (or `NEEDS INPUT`).
11. **System overview present.** `requirements.md` includes a system overview, users/actors, and general constraints sections.
12. **Consolidated document present.** `requirements/requirements.md` exists and was assembled from the indexed item files.
13. **No invented facts.** Missing facts are marked as `NEEDS INPUT: <specific question>`.
14. **No auto-chaining.** `/machine-discovery:hla <project-slug>` was only suggested, not executed.
