feat(tool-registry): an availability probe that reads only the exit code is half a criterion - #58
Open
JasonJarvan wants to merge 1 commit into
Open
feat(tool-registry): an availability probe that reads only the exit code is half a criterion#58JasonJarvan wants to merge 1 commit into
JasonJarvan wants to merge 1 commit into
Conversation
…ode is half a criterion
三条同一天的实测,同一形状:**能力不可用,而命令 rc=0。**
| 工具 | 命令 | rc | 正文 |
|---|---|---|---|
| multica | `multica auth status` | 0 | `Token is invalid or expired: … 401` |
| codegraph | `codegraph status` | 0 | `⚠ Not initialized` |
而注册表里那条判据原文是「`multica auth status` 通过」—— 照它探测,一个空台账会被
报成可用。不是命令写错、不是流被吞,是**判据缺了一半**:它默认成功与失败走不同出口,
而实测它们没有。
这是已落的「错误出口不得复用结论出口」的**镜像版**:那条管被测方的出口,本条管探测方
的读法。工具把两种结局塞进同一个出口时,读表方唯一的补救是读正文。
同族第二种失真:探测形态与调用形态不一致。brand-capacity 全局条目的 `invoke` 把顶层
选项写在 `{子命令}` 之前,`availability` 写在之后 —— 后者被 argparse 判为
unrecognized arguments 而 rc=2。**照 availability 跑会把一个好用的入口报成坏的。**
而该条目的 notes 里恰恰写着「探测的必须是本条 invoke 用的同一个入口形态」——
规则有了、没有执行者,于是它自己违反了它自己。
机械执行者 `validate_tool_registry_availability.py`,两条检查各守一半:
- 每条 `availability` 必须配非空 `availability_expect`,缺字段读作 unknown 不读作 ok;
- 凡某顶层选项在 `invoke` 中位于 `{…}` 之前,不得在探测文本里出现在任一子命令名之后
—— **子命令名从 invoke 自己的 `{a|b|c}` 里取,不在执行者内手列**,否则这道门自己
就是枚举式的。
它一上线就抓到造门者:修那条参数序缺陷时我把错误形式当反例原样写进了 availability,
门当场拒了那份模板。⇒ 讲坏形式的文档不得把坏形式的字面写进被扫描字段,与凭据门的
自不匹配字面是同一条纪律。已在测试里留作开火构造之一。
7 份模板补齐 `availability_expect`;门对它们 rc=0。测试 14 条,开火样例先写。
Co-Authored-By: Claude Opus 5 <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.
三条同一天的实测,同一形状:能力不可用,而命令 rc=0
multica auth statusToken is invalid or expired: … 401codegraph status⚠ Not initializedagentsview serve statusrunning at …(此例正文与码一致)注册表里那条判据原文是「
multica auth status通过」—— 照它探测,一个空台账会被报成可用。不是命令写错、不是流被吞,是判据本身缺了一半:它默认成功与失败走不同出口,而实测它们没有。这是 #54「错误出口不得复用结论出口」的镜像版:那条管被测方的出口,本条管探测方的读法。
同族第二种失真:探测形态与调用形态不一致
arborist-brand-capacity全局条目的invoke把顶层选项写在{子命令}之前,availability写在之后 —— 后者被 argparse 判为unrecognized arguments而 rc=2。⇒ 照 availability 跑,会把一个好用的入口报成坏的。而该条目
notes里恰恰写着「探测的必须是本条invoke用的同一个入口形态」。规则有了、没有执行者,于是它自己违反了它自己。机械执行者
overlay/scripts/validate_tool_registry_availability.py,两条检查各守一半:availability必须配非空availability_expect—— 缺字段读作 unknown、不读作 ok。invoke中位于{…}之前,不得在探测文本里出现在任一子命令名之后。子命令名从invoke自己的{a|b|c}里取,不在门内手列 —— 否则这道门自己就是枚举式的。命名落
validate_*.py,#55/#57 的连通性门与变异层自动收它。它一上线就抓到造门者
修参数序时我把错误形式当反例原样写进了
availability,门当场拒了那份模板。⇒ 讲坏形式的文档不得把坏形式的字面写进被扫描字段,与凭据门的自不匹配字面同一条纪律。已留作开火构造之一。破坏性说明(需要评审注意)
availability_expect是新增的必填键。adopter 现有的 tool 条目缺这个键会被本门拒。 迁移动作是给每条补一句期望正文;7 份上游模板已补齐。是否配 ADR 见评审意见。读数
/var与/private/var符号链接),另账🤖 Generated with Claude Code