Repository navigation
Releases
Looptimal v2.1.0
Looptimal v2.1.0 — the pinned quickstart now actually works
The v2.0.0 tag predated both pyproject.toml and the hardened verification core below —
README's own uvx ...@v2.0.0 quickstart never resolved end-to-end from that tag. This release
closes that gap and ships everything built since v2.0.0.
Added
- Cryptographic sealed-contract hardening —
canonical_contract_hash()gains an optional
HMAC-SHA256 keyed mode (--key-file/LOOPTIMAL_FRAMER_KEY) that folds a manifest of every
file undersealed/into the digest, closing the gap where oracle scripts had zero
cryptographic binding to the contract hash. Unkeyed calls remain byte-identical to prior
behavior. - Checker-only ("holdout") visibility tier, hard/soft gate labeling, structured
{score, reason}critic verdicts, a judge-calibration recipe, and two new oracle
patterns (cross-provider judge quorum; sealed tool-trajectory match). - Zero-clone quickstart —
pyproject.toml+looptimal_cli/souvx --from git+...runs
the tooling without a clone. looptimal-persona-promote.py,loopprint-ls.py --global,
scripts/check-no-network-imports.py, a real demo asset, a 20-item roadmap, a
verification-receipt design spec (references/receipt.md), and an upfront single-pass /
recurring-loop / blueprint mode fork inSKILL.md.
Changed
- README: real badges, a 60-second "prove it" block, three sourced reward-hacking numbers, a
"Where this fits" section (vs. ralph loops / native Claude Code loops / spec-kit / Kiro), and
an accurate description of the keyed-seal security model. - The bug-report template now asks for both doctors' output.
Fixed
- Four Windows CI portability bugs found via the real 3-OS matrix.
- Every
@v2.0.0-pinned command in README now resolves against a tag that contains what it
claims to run.
Security
- The cryptographic framer hash-pin named as "planned" in
2.0.0's disclosed residual is now
shipped, opt-in, and adversarially verified. - A mandatory pre-tag adversarial review found and closed a real bypass before it ever
shipped: the outer verifier's subprocess-environment sanitizer forwarded the framer's signing
key into every oracle's environment — since an oracle runs maker-controlled code by
definition, a maker could read the key back out and forge a keyedcontract_hashin the
documented, CI-recommended key-delivery mode. Closed, with an exploit-tested--selftestcase
proving it. Three related hardening fixes landed alongside it in the same pass (constant-time
hash comparison, fail-closed on an empty explicit key, sealed-oracle check tightened to the
executed program). No real secret was ever exposed — every gap was caught before the
CI-integration feature that would have exercised it shipped.
Full detail: CHANGELOG.md.
Looptimal v2.0.0 — from objective to verified outcome
Looptimal v2.0.0 — from objective to verified outcome
Versions 1.x shipped under the name LoopPrint. As of 2.0.0 the project is Looptimal: the
loop-design wizard is now one mode inside a larger objective→outcome orchestrator. The repository
Renn-Labs/LoopPrint→Renn-Labs/Looptimalwas renamed (old links redirect). Install slug
loopprint@renn-labs→looptimal@renn-labs.
Changed
- Rebranded LoopPrint → Looptimal and absorbed the previously-private orchestrator into this repo
as a single product. The loop-design wizard is preserved unchanged and is now Looptimal's
Stage-2 "Design-loop" mode (also a directdesign/ blueprint fast-path).
Added
- Outcome orchestration pipeline — 0 Frame (hash-pinned sealed acceptance suite) → 1 Analyze →
2 Design-loop → 3 Plan → 4 Simulate (roll forward + pre-mortem + harden) → [human GO] →
5 Execute (domain-expert sub-agents, maker ≠ checker) → 6 Verify-outcome (a separate checker
re-runs the sealed suite against live state, ignoring self-reported GREEN) → 7 Persist. looptimal-lint.py— plan-time gate for the outcome contract (sealed inputs, outcome-not-symptom
criteria, maker ≠ checker at the outcome altitude).verify-outcome.py— Stage-6 sealed-suite re-runner with tamper→RED selftests, oracle-integrity
checks, and interpreter env-injection stripping.- Agent Foundry (
references/agent-foundry.md,personas/) — two-tier dynamic domain-expert resolution. - Worked example (
examples/issue-to-pr-bugfix/) that round-trips Frame → … → Verify-outcome.
Security
- Honest, disclosed residual in the sealing model (
SECURITY.md): anti-gaming rests on the checker
controlling--workdirand the framer owningsealed/via OS permissions; a cryptographic framer
hash-pin is planned for a later release. Not marketed as fully tamper-proof.
Full changelog: CHANGELOG.md · scope ratified in release-boundary.md.
v1.1.0
Added
dual_registrationdoctor check (loopprint-doctor.py) — warns when LoopPrint is registered twice on Claude Code: an enabledloopprint@<marketplace>plugin and the~/.claude/skills/loopprintfolder-skill symlink, which makes the skill appear twice (loopprint:loopprint+ bareloopprint). Emits keep-one guidance and self-clears once you pick one mechanism.
Full changelog: v1.0.0...v1.1.0
v1.0.0 — first public release
LoopPrint v1.0.0 — turn a vague goal into a runnable, self-verifying loop blueprint.
LoopPrint makes the four atoms concrete — Goal · durable State · external Verifier · Stop — and generates a self-linted artifact package. Maker ≠ checker throughout, including on its own output. It runs a Tier-0 decision gate first, so sometimes the honest answer is don't build a loop.
Install (Claude Code, recommended)
/plugin marketplace add Renn-Labs/LoopPrint
/plugin install loopprint@renn-labs
Other harnesses (OpenCode, Pi, OpenClaw, Hermes, Codex, grok) and folder-skill install: see the README.
Highlights
- Loop-design wizard with a decision gate, pattern library, and generated artifacts
- Rot radar (
loopprint-ls.py) — HEALTHY / RUNNING / PENDING / ROTTEN / STALE, with a CI exit code - Engine-agnostic runner emitting per-iteration metrics + cost-per-accepted-change reporting
- Cross-platform (Linux / macOS / Windows CI) · stdlib-only core · no network
Full notes: CHANGELOG.