diff --git a/servers/unraid/supermemory-poc/poc.py b/servers/unraid/supermemory-poc/poc.py index 7157c6b..8a0d630 100755 --- a/servers/unraid/supermemory-poc/poc.py +++ b/servers/unraid/supermemory-poc/poc.py @@ -53,6 +53,14 @@ def require_token(env_name: str) -> str: return token +def contains_source(value: Any, expected: str) -> bool: + if isinstance(value, dict): + return value.get("source") == expected or any(contains_source(item, expected) for item in value.values()) + if isinstance(value, list): + return any(contains_source(item, expected) for item in value) + return False + + def request_multipart_json( url: str, *, @@ -326,6 +334,9 @@ def smoke(args: argparse.Namespace) -> None: ) if not found: raise RuntimeError(f"document {document_id or marker} was not searchable within {args.wait}s") + raw_metadata_traceable = contains_source(search.get("results") or [], "poc-smoke") + if not raw_metadata_traceable: + raise RuntimeError("v4 document search did not return the source metadata required for attribution") profile_shape_ok = isinstance(profile, dict) and "profile" in profile if not profile_shape_ok: raise RuntimeError("v4 profile response is missing the profile field expected by Hermes") @@ -334,6 +345,7 @@ def smoke(args: argparse.Namespace) -> None: { "document_id": document_id, "documents_search": "ok", + "raw_metadata_traceability": "ok", "profile": "ok", "conversation_ingest": "accepted", "container_tag": container,