router/semantic: experiment reports (slice 15)
- 2026-09-07-linear-e5-router-experiment: 136-example baseline (superseded) - 2026-09-07-expanded-corpus-linear-head-experiment: 3025-example expanded (live) - CLAUDE.md: index updates for both evals
This commit is contained in:
@@ -0,0 +1,635 @@
|
||||
# Semantic Router Linear Head Experiment — Report
|
||||
|
||||
## 1. Exact e5 representation used
|
||||
|
||||
- **Model**: model_quantized@384/tok2
|
||||
- **Checkpoint**: models/embedder/multilingual-e5-small/model_quantized.onnx
|
||||
- **Tokenizer**: models/embedder/multilingual-e5-small/tokenizer.json
|
||||
- **Dimension**: 384
|
||||
- **Pooling**: mean-pool + L2-normalize
|
||||
- **Normalization**: L2
|
||||
- **Input template**: query: <text>
|
||||
|
||||
## 2. Development/residual row counts
|
||||
|
||||
- Total corpus: 3025
|
||||
- Frozen holdout: 535
|
||||
- Development pool: 2490
|
||||
- Fast-path resolved: 82
|
||||
- Router-residual: 2943
|
||||
|
||||
Route distribution (full corpus):
|
||||
- action: 990
|
||||
- conversation: 103
|
||||
- knowledge: 880
|
||||
- memory_write: 705
|
||||
- system: 226
|
||||
- uncertain: 121
|
||||
|
||||
## 3. Grouped fold composition
|
||||
|
||||
Folds: 5
|
||||
- Fold 0: eval=476 train=2014 routes={'action': 144, 'conversation': 30, 'knowledge': 150, 'memory_write': 74, 'system': 58, 'uncertain': 20}
|
||||
- Fold 1: eval=341 train=2149 routes={'action': 201, 'conversation': 30, 'knowledge': 44, 'memory_write': 39, 'system': 9, 'uncertain': 18}
|
||||
- Fold 2: eval=707 train=1783 routes={'action': 297, 'conversation': 12, 'knowledge': 210, 'memory_write': 125, 'system': 45, 'uncertain': 18}
|
||||
- Fold 3: eval=506 train=1984 routes={'action': 86, 'conversation': 12, 'knowledge': 160, 'memory_write': 125, 'system': 90, 'uncertain': 33}
|
||||
- Fold 4: eval=460 train=2030 routes={'action': 68, 'conversation': 9, 'knowledge': 151, 'memory_write': 190, 'system': 24, 'uncertain': 18}
|
||||
|
||||
## 4. Selected regularization
|
||||
|
||||
### Experiment A: All development examples
|
||||
- Best C: 10.0
|
||||
- Mean accuracy: 69.2% ± 10.2%
|
||||
- Mean macro F1: 0.616 ± 0.093
|
||||
- Total false actions (CV): 390
|
||||
|
||||
### Experiment B: Router-residual only
|
||||
- Best C: 10.0
|
||||
- Mean accuracy: 68.5% ± 10.2%
|
||||
- Mean macro F1: 0.608 ± 0.089
|
||||
- Total false actions (CV): 388
|
||||
|
||||
### Stability across folds
|
||||
|
||||
C=0.01 acc=30.1%±18.1% f1=0.107±0.074 folds_acc=['33.6%', '21.4%', '63.8%', '17.0%', '14.8%']
|
||||
C=0.1 acc=55.0%±16.8% f1=0.276±0.077 folds_acc=['63.4%', '70.7%', '71.6%', '35.2%', '34.3%']
|
||||
C=1.0 acc=65.2%±10.7% f1=0.522±0.075 folds_acc=['75.4%', '76.0%', '68.9%', '56.9%', '48.7%']
|
||||
C=10.0 acc=69.2%±10.2% f1=0.616±0.093 folds_acc=['79.8%', '79.5%', '66.8%', '67.8%', '52.0%']
|
||||
C=100.0 acc=67.4%±9.0% f1=0.595±0.079 folds_acc=['74.4%', '77.4%', '66.5%', '67.2%', '51.3%']
|
||||
|
||||
## 5. All-example CV metrics
|
||||
|
||||
- Accuracy: 68.5%
|
||||
- Macro F1: 0.675
|
||||
- False-action count: 390
|
||||
- False-action rate: 15.7%
|
||||
- Action precision: 0.629
|
||||
- Action recall: 0.832
|
||||
- Uncertain precision: 0.618
|
||||
- Uncertain recall: 0.589
|
||||
|
||||
Per-class metrics:
|
||||
action P=0.629 R=0.832 F1=0.716 (n=796)
|
||||
conversation P=0.825 R=0.710 F1=0.763 (n=93)
|
||||
knowledge P=0.721 R=0.610 F1=0.661 (n=715)
|
||||
memory_write P=0.748 R=0.635 F1=0.687 (n=553)
|
||||
system P=0.698 R=0.562 F1=0.623 (n=226)
|
||||
uncertain P=0.618 R=0.589 F1=0.603 (n=107)
|
||||
|
||||
Confusion matrix (rows=expected, cols=predicted):
|
||||
action conversation knowledge memory_write system uncertain
|
||||
action 662 4 65 45 4 16
|
||||
conversation 2 66 8 4 4 9
|
||||
knowledge 195 0 436 46 34 4
|
||||
memory_write 135 0 49 351 13 5
|
||||
system 33 4 42 15 127 5
|
||||
uncertain 25 6 5 8 0 63
|
||||
|
||||
## 6. Residual-only CV metrics
|
||||
|
||||
- Accuracy: 67.9%
|
||||
- Macro F1: 0.663
|
||||
- False-action count: 388
|
||||
- False-action rate: 16.0%
|
||||
- Action precision: 0.620
|
||||
- Action recall: 0.826
|
||||
- Uncertain precision: 0.604
|
||||
- Uncertain recall: 0.570
|
||||
|
||||
Per-class metrics:
|
||||
action P=0.620 R=0.826 F1=0.708 (n=766)
|
||||
conversation P=0.807 R=0.720 F1=0.761 (n=93)
|
||||
knowledge P=0.713 R=0.606 F1=0.655 (n=715)
|
||||
memory_write P=0.754 R=0.649 F1=0.698 (n=553)
|
||||
system P=0.685 R=0.484 F1=0.567 (n=184)
|
||||
uncertain P=0.604 R=0.570 F1=0.587 (n=107)
|
||||
|
||||
Confusion matrix (rows=expected, cols=predicted):
|
||||
action conversation knowledge memory_write system uncertain
|
||||
action 633 4 69 43 0 17
|
||||
conversation 2 67 8 6 1 9
|
||||
knowledge 198 1 433 44 35 4
|
||||
memory_write 133 0 50 359 5 6
|
||||
system 29 5 42 15 89 4
|
||||
uncertain 26 6 5 9 0 61
|
||||
|
||||
## 7. Legacy-vs-linear comparison
|
||||
|
||||
### All examples
|
||||
metric legacy linear e5 delta
|
||||
-------------------------------------------------------
|
||||
accuracy 52.2% 68.5% 16.3%
|
||||
macro F1 — 0.675 —
|
||||
action precision — 0.629 —
|
||||
false-action rate 19.9% 15.7% -4.2%
|
||||
uncertain F1 0.000 0.603 0.603
|
||||
|
||||
### Router-residual only
|
||||
metric legacy linear e5 delta
|
||||
-------------------------------------------------------
|
||||
accuracy 40.8% 67.9% 27.1%
|
||||
macro F1 — 0.663 —
|
||||
false-action rate — 16.0% —
|
||||
|
||||
## 8. Fold variance
|
||||
|
||||
All-example CV:
|
||||
Fold 0: acc=79.8% f1=0.758 false_action=27
|
||||
Fold 1: acc=79.5% f1=0.594 false_action=40
|
||||
Fold 2: acc=66.8% f1=0.582 false_action=92
|
||||
Fold 3: acc=67.8% f1=0.667 false_action=102
|
||||
Fold 4: acc=52.0% f1=0.478 false_action=129
|
||||
|
||||
Residual-only CV:
|
||||
Fold 0: acc=78.7% f1=0.747 false_action=28
|
||||
Fold 1: acc=78.7% f1=0.590 false_action=38
|
||||
Fold 2: acc=67.6% f1=0.582 false_action=92
|
||||
Fold 3: acc=66.2% f1=0.648 false_action=104
|
||||
Fold 4: acc=51.0% f1=0.474 false_action=126
|
||||
|
||||
## 9. False-action repair/new-error analysis
|
||||
|
||||
Note: Legacy per-example predictions were not available for this experiment.
|
||||
The legacy baseline was measured in aggregate in the Go test suite.
|
||||
|
||||
Learned router false-action cases (out-of-fold):
|
||||
kq-deadline-1717: 'когда дедлайн по задаче, пожалуйста' (true=knowledge, proba(action)=0.559)
|
||||
kq-deadline-1720: 'я хочу я успеваю до дедлайна по задаче' (true=knowledge, proba(action)=0.491)
|
||||
kq-deadline-1724: 'я хочу когда дедлайн по задаче' (true=knowledge, proba(action)=0.566)
|
||||
kq-deadline-1725: 'надо бы когда дедлайн по задаче' (true=knowledge, proba(action)=0.526)
|
||||
kq-deadline-1729: 'по задаче когда дедлайн' (true=knowledge, proba(action)=0.361)
|
||||
mw-fact-pills-2224: 'принял таблетки сегодня' (true=memory_write, proba(action)=0.342)
|
||||
mw-fact-pills-2229: 'принял таблетки вечером, пожалуйста' (true=memory_write, proba(action)=0.416)
|
||||
mw-fact-pills-2230: 'принял таблетки сегодня, пожалуйста' (true=memory_write, proba(action)=0.282)
|
||||
mw-note-idea-2363: 'запиши идею: гидропоника на балконе, пожалуйста' (true=memory_write, proba(action)=0.395)
|
||||
mw-note-idea-2366: 'идея: гидропоника на балконе, пожалуйста' (true=memory_write, proba(action)=0.399)
|
||||
mw-note-idea-2367: 'идея: сервер в шкаф, пожалуйста' (true=memory_write, proba(action)=0.517)
|
||||
mw-note-idea-2369: '记住: гидропоника на балконе, пожалуйста' (true=memory_write, proba(action)=0.410)
|
||||
mw-note-idea-2370: '记住: сервер в шкаф, пожалуйста' (true=memory_write, proba(action)=0.539)
|
||||
mw-note-idea-2380: 'я хочу идея: сервер в шкаф' (true=memory_write, proba(action)=0.455)
|
||||
mw-note-idea-2386: 'я хочу 记住: сервер в шкаф' (true=memory_write, proba(action)=0.460)
|
||||
mw-note-idea-2393: 'гидропоника на балконе идея:' (true=memory_write, proba(action)=0.483)
|
||||
mw-note-idea-2396: 'гидропоника на балконе 记住:' (true=memory_write, proba(action)=0.464)
|
||||
sys-quiet-on-2577: 'я хочу режим тишина' (true=system, proba(action)=0.448)
|
||||
conv-goodbye-2869: 'до свидания, пожалуйста' (true=conversation, proba(action)=0.253)
|
||||
conv-goodbye-2875: 'я хочу до свидания' (true=conversation, proba(action)=0.213)
|
||||
unc-single-word-verb-2947: 'выключи' (true=uncertain, proba(action)=0.873)
|
||||
unc-single-word-verb-2948: 'включи' (true=uncertain, proba(action)=0.698)
|
||||
unc-single-word-verb-2949: 'перезапусти, пожалуйста' (true=uncertain, proba(action)=0.428)
|
||||
unc-single-word-verb-2950: 'выключи, пожалуйста' (true=uncertain, proba(action)=0.835)
|
||||
unc-single-word-verb-2951: 'включи, пожалуйста' (true=uncertain, proba(action)=0.691)
|
||||
unc-single-word-verb-2953: 'я хочу выключи' (true=uncertain, proba(action)=0.733)
|
||||
unc-single-word-verb-2954: 'я хочу включи' (true=uncertain, proba(action)=0.720)
|
||||
kq-homelab-disk-1494: 'хватает ли места на диске' (true=knowledge, proba(action)=0.635)
|
||||
kq-homelab-disk-1498: 'хватает ли места на диске, пожалуйста' (true=knowledge, proba(action)=0.664)
|
||||
kq-homelab-disk-1503: 'я хочу хватает ли места на диске' (true=knowledge, proba(action)=0.500)
|
||||
kq-homelab-disk-1504: 'надо бы хватает ли места на диске' (true=knowledge, proba(action)=0.630)
|
||||
kq-homelab-disk-1510: 'на диске хватает ли места' (true=knowledge, proba(action)=0.541)
|
||||
kq-task-check-1700: 'покажи задачи' (true=knowledge, proba(action)=0.859)
|
||||
kq-task-check-1702: 'какие задачи есть, пожалуйста' (true=knowledge, proba(action)=0.574)
|
||||
kq-task-check-1703: 'покажи задачи, пожалуйста' (true=knowledge, proba(action)=0.808)
|
||||
kq-task-check-1706: 'я хочу покажи задачи' (true=knowledge, proba(action)=0.715)
|
||||
kq-task-check-1709: 'покажи задачи?' (true=knowledge, proba(action)=0.514)
|
||||
mw-note-task-2429: 'добавь в задачи купить молоко' (true=memory_write, proba(action)=0.935)
|
||||
mw-note-task-2430: 'добавь в задачи починить кран' (true=memory_write, proba(action)=0.721)
|
||||
mw-note-task-2431: 'добавь в задачи обновить сервер' (true=memory_write, proba(action)=0.900)
|
||||
mw-note-task-2432: 'запиши задачу купить молоко' (true=memory_write, proba(action)=0.740)
|
||||
mw-note-task-2433: 'запиши задачу починить кран' (true=memory_write, proba(action)=0.548)
|
||||
mw-note-task-2434: 'запиши задачу обновить сервер' (true=memory_write, proba(action)=0.773)
|
||||
mw-note-task-2435: 'добавь в задачи купить молоко, пожалуйста' (true=memory_write, proba(action)=0.851)
|
||||
mw-note-task-2436: 'добавь в задачи починить кран, пожалуйста' (true=memory_write, proba(action)=0.743)
|
||||
mw-note-task-2437: 'добавь в задачи обновить сервер, пожалуйста' (true=memory_write, proba(action)=0.925)
|
||||
mw-note-task-2438: 'запиши задачу купить молоко, пожалуйста' (true=memory_write, proba(action)=0.617)
|
||||
mw-note-task-2439: 'запиши задачу починить кран, пожалуйста' (true=memory_write, proba(action)=0.549)
|
||||
mw-note-task-2440: 'запиши задачу обновить сервер, пожалуйста' (true=memory_write, proba(action)=0.739)
|
||||
mw-note-task-2441: 'я хочу добавь в задачи купить молоко' (true=memory_write, proba(action)=0.820)
|
||||
mw-note-task-2442: 'надо бы добавь в задачи купить молоко' (true=memory_write, proba(action)=0.791)
|
||||
mw-note-task-2443: 'я хочу добавь в задачи починить кран' (true=memory_write, proba(action)=0.568)
|
||||
mw-note-task-2444: 'надо бы добавь в задачи починить кран' (true=memory_write, proba(action)=0.503)
|
||||
mw-note-task-2445: 'я хочу добавь в задачи обновить сервер' (true=memory_write, proba(action)=0.870)
|
||||
mw-note-task-2446: 'надо бы добавь в задачи обновить сервер' (true=memory_write, proba(action)=0.724)
|
||||
mw-note-task-2447: 'я хочу запиши задачу купить молоко' (true=memory_write, proba(action)=0.658)
|
||||
mw-note-task-2448: 'надо бы запиши задачу купить молоко' (true=memory_write, proba(action)=0.676)
|
||||
mw-note-task-2449: 'я хочу запиши задачу починить кран' (true=memory_write, proba(action)=0.557)
|
||||
mw-note-task-2450: 'надо бы запиши задачу починить кран' (true=memory_write, proba(action)=0.458)
|
||||
mw-note-task-2451: 'я хочу запиши задачу обновить сервер' (true=memory_write, proba(action)=0.676)
|
||||
mw-note-task-2452: 'надо бы запиши задачу обновить сервер' (true=memory_write, proba(action)=0.495)
|
||||
mw-note-task-2453: 'купить молоко добавь в задачи' (true=memory_write, proba(action)=0.926)
|
||||
mw-note-task-2454: 'починить кран добавь в задачи' (true=memory_write, proba(action)=0.895)
|
||||
mw-note-task-2455: 'обновить сервер добавь в задачи' (true=memory_write, proba(action)=0.933)
|
||||
mw-note-task-2456: 'купить молоко запиши задачу' (true=memory_write, proba(action)=0.884)
|
||||
mw-note-task-2457: 'починить кран запиши задачу' (true=memory_write, proba(action)=0.701)
|
||||
mw-note-task-2458: 'обновить сервер запиши задачу' (true=memory_write, proba(action)=0.783)
|
||||
kq-cal-time-1063: 'когда планёрка, пожалуйста' (true=knowledge, proba(action)=0.499)
|
||||
kq-cal-time-1066: 'я хочу когда планёрка' (true=knowledge, proba(action)=0.457)
|
||||
kq-world-def-1205: 'что такое TCP' (true=knowledge, proba(action)=0.592)
|
||||
kq-world-def-1207: 'что такое Kubernetes' (true=knowledge, proba(action)=0.581)
|
||||
kq-world-def-1209: 'что такое React' (true=knowledge, proba(action)=0.396)
|
||||
kq-world-def-1210: 'кто такой TCP' (true=knowledge, proba(action)=0.428)
|
||||
kq-world-def-1215: 'что значит TCP' (true=knowledge, proba(action)=0.581)
|
||||
kq-world-def-1217: 'что значит Kubernetes' (true=knowledge, proba(action)=0.564)
|
||||
kq-world-def-1219: 'что значит React' (true=knowledge, proba(action)=0.441)
|
||||
kq-world-def-1220: 'что такое TCP, пожалуйста' (true=knowledge, proba(action)=0.785)
|
||||
kq-world-def-1221: 'что такое Docker, пожалуйста' (true=knowledge, proba(action)=0.456)
|
||||
kq-world-def-1222: 'что такое Kubernetes, пожалуйста' (true=knowledge, proba(action)=0.700)
|
||||
kq-world-def-1224: 'что такое React, пожалуйста' (true=knowledge, proba(action)=0.587)
|
||||
kq-world-def-1225: 'кто такой TCP, пожалуйста' (true=knowledge, proba(action)=0.615)
|
||||
kq-world-def-1227: 'кто такой Kubernetes, пожалуйста' (true=knowledge, proba(action)=0.687)
|
||||
kq-world-def-1229: 'кто такой React, пожалуйста' (true=knowledge, proba(action)=0.411)
|
||||
kq-world-def-1230: 'что значит TCP, пожалуйста' (true=knowledge, proba(action)=0.771)
|
||||
kq-world-def-1231: 'что значит Docker, пожалуйста' (true=knowledge, proba(action)=0.444)
|
||||
kq-world-def-1232: 'что значит Kubernetes, пожалуйста' (true=knowledge, proba(action)=0.639)
|
||||
kq-world-def-1234: 'что значит React, пожалуйста' (true=knowledge, proba(action)=0.561)
|
||||
kq-world-def-1235: 'я хочу что такое TCP' (true=knowledge, proba(action)=0.588)
|
||||
kq-world-def-1236: 'надо бы что такое TCP' (true=knowledge, proba(action)=0.415)
|
||||
kq-world-def-1239: 'я хочу что такое Kubernetes' (true=knowledge, proba(action)=0.442)
|
||||
kq-world-def-1240: 'надо бы что такое Kubernetes' (true=knowledge, proba(action)=0.460)
|
||||
kq-world-def-1243: 'я хочу что такое React' (true=knowledge, proba(action)=0.411)
|
||||
kq-world-def-1244: 'надо бы что такое React' (true=knowledge, proba(action)=0.331)
|
||||
kq-world-def-1245: 'я хочу кто такой TCP' (true=knowledge, proba(action)=0.350)
|
||||
kq-world-def-1249: 'я хочу кто такой Kubernetes' (true=knowledge, proba(action)=0.418)
|
||||
kq-world-def-1250: 'надо бы кто такой Kubernetes' (true=knowledge, proba(action)=0.358)
|
||||
kq-world-def-1255: 'я хочу что значит TCP' (true=knowledge, proba(action)=0.630)
|
||||
kq-world-def-1256: 'надо бы что значит TCP' (true=knowledge, proba(action)=0.442)
|
||||
kq-world-def-1259: 'я хочу что значит Kubernetes' (true=knowledge, proba(action)=0.576)
|
||||
kq-world-def-1263: 'я хочу что значит React' (true=knowledge, proba(action)=0.480)
|
||||
kq-world-def-1265: 'TCP что такое' (true=knowledge, proba(action)=0.510)
|
||||
kq-world-def-1267: 'Kubernetes что такое' (true=knowledge, proba(action)=0.483)
|
||||
kq-world-def-1269: 'React что такое' (true=knowledge, proba(action)=0.365)
|
||||
kq-world-def-1270: 'TCP кто такой' (true=knowledge, proba(action)=0.331)
|
||||
kq-world-def-1272: 'Kubernetes кто такой' (true=knowledge, proba(action)=0.406)
|
||||
kq-world-def-1275: 'TCP что значит' (true=knowledge, proba(action)=0.493)
|
||||
kq-world-def-1277: 'Kubernetes что значит' (true=knowledge, proba(action)=0.436)
|
||||
kq-world-def-1279: 'React что значит' (true=knowledge, proba(action)=0.358)
|
||||
kq-world-def-1280: 'что такое TCP?' (true=knowledge, proba(action)=0.624)
|
||||
kq-world-def-1282: 'что такое Kubernetes?' (true=knowledge, proba(action)=0.544)
|
||||
kq-world-def-1284: 'что такое React?' (true=knowledge, proba(action)=0.350)
|
||||
kq-world-def-1285: 'кто такой TCP?' (true=knowledge, proba(action)=0.407)
|
||||
kq-world-def-1289: 'кто такой React?' (true=knowledge, proba(action)=0.266)
|
||||
kq-world-def-1290: 'что значит TCP?' (true=knowledge, proba(action)=0.514)
|
||||
kq-world-def-1292: 'что значит Kubernetes?' (true=knowledge, proba(action)=0.509)
|
||||
kq-world-def-1294: 'что значит React?' (true=knowledge, proba(action)=0.356)
|
||||
kq-homelab-status-1429: 'как дела с бэкапами' (true=knowledge, proba(action)=0.442)
|
||||
kq-homelab-status-1431: 'как дела с доменом' (true=knowledge, proba(action)=0.518)
|
||||
kq-homelab-status-1433: 'есть новости по бэкапами, пожалуйста' (true=knowledge, proba(action)=0.389)
|
||||
kq-homelab-status-1435: 'есть новости по доменом, пожалуйста' (true=knowledge, proba(action)=0.497)
|
||||
kq-homelab-status-1439: 'что там с доменом, пожалуйста' (true=knowledge, proba(action)=0.418)
|
||||
kq-homelab-status-1441: 'как дела с бэкапами, пожалуйста' (true=knowledge, proba(action)=0.509)
|
||||
kq-homelab-status-1442: 'как дела с сервером, пожалуйста' (true=knowledge, proba(action)=0.569)
|
||||
kq-homelab-status-1443: 'как дела с доменом, пожалуйста' (true=knowledge, proba(action)=0.697)
|
||||
kq-homelab-status-1444: 'как дела с DNS, пожалуйста' (true=knowledge, proba(action)=0.452)
|
||||
kq-homelab-status-1461: 'я хочу как дела с бэкапами' (true=knowledge, proba(action)=0.434)
|
||||
kq-homelab-status-1462: 'надо бы как дела с бэкапами' (true=knowledge, proba(action)=0.437)
|
||||
kq-homelab-status-1465: 'я хочу как дела с доменом' (true=knowledge, proba(action)=0.427)
|
||||
kq-homelab-status-1471: 'доменом есть новости по' (true=knowledge, proba(action)=0.350)
|
||||
kq-homelab-status-1477: 'бэкапами как дела с' (true=knowledge, proba(action)=0.386)
|
||||
mw-fact-break-2172: 'час took a break' (true=memory_write, proba(action)=0.508)
|
||||
mw-fact-break-2173: 'пять минут took a break' (true=memory_write, proba(action)=0.416)
|
||||
sys-self-version-2739: 'текущая версия maven' (true=system, proba(action)=0.668)
|
||||
sys-self-version-2741: 'текущая версия праксиса' (true=system, proba(action)=0.363)
|
||||
sys-self-version-2742: 'what version maven' (true=system, proba(action)=0.750)
|
||||
sys-self-version-2743: 'what version нексуса' (true=system, proba(action)=0.395)
|
||||
sys-self-version-2744: 'what version праксиса' (true=system, proba(action)=0.570)
|
||||
sys-self-version-2745: 'какая версия maven, пожалуйста' (true=system, proba(action)=0.589)
|
||||
sys-self-version-2747: 'какая версия праксиса, пожалуйста' (true=system, proba(action)=0.396)
|
||||
sys-self-version-2748: 'текущая версия maven, пожалуйста' (true=system, proba(action)=0.737)
|
||||
sys-self-version-2749: 'текущая версия нексуса, пожалуйста' (true=system, proba(action)=0.384)
|
||||
sys-self-version-2750: 'текущая версия праксиса, пожалуйста' (true=system, proba(action)=0.486)
|
||||
sys-self-version-2751: 'what version maven, пожалуйста' (true=system, proba(action)=0.711)
|
||||
sys-self-version-2752: 'what version нексуса, пожалуйста' (true=system, proba(action)=0.394)
|
||||
sys-self-version-2753: 'what version праксиса, пожалуйста' (true=system, proba(action)=0.576)
|
||||
sys-self-version-2760: 'я хочу текущая версия maven' (true=system, proba(action)=0.601)
|
||||
sys-self-version-2761: 'надо бы текущая версия maven' (true=system, proba(action)=0.633)
|
||||
sys-self-version-2763: 'надо бы текущая версия нексуса' (true=system, proba(action)=0.409)
|
||||
sys-self-version-2764: 'я хочу текущая версия праксиса' (true=system, proba(action)=0.367)
|
||||
sys-self-version-2766: 'я хочу what version maven' (true=system, proba(action)=0.714)
|
||||
sys-self-version-2767: 'надо бы what version maven' (true=system, proba(action)=0.501)
|
||||
sys-self-version-2768: 'я хочу what version нексуса' (true=system, proba(action)=0.408)
|
||||
sys-self-version-2770: 'я хочу what version праксиса' (true=system, proba(action)=0.568)
|
||||
sys-self-version-2775: 'maven текущая версия' (true=system, proba(action)=0.734)
|
||||
sys-self-version-2776: 'нексуса текущая версия' (true=system, proba(action)=0.386)
|
||||
sys-self-version-2777: 'праксиса текущая версия' (true=system, proba(action)=0.557)
|
||||
sys-self-version-2778: 'maven what version' (true=system, proba(action)=0.712)
|
||||
sys-self-version-2779: 'нексуса what version' (true=system, proba(action)=0.441)
|
||||
sys-self-version-2780: 'праксиса what version' (true=system, proba(action)=0.582)
|
||||
kq-world-explain-1303: 'опиши машинное обучение' (true=knowledge, proba(action)=0.545)
|
||||
kq-world-explain-1309: 'объясни машинное обучение, пожалуйста' (true=knowledge, proba(action)=0.536)
|
||||
kq-world-explain-1312: 'опиши машинное обучение, пожалуйста' (true=knowledge, proba(action)=0.607)
|
||||
kq-world-explain-1330: 'надо бы опиши машинное обучение' (true=knowledge, proba(action)=0.376)
|
||||
kq-world-explain-1336: 'машинное обучение объясни' (true=knowledge, proba(action)=0.471)
|
||||
kq-world-explain-1339: 'машинное обучение опиши' (true=knowledge, proba(action)=0.587)
|
||||
kq-cap-ha-1734: 'ты можешь выключить свет' (true=knowledge, proba(action)=0.920)
|
||||
kq-cap-ha-1735: 'ты можешь выключить жалюзи' (true=knowledge, proba(action)=0.988)
|
||||
kq-cap-ha-1736: 'ты можешь выключить вытяжку' (true=knowledge, proba(action)=0.983)
|
||||
kq-cap-ha-1737: 'ты можешь выключить вентилятор' (true=knowledge, proba(action)=0.909)
|
||||
kq-cap-ha-1738: 'умеешь ли включить свет' (true=knowledge, proba(action)=0.779)
|
||||
kq-cap-ha-1739: 'умеешь ли включить жалюзи' (true=knowledge, proba(action)=0.942)
|
||||
kq-cap-ha-1740: 'умеешь ли включить вытяжку' (true=knowledge, proba(action)=0.898)
|
||||
kq-cap-ha-1741: 'умеешь ли включить вентилятор' (true=knowledge, proba(action)=0.508)
|
||||
kq-cap-ha-1742: 'сможешь открыть свет' (true=knowledge, proba(action)=0.919)
|
||||
kq-cap-ha-1743: 'сможешь открыть жалюзи' (true=knowledge, proba(action)=0.986)
|
||||
kq-cap-ha-1744: 'сможешь открыть вытяжку' (true=knowledge, proba(action)=0.981)
|
||||
kq-cap-ha-1745: 'сможешь открыть вентилятор' (true=knowledge, proba(action)=0.900)
|
||||
kq-cap-ha-1746: 'ты можешь выключить свет, пожалуйста' (true=knowledge, proba(action)=0.928)
|
||||
kq-cap-ha-1747: 'ты можешь выключить жалюзи, пожалуйста' (true=knowledge, proba(action)=0.988)
|
||||
kq-cap-ha-1748: 'ты можешь выключить вытяжку, пожалуйста' (true=knowledge, proba(action)=0.976)
|
||||
kq-cap-ha-1749: 'ты можешь выключить вентилятор, пожалуйста' (true=knowledge, proba(action)=0.938)
|
||||
kq-cap-ha-1750: 'умеешь ли включить свет, пожалуйста' (true=knowledge, proba(action)=0.846)
|
||||
kq-cap-ha-1751: 'умеешь ли включить жалюзи, пожалуйста' (true=knowledge, proba(action)=0.938)
|
||||
kq-cap-ha-1752: 'умеешь ли включить вытяжку, пожалуйста' (true=knowledge, proba(action)=0.902)
|
||||
kq-cap-ha-1753: 'умеешь ли включить вентилятор, пожалуйста' (true=knowledge, proba(action)=0.559)
|
||||
kq-cap-ha-1754: 'сможешь открыть свет, пожалуйста' (true=knowledge, proba(action)=0.892)
|
||||
kq-cap-ha-1755: 'сможешь открыть жалюзи, пожалуйста' (true=knowledge, proba(action)=0.978)
|
||||
kq-cap-ha-1756: 'сможешь открыть вытяжку, пожалуйста' (true=knowledge, proba(action)=0.975)
|
||||
kq-cap-ha-1757: 'сможешь открыть вентилятор, пожалуйста' (true=knowledge, proba(action)=0.929)
|
||||
kq-cap-ha-1758: 'я хочу ты можешь выключить свет' (true=knowledge, proba(action)=0.835)
|
||||
kq-cap-ha-1759: 'надо бы ты можешь выключить свет' (true=knowledge, proba(action)=0.746)
|
||||
kq-cap-ha-1760: 'я хочу ты можешь выключить жалюзи' (true=knowledge, proba(action)=0.951)
|
||||
kq-cap-ha-1761: 'надо бы ты можешь выключить жалюзи' (true=knowledge, proba(action)=0.961)
|
||||
kq-cap-ha-1762: 'я хочу ты можешь выключить вытяжку' (true=knowledge, proba(action)=0.932)
|
||||
kq-cap-ha-1763: 'надо бы ты можешь выключить вытяжку' (true=knowledge, proba(action)=0.952)
|
||||
kq-cap-ha-1764: 'я хочу ты можешь выключить вентилятор' (true=knowledge, proba(action)=0.837)
|
||||
kq-cap-ha-1765: 'надо бы ты можешь выключить вентилятор' (true=knowledge, proba(action)=0.754)
|
||||
kq-cap-ha-1766: 'я хочу умеешь ли включить свет' (true=knowledge, proba(action)=0.793)
|
||||
kq-cap-ha-1767: 'надо бы умеешь ли включить свет' (true=knowledge, proba(action)=0.640)
|
||||
kq-cap-ha-1768: 'я хочу умеешь ли включить жалюзи' (true=knowledge, proba(action)=0.892)
|
||||
kq-cap-ha-1769: 'надо бы умеешь ли включить жалюзи' (true=knowledge, proba(action)=0.784)
|
||||
kq-cap-ha-1770: 'я хочу умеешь ли включить вытяжку' (true=knowledge, proba(action)=0.822)
|
||||
kq-cap-ha-1771: 'надо бы умеешь ли включить вытяжку' (true=knowledge, proba(action)=0.798)
|
||||
kq-cap-ha-1774: 'я хочу сможешь открыть свет' (true=knowledge, proba(action)=0.840)
|
||||
kq-cap-ha-1775: 'надо бы сможешь открыть свет' (true=knowledge, proba(action)=0.838)
|
||||
kq-cap-ha-1776: 'я хочу сможешь открыть жалюзи' (true=knowledge, proba(action)=0.946)
|
||||
kq-cap-ha-1777: 'надо бы сможешь открыть жалюзи' (true=knowledge, proba(action)=0.940)
|
||||
kq-cap-ha-1778: 'я хочу сможешь открыть вытяжку' (true=knowledge, proba(action)=0.936)
|
||||
kq-cap-ha-1779: 'надо бы сможешь открыть вытяжку' (true=knowledge, proba(action)=0.933)
|
||||
kq-cap-ha-1780: 'я хочу сможешь открыть вентилятор' (true=knowledge, proba(action)=0.857)
|
||||
kq-cap-ha-1781: 'надо бы сможешь открыть вентилятор' (true=knowledge, proba(action)=0.700)
|
||||
kq-cap-ha-1782: 'свет ты можешь выключить' (true=knowledge, proba(action)=0.893)
|
||||
kq-cap-ha-1783: 'жалюзи ты можешь выключить' (true=knowledge, proba(action)=0.982)
|
||||
kq-cap-ha-1784: 'вытяжку ты можешь выключить' (true=knowledge, proba(action)=0.971)
|
||||
kq-cap-ha-1785: 'вентилятор ты можешь выключить' (true=knowledge, proba(action)=0.897)
|
||||
kq-cap-ha-1786: 'свет умеешь ли включить' (true=knowledge, proba(action)=0.786)
|
||||
kq-cap-ha-1787: 'жалюзи умеешь ли включить' (true=knowledge, proba(action)=0.946)
|
||||
kq-cap-ha-1788: 'вытяжку умеешь ли включить' (true=knowledge, proba(action)=0.924)
|
||||
kq-cap-ha-1789: 'вентилятор умеешь ли включить' (true=knowledge, proba(action)=0.674)
|
||||
kq-cap-ha-1790: 'свет сможешь открыть' (true=knowledge, proba(action)=0.931)
|
||||
kq-cap-ha-1791: 'жалюзи сможешь открыть' (true=knowledge, proba(action)=0.983)
|
||||
kq-cap-ha-1792: 'вытяжку сможешь открыть' (true=knowledge, proba(action)=0.967)
|
||||
kq-cap-ha-1793: 'вентилятор сможешь открыть' (true=knowledge, proba(action)=0.886)
|
||||
kq-cap-ha-1794: 'ты можешь выключить свет?' (true=knowledge, proba(action)=0.913)
|
||||
kq-cap-ha-1795: 'ты можешь выключить жалюзи?' (true=knowledge, proba(action)=0.980)
|
||||
kq-cap-ha-1796: 'ты можешь выключить вытяжку?' (true=knowledge, proba(action)=0.970)
|
||||
kq-cap-ha-1797: 'ты можешь выключить вентилятор?' (true=knowledge, proba(action)=0.862)
|
||||
kq-cap-ha-1798: 'умеешь ли включить свет?' (true=knowledge, proba(action)=0.709)
|
||||
kq-cap-ha-1799: 'умеешь ли включить жалюзи?' (true=knowledge, proba(action)=0.866)
|
||||
kq-cap-ha-1800: 'умеешь ли включить вытяжку?' (true=knowledge, proba(action)=0.862)
|
||||
kq-cap-ha-1802: 'сможешь открыть свет?' (true=knowledge, proba(action)=0.905)
|
||||
kq-cap-ha-1803: 'сможешь открыть жалюзи?' (true=knowledge, proba(action)=0.975)
|
||||
kq-cap-ha-1804: 'сможешь открыть вытяжку?' (true=knowledge, proba(action)=0.967)
|
||||
kq-cap-ha-1805: 'сможешь открыть вентилятор?' (true=knowledge, proba(action)=0.859)
|
||||
mw-fact-water-1881: 'воды попил стакан, пожалуйста' (true=memory_write, proba(action)=0.543)
|
||||
mw-fact-water-1882: 'воды попил литр, пожалуйста' (true=memory_write, proba(action)=0.444)
|
||||
mw-fact-water-1886: 'пил воду литр, пожалуйста' (true=memory_write, proba(action)=0.480)
|
||||
mw-fact-water-1894: 'я хочу выпил воды стакан' (true=memory_write, proba(action)=0.527)
|
||||
mw-fact-water-1896: 'я хочу выпил воды литр' (true=memory_write, proba(action)=0.465)
|
||||
mw-fact-water-1902: 'я хочу воды попил стакан' (true=memory_write, proba(action)=0.503)
|
||||
mw-fact-water-1904: 'я хочу воды попил литр' (true=memory_write, proba(action)=0.403)
|
||||
mw-fact-water-1910: 'я хочу пил воду стакан' (true=memory_write, proba(action)=0.468)
|
||||
mw-fact-water-1925: 'стакан выпил воды' (true=memory_write, proba(action)=0.575)
|
||||
mw-fact-water-1929: 'стакан воды попил' (true=memory_write, proba(action)=0.613)
|
||||
unc-ambiguous-noun-2892: 'вода' (true=uncertain, proba(action)=0.371)
|
||||
unc-ambiguous-noun-2893: 'бэкап' (true=uncertain, proba(action)=0.641)
|
||||
unc-ambiguous-noun-2894: 'сервер' (true=uncertain, proba(action)=0.505)
|
||||
unc-ambiguous-noun-2895: 'контейнер' (true=uncertain, proba(action)=0.978)
|
||||
unc-ambiguous-noun-2896: 'задача' (true=uncertain, proba(action)=0.746)
|
||||
unc-ambiguous-noun-2897: 'вода, пожалуйста' (true=uncertain, proba(action)=0.381)
|
||||
unc-ambiguous-noun-2898: 'бэкап, пожалуйста' (true=uncertain, proba(action)=0.636)
|
||||
unc-ambiguous-noun-2899: 'сервер, пожалуйста' (true=uncertain, proba(action)=0.720)
|
||||
unc-ambiguous-noun-2900: 'контейнер, пожалуйста' (true=uncertain, proba(action)=0.938)
|
||||
unc-ambiguous-noun-2901: 'задача, пожалуйста' (true=uncertain, proba(action)=0.742)
|
||||
unc-ambiguous-noun-2902: 'я хочу вода' (true=uncertain, proba(action)=0.476)
|
||||
unc-ambiguous-noun-2903: 'я хочу бэкап' (true=uncertain, proba(action)=0.731)
|
||||
unc-ambiguous-noun-2904: 'я хочу сервер' (true=uncertain, proba(action)=0.661)
|
||||
unc-ambiguous-noun-2905: 'я хочу контейнер' (true=uncertain, proba(action)=0.946)
|
||||
unc-ambiguous-noun-2906: 'я хочу задача' (true=uncertain, proba(action)=0.747)
|
||||
unc-multi-ambiguous-3001: 'всё ок' (true=uncertain, proba(action)=0.391)
|
||||
unc-multi-ambiguous-3007: 'я хочу всё ок' (true=uncertain, proba(action)=0.447)
|
||||
kq-cap-tool-1806: 'ты можешь перезапустить nginx' (true=knowledge, proba(action)=0.975)
|
||||
kq-cap-tool-1807: 'ты можешь перезапустить docker' (true=knowledge, proba(action)=0.936)
|
||||
kq-cap-tool-1808: 'ты можешь перезапустить сервер' (true=knowledge, proba(action)=0.736)
|
||||
kq-cap-tool-1809: 'сможешь остановить nginx' (true=knowledge, proba(action)=0.923)
|
||||
kq-cap-tool-1810: 'сможешь остановить docker' (true=knowledge, proba(action)=0.849)
|
||||
kq-cap-tool-1811: 'сможешь остановить сервер' (true=knowledge, proba(action)=0.802)
|
||||
kq-cap-tool-1812: 'умеешь ли проверить nginx' (true=knowledge, proba(action)=0.691)
|
||||
kq-cap-tool-1815: 'ты можешь перезапустить nginx, пожалуйста' (true=knowledge, proba(action)=0.975)
|
||||
kq-cap-tool-1816: 'ты можешь перезапустить docker, пожалуйста' (true=knowledge, proba(action)=0.942)
|
||||
kq-cap-tool-1817: 'ты можешь перезапустить сервер, пожалуйста' (true=knowledge, proba(action)=0.834)
|
||||
kq-cap-tool-1818: 'сможешь остановить nginx, пожалуйста' (true=knowledge, proba(action)=0.958)
|
||||
kq-cap-tool-1819: 'сможешь остановить docker, пожалуйста' (true=knowledge, proba(action)=0.890)
|
||||
kq-cap-tool-1820: 'сможешь остановить сервер, пожалуйста' (true=knowledge, proba(action)=0.877)
|
||||
kq-cap-tool-1821: 'умеешь ли проверить nginx, пожалуйста' (true=knowledge, proba(action)=0.761)
|
||||
kq-cap-tool-1824: 'я хочу ты можешь перезапустить nginx' (true=knowledge, proba(action)=0.937)
|
||||
kq-cap-tool-1825: 'надо бы ты можешь перезапустить nginx' (true=knowledge, proba(action)=0.934)
|
||||
kq-cap-tool-1826: 'я хочу ты можешь перезапустить docker' (true=knowledge, proba(action)=0.813)
|
||||
kq-cap-tool-1827: 'надо бы ты можешь перезапустить docker' (true=knowledge, proba(action)=0.787)
|
||||
kq-cap-tool-1828: 'я хочу ты можешь перезапустить сервер' (true=knowledge, proba(action)=0.676)
|
||||
kq-cap-tool-1829: 'надо бы ты можешь перезапустить сервер' (true=knowledge, proba(action)=0.570)
|
||||
kq-cap-tool-1830: 'я хочу сможешь остановить nginx' (true=knowledge, proba(action)=0.908)
|
||||
kq-cap-tool-1831: 'надо бы сможешь остановить nginx' (true=knowledge, proba(action)=0.918)
|
||||
kq-cap-tool-1832: 'я хочу сможешь остановить docker' (true=knowledge, proba(action)=0.806)
|
||||
kq-cap-tool-1833: 'надо бы сможешь остановить docker' (true=knowledge, proba(action)=0.789)
|
||||
kq-cap-tool-1834: 'я хочу сможешь остановить сервер' (true=knowledge, proba(action)=0.795)
|
||||
kq-cap-tool-1835: 'надо бы сможешь остановить сервер' (true=knowledge, proba(action)=0.721)
|
||||
kq-cap-tool-1836: 'я хочу умеешь ли проверить nginx' (true=knowledge, proba(action)=0.587)
|
||||
kq-cap-tool-1837: 'надо бы умеешь ли проверить nginx' (true=knowledge, proba(action)=0.505)
|
||||
kq-cap-tool-1842: 'nginx ты можешь перезапустить' (true=knowledge, proba(action)=0.943)
|
||||
kq-cap-tool-1843: 'docker ты можешь перезапустить' (true=knowledge, proba(action)=0.908)
|
||||
kq-cap-tool-1844: 'сервер ты можешь перезапустить' (true=knowledge, proba(action)=0.776)
|
||||
kq-cap-tool-1845: 'nginx сможешь остановить' (true=knowledge, proba(action)=0.880)
|
||||
kq-cap-tool-1846: 'docker сможешь остановить' (true=knowledge, proba(action)=0.790)
|
||||
kq-cap-tool-1847: 'сервер сможешь остановить' (true=knowledge, proba(action)=0.660)
|
||||
kq-cap-tool-1848: 'nginx умеешь ли проверить' (true=knowledge, proba(action)=0.633)
|
||||
kq-cap-tool-1851: 'ты можешь перезапустить nginx?' (true=knowledge, proba(action)=0.947)
|
||||
kq-cap-tool-1852: 'ты можешь перезапустить docker?' (true=knowledge, proba(action)=0.886)
|
||||
kq-cap-tool-1853: 'ты можешь перезапустить сервер?' (true=knowledge, proba(action)=0.661)
|
||||
kq-cap-tool-1854: 'сможешь остановить nginx?' (true=knowledge, proba(action)=0.916)
|
||||
kq-cap-tool-1855: 'сможешь остановить docker?' (true=knowledge, proba(action)=0.628)
|
||||
kq-cap-tool-1856: 'сможешь остановить сервер?' (true=knowledge, proba(action)=0.625)
|
||||
kq-cap-tool-1857: 'умеешь ли проверить nginx?' (true=knowledge, proba(action)=0.604)
|
||||
mw-fact-meal-1946: 'пообедал салатом' (true=memory_write, proba(action)=0.634)
|
||||
mw-fact-meal-1950: 'поужинал салатом' (true=memory_write, proba(action)=0.685)
|
||||
mw-fact-meal-1951: 'поужинал пиццей' (true=memory_write, proba(action)=0.493)
|
||||
mw-fact-meal-1955: 'ел пиццей' (true=memory_write, proba(action)=0.238)
|
||||
mw-fact-meal-1962: 'позавтракал салатом, пожалуйста' (true=memory_write, proba(action)=0.459)
|
||||
mw-fact-meal-1966: 'пообедал салатом, пожалуйста' (true=memory_write, proba(action)=0.656)
|
||||
mw-fact-meal-1968: 'поужинал овсянкой, пожалуйста' (true=memory_write, proba(action)=0.414)
|
||||
mw-fact-meal-1970: 'поужинал салатом, пожалуйста' (true=memory_write, proba(action)=0.662)
|
||||
mw-fact-meal-1974: 'ел салатом, пожалуйста' (true=memory_write, proba(action)=0.592)
|
||||
mw-fact-meal-1975: 'ел пиццей, пожалуйста' (true=memory_write, proba(action)=0.290)
|
||||
mw-fact-meal-1976: 'just ate овсянкой, пожалуйста' (true=memory_write, proba(action)=0.328)
|
||||
mw-fact-meal-1978: 'just ate салатом, пожалуйста' (true=memory_write, proba(action)=0.429)
|
||||
mw-fact-meal-1984: 'я хочу позавтракал салатом' (true=memory_write, proba(action)=0.483)
|
||||
mw-fact-meal-1992: 'я хочу пообедал салатом' (true=memory_write, proba(action)=0.626)
|
||||
mw-fact-meal-1993: 'надо бы пообедал салатом' (true=memory_write, proba(action)=0.528)
|
||||
mw-fact-meal-2000: 'я хочу поужинал салатом' (true=memory_write, proba(action)=0.675)
|
||||
mw-fact-meal-2001: 'надо бы поужинал салатом' (true=memory_write, proba(action)=0.483)
|
||||
mw-fact-meal-2010: 'я хочу ел пиццей' (true=memory_write, proba(action)=0.265)
|
||||
mw-fact-meal-2016: 'я хочу just ate салатом' (true=memory_write, proba(action)=0.561)
|
||||
mw-fact-meal-2024: 'овсянкой пообедал' (true=memory_write, proba(action)=0.385)
|
||||
mw-fact-meal-2026: 'салатом пообедал' (true=memory_write, proba(action)=0.612)
|
||||
mw-fact-meal-2027: 'пиццей пообедал' (true=memory_write, proba(action)=0.444)
|
||||
mw-fact-meal-2028: 'овсянкой поужинал' (true=memory_write, proba(action)=0.438)
|
||||
mw-fact-meal-2030: 'салатом поужинал' (true=memory_write, proba(action)=0.591)
|
||||
mw-fact-meal-2031: 'пиццей поужинал' (true=memory_write, proba(action)=0.571)
|
||||
mw-note-homelab-2401: 'заметка про 备份策略' (true=memory_write, proba(action)=0.633)
|
||||
mw-note-homelab-2404: 'запиши про настройку 备份策略' (true=memory_write, proba(action)=0.657)
|
||||
mw-note-homelab-2406: 'заметка про DNS записи, пожалуйста' (true=memory_write, proba(action)=0.442)
|
||||
mw-note-homelab-2407: 'заметка про 备份策略, пожалуйста' (true=memory_write, proba(action)=0.730)
|
||||
mw-note-homelab-2410: 'запиши про настройку 备份策略, пожалуйста' (true=memory_write, proba(action)=0.719)
|
||||
mw-note-homelab-2415: 'я хочу заметка про 备份策略' (true=memory_write, proba(action)=0.671)
|
||||
mw-note-homelab-2416: 'надо бы заметка про 备份策略' (true=memory_write, proba(action)=0.645)
|
||||
mw-note-homelab-2421: 'я хочу запиши про настройку 备份策略' (true=memory_write, proba(action)=0.561)
|
||||
mw-note-homelab-2422: 'надо бы запиши про настройку 备份策略' (true=memory_write, proba(action)=0.666)
|
||||
mw-note-homelab-2425: '备份策略 заметка про' (true=memory_write, proba(action)=0.742)
|
||||
mw-note-homelab-2428: '备份策略 запиши про настройку' (true=memory_write, proba(action)=0.633)
|
||||
mw-free-remember-2460: 'запомни пароль от wifi' (true=memory_write, proba(action)=0.836)
|
||||
mw-free-remember-2461: 'запомни адрес электрика' (true=memory_write, proba(action)=0.753)
|
||||
mw-free-remember-2462: 'сохрани что встреча в 3' (true=memory_write, proba(action)=0.457)
|
||||
mw-free-remember-2463: 'сохрани пароль от wifi' (true=memory_write, proba(action)=0.939)
|
||||
mw-free-remember-2464: 'сохрани адрес электрика' (true=memory_write, proba(action)=0.980)
|
||||
mw-free-remember-2466: 'занеси пароль от wifi' (true=memory_write, proba(action)=0.733)
|
||||
mw-free-remember-2467: 'занеси адрес электрика' (true=memory_write, proba(action)=0.734)
|
||||
mw-free-remember-2469: 'внеси пароль от wifi' (true=memory_write, proba(action)=0.847)
|
||||
mw-free-remember-2470: 'внеси адрес электрика' (true=memory_write, proba(action)=0.898)
|
||||
mw-free-remember-2472: 'запомни пароль от wifi, пожалуйста' (true=memory_write, proba(action)=0.866)
|
||||
mw-free-remember-2473: 'запомни адрес электрика, пожалуйста' (true=memory_write, proba(action)=0.734)
|
||||
mw-free-remember-2474: 'сохрани что встреча в 3, пожалуйста' (true=memory_write, proba(action)=0.595)
|
||||
mw-free-remember-2475: 'сохрани пароль от wifi, пожалуйста' (true=memory_write, proba(action)=0.942)
|
||||
mw-free-remember-2476: 'сохрани адрес электрика, пожалуйста' (true=memory_write, proba(action)=0.935)
|
||||
mw-free-remember-2478: 'занеси пароль от wifi, пожалуйста' (true=memory_write, proba(action)=0.830)
|
||||
mw-free-remember-2479: 'занеси адрес электрика, пожалуйста' (true=memory_write, proba(action)=0.807)
|
||||
mw-free-remember-2481: 'внеси пароль от wifi, пожалуйста' (true=memory_write, proba(action)=0.942)
|
||||
mw-free-remember-2482: 'внеси адрес электрика, пожалуйста' (true=memory_write, proba(action)=0.946)
|
||||
mw-free-remember-2485: 'я хочу запомни пароль от wifi' (true=memory_write, proba(action)=0.692)
|
||||
mw-free-remember-2486: 'надо бы запомни пароль от wifi' (true=memory_write, proba(action)=0.698)
|
||||
mw-free-remember-2487: 'я хочу запомни адрес электрика' (true=memory_write, proba(action)=0.768)
|
||||
mw-free-remember-2488: 'надо бы запомни адрес электрика' (true=memory_write, proba(action)=0.706)
|
||||
mw-free-remember-2489: 'я хочу сохрани что встреча в 3' (true=memory_write, proba(action)=0.585)
|
||||
mw-free-remember-2490: 'надо бы сохрани что встреча в 3' (true=memory_write, proba(action)=0.465)
|
||||
mw-free-remember-2491: 'я хочу сохрани пароль от wifi' (true=memory_write, proba(action)=0.826)
|
||||
mw-free-remember-2492: 'надо бы сохрани пароль от wifi' (true=memory_write, proba(action)=0.868)
|
||||
mw-free-remember-2493: 'я хочу сохрани адрес электрика' (true=memory_write, proba(action)=0.914)
|
||||
mw-free-remember-2494: 'надо бы сохрани адрес электрика' (true=memory_write, proba(action)=0.932)
|
||||
mw-free-remember-2497: 'я хочу занеси пароль от wifi' (true=memory_write, proba(action)=0.606)
|
||||
mw-free-remember-2498: 'надо бы занеси пароль от wifi' (true=memory_write, proba(action)=0.775)
|
||||
mw-free-remember-2499: 'я хочу занеси адрес электрика' (true=memory_write, proba(action)=0.723)
|
||||
mw-free-remember-2500: 'надо бы занеси адрес электрика' (true=memory_write, proba(action)=0.776)
|
||||
mw-free-remember-2503: 'я хочу внеси пароль от wifi' (true=memory_write, proba(action)=0.738)
|
||||
mw-free-remember-2504: 'надо бы внеси пароль от wifi' (true=memory_write, proba(action)=0.895)
|
||||
mw-free-remember-2505: 'я хочу внеси адрес электрика' (true=memory_write, proba(action)=0.946)
|
||||
mw-free-remember-2506: 'надо бы внеси адрес электрика' (true=memory_write, proba(action)=0.955)
|
||||
mw-free-remember-2508: 'пароль от wifi запомни' (true=memory_write, proba(action)=0.843)
|
||||
mw-free-remember-2509: 'адрес электрика запомни' (true=memory_write, proba(action)=0.817)
|
||||
mw-free-remember-2510: 'что встреча в 3 сохрани' (true=memory_write, proba(action)=0.582)
|
||||
mw-free-remember-2511: 'пароль от wifi сохрани' (true=memory_write, proba(action)=0.955)
|
||||
mw-free-remember-2512: 'адрес электрика сохрани' (true=memory_write, proba(action)=0.974)
|
||||
mw-free-remember-2514: 'пароль от wifi занеси' (true=memory_write, proba(action)=0.672)
|
||||
mw-free-remember-2515: 'адрес электрика занеси' (true=memory_write, proba(action)=0.541)
|
||||
mw-free-remember-2517: 'пароль от wifi внеси' (true=memory_write, proba(action)=0.838)
|
||||
mw-free-remember-2518: 'адрес электрика внеси' (true=memory_write, proba(action)=0.781)
|
||||
sys-quiet-off-2583: 'громкий режим' (true=system, proba(action)=0.559)
|
||||
sys-quiet-off-2584: 'выключи тихий' (true=system, proba(action)=0.372)
|
||||
sys-quiet-off-2588: 'громкий режим, пожалуйста' (true=system, proba(action)=0.528)
|
||||
sys-quiet-off-2589: 'выключи тихий, пожалуйста' (true=system, proba(action)=0.470)
|
||||
sys-quiet-off-2593: 'я хочу громкий режим' (true=system, proba(action)=0.381)
|
||||
unc-anaphora-2922: 'сделай это, пожалуйста' (true=uncertain, proba(action)=0.312)
|
||||
|
||||
## 10. Contrast-family results
|
||||
|
||||
### Experiment A (all dev)
|
||||
family count correct accuracy false_act
|
||||
------------------------------------------------------------
|
||||
question 123 91 74.0% 27
|
||||
capability_question 126 15 11.9% 111
|
||||
|
||||
### Experiment B (residual only)
|
||||
family count correct accuracy false_act
|
||||
------------------------------------------------------------
|
||||
question 123 91 74.0% 27
|
||||
capability_question 126 14 11.1% 112
|
||||
|
||||
## 11. Calibration metrics
|
||||
|
||||
### Experiment A
|
||||
- ECE: 0.045
|
||||
- Brier score: 0.459
|
||||
- Log loss: 0.929
|
||||
|
||||
### Experiment B
|
||||
- ECE: 0.046
|
||||
- Brier score: 0.467
|
||||
- Log loss: 0.946
|
||||
|
||||
## 12. Abstention curves
|
||||
|
||||
### Experiment A (all dev)
|
||||
threshold n_accepted coverage accuracy macro_f1 false_act
|
||||
--------------------------------------------------------------
|
||||
0.40 2293 92.1% 70.7% 0.706 351
|
||||
0.50 1968 79.0% 74.5% 0.751 289
|
||||
0.60 1584 63.6% 78.0% 0.781 227
|
||||
0.70 1244 50.0% 80.9% 0.812 177
|
||||
0.80 851 34.2% 84.1% 0.883 120
|
||||
0.90 438 17.6% 83.3% 0.830 73
|
||||
|
||||
### Experiment B (residual only)
|
||||
threshold n_accepted coverage accuracy macro_f1 false_act
|
||||
--------------------------------------------------------------
|
||||
0.40 2244 92.8% 70.4% 0.700 346
|
||||
0.50 1941 80.3% 73.6% 0.733 285
|
||||
0.60 1571 65.0% 77.3% 0.771 229
|
||||
0.70 1228 50.8% 79.9% 0.792 178
|
||||
0.80 845 34.9% 83.6% 0.873 120
|
||||
0.90 431 17.8% 81.9% 0.827 78
|
||||
|
||||
## 13. Action-threshold curve
|
||||
|
||||
### Experiment A
|
||||
threshold action_P action_R false_act
|
||||
----------------------------------------
|
||||
0.40 0.645 0.803 351
|
||||
0.50 0.672 0.745 289
|
||||
0.60 0.697 0.655 227
|
||||
0.70 0.708 0.539 177
|
||||
0.80 0.733 0.413 120
|
||||
0.90 0.721 0.237 73
|
||||
|
||||
### Experiment B
|
||||
threshold action_P action_R false_act
|
||||
----------------------------------------
|
||||
0.40 0.640 0.803 346
|
||||
0.50 0.664 0.736 285
|
||||
0.60 0.687 0.655 229
|
||||
0.70 0.698 0.537 178
|
||||
0.80 0.722 0.407 120
|
||||
0.90 0.690 0.227 78
|
||||
|
||||
## 14. Model artifact size and runtime cost
|
||||
|
||||
- Trainable parameters: 2310
|
||||
- 6 classes × 384 features = 2304 weights
|
||||
- 6 bias terms
|
||||
- Serialized head size: 9240 bytes (9.0 KB)
|
||||
- Additional inference FLOPs: 2304 multiply-accumulates
|
||||
- Incremental cost (e5 already computed): ~2304 FLOPs, <1µs
|
||||
- Cost if semantic router must trigger its own e5: full ONNX inference (~384 × 128 × 12 = ~590K FLOPs)
|
||||
|
||||
## 16. Recommendation
|
||||
|
||||
**linear head sufficient**
|
||||
|
||||
Residual macro F1 of 0.663 and accuracy of 67.9% exceed the legacy baseline (40.8% residual accuracy) by a meaningful margin. A linear head over frozen e5-small embeddings is a viable first production candidate.
|
||||
|
||||
## 17. Commit hash for experiment tooling
|
||||
|
||||
`59a0a08d329fbcbefad4ec858cf8c6cc07014a36`
|
||||
@@ -0,0 +1,263 @@
|
||||
# Semantic Router Linear Head Experiment — Report
|
||||
|
||||
## 1. Exact e5 representation used
|
||||
|
||||
- **Model**: model_quantized@384/tok2
|
||||
- **Checkpoint**: models/embedder/multilingual-e5-small/model_quantized.onnx
|
||||
- **Tokenizer**: models/embedder/multilingual-e5-small/tokenizer.json
|
||||
- **Dimension**: 384
|
||||
- **Pooling**: mean-pool + L2-normalize
|
||||
- **Normalization**: L2
|
||||
- **Input template**: query: <text>
|
||||
|
||||
## 2. Development/residual row counts
|
||||
|
||||
- Total corpus: 136
|
||||
- Frozen holdout: 21
|
||||
- Development pool: 115
|
||||
- Fast-path resolved: 23
|
||||
- Router-residual: 113
|
||||
|
||||
Route distribution (full corpus):
|
||||
- action: 22
|
||||
- conversation: 7
|
||||
- knowledge: 46
|
||||
- memory_write: 19
|
||||
- system: 7
|
||||
- uncertain: 35
|
||||
|
||||
## 3. Grouped fold composition
|
||||
|
||||
Folds: 5
|
||||
- Fold 0: eval=33 train=82 routes={'action': 4, 'conversation': 1, 'knowledge': 11, 'memory_write': 3, 'system': 1, 'uncertain': 13}
|
||||
- Fold 1: eval=16 train=99 routes={'action': 3, 'conversation': 1, 'knowledge': 5, 'memory_write': 4, 'system': 1, 'uncertain': 2}
|
||||
- Fold 2: eval=22 train=93 routes={'action': 3, 'conversation': 1, 'knowledge': 7, 'memory_write': 4, 'system': 2, 'uncertain': 5}
|
||||
- Fold 3: eval=22 train=93 routes={'action': 4, 'conversation': 1, 'knowledge': 6, 'memory_write': 4, 'system': 2, 'uncertain': 5}
|
||||
- Fold 4: eval=22 train=93 routes={'action': 4, 'conversation': 2, 'knowledge': 8, 'memory_write': 2, 'system': 1, 'uncertain': 5}
|
||||
|
||||
## 4. Selected regularization
|
||||
|
||||
### Experiment A: All development examples
|
||||
- Best C: 100.0
|
||||
- Mean accuracy: 65.2% ± 6.2%
|
||||
- Mean macro F1: 0.597 ± 0.070
|
||||
- Total false actions (CV): 10
|
||||
|
||||
### Experiment B: Router-residual only
|
||||
- Best C: 100.0
|
||||
- Mean accuracy: 66.5% ± 7.6%
|
||||
- Mean macro F1: 0.475 ± 0.083
|
||||
- Total false actions (CV): 0
|
||||
|
||||
### Stability across folds
|
||||
|
||||
C=0.01 acc=32.0%±3.0% f1=0.081±0.006 folds_acc=['33.3%', '31.2%', '31.8%', '27.3%', '36.4%']
|
||||
C=0.1 acc=32.0%±3.0% f1=0.081±0.006 folds_acc=['33.3%', '31.2%', '31.8%', '27.3%', '36.4%']
|
||||
C=1.0 acc=44.8%±7.0% f1=0.190±0.049 folds_acc=['36.4%', '37.5%', '50.0%', '45.5%', '54.5%']
|
||||
C=10.0 acc=58.3%±4.6% f1=0.403±0.086 folds_acc=['51.5%', '62.5%', '63.6%', '59.1%', '54.5%']
|
||||
C=100.0 acc=65.2%±6.2% f1=0.597±0.070 folds_acc=['54.5%', '62.5%', '68.2%', '68.2%', '72.7%']
|
||||
|
||||
## 5. All-example CV metrics
|
||||
|
||||
- Accuracy: 64.3%
|
||||
- Macro F1: 0.620
|
||||
- False-action count: 10
|
||||
- False-action rate: 8.7%
|
||||
- Action precision: 0.545
|
||||
- Action recall: 0.667
|
||||
- Uncertain precision: 0.800
|
||||
- Uncertain recall: 0.533
|
||||
|
||||
Per-class metrics:
|
||||
action P=0.545 R=0.667 F1=0.600 (n=18)
|
||||
conversation P=1.000 R=0.500 F1=0.667 (n=6)
|
||||
knowledge P=0.756 R=0.838 F1=0.795 (n=37)
|
||||
memory_write P=0.346 R=0.529 F1=0.419 (n=17)
|
||||
system P=1.000 R=0.429 F1=0.600 (n=7)
|
||||
uncertain P=0.800 R=0.533 F1=0.640 (n=30)
|
||||
|
||||
Confusion matrix (rows=expected, cols=predicted):
|
||||
action conversation knowledge memory_write system uncertain
|
||||
action 12 0 0 5 0 1
|
||||
conversation 0 3 1 0 0 2
|
||||
knowledge 4 0 31 2 0 0
|
||||
memory_write 4 0 3 9 0 1
|
||||
system 2 0 2 0 3 0
|
||||
uncertain 0 0 4 10 0 16
|
||||
|
||||
## 6. Residual-only CV metrics
|
||||
|
||||
- Accuracy: 64.6%
|
||||
- Macro F1: 0.429
|
||||
- False-action count: 0
|
||||
- False-action rate: 0.0%
|
||||
- Action precision: 0.000
|
||||
- Action recall: 0.000
|
||||
- Uncertain precision: 0.667
|
||||
- Uncertain recall: 0.533
|
||||
|
||||
Per-class metrics:
|
||||
action P=0.000 R=0.000 F1=0.000 (n=5)
|
||||
conversation P=1.000 R=0.500 F1=0.667 (n=6)
|
||||
knowledge P=0.750 R=0.917 F1=0.825 (n=36)
|
||||
memory_write P=0.400 R=0.625 F1=0.488 (n=16)
|
||||
system P=0.000 R=0.000 F1=0.000 (n=3)
|
||||
uncertain P=0.667 R=0.533 F1=0.593 (n=30)
|
||||
|
||||
Confusion matrix (rows=expected, cols=predicted):
|
||||
action conversation knowledge memory_write system uncertain
|
||||
action 0 0 0 2 0 3
|
||||
conversation 0 3 1 0 0 2
|
||||
knowledge 0 0 33 3 0 0
|
||||
memory_write 0 0 4 10 0 2
|
||||
system 0 0 2 0 0 1
|
||||
uncertain 0 0 4 10 0 16
|
||||
|
||||
## 7. Legacy-vs-linear comparison
|
||||
|
||||
### All examples
|
||||
metric legacy linear e5 delta
|
||||
-------------------------------------------------------
|
||||
accuracy 52.2% 64.3% 12.1%
|
||||
macro F1 — 0.620 —
|
||||
action precision — 0.545 —
|
||||
false-action rate 19.9% 8.7% -11.2%
|
||||
uncertain F1 0.000 0.640 0.640
|
||||
|
||||
### Router-residual only
|
||||
metric legacy linear e5 delta
|
||||
-------------------------------------------------------
|
||||
accuracy 40.8% 64.6% 23.8%
|
||||
macro F1 — 0.429 —
|
||||
false-action rate — 0.0% —
|
||||
|
||||
## 8. Fold variance
|
||||
|
||||
All-example CV:
|
||||
Fold 0: acc=54.5% f1=0.507 false_action=1
|
||||
Fold 1: acc=62.5% f1=0.579 false_action=2
|
||||
Fold 2: acc=68.2% f1=0.554 false_action=2
|
||||
Fold 3: acc=68.2% f1=0.632 false_action=5
|
||||
Fold 4: acc=72.7% f1=0.712 false_action=0
|
||||
|
||||
Residual-only CV:
|
||||
Fold 0: acc=53.6% f1=0.500 false_action=0
|
||||
Fold 1: acc=75.0% f1=0.573 false_action=0
|
||||
Fold 2: acc=72.2% f1=0.411 false_action=0
|
||||
Fold 3: acc=68.4% f1=0.541 false_action=0
|
||||
Fold 4: acc=63.2% f1=0.351 false_action=0
|
||||
|
||||
## 9. False-action repair/new-error analysis
|
||||
|
||||
Note: Legacy per-example predictions were not available for this experiment.
|
||||
The legacy baseline was measured in aggregate in the Go test suite.
|
||||
|
||||
Learned router false-action cases (out-of-fold):
|
||||
en-query-003: 'show me this week's weight' (true=knowledge, proba(action)=0.402)
|
||||
ru-query-014: 'я успеваю до дедлайна' (true=knowledge, proba(action)=0.343)
|
||||
ru-note-003: 'заметка про настройку vlan на свитче' (true=memory_write, proba(action)=0.335)
|
||||
ru-query-005: 'напоминания на завтра есть' (true=knowledge, proba(action)=0.336)
|
||||
ru-fact-009: 'отметь что я выпил таблетки утром' (true=memory_write, proba(action)=0.437)
|
||||
ru-query-011: 'почему сервер тормозит' (true=knowledge, proba(action)=0.381)
|
||||
ru-fact-005: 'поспал часов пять' (true=memory_write, proba(action)=0.557)
|
||||
ru-note-006: 'добавь в задачи купить молоко' (true=memory_write, proba(action)=0.739)
|
||||
ru-sys-003: 'переходи в тихий режим' (true=system, proba(action)=0.404)
|
||||
en-sys-002: 'turn quiet mode back on' (true=system, proba(action)=0.410)
|
||||
|
||||
## 10. Contrast-family results
|
||||
|
||||
### Experiment A (all dev)
|
||||
family count correct accuracy false_act
|
||||
------------------------------------------------------------
|
||||
negation 5 3 60.0% 0
|
||||
question 5 5 100.0% 0
|
||||
reported_speech 6 3 50.0% 0
|
||||
quotation 6 4 66.7% 0
|
||||
hypothetical 6 3 50.0% 0
|
||||
capability_question 6 6 100.0% 0
|
||||
|
||||
### Experiment B (residual only)
|
||||
family count correct accuracy false_act
|
||||
------------------------------------------------------------
|
||||
negation 5 3 60.0% 0
|
||||
question 5 5 100.0% 0
|
||||
reported_speech 6 3 50.0% 0
|
||||
quotation 6 4 66.7% 0
|
||||
hypothetical 6 3 50.0% 0
|
||||
capability_question 6 6 100.0% 0
|
||||
|
||||
## 11. Calibration metrics
|
||||
|
||||
### Experiment A
|
||||
- ECE: 0.116
|
||||
- Brier score: 0.418
|
||||
- Log loss: 0.832
|
||||
|
||||
### Experiment B
|
||||
- ECE: 0.159
|
||||
- Brier score: 0.411
|
||||
- Log loss: 0.804
|
||||
|
||||
## 12. Abstention curves
|
||||
|
||||
### Experiment A (all dev)
|
||||
threshold n_accepted coverage accuracy macro_f1 false_act
|
||||
--------------------------------------------------------------
|
||||
0.40 98 85.2% 72.4% 0.654 6
|
||||
0.50 75 65.2% 84.0% 0.690 2
|
||||
0.60 56 48.7% 92.9% 0.851 1
|
||||
0.70 42 36.5% 97.6% 0.714 1
|
||||
0.80 28 24.3% 100.0% 1.000 0
|
||||
0.90 10 8.7% 100.0% 1.000 0
|
||||
|
||||
### Experiment B (residual only)
|
||||
threshold n_accepted coverage accuracy macro_f1 false_act
|
||||
--------------------------------------------------------------
|
||||
0.40 86 89.6% 67.4% 0.435 0
|
||||
0.50 70 72.9% 78.6% 0.583 0
|
||||
0.60 56 58.3% 91.1% 0.721 0
|
||||
0.70 46 47.9% 95.7% 0.904 0
|
||||
0.80 32 33.3% 96.9% 0.880 0
|
||||
0.90 12 12.5% 100.0% 1.000 0
|
||||
|
||||
## 13. Action-threshold curve
|
||||
|
||||
### Experiment A
|
||||
threshold action_P action_R false_act
|
||||
----------------------------------------
|
||||
0.40 0.667 0.667 6
|
||||
0.50 0.846 0.611 2
|
||||
0.60 0.857 0.333 1
|
||||
0.70 0.750 0.167 1
|
||||
0.80 1.000 0.056 0
|
||||
0.90 0.000 0.000 0
|
||||
|
||||
### Experiment B
|
||||
threshold action_P action_R false_act
|
||||
----------------------------------------
|
||||
0.40 0.000 0.000 0
|
||||
0.50 0.000 0.000 0
|
||||
0.60 0.000 0.000 0
|
||||
0.70 0.000 0.000 0
|
||||
0.80 0.000 0.000 0
|
||||
0.90 0.000 0.000 0
|
||||
|
||||
## 14. Model artifact size and runtime cost
|
||||
|
||||
- Trainable parameters: 2310
|
||||
- 6 classes × 384 features = 2304 weights
|
||||
- 6 bias terms
|
||||
- Serialized head size: 9240 bytes (9.0 KB)
|
||||
- Additional inference FLOPs: 2304 multiply-accumulates
|
||||
- Incremental cost (e5 already computed): ~2304 FLOPs, <1µs
|
||||
- Cost if semantic router must trigger its own e5: full ONNX inference (~384 × 128 × 12 = ~590K FLOPs)
|
||||
|
||||
## 16. Recommendation
|
||||
|
||||
**need more data**
|
||||
|
||||
All-example F1 (0.620) is acceptable but residual-only F1 (0.429) drops, suggesting the contrast-family examples are hard for a linear classifier. More contrastive training data may help.
|
||||
|
||||
## 17. Commit hash for experiment tooling
|
||||
|
||||
`59a0a08d329fbcbefad4ec858cf8c6cc07014a36`
|
||||
@@ -46,6 +46,8 @@ A pair in `docs/routing.md` went stale unnoticed. Its source predated the
|
||||
| [gemma-4-E4B against gemma-4-12B on the routing fixture](2026-08-09-e4b-vs-12b-routing.md) | live |
|
||||
| [The classifier baseline after the tokenizer fix](2026-08-11-classifier-baseline-after-tokenizer-fix.md) | live |
|
||||
| [The CPT+SFT Qwen3-1.7B routes better and cannot hold a sentence](2026-08-19-maven-model-cpt-sft.md) | live |
|
||||
| [Linear-head experiment on e5-small (slice 14 baseline, 136 examples)](2026-09-07-linear-e5-router-experiment.md) | superseded |
|
||||
| [Expanded corpus linear-head experiment (3025 examples, 93 seed families)](2026-09-07-expanded-corpus-linear-head-experiment.md) | live |
|
||||
|
||||
`docs/routing.md` holds the arm table these feed. Cite from there, not from here.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user