All checks were successful
Lint / lint (pull_request) Successful in 28s
Closes #1012 - add structured session fact extraction with provenance, temporal metadata, canonical normalization, and contradiction grouping - persist structured metadata into holographic memory auto-extraction with canonical-key dedupe across repeated ingests - add fixture-backed transcript tests plus extraction quality evaluation
51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
"""Integration tests for holographic auto-extraction with structured fact persistence."""
|
|
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parents[3]))
|
|
|
|
from plugins.memory.holographic import HolographicMemoryProvider
|
|
|
|
_FIXTURE_PATH = Path(__file__).resolve().parents[2] / "fixtures" / "memory_extraction_fragments.json"
|
|
|
|
|
|
def _load_fixture(name: str):
|
|
return json.loads(_FIXTURE_PATH.read_text())[name]
|
|
|
|
|
|
class TestHolographicAutoExtract:
|
|
def test_auto_extract_persists_structured_metadata_and_normalizes_duplicates(self, tmp_path):
|
|
provider = HolographicMemoryProvider(
|
|
config={
|
|
"db_path": str(tmp_path / "memory_store.db"),
|
|
"auto_extract": True,
|
|
"default_trust": 0.5,
|
|
}
|
|
)
|
|
provider.initialize("test-session")
|
|
|
|
messages = _load_fixture("mixed_transcript")
|
|
provider.on_session_end(messages)
|
|
provider.on_session_end(messages)
|
|
|
|
facts = provider._store.list_facts(min_trust=0.0, limit=20)
|
|
deploy_facts = [f for f in facts if f.get("relation") == "workflow.deploy_method"]
|
|
provider_facts = [f for f in facts if f.get("contradiction_group") == "config.provider"]
|
|
|
|
assert len(deploy_facts) == 1
|
|
assert deploy_facts[0]["metadata"]["duplicate_count"] >= 3
|
|
assert deploy_facts[0]["observed_at"] == "2026-04-22T10:00:00Z"
|
|
assert deploy_facts[0]["metadata"]["provenance"] == [
|
|
"conversation:user:0",
|
|
"conversation:user:1",
|
|
]
|
|
|
|
assert len(provider_facts) == 2
|
|
assert {f["status"] for f in provider_facts} == {"contradiction"}
|
|
assert {f["metadata"]["value"] for f in provider_facts} == {
|
|
"openai-codex/gpt-5.4",
|
|
"mimo-v2-pro",
|
|
}
|