Files
ThothII/harness/tests/test_evidence_session_receipts.py
T

39 lines
1.7 KiB
Python

import json
from datetime import UTC, datetime
from tht.evidence import EvidenceReceipt, replace_evidence_receipt
from tht.session.filesystem_repository import FilesystemSessionRepository
from tht.session.models import PrincipalContext, SessionManifest
def test_receipt_replaces_only_its_semantic_stage_without_copying_evidence_content(tmp_path):
repository = FilesystemSessionRepository(
tmp_path, "workspace-a", PrincipalContext(issuer="test", subject="operator"),
root=tmp_path / "sessions",
)
session_id = "c2cdbbf5-ae30-432e-8298-837bf55abad9"
repository.create(SessionManifest(
id=session_id, question="q", database="d", schema="s", created_at=datetime(2026, 8, 24, tzinfo=UTC),
))
replace_evidence_receipt(repository, session_id, EvidenceReceipt(
stage="clarification", purpose="disambiguation", vector_generation="gen:" + "a" * 32,
evidence_ids=("evidence:age",),
))
replace_evidence_receipt(repository, session_id, EvidenceReceipt(
stage="clarification", purpose="disambiguation", vector_generation="gen:" + "b" * 32,
evidence_ids=(),
))
replace_evidence_receipt(repository, session_id, EvidenceReceipt(
stage="cte", purpose="sql_generation", vector_generation="gen:" + "b" * 32,
evidence_ids=("evidence:age", "evidence:procedure"),
))
stored = json.loads(repository.read_artifact(session_id, "evidence_receipts"))
assert stored == [
{"stage": "clarification", "purpose": "disambiguation", "vector_generation": "gen:" + "b" * 32,
"evidence_ids": []},
{"stage": "cte", "purpose": "sql_generation", "vector_generation": "gen:" + "b" * 32,
"evidence_ids": ["evidence:age", "evidence:procedure"]},
]