Sutura Case Lab · About

What Sutura verifies

How Sutura reproduces a CI failure, searches repairs in sandboxes, audits the patch, and refuses green-wash fixes.

AI agents make CI pass. Sutura verifies the fix, filters flaky failures, rejects unsafe shortcuts, and opens an evidence-backed pull request for human review. It reproduces real failures in isolated sandboxes and searches bounded repair checkpoints before an independent audit. It never auto-merges.

This page is the README of the Sutura repository in plain text. Every case in the Case Lab is one run of the pipeline described here, with its recorded evidence.

How it works

  1. A GitHub Actions run fails.
  2. Sutura reads the exact pull request head SHA and the failed-step log.
  3. Nemotron Nano diagnoses the failure.
  4. ConTree prepares the dependencies once and snapshots the filesystem.
  5. Branching use 1: progressive triage reproduces the failure in a first batch, and the same image runs the next batch when the evidence is mixed.
  6. Nemotron Super proposes repairs.
  7. Branching use 2: initial checkpoint branches and adaptive beam expansion search the repair proposals from the same image.
  8. A deterministic winner is selected.
  9. Branching use 3: a clean audit branch reruns the selected patch.
  10. Mechanical checks and a Nemotron Ultra review judge the evidence.
  11. Approved: an evidence-backed fix pull request and an HTML case file. Rejected: a refusal report.

ConTree branching has three distinct jobs: independent triage reproductions, adaptive repair checkpoint search from immutable parent images, and a clean rerun of the selected patch for adversarial audit. Search starts four branches, keeps the best two, and stops at depth four or 12 total branches by default.

A passing command is necessary, but it is not enough. Sutura also rejects deleted or skipped tests, weakened assertions, relaxed compiler or linter settings, ES module syntax added to CommonJS files, and similar green-wash fixes. See a refusal.

Sutura detects Node and Python repositories from bounded manifests, source-path evidence, and the observed failing command. A polyglot repository must set "runtime": "node" or "runtime": "python" in .sutura.json; equal automatic evidence fails closed. The Python runtime is pinned by exact image digest. It accepts only uv.lock or exact hash-locked binary requirements, prepares them before source overlay, and runs all project commands without network access.

Every run ends as fixed, flaky-no-patch, refused, gave-up, or infra-stop. The pull request comment uses a surgical report with Diagnosis, Triage, Procedure, Pathology, and Discharge sections. The full HTML case file is a workflow artifact. See a flaky classification.

Runtime roles

ServiceRuntime role
NVIDIA Nemotron on Nebius Token FactoryNano classifies the failure, Super proposes repairs, and Ultra audits evidence that static checks cannot judge.
Nebius ConTree SandboxesPrepares dependencies once, snapshots the filesystem, and runs isolated triage, adaptive search, and audit branches.
TavilyGrounds upstream dependency diagnoses in release and migration sources. It is optional for non-upstream cases and for the benchmark ablation.

The report identifies the model calls that actually occurred. Cost is reported as inference cost from the token ledger. Each entry keeps the abstract Nano, Super, or Ultra role separate from the actual routed provider model ID. It is not presented as total operating cost.

The five cases

Each case page shows the failed commit and CI evidence, the Nano diagnosis, the ConTree search tree, the Super candidates, the rejected patches and their reasons, the Ultra verdict, the final outcome, the cost, and links to the GitHub evidence. The page is labeled with how its result was produced and whether the outcome matched the expected one.

Source

Sutura is open source under the MIT license. The repository holds the GitHub Action, the CLI, the benchmark, and this site. The README records the benchmark evidence, the security boundary, and the install steps.