You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(conductor): holistic-review fixes + CI + committed example artifacts (v0.3.3)
A whole-codebase review (6 dimensions, each finding independently verified)
confirmed 17 issues; verdict "solid". This addresses the correctness ones plus
the highest-leverage packaging gaps.
Correctness:
- Coordinator.run_all() is now safe to call repeatedly: a fresh per-batch token
(not a per-Coordinator one) so trace files never collide/truncate, and a fresh
owned ledger per batch so cost isn't double-counted across runs. (was HIGH)
- Orchestrator owns its ledger PER run() (created in run(), like the Tracer), so
re-running the same Orchestrator no longer writes to a closed ledger while
stale in-memory rows leak into the next run's budget/summary. (was MEDIUM)
- replay_trace now compares terminal status: a run that ended budget_exceeded
can no longer replay as max_steps and still report match:true. (was MEDIUM)
- CascadeBackend returns a new turn (dataclasses.replace) instead of mutating the
strong backend's turn, so a reused turn object can't accumulate extra_usages.
- replay.py docstring corrected (it never diffed per-provider cost).
Packaging / positioning (the buried-lede gaps):
- GitHub Actions CI (pytest on py3.9 + py3.12) + CI/python/license badges.
- examples/ now COMMITS real outputs (a run trace, a per-provider ledger, a
sandbox snapshot/rollback trace) so the signature artifact is visible on
GitHub without cloning. README links them up top.
- README "Known limitations (tracked)" section acknowledging the deferred
low-severity items rather than hiding them.
Regression tests for every correctness fix (second run_all, Orchestrator re-run,
replay budget-status divergence, coordinator mid-job budget cutoff). 98 tests
pass; wheel builds. Version 0.3.3.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
These are **real outputs** committed so you can see what Conductor produces
4
+
without cloning and running it. All were generated key-free by the offline demos
5
+
(`conductor demo` and `conductor sandbox-demo`).
6
+
7
+
| File | What it is |
8
+
|---|---|
9
+
|[`example-trace.jsonl`](example-trace.jsonl)| A run trace: every LLM request/response and tool call/result, one JSON line each (`run_start` → `llm_request` → `llm_response` → `tool_call` → `tool_result` → … → `run_end`). This is the substrate for observability and deterministic replay. |
10
+
|[`example-ledger.jsonl`](example-ledger.jsonl)| The per-provider cost ledger for a two-provider `demo` run — one row per LLM call, keyed by `backend`, so cost splits per provider. |
11
+
|[`example-sandbox-trace.jsonl`](example-sandbox-trace.jsonl)| A `sandbox-demo` trace showing the OS-isolation story: `sandbox` setup → a destructive `run_shell` (snapshotted first) → `sandbox_rollback` → teardown, with the host untouched. |
12
+
13
+
Regenerate them yourself (no API key needed):
14
+
15
+
```bash
16
+
conductor demo --trace-dir examples
17
+
conductor sandbox-demo --trace-dir examples
18
+
```
19
+
20
+
Replay a trace deterministically (reproduces the recorded tool I/O + final answer
21
+
+ terminal status, with no provider calls and no tool side effects):
0 commit comments