39 lines
1.7 KiB
Python
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"]},
|
|
]
|