iomgaa
|
8c642e7881
|
test(contract): 按 Codex 审查改掉五条说明型测试的名字
它们函数体是空的,名字却承诺了一个行为,读起来像「这条已经验过了」——而契约套件是新适配器
的准入标准,下游跑一遍看见绿的会以为自己那一条被验过。名字改成说清楚断言在哪一层,
函数体那段解释保持不动。
Codex 另报「测试 docstring 里出现 GovDoc 是业务词汇」,不采纳:§1.1 那道扫描挡的是领域词
(公文、超声、招标),说明一条测试被哪个消费者的需求逼出来不构成业务假设,仓库里这类引用
本来就有十几处。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-10 22:56:02 -04:00 |
|
iomgaa
|
8aa430c7df
|
test(contract): 0007 确认后关掉那三条 xfail
解释器不许抛异常是接缝自己的行为,改成正面断言(等实现接进来才跑)。另两条的答案
落在库这一侧不在接缝上:动作状态的触发条件是执行器自己的判断,套件面对任意实现逼
不出后两档,硬探会把 dissect 那种状态恒为 EXECUTED 的合法实现判成不合格;观察由谁
合成同理。两条留成不断言的说明,指向 tests/unit/test_session.py 里真正验它们的地方。
273 passed / 15 skipped / 4 xfailed。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-10 04:53:27 -04:00 |
|
iomgaa
|
a14bf8d288
|
test(contract): 落成五个接缝的契约骨架,用它逼出七个设计洞
第 ④ 阶段的核心交付物。这套测试不针对任何具体实现,写的是「不管你怎么实现
都必须满足这些行为」,下游写完自己的实现接到 fixture 上跑一遍即可,
是任何新适配器的准入标准(CLAUDE.md §0)。
现在全部跳过,因为公共类型与 Protocol 还没落地。价值不在跑,在写:
写一条契约要求把每次调用逐字写出来——方法叫什么、参数填什么、返回值怎么取,
而散文里读着通顺的地方,落到这一步就露出来了。
三轮文档评审没报出的七个洞,写这套测试时全部撞了出来:
没有动作的步 result_id 填什么;三个 ActionStatus 取值的触发条件;
动作被拒绝时观察的来源(执行器与 SyntheticObservations 两处都有);
解释器能不能抛异常;Event 没有字段所以事件出口的契约只写得出一半;
read_log 读不存在的运行必须返回空日志而不是抛异常;
以及原子性与前缀持久性这两条 0005 的承诺根本没有机器兜底——
写这套测试之前我们默认它们会被契约测试接住。
洞标成 xfail(strict=True) 而不是常驻 fail:一个永远红的套件会训练所有人忽略红。
它们都不带 fixture,否则会被「实现还没有」那个跳过挡住,
于是「答不上来」就伪装成了「还没轮到」。补上之后 XPASS 会报错,逼人回来删标记。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-09 23:37:13 -04:00 |
|