Skip to content

v0.7.0 - The session log carries the session

Choose a tag to compare

@pbdeuchler pbdeuchler released this 29 Sep 18:52
· 69 commits to main since this release

Compared against v0.6.0 (7878ca6).

Published crate bumps:

  • halter-protocol 0.6.0 -> 0.7.0
  • halter-hooks 0.6.0 -> 0.7.0
  • halter-config 0.6.0 -> 0.7.0
  • halter-providers 0.6.0 -> 0.7.0
  • halter-session 0.6.0 -> 0.7.0
  • halter-tools 0.6.0 -> 0.7.0
  • halter-runtime 0.6.0 -> 0.7.0
  • halter 0.6.0 -> 0.7.0

Changes:

  • The session log now carries the session. A session resumed in a new process gets back the following from its log: its subagents (#210), task list, open turn and interrupted tool calls, compaction notifications, per-turn models, and FullTurn judge advisories. Replaying the log reproduces the checkpoint.
  • A per-session write lease serialises turns, compact, shutdown and resume. SubagentStart/SubagentStop hooks and notify queue behind the running turn instead of failing it with event log advanced concurrently.
  • Crash safety:
    • A crash, abort or failed final commit leaves no dangling turn.
    • Tool batches are checkpointed before and after they run.
    • sqlite now runs synchronous=FULL.
  • Logs are versioned. Stores stamp each session with SESSION_LOG_FORMAT, and a build refuses to commit to a session stamped with a newer format. Unknown event kinds decode as SessionEventPayload::Unknown.
  • Resume keeps the live trace, and CleanWindow notes for a default sqlite store survive a reboot. When shell, pty or browser state was lost, resume tells the model.
  • Fixed: snapshot revision collisions for skill-bearing snapshots, which failed every sqlite commit.
  • Breaking: new SessionEventPayload variants, new SessionState/RuntimeServices fields, removed file-view-cache types, and a new return type for run_panel_synthesis. Upgrading sqlite stores is one-way.

See CHANGELOG.md for the full notes and the "Upgrading from 0.6" steps.