feat(evidence): build semantic fragments from typed units

This commit is contained in:
2026-08-24 21:33:48 +02:00
parent 8adc085746
commit 3420c57c8b
9 changed files with 642 additions and 14 deletions
+28
View File
@@ -148,6 +148,34 @@ def test_manifest_rejects_inconsistent_pipeline_versions():
CorpusManifest(pipeline_version="evidence-v1", documents=[wrong])
def test_typed_evidence_fragment_metadata_must_be_complete_and_allowlisted():
metadata = {
"evidence_id": "evidence:fascia-pediatrica",
"evidence_kind": "formula",
"purposes": ["sql_generation"],
"scope": {"concepts": ["fascia pediatrica"], "tables": [], "columns": []},
"language": "it",
"provenance": {
"source_file": "source/paziente.md",
"source_sha256": "sha256:" + "a" * 64,
"supporting_excerpts": ["Pazienti con età inferiore a 18 anni."],
},
}
assert CanonicalChunk.model_validate({**chunk().model_dump(), "metadata": metadata}).metadata == metadata
with pytest.raises(ValidationError, match="typed Evidence metadata"):
CanonicalChunk.model_validate({
**chunk().model_dump(),
"metadata": {**metadata, "unreviewed_evidence_note": "not allowed"},
})
with pytest.raises(ValidationError, match="typed Evidence metadata"):
CanonicalChunk.model_validate({
**chunk().model_dump(),
"metadata": {"evidence_kind": "formula"},
})
def test_vector_generation_requires_embedding_compatibility():
with pytest.raises(ValidationError, match="vector_generation"):
CorpusManifest(pipeline_version="evidence-v1", vector_generation="generation:one")