File size: 2,605 Bytes
e0f7a6a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import tempfile
import unittest
from pathlib import Path

from orbit_core import OrbitStore, decision_gate, required_confidence


class OrbitCoreTests(unittest.TestCase):
    def make_store(self):
        tempdir = tempfile.TemporaryDirectory()
        self.addCleanup(tempdir.cleanup)
        return OrbitStore(Path(tempdir.name) / "beliefs.json")

    def test_evidence_keeps_provenance(self):
        store = self.make_store()
        belief = store.record_evidence(
            subject="Bike",
            predicate="weighs",
            obj="330 lb",
            context="current configuration",
            claim_type="personal_report",
            relation="support",
            source_type="firsthand_report",
            speaker="Thomas",
            quote="She's not fat. 330 lbs",
            reliability=0.70,
        )
        self.assertEqual(belief.evidence[0].speaker, "Thomas")
        self.assertEqual(belief.evidence[0].quote, "She's not fat. 330 lbs")
        self.assertEqual(belief.claim_type, "personal_report")

    def test_contradiction_increases_pressure(self):
        store = self.make_store()
        first = store.record_evidence(
            subject="Glass",
            predicate="is",
            obj="fragile",
            relation="support",
            source_type="direct_measurement",
            reliability=0.90,
        )
        before = first.pressure
        after = store.record_evidence(
            subject="Glass",
            predicate="is",
            obj="fragile",
            relation="contradict",
            source_type="direct_measurement",
            reliability=0.90,
        )
        self.assertGreater(after.pressure, before)
        self.assertEqual(after.status, "contested")

    def test_round_trip(self):
        tempdir = tempfile.TemporaryDirectory()
        self.addCleanup(tempdir.cleanup)
        path = Path(tempdir.name) / "beliefs.json"
        original = OrbitStore(path)
        recorded = original.record_evidence(
            subject="Orbit",
            predicate="preserves",
            obj="revision",
            relation="support",
            source_type="primary_document",
            reliability=0.85,
        )
        loaded = OrbitStore(path)
        self.assertEqual(loaded.get(recorded.id).statement, recorded.statement)

    def test_high_stakes_irreversible_guardrail(self):
        self.assertEqual(required_confidence("high", "low", "high"), 0.85)
        result = decision_gate(0.84, "high", "low", "high")
        self.assertFalse(result["permitted"])


if __name__ == "__main__":
    unittest.main()