Skip to content

v0.43.0 - Entity truth ledger, outcome-aware dream, foresight

Choose a tag to compare

@solaitken solaitken released this 04 Jun 20:25
· 11 commits to main since this release
a0054dd

Open Second Brain v0.43.0 - Entity truth ledger, outcome-aware dream, foresight

The Brain now knows what is true about an entity RIGHT NOW and learns from what actually happened downstream: an append-only claim ledger folds extracted facts into addressable per-entity aspect slots with superseded history and provenance, contradictions inside the conflict window materialize as ask_user findings instead of silently coexisting, merges can no longer collapse two people's claims into one, quantitative questions are answered by exact-match aggregation that nearby numbers cannot pollute, two agents independently converging on one entity fire a push-mode trigger, apply-evidence carries a downstream outcome that stages regression findings against rules that look confirmed but hurt, failed approaches persist as FTS-recallable dead-ends, inbox signals rank by embedding novelty with zero provider calls, the weekly synthesis nominates the most-developable note of the window, and the foresight fold projects what comes due next - the Brain's first forward-looking surface.

Entity Truth & Self-Improving Dream Suite

What ships

Capability Surface
Entity claim ledger: sharded append-only JSONL, replayable fold, current value + superseded history per (entity, aspect) slot Brain/truth/, o2b brain truth ingest|slots|sweep, MCP brain_truth
Temporal-structural conflict detection: two values, one slot, 30d window, independent sources, resolution always ask_user o2b brain truth conflicts
Exact-match quantity aggregation: totals sum only exact (entity, action, unit) tuples o2b brain truth aggregate, quantity fact family
Atomic-fact decomposition: deterministic markdown-structure splitting with an abbreviation guard, optional ledger ingest o2b brain facts decompose [--ingest]
Name-aware merge guard + entity-contamination check o2b brain merge (entity-guard), deep-synthesis contaminated
Cross-agent collision detection: push-mode agent_collision triggers with cooldown dedup trigger queue, o2b brain truth collisions
Outcome-tied apply-evidence: success|failure|unknown staging outcome_regressions with a deterministic 0.8 confidence penalty o2b brain apply-evidence --outcome, MCP brain_apply_evidence
Dead-end registry: negative knowledge as markdown, bounded with archive-on-overflow, FTS-recallable Brain/dead-ends/, o2b brain dead-end, MCP brain_dead_ends
Surprisal novelty sampling over the existing sqlite-vec index brain_review_candidates.signal_novelty
Weekly top-source nomination + foresight projection (recurrence cadences, open commitments, open questions) weekly synthesis topSource, o2b brain foresight [--write], MCP brain_foresight

Process wins

  • Recall gets a current-truth surface it can trust: one addressable slot answers "what is true now" with the full superseded lineage behind it.
  • Nothing auto-resolves: conflicts stage ask_user, regressions stage a penalty, retirement still walks the existing gates - the operator stays the judge.
  • Negative knowledge compounds: "avoid X" surfaces beside "prefer Y" with zero search changes because dead-ends are plain markdown.
  • Knowledge stops being trapped in the agent that learned it: convergence fires while the work is still happening, not at the next manual diff.
  • Bit-identical neutral defaults throughout: a vault without claims, outcomes, dead-ends, or embeddings ranks, dreams, and reports exactly as v0.42.0 - pinned by tests.

Notes

  • Suite: 3973 tests pass (510 files), typecheck clean, oxlint baseline preserved, python plugin suite 60/60.
  • MCP tool count grows 66 -> 69 (brain_truth, brain_dead_ends, brain_foresight), all with preview budgets.
  • The claim ledger follows the proven activation-store discipline: events are authority, state.json is a recomputable cache, sweep is explicit and bounded.
  • extractFacts' span dedup key now uses a \u0000 escape instead of a literal NUL byte, so fact-extract.ts diffs as text again.
  • Full changelog: https://github.com/itechmeat/open-second-brain/blob/main/CHANGELOG.md