Problem
From verification of #8/#11/#12 by devils-advocate (MEDIUM):
「parseDumpChatToMarkdownArgs 預設 5000 失去 cap-check(隱形 invariant 變更)。
舊:let maxMessages = args["max_messages"]?.intValue ?? 5000; try validateMaxMessagesCap(maxMessages) ← 對所有 path(含 default)跑 cap
新:let maxMessages = try parseMaxMessages(args) ?? 5000 ← default 5000 跳過 cap
因 5000 < 10_000,外部行為等價;但若未來把 cap policy 改成 1_000(為了 paid-tier 限額),新使用者打 dump_chat_to_markdown 不傳 max_messages 會 silently 拉 5_000 條(超過新 cap)。
validateMaxMessagesCap 的 comment 自承「Single source of truth so a future cap policy change... propagates atomically」— 但現在 default 路徑已經繞過這個 single source。」
— Source: team:devils-advocate (logic-reviewer LOW informational also)
Type
bug (latent invariant violation)
Expected
加 belt-and-suspenders cap-check:
let maxMessages = try parseMaxMessages(args) ?? 5000
try validateMaxMessagesCap(maxMessages)
或(更好):把 default 變參數傳給 helper,讓 helper 對 default 路徑也做 cap:
internal func parseMaxMessages(_ args: [String: Value], default: Int? = nil) throws -> Int? {
if let raw = args["max_messages"] {
// explicit path — coerce + cap
...
}
if let defaultValue = `default` {
try validateMaxMessagesCap(defaultValue)
return defaultValue
}
return nil
}
Acceptance
Code Reference
Sources/CheTelegramAllMCPCore/HandlerArgs.swift:98 (default 5000 in parseDumpChatToMarkdownArgs)
Sources/CheTelegramAllMCPCore/HandlerArgs.swift:120 (validateMaxMessagesCap doc claim)
Related: #8, #13
Problem
Type
bug (latent invariant violation)
Expected
加 belt-and-suspenders cap-check:
或(更好):把 default 變參數傳給 helper,讓 helper 對 default 路徑也做 cap:
Acceptance
parseDumpChatToMarkdownArgsdefault 5000 path runs throughvalidateMaxMessagesCap[Unreleased]Fixed sectionCode Reference
Sources/CheTelegramAllMCPCore/HandlerArgs.swift:98(default 5000 in parseDumpChatToMarkdownArgs)Sources/CheTelegramAllMCPCore/HandlerArgs.swift:120(validateMaxMessagesCap doc claim)Related: #8, #13