PiClaw v2.9.0 — 2nd GIG
PiClaw v2.9.0 — "2nd GIG"
A larger compaction and continuity upgrade, with better draft persistence, clearer web controls and safer provider-native context handling. Section 9 would call this paperwork. We call it a minor release.
Features
- Added Pipelined smart compaction, a deterministic method that accounts for every discarded source-message event exactly once, records provenance, preserves required intent and corrections, keeps call/result lineage for delayed tool output, and turns successful tool activity into canonical facts rather than tasteful hallucinated memoirs.
- Added provider-native remote compaction as a pre-pass before local compaction. When the provider supplies encrypted canonical state, reports expose only a Piclaw-marked readable checkpoint when one exists; opaque or encrypted provider state is not printed, because incident reports are long enough without dumping the black box.
- Added Codex-native compaction support, including current
context_compactioncanonical windows and a hardened fallback path when native compaction cannot be used. - Added a compaction processing-method selector to classic and visual settings, with
pipelinedandselectiveas the canonical choices and compatibility for older method names. - Upgraded the Earendil/Pi runtime stack to 0.80.7, including provider-auth, session-affinity and stream-compatibility fixes.
- Improved cross-session chat delivery by using the trusted relay entrypoint and steering messages by default, reducing the odds of one agent leaving a message in the wrong corridor with a false moustache.
UX and web UI
- Added visible compaction-method controls in settings, including labels, help text, translations, handler support, visual-panel types and E2E coverage.
- Clarified the timeline label for tool-result compaction so it describes the actual compaction event rather than muttering something forensic and unhelpful.
- Protected dirty editor state from asynchronous refreshes, preventing background pane/runtime updates from overwriting unsaved edits. The editor now has a basic sense of self-preservation.
- Made manual
/compactrefresh the context meter immediately, using rebuilt-session estimates first and safety-adjusted report estimates when rebuilt-session token counts are unavailable. - Made
/agent/contextawait runtime lookup and fall back to validated persisted usage after runtime eviction, rejection or null-token runtime results, so the context indicator no longer needs a new turn to remember its job. - Stopped direct and deferred command paths from persisting or broadcasting null-token context updates, reducing misleading context-meter flicker.
- Made completed assistant prose durable before tool execution. Lead-in text now survives tool calls without being treated as a final answer.
- Aligned web streaming persistence, run-agent orchestration and turn coordination around the same draft/checkpoint rules. Fewer ghosts in the drafting machine.
Fixes
- Fixed progressive
invalid_file_sectionsfailures caused by repeated complete trailing<read-files>and<modified-files>blocks. Valid trailing auxiliary blocks are stripped before schema validation, then a single canonical file-list pair is rebuilt from deterministic tool history. - Kept malformed, unbalanced, nested, misplaced, empty, interleaved and non-trailing file blocks rejected. Some doors should stay locked.
- Prevented smart-compaction CPU stalls.
- Hardened context-aware recovery, including exact partial-boundary preservation and pressure/archive provenance.
- Preserved provider-native compaction continuity without exposing encrypted canonical state or arbitrary provider output.
- Fixed chat relay defaults so cross-session messages steer by default and use the trusted relay entrypoint.
- Refreshed token-chart provider pricing references.
Under the hood
- Split Pipelined compaction into explicit preparation, boundary policy, model execution, request construction, pipeline policy, source accounting, retained context, result details, selective execution and status modules.
- Removed unsafe automatic Pipelined-to-Selective or upstream full-history fallbacks. Provider-native pre-pass ordering and local method selection are now explicit, which is dull, correct and therefore ideal.
- Added audit telemetry and compression metrics for Pipelined runs, provider-native runs, context refreshes and failure modes.
- Reworked session archive, rotation, startup and progress-watchdog paths touched by compaction and draft persistence.
- Replaced a process-global
pi-ai/compat.streamSimplemock with narrower test isolation, stopping an unrelated"ok"response from wandering into activation tests like a badly supervised intern. - Namespaced same-turn Faux provider/API/model state and restored settings runtime state in compaction tests.
- Added regressions for provider auth, request sanitisation, context-pressure retry, post-compaction pruning, session affinity, compaction stream auth, web streaming, dirty editor refresh protection and compaction settings behaviour.
Documentation
- Added a full Pipelined smart compaction guide covering exact-once accounting, source classification, remote pre-pass ordering, readable provider reports, failure behaviour, telemetry, troubleshooting and implementation maps.
- Updated configuration, architecture, runtime-flow, settings/add-on, tool/command and observability documentation for the new compaction methods and recovery behaviour.
- Documented file-block canonicalisation, context refresh/fallback, provider-native reporting and telemetry.
- Validated documentation links, anchors, fences and Mermaid diagrams.
Known issues
- Provider-native compaction may omit readable summary text when continuity exists only in encrypted provider state. That is expected; the encrypted state is doing its job, which is more than can be said for some committees.
- Pipelined compaction is stricter about malformed file-section output. Valid repeated trailing auxiliary blocks are normalised; malformed or misplaced blocks still fail validation.
- Deployment and fleet rollout remain separate operational steps.
Upgrade
- Upgrade from
2.8.7to2.9.0. - This is a minor release, not a patch release.