Skip to content

LoopExec v0.3.0

Documentation source v0.5.0-rc.1. Published releases

LoopExec now governs bounded unattended workflows with exact usage accounting, candidate restoration, and numeric progress. It also composes with released SMALL v1.1.0 and its opt-in v2 collaborative session profile.

Included

  • Configurable total-run and per-command deadlines, cancellation, process-group cleanup on macOS/Linux, bounded output, and private diagnostic tails.
  • Strict, observed, and unmetered workflow accounting with durable reservations, checked integer micro-USD, call/token bounds, and resume reconciliation.
  • Confined candidate snapshots, atomic promotion and best-candidate restoration, protected-file drift checks, and candidate-bound acceptance.
  • Numeric targets, tolerance, minimum improvement, reviewed patience, and vetoes.
  • An offline Go creative adapter and six reproducible acceptance scenarios.
  • A real-CLI SMALL compatibility proof: legacy v1 state and two attributed v2 collaborative sessions, explicit checkpoints, saved evidence, and handoffs.
  • Deterministic demo, read-only replay/report, JSON identity via loopexec version --json, and standard --version.
  • Downloadable macOS, Linux, and Windows binaries with SHA256 checksums.

Compatibility changes

  • A positive --budget-usd now requires a workflow metering contract. Strict caps require the adapter/provider to enforce reservations; observed accounting stops subsequent work and cannot prevent an already completed call from overspending.
  • Every workflow, including unmetered work, requires a usage hook. Consumers must read budget.monetary_known; a numeric zero does not mean cost was known.
  • Collectors fail closed on stderr, nonzero exit, malformed/oversized evidence, duplicate JSON keys, or invalid numeric values.
  • Existing workflow run IDs require explicit --resume with matching policy. Generic reexecute refuses workflows; initialize a new adapter workspace.
  • Convergence still exits 10. An external oracle passes with exit 0. Normalize exactly exit 10 when using a successful LoopExec run as a SMALL apply command; checkpoint remains explicit task acceptance.
  • SMALL is optional. Existing projects are not migrated, and native SMALL-driven task-list scheduling remains outside the implemented core.

Installation

With Go 1.26 or newer:

Terminal window
go install github.com/justyn-clark/loopexec/cmd/loopexec@v0.3.0
loopexec --version
loopexec demo

Or download the archive for your OS/architecture from this release, verify it against checksums.txt, and extract the executable. Unix archives are tar.gz; Windows archives are zip. No model SDK, Python runner, or SMALL binary is bundled.

Validation and limits

CI runs Go formatting, vet, tests, internal-package race tests, legacy dogfood, all six creative scenarios, and the pinned SMALL v1.1.0 compatibility proof on Linux and macOS. Release packages cross-build all six targets.

The creative example simulates builder/test/critic roles, captures, scores, and costs. It does not establish live Blender/Godot rendering quality or provider billing behavior. Protected hashes and process groups are not adversarial isolation; enforce appropriate OS separation for untrusted adapters.

Windows binaries are cross-built, with direct-child cancellation only; process tree behavior is not equivalent to Unix. Shell commands require an available POSIX-compatible sh. Native Windows runtime behavior is not CI-verified.

Deadlines default to disabled for compatibility. Configure them for unattended use. Strict spending guarantees remain conditional on trusted enforcement by the actual adapter/provider. No paid model calls are required by the proofs.