jonny commited on
Commit
1873a1b
·
verified ·
1 Parent(s): 257f5bd

Horos v2: macro-F1 0.613 (was 0.512), artifact-concrete realizations + restored concept negatives

Browse files
Files changed (3) hide show
  1. README.md +39 -17
  2. head.json +18 -22
  3. model/model.safetensors +1 -1
README.md CHANGED
@@ -21,6 +21,11 @@ datasets:
21
  [Topos](https://github.com/dialoguesai/topos): free text in → the data scopes it touches,
22
  an explicit `none`, or a hand-off to an LLM when it isn't sure.
23
 
 
 
 
 
 
24
  ![How Horos routes a question](routing.png)
25
 
26
  *ὅρος — the stones Athenians planted at property lines: "whose land begins here." Same
@@ -50,15 +55,18 @@ Benchmark: `role_classify_8` — 1,071 cases, template-disjoint from training, m
50
  gold, 24% adversarial negatives. It is built to be hard: don't anchor against CLINC-style
51
  intent scores. The right column is the same benchmark's LLM baseline.
52
 
53
- | metric | Horos | mistral:7b (4.4 GB) |
54
- |---|---|---|
55
- | macro-F1 | **0.512** | 0.495 |
56
- | exact set match | **0.496** | 0.243 |
57
- | negatives abstained | **0.984** | 0.126 |
58
- | single / multi-gold recall | 0.388 / 0.425 | — |
59
- | dead rate | 0.171 | — |
60
- | disjoint rate | 0.217 | — |
61
- | per-scope recall ≥ 0.60 | 2 / 14 | 9 / 14 |
 
 
 
62
 
63
  ### With its LLM escalation (composed per-case)
64
 
@@ -75,11 +83,18 @@ traffic degrades with weaker hardware.
75
 
76
  ## Limitations
77
 
78
- * **Confident-none swallowing.** 27% of benchmark positives get a confident `none` —
79
- silently, no escalation. The dominant defect; mechanism is template familiarity.
80
- Treat a `none` on a plausibly-personal question with suspicion.
81
- * **12 of 14 scopes are under the 0.60 recall floor.** This artifact has not cleared its
82
- promotion gate; it fronts an LLM in shadow/advisory postures only.
 
 
 
 
 
 
 
83
  * All numbers are synthetic-benchmark. Real-traffic behaviour is being measured in
84
  shadow mode.
85
  * English only. **No user data, ever** — the loader refuses artifacts whose manifest
@@ -89,9 +104,16 @@ traffic degrades with weaker hardware.
89
 
90
  | source | licence | rows |
91
  |---|---|---|
92
- | schema-grounded synthetic + compounds + boundary negatives (Topos) | internal | 5,164 |
93
- | [AmazonScience/massive](https://huggingface.co/datasets/AmazonScience/massive) | CC BY 4.0 | 3,500 |
94
- | [CLINC150 OOS](https://github.com/clinc/oos-eval) | CC BY 3.0 | 800 |
 
 
 
 
 
 
 
95
 
96
  This card is the CC BY attribution notice. No share-alike or non-commercial data.
97
 
 
21
  [Topos](https://github.com/dialoguesai/topos): free text in → the data scopes it touches,
22
  an explicit `none`, or a hand-off to an LLM when it isn't sure.
23
 
24
+ **v2** (2026-08-16) — macro-F1 **0.613**, up from v1's 0.512. Trained against a gap v1's
25
+ own failures exposed: it handled *band* phrasings ("how has my sleep been") and fell
26
+ silent on *artifact* ones ("what's my resting heart rate trend"). Still not promoted —
27
+ see Limitations.
28
+
29
  ![How Horos routes a question](routing.png)
30
 
31
  *ὅρος — the stones Athenians planted at property lines: "whose land begins here." Same
 
55
  gold, 24% adversarial negatives. It is built to be hard: don't anchor against CLINC-style
56
  intent scores. The right column is the same benchmark's LLM baseline.
57
 
58
+ | metric | v2 | v1 | mistral:7b (4.4 GB) |
59
+ |---|---|---|---|
60
+ | macro-F1 | **0.613** | 0.512 | 0.495 |
61
+ | exact set match | **0.558** | 0.496 | 0.243 |
62
+ | negatives abstained | **0.941** | 0.984 | 0.126 |
63
+ | single / multi-gold recall | 0.502 / 0.596 | 0.388 / 0.425 | — |
64
+ | dead rate | 0.149 | 0.171 | — |
65
+ | disjoint rate | 0.206 | 0.217 | — |
66
+ | per-scope recall ≥ 0.60 | 6 / 14 | 2 / 14 | 9 / 14 |
67
+
68
+ On a 53-case hand-annotated probe of natural phrasings — which neither version trained
69
+ on — v2 routes **77%** correctly against v1's 58%.
70
 
71
  ### With its LLM escalation (composed per-case)
72
 
 
83
 
84
  ## Limitations
85
 
86
+ * **Confident-none swallowing, now concentrated rather than general.** Overall dead rate
87
+ is 0.149, but on *artifact-concrete* phrasings ("what's my bank balance", "what's in
88
+ my review queue") it is **18%** against 5% on abstract ones. v2 closed most of v1's
89
+ 26% gap here and gave part of it back for the safety property below one threshold
90
+ currently trades them against each other, which is the next fix. Treat a `none` on a
91
+ plausibly-personal question with suspicion.
92
+ * **Disjoint rate 0.206 — the blocking defect, and unsolved.** One in five acted-on
93
+ turns names a scope set sharing nothing with the truth. It is **threshold-invariant**
94
+ (0.256–0.270 across τ 0.4–0.9 on a sibling run), so it lives in the weights, not the
95
+ operating point. Three training rounds have not moved it.
96
+ * **8 of 14 scopes are under the 0.60 recall floor** (v1: 12). This artifact has not
97
+ cleared its promotion gate; it fronts an LLM in shadow/advisory postures only.
98
  * All numbers are synthetic-benchmark. Real-traffic behaviour is being measured in
99
  shadow mode.
100
  * English only. **No user data, ever** — the loader refuses artifacts whose manifest
 
104
 
105
  | source | licence | rows |
106
  |---|---|---|
107
+ | schema-grounded synthetic + compounds + boundary negatives (Topos) | internal | 7,369 |
108
+ | [AmazonScience/massive](https://huggingface.co/datasets/AmazonScience/massive) | CC BY 4.0 | 5,200 |
109
+ | [CLINC150 OOS](https://github.com/clinc/oos-eval) | CC BY 3.0 | 1,200 |
110
+
111
+ v2 added ~95 artifact-concrete realizations **and** restored the concept-negative ratio
112
+ (0.054 → 0.070). The second half is the interesting one: without a "what *is* a
113
+ curriculum vitae?" negative beside "what's on *my* CV?", an earlier v2 candidate learned
114
+ the artifact noun as sufficient evidence of ownership and fired on 43 near-miss
115
+ definition questions, dropping negatives-abstained to 0.739. Teaching a positive without
116
+ its matching negative was the whole regression.
117
 
118
  This card is the CC BY attribution notice. No share-alike or non-commercial data.
119
 
head.json CHANGED
@@ -29,46 +29,46 @@
29
  "source": "schema-grounded (G3)",
30
  "licence": "internal",
31
  "url": "-",
32
- "rows": 1927,
33
- "note": "the only source for the nine uncovered scopes; `train` split only (1927 of 4447) \u2014 the rest belongs to the benchmark"
34
  },
35
  {
36
  "source": "compound positives (B1)",
37
  "licence": "internal",
38
  "url": "-",
39
- "rows": 1772,
40
  "note": "multi-scope conjunctions of train-split parents at 0.92x positives; the corpus was 100% single-label and trained AGAINST co-activation (multi-gold recall 0.165 vs 0.356 single)"
41
  },
42
  {
43
  "source": "negative twins (G4)",
44
  "licence": "internal",
45
  "url": "-",
46
- "rows": 1156,
47
- "note": "third-party + generalize at 0.60x positives (2461 available); teaches 'whose data', which M1 found rung 1 cannot represent"
48
  },
49
  {
50
  "source": "concept negatives (G4b)",
51
  "licence": "internal",
52
  "url": "-",
53
- "rows": 309,
54
  "note": "mechanism + definition frames over the positives' own concept vocabulary; replaces the mined QA band, which yielded 102 usable rows from 119,700 questions and reached only 8 of 14 scopes"
55
  },
56
  {
57
  "source": "AmazonScience/massive",
58
  "licence": "CC BY-4.0",
59
  "url": "https://amazon-massive-nlu-dataset.s3.amazonaws.com/amazon-massive-dataset-1.1.tar.gz",
60
- "rows": 3500,
61
  "note": "en-US only; positives cue-filtered (see POSITIVE_CUES)"
62
  },
63
  {
64
  "source": "clinc/oos-eval",
65
  "licence": "CC BY-3.0",
66
  "url": "https://raw.githubusercontent.com/clinc/oos-eval/master/data/data_full.json",
67
- "rows": 800,
68
  "note": "all `none`; the OOS split is the near-miss anchor"
69
  }
70
  ],
71
- "total_rows": 9464,
72
  "attribution_required": [
73
  "AmazonScience/massive",
74
  "clinc/oos-eval"
@@ -76,29 +76,25 @@
76
  },
77
  "metrics": {
78
  "n": 1071,
79
- "macro_f1": 0.5116596438030812,
80
- "exact": 0.4957983193277311,
81
- "negatives_abstained": 0.9841897233201581,
82
  "scopes_below_floor": [
83
- "activity:read",
84
  "ai_conversations:read",
85
- "attention:read",
86
  "availability:read",
87
  "complexity:read",
88
  "health:read",
89
- "messages:read",
90
  "places:read",
91
  "relationship_context:read",
92
  "resources:read",
93
- "schedule:read",
94
  "work_context:read"
95
  ],
96
- "recall_single_gold": 0.38816738816738816,
97
- "recall_multi_gold": 0.4245614035087719,
98
- "multi_gap": -0.036394015341383756,
99
- "dead_rate": 0.17114914425427874,
100
- "disjoint_rate": 0.21710526315789475,
101
  "threshold": 0.7
102
  },
103
- "trained_at": "2026-08-15"
104
  }
 
29
  "source": "schema-grounded (G3)",
30
  "licence": "internal",
31
  "url": "-",
32
+ "rows": 2767,
33
+ "note": "the only source for the nine uncovered scopes; `train` split only (2767 of 5987) \u2014 the rest belongs to the benchmark"
34
  },
35
  {
36
  "source": "compound positives (B1)",
37
  "licence": "internal",
38
  "url": "-",
39
+ "rows": 2545,
40
  "note": "multi-scope conjunctions of train-split parents at 0.92x positives; the corpus was 100% single-label and trained AGAINST co-activation (multi-gold recall 0.165 vs 0.356 single)"
41
  },
42
  {
43
  "source": "negative twins (G4)",
44
  "licence": "internal",
45
  "url": "-",
46
+ "rows": 1660,
47
+ "note": "third-party + generalize at 0.60x positives (3544 available); teaches 'whose data', which M1 found rung 1 cannot represent"
48
  },
49
  {
50
  "source": "concept negatives (G4b)",
51
  "licence": "internal",
52
  "url": "-",
53
+ "rows": 397,
54
  "note": "mechanism + definition frames over the positives' own concept vocabulary; replaces the mined QA band, which yielded 102 usable rows from 119,700 questions and reached only 8 of 14 scopes"
55
  },
56
  {
57
  "source": "AmazonScience/massive",
58
  "licence": "CC BY-4.0",
59
  "url": "https://amazon-massive-nlu-dataset.s3.amazonaws.com/amazon-massive-dataset-1.1.tar.gz",
60
+ "rows": 5200,
61
  "note": "en-US only; positives cue-filtered (see POSITIVE_CUES)"
62
  },
63
  {
64
  "source": "clinc/oos-eval",
65
  "licence": "CC BY-3.0",
66
  "url": "https://raw.githubusercontent.com/clinc/oos-eval/master/data/data_full.json",
67
+ "rows": 1200,
68
  "note": "all `none`; the OOS split is the near-miss anchor"
69
  }
70
  ],
71
+ "total_rows": 13769,
72
  "attribution_required": [
73
  "AmazonScience/massive",
74
  "clinc/oos-eval"
 
76
  },
77
  "metrics": {
78
  "n": 1071,
79
+ "macro_f1": 0.6127984463644067,
80
+ "exact": 0.5583566760037348,
81
+ "negatives_abstained": 0.9407114624505929,
82
  "scopes_below_floor": [
 
83
  "ai_conversations:read",
 
84
  "availability:read",
85
  "complexity:read",
86
  "health:read",
 
87
  "places:read",
88
  "relationship_context:read",
89
  "resources:read",
 
90
  "work_context:read"
91
  ],
92
+ "recall_single_gold": 0.5021645021645021,
93
+ "recall_multi_gold": 0.5964912280701754,
94
+ "multi_gap": -0.09432672590567326,
95
+ "dead_rate": 0.1491442542787286,
96
+ "disjoint_rate": 0.2063758389261745,
97
  "threshold": 0.7
98
  },
99
+ "trained_at": "2026-08-16"
100
  }
model/model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:91a54633cd655bc8ca3cd71e9a90088136576d0fb2589d333167f8ce54f372a1
3
  size 267872556
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:470b940f751055aae58c8f08ec045e0ae6bc69567ae09962a7adce1fe4ad3d24
3
  size 267872556