File size: 2,463 Bytes
77700f5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b1eb700
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80ae8de
b1eb700
 
77700f5
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import sys
from pathlib import Path

from packetcourt.models import AgentReview

sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
import app


def test_run_audit_validates_nemotron_dict_into_agent_review(monkeypatch):
    monkeypatch.setattr(app, "nemotron_is_configured", lambda: True)
    monkeypatch.setattr(
        app,
        "nemotron_review",
        lambda snapshot: {
            "status": "COMPLETE",
            "priority": "Supplementary wording that should be normalized.",
            "evidence_request": "",
            "rationale": "All claim evidence paths completed.",
            "model": "nvidia/Nemotron-Mini-4B-Instruct",
        },
    )

    result = app.run_audit("SUGAR FREE", "Nutrition per 100g: Total Sugars 0g. Net Weight 200g.")

    assert isinstance(result.agent_review, AgentReview)
    assert result.agent_review.status == "COMPLETE"
    assert result.agent_review.priority == "No additional claim-resolving evidence is required."


def test_nemotron_cannot_invent_required_evidence_outside_bounded_investigation(monkeypatch):
    monkeypatch.setattr(app, "nemotron_is_configured", lambda: True)
    monkeypatch.setattr(
        app,
        "nemotron_review",
        lambda snapshot: {
            "status": "NEEDS_EVIDENCE",
            "priority": "Inspect an unrelated expiry date.",
            "evidence_request": "Expiry date",
            "rationale": "Model requested supplementary evidence.",
            "model": "nvidia/Nemotron-Mini-4B-Instruct",
        },
    )

    result = app.run_audit("SUGAR FREE", "Nutrition per 100g: Total Sugars 0g. Net Weight 200g.")

    assert result.investigation.missing_evidence == []
    assert result.agent_review.status == "COMPLETE"
    assert result.agent_review.evidence_request == ""
    assert result.agent_review.priority == "No additional claim-resolving evidence is required."
    assert "no unresolved evidence" in result.agent_review.rationale.lower()


def test_run_audit_preserves_nemotron_validation_error(monkeypatch):
    monkeypatch.setattr(app, "nemotron_is_configured", lambda: True)
    monkeypatch.setattr(app, "nemotron_review", lambda snapshot: "not a review object")

    result = app.run_audit("SUGAR FREE", "Nutrition per 100g: Total Sugars 0g. Net Weight 200g.")

    assert isinstance(result.agent_review, AgentReview)
    assert result.agent_review.status == "UNAVAILABLE"
    assert "ValidationError" in result.agent_review.rationale