@@ -997,14 +997,59 @@ def test_lab_result_report_creates_outputs(tmp_path, capsys):
997997 assert "toxic" not in report ["summary" ]["by_usable_qualitative_result" ]
998998 assert report ["n_candidates" ] == 1
999999 assert len (report ["control_failures" ]) == 1
1000+ assert report ["data_origin" ]["status" ] == "unclassified"
1001+ assert report ["data_origin" ]["n_synthetic_results" ] == 0
10001002 text = out_md .read_text (encoding = "utf-8" )
10011003 assert "Wet-Lab Result Report" in text
10021004 assert "Usable Qualitative Outcome Counts" in text
10031005 assert "Raw Qualitative Observations (Audit Only)" in text
1006+ assert "Data-origin status: unclassified" in text
10041007 assert "CAND-001" in text
10051008 assert "RES-002" in text
10061009
10071010
1011+ def test_lab_result_report_surfaces_synthetic_origin (tmp_path ):
1012+ results_dir = tmp_path / "lab_results"
1013+ results_dir .mkdir ()
1014+ result = {
1015+ "result_id" : "RES-SYNTHETIC-001" ,
1016+ "candidate_id" : "SYNTHETIC-CAND-001" ,
1017+ "assay_type" : "MIC" ,
1018+ "organism_or_cell_line" : "SYNTHETIC TEST - E. coli" ,
1019+ "result_value" : 8.0 ,
1020+ "result_unit" : "µg/mL" ,
1021+ "result_qualitative" : "active" ,
1022+ "positive_control_passed" : True ,
1023+ "negative_control_passed" : True ,
1024+ "assay_date" : "2026-07-01" ,
1025+ "replicate_count" : 1 ,
1026+ "performed_by_lab" : "SYNTHETIC TEST - fixture" ,
1027+ "raw_data_sha256" : None ,
1028+ "computational_candidate_certificate_hash" : "abc123def456" ,
1029+ "notes" : "SYNTHETIC TEST DATA - not a real assay." ,
1030+ "disclaimer" : (
1031+ "SYNTHETIC TEST. This is not a real experimental result on a "
1032+ "computationally nominated candidate and does not constitute a "
1033+ "drug or clinical claim."
1034+ ),
1035+ }
1036+ (results_dir / "synthetic.json" ).write_text (json .dumps (result ), encoding = "utf-8" )
1037+
1038+ from openamp_foundry .reports .lab_result_report import (
1039+ build_lab_result_report ,
1040+ write_lab_result_markdown ,
1041+ )
1042+
1043+ report = build_lab_result_report (results_dir )
1044+ assert report ["data_origin" ]["status" ] == "synthetic_present"
1045+ assert report ["data_origin" ]["n_synthetic_results" ] == 1
1046+ assert report ["data_origin" ]["synthetic_result_ids" ] == ["RES-SYNTHETIC-001" ]
1047+
1048+ out_md = tmp_path / "report.md"
1049+ write_lab_result_markdown (report , out_md )
1050+ assert "Data-origin status: synthetic_present" in out_md .read_text (encoding = "utf-8" )
1051+
1052+
10081053def test_lab_result_report_blocks_invalid_files (tmp_path , capsys ):
10091054 results_dir = tmp_path / "lab_results"
10101055 results_dir .mkdir ()
0 commit comments