[#642] ADR-009 裁决 (c) 收口 —— 「禁用 provider 棘轮」是假闸门 - #644
Merged
Conversation
#642 的前提「ADR-009 仍是 #639 之前的版本」不成立:PR#639 自己就改了这份 ADR (+88 行,R3–R7 全部收口在内),AC 要求的六项记载与裁决 (a)/(b)/(d) 均已在册。 逐条核对后剩下的是两处真缺口。 一、裁决 (c) 声明的闸门不存在,且它守的也不是这条路。 「以禁用 provider 棘轮(断言打包端 provider 目录不含 opencode)守死」——按 forbidden-provider 与 provider 目录集合两个方向普查全仓测试,零命中。它是被写进 ADR 与 E7 基线的一处假闸门:声明了保证,没有任何可执行判据钉住它。 即便补上,它守的也是错的层。注入面把用户自配 provider id 无条件并回硬白名单: alpha-models.ts:115-117 遍历 readUserProviderIds()(ext-config.ts:784,取 opencode.jsonc 的 provider 键,零过滤)后 enabled.push(id)。用户写一条 {"provider":{"opencode":{…}}},opencode 即进 enabled_providers, webSearchEnabled(ProviderV2.ID.opencode, …)(registry.ts:58)恒真 —— 与 4 个 keyless flag 是否被 force-0 无关。「恒为死码」是错的。 主权判决不受影响,因为保证本来就不在注册闸上:执行面撞裁决 (b) 的传输层最终闸 (ALPHA_LOCAL_WEBSEARCH_DENY,mcp-websearch.ts 的 call() 与 core 的 callMcp() 各自第一句),调用被拒且零出网。与已登记的残留同类 —— 能力真关,可见性 cosmetic。 裁决:不补棘轮(守错层),不过滤该 id(登出/BYOK 自带 Zen key 是决策 A 明示允许的 形态,过滤会误伤);(c) 从「死码 + 棘轮」降级为「注册面可达、执行面被传输闸兜住」, 按现状诚实登记。「无需为它 patch 上游 registry.ts」这一半仍成立。 二、frontmatter amended 停在 2026-07-25,而正文已含 07-26 的 R3–R7 收口段。 E7 基线按其既有的「勘破更正」体例加同一个块,并声明本稿凡出现该表述之处一律以 该块为准(§3a、票 3、票 3b、票 5 共 7 处),不逐处改写。 本地闸全绿:3077 pass / 0 fail、docs 链接闸绿。 Fixes #642 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
关
alpha-code#642(#223 的 AC6 实现票)。票的前提查错了
#642 写「ADR-009 仍是 #639 之前的版本」——不成立。
d341b208d(PR#639)自己就改了这份 ADR(+88 行,R3–R7 全部收口在内),同批还新建了 ADR-035、改了 DECISIONS.md 与 E7 基线。逐条核对 AC:六项记载(登录态门控 / 云权威 / 逃生开关跨本地+云 / force-off 全 keyless flag / 失败诚实 / 唯一回退=模型自带 search)与裁决 (a)(b)(d) 均已在册。剩下两处真缺口,本 PR 收口。
一、裁决 (c) 声明的闸门不存在,而且它守的也不是这条路
「以禁用 provider 棘轮(断言打包端 provider 目录不含
opencode)守死」——按 forbidden-provider 与「provider 目录集合」两个方向普查全仓测试,零命中。这是一处假闸门:ADR 与 E7 基线都声明了保证,却没有任何可执行判据钉住它。即便补上,它守的也是错的层:
alpha-models.ts:115-117readUserProviderIds()后enabled.push(id),零过滤ext-config.ts:784opencode.jsonc的provider键,原样返回registry.ts:58webSearchEnabled = providerID===opencode || exa || parallel用户写一条
{"provider":{"opencode":{…}}},opencode就进enabled_providers,该 OR 分支恒真 —— 与 4 个 keyless flag 是否被 force-0 无关。所以「打包端不可达 / 恒为死码」是错的。但主权判决不受影响,因为保证本来就不在注册闸上:执行面撞裁决 (b) 的传输层最终闸(
ALPHA_LOCAL_WEBSEARCH_DENY,mcp-websearch.ts的call()与packages/core/src/tool/websearch.ts的callMcp()各自第一句),调用被拒且零出网。与已登记的残留同类:能力真关,可见性是 cosmetic。裁决:不补棘轮(守错层,补了只是把假闸门换成一道守不住东西的真测试),也不过滤该 id(登出/BYOK 态自带 Zen key 是决策 A 明示允许的形态,过滤会误伤)。(c) 从「死码 + 棘轮」降级为**「注册面可达、执行面被传输闸兜住」**,按现状诚实登记。「无需为它 patch 上游
registry.ts」这一半仍成立。二、frontmatter
amended停在 2026-07-25正文已含 07-26 的 R3–R7 收口段。→
2026-07-27。E7 基线
按其既有的「勘破更正」体例(§1 那块 402 更正)加同一个块,并声明本稿凡出现该表述之处一律以该块为准(§3a、票 3、票 3b、票 5,共 7 处),不逐处改写。
顺带查出、不在本 PR 修的
#642 的 AC (d) 与 #643 的 out-of-scope/退出条件仍写着「host-tool 无 402/余额门为现状」「失败集证据无 402 项」—— 这是从 2026-07-22 的基线原文抄的,而基线自己已在 2026-07-25 更正为「402 与余额门已上线」。已按
alpha-platform现役代码复核:worker.ts:1240的webSearchHandler确有accountPreauth(:1258)与两条 402(:1254per-job 超预算、preauth 拒绝)。两张票的正文需更正,否则 #643 会照着作废的规格取错证据。已在两张票下留言。本地闸
scripts/alpha-check.sh:3077 pass / 0 fail(209 文件)scripts/check-doc-links.py <两个改动文件>:绿(0 相对链接,rc=0).claude/rules/adrs/与docs/design/,零UPSTREAM_PATHSFixes #642
🤖 Generated with Claude Code