Skip to content

pacing-guard 覆蓋面缺口:main-loop coordinator burn — PreToolUse hook 結構上看不到 fable 消耗 #24

Description

@kiki830621

Problem

Original text (使用者觀察,2026-07-07 一個 Fable 5 session 撞上限後):
「這邊不該用 fable5 吧,怎麼沒有檔下來」
「claude-hot-limit 要設」

pacing-guard 是掛在 Workflow 上的 PreToolUse hook。它結構上無法觀測 main-loop 的 token 消耗——PreToolUse hook 只在 tool 被呼叫時 fire,而 main-loop 的每個 turn 不是一次 tool invocation。所以一個 Fable 5 session 反覆做重度 coordinator 工作時,guard 擋得到 Workflow 啟動、卻擋不到 session 自己燒的 Fable 5 quota。

Type

bug(coverage gap — 結構性,非 tuning)

實證 incident

本 session(PsychQuant/logos 的 #57 round-1+2、#58、#59、#61 五輪 6-AI IDD verify)在 #61 verify 進行到一半時撞上 Fable 5 usage limit。過程中:

  1. 每一輪 verify,claude-hot-limit 的 FABLE×WORKFLOW guard 都正確 deny 了 Tier 1(pai-ensemble via Workflow——working as intended。
  2. 於是 fallback 到 Tier 3 manual Agent fan-out(5 個 reviewer + codex-call),加上 main-loop coordinator(session 本身)被 idle-notification 反覆喚醒,每次讀 8–13 KB findings 檔、render master report、merge。
  3. 五輪累積下來,quota 由 main-loop + Agent fan-out 兩條 guard-看不見的路徑燒完。

「怎麼沒擋下來」的答案:guard 擋掉 Workflow 之後,工作沒有消失,只是流向 guard 看不見的 main-loop。擋掉最貴的那條路,反而把負載趕到一條完全沒有計量的路上。

根因(為什麼是結構性的)

  • PreToolUse hook 的觸發面 = tool invocation。
  • main-loop 的 token 消耗不是 tool invocation,沒有任何 hook surface 對應「assistant 即將在 Fable 5 上花 main-loop token」。
  • 因此任何以 PreToolUse-based gating 為基礎的方案都覆蓋不到這條路徑,包含把 gate 擴到 Agent(那是 fable×Workflow gate — F5/F7/F8/F10 (6-AI verify follow-up of #18) #21 F5 的範圍,另一條路)。

#21 F5 的關係(互補的兩半)

#21 F5(Agent side-door)處理的是「parallel Agent fan-out 不觸發 fable gate」——那是一個 PreToolUse 可觸及的面(你可以把 gate 擴到數 Agent blocks)。

本 issue 是互補的、更難的另一半:main-loop coordinator burn,PreToolUse hook 結構上到不了。兩者一起才構成完整的「所有 guard 看不見的 fable 消耗面」。

Scope / 可能方向(都不是 Workflow gate)

誠實邊界

這條在 PreToolUse hook 的能力範圍之外,所以它多半不是「在 pacing-guard.py 補幾行」能修的,而是要嘛歸給 rate-limit-proxy(#7 家族),要嘛降級成一條 doctrine/telemetry 的 advisory。建 issue 的目的是把這個結構性缺口明確記錄下來,避免下次又以為「guard 有裝就會擋」。

Source: 使用者於 2026-07-07 Fable 5 session 撞上限後提出(/idd-issue)。Sister 到 #21 F5(Agent side-door,PreToolUse-reachable 的另一半)、#7/#8(rate-limit-proxy,結構上正確的計量層)。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions