Skip to content

v0.7.0

Choose a tag to compare

@JackWeiw JackWeiw released this 13 Oct 02:12
· 47 commits to main since this release
75bac2f

Final stable release of 0.7.0. Major release spanning rc1 → rc2 → rc3 → final, consolidating all changes since v0.6.0 (~140 commits across 8 feature areas).

1. Replay workflow (trajectory / lifecycle / exec replay)

Deterministic replay of recorded SWE-bench trajectories against sandbox backends. Three modes: exec_only (long-lived continuous exec, baseline), lifecycle (create_all then per-step resume/pause via aenv LifecycleCapable; oversubscription via snapshot memory reuse), trajectory (ephemeral create_one/kill_one via aenv EphemeralCapable; oversubscription via queue limiting + launch_interval_sec pacing).

Replay stack #114-#134 mega-merge: trajectory loading + cached pool, ReplayStep/Trajectory dataclasses, ReplayTaskRunner/ReplayRoundRunner, RoundRobinTaskManager replay wiring, LifecycleSeriesWriter (thread-safe JSONL series), 6-timestamp _run_slice, admission controllers, ReplayMetrics segment lists + retry accumulators, QPS-gate exec bucket, report formatting + e2e smoke.

Follow-ons: lifecycle hot-path contention fix #161 (writer drain thread - root cause of ~4x wall inflation), exec_only lifecycle-series writer fix #190, manifest as authoritative run set #196, two-tier per-run aggregation #197, e2b SDK pin <2.47 for AENV #203, replay.yaml action_timeout=300s #207/#209, per-step action text, replay.py split into config+formatter #192.

2. Aenv provider (lifecycle + ephemeral capabilities)

New --provider aenv: subclasses E2BProvider, reuses E2B SDK pointed at an AENV server via E2B_API_URL. Adds pause/resume (E2B beta_pause/Sandbox.connect), create_one/kill_one (trajectory mode), snapshot_sizes. default_replay_mode = lifecycle. Satisfies LifecycleCapable + EphemeralCapable + SnapshotSizeCapable. Documented in CLAUDE.md #169.

3. Oversub benchmark driver + cross-arch comparison

  • oversub-bench (#143-#150): standalone driver over the kernel; emits run_summary.json + sweep-config YAML. Kernel emits raw facts, driver computes valid. Flushes partial artifacts on interrupt #150, round_count pass-through #149, terminal phase logs #164, traj denominator fix #163.
  • oversub-compare #191: manifest-driven join of N sweep dirs (ARM baseline vs x86 freq/L3 configs); emits tidy + ratio-summary + 4-sheet xlsx. Per-run row collapse #200.
  • Ctrl+C teardown for sweep #225 and replay stress #224.

4. RFC 0002 - workflow plugin architecture

Internal refactor, no CLI breaking changes. TaskRunner ABC + WorkflowSpec registry + RunContext #177, migrate runners + collapse dispatch #178, typed WorkflowConfigBase views #179/#180, report layer onto ReportFormatters strategies #181, drop hardcoded workflow set #182. Data-driven capability error hint #175. RFC accepted/Active #170/#174.

5. vm_monitor enhancements

  • Always-on raw snapshots #213/#219: /proc/meminfo + /proc/vmstat + /proc/stat + per-cpu + per-VM + per-device /sys/block + ublk-daemon jiffies, written to raw_data/ on a background daemon thread.
  • PSS field #210 (smaps_rollup, <2% perturbation); ublk-daemon cores + fleet-total PSS timeline #211.
  • iostat-style disk capture #185 (IOPS + avg request size); disk util_pct 100x fix #221.
  • Per-collector --no-X switches + devkit mem/topdown split #186; guaranteed resource_report.xlsx + opt-out chart phase #189; ksys rotation fix #223.
  • Log capture rotation #220; host CPU utilization curve #202; --host-proc #229; reclaim-stall rates #230; SVG into svg/ subdir #231; host_resources.xlsx raw-CSV consumer #222; cubesandbox VMM type #218.
  • CI: vm_monitor test job #226; fixture relocation #227; standalone usage guide EN/ZH #206.

6. cubesandbox provider (Cloud Hypervisor microVM, full lifecycle)

New full-lifecycle provider #136 RFC then #214 Phase1 exec then #215 Phase2 lifecycle: exec + pause/resume + create_one/kill_one + snapshot_sizes. RFC relocated to docs/dev/rfcs/0003 #216. vm_monitor integration + real snapshot_sizes deferred.

7. Observability workbook (_obs.xlsx)

8-sheet workbook: Overview, Per-step timings, Lifecycle overhead, Trajectory summary, Step detail, Concurrency states, Gantt, Snapshot sizes. Per-step timing + lifecycle overhead % in Overview #183/#184/#201/#204. Atomic xlsx write + legend fix; per-trajectory replay_result.json export. Name shortened #162. matplotlib core dep for Gantt PNG #165.

8. Document bench + misc

pdf/xlsx document bench configs #188; optimized Dockerfiles PGO+LTO CPython 3.12.3; docs reorganized into architecture/guide/dev #166; env_provider tests grouped by provider #199; TaskManager into task_manager package #194/#195; issue templates to RFC guide #217; httpx/httpcore logging capped at WARNING.

Version indexes

  • pyproject.toml: 0.7.0rc3 to 0.7.0
  • version.py: 0.5.0/alpha to 0.7.0/stable (synced single-source-of-truth header).

No CLI breaking changes.