from gravityweave.plan_delta import PlanDelta from gravityweave.witness import generate_feasibility_witness from gravityweave.validator import validate_witness, make_signed_verdict def test_validate_witness_ok(): pd = PlanDelta(origin="node1") pd.commitments.add({"type": "burn", "fuel": 5.0, "power": 1.0, "payload_bytes": 100}) w = generate_feasibility_witness(pd) resources = {"available_fuel": 10.0, "available_power": 5.0, "max_payload_bytes": 200} verdict, details = validate_witness(w, resources, fuel_margin=0.1, power_margin=0.1) assert verdict == "OK" assert "checks" in details def test_validate_witness_needs_review(): pd = PlanDelta(origin="node2") pd.commitments.add({"type": "burn", "fuel": 9.0, "power": 1.0}) w = generate_feasibility_witness(pd) resources = {"available_fuel": 10.0, "available_power": 5.0, "max_payload_bytes": 0} verdict, _ = validate_witness(w, resources, fuel_margin=0.2, power_margin=0.1) assert verdict == "needs-review" def test_validate_witness_unstable(): pd = PlanDelta(origin="node3") pd.commitments.add({"type": "burn", "fuel": 11.0, "power": 1.0}) w = generate_feasibility_witness(pd) resources = {"available_fuel": 10.0, "available_power": 5.0, "max_payload_bytes": 0} verdict, _ = validate_witness(w, resources, fuel_margin=0.1, power_margin=0.1) assert verdict == "unstable" def test_make_signed_verdict(): pd = PlanDelta(origin="node4") pd.commitments.add({"type": "burn", "fuel": 1.0, "power": 0.5}) w = generate_feasibility_witness(pd) resources = {"available_fuel": 5.0, "available_power": 5.0, "max_payload_bytes": 0} secret = b"testkey" out = make_signed_verdict(w, resources, secret_key=secret) assert out["verdict"] == "OK" assert "signature" in out and isinstance(out["signature"], str) and len(out["signature"]) == 32