Autonomous Dev Loop

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

RuleStageWhat it governsWhere to look, and what a change requiresDecisions
review-withheldreviewReviews are withheld on code the prompt budget or the CI evidence leaves unseen
  • config/models.yaml#review_max_input_tokens · run the live evals.yml (suite review)
  • config/models.yaml#anthropic_review_max_diff_chars · run the live evals.yml (suite review)
  • AI_PROVIDER_REVIEW · run the live evals.yml (suite review)
  • config/review-evidence.yaml#checks · run the live evals.yml (suite review)
  • prompts/pr-review-system.md · run the live evals.yml (suite review)
ADR-0026, ADR-0038, ADR-0049
review-coveragereviewReviews are cut or withheld on a prompt budget that does not fit the diffs
  • config/models.yaml#review_max_input_tokens · run the live evals.yml (suite review)
  • config/models.yaml#anthropic_review_max_diff_chars · run the live evals.yml (suite review)
  • AI_PROVIDER_REVIEW · run the live evals.yml (suite review)
ADR-0028, ADR-0038
autofix-ineffectiveautofixAuto-fix attempts end without a delivered push
  • config/models.yaml#autofix_max_input_tokens · no eval suite measures it: verify by hand and say so in the PR
  • config/models.yaml#autofix_diff_ratio · no eval suite measures it: verify by hand and say so in the PR
  • config/models.yaml#autofix_feedback_ratio · no eval suite measures it: verify by hand and say so in the PR
  • prompts/auto-fix-system.md · no eval suite measures it: verify by hand and say so in the PR
ADR-0017, ADR-0029
conflicts-unresolvedconflictsConflicts-fix attempts end without a merge commit
  • config/models.yaml#conflicts_max_input_tokens · no eval suite measures it: verify by hand and say so in the PR
  • AI_PROVIDER_CONFLICTS · no eval suite measures it: verify by hand and say so in the PR
  • prompts/conflicts-system.md · no eval suite measures it: verify by hand and say so in the PR
ADR-0017, ADR-0059
codegen-blockedgenerationCode generation is blocked before it proposes a patch
  • config/models.yaml#generation_max_input_tokens · no eval suite measures it: verify by hand and say so in the PR
  • prompts/generation-system.md · no eval suite measures it: verify by hand and say so in the PR
  • prompts/validation-system.md · run the live evals.yml (suite validation)
ADR-0029
llm-fallbacksproviderThe primary provider fails often enough that the fallback answers
  • AI_PROVIDER_<STAGE> · no eval suite measures it: verify by hand and say so in the PR
  • retry policy (ADR-0022) · no eval suite measures it: verify by hand and say so in the PR
  • provider tier · no eval suite measures it: verify by hand and say so in the PR
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

RuleWhy there is none
review-duplicatesfixed in .github/ workflow triggers, which no lever may name (ADR-0046 §5); the ADR-0028 marker is code, not a setting
runs-faileda 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-stuckdepends on the content of the pull request
escalationsa person is the lever (ADR-0001)
external-review-churna practice (AGENTS.md, PR Review Comment Workflow) and the size of the pull request, not a setting; the reviewer is external
rate-limit-waitsa 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.