Repository navigation
v0.3.1: The @durable Trojan Decorator, WAL v2 Crash Resilience & DCP-2.0 Conformance
🚀 What's New in LetItLoop v0.3.0
1. The @durable Trojan Decorator (letitloop.durable)
Embed LetItLoop's deterministic crash-recovery kernel directly into your existing Python code without spinning up servers or daemons:
from letitloop import durable, step, atomic_marker
@durable(goal_id="customer_sync")
def main():
# If killed mid-flight, step 1 is skipped on resume: 0% duplicate token waste
user = step("fetch_user", fetch_crm_record, user_id=123)
summary = step("llm_summarize", call_claude, user)
# Side-effect marker guards external mutations against duplicate replay
with atomic_marker("slack_notification") as should_execute:
if should_execute:
step("post_slack", notify_team, summary)2. WAL v2 Kernel Hardening
- Valid-Prefix Truncation: When interrupted mid-write during SIGKILL, torn-tail EOF entries are automatically truncated to the last valid frame without data loss.
- Snapshot Fallback:
load_state()falls back directly to full WAL reconstruction ifstate.jsonis corrupted or empty.
3. Lock v2 Auto-Stealing & Heartbeat Daemon
- Dead supervisor locks (
.goal.lock) from crashed PIDs are verified and safely adopted. - Background
LockHeartbeatDaemonmaintains lock liveness every 30s.
4. DCP-2.0 Conformance Benchmark
- Consolidated benchmark suite into
letitloop/conformance/with 4 deterministic crash windows (DCP-001throughDCP-004). - Run via
lil bench --matrixorpython -m conformance.harness.runner.
5. Verified PR Gate
- Seamless pairing with
sdageltc/letitloop-action@v1for zero-dependency AST signature and invariant verification on pull requests.
Full Changelog: v0.2.0...v0.3.0