Logs show order
A trace can show which call came first. It cannot prove which output made the final outcome fail.
OBSERVATIONThe debugging agent for multi-model systems
CULPRIT does not ask a model to read logs and guess. It re-runs the system, changes one component at a time, and follows the evidence from symptom to component, checkpoint, and training data.
01 / THE CASE
Robots and agent systems are model stacks. A downstream planner may look wrong because perception gave it the wrong world. CULPRIT separates sequence from cause by replaying the same run with one output replaced by an oracle reference.
A trace can show which call came first. It cannot prove which output made the final outcome fail.
OBSERVATIONSubstitute the detector reference, re-run planner and controller, and observe whether the task outcome changes.
INTERVENTIONBisect the implicated model history, confirm rollback, then compare the exact training manifests at the boundary.
ATTRIBUTION02 / EXHIBIT A
The shipped CPU reference harness creates twelve frames, one low-light failure, five detector checkpoints, and a known training-manifest change. Every number below is regenerated by the Python implementation.
Responsible component
Oracle substitution flips the task outcome across 10/10 deterministic seeds.
Regressing transition
Two binary-search evaluations, 38 failing probes, eight controls, rollback confirmed.
Training-data change
The depleted low-light slice matches the regression-set composition.
Evidence standard: correlation proposes a hypothesis. A deterministic outcome flip supports component attribution. A bounded pass-to-fail transition plus rollback supports checkpoint attribution. Manifest direction matching the regression slice supports a tier-2 data-composition finding.
03 / METHOD
Agent traces and decoded MCAP-style envelopes become one actor-keyed timeline. The original evidence remains untouched.
A logarithmic replay search finds frame 7, the earliest substitution horizon that recovers the outcome.
Ground-truth detector output recovers the grasp. Planner and controller substitutions do not.
The probe set bounds the regression between ckpt-3 and ckpt-4 and confirms that rollback holds.
Content-addressed manifests expose the low-light drop; the changed slice matches 31 of 38 regressions.
04 / TWO HONEST ENDINGS
Name the component and decisive frame. Unlock checkpoint bisection. Descend into the manifest only after rollback is confirmed.
Stop the descent. Preserve missing references and failed hypotheses. Export an unresolved finding instead of guessing.
05 / UNDER THE FLOOR
The workbench is a browser-side reconstruction of artifacts emitted by the dependency-free Python engine. Installed users can execute that engine through the CLI or a loopback HTTP service with health/readiness probes, SQLite lineage, finding hashes, and per-run JSON/HTML evidence bundles.
Inspect the repository$ git clone https://github.com/Aneesh-Pothuru/culprit
$ cd culprit && make demo
$ culprit serve # installed live reference API
06 / ABOUT THE CLAIM
“If the intervention does not change the outcome, the interface does not name a culprit.”Open the generated finding → Read every limit →