任务:缺陷转用例的查重在真实规模上判得出来
缺陷转用例在真实客户端上已经交付:命令头和已有回归文档双向相同,期望结果的引文全部逐字。唯独查重一项 Hub 记为未决。用例索引视图即使只带 document,node,title 三个字段也有 14.7 MB,视图的字节预算只放得下约 45,000 个条目里的 27,102 个,所以“不重复”说不出来。包的 README 写的“裁剪后 2 至 3 MiB”是合成数据上的估计,真实规模上不成立。
查重只需要和草稿用同一组命令的已有用例比。核心的索引视图已经有 only=<取值>(只列这些键的条目),所以不改核心,改包:让绑定的索引收窄到草稿要用的命令,再让检查知道哪些草稿在收窄的范围里判得出来。
- 分支和工作树:
hub-d2c-dup,目录circle-hub-d2c-dup(依赖已装好) - 可以改的路径:
packs/workflow/defect-to-case/**、scripts/real/accept/defect-to-case*.ts及其测试。包升到 1.3.0,重签。别的路径不动;核心缺什么先回报。 - 规则:同前(不推送、不建 PR、不发布、不部署,不碰 7420、钥匙串、环境配置文件和任何真实系统;测试只用合成数据;
git commit -s)。 - 验证:
npx tsc --noEmit;node --test --test-concurrency=2 "packs/**/*.test.ts" "scripts/real/**/*.test.ts";node packs/workflow/defect-to-case/pack-files.ts --check。
要做的
- 绑定写法:
indexed_cases改为knowledge:index:<产品>:<构建>?kind=case&key=commands&only=<命令路径,逗号分隔>&fields=<检查要用的字段>。only列草稿要用到的命令路径(和索引的键同一写法),由模型在读完缺陷之后、开始运行时写上。fields必须带上commands,好让每个条目带着自己完整的命令列表:收窄以后,一个条目只出现在列出的键下,靠键拼不回它的命令集合。查重要比的其他字段(反向标记、标题,以及文档和节点号)也要列上,没列的字段不能拿来比。SKILL.md、workflow.json的描述和样例照这个写。 - 判得出来的范围:草稿的命令集合 S 里至少有一个在
only里,这条草稿才判得出来。和它重复的已有用例带着 S 里的每一个命令,所以一定出现在那个键下。S 和only不相交的草稿记为未知,说明索引没有收窄到它用的命令。不传only时照旧:视图完整才判得出来,被截断就记未知。 - 去掉
functions/expected.ts自动绑定的那份不带fields的同一索引:它白占一份预算,查重也不用它。 - 紧凑索引按条目的
commands字段算命令集合,不再靠键拼;条目没带commands字段时,查重记为未知并说明原因,不能把它当成没有命令。 - README 改正:删掉“2 至 3 MiB”的估计,写上真实规模的测量(视图 14.7 MB,预算内只放得下约 45,000 个条目中的 27,102 个),以及收窄的写法和判得出来的范围。
- 测试:合成索引,覆盖收窄后找到重复、收窄后没有重复、草稿命令不在
only里、条目缺commands字段、不收窄但视图被截断这几种情况;每条新规则有正例和反例。
完成后在终端里回报:提交号、测试数量、没做完或拿不准的地方。