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-usdnow 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
--resumewith matching policy. Genericreexecuterefuses 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:
go install github.com/justyn-clark/loopexec/cmd/loopexec@v0.3.0loopexec --versionloopexec demoOr 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.