Codex commited on
Commit
1de6198
·
1 Parent(s): afe2177

test: lock SigRank metric invariants

Browse files
Files changed (1) hide show
  1. test_metrics.py +82 -0
test_metrics.py ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+ import unittest
3
+
4
+ from ingest import ingest_meta
5
+ from metrics import SEED, compute
6
+
7
+
8
+ class MetricLockTests(unittest.TestCase):
9
+ def test_moses_seed_metrics_are_canonical(self):
10
+ metrics = compute(*SEED["MO§ES (ccusage)"])
11
+
12
+ self.assertAlmostEqual(metrics["yield"], 18436.98, places=2)
13
+ self.assertAlmostEqual(metrics["leverage"], 2042.2, places=1)
14
+ self.assertAlmostEqual(metrics["dev10x"], 3.31, places=2)
15
+ self.assertAlmostEqual(metrics["avg_cost_1m"], 0.527, places=3)
16
+
17
+ def test_cascade_identity_holds_for_every_seed_row(self):
18
+ for name, raw in SEED.items():
19
+ with self.subTest(operator=name):
20
+ metrics = compute(*raw)
21
+ self.assertIsNotNone(metrics["dev10x"])
22
+
23
+ lhs = (
24
+ metrics["transmission"]
25
+ * metrics["commitment"]
26
+ * metrics["reuse"]
27
+ )
28
+
29
+ self.assertAlmostEqual(lhs, metrics["leverage"], places=12)
30
+
31
+
32
+ class CodexParserLockTests(unittest.TestCase):
33
+ def test_alpha_path_uses_output_times_two_baseline(self):
34
+ payload = {
35
+ "data": [
36
+ {
37
+ "inputTokens": 1_000,
38
+ "cachedInputTokens": 3_000,
39
+ "outputTokens": 200,
40
+ "reasoningOutputTokens": 50,
41
+ }
42
+ ]
43
+ }
44
+
45
+ input_tokens, output_tokens, cache_create, cache_read, meta = ingest_meta(
46
+ json.dumps(payload)
47
+ )
48
+
49
+ self.assertEqual(input_tokens, 500)
50
+ self.assertEqual(output_tokens, 250)
51
+ self.assertEqual(cache_create, 500)
52
+ self.assertEqual(cache_read, 3_000)
53
+ self.assertEqual(meta["source"], "codex")
54
+ self.assertIs(meta["estimated"], True)
55
+ self.assertTrue(meta["caveat"].startswith("* AA 2:1 baseline"))
56
+
57
+ def test_beta_path_uses_claude_operator_ratio(self):
58
+ payload = {
59
+ "totals": {
60
+ "input_tokens": 2_000,
61
+ "cached_input_tokens": 5_000,
62
+ "output_tokens": 300,
63
+ "reasoning_output_tokens": 100,
64
+ }
65
+ }
66
+ operator_profile = {"model_type": "claude", "io_ratio": 1.25}
67
+
68
+ input_tokens, output_tokens, cache_create, cache_read, meta = ingest_meta(
69
+ json.dumps(payload), operator_profile=operator_profile
70
+ )
71
+
72
+ self.assertEqual(input_tokens, 500)
73
+ self.assertEqual(output_tokens, 400)
74
+ self.assertEqual(cache_create, 1_500)
75
+ self.assertEqual(cache_read, 5_000)
76
+ self.assertEqual(meta["source"], "codex")
77
+ self.assertIs(meta["estimated"], True)
78
+ self.assertTrue(meta["caveat"].startswith("* Claude operating-ratio 1.250:1"))
79
+
80
+
81
+ if __name__ == "__main__":
82
+ unittest.main()