v0.42.0 - Time-Aware Recall & Activation Suite
Open Second Brain v0.42.0 - Time-Aware Recall & Activation Suite
Recall now reflects what the agent actually keeps using and respects when things happened rather than when files were written: recorded accesses reinforce a per-document activation that decays by content-type half-life so preferences and decisions never fade while session notes do, habitual companions boost each other through co-access edges, preference pages carry a dream-stamped freshness trend that biases ranking toward rules still earning their keep, since/until filters obey declared valid_from/valid_until validity windows with temporal-bridge traversal pulling in causes and consequences, and a zero-candidate evidence query runs exactly one broadened retry instead of dead-ending in an abstention - all deterministic, bounded, explainable, and bit-identical for vaults without the new data.
What ships
- Access-reinforced activation - CLI/MCP searches record surfaced documents as one hashed JSON event per access under
Brain/search/activation/; the derived state is a replayable fold, and a cappedactivationboost decays stored strength by a content-type half-life table (preferences/decisions/antipatterns never decay, projects ~120d, handoffs/sessions ~30d, notes 60d).o2b brain activation status | sweepinspects and compacts the store;--no-record-access/record_access: falseopt out per query. - Co-access reinforcement edges - documents habitually surfaced together gain pairwise counts; companions in the same candidate pool reinforce each other with a capped
co_accessboost (single co-occurrences are noise). - Freshness-trend classification - the dream refresh classifies every preference's evidence time distribution into
new | strengthening | stable | weakening | stale, stampsfreshness_trendinto frontmatter opportunistically (no-op runs stay no-op), and recall multiplies the relevance portion (1.05 / 0.93 / 0.85) with an explainable reason; the belief-evolution envelope carries the live classification. - Event-time recall discipline -
valid_from/valid_untilvalidity windows governsince/untilby interval overlap with mtime only as the fallback: an old file about a recent event is found, a fresh file about a closed-out event is excluded, unparseable values warn and fall back. - Temporal-bridge traversal - with a time range active, link-graph expansions are kept only inside a padded event-time neighbourhood (default 7d) and decay by temporal proximity (
temporal_bridgereason). - Self-correcting two-pass recall - a zero-candidate first pass in evidence-pack mode triggers exactly one broadened OR retry, reported as
secondPasswith per-resultsecond_passreasons (search_two_pass_enabledkill switch). - Hermes integration cleanup - the upstream loader now registers parent namespaces for user-installed providers, so the plugin entrypoint dropped its file-path self-bootstrap for a plain relative re-export.
Process wins
- Usage signal without authoring - the working set forms from real recall behaviour; nothing to tag, nothing to curate, and the whole layer is one
o2b brain activation sweepaway from a clean slate. - Trust gradient on rules - a weakening preference visibly sinks before the dream pass retires it, and the reason string says exactly why.
- LongMemEval's largest failure category closed - storage-vs-event-time confusion is structurally impossible once a document declares its validity window.
- Determinism preserved end to end - injected clocks, replayable folds, bounded boosts, explicit kill switches, an activation fingerprint in the query-cache key, and the MCP tool count unchanged at 66.
Notes
- Quality gates: 3838 bun tests, 60 Python tests, strict tsc, oxlint baseline, live CLI smoke; independent reviewer pass plus a CodeRabbit pass (4 of 5 findings applied with 5 regression tests, 1 declined with rationale).
- A vault that never records accesses, stamps trends, or declares validity windows ranks bit-identically to v0.41.0.
- Full diff: v0.41.0...v0.42.0
