v0.1.7
Recorder deadline, retry, and error-reporting reliability for the async Stop and SessionStart hooks. No public memory contract change; CONTRACT_VERSION stays 0.1.0.
Fixed
- Session-start prime reads fan out across parallel daemon workers under a single end-to-end deadline (default 20s), so a stalled hosted read is abandoned rather than waited into the SessionStart hook kill window and can no longer eat the whole injected block (#250).
- Recorder ingest bounds retries end to end: transport failures, 408, and 429 responses retry with a capped, jittered backoff and honor a bounded
Retry-After, and the per-attempt socket timeout is capped to the remaining budget. The default socket timeout composes with the ingest deadline to stay inside the Stop hook kill even when an un-preempted in-flight read overshoots the deadline (#252, #253). - MCP
tools/callerror path sanitizes pydanticValidationErrormessages through the client-safe builder instead of echoing raw input values (#251).
Changed
fetch_prime_contextreturns aPrimeFetchResult(context plus per-leg timing/outcome) instead of a barestr;recorder primewritesphase: "started"/"finished"records into a sibling-prime.jsonstatus file so overlapping Stop-hook ingests and prime cannot erase each other's records (#250).- Product glossary adds the dreaming and recorder terms; the hosted-mvp sweeper section notes the bounded prelude retry.
Full Changelog: v0.1.6...v0.1.7