All checks were successful
Lint / lint (pull_request) Successful in 9s
Implements the ATLAS (Adaptive Turn-Lineage Archival System) lossless memory subsystem as described in issue #985. All 183 fixture-backed tests pass. agent/atlas/ — modular ATLAS package: - turns.py: RawTurnStore, immutable append-only turn records with stable lineage IDs (session_id:seq:06d format). Turns are never deleted. - dag.py: SummaryDAGStore, compaction that creates summary nodes storing source_turn_ids — every compaction is traceable back to raw turns. - stores.py: WorldKnowledgeStore, DurableMemoryStore, SessionStateStore with strict routing (no mixed bucket). - extractor.py: TypedLinkExtractor, deterministic regex-based extraction of 7 typed relation types on every write (no LLM calls): DEFINES, MODIFIES, REFERENCES, DEPENDS_ON, CONTRADICTS, PREFERS, LOCATES - recall.py: RecallEngine with 3 explicit recall ops: search/describe/expand - db.py: AtlasDB SQLite connection/schema bootstrap agent/atlas_memory.py — AtlasMemory facade (higher-level API) agent/lossless_context.py — JSONL-based lossless context subsystem plugins/memory/atlas/ — MemoryProvider plugin wiring into Hermes lifecycle tools/lossless_recall_tool.py — lossless_recall tool (search/describe/expand) tools/memory_tool.py — extended with world_knowledge store target tests/ — 183 fixture-backed tests covering all acceptance criteria: - Every turn persisted with stable lineage IDs ✅ - Compaction builds retrievable summary DAG nodes with source references ✅ - 3 explicit recall operations (search/describe/expand) ✅ - Writes route to explicit stores (no mixed bucket) ✅ - 7 typed relation types with fixture-backed tests ✅ - test_recover_fact_from_compacted_context proves fact recovery without re-injecting the full original transcript ✅ Fixes #985