LoopExec v0.3.0
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
readbudget.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.0
loopexec --version
loopexec 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.