Skip to content

v0.3.0: The @durable Trojan Decorator, WAL v2 Crash Resilience & DCP-2.0 Conformance

Choose a tag to compare

@sdageltc sdageltc released this 25 Aug 19:43
· 128 commits to main since this release

🚀 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 if state.json is corrupted or empty.

3. Lock v2 Auto-Stealing & Heartbeat Daemon

  • Dead supervisor locks (.goal.lock) from crashed PIDs are verified and safely adopted.
  • Background LockHeartbeatDaemon maintains lock liveness every 30s.

4. DCP-2.0 Conformance Benchmark

  • Consolidated benchmark suite into letitloop/conformance/ with 4 deterministic crash windows (DCP-001 through DCP-004).
  • Run via lil bench --matrix or python -m conformance.harness.runner.

5. Verified PR Gate

  • Seamless pairing with sdageltc/letitloop-action@v1 for zero-dependency AST signature and invariant verification on pull requests.

Full Changelog: v0.2.0...v0.3.0