Budgeted Review
Motivation
Budgeting prevents a review system from becoming an uncontrolled token sink. Exhausted work is recorded, not hidden.
Theory
Evidence risk review treats an answer as a set of claims
The package then combines evidence gaps, profile checks, and verdict precedence into a stable ReviewResult.
Design + Diagram
Data Model / Contract
ReviewBudget caps LLM calls, tokens, heavy checks, and wall time.
| Field | Meaning |
|---|---|
| artifact_id | Host-defined stable identifier. |
| claims | Discrete claims extracted by the host. |
| sources | Cited evidence with optional tier hints. |
| profile_key | Risk profile used for thresholds and checks. |
| findings | Structured review findings emitted by checks. |
ADR
Problem: adapters tend to grow business logic
Decision: keep PHP facade, Artisan, HTTP, and MCP as thin adapters over ReviewEngine.
Consequences: there is one behavior to test, but adapters must validate input carefully.
Problem: external review can become expensive
Decision: run cheap deterministic checks first and spend LLM budget only when enabled and useful.
Consequences: default installs have zero token cost, but hosts must bind an LLM contract for semantic review.
Worked Example
'budget' => ['max_llm_calls' => 3, 'max_tokens' => 6000],
Gotcha / Limits
The package reviews evidence strength and risk boundaries; it does not retrieve sources, extract claims automatically, or replace human review for regulated decisions.