figment / tests /test_local_asr_evidence_script.py
ThomsenDrake's picture
Sync full submission repo state
94cbe85 verified
Raw
History Blame Contribute Delete
5.34 kB
import json
from pathlib import Path
import wave
from scripts import run_local_asr_evidence
def _provider_payload(path: Path) -> Path:
payload = {
"transcript": "Local Parakeet transcript says the patient has trouble breathing.",
"suggested_fields": [
{
"field": "symptoms",
"draft_value": "trouble breathing",
"source_snippet": "trouble breathing",
}
],
"missing_or_unclear_fields": ["vitals"],
"provisional_red_flag_mentions": ["trouble breathing"],
}
path.write_text(json.dumps(payload), encoding="utf-8")
return path
def test_asr_evidence_without_provider_payload_records_artifact_only(tmp_path: Path, monkeypatch) -> None:
artifact_path = tmp_path / "parakeet-rnnt-1.1b.nemo"
artifact_path.write_bytes(b"fake parakeet")
monkeypatch.setattr(run_local_asr_evidence, "PARAKEET_NEMO_PATH", artifact_path)
monkeypatch.setattr(run_local_asr_evidence, "PARAKEET_NEMO_BYTES", len(b"fake parakeet"))
monkeypatch.setattr(
run_local_asr_evidence,
"PARAKEET_NEMO_SHA256",
run_local_asr_evidence._sha256(artifact_path),
)
summary = run_local_asr_evidence.run_evidence(output_dir=tmp_path / "evidence")
assert summary["status"] == "artifact_present_provider_payload_required"
assert summary["counts_as_local_asr_artifact"] is True
assert summary["counts_as_local_asr_proof"] is False
assert (tmp_path / "evidence" / "artifact_metadata.json").exists()
assert summary["asr_evidence_manifest_path"] == str(tmp_path / "evidence" / "asr_evidence_manifest.json")
manifest = json.loads((tmp_path / "evidence" / "asr_evidence_manifest.json").read_text(encoding="utf-8"))
assert manifest["proof_flags"]["counts_as_local_asr_artifact"] is True
assert manifest["proof_flags"]["counts_as_local_asr_proof"] is False
assert manifest["provider_payload"] is None
def test_asr_evidence_provider_payload_can_pass_gated_draft_checks(tmp_path: Path, monkeypatch) -> None:
artifact_path = tmp_path / "parakeet-rnnt-1.1b.nemo"
artifact_path.write_bytes(b"fake parakeet")
monkeypatch.setattr(run_local_asr_evidence, "PARAKEET_NEMO_PATH", artifact_path)
monkeypatch.setattr(run_local_asr_evidence, "PARAKEET_NEMO_BYTES", len(b"fake parakeet"))
monkeypatch.setattr(
run_local_asr_evidence,
"PARAKEET_NEMO_SHA256",
run_local_asr_evidence._sha256(artifact_path),
)
payload_path = _provider_payload(tmp_path / "provider.json")
summary = run_local_asr_evidence.run_evidence(
output_dir=tmp_path / "evidence",
provider_payload_path=payload_path,
provider_note="local adapter smoke",
)
assert summary["status"] == "local_asr_proof_passed"
assert summary["counts_as_local_asr_artifact"] is True
assert summary["counts_as_local_asr_proof"] is True
draft = json.loads((tmp_path / "evidence" / "audio_draft.json").read_text(encoding="utf-8"))
assert draft["transcript_source"] == "local_parakeet_asr_provider"
assert draft["raw_audio_stored"] is False
manifest = json.loads((tmp_path / "evidence" / "asr_evidence_manifest.json").read_text(encoding="utf-8"))
assert manifest["evidence_version"] == 1
assert manifest["provider_payload"]["sha256"] == run_local_asr_evidence._sha256(payload_path)
assert manifest["draft_summary"]["transcript_hash"]
assert manifest["draft_summary"]["suggested_field_count"] == 1
assert manifest["draft_checks"]["counts_as_local_asr_proof"] is True
assert manifest["configured_route"]["audio_backend"] == "parakeet_nemo"
assert manifest["configured_route"]["model_stack"] == "local_4b_parakeet"
assert manifest["raw_audio_handling"]["raw_audio_copied_to_evidence"] is False
assert manifest["raw_audio_handling"]["raw_audio_stored"] is False
def test_asr_evidence_audio_metadata_hashes_without_copying_audio(tmp_path: Path, monkeypatch) -> None:
artifact_path = tmp_path / "parakeet-rnnt-1.1b.nemo"
artifact_path.write_bytes(b"fake parakeet")
monkeypatch.setattr(run_local_asr_evidence, "PARAKEET_NEMO_PATH", artifact_path)
monkeypatch.setattr(run_local_asr_evidence, "PARAKEET_NEMO_BYTES", len(b"fake parakeet"))
monkeypatch.setattr(
run_local_asr_evidence,
"PARAKEET_NEMO_SHA256",
run_local_asr_evidence._sha256(artifact_path),
)
audio_path = tmp_path / "source.wav"
with wave.open(str(audio_path), "wb") as wav:
wav.setnchannels(1)
wav.setsampwidth(2)
wav.setframerate(8000)
wav.writeframes(b"\0\0" * 8000)
summary = run_local_asr_evidence.run_evidence(output_dir=tmp_path / "evidence", audio_path=audio_path)
assert summary["counts_as_local_asr_proof"] is False
audio_metadata = json.loads((tmp_path / "evidence" / "audio_metadata.json").read_text(encoding="utf-8"))
assert audio_metadata["duration_seconds"] == 1.0
assert audio_metadata["raw_audio_copied_to_evidence"] is False
manifest = json.loads((tmp_path / "evidence" / "asr_evidence_manifest.json").read_text(encoding="utf-8"))
assert manifest["raw_audio_handling"]["audio_metadata_sha256"] == audio_metadata["sha256"]
assert manifest["raw_audio_handling"]["raw_audio_copied_to_evidence"] is False