What's Changed
- fix(hermes): apply the iteration-mark predicate to canonical prefetch by @manate-anagram in #1028
- test(hermes): pin remaining canonical CJK contract edges by @manate-anagram in #1046
- fix(config): treat serialized None/null tools as unconfigured by @AmirF194 in #1032
- fix(install): mnemosyne-uninstall parses its arguments before uninstalling (#1048) by @AxDSan in #1055
- fix(hermes): warn on invalid sync_roles config by @dplush in #1038
- fix(repair): load sqlite-vec consistently for D1 (#1040) by @dplush in #1057
- fix(cli): honor --db/--bank in reindex and reject unknown options (#1045) by @jamalkamaladdin in #1049
- fix(hermes): warn on replaceable PM wrapper runtimes by @dplush in #1064
- fix(beam): score working-memory float32 candidates from their stored blob (#1069) by @manate-anagram in #1080
- fix(hermes): validate configured tool names at initialize, not lazily by @AmirF194 in #1073
- fix(hermes): drop stale hermes_plugin import from provider register() by @ether-btc in #1058
- fix(embeddings): enforce strict ENV opt-out before dispatch and cache by @dplush in #1083
- fix(hygiene): anchor the terminal-output markers (#1074) by @AxDSan in #1089
- fix(hermes): defer the legacy audit module's core import (#1056) by @AxDSan in #1085
- fix(hermes): prefer the staged runtime venv over the TCC anchor (#1068) by @AxDSan in #1088
- [Server] Stop mnemosyne media --help from ingesting --help as a media reference by @wahajahmed010 in #1051
- docs(hermes): name the plugin and core channel pairing (#1076) by @AxDSan in #1086
- fix(canonical): stamp valid_until in UTC on forget (#1062) by @AxDSan in #1087
- fix(hermes): catch a validation error during automatic init retry by @AmirF194 in #1092
- fix(schema): migrate legacy memory_events device_id before indexing (#1047) by @dplush in #1053
- fix(hermes): one unclaimable pending record must not abort the batch by @ether-btc in #1099
- fix(stats): expose filtered Working embedding and ANN presence (#1103) by @dplush in #1104
- docs(scanner): cover provider roots, correct sync_turn units by @Dazzuh in #1109
- fix(shmr): restore local LLM harmonization path by @bayhnf in #721
- fix(recovery): harden backup and restore paths by @bayhnf in #815
- fix(embeddings): fail loud on the API path instead of silently returning None (#735) by @ddddddddwp in #797
- local_llm: extra request body per endpoint, named empty answers by @Milgauss in #879
- fix(get): return memory provenance by @PatrickIsenegger in #1060
- fix(conflicts): order-normalized unique pair key + upsert on _record_conflict by @Astraea-Hermes in #1065
- feat(sleep): fleet census of conflict rows — keep the acceptance bound maintained, not asserted by @Astraea-Hermes in #1081
- fix(polyphonic): score temporal voice ages in UTC, not host local time by @lucasmartins-ai in #1097
- docs(canonical): document tombstone contract and per-generation stamp provenance (#1096) by @Astraea-Hermes in #1098
- fix(reindex): an interrupted reindex no longer leaves an empty vector index marked healthy (#1075) by @AxDSan in #1090
- fix(beam): scope the zero-item guard to both health() error predicates by @AmirF194 in #1093
- fix(tests): let the fail-loud API tests opt into embedding dispatch by @AxDSan in #1111
- fix(ci): fetch full main history for the diff walker by @AxDSan in #1110
- feat: add provenance-preserving evidence packs by @dplush in #545
- fix(beam): derived sleep output no longer outranks source memories by default by @israellot in #563
- fix: update global BEAM memories across sessions by @dplush in #582
- fix: add User-Agent to remote API requests by @tiangao88 in #672
- Fix/polyphonic prefetch signal fields by @sich97 in #701
- fix: reduce entity-extraction noise (stopword expansion, ALL-CAPS/junk filters, proper-noun shape rule) by @tiangao88 in #742
- fix(hygiene): isolate transaction behavior by @bayhnf in #816
- fix(extraction): dedupe items repeated across parse categories by @arcalumis in #855
- fix(recall): configurable content cap with unchanged 500-character default by @linouxis9 in #913
- fix(hermes): call-time canonical bindings + writer provenance (re-host of 519f665, rebased on main) by @Astraea-Hermes in #1050
- fix(embeddings): cap API input length to survive small-context local servers by @deadczarvc in #1052
- fix(local_llm): treat HTTP 429 as retryable in the fallback chain (#1000) by @wahajahmed010 in #1078
- fix(model-refresh): isolate Dream and auto-apply configuration by @bayhnf in #817
- fix(hygiene): recognize CJK sentence boundaries in dump heuristics by @ddddddddwp in #831
- fix(dr): keep backups from different stores apart (#1066) by @jamalkamaladdin in #1067
- Feature/Cross-session contradiction resolution for global-scope facts by @sich97 in #714
- feat(conflicts): federation handshake at upsert — probe the whole fleet, not just shared by @Astraea-Hermes in #1082
- Gate the regex memoria_kg prototype writer behind MNEMOSYNE_REGEX_KG (#840, containment) by @Prediction6767 in #847
- Wire LLM-extracted kg triples into the TripleStore (#840, contract) by @Prediction6767 in #848
- refactor(core): extract host-agnostic prefetch rendering from hermes provider by @spiwar in #1077
New Contributors
- @jamalkamaladdin made their first contribution in #1049
- @wahajahmed010 made their first contribution in #1051
- @Dazzuh made their first contribution in #1109
- @PatrickIsenegger made their first contribution in #1060
- @Astraea-Hermes made their first contribution in #1065
- @lucasmartins-ai made their first contribution in #1097
- @tiangao88 made their first contribution in #672
- @sich97 made their first contribution in #701
- @arcalumis made their first contribution in #855
- @Prediction6767 made their first contribution in #847
- @spiwar made their first contribution in #1077
Full Changelog: v0.7.3...v4.0.0b4