maverick verify- PASS npm test · exit 0
- PASS npm run lint · exit 0
- PASS npx tsc --noEmit · exit 0
CONCEPT · EVIDENCE, NOT CLAIMS
Verification is the evidence that the intended behavior works and that the constraints still hold. In Maverick it is a set of gates: commands that read the code and the diff, never the agent's summary, and that each write a report next to the task.
An agent that says "all tests pass" is making a claim. A green command alone may not prove the requested outcome either: tests can be skipped, weakened or simply not cover the new behavior. Verification asks three separate questions, and a change has to answer all of them:
| Question | Gate | Report |
|---|---|---|
| Do the checks pass? | maverick verify runs the detected lint, typecheck, test and build commands | EVIDENCE.md with every command and exit code |
| Did it change only what the plan said? | maverick guard compares the diff with TECHSPEC File References and the task Files, and checks the change budget | SCOPE-GUARD.md |
| Is it safe? | maverick security scans the diff for private keys, secret assignments and unsafe dynamic execution | SECURITY-REPORT.md |
| What came in? | maverick deps lists changed manifests and lockfiles across ecosystems | DEPENDENCY-REVIEW.md |
Pick what the agent changed. Notice that the tests can pass while other gates still warn, and that the gates react to the diff itself.
src/orders/orders.controller.tssrc/orders/orders.service.tssrc/orders/dto/list-orders.dto.tstest/orders.e2e-spec.tsmaverick verifymaverick guardmaverick securitymaverick depsmaverick review --diffmaverick verify does not guess. It detects your stack (maverick stack) and picks commands per check kind, lint, typecheck, test and build, from the project's own runners: npm scripts, a Makefile, pyproject.toml, go.mod, Cargo.toml and others, per subproject in a monorepo. When detection is not enough, declare them:
{
"verification": {
"commands": [
"npm run lint",
{ "name": "e2e", "command": "npm run test:e2e", "cwd": "apps/api" }
]
}
}With no detected or declared command, verify fails instead of passing silently.
# Verification Evidence — add-cursor-pagination-orders-endpoint
Generated: 2026-10-05T14:02:11.420Z
## PASS — npm run lint
Exit code: 0
## PASS — npx tsc --noEmit
Exit code: 0
## FAIL — npm test
Exit code: 1
✕ orders › returns 400 for an invalid cursor (12 ms)Evidence is a file, not a chat message, so it survives the session, is attached to the PR draft and is checked by maverick readiness.
Verification is not one step at the end. The maverick-build skill verifies every subtask before marking it done:
maverick subtask next <task> shows the ones whose dependencies are done; the skill marks one in progress.
Each Step, test and criterion in task_NN.md is checked as it is done.
The tests named in the task, then maverick verify for the whole stack.
subtask set … done refuses while an item is unchecked. The skill asks you before the next subtask.
When checks fail, the bounded fix-checks flow lets an agent iterate on lint, typecheck and test failures, up to five times, and stops early when two iterations make no progress:
maverick flow run fix-checks add-cursor-pagination-orders-endpoint --agent claude-codePassing checks are necessary, not sufficient. Three checks ask whether the checks themselves can be trusted:
maverick integrity): did the change make a check weaker? Deleted, skipped or looser tests, silenced lint, edited check configuration.maverick ablation): can the new tests fail at all? Each new or changed test file runs with the change, where it must pass, and on the code before it with only the new tests on top, where it must fail. A test that passes both ways is vacuous-test. A regression guard named in the TECHSPEC Test Plan is meant to pass both ways.maverick structure, the architecture gate): did the change make the import graph worse? A new cycle, a new import the boundary rules forbid, or a health drop beyond architecture.maxHealthDrop fails it, unless the TECHSPEC declares the edge under ## Architecture.The ship flow runs ablation and structure as warnings; the built-in loop flow blocks on structure, so no iteration can add a cycle. For the strongest evidence, add sealed tests: checks the agent never sees.
The strict workflow, chosen for security, data, payments, migrations and shared infrastructure, adds a SECURITY stage before review, requires EVIDENCE.md before review --diff is clean, and requires a CHECKPOINT.md (git status and diff, saved with maverick checkpoint) before merge readiness.
.skip, or loosening a matcher. The review checklist asks about it explicitly.EVIDENCE.md, not the message that says it passed.guard and review --diff say so.maverick verify passes and EVIDENCE.md is currentmaverick guard findings are explained or fixedmaverick security signals were read by a personDEPENDENCY-REVIEW.md are necessary and maintainedmaverick integrity <task> checks this from the diff)| Command | Does | Fails when |
|---|---|---|
maverick verify <task> | Runs the detected checks, writes EVIDENCE.md | Any check fails, or none is detected |
maverick guard <task> | Compares the diff with the declared scope | A file is outside scope, or the budget (default 8) is exceeded |
maverick integrity <task> | Audits the diff for weakened checks: deleted, skipped or focused tests, fewer or looser assertions, silenced lint or types, edited check configuration or CI | A blocking finding is found (see Loop engineering) |
maverick security <task> | Scans the diff for high-signal patterns | Any signal is found |
maverick deps <task> | Lists changed manifests and lockfiles | Never: it is a report for the reviewer |
maverick policy check <task> | Applies .maverick/policy.json (max files, sensitive paths) | A rule is broken |
maverick flow run ship <task> | Runs every gate in order as one contract | A blocking gate fails |