Rules and levers
Which setting or prompt governs the pattern each diagnostic rule reports (LEVERS and NO_LEVER in scripts/lib/meta_levers.mjs, ADR-0047): this page is generated from that table. A lever says where to look, not what caused a finding. A Diagnostics card shows it only for an active warning or critical finding of a rule below; an info finding (a guardrail working as designed) or a resolved one has none. When the rule fires and what counts as an anomaly: Rules and thresholds.
Rules with a lever
| Rule | Stage | What it governs | Where to look, and what a change requires | Decisions |
|---|---|---|---|---|
review-withheld | review | Reviews are withheld on code the prompt budget or the CI evidence leaves unseen |
| ADR-0026, ADR-0038, ADR-0049 |
review-coverage | review | Reviews are cut or withheld on a prompt budget that does not fit the diffs |
| ADR-0028, ADR-0038 |
autofix-ineffective | autofix | Auto-fix attempts end without a delivered push |
| ADR-0017, ADR-0029 |
conflicts-unresolved | conflicts | Conflicts-fix attempts end without a merge commit |
| ADR-0017, ADR-0059 |
codegen-blocked | generation | Code generation is blocked before it proposes a patch |
| ADR-0029 |
llm-fallbacks | provider | The primary provider fails often enough that the fallback answers |
| ADR-0022, ADR-0025 |
Every change also needs docs and tests in the same pull request, and is applied by a person: the dashboard and /loop-insights create nothing on GitHub.
Rules without a lever
| Rule | Why there is none |
|---|---|
review-duplicates | fixed in .github/ workflow triggers, which no lever may name (ADR-0046 §5); the ADR-0028 marker is code, not a setting |
runs-failed | a failed run needs a root cause (docs/runbook.md), not a setting |
stage-failures-* | a repeated stage failure needs a root cause (docs/runbook.md), not a setting |
review-stuck | depends on the content of the pull request |
escalations | a person is the lever (ADR-0001) |
external-review-churn | a practice (AGENTS.md, PR Review Comment Workflow) and the size of the pull request, not a setting; the reviewer is external |
rate-limit-waits | a symptom of the provider tier; revisit with data |
duration-* | a symptom of the provider tier; revisit with data |
A lever never points at
- a workflow or token scope (.github/)
- the protected-paths floor (ADR-0044)
- an eval threshold, dataset or floor (ADR-0031)
- the eval suites (ADR-0031)
- the auto-fix attempt cap (ADR-0034)
- a secret or credential
ADR-0046 §5: no lever lowers a threshold, removes a dataset case or weakens a gate.