Validate Loop
The Validate Loop is the quality gate before a PR is opened. It runs a more thorough check than the Dev Loop validators: a three-part review covering ticket completeness, code quality, and security.
What it does
The validate skill runs a structured quality gate:
- Ticket completeness: checks the spec, acceptance criteria, and tasks are complete
- Code quality: reviews the diff against codebase patterns, style, and naming conventions
- Security: scans for vulnerabilities introduced by the change
The output is a structured report with a clear READY FOR PR or NEEDS WORK verdict.
How to start it
The Validate Loop fires automatically when the Dev Loop completes. You can also run it manually:
/dmx/run-loop validateThe human gate
After validate runs, the loop pauses. Review the validation report. If it says NEEDS WORK, address the findings before continuing.
When you're satisfied:
/dmx/loop-continueThe Validate Loop validators run (tests and spec adherence again as a final confirmation), then the loop chains to the Release Loop.
Validators
The Validate Loop runs the tests again, then checks the change against the spec, as a final check before the PR opens.
run_tests
| Check | Required |
|---|---|
tests_pass | Yes |
spec_adherence
| Check | Required |
|---|---|
scope_matches_spec | Yes |
no_regressions | Yes |
spec_adherence runs only in this loop, because it grades the report the validate skill writes. The no_regressions check reads the regressions list in the validation-report.json that the validate skill writes to .dmx/jobs/{job_id}/, and fails if that list is non-empty.
Loop config
name: validate
skills:
- validate
trigger:
type: on_complete
goal_state: "All required checks pass, code reviewed, ready for PR"
validators:
- tool: run_tests
timeout_seconds: 630
checks:
- name: tests_pass
required: true
- tool: spec_adherence
checks:
- name: scope_matches_spec
required: true
- name: no_regressions
required: true
on_optional_failure: warn
failure_handling: pause
human_gate: true
on_complete:
on_success:
trigger_loop: releaseExtending the Validate Loop
The validate skill covers ticket completeness, code quality, and basic security. For production teams, you'll want additional validators:
- A real security scanner (Bandit, Semgrep, Snyk)
- A coverage threshold check
- A lint or format check
- An LLM-backed spec adherence check
Override these by replacing validators/spec_adherence.py or adding new validators to your loop config. See Writing Validators.
Tips
Read the NEEDS WORK report. When validate returns NEEDS WORK, it's a structured report with specific findings. These are the things a human reviewer would catch. Don't skip them.
The Validate Loop is not the only gate. The Dev Loop should catch test failures. The Validate Loop is where you catch what the Dev Loop misses: security issues, scope creep, code quality problems.