P4.VER.001 — Repository declares a fast verification entrypoint¶
| Field | Value |
|---|---|
| Principle | P4 (Verifiability) |
| Severity | warn |
| Evidence | strong |
| Stability | experimental |
What it checks¶
The root of the repository must contain one of:
Task runners:
- Makefile (or makefile)
- justfile (or Justfile)
- Taskfile.yml / Taskfile.yaml
Language-specific build/project files:
- package.json (Node/TypeScript)
- pyproject.toml (Python)
- Cargo.toml (Rust)
- go.mod (Go)
- pom.xml (Java/Maven)
- build.gradle / build.gradle.kts (Java/Kotlin/Gradle)
- settings.gradle / settings.gradle.kts (Gradle multi-project)
- Gemfile (Ruby/Bundler)
- Rakefile / rakefile (Ruby/Rake)
- composer.json (PHP)
- mix.exs (Elixir)
- build.sbt (Scala)
- CMakeLists.txt (C/C++ CMake)
- deno.json / deno.jsonc (Deno)
- Earthfile (Earthly)
- BUILD.bazel (Bazel)
- meson.build (C/C++ Meson)
Why it matters¶
P4 asks whether an agent can prove a change correct in minutes, locally. That starts with "what is the command?" — and that command must be discoverable without guessing. A declared entrypoint is the cheapest possible signal.
This rule does not evaluate whether the verification loop is fast or
meaningful — that's Phase 2's job (measured via verification_latency_s).
Phase 1 asks only for presence.
When to care¶
- Care always for any repository with more than a trivial amount of code.
- Care less for pure-documentation repos, templates, or content-only assets. Suppress with a rationale.
How to fix¶
Add a Makefile (or the equivalent for your stack) with a single test
target that runs the fast suite end-to-end in seconds. For example:
Then name that entrypoint in CLAUDE.md so agents know which command to run.
Suppressing this rule¶
ignore:
- rule: P4.VER.001
reason: "Documentation-only repository; no code to verify"
expires: 2027-01-01
History¶
- 0.1.0 — introduced at
stability: experimental.