omnilane 0.34.0 → 0.42.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/CHANGELOG.md +71 -1
  4. package/README.ja.md +63 -33
  5. package/README.ko.md +63 -32
  6. package/README.md +147 -86
  7. package/README.zh-CN.md +61 -30
  8. package/README.zh-TW.md +124 -75
  9. package/VERSION +1 -1
  10. package/config/aa-model-policy.json +3046 -0
  11. package/docs/aa-model-coverage-2026-09-05.json +29204 -0
  12. package/docs/completion-wakeup.md +126 -0
  13. package/docs/model-capabilities-2026-09.md +380 -0
  14. package/docs/native-executor.md +264 -0
  15. package/docs/release-notes-0.42.1.md +32 -0
  16. package/hooks/routing-instruction.md +101 -40
  17. package/package.json +8 -2
  18. package/plugin.json +2 -2
  19. package/routing.local.yaml.example +8 -3
  20. package/routing.yaml +16 -16
  21. package/scripts/completion-wakeup.py +390 -0
  22. package/scripts/configure.sh +4 -4
  23. package/scripts/dispatch.sh +323 -32
  24. package/scripts/doctor.sh +55 -1
  25. package/scripts/jobs.sh +64 -17
  26. package/scripts/lib/aa_policy.py +473 -0
  27. package/scripts/lib/aa_retry.py +77 -0
  28. package/scripts/lib/common.sh +106 -1
  29. package/scripts/lib/job-worker.sh +314 -20
  30. package/scripts/lib/live-protocol.sh +147 -2
  31. package/scripts/lib/native.py +507 -0
  32. package/scripts/lib/normalize-claude-stream.py +72 -0
  33. package/scripts/lib/prepare-agy-mode.py +374 -0
  34. package/scripts/release-audit.sh +103 -0
  35. package/scripts/runners/run-claude.sh +81 -47
  36. package/scripts/runners/run-codex-live.py +462 -0
  37. package/scripts/runners/run-codex.sh +62 -3
  38. package/scripts/runners/run-gemini.sh +85 -10
  39. package/scripts/runners/run-grok-live.py +426 -0
  40. package/scripts/runners/run-grok.sh +117 -6
  41. package/scripts/runners/run-vote.sh +6 -3
  42. package/skills/omnilane/SKILL.md +217 -81
@@ -0,0 +1,126 @@
1
+ # 完成續驗橋接(Codex heartbeat)
2
+
3
+ 協定版本:2026-09-07。
4
+
5
+ `scripts/completion-wakeup.py` 是獨立命令列工具:
6
+ 追蹤明確登錄的 CLI 工作、發出一次有效領取權、記錄主控送達與驗收。
7
+ 它不呼叫模型、不建立排程、不讀工作輸出,也不保證 app 已喚醒。
8
+ 真正喚醒由主控透過 `mcp__codex_app__automation_update` 註冊的 heartbeat 負責。
9
+ 這是排程輪詢,不是即時推播;本機離線、排程延遲與 app 狀態都會影響送達。
10
+
11
+ ## 登錄與身分
12
+
13
+ 每個 host/thread 只有一份 registry,同 run 可追加工作並重用 automation ID。
14
+ 主控傳入的 thread ID 必須來自 app 的實際任務,不能把 omnilane 自身 thread 名稱代入。
15
+ 只有一個 active run;不同 run 會拒絕。既有 run 已 closed 時,新 run 的 prepare 會先把完整舊紀錄
16
+ 存入私有 history,再建立 pending 的新紀錄;舊 automation ID、租約、事件與 adoption 不沿用。
17
+ 舊 run 的 poll/ack 會拒絕,不會領取新 run 的事件。原本 active/pending 的 run 從不默默被取代。
18
+ 同一 host/thread 歷史曾使用的 run_id 永不重用,以免舊 heartbeat 命令在後續同名輪次復活。
19
+ 歷史的 accepted receipt 留在原紀錄,不沿用為新 run 的驗收證據;請為每輪指定全新的 run_id。
20
+ 這是工作流程契約,不是防止同使用者程序偽造參數的安全隔離。
21
+
22
+ ```bash
23
+ PY=python3
24
+ SCRIPT=/absolute/repo/scripts/completion-wakeup.py
25
+ BIND=(--thread-id CONTROLLER_THREAD --host-id local --run-id RUN_ID)
26
+ $PY "$SCRIPT" prepare "${BIND[@]}" \
27
+ --workdir /absolute/repo --job JOB_ID --ttl-seconds 3600
28
+ ```
29
+
30
+ 工作必須已存在於 `~/.omnilane/jobs/JOB_ID`,且 `meta.json` 身分與工作目錄相符。
31
+ 若 metadata 的 foreman_session 非空,表示另有原主控身分,單靠 allowlist 不足以收錄。
32
+ 該欄位來自 Claude 程序綁定,並非 Codex thread ID;程式不硬比兩者。
33
+ 必須取得操作者明示採用後,把確認整理為 scoped adoption receipt,prepare 加 `--adoption-evidence`。
34
+ 未提供會回 `adoption_required:JOB_ID:IDENTITY_SHA256`,只透露工作指紋,不輸出原 session 值。
35
+ 空 foreman_session 仍可由主控的明確 allowlist 直接登錄。
36
+
37
+ ```json
38
+ {
39
+ "source": "operator_adoption",
40
+ "operator_confirmed": true,
41
+ "controller_thread_id": "CONTROLLER_THREAD",
42
+ "controller_host_id": "local",
43
+ "run_id": "RUN_ID",
44
+ "job_identity_sha256": {"JOB_ID": "IDENTITY_SHA256"}
45
+ }
46
+ ```
47
+
48
+ 此 receipt 必須反映已取得的明示確認,不是讓工作者自己填 true 自我授權。
49
+ 程式驗其 run/thread/host/job/fingerprint 並保存 receipt 雜湊;這是可稽核聲明,不是 OS 身分認證。
50
+ 新 run 不沿用舊 run 的 adoption;metadata 身分改動後舊 adoption 也失效。
51
+ 可用 `--home /absolute/private/path` 指定測試儲存;所有命令都要使用同一 home/binding。
52
+ prepare 回傳工具名稱、tool_args(heartbeat/create 或 update、prompt、targetThreadId、status),
53
+ 以及 schedule_request。主控將工具接受的排程格式補入 rrule,保留既有通知偏好後呼叫工具。
54
+ 沒有直接寫 automation 設定檔,也沒有把 pending 當 active。
55
+
56
+ 工具成功後,由主控將實際結果整理成最小 JSON receipt(不要包含憑證或私人訊息):
57
+
58
+ ```json
59
+ {
60
+ "source": "automation_update",
61
+ "automation_id": "AUTOMATION_ID",
62
+ "controller_thread_id": "CONTROLLER_THREAD",
63
+ "controller_host_id": "local",
64
+ "status": "ACTIVE",
65
+ "effective_interval_seconds": 60
66
+ }
67
+ ```
68
+
69
+ ```bash
70
+ $PY "$SCRIPT" record-registration "${BIND[@]}" \
71
+ --automation-id AUTOMATION_ID --evidence /absolute/registration-receipt.json
72
+ ```
73
+
74
+ 支持綁入已存在的 automation。receipt 是主控對工具結果的具名聲明,腳本驗格式/綁定/雜湊,
75
+ 不自行查 app;輸出明示 caller-attested,不宣稱獨立確認排程。註冊不等於 delivered。
76
+
77
+ ## 排程回合接續驗收
78
+
79
+ ```bash
80
+ $PY "$SCRIPT" poll "${BIND[@]}"
81
+ ```
82
+
83
+ 僅 registered、未過期的工作會得到 events。pending/closed 不領取,expired 要求停用。
84
+ 每事件含 event_key、job_id、exit_code、claim_token、lease_until。
85
+ 空 events 不表示已完成:可能仍執行中或已有領取租約;以 needs_disable 與 errors 判斷。
86
+ poll 預設租約 900 秒,可用 `--lease-seconds` 調整至最多一天;有效租約期間第二次 poll 不重複領取。
87
+ 租約過期可以重播且換 token,舊 token 失效。工作內容從未作為可執行通知提示。
88
+
89
+ ```bash
90
+ $PY "$SCRIPT" ack-delivered "${BIND[@]}" --event-key EVENT_KEY --claim-token CLAIM_TOKEN
91
+ # 主控現在讀相關產物、執行原任務驗證,再留下精簡證據檔。
92
+ $PY "$SCRIPT" ack-accepted "${BIND[@]}" --event-key EVENT_KEY --claim-token CLAIM_TOKEN \
93
+ --result PASS --evidence /absolute/verification-evidence.md
94
+ ```
95
+
96
+ result 支援 PASS/FAIL/PARTIAL/BLOCKED;非零工作退出碼也可送達並驗收為 FAIL。
97
+ accepted 表示主控已作驗收判定,**不是固定等同 PASS**。沒有 delivered 就拒絕 accepted。
98
+ 同一租約內相同 acknowledgement 可重試;驗收結果或證據衝突被拒絕。
99
+ binding 或終態退出碼在 poll 後改動,ack 也會拒絕。
100
+
101
+ ## 停用
102
+
103
+ 所有登錄工作均已作驗收判定時,poll 回 needs_disable=true。
104
+ 主控先以 automation_update 停用現有 heartbeat,工具確認後寫同樣綁定、status=PAUSED 的 receipt:
105
+
106
+ ```bash
107
+ $PY "$SCRIPT" closed "${BIND[@]}" --automation-id AUTOMATION_ID \
108
+ --evidence /absolute/paused-receipt.json
109
+ ```
110
+
111
+ 未驗收完的使用者停止用 `--close-reason stopped`;真正到期用 `--close-reason expired`。
112
+ 預設 completed 會檢查所有工作已判定。closed 命令本身不會停用 app 排程。
113
+ 使用者先前的停止/重開機要求與新一輪授權仍由主控處理,不自動延長期限。
114
+
115
+ ## 資料與限制
116
+
117
+ - 僅讀 CLI 的 `meta.json` 以及 `exit`;不讀 inbox tail、out.txt、events、task、native.json、Codex 私人對話。
118
+ - 凍結 metadata 的 lane/vendor/model/mode/workdir/foreman_session/started;忽略其他可變欄位,不因 finished 更新誤拒。
119
+ - native 工作明確拒絕,使用原生完成通道;後續可接獨立公共終態 receipt,不應掃描 private native state。
120
+ - 儲存於 `~/.omnilane/wakeups`,目錄 0700、檔案 0600,拒絕 symlink、非檔案、不同擁有者及超大紀錄。
121
+ - 核心鎖使用 flock,程序結束自動釋放;registry 以同目錄暫存檔及原子替換發布。
122
+ - 至少一次交付與冪等驗收,不宣稱 exactly-once;租約期間不得啟動第二份驗收。
123
+ - 一個 controller registry 最多 100 個工作;metadata 綁定錯誤會出 errors,不默默接受替代工作。
124
+ - 待真實排程回合在同主控任務送達、產物驗收、停止確認後,才可聲稱端到端 PASS。
125
+
126
+ 驗證命令(從 repo 根目錄執行):`python3 -m unittest discover -s tests -p test_completion_wakeup.py`。
@@ -0,0 +1,380 @@
1
+ # Model capabilities — September 2026 snapshot
2
+
3
+ External records are dated per section. The 2026-09-05 decision below is the
4
+ current basis for `routing.yaml`; the earlier 2026-09-02 v4.1.1-era snapshot is
5
+ kept as historical evidence rather than relabelled as v4.2.
6
+
7
+ ## Current routing decision — 2026-09-05
8
+
9
+ ### Comparable evidence and limits
10
+
11
+ - **AA Intelligence Index v4.2, same-condition comparison:** Claude Fable 5.1
12
+ scored 57 at max and 54 at xhigh; GPT-6 Astra scored 55 at max and 54 at
13
+ xhigh. Retrieved 2026-09-05 from the AA Fable/Astra comparison.
14
+ - **AA Briefcase:** Fable/Astra scored 1666/1566 at max and 1657/1540 at
15
+ xhigh. Retrieved 2026-09-05.
16
+ - **Native coding-agent comparison:** Fable max completed 70 at $9.18/task in
17
+ 24 minutes; Astra max completed 67 at $4.72/task in 26.8 minutes. Sol high
18
+ completed 64 at $3/task in 6.2 minutes; Luna high completed 52 at $0.18/task
19
+ in 5.7 minutes. Retrieved 2026-09-05.
20
+ - **Flash native-agent rows:** Antigravity SDK Gemini 3.8 Flash medium
21
+ completed 59.09 at $2.009/task in 7.63 minutes; OpenCode Gemini 3.8
22
+ Flash high completed 61.15 at $2.038/task in 11.85 minutes. They are
23
+ different harness/model-effort rows, so neither is evidence that one
24
+ generation or effort is categorically faster. The separate 2026-09-02
25
+ Flash article uses AA v4.1.1; its per-task time/cost can guide an effort
26
+ choice, but its aggregate score is not compared directly with v4.2 totals.
27
+ Flash 3.8 high also costs about 40% more per task than 3.7 high in that
28
+ article, so the refresh does not claim every 3.8 configuration is cheaper.
29
+ - **Capability boundaries:** UI taste has no matching benchmark here; one
30
+ million tokens of context does not establish long-context task quality;
31
+ Grok Build comparison data still names 4.5 high and is not represented as a
32
+ Grok 4.6 runtime result; Qwen scores from another harness do not establish
33
+ that this repository's Qwen CLI alias is equivalent.
34
+
35
+ Sources: [Fable 5.1 vs Astra v4.2](https://artificialanalysis.ai/models/releases/comparisons/gpt-6-astra-vs-claude-fable-5-1),
36
+ [AA Briefcase](https://artificialanalysis.ai/evaluations/aa-briefcase),
37
+ [native Claude Code vs Codex](https://artificialanalysis.ai/agents/coding-agents/comparisons/claude-code-vs-codex),
38
+ [native Antigravity vs Claude Code](https://artificialanalysis.ai/agents/coding-agents/comparisons/antigravity-sdk-vs-claude-code), and
39
+ [Gemini 3.8 Flash article](https://artificialanalysis.ai/articles/gemini-3-8-flash).
40
+
41
+ ### Full-roster v4.2 check — 2026-09-05
42
+
43
+ The public leaderboard was extracted as 643 unique model/configuration rows and
44
+ identified itself as AA Intelligence Index v4.2. The machine-readable inventory
45
+ is [`aa-model-coverage-2026-09-05.json`](aa-model-coverage-2026-09-05.json).
46
+ An AA slug is evidence identity, not a CLI/API model ID.
47
+
48
+ | Current/relevant row | Intel | Agentic | Coding | AA-LCR v1.1 | Accuracy | Hallucination rate | 7:2:1 $/M tokens | tok/s | TTFA s |
49
+ |---|---:|---:|---:|---:|---:|---:|---:|---:|---:|
50
+ | Claude Opus 5 high | 52.03 | 52.91 | 76.52 | .79 | 58.9% | 61.2% | $3.85 | 53.4 | 19.5 |
51
+ | Claude Opus 5 xhigh | 53.37 | 55.67 | 77.00 | .8033 | 59.5% | 59.5% | $3.85 | 54.5 | 33.8 |
52
+ | Claude Sonnet 5 high | n/a | n/a | n/a | n/a | n/a | n/a | $1.54 | 69.4 | 11.0 |
53
+ | Claude Sonnet 5 max | 45.11 | 44.53 | 71.55 | .82 | 40.1% | 39.4% | $1.54 | 75.0 | 203.7 |
54
+ | Claude Haiku 4.5 reasoning | 22.46 | 10.43 | 43.89 | .74 | 18.0% | 27.3% | $0.77 | 94.2 | 20.2 |
55
+ | Claude Haiku 4.5 non-reasoning | 17.36 | n/a | n/a | .50 | 14.4% | 25.7% | $0.77 | 82.8 | 0.8 |
56
+ | GPT-5.6 Sol high | 48.30 | 44.95 | 77.16 | .82 | 58.4% | 91.2% | $3.08 | 71.9 | 13.8 |
57
+ | GPT-5.6 Terra max | 46.77 | 43.94 | 76.66 | .83 | 46.8% | 87.9% | $1.74 | 111.4 | 168.8 |
58
+ | GPT-5.6 Luna high | 37.36 | 35.85 | 63.34 | .80 | 41.8% | 92.4% | $0.174 | 123.1 | 19.7 |
59
+ | GPT-5.6 Luna medium | 30.19 | 25.49 | 50.73 | .75 | 40.7% | 90.9% | $0.174 | 107.1 | 3.0 |
60
+
61
+ `lcr` is AA-LCR v1.1; it is not `mlcrOverall`. AA's hallucination rate is
62
+ `incorrect / (incorrect + partial + not attempted)`, not a general error rate,
63
+ so accuracy is shown beside it. Null leaderboard cells remain `n/a`.
64
+
65
+ This current snapshot changes the role explanation, not the 12 product chains:
66
+
67
+ - **Fable 5.1 max** remains the quality-first controller recommendation.
68
+ - **Opus 5 high/xhigh** is the balanced controller and independent-review
69
+ option. Opus high slightly exceeds Fable high on current Intel (52.03 vs
70
+ 51.67) and has lower AA hallucination rate (61.2% vs 68.8%). A separate
71
+ native-agent result put Opus xhigh at 68.15 and Astra max at 66.97, but that
72
+ is a different harness and is not used as a same-condition ordering claim.
73
+ - **Astra** remains the existing-Codex-quota controller backup, independent
74
+ reviewer, and coding-oriented hard-work choice.
75
+ - **Sol high** stays on bulk/UI: native-agent 64.12 / $3 / 6.17m versus Sol
76
+ xhigh 63.34 / $3.74 / 7.34m. Sol xhigh still has an explicit difficult-repo
77
+ role because its DeepSWE result (66.96%) exceeds high (64.90%); high does not
78
+ dominate every subtest.
79
+ - **Terra max** remains the long-context fallback (LCR .83 versus Flash 3.8
80
+ Medium .84), not a controller promotion.
81
+ - **Luna high** remains triage primary / fast-agentic fallback. Luna medium is
82
+ an explicit low-cost-family first-pass option with a quality gate, not a new
83
+ default.
84
+ - **Sonnet high** remains a bulk/search fallback. Sonnet max's current score,
85
+ low hallucination rate and high latency do not prove the unscored high row.
86
+ - **Haiku 4.5** remains simple triage/fast fallback. Its lower hallucination
87
+ rate must be read with its low accuracy and absent native-agent comparison.
88
+
89
+ No current measurement supports saying Gemini 3.8 Flash is categorically
90
+ faster than 3.7. Low/medium/high encode intended operating points; the route
91
+ uses them without a cross-generation speed claim.
92
+
93
+ ### Explicit candidates outside the default chains
94
+
95
+ The public leaderboard also contains GLM-5.3 max (Intel 48.58), DeepSeek V4 Pro
96
+ 0813 max (42.11), DeepSeek V4 Flash 0731 max (40.84), and Mistral Medium 3.5
97
+ (22.66). Their official IDs are exposed for **explicit advise-only** use where
98
+ the repository has that API adapter; they are not work/default candidates.
99
+ GLM-5.3 is reasoning-only (`low`/`high`/`max`, default `max`), and equality to
100
+ AA max remains unverified until the adapter is shown to propagate thinking and
101
+ effort. Muse Spark 1.3 and GLM-5.3-Flash remain `runtime-gap`: leaderboard
102
+ scores do not establish a local executable ID.
103
+
104
+ Kimi K3 has AA-LCR v1.1 of 88.67%, so it is documented as a named long-context
105
+ candidate. Local Kimi CLI prompt/context transport limits have not been verified,
106
+ therefore it does not replace the current long-context default or fallbacks.
107
+
108
+ ### Product defaults: old → new
109
+
110
+ | Lane | Previous first/chain | 2026-09-06 first/chain | Decision boundary |
111
+ |---|---|---|---|
112
+ | hardest-coding | Fable 5.1 xhigh → Sol xhigh → Grok 4.6 → Flash 3.7 high | Fable 5.1 max → Astra xhigh → Grok 4.6 → Flash 3.8 high | Correctness-first same-condition and native coding evidence |
113
+ | bulk-mechanical | Sol high → Flash 3.7 high → Sonnet 5 high | Sol high → Flash 3.8 high → Sonnet 5 high | Keep proven migration/endurance first choice; refresh Flash fallback |
114
+ | triage | Luna high → Flash 3.7 low → Haiku 4.5 | Luna high → Flash 3.8 low → Haiku 4.5 | Keep cheap first-pass route; refresh Flash fallback |
115
+ | hard-judgment | Opus 5 xhigh → Sol max → Grok 4.6 | Fable 5.1 xhigh → Astra xhigh → Grok 4.6 | Strongest current judgment rows; this is not a controller selector |
116
+ | taste-final | Fable 5.1 high → Sol max → Grok 4.6 → Flash 3.7 high | Fable 5.1 xhigh → Astra xhigh → Grok 4.6 → Flash 3.8 high | General-quality ordering with an explicit no-aesthetic-benchmark caveat |
117
+ | consult | Sol max → Fable 5.1 high → Grok 4.6 → Flash 3.7 high | Astra xhigh → Fable 5.1 xhigh → Grok 4.6 → Flash 3.8 medium | Four-vendor explicit consultation; `--vendor` still pins family |
118
+ | ui-draft | Sol xhigh → Fable 5.1 high → Flash 3.7 high | Sol high → Fable 5.1 xhigh → Flash 3.8 high | Native high is faster/cheaper than xhigh here; references remain required |
119
+ | long-context | Flash 3.7 medium → Terra max → Opus 5 medium | Flash 3.8 medium → Terra max → Opus 5 medium | No same-task reason to replace Terra/Opus fallbacks |
120
+ | fast-agentic | Flash 3.7 medium → Luna high → Haiku 4.5 | Flash 3.8 low → Luna high → Haiku 4.5 | Low is the intended latency operating point; no cross-generation speed claim |
121
+ | live-search | Grok 4.6 → Flash 3.7 high → Sonnet 5 high → off | Grok 4.6 → Flash 3.8 high → Sonnet 5 high → off | Preserve native X first; backups are generic web search |
122
+ | coding-overflow | Grok 4.6 → Flash 3.7 high → Kimi K3 → Qwen3 Coder Plus → OpenCode → off | Grok 4.6 → Flash 3.8 high → Kimi K3 → Qwen3 Coder Plus → OpenCode → off | Explicit quota relief; preserve supported non-Codex vendors and aliases |
123
+ | arbitrate | off | off | Opt-in only; each voter and round consumes quota |
124
+
125
+ **2026-09-06 effort policy:** Astra defaults to `xhigh` in hardest-coding and
126
+ hard-judgment, including their Codex fallbacks; explicitly request
127
+ `--vendor codex --effort max` when needed. The dated AA v4.2 non-estimated
128
+ rows put xhigh at 54.31 and $1.8473/task versus max at 54.66 and
129
+ $2.5673/task. These are benchmark API costs, not demonstrated CLI subscription
130
+ quota savings or a guarantee for individual tasks. Vendor order, Claude efforts,
131
+ Sol high, Luna high, and Gemini/Grok routes remain unchanged. No automatic
132
+ risk classifier, retry escalation, or new paid API route is introduced.
133
+
134
+ `voter_spec` is a separate model table: Astra xhigh, Fable 5.1 xhigh,
135
+ Flash 3.8 medium, and Grok 4.6 back the same four voters. It does not add
136
+ voters or rounds. Fable max is the quality-first prompt-level controller,
137
+ Opus high/xhigh is the balanced controller/independent-review option, and Astra
138
+ is the existing-Codex-quota backup/reviewer; controller remains a role, not a
139
+ lane or automatic selection table.
140
+
141
+ ### Runtime-gate status
142
+
143
+ - Codex CLI 0.153.4 app-server `model/list` returned `gpt-6-astra` as visible,
144
+ default effort medium, with low/medium/high/xhigh/max/ultra available; stdin
145
+ remained open through the response and EOF exited 0. A subscription-CLI
146
+ generation with `gpt-6-astra` max returned the exact nonce and exited 0.
147
+ - Claude Fable 5.1 already existed in the local catalog and had prior real
148
+ dispatch evidence listed in the historical runtime table below.
149
+ - Antigravity CLI 1.1.27 advertises the exact IDs
150
+ `gemini-3.8-flash-high`, `gemini-3.8-flash-medium`, and
151
+ `gemini-3.8-flash-low`. A high-ID generation reported
152
+ `init.model=gemini-3.8-flash-high` and returned the exact nonce. The command
153
+ resolved to resident `session_mode=live`; it was manually terminated after
154
+ the result instead of being closed through its mailbox, so `exit=143` is not
155
+ treated as a provider or model failure and is not a lifecycle acceptance
156
+ result. Medium/low rely on model-list plus offline exact-ID routing tests.
157
+
158
+ ## Historical 2026-09-02 evidence
159
+
160
+ ## A. Sources and method
161
+
162
+ - **Artificial Analysis (AA):** per-configuration flight records from
163
+ `artificialanalysis.ai/models/claude-fable-5-1` and the corresponding model
164
+ records, retrieved 2026-09-02.
165
+ - **`$/task`:** AA Intelligence-Index cost per task, reconstructed as the sum
166
+ of the nine evaluation components' `weightedCostPerTask` values.
167
+ - **Coding Index:** Terminal-Bench v2.1 × ⅔ + SciCode × ⅓.
168
+ - **Base slugs:** Sol, Terra, Luna, Kimi K3, and Claude resolve to their maximum
169
+ effort rows; Grok 4.6 and Gemini Flash resolve to high; Gemini 3.1 Pro Preview
170
+ has no effort label. Fable 5.1 rows are AA's “Default Fallback” composite.
171
+ - **Runtime caveats:** `run-grok.sh` ignores effort, so the AA effort row
172
+ reproduced by the CLI is unknown. AA `deprecated` is a dataset flag and
173
+ does not mean a model ID is retired from a CLI.
174
+ - **Cross-checks:** Anthropic's Fable 5.1 announcement table (2026-09-01) and
175
+ Google's Gemini 3.7 Flash launch post (2026-08-13), both retrieved 2026-09-02.
176
+
177
+ ### First-party pricing context
178
+
179
+ | Model | Input / output per million tokens | Cache-hit input | Pricing note |
180
+ |---|---:|---:|---|
181
+ | Claude Fable 5.1 | $10 / $50 | $0.25 (0.025×) | Standard price, retrieved 2026-09-02 |
182
+ | Claude Opus 5 | $5 / $25 | $0.50 | Standard price, retrieved 2026-09-02 |
183
+ | Gemini 3.7 Flash | $0.75 / $3.75 | — | Introductory through 2026-12-31; then $1.50 / $7.50 |
184
+ | GPT-5.6 Sol | OpenAI Codex rate card | — | Promotional pricing through at least 2026-11-21 |
185
+
186
+ AA cost per task does not model cache-hit pricing. Subscription CLI quota is a
187
+ separate operational constraint from API dollars.
188
+
189
+ ## B. Candidate configurations
190
+
191
+ All rows were retrieved 2026-09-02.
192
+
193
+ | Config | Intel | Agentic | Coding | LCR | Omni | Halluc | GDPval | $/task | tok/s | TTFA s |
194
+ |---|---|---|---|---|---|---|---|---|---|---|
195
+ | Claude Fable 5.1 (max) | 65.7 | 61.3 | 81.6 | .80 | 43.5 | .73 | 1853 | 3.689 | 66 | 157 |
196
+ | Claude Fable 5.1 (xhigh) | 64.8 | 59.8 | 80.7 | .78 | 42.4 | .71 | 1835 | 2.651 | 59 | 42 |
197
+ | Claude Fable 5.1 (high) | 62.5 | 55.8 | 79.1 | .77 | 40.8 | .69 | 1743 | 1.430 | 48 | 7.6 |
198
+ | Claude Fable 5.1 (medium) | 60.5 | 52.7 | 77.1 | .79 | 37.6 | .69 | 1670 | 1.001 | 48 | 4.8 |
199
+ | Claude Fable 5.1 (low) | 58.1 | 49.2 | 75.2 | .79 | 34.1 | .66 | 1587 | 0.774 | 56 | 5.7 |
200
+ | Claude Opus 5 (max) | 63.1 | 59.2 | 78.0 | .76 | 37.1 | .61 | 1824 | 2.337 | 54 | 35 |
201
+ | Claude Opus 5 (xhigh) | 62.5 | 58.4 | 77.0 | .76 | 35.4 | .60 | 1797 | 1.801 | 52 | 25 |
202
+ | Claude Opus 5 (high) | 61.5 | 56.1 | 76.5 | .76 | 33.7 | .61 | 1719 | 1.227 | 48 | 13 |
203
+ | Claude Opus 5 (medium) | 58.6 | 50.4 | 74.3 | .79 | 31.0 | .61 | 1613 | 0.724 | 48 | 6.0 |
204
+ | Claude Opus 5 (low) | 52.5 | 42.1 | 66.9 | .77 | 28.6 | .62 | 1454 | 0.425 | 49 | 3.1 |
205
+ | Claude Sonnet 5 (max) | 55.3 | 49.7 | 71.5 | .77 | 16.4 | .39 | 1584 | 1.717 | 72 | 134 |
206
+ | Claude Sonnet 5 (high) | n/a | n/a | n/a | n/a | n/a | n/a | 1397 | n/a | 61 | 7.0 |
207
+ | Claude Haiku 4.5 (reasoning) | 29.9 | 16.5 | 43.9 | .74 | -4.4 | .27 | 915 | 0.217 | 92 | 9.9 |
208
+ | GPT-5.6 Sol (max) | 60.9 | 57.8 | 77.4 | .78 | 22.0 | .92 | 1710 | 0.953 | 75 | 99 |
209
+ | GPT-5.6 Sol (xhigh) | 59.0 | 53.6 | 78.3 | .76 | 21.0 | .92 | 1672 | 0.628 | 77 | 30 |
210
+ | GPT-5.6 Sol (high) | 57.3 | 50.6 | 77.2 | .75 | 20.4 | .91 | 1616 | 0.427 | 76 | 15 |
211
+ | GPT-5.6 Sol (medium) | 55.6 | 47.9 | 76.3 | .74 | 19.4 | .91 | 1543 | 0.290 | 71 | 6.1 |
212
+ | GPT-5.6 Terra (max) | 56.6 | 50.2 | 76.7 | .80 | 0.1 | .88 | 1566 | 0.526 | 105 | 104 |
213
+ | GPT-5.6 Terra (xhigh) | 52.8 | 46.5 | 70.6 | .75 | -3.0 | .89 | 1563 | 0.318 | 88 | 19 |
214
+ | GPT-5.6 Luna (max) | 52.3 | 46.9 | 71.4 | .78 | -10.3 | .93 | 1569 | 0.049 | 128 | 101 |
215
+ | GPT-5.6 Luna (xhigh) | 50.1 | 44.4 | 68.6 | .73 | -10.8 | .92 | 1515 | 0.033 | 120 | 41 |
216
+ | GPT-5.6 Luna (high) | 47.0 | 41.0 | 63.3 | .74 | -12.0 | .92 | 1457 | 0.022 | 120 | 11 |
217
+ | GPT-5.6 Luna (medium) | 38.9 | 31.8 | 50.7 | .72 | -13.2 | .91 | 1269 | 0.012 | 115 | 2.5 |
218
+ | Gemini 3.7 Flash (High) | 56.0 | 45.1 | 76.1 | .80 | 26.5 | .65 | 1516 | 0.402 | 285 | 7.0 |
219
+ | Gemini 3.7 Flash (Medium) | 53.4 | 45.1 | 71.5 | .81 | 23.7 | .66 | 1492 | 0.263 | 282 | 5.4 |
220
+ | Gemini 3.7 Flash (Low) | 50.9 | 41.6 | 71.0 | .78 | 22.1 | .68 | 1446 | 0.165 | 292 | 1.0 |
221
+ | Gemini 3.6 Flash (High) | 51.6 | 40.5 | 69.2 | .79 | 22.1 | .56 | 1414 | 0.344 | 167 | 14 |
222
+ | Gemini 3.1 Pro Preview | 47.7 | 23.0 | 68.8 | .79 | 31.9 | .51 | 965 | 0.335 | 103 | 25 |
223
+ | Grok 4.6 (high, base) | 60.9 | 58.7 | 76.8 | .75 | 30.5 | .34 | 1730 | 0.937 | 53 | 38 |
224
+ | Grok 4.6 (xhigh) | 60.0 | 56.6 | 75.9 | .76 | 29.3 | .24 | 1755 | 1.230 | 57 | 45 |
225
+ | Grok 4.6 (low) | 51.7 | 47.8 | 66.3 | .79 | 25.9 | .31 | 1552 | 0.255 | 53 | 4.2 |
226
+ | Kimi K3 (max) | 59.7 | 54.3 | 76.2 | .83 | 19.7 | .53 | 1668 | 0.837 | 38 | 53 |
227
+ | Qwen3.8-Flash-Next (no CLI here) | 55.8 | 56.4 | 73.1 | .77 | -9.7 | .45 | 1743 | 0.097 | 89 | 25 |
228
+ | DeepSeek V4 Flash 0731 | 51.8 | 48.4 | 69.1 | .74 | -14.3 | .92 | 1547 | 0.112 | 108 | 20 |
229
+
230
+ Halluc is AA hallucination rate (lower is better). Omni is AA Omniscience.
231
+ TTFA is median time to first answer token in seconds. MMMU-Pro where measured:
232
+ Opus 5 high 0.82, Sol xhigh 0.83, Gemini 3.7 Flash 0.85; Fable 5.1 has not
233
+ been measured.
234
+
235
+ ## C. Per-lane decisions
236
+
237
+ All comparisons were retrieved 2026-09-02.
238
+
239
+ | Lane | Criterion | Previous | New | Deciding figures |
240
+ |---|---|---|---|---|
241
+ | hardest-coding | Coding capability | Fable 5.1 xhigh → Sol xhigh | Fable 5.1 xhigh → Sol xhigh → Grok 4.6 → Gemini 3.7 Flash (High) | Fable leads Sol on Terminal-Bench 91.0 vs 89.5 and SciCode 60.1 vs 56.0. Anthropic also puts Fable above Opus on Terminal-Bench 4.0 and CursorBench; Sol's coding component costs about one sixth as much. Fallback-depth pass: Grok (Coding 76.8, hallucination .34) and Flash High (Coding 76.1 at .402/task) keep the lane alive when neither subscription is reachable. |
242
+ | bulk-mechanical | Endurance per dollar | Terra max → Sonnet high → Gemini 3.6 Flash High | Sol high → Gemini 3.7 Flash High → Sonnet high | Sol beats Terra on Intel 57.3/56.6, Agentic 50.6/50.2, Coding 77.2/76.7, $/task .427/.526, and TTFA 15/104. Flash 3.7 beats 3.6 on Intel 56.0/51.6, Agentic 45.1/40.5, Coding 76.1/69.2, throughput 285/167, and TTFA 7/14; its introductory token price is half. Sonnet high remains because per-effort index data are missing and Opus consumes several times more subscription quota per turn. |
243
+ | triage | Cost per task at usable intelligence | Luna medium → Gemini 3.6 Flash Low → Haiku | Luna high → Gemini 3.7 Flash Low → Haiku | Luna high gains 8.1 Intel points (47.0 vs 38.9) for about one extra cent per task (.022 vs .012). Flash Low moves to the current generation; Haiku remains the cheapest Claude row. |
244
+ | hard-judgment | Agentic knowledge work per cost | Fable 5.1 xhigh → Sol max → Grok 4.6 | Opus 5 xhigh → Sol max → Grok 4.6 | Opus xhigh returns 97.7% of Fable xhigh's Agentic score (58.4/59.8) at 68% of the cost (1.801/2.651 per task) and a lower hallucination rate (.60/.71). Grok's Agentic 58.7 is near Sol's 57.8 and its .34 hallucination rate is much lower than Sol's .92, but its effective CLI effort is unknown. |
245
+ | taste-final | Prose and polish | Fable 5.1 high → Sol max | Fable 5.1 high → Sol max → Grok 4.6 → Gemini 3.7 Flash (High) | At the same effort Fable leads Opus high on Intel 62.5/61.5 and Omni 40.8/33.7 for about 17% more per task (1.430/1.227); Opus retained the lower hallucination rate, .61 vs .69. Fallback-depth pass: Grok matches Sol's Intel (60.9) with far better Omni (30.5 vs 22.0) and hallucination rate (.34 vs .92); Flash High closes out the lane at Intel 56.0 and .402/task. |
246
+ | consult | Named-model direct question | Sol max → Opus high → Grok → Gemini 3.1 Pro High | Sol max → Fable 5.1 high → Grok → Gemini 3.7 Flash High | The Claude slot becomes the strongest current Claude. Flash beats 3.1 Pro on Intel 56.0/47.7, Agentic 45.1/23.0, and Coding 76.1/68.8; Pro retains only Omni, 31.9/26.5. |
247
+ | ui-draft | Coding and measured multimodality with references | Sol xhigh → Fable 5.1 high | Sol xhigh → Fable 5.1 high → Gemini 3.7 Flash (High) | Fable high beats Opus high, the prior fallback, on Intel 62.5/61.5 and Coding 79.1/76.5. MMMU-Pro is unmeasured for Fable; measured rows are Opus high .82, Sol xhigh .83, and Flash .85. Fallback-depth pass: Flash High holds the highest measured MMMU-Pro (.85) among the shipped candidates and is the cheapest, keeping the lane alive as a third option. |
248
+ | long-context | AA-LCR, then secondary axes | Gemini 3.1 Pro High → Sol high → Opus high | Gemini 3.7 Flash Medium → Terra max → Opus medium | Flash edges Pro on LCR .81/.79 inside AA's 10k–100k caveat, with Intel 53.4/47.7, $/task .263/.335, and throughput 282/103. Terra's .80 replaces Sol high's .75. Opus medium matches Fable medium at .79 LCR for .724 vs 1.001 per task. |
249
+ | fast-agentic | Interactive multi-step latency | Gemini 3.7 Flash Medium → Luna high | Gemini 3.7 Flash Medium → Luna high → Claude Haiku 4.5 | Luna max has Agentic 46.9 vs Flash 45.1, but TTFA is 101 vs 5.4 seconds and throughput 128 vs 282 tok/s. Luna high is the Codex fallback on TTFA, 11 seconds vs xhigh's 41. Fallback-depth pass: Haiku adds a third, low-latency Claude candidate at TTFA 9.9s and .217/task. |
250
+ | live-search | Native live X/web access | Grok 4.6 → off | Grok 4.6 → Gemini 3.7 Flash (High) → Claude Sonnet 5 (high) → off | The lane is still defined by Grok's native live-search surface rather than an AA score. Fallback-depth pass: Flash High and Sonnet are not native X/live-search candidates — they fall back to their own web-search tools, a strictly weaker but non-zero substitute, so a missing Grok CLI no longer strands the lane. |
251
+ | coding-overflow | Coding value outside Codex | Grok 4.6 → Kimi → Qwen → OpenCode → off | Grok 4.6 → Gemini 3.7 Flash High → Kimi → Qwen → OpenCode → off | Flash Coding 76.1 is near Grok's 76.8 at .402 vs .937 per task. Grok's .34 hallucination rate is roughly a third of Opus max's .61 and well under half of Fable max's .73. Qwen3.8-Flash-Next has Coding 73.1, Agentic 56.4, and .097/task; re-evaluate when a Qwen CLI makes its alias testable. |
252
+ | arbitrate | Explicit multi-model vote | off | off | Unchanged; the quota-multiplying panel remains opt-in. |
253
+
254
+ **2026-09-03 decisions (Vincent).** Value rule: the published table stays
255
+ capability-correct on the AA data above, but where two configurations sit
256
+ close on a lane's own criterion, the cheaper one wins — the deciding factor
257
+ behind the hard-judgment swap to Opus 5. Fallback-depth rule: every active
258
+ lane (`arbitrate` intentionally excluded) now carries at least three vendor
259
+ candidates, so a single missing CLI cannot strand it — the reason
260
+ hardest-coding, taste-final, ui-draft, fast-agentic, and live-search each
261
+ gained new fallbacks in this pass.
262
+
263
+ ## D. First-party cross-checks
264
+
265
+ Both vendor tables were retrieved 2026-09-02.
266
+
267
+ ### Anthropic Fable 5.1 announcement
268
+
269
+ | Benchmark | Fable 5.1 | Opus 5 |
270
+ |---|---:|---:|
271
+ | Terminal-Bench 4.0 | 55.8% | 52.3% |
272
+ | GDPval-AA v2 | 1853 | 1824 |
273
+ | OSWorld 2.0 strict | 41.7% | 39.6% |
274
+ | AutomationBench | 31.4% | 26.9% |
275
+ | CursorBench 3.2.0 | 73.4% | 70.0% |
276
+ | HLE with tools | 65.0% | 63.6% |
277
+
278
+ ### Google Gemini 3.7 Flash launch post
279
+
280
+ | Benchmark | Gemini 3.7 Flash | Gemini 3.6 Flash |
281
+ |---|---:|---:|
282
+ | FrontierCode 1.1 | 43.6% | 34.4% |
283
+ | DeepSWE v1.1 | 65.3% | 49.0% |
284
+ | AutomationBench | 30.4% | 17.0% |
285
+ | GDP.pdf | 34.0% | 22.0% |
286
+ | WebDev Arena Elo | 1588 | 1538 |
287
+
288
+ ## E. Runtime gate
289
+
290
+ Each model newly entering a default lane was dispatched for real on 2026-09-02
291
+ and returned `rc=0`.
292
+
293
+ | Model/config | Runtime evidence |
294
+ |---|---|
295
+ | `claude-fable-5-1` | `20260902-115824-88685-16859`, `rc=0` |
296
+ | `Gemini 3.7 Flash (High)` | `20260902-123741-49851-14429`, `rc=0` |
297
+ | `Gemini 3.7 Flash (Medium)` | `20260902-132038-76075-22911`, `rc=0` |
298
+ | `gpt-5.6-luna high` | real dispatch, `rc=0` |
299
+
300
+
301
+ ## F. Mode runtime gate (2026-09-06)
302
+
303
+ Model selection and a successful provider response do not establish mode-policy
304
+ correctness. The table records dated runtime evidence and known platform or
305
+ coverage limits. Final source-freeze and release-test results belong to the
306
+ release evidence report, not to a prospective runtime claim.
307
+
308
+ | Vendor | Verified scope | Known limitations / evidence boundary |
309
+ |---|---|---|
310
+ | Codex | Three-mode real checks; same local endpoint network negative control; live close leaves zero tracked descendants and preserves an unrelated process | These tested native/session controls do not establish every tool or workload |
311
+ | Claude | Three-mode real checks using explicitly approved Opus; two-turn live close and latest-result recovery; work-local temporary directory | Fable quota-limited attempt is not reclassified as a pass; the actual model-specific acceptance used Opus |
312
+ | Agy 1.1.27 | Native isolated settings; prior advise actual search and sysops checks. Product work new/resume passed read/write, partial edit, synchronous wait, C build/run, error propagation and denied outside/policy writes. Earlier native controls denied shell networking and explicit unsandboxed execution; `/tmp` workspace inside/outside controls passed. A separate real two-turn work live/FIFO check passed readback, outside-write denial and normal close | External temp/cache reads are restricted; xcrun default-cache denial warning remains despite successful C build. Native settings bytes change and omitted defaults are not proven equivalent; each start rewrites explicit policy. Complete effective SBPL remains unverified; two tested live turns do not establish arbitrary long-running or asynchronous workloads |
313
+ | Grok 1.0.13 | Complete single-shot `plain` advise with the full tool set: real backend keyword search, an HTTP 200 official page, and a native Bash-denied write with the outside canary absent. No auxiliary-model or compatibility-hook override. Prior sysops one-shot/live checks remain separate | macOS work is still gated because child-network isolation is Linux-only. Restricted advise/work live remains unavailable. The new advise acceptance does not revalidate sysops/live or establish Linux work network isolation |
314
+
315
+ `init.agent` echoes a selector even when native selection falls back. Agy
316
+ `init.tools` lists the global registry rather than the selected agent's effective
317
+ tool set. Neither field alone proves custom policy loading. Native fallback/error
318
+ controls and real positive/negative tool checks are required.
319
+
320
+ The contract keeps model/provider networking distinct from agent-tool networking.
321
+ A local process exit of zero, unchanged files, or absence of a tool call is not a
322
+ substitute for a successful positive control and a policy-denied negative control.
323
+
324
+ An earlier selected-MD Agy attempt returned a generic pre-tool error with no tool
325
+ events; that historical failure is superseded for the following bounded work
326
+ scope, not rewritten as a successful run. The accepted product runner new/resume
327
+ checks used `view_file`, `write_to_file`, `run_command`, and `finish` with native
328
+ `commandExecutionPolicy: sandbox`, `--sandbox`, and `proceed-in-sandbox`. See the
329
+ official [subagent policy](https://www.agy.dev/docs/subagents) and
330
+ [terminal sandbox](https://www.agy.dev/docs/cli/sandbox/) interfaces.
331
+
332
+ The real checks preserved surrounding text during a partial edit, waited eight
333
+ seconds synchronously, compiled and ran a C program with exit zero, and retained
334
+ an expected failing command's exit seven. Outside, symlink, `.agents`, private-app
335
+ writes and policy-link removal returned errno 1; original probe hashes stayed
336
+ unchanged. Earlier native controls also denied eight external temp/cache write
337
+ canaries, shell networking (zero local-listener connections), and an explicit
338
+ unsandboxed command. A `/tmp` workspace allowed inside writes while denying an
339
+ outside sibling and `.agents` writes. These are tested boundaries, not an
340
+ exhaustive inventory of native writable roots.
341
+
342
+ Native settings omitted `allowNonWorkspaceAccess: false` and `ask: []` after a
343
+ run; their default-equivalence is unverified, so each start/resume explicitly
344
+ regenerates the policy. The tested permission rules and sandbox-enabled fields
345
+ remained identical, but settings are not claimed byte-immutable. External cache
346
+ reads are also denied; dependency caches outside the workspace may be unusable.
347
+ The successful C build still logged an xcrun default-cache denial. Workspace-local
348
+ caches and a verified empty owned policy directory remain intentionally; cleanup
349
+ checks ownership and preserves replacement directories. The 24 mode tests and
350
+ four ownership/race tests passed. Complete effective SBPL was not captured.
351
+ A subsequent single formal work live/FIFO attempt sent two messages: both
352
+ returned SUCCESS, round two read back round one, and the outside write was denied
353
+ (errno 1, canary absent). It closed normally with exit zero in 19.42 seconds;
354
+ owned links/markers and active state were removed, the empty owned directory was
355
+ retained, and product sources were unchanged. This is two-turn acceptance, not
356
+ a claim about arbitrary long-running or asynchronous workloads.
357
+ The first product fixture had a Python quoting error; the accepted evidence is
358
+ the corrected second attempt in the same workspace followed by actual resume.
359
+
360
+ The final Grok advise acceptance used the real runner and original `plain` CLI
361
+ output, not the earlier diagnostic wrappers. Native replay evidence recorded a
362
+ completed backend `WebSearch` with `action.type=search`, its query and ten source
363
+ URLs; a completed `WebFetch` read the official [Settings page](https://docs.x.ai/build/settings)
364
+ (HTTP 200, heading `Settings`); the write attempt failed with the native Bash deny
365
+ rule. A cross-host redirect was recorded separately before the successful fetch.
366
+ The run took 55.822 seconds and the runner source hash was unchanged before/after.
367
+
368
+ Two independent mechanisms were repaired: hosted search requires the internal
369
+ `web_search` selector rather than the client alias `WebSearch`, and context-mode
370
+ must not infer this MCP-denied job's readiness from another session's MCP marker.
371
+ The private readiness scope preserves hooks: a real hook control still denied an
372
+ explicitly prohibited Bash command while removing only the unavailable-MCP
373
+ redirect. Existing nonempty caller readiness overrides fail with a conflict before model
374
+ startup instead of being replaced. Five Grok-specific tests cover scope creation,
375
+ native policy retention, override conflicts, non-advise preservation and cleanup.
376
+
377
+ The [official hosted-tool gate](https://github.com/xai-org/grok-build/blob/72a61251fcffb464bcc687aeb5a998e5a98ec0c9/crates/codegen/xai-grok-agent/src/config.rs#L1348-L1356)
378
+ explains the strict selector match. That public-source revision is not asserted
379
+ to be the installed binary's identical build; the recorded real tool controls,
380
+ not source inspection alone, establish this dated acceptance.