feat(evidence): contribute to semantic stages (#42)
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
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"]},
|
||||
]
|
||||
Reference in New Issue
Block a user