Skip to content

App Repair

Application Repair workflow — a convergence-repair harness (spec: workflow_specs/agentic_code_repair.md).

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

Overview

Public API

AppRepairContract

Read-only facade over the existing deterministic app-repair core.

Methods:

score(dimensions: list[ConvergenceDimension], failing_checks_before: int, failing_checks_after: int, **kw) -> ConvergenceReport

classify(command_output: str) -> DefectClass

classify_command(command: str) -> CommandRisk

CommandRisk(str, Enum)

CommandResult

Field Type Default
command str required
risk CommandRisk required
allowed bool required
exit_code int \| None required
stdout str required
stderr str required
timed_out bool required
refused_reason str ''

Methods:

passed() -> bool

to_dict() -> dict

DimensionStatus(str, Enum)

Status of one scorecard dimension.

ConvergenceDimension

One scorecard dimension: its weight, assessed status, and the evidence behind it.

Field Type Default
key str required
status DimensionStatus required
evidence str ''

Methods:

weight() -> int

ConvergenceReport

The honest convergence verdict for one repair iteration.

Field Type Default
score int required
status str required
reliability_label str required
quality_tier str required
hard_gate_failures list[str] field(default_factory=list)
next_action str 'continue'
evidence list[str] field(default_factory=list)
residual_risks list[str] field(default_factory=list)
score_breakdown dict[str, int] field(default_factory=dict)

Methods:

to_dict() -> dict

DefectClass

One row of the §12 taxonomy.

Field Type Default
key str required
severity str required
repair_strategy str required

RepairContext

What a patch_fn sees: enough to propose a minimal safe fix (never auto-applied).

Field Type Default
repo_dir str required
stack StackInfo required
failure_description str required
failing_command str required
failing_output str required
defect DefectClass required
permission_level str required

PatchProposal

A proposed minimal patch. apply mutates the repo when the harness is permitted.

Field Type Default
description str required
files list[str] field(default_factory=list)
apply Callable[[], None] \| None None
rollback Callable[[], None] \| None None
root_cause_confidence float 0.0

StackInfo

Field Type Default
language str 'unknown'
package_manager str 'unknown'
framework str 'unknown'
install_cmd str ''
build_cmd str ''
test_cmd str ''
markers list[str] field(default_factory=list)
env_vars_detected list[str] field(default_factory=list)

Methods:

to_dict() -> dict

Functions

classify_command_risk(command: str) -> CommandRisk

Grade a command's risk (§20.4). Fail-closed: ambiguity escalates to the higher risk.

run_command(command: str, cwd: str | Path, permission_level: str = 'local_repair', timeout_seconds: int = 120, env: dict[str, str] | None = None) -> CommandResult

Run command under the risk gate. Refused commands DO NOT execute (fail-closed).

score_convergence(dimensions: list[ConvergenceDimension], failing_checks_before: int, failing_checks_after: int, new_regressions: int = 0, original_failure_fixed: bool | None = None, root_cause_known: bool = False) -> ConvergenceReport

Score one repair iteration honestly (§11). Deterministic, model-free.

classify_defect(command_output: str) -> DefectClass

Classify a failing command's combined stdout+stderr into the §12 taxonomy.

run_repair_session(repo_dir: str | Path, failure_description: str, target_outcome: str = 'local_run', permission_level: str = 'local_repair', patch_fn: PatchFn | None = None, timeout_seconds: int = 120, extra_checks: list[str] | None = None, run_install: bool = True) -> dict

Run one repair iteration and return an honest, enveloped repair report.

detect_stack(repo_dir: str | Path) -> StackInfo

Infer stack + baseline commands from marker files. Never executes code.