Complete changelog
⚠️ Superseded — do not install. Replaced by 0.7.2. On a store with many claims under one subject,
titen-memory@0.7.1takes a median 74.5 seconds to compile one context, where 0.7.0 and 0.7.2 take under half a second. Cause and measurement are in the 0.7.2 notes.
npm install -g titen-memory@0.7.2 # 0.7.1 is superseded
Install guide · Release page · npm package
The measurement release: the pooled-store condition on LongMemEval-S, with two pre-registered falsifiers fired against Titen and published, plus the #291 disputed-signal authorization fix and the evidence-depth tie-break.
Added
- The pooled-store measurement: quality, latency, and build cost at production store shape. All 19,829 distinct LongMemEval-S sessions in one single-subject store, all 500 questions against it, at four store sizes — the condition every published number in this field (ours included) avoids by giving each question its own ~50-session haystack. Pre-registered with five falsifiers before the first scored run (prereg, report). The system under test is the published npm tarball, not a checkout.
- The 2026-08-07 agent-memory landscape survey, superseding 2026-08-04 on the fame roster and correcting two of its claims, and the performance-axis answer recording which competitive axes were adversarially killed and why.
Changed
-
A ranking dead heat now breaks on authorized evidence depth before the arbitrary statement fallback (#288). Order changes only where weighted score and vector similarity are both exactly tied; measured byte-identical on all 500 LongMemEval-S instances, and published as capturing 0.0 of the reranking ceiling on that corpus (report).
-
The
disputedsignal now resolves through the caller’s own authorization, so a contradicting observation the caller may not read no longer marks the claim (#291). The flag was computed from a bareEXISTSoverclaim_sourceswith no join toobservations, while the citations beside it were filtered correctly. A principal who could not read the contradicting source still saw the claim demoted by the 0.05 conflict term and still received aconflicts[]entry whoseevidence_idsomitted the source that caused it — told a contradiction existed and told they could not see it. Fixed at all four query sites:POST /v1/context/compile(lexical and vector candidates),GET /v1/context/:id, and the Memory Atlasconflict_freshnesslens. The governance review queue was already correct and now shares the same predicate.Visible consequence: in a store that already holds a cross-scope contradiction, claims that were demoted for callers who cannot read the contradicting source stop being demoted. Their
scorerises by up to0.05, theirscore_components.conflictreads1instead of0, they leaveconflicts[], and the resulting order can change. Nothing changes for a caller who can read the source, and nothing changes for a claim whose ownstatusisdisputed— that is the claim’s own field, not an inference about hidden evidence. There is no migration and no flag: the previous numbers were the leak.Response shapes, routes, and field names are unchanged, so this is a patch under the table in release.md — the minor slot signals shape breakage, and only values that were disclosing hidden rows move here.
Fixed
- The Memory Atlas review queue no longer scans every observation in the
organization to decide
has_contradiction. It expressed the predicate asclaim_sources JOIN observations, and SQLite drove fromobservations, evaluating the membership and retention subqueries for all of them once per candidate. On a 424,168-claim store that is 79 s per compile against 17.8 ms. The shared predicate added above uses a nestedEXISTSsoclaim_sourcesseeks its own primary key, and the review queue now uses it. Found by benchmarking the change above; the dual-runtime contract suite passed on both query shapes, because its stores hold tens of rows.
Evidence
docs/testing/2026-08-07-disputed-authorization.md— n=500, ranked output byte-identical before and after (0/0/500, p = 1.0), compile latency flat within repeat spread. It also states what it cannot show: the corpus holds zero contradicting sources, so it cannot measure the fix where the fix fires.