Metadata-Version: 2.5
Name: pytracer-runner
Version: 0.1.0
Summary: pyTracer per-commit isolated runner - reproduce a trace against any branch or commit.
Author: pyTracer
License-Expression: Apache-2.0
Requires-Python: >=3.10
Requires-Dist: pytracer-replay==0.1.0
Provides-Extra: dev
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Description-Content-Type: text/markdown

# pytracer-runner

Layer 4 infrastructure for pyTracer: the per-commit isolated runner behind
"try on this branch". It checks out an arbitrary branch or commit into a clean
workspace, runs a command there (typically installing dependencies and running
`pytracer run`), and returns the result, so a captured failing trace can be
replayed against a different branch with the model version and recorded tool
responses held frozen and only the agent code varying (guide section 5).

Each run happens in its own fresh workspace, because two branches may have
different dependency versions and must not share an environment.

```python
from pytracer_runner import CrossBranchRunner, GitSourceProvider, DockerExecutor

runner = CrossBranchRunner(GitSourceProvider("/path/to/repo"), DockerExecutor())
result = runner.reproduce(
    ref="feature/fix-bug",
    collection_path="tests/collection.yaml",
    frozen_trace="baseline.jsonl",           # the failing trace, held frozen
    trace_dest="tests/traces/summarize.jsonl",
)
```

The source and execution backends are pluggable (`SourceProvider`,
`Executor`), so the orchestration is testable with fakes and the real git and
Docker backends are used in production.
