---
name: 60-validate-tests-150
description: "[60] VALIDATE. Ensure new (staged and unstaged) changes are covered by tests at >70% and the full test suite is green. Use when asked to validate coverage for recent changes, add tests for modified code, or verify nothing else broke."
---

# Validate-Tests 150 Protocol

## Goal

Cover current uncommitted changes with meaningful tests at >70% coverage (including **the changed lines**) and confirm the entire test suite is green.

## Workflow

1. **Identify current changes**
   - Check staged and unstaged changes (`git status`).
   - List changed files (`git diff --name-only` and `git diff --name-only --staged`).
   - Focus testing on these files and their direct dependencies.

2. **Find the coverage command**
   - Check `package.json` scripts for `test`, `coverage`, or `ci`.
   - If unclear, search for Jest/Vitest config files and default coverage options.

3. **Run coverage**
   - Execute the project’s coverage command.
   - Save the exact overall percentage and per‑file coverage for changed files (lines/branches).
   - Passing tests ≠ coverage: verify that **the changed lines** are executed (use coverage reports to confirm).

4. **Prioritize targets**
   - Start with changed files that are <70% covered.
   - Prefer pure functions, utilities, and deterministic logic.

5. **Add tests**
   - Write tests that directly exercise the **changed logic/markup** and assert behavior, edge cases, and failure paths.
   - Prefer behavior- or structure-level assertions that map to the changed lines (e.g., DOM structure/classes for UI changes).
   - Avoid snapshot‑only tests unless behavior is visual and stable.

6. **Re‑run coverage**
   - Confirm each changed file is **> 70%** covered (lines/branches where available).
   - Confirm the **specific changed lines** are covered (use coverage reports or direct evidence in tests).
   - If coverage tooling only provides overall numbers, explain the limitation and justify how tests exercise the changed code.
   - If not met, repeat steps 4–6.

7. **Run full test suite**
   - Execute the standard full test command for the repo (not just a subset).
   - Ensure all tests are green.

8. **Run lint**
   - Execute the standard lint command for the repo.
   - Ensure lint is green and **fix lint errors** introduced or surfaced in the process.
   - Do not leave lint in a failing state.

9. **Run compile**
   - Execute the standard compile command for the repo `npm run compile` or `tsc --noEmit`, best way is from root directory `npm run test && npm run lint:full`
   - Ensure compile is green and **fix compile errors** introduced or surfaced in the process.
   - Do not leave compile in a failing state.

10. **Report**
   - Summarize added tests, coverage changes, and full test results.
   - Note any files intentionally excluded or skipped and why.

## Validation checklist

- [ ] Staged and unstaged changes identified.
- [ ] Coverage command found and recorded.
- [ ] Baseline coverage captured.
- [ ] Tests added for changed files and direct dependencies.
- [ ] Changed files are >70% covered (lines/branches where available).
- [ ] Full test suite executed.
- [ ] All tests are green.
- [ ] Lint executed and green.
- [ ] Compile executed and green.

## Output expectations

- Provide the command used to measure coverage, to run the full test suite, and to run lint.
- Provide before/after coverage numbers and per‑file coverage for changed files.
- Explicitly state how the **changed lines** are exercised by the tests.
- List which files were targeted and why.
- Confirm the final threshold is met for changed files, or report remaining gaps.
- Confirm all tests and lint are green.
- Confirm compile is green.
