Skip to content

Plan Critic

Cluster: Uncategorised | Type: component | MCP Tools: None

Overview

Public API

PlanCriticDecisionError(ValueError)

The LLM did not produce a usable, validated critique decision.

CritiqueDecision

Validated, already-merged critique decision + honest evidence.

Field Type Default
report CritiqueReport required
llm_used bool False
degraded bool True
diverged_from_floor bool False
degradation_reason str ''
rationale str ''
raw_response str ''

Methods:

to_evidence_decisions() -> list[dict[str, Any]]

PlanCriticRuntime(Protocol)

The grounded critique surface: a Plan -> a raw (un-merged) CritiqueReport.

Methods:

critique(plan: Plan) -> CritiqueReport

LLMPlanCriticRuntime

Provider-neutral plan-critique runtime backed by G6's LLM caller.

Constructor:

Parameter Type Default
llm LLMCaller \| None None

Methods:

critique(plan: Plan) -> CritiqueReport

PlanCriticPlanner

Runtime-first VERDICT-tier facade with a deterministic floor + stricter-of.

Field Type Default
runtime PlanCriticRuntime \| None None
floor PlanCritic field(default_factory=PlanCritic)
last_decision CritiqueDecision \| None field(default=None, init=False)
last_llm_used bool field(default=False, init=False)

Methods:

critique(plan: Plan) -> CritiqueDecision

PlanCriticInput(BaseModel)

Field Type Default
op Literal['critique', 'list_patterns', 'ops', 'help'] 'critique'
plan dict Field(default_factory=dict)
goal str ''
steps list[str] Field(default_factory=list)
acceptance_criteria list[str] Field(default_factory=list)
risks list[str] Field(default_factory=list)
tests list[str] Field(default_factory=list)
rollback str ''
run_mode Literal['beta', 'production'] 'beta'
reviewer_signature str ''

PlanCriticBlock(AIBlock[PlanCriticInput, dict, dict])

Constructor:

Parameter Type Default
name str 'plan_critic'
state dict \| None None
agentic_planner - None

Methods:

infer(data: PlanCriticInput) -> Result[dict]

PlanCritic

Methods:

critique(plan: Plan) -> CritiqueReport

Plan(BaseModel)

Field Type Default
goal str required
steps list[str] Field(default_factory=list)
acceptance_criteria list[str] Field(default_factory=list)
risks list[str] Field(default_factory=list)
tests list[str] Field(default_factory=list)
rollback str ''

CritiqueFinding(BaseModel)

Field Type Default
category str required
severity Literal['low', 'medium', 'high', 'critical'] 'medium'
what str required
why str required
unsafe_assumption str ''
better_plan str required
cheap_validation str required

CritiqueReport(BaseModel)

Field Type Default
verdict Literal['pass', 'revise', 'block'] required
findings list[CritiqueFinding] Field(default_factory=list)

Functions

stricter_verdict(a: str, b: str) -> str

Return the stricter of two verdicts on pass < revise < block.

merge_reports(floor: CritiqueReport, agentic: CritiqueReport) -> CritiqueReport

VERDICT-tier stricter-of merge: the LLM may only TIGHTEN.