This is the compact current-truth entrypoint. Historical narrative has been removed from this file; use docs/archive/quality-gates/README.md, generated reports, and git history for phase-by-phase provenance. Product scope remains in docs/GoodMemory-PRD.md, and execution order remains in task-board/00-README.txt.
- Current stable package line: 0.6.0. Tag
v0.6.0resolves to release commit6fdd63ec; workflow run29522907352published the GitHub release and npmlatestresolves togoodmemory@0.6.0. - Main has completed Phases 68 through 72 on the generalization-first line.
The production selector graph contains only
generalized selection primitives, and the
recommendedpreset now has a provider-free multi-granular BM25/entity/RRF path with an optional dense channel. The 139-file historical selector closure now lives physically underscripts/eval-profiles/legacy-fitted/; repo-local historical evals must activate that profile explicitly withbun run test:legacy-fitted. - Release packaging is compiled-only: public bins execute
dist/binentrypoints, and the tarball excludessrcplus TypeScript bin sources. A release test scans compiled JavaScript for known fitted benchmark literals. - Core public workflow remains centered on
createGoodMemory,remember,recall,buildContext,feedback,forget,exportMemory, anddeleteAllMemory; advanced host/operator facades such as runtime, jobs, reviseMemory, and runMaintenance stay explicit. - Package subpaths
goodmemory,goodmemory/ai-sdk,goodmemory/host,goodmemory/http, andgoodmemory/runtime-kitresolve through compileddist/artifacts and emitted type declarations. - Storage resolution is automatic: explicit config wins, configured Postgres can be used when bootstrap succeeds, Bun gets local SQLite, and unsupported Node zero-config local SQLite falls back to in-memory with observable runtime inspection.
- The official CLI uses the package bin. The global CLI invocation path is
goodmemory ...afternpm install -g goodmemory; project-local installs usenpx goodmemory,npm exec -- goodmemory, or./node_modules/.bin/goodmemory .... Non-version command execution remains Bun-backed today. - Generic live-memory eval semantics are auto-storage aligned:
eval:live-memory,eval:live-auto-memory,runLiveMemoryEval(),eval:live-provider-memory, and historicalreports/eval/live-memory/phase-*paths keep their existing meanings.
-
Phase 35 installed host-memory middleware is now part of the accepted stable host surface. Phase 35 is now closed as the installed host-memory middleware and hooks slice. Accepted commands and hooks include
goodmemory setup,goodmemory status,SessionStart/UserPromptSubmithooks, and managed Codex/Claude install/enable/disable flows. -
Phase 37 is now closed as the installed host selective writeback slice:
goodmemory codex writeback, runtime defaults off unless explicitly changed, and new interactive installs recommendobserve. -
Phase 37.1 is now closed as installed-host writeback productization polish:
goodmemory codex writeback inspect, audit/undo support, and observe/selective boundaries. -
Phase 38 is now closed as the governed runtime surface slice:
GoodMemoryConfig.observability.traceSink, targetedreviseMemory(),memory.runtime.*,memory.jobs.enqueueRemember(),GoodMemoryConfig.providers.embedding, andexamples/express-chat-server.ts. -
Phase 39 is now closed as the Python HTTP integration bridge slice. See
docs/GoodMemory-Python-HTTP-Integration-Bridge.mdandexamples/python-fastapi-memory-consumer.py. -
Phase 41 is now closed as installed-host pre-action unification:
goodmemory codex hook pre-tool-use,goodmemory codex action, and the installed action bridge share the installed memory backend. -
Phase 42 is now closed as the Progressive Recall Protocol slice.
-
Phase 43 is now closed as the Runtime Kit slice:
goodmemory/runtime-kit. -
Phase 43.5 is now closed as the Optional Runtime Worker slice:
goodmemory runtime worker drain-once. -
Phase 50 is now closed as the Installer CLI Runtime-Shell Hardening slice:
goodmemory doctor [codex|claude|both]andgoodmemory repair [codex|claude|both]. -
Phase 51 is now closed as the Typed Behavioral Memory And Enactment slice; typed behavior is stored on compiled
validated_patternfeedback. -
Phase 52 is now closed as the Structured Text-Response Enactment And Guarded Policy slice; guarded_policy remains internal.
-
Phase 71 is now closed as the local memory administration product slice.
goodmemory inspector servehosts the packaged private React/Vite console and versioned/admin/v1API for scope discovery, categorized memory, candidate review, governed revision/deletion, recall traces, and audit events. Auth is Bearer-only after fragment-token bootstrap; mutations require ETags and idempotency keys.goodmemory runtime vieweris deprecated and delegates to the same server in exact-scope read-only mode. Seedocs/GoodMemory-Inspector-and-Admin-API.mdandreports/quality-gates/phase-71/run-20260711-admin-inspector/. -
Phase 73 remains active as a separate Codex-only product-effect lane. C0-C2 are closed. C3's tracked projection remains internally accepted as frozen-prehistory protocol/host evidence, but its source-reproducibility gate is reopened. C4's prior v8 acceptance is superseded; the canonical v9 corpus-wide leakage core, independent review, baseline, authenticated raw and projected stage evidence, and final readiness are accepted. C5 is unblocked for the internal pilot but has not run; C6-C7 remain open. Final C3 run
c3-controlled-20260716-cleanclone-003used a clean mechanical runner snapshot at commitfc31f4f96f3975daea361805da3fc4fc942c5aa4/ tree996b1c24bfb53a9d9c62eb109997576df7b512af, clean GoodMemory source commit594ee5406ff082f6210d4be4f763f529f13a1a9f/ treeaf13dc2688a0e3636f2c2e40728a47eb52ce90eb, package SHA-2564526fc05ee1fadf05ff80e555827af67477724bf5e0d4cd3613452b899a647c3, Codex CLI 0.144.5, andgpt-5.6-sol/xhigh. The CLI now rejects/tmp,/private/tmp,/var/tmp, and/private/var/tmpfor every sensitive C3 input/output because Codex 0.144.5's macOS platform sandbox unconditionally allows those scratch roots. The accepted run used non-temporary roots, exact-denied current and cross-arm runtime state, direct current/cross-arm auth probes, workspace read/write positive controls, and a network-off positive/negative control before both model launches. No-memory completed before frozen-prehistory materialization, and both Codex processes completed before evaluator materialization. The installed recall preflight and current-session canary bound the exact seeded memory, thread, sanitized transcript, cursor advancement, committed Stop writeback, and raw transcript persistence off. Deterministic hidden fail-to-pass and pass-to-pass tests passed in both arms: 2/2 attempts finalized and resolved, zero infrastructure failures, one comparable pair, outcometie-both-pass, andpublicClaimEligible: false. The tracked projection underreports/quality-gates/phase-73/c3-controlled-20260716-cleanclone-003/contains 17 bound files. Its independent verifier accepted internal consistency and two clean-clone patch replays with no reasons, while explicitly recordingexternalAuthenticityVerified: false. C3 is therefore accepted for protocol execution and installed-host activation only; the tie does not prove coding uplift and does not authorize a public coding-effect claim. C3 source-reproducibility gate is reopened: the recorded GoodMemory commit and tree are reachable in the current repository, but runner commitfc31f4f96f3975daea361805da3fc4fc942c5aa4and tree996b1c24bfb53a9d9c62eb109997576df7b512afare not. The projection proves internal consistency only; it cannot currently recover the exact verifier source from repository objects. C4's previous v8 controlled dataset, baseline ceiling pilot, independent review, and final readiness are historical and superseded. The schema-v2 fixture has 6 episodes, 18 stages, 2 controlled repositories, all 8 required memory strata, a 63-file asset lock, 54 stable fresh-base probes, and 18 passing fresh gold replays. The complete leakage audit covers 486 surface-by-hidden-artifact cells. Its 1458 intentional mutation cells cover fragment, typed-value, and typed-relation channels; 648 are applicable and 810 are explicitly not applicable. Relation detection preserves exact trim/case endpoints and scans each agent-visible corpus across repository relative paths, whitespace, sentence, line-count, byte-length, and physical-file boundaries. The frozen manifest now explicitly binds public pass-to-pass relations already present in visible repository source; undeclared relations split across files are rejected. Four content-preserving dynamic surfaces remain bound for live C5 re-audit:effective-codex-input-after-seeding,flat-summary-after-seeding,goodmemory-export-after-seeding, andgoodmemory-hook-context-after-seeding. Core SHA-2566ec596c99891376842e612520ae00b00f627e99ba63f48b9a690f02c06c72d3abinds asset locka4db88c4dc9ebea7fc464ba104f34c3a0852e2743a798694723d9ae9614606c4. A freshfork-turns-nonereviewer inspected only the 63 frozen assets and deterministic core before the live baseline existed, accepted all six episodes, and explicitly recorded that no coding outcomes were inspected. Review SHA-256cfa5b75dc8ad7bc30fc287f05dae113a6af3720e5b3ca806ba1487e38acbf44eand provenance SHA-2561eee28b3fb8f08b5f57dcfb74db62632682145f062d32cad93341c227f54c4dcbind dispatch, request, input bundle, and response, while disclosing that the orchestrator attestation is not a cryptographic receipt. Historical v8 baselinerun-c4-baseline-v8-20260717T032532Zfinalized all 12 planned no-memory stages with 2 resolved, 10 unresolved, zero infrastructure failures, andceilingRisk: false; report SHA-256145075fe1db774e14fbce1ba6df6b6170c64cd87a9c81c89a7abb39aefcfb220recorded decisionproceed-to-c5-pilot. Historical final readiness SHA-2567cf3f8cb829472f34e475dddfe69911651887c2896559712988e1153b6ea0128bound the superseded core, baseline, review, and provenance. The immutable v8 artifacts remain at explicit*-v8historical paths. Canonical v9 core SHA-256420f5c11b1a8aa344714a950b154477449856aed130be37abfe2cdf474eff544and review SHA-25616f63486e39d349b98abfb38340e8492962d8ecf2b78ed488b28e9c4ae439a09bind asset lock795473a2916e441ff9cc39ac92578565a84405ffd45589d90943ad31b81d1195. Baselinerun-c4-baseline-v9-20260718T1815Zhas report SHA-2562140f020a5d3817d4b91a0d8edf5227db6fa7fec32995a6fab12df6d52901270, zero infrastructure failures, no ceiling risk, and decisionproceed-to-c5-pilot. Final readiness SHA-2563b24b4233faa6930d98c4de3d9bfea003ab09225c0eec0c7c81fb9c10869b2e2binds the v9 core, baseline, review, provenance, 12 projected stages, and 12 authenticated raw sources in one repository-replayable bundle. Those artifacts, not this summary prose, are the C4 truth source; the release test rejects any routing/status projection that drifts from them. No C4 version proves coding uplift or authorizes a public coding-effect claim. The C5 harness implementation now retains sanitized failed-canary and interrupted-resume attempts in the verifiable projection, rejects foreign injected memory, authenticates its recursive runtime import closure from projected source bytes, and resumes only at the uncommitted cluster boundary under the exact original run identity. This is implementation/test closure only. A six-process C5 diagnostic canary was rejected under a live-disproved prior-memory equality rule, and its source identity was later invalidated; no accepted canary or broader pilot has run. C5 is unblocked for internal execution by accepted v9 C4 prerequisite evidence. -
The Phase 72 benchmark gate and versioned release gate are closed for
v0.6.0. Current public-opt-in claims are LoCoMo, BEAM, and MemoryAgentBench. The strict claim gate reports five declaration/README- consistent rows: three current claims and two historical/internal rows. LoCoMo covers all 1540 non-adversarial questions with zero execution/judge failures and scores 0.6298701299 strict, 0.8707792208 under the independentgpt-5.5official protocol, and 59/96 = 0.6145833333 on open-domain. MemoryAgentBench uses deterministic judge-free scoring and reports CR 0.9589041096 and TTL 0.9333333333 versus no-memory 0.000; AR/LRU remain excluded.BEAM 100K (unified 0.7651 / strict 0.620 / recall 0.8276) is the current generalized public-opt-in claim. The run disables all 148 narrow recall gates and legacy fitted answer postprocessing, covers all 400 questions and 1051 rubric items, and has zero execution/judge failures. The independent unified score is 0.7650987103 versus the public same-protocol 0.49 reference; strict binary remains disclosed at 248/400 = 0.620 and the upstream paper score at 0.7510180808. The frozen event-ordering audit found 7/40 cases with non-chronological official evidence order plus one requested-item/rubric mismatch. Therefore 0.72 strict and 0.80 unified remain disclosed stretch diagnostics, while the hard comparable gate uses complete independent scoring against the same-protocol public reference. Generic probes that failed the 3pt admission rule or required benchmark-label semantics were not promoted.
LongMemEval and ImplicitMemBench remain versioned internal evidence. LongMemEval's Phase 72 eval-only verifier chain reaches 360/500 = 0.720 judge-free and 462/500 = 0.924 under an independent
gpt-5.5official-prompt-compatible judge. That model is outside the pinned LongMemEval evaluator model zoo, so the result is not directly comparable to published official scores; it is also not a production runtime profile. ImplicitMemBench's explicit retry-merged artifact reaches 0.6923666667 with zero failures, but does not replace a monolithic fresh Full-300 run. HaluMem, MemGym, and MINTEval remain release evidence rather than public benchmark claims. External adapter PR #17 remains open pending maintainer review. The completev0.6.0release-candidate verification passes: the exact intended tree has 3743 passing tests, 2 environment-gated Postgres skips, and 0 failures across 436 files; the separate Postgres-enabled coverage run has 3634 passing tests, 0 failures, 90.74% overall coverage, and 94.40% storage coverage. Node 20/22/24 packed-consumer smokes and desktop/mobile browser flows pass. The 219-file tarball excludessrc/and unpacks to 3,868,829 bytes (3.689603 MiB). The published GitHub asset isgoodmemory-0.6.0.tgzwith SHA-2564b9c3d4b2aa7300943dfc334860bdc58bc88dcb0adc2f88137f1cd548bfe1cdf; npm reports an unpacked size of 3,867,885 bytes.
- root
goodmemoryno longer re-exports internal evolution contracts. - automatic adapter/event
user_correctionpath is proposal-first. - automatic adapter/event
user_correctionpath is proposal-first and records selective evidence plus proposal/promotion receipts instead of writing an intermediate active feedback memory; publicfeedback()remains the explicit durable procedural feedback entrypoint. - Provider-backed retrieval is explicit; rules-only remains the default accepted mode, and provider failures surface as
provider_error. - Dashboard, cloud sync, and team workspace remain a Phase 48 no-go decision.
- Current public-opt-in claims are LoCoMo, BEAM, and MemoryAgentBench. BEAM
100K (unified 0.7651 / strict 0.620 / recall 0.8276) retains its strict,
paper-protocol, and event-ordering disclosures. LongMemEval and
ImplicitMemBench remain versioned internal evidence. The runtime capability
descriptor and both README current-claim tables expose only the three
current
v0.6.0declarations. The strict gate enforces declaration status, package-version equality, evidence assertions, README row provenance, and disclosure fragments. - ImplicitMemBench Full-300 rerun evidence guard note:
eval:phase-61-full300rejects ambiguous source/output/run/budget selectors before launching live shards. The 2026-07-06 full-root runrun-phase61-full300-rerun-20260706-codex-currentcompleted 300 cases with zero failures and measured same-model diagnostic GoodMemory 0.7081666667 versus baseline 0.41. That number remains diagnostic; the later gpt-5.4 stored-answer rescore is versioned historical evidence, not a current-production score. - ImplicitMemBench postchanges rerun note:
run-phase61-full300-rerun-20260706-postchanges-currentcompleted the same/tmp/ImplicitMemBenchfull-root 300-case run after recent local changes, but had 2 GoodMemory distilled execution failures (text_answer_generation timed out after 180000ms) and therefore should not replace the 0-failure canonical internal rerun above. Its best same-model diagnostic GoodMemory score was 209.05/300 = 0.6968333333, raw was 175.05/300 = 0.5835, distilled blocking was 153/200 = 0.765, and baseline was 131/300 = 0.4366666667. Treat this as drift evidence, not a public-claim artifact. - ImplicitMemBench latest rerun note:
run-phase61-full300-rerun-20260706-latest-currentcompleted the same/tmp/ImplicitMemBenchfull-root 300-case run after the current benchmark-hardening work. It measured best same-model diagnostic GoodMemory score 211.06/300 = 0.7035333333, raw 179.06/300 = 0.5968666667, distilled blocking 155/200 = 0.775, and baseline 130/300 = 0.4333333333. It improved over the failed postchanges rerun but still had 1 GoodMemory distilled execution failure, so it does not replace the 0-failurecodex-currentsource-answer run or the stored-answer gpt-5.4 comparability artifact. - ImplicitMemBench after-hardening rerun note:
run-phase61-full300-rerun-20260706-after-hardening-currentcompleted the same/tmp/ImplicitMemBenchfull-root 300-case run while the stored-answer rescore runner was being hardened. It hadexecutionFailures: 0, but measured a lower best same-model diagnostic GoodMemory score of 206.85/300 = 0.6895, raw 174.85/300 = 0.5828333333, distilled blocking 151/200 = 0.755, and baseline 130/300 = 0.4333333333. This is the freshest drift check and is cleanly completed, but it is lower than the canonical 0-failurecodex-currentsource score by 5.60 passed-equivalent points and does not replace the stored-answer gpt-5.4 comparability artifact. - ImplicitMemBench stored-answer rescore readiness note:
audit:phase-61-implicitmembench-rescore-readinessverifies the canonical 0-failure Full-300 reports are ready for no-answer-rerun judge replacement. The same-model artifactimplicitmembench-rescore-readiness-20260706-current/rescore-readiness.jsonfindsstoredAnswersReady: truebutreadyForIndependentJudgeRescore: false; the cross-version artifactimplicitmembench-rescore-readiness-gpt54-probe-current/rescore-readiness.jsonfindsreadyForIndependentJudgeRescore: truewith answergpt-5.5, judgegpt-5.4, baseline 300/300 rows, GoodMemory composite 300/300 rows, 35 deterministicstructured_first_actionrows, and 265 judge-required rows (text_behavior_judge165 +priming_pair_judge100). - ImplicitMemBench stored-answer independent-rescore runner note:
rescore:phase-61-implicitmembenchnow consumes the canonical Phase 61 overall report, loads its baseline and GoodMemory source reports, preserves stored answers, carries deterministicstructured_first_actionrows forward unchanged, and rejudges only the storedtext_behavior_judgepluspriming_pair_judgerows needed for the baseline andgoodmemory-distilled-feedback+controlled-primingcomposite. The command rejects same-model answer/judge configuration before reading source reports, rejects partial or mismatched source scopes before any judge call, writesrun-identity.jsonwith source report SHA-256 fingerprints before judge calls, resumes completed judge-required rows fromprogress.jsonlonly when the run identity still matches, and writesbaseline-report.json,goodmemory-report.json,overall-summary.json, andrescore-summary.jsonunder the requested run directory withsourceAnswersUnchanged: true. The completedimplicitmembench-independent-rescore-gpt54-currentrun produced 530 judge-required row decisions (265 baseline + 265 GoodMemory composite), 0 execution failures, GoodMemory 207.35/300 = 0.6911666667, blocking 153/200 = 0.765, priming 54.35/100 = 0.5435, and baseline 120/300 = 0.4. This clears the prior same-model blocker under the public claim gate, with required same-family disclosure.
-
Phase 69 is complete. The accepted provider-free gate is
reports/quality-gates/phase-69/run-20260711-generalized-retrieval/phase-69-quality-gate.json. It compares frozen baseline/candidate configurations on pinned full roots: LoCoMo 10 conversations / 1986 questions and LongMemEval 500/500, both label-free and withexecutionFailures: 0. LoCoMo evidence recall moved 0.0229806935 -> 0.1334856928 on multi_hop and 0.0943627451 -> 0.2720588235 on open_domain. LongMemEval evidence-session recall moved 0.6794871795 -> 0.9102564103 on knowledge-update and 0.4250626566 -> 0.7667919799 on temporal-reasoning; overall moved 0.5317 -> 0.8317666667. Every protection slice improved and noise stayed within the fixed gate. These are retrieval-only diagnostics, not answer accuracy and not public benchmark claims. -
Phase 70 is complete. Its baseline-only LoCoMo selector froze a 24-question target cohort across 8 conversations plus a 12-question protection cohort across 4 conversations; target evidence was present in Phase 69 membership but absent from the real MemoryPacket top-6. The pinned
gpt-5.6-terraGurki run completed 36/36 applied reranks withexecutionFailures: 0, no fallback, and unchanged membership. Target top-6 evidence recall moved 0.1041666667 -> 0.7708333333; protection moved 0.4166666667 -> 0.6666666667. Seereports/eval/research/phase-70/locomo/run-phase70-reranker-focused-gpt56-terra-current/reranker-eval.jsonandreports/quality-gates/phase-70/run-20260711-reranker-and-evidence/phase-70-quality-gate.json. This is a targeted retrieval-order diagnostic, not a full LoCoMo answer score or public benchmark claim. -
Phase 71 is complete. Its real-browser evidence covers users/scopes, categorized memory and supersession, candidate approve/reject/release, revision and destructive confirmations, recall trace, audit, read-only mode, token non-leakage, ETag conflict handling, idempotent retry, and desktop/mobile layouts with clean normal-flow consoles. The accepted quality gate records the full repository suite with 0 failures, 0 LLM calls, and a package below 4 MiB at
reports/quality-gates/phase-71/run-20260711-admin-inspector/phase-71-quality-gate.json. Phase 72 is complete; its accepted benchmark and versioned release gate is tracked underreports/quality-gates/phase-72/run-20260716-final/. -
Phase 62 LongMemEval is accepted as the first Sequential Benchmark Hardening slice.
-
Shared strict CLI scalar guard note: migrated Sequential benchmark evidence entrypoints that use the shared strict scalar helper reject missing values, flag-as-value mistakes, duplicate scalar flags, empty values, and whitespace-padded values before downstream parsing. This is evidence-input canonicalization only; it does not change benchmark scores or public-claim boundaries.
-
Historical Phase 63 / P67 BEAM evidence includes an official-protocol 0.802 score, but it is no longer a current public claim because the recall profile is repo-eval-only; the answer-rule lane is paused. The earlier accepted rules-only measured checkpoint remains the internal binary-track baseline: answer-pack hardening (
--evidence-pack,src/eval/protocol-reader/evidencePack.ts) raised answer accuracy from the no-pack 0.56 baseline (224/400) and the prior evidence-pack 0.6525 checkpoint (261/400) to 0.695 (278/400) at identical recall (0.9621),executionFailures: 0, gate accepted. The historical P67 declaration reported official-protocol 0.802 versus the 0.49 public reference; its 122/400 binary-track wrong answers and category weak spots remain archived gap evidence. -
Accepted LongMemEval internal close (historical, with-judge, superseded by the later judge-free deterministic evidence below):
run-phase62-longmemeval-full500-current-after-remaining-personal-hybrid-retry-r1-merged-20260517T161058Zwith 454/500 answer accuracy, evidence-session recall 0.9590, missed recall 35, wrong recall 6, wrong answers 46, andexecutionFailures: 0. -
Historical LongMemEval P67-B declaration (2026-07-02): judge-free deterministic-subset answer accuracy 0.720 (360/500) with
goodmemory-rules-onlyvs no-memory baseline 0.068 (+65.2pt),executionFailures: 0over 500x2 cases, v0.3.5 @6f9152c(run-phase67b-longmemeval-rules-deterministic-current). A case counts only when scored by a deterministic method (abstention/exact/contains/expected_alternative/numeric_count); the same-model semantic judge is excluded by construction (with-judge diagnostic 0.896 not recorded as the strict result; evidence-session recall 0.9543; abstention only 28 of the 360 correct; the baseline's correct set is 30/34 bare abstentions). Dataset MIT (xiaowu0162/longmemeval-cleaned, the exact split run). It was promoted in Phase 67, then reclassified as versioned historical evidence in Phase 68; it is not a current-production claim. -
Phase 62 CLI evidence guard note: LongMemEval eval/full500/summary/retry entrypoints reject duplicate mode/source/output/run/budget selectors, and output run ids must be single path segments. This protects evidence inputs and directories only; it does not change the versioned LongMemEval scores or their current historical-only status.
-
Phase 62 LongMemEval source-root env guard note: base eval/readiness resolution rejects empty or whitespace-padded
GOODMEMORY_LONGMEMEVAL_ROOTfallback values before benchmark-root resolution. This is LongMemEval smoke/full and recall source-root integrity hardening only; it does not change the public claim or the older with-judge internal checkpoint. -
Phase 62 gate CLI guard note:
gate:phase-62rejects duplicate gate-output selectors and requires a single-segment run id. This is gate-input hardening only; it does not change the versioned LongMemEval scores or their current historical-only status. -
P67-B deterministic-subset helper guard note:
eval:phase-62-deterministic-subsetrejects duplicate scalar report/output/profile selectors before resolving the source report:--report-path,--run-id,--output-dir,--claim-profile, and--baseline-profile;--run-idmust also be a single path segment. This is LongMemEval public-claim helper input and source-report path hardening only; it does not change the 0.720 judge-free claim. -
Phase 65 union-live measurement run-directory guard note: legacy
measure-locomo-union-live.tsnow requires output--run-idvalues to be a single path segment before writing progress checkpoints, extraction caches, orunion-live-report.jsonunder--output-dir. This is older union-candidate live-evidence hardening only; it does not change LoCoMo retrieval scores, answer scores, default status, or public-claim boundaries. -
Phase 65 embedding-free comparison source/output guard note:
run-phase-65-locomo-embedding-free-comparison.tsnow rejects output directories that resolve to the benchmark root before parsing can hand off to the arm runner, and the runner repeats the same check before any arm can read the benchmark root. This is gateway-free comparison evidence integrity hardening only; it does not change LoCoMo retrieval scores, answer scores, default status, or public-claim boundaries. -
Phase 65 measurement source-root guard note:
measure-locomo-levers.ts,measure-locomo-neural.ts,measure-locomo-union-live.ts, andrun-phase-65-locomo-embedding-free-comparison.tsnow reject empty or whitespace-paddedGOODMEMORY_LOCOMO_ROOTfallback values before benchmark-root resolution. This is source-root integrity hardening for LoCoMo lever, neural, union-live, and gateway-free comparison evidence only; it does not change LoCoMo retrieval scores, answer scores, default status, or public-claim boundaries. -
Phase 66 release-readiness CLI guard note:
gate:v0-3-release-readinessrejects duplicate--skip-build,--skip-tests,--strict, and--output-dirflags before running package/release checks. This is release-gate input hardening only; it does not change benchmark scores or public claims. -
Public-claim gate note:
gate:public-benchmark-claimvalidates declaration shape, metric direction and baseline improvement, derived answer/judge separation, full commit identity, tracked historical-projection assertions, and README row provenance/disclosures. It checks internal declaration consistency; it does not independently prove upstream licenses or reconstruct ignored raw reports. Historical source fingerprints can be checked locally withbun run scripts/project-historical-evidence.ts. A current claim must havecandidate_public_claimstatus and arun.packageVersionequal to the current package version. Historical rows live under separate markers and remain consistency-checked without becoming current claims. Strict mode currently finds five declaration/README-consistent rows: LoCoMo, BEAM, and MemoryAgentBench are currentv0.6.0public-opt-in claims, while LongMemEval and ImplicitMemBench remain historical/internal rows. -
Phase 67 benchmark-prompt rescore evidence note:
eval:official-rescorerejects ambiguous selectors, source/output overlap, malformed identities and progress rows, source fingerprint drift, judge-model drift, and incomplete judging. Itsrescore-summary.jsonrecords source fingerprints, judge identity, selected/source scope, and a benchmark-and-model-aware claim boundary. LongMemEval runs with gpt-5.4 or gpt-5.5 are explicitly official-prompt-compatible but not directly comparable to published official scores because those models are outside the pinned evaluator model zoo. Stored answers remain separate from derived artifacts, and no rescore becomes a public claim without the claim gate. -
Phase 67 official-rescore cache writer / summary validation note:
eval:official-rescoreserializes progress through the same strict shapes accepted by resume parsing and validates final summaries, scope counts, fingerprints, category aggregates, and stored-answer boundaries before write. Existing LongMemEval, LoCoMo, and BEAM artifacts were refreshed from complete cached progress with0 to judge, preserving their versioned historical scores while adding auditable identity and comparability metadata; this does not make them current-production claims. -
Phase 72 LongMemEval rescore profile / timeout note:
eval:official-rescore --benchmark longmemevalrecordssourceProfile, rejects profile drift, and bounds judge requests. The retained label-free verifier chain reaches the strict judge-free floor at 360/500 = 0.720; its independentgpt-5.5full-500 rescore reaches 462/500 = 0.924 with zero judge failures. The latter is official-prompt-compatible diagnostic evidence, not a published-score-comparable result, because gpt-5.5 is outside the pinned evaluator model zoo. Earlier 0.918 and 0.922 diagnostics remain variance/admission evidence. The verifier requires an explicit source report and validates resume checkpoints before reuse. -
Accepted BEAM smoke:
run-phase63-beam-smoke-currentand gaterun-20260518003000. -
Latest accepted BEAM retained diagnostic:
run-phase63-beam-100k-recall-diagnostic-rules-project-card-total-count-current-20260615T200000Z, evidence-chat recall 0.9620612564274538, missed 20/355, wrong-recall/noise 167/400, zero-recall 0, and hit/missing/noise ids 1022/72/810 -> 1023/71/807 (3:multi_session_reasoning:1 recovered from recall 0.5 to 1 — fourth multi_session_reasoning recovery via the multi-facet contradiction route, exhausting the confirmed-reachable msr cases; a ground-truth-misaligned [16,116] pair where the narrowed gate avoids the sibling knowledge_update 3:ku:2; returns exactly [16,116], recovering the contact-form turn 16 and shedding noise 60/88/36; cleanest single delta, a recall gain plus a noise reduction, zero ripples). The multi-facet contradiction route now serves contradiction, knowledge_update, and multi_session_reasoning (both "how much" comparisons and "how many" aggregates). Remaining partial-recall families: instruction_following (6 — via the instructionRules companionPattern recipe, NOT multiFacetGroups), multi_session_reasoning (the remaining cases have a genuine upstream candidate-pool gap, needing candidate-generation work). -
Phase 63 general-lever recall remeasure note:
eval:phase-63-general-leverskeeps non-providerfloor/bm25arms embedding-free even when provider embedding env is present, preserves provider semantic-union behavior for union arms, includes non-default--semantic-topkvalues in default union run ids, and requires output--run-idvalues to be a single path segment before invoking the recall diagnostic. This is BEAM recall/routing evidence-input and output-directory hardening only; it does not change answer score, closure, or public-claim boundaries. -
Phase 63 external-root prep CLI guard note:
prepare:phase-63-beamrejects duplicate scalar source/output/fetch selectors before fetching Hugging Face or GitHub raw rows and before writing the refreshed BEAM root:--dataset,--github-api-root,--github-concurrency,--github-raw-root,--length,--offset,--output-root,--source, and--split. This is BEAM root-prep evidence-input hardening only; it does not change answer score, recall, closure, or public-claim boundaries. -
Phase 63 gate CLI guard note:
gate:phase-63rejects duplicate scalar gate output selectors (--output-dir,--run-id), andgate:phase-63-beam-closurerejects duplicate scalar closure-gate source/output selectors (--closure-report,--output-dir,--run-id) before reading or writing gate artifacts; both gate commands require--run-idto be a single path segment. This is BEAM gate evidence-input and gate-directory hardening only; it does not change answer score, recall, closure, or public-claim boundaries. -
Accepted BEAM measured full-run checkpoint (rules-only, evidence pack):
run-phase63-beam-100k-live-closure-gpt55-evidence-pack-answer-hardening-current— 278/400 answer accuracy (0.695), evidence-chat recall 0.9620612564274538, missed-recall 20/355, wrong-answer 122/400,executionFailures: 0; prerequisite zero-failure diagnosticrun-phase63-beam-100k-recall-diagnostic-rules-postmerge-current, gaterun-phase63-beam-closure-gate-gpt55-evidence-pack-answer-hardening-currentaccepted. Models:gpt-5.5answer +gpt-5.5judge (ai.gurkiai.com). The answer context is built by the eval protocol readersrc/eval/protocol-reader/evidencePack.ts(operation inferred from the question, source-ordered + timestamped, current-value/timeline/count/instruction/synthesis framing): +54 cases over the prior no-pack baseline (run-phase63-beam-100k-live-closure-gpt55-current, 224/400 = 0.56, same recall) and +17 cases over the prior evidence-pack checkpoint (run-phase63-beam-100k-live-closure-gpt55-evidence-pack-current, 261/400 = 0.6525). This is pipeline/gate evidence only: fitted recall 0.9621 vs generalization floor 0.6822, same-model judge bias, no numeric accuracy pass threshold, and still below the 0.70+ next improvement target. The measured full-run path supportsgoodmemory-rules-onlyandgoodmemory-hybrid. -
BEAM answer-gap tooling is already present:
scripts/analyze-phase-63-live-answer-gap.ts,scripts/run-phase-63-beam-live-ablation.ts, and the internalsrc/eval/protocol-reader/evidencePack.ts. Baseline no-pack analysis (run-phase63-beam-live-answer-gap-baseline-current) had 176 wrong: 103 full-recall-clean, 41 full-recall-noisy, 18 missing-evidence. The prior evidence-pack analysis (run-phase63-beam-live-answer-gap-evidence-pack-current) had 139 wrong: 76 full-recall-clean, 34 full-recall-noisy, 16 missing-evidence, 8 abstention, 5 unknown. The latest answer-hardening analysis (run-phase63-beam-live-answer-gap-answer-hardening-current) has 122 wrong: 58 full-recall-clean, 37 full-recall-noisy, 15 missing-evidence, 7 abstention, 5 unknown. The top repair families after the preference bucket split are conflict_update 29 (dominant full-recall-clean), instruction_following 27 (dominant full-recall-noisy), temporal_order 23 (dominant full-recall-clean), aggregate_count 15, summarization 9, preference_following 8, abstention 7, and the remaining judge_or_expected_answer 3. Answer-pack hardening now has live proof, not only unit proof; local pre-live hardening has also added latest-candidate target date/time/quantity cues, current-value filtering that keeps later sibling-entity metrics out of the ledger, conservative current-value stale-answer rewrite from updated/superseded target cues, contradiction minimal-pair extraction that leads with affirmative evidence, preserves weak affirmative wording such as registered/recommended/planned/invited without upgrading it to completion, suppresses adjacent implementation noise, recognizes same-turn strongdid not/didn'tdenial clauses, and rewrites one-sided contradiction answers from the evidence guide into both-sides-plus-clarification answers, aggregate/count ledgers that preserve hyphenated and spaced compound word-number quantities and compute source-backed calendar interval candidates, conservative single-candidate calendar-interval answer rewrite, instruction answer-content cues that filter companion openers out of named tools/examples and surface concrete date, amount, percentage, date/format requirements, explicit response-content requirements, and comma-preserved numeric values, conservative instruction no-answer repair from explicit response-requirement cues, conservative generic instruction response-content repair from guide cues, temporal question-target timeline anchors that keep source order while filtering generic order/action words and reducing adjacent project noise, conservative unordered temporal-answer rewrite from source-ordered target anchors, value-bearing summary anchors, conservative summary no-answer repair from source-backed checklist cues, preference response-requirement cues that make lightweight/minimal-dependency, automation, step-by-step, direct-link, morning, and practical/logical constraints visible before answer support, conservative preference no-answer repair from those explicit response requirements, information-extraction coverage cues that preserve source-backed fields, deadlines, preparation steps, and required sub-items without adding unrequested identifiers, conservative extraction no-answer repair from source-backed detail cues, required summary source-coverage audits for late topic shifts, analyzer-level source-coverage warnings for expected cues found outside declared source chats, adjacent-only abstention rewrites for module-detail and atmosphere questions, and topic-specific missing-context abstention wording in focused live prompts. The focused summarization value-anchor live slicerun-phase63-beam-live-slice-summary-value-anchors-prelive-currentstayed at 1/9 correct withexecutionFailures: 0; its analyzer rerunrun-phase63-beam-live-answer-gap-summary-value-anchors-currentfound 5/8 wrong summarization cases with source-coverage warnings (21 cues), so the next summarization repair is source-coverage / expected-answer compatibility rather than answer-pack-only prompt work. The full source-coverage auditrun-phase63-beam-live-answer-gap-answer-hardening-source-coverage-currentpreserves the 122-wrong shape and adds status counts of 95 covered-or-no-warning, 15 expected-cues-outside-source, and 12 no-declared-source-ids; warning buckets are temporal_order 9/16, summarization 5/21, aggregate_count 2/4, conflict_update 1/2. Manual summarization audit classifies9:summarization:1,14:summarization:1, and19:summarization:1as declared-source mismatches, while20:summarization:1and20:summarization:2have no declared source ids. The corrected source-covered summarization slicerun-phase63-beam-live-slice-summary-source-covered-v2-prelive-currentfiltered to12:summarization:1and14:summarization:2, measured 1/2 withexecutionFailures: 0and evidence recall 1.0, and leaves14:summarization:2as a source-covered expected-answer/source-content mismatch rather than a proven generic answer-pack repair. The broader source-covered preference+summarization slicerun-phase63-beam-live-slice-pref-summary-source-covered-20260706-currentmeasured 7/9 withexecutionFailures: 0and evidence recall 1.0; its analyzerrun-phase63-beam-live-answer-gap-pref-summary-source-covered-20260706-currentleaves two full-recall-clean residuals:18:preference_following:2for preference constraint framing and14:summarization:2for structured summary / expected-answer compatibility. Preference guardrails now cover generic morning-routine ways answers and noisy practical/logical decision-preference answers. The full 9-row rerunrun-phase63-beam-live-slice-pref-summary-source-covered-preference-ways-currentstayed 7/9 because live variance introduced a new12:preference_following:1regression while18:preference_following:2passed; targeted validationrun-phase63-beam-live-slice-preference-two-row-guardrails-currentscored 2/2 withexecutionFailures: 0, evidence recall 1.0, and analyzerrun-phase63-beam-live-answer-gap-preference-two-row-guardrails-currenthad zero wrong rows. The live-slice runner can filter--answer-gap-source-coverage-status covered-or-no-warning; use that filter for answer-pack-only slice validation so source metadata mismatches do not dilute the measurement. The next repair should target conflict/update resolution, instruction noise budgeting, temporal timeline granularity, count aggregation, summary/source coverage, preference constraints, information extraction coverage, abstention calibration, and judge/expected-answer compatibility without BEAM expected-answer-specific rules. -
Phase 63 BEAM source-audit update: analyzer
run-phase63-beam-live-answer-gap-pref-summary-source-covered-source-audit-currentpreserves the focused 9-row rerun shape (7/9 correct inrun-phase63-beam-live-slice-pref-summary-source-covered-preference-ways-current) but reroutes the remaining14:summarization:2wrong row to evidence-source selection:dominantSourceCoverageStatus=expected-cues-outside-source, one source-coverage warning, and expected cueplanning resourcefound at chat 143 outside the declared evidence ids [4, 9, 13]. This keeps12:preference_following:1as an answer-time preference issue while preventing14:summarization:2from being treated as answer-pack-only summarization work. -
Phase 63 answer-gap / ablation CLI guard note:
scripts/analyze-phase-63-live-answer-gap.tsandscripts/run-phase-63-beam-live-ablation.tsreject duplicate scalar source/output/mode selectors before reading live reports or writing derived evidence, including--benchmark-root,--live-report,--output-dir,--output-pathwhere supported,--mode,--profile,--limit,--run-id, and--scale. They reject derived output report paths that resolve to the input--live-reportbefore reading benchmark or live-report sources, and the answer-gap analyzer also rejects explicit--output-pathvalues that resolve to any candidate BEAM source file under--benchmark-root; both tools require output--run-idvalues to be a single path segment before deriving default output paths. This is BEAM answer-gap/ablation evidence-input and output-directory hardening only; it does not change BEAM scores, recall, checkpoint status, or public-claim boundaries. -
Phase 63 base eval CLI guard note:
eval:phase-63rejects duplicate scalar source/output/run selectors before smoke or full report generation:--benchmark-root,--limit,--mode,--offset,--output-dir,--run-id, and--scale; repeated multi-value selectors such as--case-id,--profile, and--question-typeremain repeatable. It also requires output--run-idvalues to be a single path segment before deriving smoke/full report directories. This is BEAM smoke/full evidence-input and evidence-directory hardening only; it does not change BEAM scores, recall, checkpoint status, or public-claim boundaries. -
Phase 63 recall diagnostic / analyzer CLI guard note:
eval:phase-63-recall-diagnosticandanalyze:phase-63-recall-diagnosticreject duplicate scalar source/report/output/run selectors before running recall diagnostics or comparing reports. The recall runner keeps repeated--profilesupport but makes--benchmark-root,--limit,--output-dir,--run-id, and--scalesingle-valued, and requires output--run-idvalues to be a single path segment before deriving the report directory; the analyzer makes--baseline-report-path,--baseline-run-id,--benchmark-root,--output-dir,--output-path,--profile,--report-path,--run-id, and--source-turn-limitsingle-valued, and requires--run-id/--baseline-run-idvalues to be single path segments before resolving default report paths. The analyzer also rejects output paths that resolve to either the analyzed report or the baseline report before reading inputs, and rejects output paths that resolve to any candidate BEAM source file under--benchmark-rootbefore reading benchmark source rows. This is BEAM recall/noise evidence-input and report-directory hardening only; it does not change BEAM scores, recall, checkpoint status, or public-claim boundaries. -
Phase 63 BEAM source-root env guard note:
prepare:phase-63-beam,eval:phase-63,eval:phase-63-recall-diagnostic,eval:phase-63-live-slice,eval:phase-63-live-closure,scripts/analyze-phase-63-live-answer-gap.ts, andscripts/run-phase-63-beam-live-ablation.tsreject empty or whitespace-paddedGOODMEMORY_BEAM_ROOTfallback values before source-root or output-root resolution. This is BEAM root-prep, smoke/full, recall, live, answer-gap, and ablation source-root integrity hardening only; it does not change BEAM scores, recall, checkpoint status, or public-claim boundaries. -
Phase 63 initial report analyzer guard note:
analyze:phase-63-beamrejects duplicate scalar source/output/run selectors (--report-path,--output-path,--run-id) before reading the source report or writing miss-case analysis, requires--run-idto be a single path segment before resolving the default source report path, and rejects output paths that resolve to the input--report-pathbefore reading the source report. This protects the early BEAM miss-case workbench evidence from repeated-selector ambiguity, source-report path traversal, or source-report overwrites without changing BEAM scores, recall, checkpoint status, or public-claim boundaries. -
Phase 63 live-slice / live-closure CLI guard note:
eval:phase-63-live-slicenow rejects malformed repeated selector flags before reading answer-gap or benchmark files.--answer-gap-bucket,--answer-gap-source-coverage-status, and--case-idvalues must be present, non-empty, unpadded, and unique, and answer-gap buckets/source-coverage statuses are allow-listed. The live-slice and live-closure parsers also reject duplicate boolean mode switches (--evidence-pack,--resume) and scalar source/output selectors where supported, including--answer-gap-report,--benchmark-root,--case-selection,--limit,--output-dir,--profile,--recall-report,--run-id, and--scale, before report generation;--run-idmust be a single path segment. This is focused-slice, closure, and live-evidence-directory integrity hardening only; it does not change BEAM scores, recall, checkpoint status, or public-claim boundaries. -
Phase 63 live-slice selection-lineage note: new
eval:phase-63-live-slicereports persist optionalselectionmetadata for explicit case ids, case-selection mode, recall report path, answer-gap report path, answer-gap buckets, source-coverage filters, and limit. This makes focused answer-gap slice evidence auditable without relying on run-id naming conventions; it is metadata hardening only and does not change BEAM scores, recall, closure status, or public-claim boundaries. -
Phase 63 live-closure coverage guard note:
eval:phase-63-live-closurenow rejects live reports whosecases.lengthdoes not cover the expected full BEAM case count, and rejects presentselectionmetadata unless it proves the report came fromcaseSelection="all-cases"with no answer-gap filters, explicit case ids, or limit. This prevents focused slices or summary-only artifacts from being wrapped as closure evidence; it does not change BEAM scores, recall, checkpoint status, or public-claim boundaries. -
Phase 63 closure-gate summary consistency note:
gate:phase-63-beam-closurenow rejects closure reports whoseprofilesCompareddoes not contain exactly the closureprofile, whosecorrectCases + wrongAnswerCasesdoes not equaltotalCases, or whoseanswerAccuracydoes not equalcorrectCases / totalCases. This keeps hand-edited or internally inconsistent closure artifacts from passing the gate without changing BEAM scores, recall, checkpoint status, or public-claim boundaries. -
Latest local BEAM pre-live infrastructure check:
/private/tmp/BEAM/100K.jsonrebuilt from GitHub raw viaprepare:phase-63-beam(20 rows),eval:phase-63andgate:phase-63passed withexecutionFailures: 0, andrun-phase63-beam-100k-recall-diagnostic-rules-prelive-currentcompared withrun-phase63-beam-100k-recall-diagnostic-rules-postmerge-currentatcaseDeltaCount: 0(evidence-chat recall 0.9620612564274538, missed 20/355, wrong-recall/noise 167/400, hit/missing/noise 1023/71/807). This is refreshed root/recall readiness, not answer-performance evidence. -
MemoryAgentBench (Phase 64) is closed as the agent-memory hardening slice. The reproducible external root (
prepare:phase-64-mab) and deterministic upstream match-mode scorer are in place; the accepted zero-failure AR/CR live closure (run-phase64-mab-ar-cr-live-closure-rerun-current) measured CR 0.959 and AR 0.67, while TTL/LRU exposed answer-format boundaries. CR 0.959 reproduced the prior hand-made CR A/B on the reproducible root, so the sharedsrc/answer/currentValueResolution.tscurrent-value resolution is not BEAM-only; the AR retrieval gap also drove the general zero-retrieval lexical fallback withcaseDeltaCount 0on the 100K rules-only recall diagnostic. P67-C later recorded historical four-competency evidence (CR 0.959, TTL 0.767, AR 0.890, LRU 0.518;executionFailures: 0over 259 questions). The currentv0.6.0public-opt-in declaration retains judge-free CR 0.9589041096 and raises TTL to 0.9333333333 versus no-memory 0.000; AR/LRU remain excluded because multiple-choice leakage makes them non-diagnostic. -
Phase 64 external-root prep CLI guard note:
prepare:phase-64-mabrejects duplicate--mergeand duplicate scalar source/output/budget selectors before fetching upstream rows or writingcases.json, including--competency,--dataset,--offset,--max-questions,--max-chunks,--max-evidence-facts, and--output-root. This is fixture-prep input hardening only; it does not change accepted MemoryAgentBench closure evidence or the scoped public claim. -
Phase 64 readiness analyzer guard note:
analyze:phase-64-readinessrejects duplicate scalar source/output selectors (--phase63-analysis-path,--output-dir,--output-path,--run-id) before reading Phase 63 analysis or writing prep evidence, requires--run-idto be a single path segment before deriving the default output path, and rejects an output path that resolves to the input--phase63-analysis-pathbefore reading the Phase 63 analysis file. This is prep-report input/source/output hardening only; it does not change accepted MemoryAgentBench closure evidence or the scoped public claim. -
Phase 64 smoke/live CLI guard note:
eval:phase-64-smokerejects duplicate--evidence-pack,--live,--no-memory, and--resumeflags plus duplicate scalar source/output selectors (--benchmark-root,--limit,--output-dir,--run-id) before report generation, requires--run-idto be a single path segment, and requires--limitto be a canonical positive integer string rather than scientific or decimal notation. This is evidence-input, evidence-directory, and budget-selector hardening only; it does not change accepted MemoryAgentBench closure evidence or the scoped public claim. -
Phase 64 MemoryAgentBench source-root env guard note:
prepare:phase-64-mabandeval:phase-64-smokereject empty or whitespace-paddedGOODMEMORY_MAB_ROOTfallback values before output-root or benchmark-root resolution. This is fixture-prep, retrieval, and live source-root integrity hardening only; it does not change accepted MemoryAgentBench closure evidence or the scoped public claim. -
LoCoMo's current
v0.6.0public-opt-in declaration covers all 1540 non-adversarial questions and reports strict token-F1 0.6298701299, independent official-protocol accuracy 0.8707792208, and open-domain 59/96 = 0.6145833333, with zero execution/judge failures and the CC BY-NC 4.0 non-commercial disclosure. Its older versioned declaration (strict 0.6117, judge-protocol 0.837) and Phase 65 P4 full-10 result (0.6198 versus no-memory 0.2276 over 1986 questions) remain historical evidence. Phase 65 case-level hardening is paused; Phase 69 owns generalized candidate admission and noise control. Earlier live answer generator + evidence-pack wiring (commit3f9cf5e,--live --evidence-pack, gpt-5.5, deterministic LoCoMo match-mode scoring, no judge) and reproducible non-vendored external-root prep (commited08dd9,prepare:phase-65-locomo) are on main. A representative single-conversation pressure run (locomo-live-pack-full, full conversation 1, 199 questions,executionFailures: 0) measured overall answer accuracy 0.020 (4/199), purely recall-bound. Follow-up eval-only retrieval research ruled out positional dialog windows, rules-light query expansion, and LLM turn-caption enrichment (commit2b2ec71), and P65-R003 later found a real neural endpoint ties BM25 exactly; the refined bottleneck is candidate-pool admission because additive semantic/BM25 scoring only re-ranks already-admitted lexical candidates. Source-execution guard note:eval:phase-65-reanswer-reportrejects source reports with non-zeroexecutionFailuresbefore source answer-row completeness checks, so failed retrieval/live-source artifacts cannot be reused as gold-evidence-only or answer-policy replay inputs. Reanswer run-directory guard note:eval:phase-65-reanswer-reportnow requires output--run-idvalues to be a single path segment at CLI parse time and in the programmatic runner before source reports are read. This is reanswer evidence-directory hardening only; it does not change LoCoMo retrieval scores, answer scores, default status, or public-claim boundaries. Retrieval-probe CLI guard note: the eval-only dialog-window and rules-light query-expansion probes reject duplicate scalar source/run/window selectors (--benchmark-root,--run-id,--window-radius) before writing comparison reports, require--run-idto be a single path segment, require--window-radiusto be a positive integer, and reject empty or whitespace-paddedGOODMEMORY_LOCOMO_ROOTfallback values before benchmark-root resolution. This is evidence-input, source-root, and report-directory integrity hardening only; it does not change LoCoMo retrieval scores, answer scores, default status, or public-claim boundaries. Smoke/live source-root and run-directory guard note:eval:phase-65-smokenow requires--run-idto be a single path segment before writing smoke reports, live progress checkpoints, or extraction caches under--output-dir, and rejects empty or whitespace-paddedGOODMEMORY_LOCOMO_ROOTfallback values before benchmark-root resolution. This is source-root and evidence-directory hardening only; it does not change LoCoMo retrieval scores, answer scores, default status, or public-claim boundaries. Provider-run timeout/resume guard note:eval:phase-65-smokenow supports--provider-embedding-timeout-msand--provider-embedding-run-timeout-msfor provider-backed LoCoMo probes, and provider-backed retrieval-only runs now checkpoint completed question rows throughlive-progress.jsonlfor--resume. The 7-question near-miss rel0.8 retry with 5s embedding requests and a 60s run watchdog now exits withLocomoProviderEmbeddingRunTimeoutErrorwhile startinglocomo-conv-42; it wrote only the progress config header before timing out. Resume also rejects duplicate checkpoint rows, checkpoint rows outside the selected question scope, malformed non-tail checkpoint JSON, and non-header JSON objects that do not match the full progress-row shape before replaying cached results; only the final torn JSON line from a killed run is tolerated, and legacy checkpoints may still omitanswerTokenF1. The explicit 1ms watchdog prooflocomo-multihop-near-miss-label-rel08-retrieval-timeout-partial-currentproduced a partial report with 7 selected rows, 7executionFailures, and zero retrieved turns. This is timeout and checkpoint-accounting evidence only, not retrieval recovery. Failure-row retention note:eval:phase-65-smokenow keeps failed selected rows in nonzero-failure reports for seed, recall, provider-run-timeout, and answer-generation errors, but does not checkpoint those failed rows. New failed rows carry optionalexecutionFailureStageandexecutionFailureMessagemetadata, and shared report validation rejects malformed stage/message pairs or zero-failure rows that still carry failure metadata. Failed rows remain retryable under--resumeand still cannot be used as clean source evidence whileexecutionFailuresis nonzero. Shared smoke-report validation also rejects live-answer reports whoseexecutionFailurescount does not equal the number of failed rows with nullanswerCorrectand nullgeneratedAnswer, keeping failure accounting auditable before downstream analyzers consume the report. Evidence-pack category-operation routing note: LoCoMo live/reanswer evidence-pack contexts now passmulti_hopinto the sharedmulti_session_reasoninganswer framing andadversarialinto the sharedabstentionanswer framing before live answer generation. This is deterministic answer-context hardening for multi-hop/no-answer repair only; it is not new live-score evidence, default promotion, or a public-claim change. Current local code has opt-in semantic candidate-generation union plumbing (retrieval.semanticCandidates,--semantic-candidates, runner flag--provider-embedding) with external-root provider evidence. The bounded-noise topK16/maxAdditions4 point lifted conv-1 live accuracy from 4/199 (0.020) to 97/199 (0.487), held-out conv-30 to 67/105 (0.638), held-out conv-41 to 95/193 (0.492), held-out conv-44 to 85/158 (0.538), and held-out conv-42 to 106/260 (0.408), all withexecutionFailures: 0. The adversarial abstention scorer repair is deterministic:No information availableadversarial gold accepts explicit abstention aliases likeI do not know, while still rejecting the tempting answer;--resumere-scores checkpointed live answers with the current scorer. Full-root category slices are now assembled bysummarize:phase-65-locomo-categoriesintolocomo-category-matrix-top16-add4-live-pack-current/category-summary.json: 1986 questions, 983/1986 live accuracy (0.4949647533), weighted evidence recall 0.5884050761, 1081/1986 fully retrieved, noise 15235, andexecutionFailures: 0. The category-gap diagnosticlocomo-category-gap-analysis-top16-add4-live-pack-current/category-gap-analysis.jsonsplits the 1003 wrong answers into 647 missing-evidence wrong rows and 356 full-recall-but-noisy wrong rows, with 0 clean full-recall wrong rows. Category summary and category-gap artifacts now include per-sourcequestionCountlineage insourceReports, so assembled/gap totals can be audited against their input shard sizes, and Phase 65 JSON post-processors/reanswer replay reject smoke reports whose top-levelquestionCountdoes not matchcases.lengthbefore computing derived evidence. Follow-up retrieval-only budget probes showed decomposition/iteration is not the open_domain lever (recall 0.2763991013 -> 0.2822990939, noise 696 -> 858), while wider topK32/maxAdditions8 semantic admission improves missing-evidence categories at a noise cost: open_domain recall 0.3536560458 / 26/96 fully retrieved / noise 1050, multi_hop recall 0.3972616166 / 48/282 / noise 3237. The new relative-score floor (minRelativeScore) trims that wider-admission noise while preserving part of the gain: topK32/maxAdditions8/rel0.8 measured open_domain 0.3432393791 / 25/96 / noise 936 and multi_hop 0.3767491208 / 42/282 / noise 2939; the budget-delta analyzer shows open_domain has the better retrieval/noise tradeoff at +0.0278501157 recall per 100 added noise turns versus multi_hop +0.0068534205. The first wider-admission live validation,locomo-open-domain-semantic-provider-top32-add8-rel08-live-pack-current, did not convert that retrieval gain into answer gain: topK16/maxAdditions4 and topK32/maxAdditions8/rel0.8 both score 22/96 (0.2291666667) open_domain answer accuracy withexecutionFailures: 0, while the gap analysis moves wrong rows from 66 missing-evidence / 8 full-recall-noisy to 59 missing-evidence / 15 full-recall-noisy. The live-delta diagnosticlocomo-open-domain-top16-add4-vs-top32-add8-rel08-live-delta-current/live-delta.jsonshows why this is not defaultable: 3 answers improved, 3 regressed, +6 fully retrieved, +240 noise turns, 9 unconverted retrieval gains, and 3 noisy full-recall regressions. The opt-in answer-policy probelocomo-open-domain-rel08-commonsense-live-currentthen held retrieval/noise fixed and enabled--allow-commonsense-resolution: open_domain improved to 27/96 (0.28125) withexecutionFailures: 0, andlocomo-open-domain-rel08-vs-commonsense-live-delta-current/live-delta.jsonshows 7 improvements, 2 regressions, 20 same-correct, 67 same-wrong, 0 retrieval delta, and 1 noisy full-recall regression. The category-scoped strict guard validationlocomo-open-domain-rel08-commonsense-strict-live-currentkeeps most of that open_domain gain while carrying--strict-no-evidence-abstention: 26/96 (0.2708333333),executionFailures: 0; strict-vs-nonstrict delta shows 1 improvement, 2 regressions, and -1 net, while strict-vs-non-commonsense rel0.8 still shows +4 net (6 improvements, 2 regressions). Its gap artifact has 57 missing-evidence wrong rows and 13 full-recall-noisy wrong rows. A targeted adversarial/no-answer replay over 15 baseline-correct rows (locomo-adversarial-commonsense-safety-reanswer-current) reused the original retrieved turn ids and scored 15/15 withexecutionFailures: 0; its delta versus no-commonsense replay shows 1 improvement, 0 regressions, and no retrieval/noise delta, which is narrow safety evidence. The broader 60-row adversarial/no-answer replay showed non-strict commonsense is not safe enough by itself:locomo-adversarial-commonsense-safety-reanswer-broad60-currenttied no-commonsense at 46/60 (0.7666666667) and introduced a zero-recall abstention regression (conv-26:q181becamea plate). The opt-in category-scoped strict abstention guard--strict-no-evidence-abstentionplus commonsense (locomo-adversarial-commonsense-strict-safety-reanswer-broad60-current) scored 48/60 (0.8),executionFailures: 0, with 2 improvements, 0 regressions, 46 same-correct, 12 same-wrong versus both no-commonsense and non-strict commonsense deltas; it restoredconv-26:q181to abstention and repairedconv-43:q210, lowering missing-evidence wrong rows from 13 to 11 while leaving 1 full-recall-noisy wrong row. The new answer-policy slice selector (analyze:phase-65-locomo-answer-policy-slice) wrotelocomo-cross-category-answer-policy-slice-current/answer-policy-slice.json, a 45-row manifest across single_hop, multi_hop, and temporal, and now preserves source report provenance per selected question while splitting same-categoryreanswerJobsby source report. The first single_hop replay showed global commonsense is unsafe outside open_domain: baselinelocomo-single-hop-answer-policy-slice-baseline-currentscored 6/15, global commonsense+strictlocomo-single-hop-answer-policy-slice-commonsense-strict-currentscored 5/15, and deltalocomo-single-hop-answer-policy-slice-commonsense-strict-delta-current/live-delta.jsonshows -1 net with 1 noisy full-recall regression. The current prompt scopes commonsense resolution to open_domain; completed open_domain-scoped manifest deltas show single_hop 0 net with 0 regressions, multi_hop -1 net with 1 improvement and 2 regressions, and temporal 0 net with 1 improvement and 1 regression.eval:phase-65-reanswer-reportnow retries transient answer-generation failures before counting execution failures, retains hard-failed selected rows with null answer fields, accepts--question-id-filefor manifest-driven replay, and adds--gold-evidence-only-contextfor gold-label noise-isolation replay over retrieved gold evidence only; this recovered the temporal baseline rerun to 15/15 answered andexecutionFailures: 0, while making future answer-policy and noise-isolation replay queues reproducible without silently dropping failed rows. This is answer-policy hardening plus negative clearance evidence, not default-profile promotion: open_domain retains most but not all of the commonsense gain, multi_hop still regresses on the selected risk slice, and unresolved missing-evidence/noise failures remain. Category blockers remain: single_hop 457/841, open_domain 22/96 by the non-commonsense rel0.8 baseline (27/96 non-strict commonsense; 26/96 category-scoped strict commonsense), multi_hop 86/282, temporal 178/321, and adversarial 240/446. A conv-44 minSimilarity sweep did not find a defaultable noise fix, and BEAM rules-only safety runrun-phase63-beam-100k-recall-diagnostic-rules-semantic-union-safety-currentcompared against the prelive baseline atcaseDeltaCount: 0. These are historical Phase 65 diagnostics; Phase 69 owns generalized retrieval, while the current LoCoMo row is the strict/judge dual-track declaration. No upstream data is vendored (MemoryAgentBench MIT; LoCoMo CC BY-NC 4.0, non-commercial). -
Phase 65 answer-policy bucketed replay note: newly generated
analyze:phase-65-locomo-answer-policy-slicemanifests now splitreanswerJobsby source report, QA category, and answer-policy risk bucket (baselineCorrectHighNoise,wrongFullRecallNoisy,wrongMissingEvidence).eval:phase-65-reanswer-report --reanswer-job-bucketaccepts those buckets, so follow-up replay can isolate one answer-policy risk bucket and one category without manual question-id copying. Legacy bucketless answer-policy manifests remain category-filterable, andanalyze:phase-65-locomo-answer-policy-slice -- --existing-slice <path>upgrades already-selected slices without re-reading legacy source reports that predate current answer-context lineage checks. The locallocomo-cross-category-answer-policy-slice-current/answer-policy-slice.jsonartifact now has 9 bucketed jobs covering the same 45 selected rows. This is replay-routing/auditability hardening only; it does not change LoCoMo retrieval scores, answer scores, default status, or public-claim boundaries. -
Phase 65 reanswer readiness and replay note:
analyze:phase-65-locomo-reanswer-readinesschecks manifestreanswerJobsagainst their declared source reports before live replay, rejects non-LoCoMo manifests and malformed source provenance, and emits explicit-question-idreplayPlan.commandsonly for jobs whose source report is readiness-proven. The legacy auditlocomo-cross-category-answer-policy-reanswer-readiness-current/reanswer-readiness.jsonoverlocomo-cross-category-answer-policy-slice-current/answer-policy-slice.jsoncorrectly found 9/9 jobs blocked because the old single_hop, multi_hop, and temporal sources lackedanswerContextModelineage. That source-readiness blocker is now cleared: the three current-lineage source refreshes completed with 45/45 answered, 19/45 correct, andexecutionFailures: 0; the rebuilt slicelocomo-cross-category-answer-policy-reanswer-readiness-current-slice-refresh-current/answer-policy-slice.jsonselected 40 rows across 9 bucket/category jobs; andlocomo-cross-category-answer-policy-reanswer-readiness-after-source-refresh-current/reanswer-readiness.jsonreports 9/9 ready, 0 blocked, with live-answer and provider-embedding env preflight ready. The regenerated replay reports cover 40/40 rows, score 15/40 withexecutionFailures: 0, and no longer inherit sourcequestionSelection. The subset-aware aggregate artifactlocomo-cross-category-answer-policy-reanswer-delta-aggregate-current/reanswer-delta-aggregate.jsonsummarizes the nine replay deltas against their refreshed source subsets: baseline 15 correct vs replay 15 correct, net 0, with 2 improvements, 2 regressions, 13 same-correct rows, 23 same-wrong rows, 7 token-F1 near misses, and no retrieval/noise delta. Bucket totals isolate the only positive lift towrongFullRecallNoisy(+2 over 10 rows) whilebaselineCorrectHighNoiseregresses -2 over 15 rows andwrongMissingEvidencestays 0/15. Category totals are multi_hop +2, single_hop -1, and temporal -1. This is source-readiness and answer-policy replay evidence, not LoCoMo default-profile promotion or public-claim movement. -
Latest LoCoMo effective answer-policy and context diagnostic (Phase 65):
analyze:phase-65-locomo-live-deltanow records per-question effective scoped prompt policy, answer context mode changes, andanswerChangeAttributionobjects. New smoke/reanswer rows also persist optional rawanswerTokenF1, live-delta baseline/candidate side records preserve it, and the newanswerTokenF1NearMissreanswer bucket routes non-adversarial wrong rows whose candidate token-F1 is above zero but below the pass threshold for answer-contract and label-compatibility review without changing boolean correctness. For compatible historical live reports that predate only the token-F1 field, the live-delta CLI backfills missinganswerTokenF1in memory from the reportbenchmarkSource/ external root before writing derived artifacts, and rejects output paths that would overwrite the benchmarkcases.jsonsource before loading it, without rewriting source reports or rerunning answer generation; older reports that also lack required compatibility metadata such asanswerContextModestill fail fast. The refreshed multi_hop candidate-admission deltalocomo-multihop-candidate-admission-rel08-token-f1-delta-current/live-delta.jsonproves the path on real reports: same 28-row source pair, +4 net answers, 10 diagnosticanswerTokenF1NearMisses, and 8 uniqueanswerTokenF1NearMissreplay ids after noisy-full-recall priority de-duplication. The follow-up normal-context replaylocomo-multihop-answer-token-f1-near-miss-reanswer-currentreran those 8 ids withexecutionFailures: 0and scored 0/8; replay raw token-F1 averaged 0.2515 versus 0.2621 in the source near-miss queue, so simple reanswering does not recover the bucket. The subset-aware deltalocomo-multihop-answer-token-f1-near-miss-reanswer-delta-current/live-delta.jsonnow compares the full source report to that 8-row replay via preservedsourceReportlineage: 0 improvements, 0 regressions, 8 same-wrong, no retrieval/noise delta, and 7 rows still queued asanswerTokenF1NearMiss. The near-miss label analysislocomo-multihop-answer-token-f1-near-miss-label-analysis-current/near-miss-label-analysis.jsonjoins those 7 rows back to the benchmark source and classifies them as 5 balanced partial overlaps, 1 over-specified answer, 1 under-specified answer, 0 numeric/frequency-format rows, with 0 full-recall, 5 partial-recall, and 2 zero-recall rows; average replay token-F1 is 0.2874722639. That artifact now carries reusable top-level/categoryquestionIds, candidatesourceReportslineage, plus fourrepairJobsgrouped by diagnosis and partial/zero retrieval, andlocomo-multihop-near-miss-label-file-loader-smoke-currentconsumed it as a 7-question retrieval-only selection withexecutionFailures: 0; default retrieval found 0/7 fully retrieved, average evidence recall 0, and 31 noise turns, so this is queue/loader proof rather than retrieval recovery. Summary counts separate answer changes that overlap retrieval-metric changes, effective prompt-policy changes, answer-context-mode changes, or residual live answer changes where none of those observable drivers changed. The regenerated open_domain-scoped single_hop/multi_hop/temporal slice deltas all haveeffectiveAnswerPolicyChangedCount: 0across their 15-question slices; multi_hop's -1 net and temporal's mixed tie are therefore live-repeatability/validation-risk evidence under unchanged effective prompt policy, not proof that scoped commonsense/strict instructions caused those answer changes. In contrast,locomo-open-domain-rel08-vs-commonsense-strict-live-delta-current/live-delta.jsonhaseffectiveAnswerPolicyChangedCount: 96, so its +4 net remains the real open_domain scoped commonsense prompt-policy signal. The answer-context-mode counters and answer-change attribution counts serve the same attribution role for--gold-evidence-only-contextnoise-isolation comparisons. Live-delta artifacts also emit candidate-sourcedreanswerJobsfor top noisy full-recall wrong rows, answer regressions, improvements, unconverted retrieval gains, and residual live answer changes; diagnostic arrays can overlap, but exported jobs are priority-assigned with unique question ids across buckets and carry selected category metadata plus source report provenance and a top-levelsourceReportsentry for the candidate report. Follow-up row validation is reproducible through the existing--question-id-filepath;--reanswer-job-bucket noisyFullRecallWrongcan isolate the gold-evidence-only noise subset,--reanswer-job-bucket answerTokenF1NearMisscan isolate token-F1 near misses,--reanswer-job-categorycan isolate a QA category, category-only replay works for answer-policy slice manifests whosereanswerJobsare bucketless, and filtered replay narrows same-category multi-source manifests to jobs matching the supplied--source-reportwhile unfiltered manifest replay still rejects mixed-source jobs. -
Phase 65 focused multi_hop near-miss live-answer validation note: the 10-row rel0.8 multi_hop near-miss queue now has a same-provider live comparison. Provider-only live baseline
locomo-multihop-near-miss-provider-baseline-live-10row-timeout15-currentscored 0/10 with average evidence recall 0, 0/10 fully retrieved, 44 noise turns, andexecutionFailures: 0; rel0.8 semantic admissionlocomo-multihop-near-miss-rel08-live-10row-timeout15-currentalso scored 0/10 but raised evidence recall to 0.4142857143, found 2/10 fully retrieved rows, and carried 107 noise turns withexecutionFailures: 0. The paired live-deltalocomo-multihop-near-miss-provider-vs-rel08-live-10row-timeout15-delta-current/live-delta.jsonrecords answer delta 0, 10 same-wrong rows, +2 fully retrieved, +63 noise turns, 7 unconverted retrieval gains, 2 full-recall noisy wrong rows, and 9answerTokenF1NearMisses. The current label artifactlocomo-multihop-near-miss-rel08-live-10row-timeout15-label-analysis-current/near-miss-label-analysis.jsonclassifies those 9 near misses at average token-F1 0.2652996301 and average declared-evidence support 0.6553631554: 6 balanced partial overlaps, 1 numeric/frequency-format, 1 over-specified, 1 under-specified, with 2 full-recall, 5 partial-recall, and 2 zero-recall rows. This confirms the targeted admission lever helps retrieval on the selected queue but has not yet converted answer correctness; next work is answer synthesis, label-compatibility, and noise control, not default-profile promotion or public-claim movement. -
Phase 65 focused multi_hop near-miss gold-evidence-only replay note:
locomo-multihop-near-miss-rel08-live-10row-timeout15-gold-only-currentreanswered the 9 token-F1 near-miss rows from the rel0.8 live queue using only retrieved gold evidence turns in the answer context, without rerunning retrieval. It scored 1/9 (0.1111111111) withexecutionFailures: 0, preserving the same average evidence recall 0.4603174603, 2/9 fully retrieved rows, and 95 noise turns as the selected source subset. The paired deltalocomo-multihop-near-miss-rel08-live-10row-timeout15-normal-vs-gold-only-delta-current/live-delta.jsonrecords +1 answer, 0 regressions, no retrieval/noise delta, and the single improvementconv-42:q76underpartial->partialrecall; the answer change is attributed toanswerContextModeonly. The follow-up label artifactlocomo-multihop-near-miss-rel08-live-10row-timeout15-gold-only-label-analysis-current/near-miss-label-analysis.jsonleaves 6 near misses at average token-F1 0.3473556944 and average declared-evidence support 0.5997113997: 5 balanced partial overlaps and 1 under-specified answer, with 2 full-recall and 4 partial-recall rows. This shows gold-only context can recover one partial-evidence row but does not broadly solve the near-miss queue; remaining work stays in answer synthesis, label compatibility, and candidate admission rather than default-profile promotion. -
Phase 65 residual near-miss queue loader proof:
locomo-multihop-near-miss-gold-only-label-file-loader-smoke-currentconsumed the 6-row residual gold-only label artifact withexecutionFailures: 0, while default retrieval found 0 evidence recall, 0/6 fully retrieved, and 29 noise turns. Filtered loader proofs cover every emitted repair job:locomo-multihop-near-miss-gold-only-label-balanced-full-loader-smoke-currentselects the 2 balanced/full rows and finds 0 recall with 9 noise turns;locomo-multihop-near-miss-gold-only-label-balanced-partial-loader-smoke-currentselects the 3 balanced/partial rows and finds 0 recall with 14 noise turns;locomo-multihop-near-miss-gold-only-label-under-specified-partial-loader-smoke-currentselects the 1 under-specified/partial row and finds 0 recall with 6 noise turns. This makes the residual queue reproducible for targeted repair, and confirms default retrieval cannot recover it without candidate admission. -
Phase 65 residual near-miss rel0.8 candidate-admission proof: the same 6-row residual queue now has a provider-backed retrieval comparison. Provider-only baseline
locomo-multihop-near-miss-gold-only-label-provider-baseline-6row-timeout15-currentfound 0 average evidence recall, 0/6 fully retrieved, 29 noise turns, andexecutionFailures: 0; rel0.8 semantic admissionlocomo-multihop-near-miss-gold-only-label-rel08-retrieval-6row-timeout15-currentreached 0.6071428571 average evidence recall, 2/6 fully retrieved, 67 noise turns, andexecutionFailures: 0. The paired budget deltalocomo-multihop-near-miss-gold-only-label-provider-vs-rel08-retrieval-6row-timeout15-delta-current/budget-delta.jsonrecords +0.6071428571 recall, +2 fully retrieved, +38 noise turns, and 1.5977443609 recall per 100 added noise turns. This is targeted retrieval repair evidence for the residual queue only; it is not live-answer score movement, default-profile promotion, or public-claim evidence. -
Latest LoCoMo candidate-admission repair queues (Phase 65):
analyze:phase-65-locomo-candidate-admission-slicenow writes deterministic question-level manifests from paired baseline/candidate reports. Rel0.8 retrieval-only selection producedlocomo-open-domain-candidate-admission-slice-rel08-currentwith 22 selected questions (6 full-retrieval gains, 6 partial gains still missing, 10 stubborn missing; 65 stubborn-missing rows available) andlocomo-multihop-candidate-admission-slice-rel08-currentwith 28 selected questions (8 full-retrieval gains, 10 partial gains still missing, 10 stubborn missing; 197 stubborn-missing rows available). The open_domain live-aware manifestlocomo-open-domain-live-candidate-admission-slice-rel08-currentselects 32 questions and exposes 15 available noisy full-recall wrong rows, selecting 10. Candidate manifests also emitreanswerJobsfor selected candidate-side full-recall noisy wrong rows, including selected rows whose primary repair bucket is a retrieval-gain bucket, and expose top-levelsourceReportscandidate-report lineage; in reanswer-mode manifest loading, file-localreanswerJobstake strict precedence over top-levelquestionIds, broaderrepairJobs, and category fallbacks, and an explicitly empty preferredreanswerJobsqueue fails instead of falling back to broader queues, while explicit CLI--question-idvalues remain additive. This keeps gold-evidence-only noise isolation from accidentally replaying broader missing-evidence queues. Selected jobs must carrysourceRunIdorsourceReportPath; reanswer replay rejects missing job-level source provenance, mismatched--source-reportrun ids, mismatched source report paths, mixed-source selected jobs, non-string selected question ids, invalid or mismatchedquestionCountvalues, missingcandidateReport/sourceReportsrunId-or-path identities, duplicate selectedsourceReportslineage, and manifest-internalcandidateReport/ selectedsourceReportsprovenance conflicts before loading the benchmark root, while category-filtered answer-policy replay may ignore unrelated top-levelsourceReportsfrom other categories. Generated reanswer smoke reports persistsourceReportlineage with retrieval-config metadata plusreanswerSelectionmetadata for explicit ids, manifest path, bucket filters, and category filters for later audit; shared report validation also rejects reanswer artifacts that carry selectedquestionIdswithout either explicit ids or the manifest path that selected them, preserve a manifest path without selected question ids or job filters, or declare explicit ids/job filters without a top-level selectedquestionIdsheader. Bucket/category-filtered replay can target one namedreanswerJobsqueue and one QA category, and hard answer-generation failures keep their selected rows with null answer fields plusexecutionFailures. The runner now consumes these queues via--question-id-fileand rejects duplicate--case-id/--categorysmoke scope filters before report generation; retrieval-only file-loader smokes loaded both manifests withexecutionFailures: 0:locomo-open-domain-candidate-admission-file-loader-smoke-currentloaded the 22-question open_domain manifest, andlocomo-multihop-candidate-admission-file-loader-smoke-currentloaded the 28-question multi_hop manifest at 0.4702380952 evidence recall, 8/28 fully retrieved, and 282 noise turns. These are targeted repair queues, not default-promotion evidence or LoCoMo closure. -
Latest LoCoMo open_domain full-recall noise-isolation replay (Phase 65): current targeted live source
locomo-open-domain-full-recall-wrong-live-strict-currentreran 13 strict open_domain full-recall wrong rows with topK32/maxAdditions8/rel0.8, commonsense, strict no-evidence abstention, and evidence-pack context. It scored 3/13 with average evidence recall 1, 13/13 fully retrieved, 112 noise turns, andexecutionFailures: 0. Same-context reanswerlocomo-open-domain-full-recall-wrong-reanswer-normal-currentscored 1/13; deltalocomo-open-domain-full-recall-wrong-normal-delta-current/live-delta.jsonshows -2 net from residual live-answer changes under unchanged retrieval/context/policy. Gold-evidence-only replaylocomo-open-domain-full-recall-wrong-reanswer-gold-only-currentscored 4/13; deltalocomo-open-domain-full-recall-wrong-gold-only-delta-current/live-delta.jsonshows +1 net (2 improvements, 1 regression), all rows full->full, and answer-context-mode attribution for all answer changes. The residual near-miss analysislocomo-open-domain-full-recall-wrong-gold-only-near-miss-label-analysis-currentclassified 4 full-recall rows as 3 rationale-bearing gold-answer rows, 0 under-specified, 0 numeric/frequency-format, and 1 balanced partial-overlap, with average token-F1 0.2470619658; the classifier now gives answer-token subsets with nonnumeric missing rationale their own label-compatibility bucket instead of misrouting them as under-specified or numeric/frequency issues. The artifact emits full-recall repair jobs for the 3-row rationale-bearing bucket and the 1-row balanced bucket. Broad loader smokelocomo-open-domain-full-recall-wrong-gold-only-near-miss-label-file-loader-smoke-currentconsumed the queue withexecutionFailures: 0, while default retrieval found only 1/4 fully retrieved, average evidence recall 0.25, and 11 noise turns. The smoke runner can now filter those repair jobs by diagnosis and retrieval bucket;locomo-open-domain-rationale-bearing-full-repair-file-loader-smoke-currentselected the three rationale-bearing/full rows (conv-26:q64,conv-42:q60,conv-26:q22) withexecutionFailures: 0, while default retrieval found 0/3 evidence recall and 9 noise turns. Noise stripping helps selected rows but is not stable or broad enough for default promotion; the residual queue mixes rationale-bearing gold label work with default-retrieval gaps and one closed-world / no-positive-evidence edge. -
Phase 65 targeted smoke selection-lineage note: targeted
eval:phase-65-smokereports now persistquestionSelectionfor explicit question ids, manifest paths, and repair-job filters, and shared report validation rejects malformed present lineage. The regeneratedlocomo-open-domain-rationale-bearing-full-repair-file-loader-smoke-currentreport records the near-miss manifest path plusrepairJobDiagnoses=["rationale-bearing-gold-answer"]andrepairJobRetrievalBuckets=["full"]. This is auditability hardening only; it does not change LoCoMo scores, default status, or public-claim boundaries. -
Latest LoCoMo open_domain unconverted retrieval-gain probe (Phase 65): because the older full-root rel0.8 live report predates required answer-context lineage, the nine
topUnconvertedRetrievalGainsids were rerun aslocomo-open-domain-top-unconverted-rel08-source-currentwith topK32/maxAdditions8/rel0.8, live evidence-pack answers, 0/9 accuracy, average evidence recall 0.6851851852, 4 fully retrieved, 90 noise turns, andexecutionFailures: 0. Gold-evidence-only replaylocomo-open-domain-top-unconverted-reanswer-gold-only-currentrecovered 1/9 with identical retrieval metrics; deltalocomo-open-domain-top-unconverted-normal-vs-gold-only-delta-current/live-delta.jsonshows +1, 0 regressions, and 8 same-wrong. The first same-source commonsense replay stayed at 0/9 because the system allowed open_domain commonsense while the user prompt still said to answer using only dialog context. The current prompt aligns that path and asks for the requested type directly;locomo-open-domain-top-unconverted-reanswer-commonsense-bridge-currentrecovered 1/9 with no regressions, while a grounding-phrase variant was rejected afterlocomo-open-domain-top-unconverted-reanswer-commonsense-bridge-grounded-currentfell back to 0/9. This is a narrow answer-contract win, not closure: the open_domain unconverted-gain blocker still routes to targeted admission plus answer/context organization and label-compatibility review. -
Latest LoCoMo multi_hop candidate-admission live validation (Phase 65): after
prepare:phase-65-locomowas fixed to canonicalize upstream legacy QA evidence ids such asD:11:26toD11:26,/private/tmp/LOCOMO-full/cases.jsonwas regenerated with 10 cases, 1986 questions, 5882 turns, and no remainingD:<session>:<turn>evidence ids. The normalized same-scope 28-row multi_hop manifest now has clean live evidence: topK16/maxAdditions4locomo-multihop-candidate-admission-top16-add4-live-evidence-normalized-currentscored 6/28 (0.2142857143), average evidence recall 0.1833333333, 0 fully retrieved, noise 220,executionFailures: 0; topK32/maxAdditions8/rel0.8locomo-multihop-candidate-admission-rel08-live-evidence-normalized-currentscored 10/28 (0.3571428571), average evidence recall 0.4753401361, 8 fully retrieved, noise 281,executionFailures: 0. The live-deltalocomo-multihop-top16-add4-vs-candidate-admission-rel08-live-delta-evidence-normalized-current/live-delta.jsonshows +4 net correct answers (5 improved, 1 regressed), +0.2920068027 evidence recall, +8 fully retrieved, +61 noise turns, 5 converted retrieval gains, and 9 unconverted retrieval gains. This is positive targeted-admission evidence plus residual answer/noise risk, not a defaultable LoCoMo setting. -
Latest LoCoMo rel0.8 multi_hop near-miss queue expansion (Phase 65): after regenerating
/private/tmp/LOCOMO-full/cases.json,locomo-multihop-candidate-admission-rel08-near-miss-label-analysis-current/near-miss-label-analysis.jsonlabels all 10answerTokenF1NearMissesfromlocomo-multihop-candidate-admission-rel08-token-f1-delta-current: average candidate token-F1 0.2429793770, 7 balanced partial overlaps, 1 over-specified answer, 2 under-specified answers, 0 rationale-bearing/numeric/zero-overlap rows, with 2 full-recall, 5 partial-recall, and 3 zero-recall rows. Its six repair jobs split balanced-partial-overlap full/partial/zero rows, over-specified partial rows, and under-specified partial/zero rows. Loader prooflocomo-multihop-candidate-admission-rel08-near-miss-label-file-loader-smoke-currentconsumed the 10-question artifact withexecutionFailures: 0; default retrieval found 0/10 fully retrieved, average evidence recall 0, and 44 noise turns. The provider-only timeout15 baselinelocomo-multihop-near-miss-provider-baseline-10row-timeout15-currentreproduced that 0 recall with provider embeddings, while the rel0.8 semantic-admission retrylocomo-multihop-near-miss-rel08-retrieval-10row-timeout15-currentcompleted withexecutionFailures: 0, average evidence recall 0.4142857143, 2/10 fully retrieved, and 107 noise turns. The paired budget deltalocomo-multihop-near-miss-provider-vs-rel08-timeout15-retrieval-delta-current/budget-delta.jsonrecords +0.4142857143 recall, +2 fully retrieved, +63 noise turns, and 0.6575963719 recall per 100 added noise turns. This is positive targeted candidate-admission evidence for the near-miss queue, but it is retrieval-only and still requires answer/label validation before any default-profile promotion. -
Latest LoCoMo multi_hop full-recall answer-contract probe (Phase 65): the same normalized live-delta exported a three-row
noisyFullRecallWrongqueue. Normal-context and gold-evidence-only reanswers both scored 0/3 before the prompt repair, so removing retrieved noise alone did not recover the rows. The live prompt now includes a generic count/frequency contract for how-many-times answers (twiceinstead of bare2); with that prompt,locomo-multihop-noisy-full-recall-reanswer-frequency-normal-currentscored 1/3 andlocomo-multihop-noisy-full-recall-reanswer-frequency-gold-only-currentalso scored 1/3, both at full evidence recall andexecutionFailures: 0. The deltalocomo-multihop-noisy-full-recall-frequency-normal-vs-gold-only-delta-current/live-delta.jsonshows 0 net answer change from gold-only context, with 1 same-correct and 2 same-wrong. This is a narrow answer-contract win and points the remaining multi_hop full-recall misses toward answer-synthesis / label-compatibility work, not plain noise stripping. -
Latest LoCoMo multi_hop answer-synthesis focused replay (Phase 65): after adding the category-scoped multi_hop synthesis prompt guard, the same three-row
noisyFullRecallWrongqueue was rerun aslocomo-multihop-noisy-full-recall-reanswer-synthesis-currentwithexecutionFailures: 0. It scored 1/3, matching the earlier frequency-contract replay; the subset-aware delta against the rel0.8 source report,locomo-multihop-noisy-full-recall-reanswer-synthesis-delta-current/live-delta.json, shows +1 answer, 0 regressions, no retrieval/noise delta, and two remaining token-F1 near misses. The near-miss label analysislocomo-multihop-synthesis-near-miss-label-analysis-current/near-miss-label-analysis.jsonclassifies both remaining rows (conv-48:q83,conv-49:q29) as balanced partial-overlap answers with candidate full evidence recall and average token-F1 0.2660818713; the loader prooflocomo-multihop-synthesis-near-miss-label-file-loader-smoke-currentconsumed that artifact as a 2-question retrieval-only selection withexecutionFailures: 0, while default retrieval found 0/2 fully retrieved, average evidence recall 0, and 9 noise turns. This validates that the current prompt stack preserves the narrow full-recall win and leaves a reusable answer-synthesis / label-compatibility queue, but it does not close the queue or justify default promotion. -
Latest LoCoMo multi_hop unconverted retrieval-gain probe (Phase 65): the same normalized live-delta exported a five-row
topUnconvertedRetrievalGainsqueue, all partial-recall gains. Normal replay over the rel0.8 candidate context,locomo-multihop-top-unconverted-reanswer-normal-current, scored 1/5 with average evidence recall 0.5, 0 fully retrieved, 56 noise turns, andexecutionFailures: 0;locomo-multihop-top-unconverted-reanswer-gold-only-currentscored 0/5 with identical retrieval metrics. Deltalocomo-multihop-top-unconverted-normal-vs-gold-only-delta-current/live-delta.jsonshows -1 net from gold-only context, 0 improvements, 1 regression, 4 same-wrong, and all rows stayingpartial->partial. This routes the selected unconverted gains back to missing-evidence candidate admission and label-compatibility review, not gold-only noise stripping. -
Phase 65 manifest selected-scope guard note: targeted
--question-id-fileJSON now rejects mismatched top-levelquestionIdsversus category-levelquestionIds, validates top-level/category selection-header shape, category header keys,overallcontainer shape, equality, selected counts, and exact singletonreanswerJobscategory/category-list consistency before preferred reanswer-job precedence even when the preferred queue is empty, and validatesoverall.selectedQuestionCountagainst repair/reanswer-job-only or preferred reanswer-job-onlyquestionIdsonly when broader selection headers are absent or empty, including explicitly empty repair/reanswer or preferred queues, instead of silently unioning or accepting inconsistent selected scopes. This protects near-miss label and other repair artifacts from widening targeted smoke/reanswer scopes through inconsistent manifest headers or typoed category buckets. -
Phase 65 whole-report reanswer lineage note:
eval:phase-65-reanswer-reportnow records inherited sourcequestionIdsasreanswerSelection.explicitQuestionIdswhen replaying an already-targeted source report without any additional id/file/bucket/category filter. This makes whole-report replay artifacts acceptable to shared report validation and live-delta analysis without changing LoCoMo scores, default status, or public-claim boundaries. -
Phase 65 CLI evidence guard note: shared strict scalar and boolean mode flags across smoke, reanswer, and measurement CLIs now reject duplicate source/output/run-id, budget selectors, canonical answer-policy/candidate-admission
--per-bucketvalues, and repeated mode switches before report generation, reanswer question-id / bucket / category CLI lists reject empty or whitespace-padded values plus duplicate bucket/category values, multi-report--reportlists reject empty, whitespace-padded, or duplicate normalized path values, paired baseline/candidate analyzers reject path-equivalent self-comparisons, targeted smoke/reanswer replay rejects explicit question ids that overlap selected manifest or question-id-file scopes instead of silently de-duplicating malformed replay scope, targeted manifest parsing rejects malformed repair/reanswer/category containers, non-object entries, whitespace-padded manifest question ids, malformed, empty, or whitespace-paddedreanswerJobssource provenance, duplicate per-jobreanswerJobsquestion ids, duplicatereanswerJobscategory-list values, and malformed or unknownreanswerJobsselection metadata instead of silently skipping or accepting queued rows, reanswer replay rejects selectedreanswerJobswithout job-level source provenance, and filtered reanswer replay rejects non-objectreanswerJobsentries plus malformed, duplicate, or unknown bucket/category selection metadata before bucket/category/source selection, reanswer source-lineage validation rejects malformedcandidateReport/sourceReportscontainers, entries, provenance field types, missing runId-or-path identities, empty or whitespace-padded lineage values, duplicate selectedsourceReportslineage, self-referential source reports, same-time or future-dated source reports, gold-evidence-only replay sources, missing reanswer source answer-context lineage, self-referential question-id-file manifests, source-report-as-question-id-file manifests, source retrieval-config conflicts, reanswerquestionIdswithout explicit-id or manifest-file lineage, unused reanswer manifest paths without selected question ids or job filters, or selected reanswer scopes without a top-levelquestionIdsheader before matching,eval:phase-65-smokerejects partial category-filter misses before report generation, shared smoke-report validation rejects malformed, empty, or whitespace-padded reportrunIdvalues, malformed benchmark-source/external-root provenance, malformed upstream source/license/answer-metric value or coverage provenance, malformed profile lineage, malformed retrieval-config metadata, malformed replay-lineage or empty/duplicate replay-selection metadata, malformed replay-selection-to-cases lineage, malformed reanswer filter manifest lineage, malformed reanswer category-filter-to-cases lineage, malformed report provenance timestamp/writer/answer-context/policy metadata, malformed gold-evidence-only answer-context lineage, malformed or whitespace-padded reanswer-writer answer-context/source/selection lineage, malformed writer/replay-lineage ownership, malformed corecases/categoriescontainers or entries, malformed or duplicate row retrieval arrays, malformed row scalar/metric fields, malformed or partial live-answer row answer fields, malformed category summary scalar/metric fields, malformed, whitespace-padded, or duplicate selection headers, malformedquestionCount/caseCount/executionFailuresheaders, andquestionCategoriesheaders that overstate the actualcases[]categories; reanswer output generation also narrows inherited sourcequestionCategoriesheaders to the actual replayed rows, and targeted reanswer rejects empty or whitespace-padded explicit question-id scopes, blank, whitespace-padded, or source-matching output run ids, explicit-run output paths that would overwrite--source-reportbefore the source report is read, reanswer-generated source reports, live-answer source reports with missing scored answer fields, source reports whose timestamp is not earlier than the replay timestamp, source reports where one queued question id matches multiple cases, source reports that are already gold-evidence-only replay artifacts, or blank generated answers that would otherwise be written as scored replay rows. -
Phase 65 neural measurement arm-list guard note:
measure-locomo-neural.tsnow rejects empty or whitespace-padded comma-separated--armsentries before retrieval measurement, so malformed neural/BM25 scope such asbm25,cannot silently shrink to a narrower evidence table. This protects evidence scope only; it does not change LoCoMo retrieval, answer scores, default settings, or public-claim boundaries. -
Phase 65 paired-analyzer lineage guard note: budget-delta, candidate-admission slice, and live-delta comparisons reject baseline/candidate reports with the same top-level
runIdeven when their paths differ, and reject output paths that resolve to either input report path. This includes default output paths derived from--candidate-reportplus--run-id, before source reports are read; all three paired analyzers also require--run-idto be a single path segment before deriving default output paths. This is derived-evidence lineage and output-directory hardening only; it does not change LoCoMo retrieval scores, answer scores, default status, or public-claim boundaries. -
Phase 65 near-miss label output guard note:
analyze:phase-65-locomo-near-miss-labelsnow rejects output paths that resolve to the input--live-deltabefore reading reports, rejects paths that resolve to the live-deltacandidateReport.pathbefore reading that candidate source report, and rejects paths that resolve to the candidate benchmarkcases.jsonbefore loading benchmark cases. It also requires--run-idto be a single path segment before deriving the default output path from--live-delta. Near-miss label artifacts now recordsourceReports[].questionCountas the selected near-miss row count emitted by the artifact, not the full candidate report question count, so source lineage matches top-levelquestionIds. This prevents label diagnostics from overwriting source evidence, escaping intended derived-evidence directories, or overstating selected source scope without changing LoCoMo retrieval, answer scores, default status, or public-claim boundaries. -
Phase 65 multi-report post-processor output guard note:
summarize:phase-65-locomo-categories,analyze:phase-65-locomo-category-gaps, andanalyze:phase-65-locomo-answer-policy-slicenow reject empty or whitespace-padded--reportvalues and output paths that resolve to any input--reportbefore reading reports. All three also require--run-idto be a single path segment before deriving default output paths from the first--report. This keeps category matrices, gap diagnostics, and answer-policy manifests from malformed source lists, overwritten source evidence, or derived-output directory traversal without changing LoCoMo retrieval, answer scores, default status, or public-claim boundaries. -
Phase 65 retrieval-gap output/source guard note:
analyze:phase-65-locomo-retrieval-gapnow rejects output paths that resolve to either its input--reportor its resolved cases file before reading inputs, rejects ambiguous--casesplus--benchmark-rootsource selectors, requires output--run-idvalues to be a single path segment before deriving default output paths, and persists source report / cases source / output path lineage plusgeneratedAtand diagnostic-onlyclaimBoundaryin the generated analysis. This keeps retrieval-gap diagnostics from overwriting source smoke reports or external-root cases, escaping intended derived-evidence directories, silently preferring one cases source over another, or relying on run-directory names to audit provenance, without changing LoCoMo retrieval, answer scores, default status, or public-claim boundaries. -
Phase 65 captioned-root source/output guard note:
prepare:phase-65-locomo-captionednow rejects output roots that resolve to the input source root before reading cases, and rejects empty or whitespace-paddedGOODMEMORY_LOCOMO_ROOTvalues before source-root fallback. This keeps captioned-root fixture prep from overwriting the normalized external LoCoMo root or reading malformed env-derived source roots without changing LoCoMo retrieval, answer scores, default status, or public-claim boundaries. -
Phase 65 external-root prep source intake/output guard note:
prepare:phase-65-locomonow rejects ambiguous--source-fileplus--source-urlselectors, rejects--source-filevalues that resolve to the normalized output--output-root/cases.jsonbefore reading the source file, rejects non-OK--source-urlfetch responses before JSON parsing, and rejects empty or whitespace-paddedGOODMEMORY_LOCOMO_ROOTvalues before output-root resolution. This keeps external-root prep from silently preferring one source, keeps local raw LoCoMo source fixtures from being overwritten by generated normalized cases, prevents remote error pages from becoming source data, and surfaces malformed env-derived output roots without changing LoCoMo retrieval, answer scores, default status, or public-claim boundaries. -
Phase 65 shared row-identity guard note: shared smoke-report validation now rejects whitespace-padded
cases[]rowcaseIdandquestionIdvalues before selection-header matching or question-delta joins, so malformed row identities surface as canonicality errors instead of latercaseIdsor question mismatch errors. -
Phase 65 shared run-directory guard note: shared smoke-report validation now rejects whitespace-padded
runDirectoryprovenance before category-gap or other downstream analyzers preserve report output-directory lineage. -
Phase 65 shared benchmark-source guard note: shared smoke-report validation now rejects whitespace-padded
benchmarkSourceandexternalRootprovenance before path compatibility checks, so malformed benchmark-root lineage surfaces as canonicality errors instead of later source/root mismatch errors. -
Phase 65 shared reanswer-manifest guard note: shared smoke-report validation now rejects whitespace-padded
reanswerSelection.questionIdFileprovenance before replay-selection lineage and self/source manifest checks. -
Phase 65 shared row-category guard note: shared smoke-report validation now rejects whitespace-padded
cases[]rowcategoryvalues before category enum checks, category-gap aggregation, or matrix assembly. -
Phase 65 shared timestamp guard note: shared smoke-report validation now rejects whitespace-padded top-level
generatedAtand nestedsourceReport.generatedAtvalues before ISO parsing, replay timestamp ordering, or derived analyzer lineage. -
Phase 65 shared exact-provenance guard note: shared smoke-report validation now rejects whitespace-padded
generatedBy,license,upstreamSource, andupstreamAnswerMetricByCategory.*values before writer/source/license allow-list checks or answer-metric comparisons. -
Phase 65 shared upstream metric category-key guard note: shared smoke-report validation now rejects whitespace-padded
upstreamAnswerMetricByCategorycategory keys before category allow-list checks or coverage comparisons againstcases[]categories. -
Phase 65 shared answer-context-mode guard note: shared smoke-report validation now rejects whitespace-padded top-level
answerContextModeand nestedsourceReport.answerContextModevalues before enum support checks, replay writer compatibility checks, or answer-context delta attribution. -
Phase 65 shared answer-context-mode shape guard note: shared smoke-report validation now rejects non-string or empty top-level
answerContextModeand nestedsourceReport.answerContextModevalues before enum support checks, replay writer compatibility checks, or answer-context delta attribution. -
Phase 65 shared semantic embedding-source guard note: shared smoke-report validation now rejects whitespace-padded top-level
semanticCandidateEmbeddingSourceand nestedsourceReport.retrievalConfig.semanticCandidateEmbeddingSourcevalues before enum support checks, retrieval-config compatibility checks, or derived analyzer lineage. -
Phase 65 shared semantic embedding-source shape guard note: shared smoke-report validation now rejects non-string or empty
semanticCandidateEmbeddingSourcevalues before enum support checks, retrieval-config compatibility checks, or derived analyzer lineage. -
Phase 65 shared report identity/mode guard note: shared smoke-report validation now rejects whitespace-padded
benchmark,phase,mode,ingestMode, andanswerEvaluationvalues before benchmark/phase identity checks, supported mode checks, or mode/evaluation pairing checks. -
Phase 65 shared report identity/mode shape guard note: shared smoke-report validation now rejects non-string or empty
benchmark,phase,mode,ingestMode, andanswerEvaluationvalues before benchmark/phase identity checks, supported mode checks, or mode/evaluation pairing checks. -
Phase 65 shared optional selection-header non-empty guard note: shared smoke-report validation now rejects empty
questionIdsandquestionCategoriesarrays before selection-header matching againstcases[]. -
Phase 65 shared caseIds header non-empty guard note: shared smoke-report validation now rejects empty
caseIdsarrays beforecaseCountorcases[]header matching. -
Phase 65 semantic-candidate/BM25 mode guard note:
eval:phase-65-smokerejects--semantic-candidatescombined with--bm25before memory construction or report generation, preserving BM25 as the embedding-free lexical leg and semantic candidate admission as embedding-backed evidence. -
Phase 65 shared BM25 embedding-source guard note: shared smoke-report validation now rejects reports that set
bm25Ranking: truewhile claiming asemanticCandidateEmbeddingSourceother thannone. -
Phase 65 shared semantic-candidate/source consistency guard note: shared smoke-report validation now rejects
semanticCandidates.enabled=truewithsemanticCandidateEmbeddingSource="none", including nestedsourceReport.retrievalConfiglineage, before analyzer attribution or replay lineage checks. -
Phase 65 semantic-candidate inactive-budget guard note:
eval:phase-65-smokerejects semantic-candidate tuning flags unless--semantic-candidatesis enabled, and shared smoke-report validation rejects non-null semantic-candidate tuning fields whensemanticCandidates.enabled=false, including nestedsourceReport.retrievalConfiglineage. -
Phase 65 answer-policy live-mode guard note:
eval:phase-65-smokerejects--allow-commonsense-resolutionand--strict-no-evidence-abstentionunless--liveis enabled, and shared smoke-report validation rejects retrieval-only reports that carry those live-only answer-policy flags. -
Phase 65 answer-context live-mode guard note:
eval:phase-65-smokerejects--answer-from-recalledand--evidence-packunless--liveis enabled, and shared smoke-report validation rejects retrieval-only reports whoseanswerContextModeis notraw-turns. -
Phase 65 multi-hop answer-synthesis prompt guard note: LoCoMo live/reanswer generation now adds a category-scoped
multi_hopsystem instruction to compose the final answer from every required evidence link and avoid stopping at a first matching clue or partial chain. This targets the current multi_hop answer-contract / label-compatibility queue as deterministic prompt hardening only; it does not change LoCoMo retrieval scores, accepted evidence, default status, or public-claim boundaries until a focused live slice proves a score change. -
Phase 65 reanswer category-filter source-row guard note:
eval:phase-65-reanswer-reportrejects category-filtered manifest replay when a selected source report row's actual QA category does not match the requested--reanswer-job-category. This prevents an answer-policy or noise-isolation manifest typo from replaying, for example, an adversarial row inside an open_domain repair queue. This is targeted replay evidence isolation only; it does not change LoCoMo retrieval scores, answer scores, default status, or public-claim boundaries. -
Phase 65 shared zero-failure live-answer completeness guard note: shared smoke-report validation now rejects live-answer reports with
executionFailures: 0when any row is missing scored answer fields, while still allowing non-zero-failure live reports to retain failed rows with null answer fields. -
Phase 65 shared answer-token-F1 state guard note: shared smoke-report validation now rejects failed live-answer and retrieval-only rows that carry a non-null
answerTokenF1; only rows with bothanswerCorrectandgeneratedAnswerpresent may carry a numeric token-F1, while legacy live-answer reports may still omit the field or use null for in-memory backfill. This protects token-F1 near-miss routing evidence without changing LoCoMo scores, default status, or public-claim boundaries. -
Phase 65 shared row turn-id syntax guard note: shared smoke-report validation now rejects row
evidenceTurnIds,retrievedTurnIds,missingEvidenceTurnIds, andnoiseTurnIdsentries that are not canonical LoCoModia_idvalues of the formD<session>:<turn>. -
Phase 65 shared profile lineage guard note: shared smoke-report validation now rejects
profilesComparedvalues that differ from the canonical["goodmemory-rules-only"]lineage written by Phase 65 LoCoMo reports. -
Phase 65 shared present category-summary metrics guard note: shared smoke-report validation now rejects any present
categories[]summary whose aggregate metrics disagree withcases[], while still allowing diagnostics to omit category summaries entirely and full smoke shards that carry zero-count summaries for absent categories. -
Phase 65 shared explicit-only reanswer lineage guard note: shared smoke-report validation now rejects reanswer reports whose
reanswerSelection.explicitQuestionIdsdo not match top-levelquestionIdswhen no manifest path or reanswer job filters are present, while still allowing explicit ids to be additive with manifest-backed jobs. -
Phase 65 shared category-summary guard note: shared smoke-report validation now rejects whitespace-padded
categories[]summarycategoryvalues before category enum checks, category-summary comparisons, budget-delta analysis, or matrix assembly. -
Phase 65 shared generated-answer guard note: shared smoke-report validation now rejects whitespace-padded live-answer row
generatedAnswervalues before category-gap aggregation, live-delta comparison, or replay-derived analyzer export. -
Latest LoCoMo full-root multi_hop blocker proof (Phase 65):
locomo-multihop-semantic-provider-top16-add4-currentcovers all 282 multi-hop questions across 10 conversations with evidence-turn recall 0.326, 37/282 fully retrieved, noise 2204,executionFailures: 0, andquestionCategories=["multi_hop"]; the live evidence-pack validationlocomo-multihop-semantic-provider-top16-add4-live-pack-currentscores 86/282 answer accuracy (0.305),executionFailures: 0. This upgrades the multi-hop blocker from held-out-shard evidence to measured full-root category evidence; LoCoMo remains not closed. -
Latest LoCoMo full-root temporal proof (Phase 65):
locomo-temporal-semantic-provider-top16-add4-currentcovers all 321 temporal questions across 10 conversations with evidence-turn recall 0.678, 207/321 fully retrieved, noise 2571,executionFailures: 0, andquestionCategories=["temporal"]; the resumed live evidence-pack validationlocomo-temporal-semantic-provider-top16-add4-live-pack-currentscores 178/321 answer accuracy (0.555),executionFailures: 0. Temporal is less retrieval-starved than open_domain or multi_hop, but remains answer-side weak, especially conv-42 8/40 and conv-44 11/24. -
Latest LoCoMo full-root adversarial/no-answer proof (Phase 65):
locomo-adversarial-semantic-provider-top16-add4-currentcovers all 446 adversarial questions across 10 conversations with evidence-turn recall 0.592, 260/446 fully retrieved, noise 3421,executionFailures: 0, andquestionCategories=["adversarial"]; live validationlocomo-adversarial-semantic-provider-top16-add4-live-pack-currentscores 240/446 answer accuracy (0.538),executionFailures: 0. This measures the no-answer policy blocker at full-root scope; it does not close adversarial behavior. -
Latest LoCoMo full-root single_hop proof (Phase 65):
locomo-single-hop-semantic-provider-top16-add4-currentcovers all 841 single-hop questions across 10 conversations with evidence-turn recall 0.676, 558/841 fully retrieved, noise 6343,executionFailures: 0, andquestionCategories=["single_hop"]; resumed live validationlocomo-single-hop-semantic-provider-top16-add4-live-pack-currentscores 457/841 answer accuracy (0.543),executionFailures: 0. This feeds the assembled full-root category evidence matrix, not LoCoMo performance.
- Phase 40 is now closed as the v0.2 release proof and product eval slice.
- cross-consumer adoption smoke covers direct TypeScript, Express, Fastify, Python/FastAPI bridge, and installed-host package paths:
reports/eval/adoption/phase-40/run-20260425163012-cross-consumer/report.json - product eval rollup compares with-GoodMemory against a no-memory baseline:
reports/eval/product/phase-40/run-20260425165544-product-eval/report.json - Quality gate:
reports/quality-gates/phase-40/run-20260425172323/phase-40-quality-gate.json
This index keeps one-line evidence pointers instead of old narrative.
- Phase 20:
docs/archive/quality-gates/GoodMemory-Phase-20-Quality-Gate.md,reports/quality-gates/phase-20/run-20260420023503/phase-20-quality-gate.json. - Phase 22:
docs/archive/quality-gates/GoodMemory-Phase-22-Quality-Gate.md,reports/eval/live-memory/phase-22/run-1776650772564-assist/report.json. - Phase 23:
docs/archive/quality-gates/GoodMemory-Phase-23-Quality-Gate.md,reports/eval/live-memory/phase-23/run-1776658376536-promote/report.json. - Phase 29:
docs/archive/quality-gates/GoodMemory-Phase-29-Quality-Gate.md,reports/quality-gates/phase-29/run-20260421213000/phase-29-quality-gate.json,reports/quality-gates/phase-29/run-20260421214500/phase-29-rc-dry-run.json. - Phase 30:
docs/archive/quality-gates/GoodMemory-Phase-30-Quality-Gate.md,reports/quality-gates/phase-30/run-20260421153410/phase-30-quality-gate.json,reports/eval/live-memory/phase-30/run-phase30-live-current/report.json. - Phase 31:
docs/archive/quality-gates/GoodMemory-Phase-31-Quality-Gate.md,reports/quality-gates/phase-31/run-20260422041616/phase-31-quality-gate.json,reports/eval/live-memory/phase-31/run-phase31-live-current/report.json. - Phase 32:
docs/archive/quality-gates/GoodMemory-Phase-32-Quality-Gate.md,reports/quality-gates/phase-32/run-20260422085720/phase-32-quality-gate.json,reports/eval/fallback/phase-32/run-20260422173045/report.json,reports/eval/live-memory/phase-32/run-phase32-live-current/report.json. - Phase 33:
docs/archive/quality-gates/GoodMemory-Phase-33-Quality-Gate.md,reports/quality-gates/phase-33/run-20260422212752/phase-33-quality-gate.json. - Phase 34:
docs/archive/quality-gates/GoodMemory-Phase-34-Quality-Gate.md,reports/eval/fallback/phase-34/run-20260422213045/report.json,reports/eval/live-memory/phase-34/run-phase34-live-current/report.json,reports/quality-gates/phase-34/run-20260423102636/phase-34-quality-gate.json. - Phase 35:
docs/archive/quality-gates/GoodMemory-Phase-35-Quality-Gate.md,reports/eval/fallback/phase-35/run-20260423173045/report.json,reports/eval/live-memory/phase-35/run-phase35-live-current/report.json,reports/quality-gates/phase-35/run-20260423213045/phase-35-quality-gate.json. - Phase 36:
docs/archive/quality-gates/GoodMemory-Phase-36-Quality-Gate.md,reports/quality-gates/phase-36/run-20260423223045/phase-36-quality-gate.json. - Phase 37:
docs/archive/quality-gates/GoodMemory-Phase-37-Quality-Gate.md,reports/eval/fallback/phase-37/run-20260424101045/report.json,reports/eval/live-memory/phase-37/run-phase37-live-current/report.json,reports/eval/live-memory/phase-37/run-phase37-external-consumer/report.json,reports/quality-gates/phase-37/run-20260424104045/phase-37-quality-gate.json. - Phase 37.1:
docs/archive/quality-gates/GoodMemory-Phase-37.1-Quality-Gate.md,reports/eval/dogfood/phase-37-1/run-phase37-1-dogfood-current/report.json,reports/quality-gates/phase-37-1/run-20260424100757/phase-37-1-quality-gate.json. - Phase 38:
docs/archive/quality-gates/GoodMemory-Phase-38-Quality-Gate.md,reports/quality-gates/phase-38/run-20260425084045/phase-38-quality-gate.json. - Phase 39:
reports/quality-gates/phase-39/run-20260425041112/phase-39-quality-gate.json. - Phase 41:
reports/eval/fallback/phase-41/run-20260425213045/report.json,reports/eval/live-memory/phase-41/run-phase41-live-current/report.json,reports/quality-gates/phase-41/run-20260425223045/phase-41-quality-gate.json. - Phase 42:
reports/quality-gates/phase-42/run-20260426100000/phase-42-quality-gate.json. - Phase 43:
reports/eval/fallback/phase-43/run-20260426113000/report.json,reports/quality-gates/phase-43/run-20260426120000/phase-43-quality-gate.json. - Phase 43.5:
reports/eval/fallback/phase-43-5/run-20260426133000/report.json,reports/quality-gates/phase-43-5/run-20260426140000/phase-43-5-quality-gate.json. - Phase 45: Phase 45 is now closed as the First Reference Product and Adoption Evidence slice; examples/reference-chat-product,
bun run eval:phase-45,bun run gate:phase-45,reports/eval/adoption/phase-45/run-20260427104530-adoption-eval/report.json,reports/quality-gates/phase-45/run-20260427110000/phase-45-quality-gate.json,docs/archive/quality-gates/GoodMemory-Phase-45-Quality-Gate.md. - Phase 46: Phase 46 is now closed as the Memory Quality and Maintenance 2.0 slice;
bun run eval:phase-46, qualityRepair,reports/eval/fallback/phase-46/run-20260427123000-quality-eval/report.json,reports/quality-gates/phase-46/run-20260428110000/phase-46-quality-gate.json,docs/archive/quality-gates/GoodMemory-Phase-46-Quality-Gate.md. - Phase 47: Phase 47 is now closed as the Provider-Backed Retrieval Rollout and Quality Promotion slice;
bun run eval:phase-47,reports/eval/fallback/phase-47/run-20260428120000-provider-rollout-eval/report.json,reports/quality-gates/phase-47/run-20260428123000/phase-47-quality-gate.json,docs/archive/quality-gates/GoodMemory-Phase-47-Quality-Gate.md. - Phase 48: Phase 48 is now closed as the Dashboard, Cloud Sync, and Team Workspace Decision slice;
bun run eval:phase-48, no-go decision,reports/eval/fallback/phase-48/run-20260428170000-dashboard-cloud-decision/report.json,reports/quality-gates/phase-48/run-20260428173000/phase-48-quality-gate.json,docs/archive/quality-gates/GoodMemory-Phase-48-Quality-Gate.md. - Phase 49: Phase 49 is now closed as the Full ImplicitMemBench GoodMemory Research Eval; baseline-upstream-chat, goodmemory-raw-experience, goodmemory-distilled-feedback,
reports/eval/research/phase-49/baseline/run-phase49-smoke-current/report.json,reports/eval/research/phase-49/goodmemory/run-phase49-smoke-current/report.json,reports/eval/research/phase-49/comparison/run-phase49-smoke-current/report.json,reports/quality-gates/phase-49/run-20260428210000/phase-49-quality-gate.json,docs/archive/quality-gates/GoodMemory-Phase-49-Quality-Gate.md. - Phase 50:
reports/eval/fallback/phase-50/run-20260428223000-installer-eval/report.json,reports/quality-gates/phase-50/run-20260428224500/phase-50-quality-gate.json,docs/archive/quality-gates/GoodMemory-Phase-50-Quality-Gate.md. - Phase 52:
reports/eval/fallback/phase-52/run-phase52-fallback-current/report.json,reports/eval/live-memory/phase-52/run-phase52-live-current/report.json,reports/quality-gates/phase-52/run-20260502183000/phase-52-quality-gate.json,docs/archive/quality-gates/GoodMemory-Phase-52-Quality-Gate.md. - Phase 59: Phase 59 is the Generalized Raw Executor Cleanup slice; failed/preferred operations,
reports/eval/fallback/phase-59/run-phase59-fallback-current/report.json,reports/eval/fallback/phase-59/run-phase59-fallback-current/raw-diagnostics.json,reports/quality-gates/phase-59/run-20260504193000/phase-59-quality-gate.json,docs/archive/quality-gates/GoodMemory-Phase-59-Quality-Gate.md,goodmemory-raw-experienceat58 / 60, raw90 / 200, raw88 / 200, raw at least115 / 200, distilled151 / 200.
Root current-status docs should stay compact. If a future change needs detailed phase provenance, add it to generated reports or an archive summary, not this file.