Repository navigation
v0.6.0 - Compaction v2, progressive skills, adaptive thinking
Compared against v0.5.0 (7f8955d).
Published crate bumps:
- halter-protocol 0.5.0 -> 0.6.0
- halter-hooks 0.5.0 -> 0.6.0
- halter-config 0.5.0 -> 0.6.0
- halter-providers 0.5.0 -> 0.6.0
- halter-session 0.5.0 -> 0.6.0
- halter-tools 0.5.0 -> 0.6.0
- halter-runtime 0.5.0 -> 0.6.0
- halter 0.5.0 -> 0.6.0
Vendored halter-brush-core (0.5.0) and halter-brush-builtins (0.2.0) are unchanged. halter-cli moves to 0.6.0 but remains publish = false.
Changes:
- Compaction v2. A session token ledger, Halter-owned compaction triggers, a hard
context.max_tokenscap, and a publicCompactionStrategyAPI replace signal-scored pruning. Three strategies are selectable viacontext.compaction:model_summary(new default, a model-written checkpoint),provider_default(provider-native compaction, the 0.5 behavior), andclean_window(rollover with durable notes,session_search, and session recovery). - Progressive skill loading. The system prompt lists skills by name and description only; a runtime-owned
skilltool loads a body on demand without disturbing the cached prefix. - Anthropic adaptive thinking for every model, with effort levels (including
xhigh) transmitted verbatim. Budget thinking is deprecated behindDEPRECATED_ANTHROPIC_THINKING_BUDGET=1. - OpenRouter routing:
[providers.openrouter.routing]pins upstream providers (order,allow_fallbacks). - Policy:
policy.shell.allow = ["*"], and configurableallowed_read_roots,sensitive_path_patterns, andpolicy.shell.mode. - Fixes: the ledger and cap account for prompt segments, tool declarations, and hook context; failed or no-op compaction passes restore the prior window via a logged
ContextRestored; automatic compaction triggers exactly at the threshold.
Upgrading from 0.5
ContextConfig: wrapcompaction_thresholdinSome(..), drop
pre_compaction_targetandprune_signal_threshold, and add
max_tokens: None,compaction: Default::default(), and
notes_root: None(or use..Default::default()). A config must set either
context.compaction_thresholdormodels.default.max_input_tokens.- To keep 0.5's provider-native compaction, set
context.compaction = "provider_default". OpenRouterProvider::new_with_headers[_and_resilience]: passNonefor the
new routing argument aftertemperature.- Custom
ContextManagerimplementations:planno longer receives a
compaction model/provider, andcompact_nowis gone. - Custom
Providerimplementations: deletecompaction_window. - Custom
CompactionStrategyimplementations: replace
threshold_notificationswithcontext_boundary. - Exhaustive matches on
SessionEventPayloadneedContextWindowRolledOver,
ContextProjectionUpdated, andContextRestoredarms; on
CompactionTrigger, aRolloverarm; onCompactionStrategyKind,
aCleanWindowarm. SessionState::usage_anchor_floor/estimate_context_tokensusers read
SessionState::token_ledgerinstead; estimator helpers are imported from
halter_protocol.resolve_response_chaintakes
(last_response_id, messages_seen_by_provider, total_messages, has_compacted_prefix).SkillDefliterals addroot(or use..Default::default()); rename any
tool calledskill.- Anthropic endpoints that only accept budget thinking need
DEPRECATED_ANTHROPIC_THINKING_BUDGET=1.
Full release notes: CHANGELOG.md