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.
applymutates 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
commandunder 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.