任务:按模板查缺:24 个类别照旧全必选,另按命令出覆盖
依据:
- 决定 35 第 19 项:24 个类别都必选,另外按命令出覆盖。
- 架构 6a 第 2 条:模板里有一组类别是按每个 CLI 命令说的(增删改查、最大配置下的 show、no 与 clear、操作日志、审计日志),就是
packs/workflow/template-gap/tables/template-v3.json里 group 为command的 9 个类别。6b:去掉一个类别的全部用例就缺、加一个就有、和用例的顺序无关。 - 命令从哪来:知识树里的用例条目(K02)已经带着按代码解析出的命令。产品包的用例生产器
packs/product/famx/functions/cases.ts给每个用例写data.document、data.node、data.commands(标题和上级节点里的命令短语,对这个构建的命令目录解析出的路径);条目键和 case-review 的条目编号是同一条规则(cases-nodes.ts的caseKeys)。T01 R[0] 要求只有一份实现,所以本包不自己解析命令,读这份索引。gold-template-gap.md第 71 行把这件记成“要先有产品包的命令抽取”,现在已经有了。 - 读法照 defect-to-case:它把
knowledge:index:…绑成输入槽,投影把视图收进 groups(packs/workflow/defect-to-case/functions/projection.ts,subjects.ts的duplicateSubject)。索引视图的形状和完整性字段见contracts/src/views.ts的IndexView(truncated、cut_keys、skipped)。 - 现在用例的命令只从标题和上级节点解析。从步骤行和期望行也解析,是 hub-view-scope 第 3 条;在那件合入之前,索引须提供覆盖生产器所有扫描文字的逐用例修订事实;本包须同步冻结并核验该事实,增加“同步后仅改步骤即未匹配”的测试,不能只凭标题和祖先标签接收扩展索引。该跨包合并依赖见包 README。
-
模型元素:W01、W02、C04、C05、K02、T01。
node tools/show-element.ts W02 C05 K02 T01。模型文字不用改;架构 6a、6b 的说法由集成者在合并时对齐。 - 分支和工作树:
template-gap-categories,目录circle-hub-template-gap-categories。现在就能从 hub-redesign 开出:在做的分支都没有改这个包,gold-template-gap 只改scripts/real/**。views-and-notes 改了contracts/src/views.ts,它合并以后若 index-view@1 的形状有变,合成索引跟着改。 - 可以改的路径:
packs/workflow/template-gap/**(workflow.json、requirements.json、checks.json、tables、functions、samples、examples、testing、SKILL.md、README.md、api.ts、pack.json 和测试)。别的包不动;case-review 的模板表和parity.test.ts的对照照旧。- hub-pack-findings 第 8 条也改这个包(未打标签的用例单独计数、covered 一律给出)。集成者让两件先后做:本页先合并。
- gold-template-gap 的蜕变核对只比第一个要求项(24 个类别);上传的副本在第二个要求项上一律是“不在用例索引里”。两边都合并以后,由集成者对齐那边的脚本。
- 规则:同前(不推送、不建 PR、不发布、不部署;不碰 7420、钥匙串、环境配置文件和任何真实系统;测试只用合成数据,版本线 10.6 以后,地址只用 192.0.2.0/24 和 2001:db8::/32;
git commit -s)。所有者的规矩:- 未知只能是过渡状态,写明缺的事实和下一步动作;
- 枚举只来自生成的词表;
- Hub 只核验,不生成内容:用例的命令只用索引里已经解析出的,不另猜;
- 包里不写产品名。
- 验证:
npx tsc --noEmit;node --test --test-concurrency=1 "packs/workflow/template-gap/**/*.test.ts";node packs/workflow/template-gap/api.ts check。
要做的
- 24 个类别:照现在全必选,代码不改。README 开放问题 1 改成“已定(决定 35 第 19 项)”。
- 绑定和输入(workflow.json、SKILL.md、
functions/project.ts):- 工作流按命令目录绑产品线:
"product": { "catalogs": ["commands@1"] },和 case-review、defect-to-case 一样,包里不写产品名。 - 加输入槽
case_index:角色 expected,接受knowledge:index,可选,一份。写法:knowledge:index:<产品>:<构建>?kind=case&key=document&only=<这次的敏捷平台文档编号,逗号分隔>&fields=document,node,commands,title,path_labels。 - SKILL:开始运行时写 product 和 build;case_index 写同一个构建;上传的文件不在索引里,不写进 only。原来“不要写 product、version、build”那句删掉。
- 投影核对:视图的根就是运行锁定的根;only 正好是这次的敏捷平台文档,不多不少。不对就整次不受理,修正说明写出锁定的构建和该写的 only。新拒绝码写进
tables/codes.json。 - 测试:根不同;only 多一份、少一份;不是 index-view@1;上传和敏捷平台文档混在一起。
- 工作流按命令目录绑产品线:
- 按命令的覆盖(新函数,例如
functions/commands.ts;投影把结果写进条目字段):- 用(文档,条目键)把这次脑图里的用例和索引里的用例条目对上,再核标题和上级标签:同步以后用例的标题或上级标签改了,
data.id还在,索引里的命令就是旧的。所以索引条目的 title、path_labels 要和用例规范化以后的标题、标签相等,不等就算“索引里没有这个用例”(下一步是知识同步以后重跑)。一个用例在索引里有几条(每个命令一条),只算一次。 - 条目键只在生产器的用例规则下对得上:FAMX 的 caseKeys 是按标出的(并集的)用例集编号的,包的 case_rule 换成 tagged 时
#k的编号就变了。按命令的覆盖只在默认的 case_rule 下算;规则不一致时如实写明不一致,下一步是用默认规则重跑,不说成“索引里没有”。 - 每个命令写:用例数;9 个类别各自有没有、用例数、证据用例(排序,最多 20 个)和它们在索引里的
tree:引用;缺哪几个。类别怎么认,用现有的categoryFacts,不另写一套。 - 这 9 个类别从模板表取,不从条目取:投影丢了一个命令或一个类别,也不会让它变成“不必选”。
- 跳过:参数
skipped的一项可以加可选的command(命令路径),只对那个命令跳过;不写 command 的跳过照旧对整份文档,也对它的每个命令生效。写不进的照旧整次不受理(skip_invalid)。 - 测试:合成脑图(
testing/mindmap.ts)配一份合成索引(新写testing/index.ts:给用例分配命令,照 index-view@1 的形状出视图);一个用例有几个命令;两个用例同一个命令;只对一个命令跳过一个类别;键没变、标题变了的用例算不在索引里;case_rule 不是默认的时写明不一致。
- 用(文档,条目键)把这次脑图里的用例和索引里的用例条目对上,再核标题和上级标签:同步以后用例的标题或上级标签改了,
- 第二个要求项
command_coverage(requirements.json、checks.json、新的检查函数):条目是文档,事实,静态层,记账型,提示档。每个(文档,命令)给一个结论,依据是这个命令下的用例条目:- 9 个类别都有,或写明了跳过:支持;
- 缺了:反驳,新码
template-gap.command_shortfall,data 列出缺的类别; - 索引完整(跳过为 0、没截断、这份文档的键没被砍)却没有这份文档:文档级反驳
template-gap.not_indexed,写明根和构建;下一步是用收了它的构建(文档所在的版本线不晚于这个构建)重跑,或等知识同步收进它。上传的文件也记这一条,下一步是用敏捷平台的文档编号重跑。kb-unversioned 落地以后,文档在产品线不分版本的范围里的,下一步改写成怎么读那个范围(那一件更新这句,README 记一笔); - 这份文档的用例都没解析出命令:文档级反驳
template-gap.no_commands,写明用例数;下一步是把命令写进用例标题或上级节点; - 没绑 case_index:未知(缺输入),陈述和
data.missing写缺的是用例索引,下一步是带 case_index 重跑; - 索引不完整(跳过大于 0、截断、键被砍),或者这次脑图里有用例在索引里找不到(文档在同步以后改过):已经算出的支持照给(用例多了覆盖只会多,不会少);本来会是反驳的改记未知(缺输入),写明缺哪些条目,下一步是知识同步以后重跑。
- 新码写进
tables/codes.json;每种结论至少一对正反样例(samples/);摘要加一句“按命令:N 个命令,K 个缺类别”,仍在 480 字以内(最坏情况测一次)。
- 蜕变关系(架构 6b)对按命令的覆盖也测:去掉某命令下某类别的全部用例(脑图和合成索引一起去)就缺;加一个就有;打乱用例和索引条目的顺序,条目和结论的字节都不变;给一份文档加一个不在索引里的用例,支持不会变成反驳。
- engine.test.ts:在真实注册表和引擎上跑一次生产运行,几份敏捷平台文档加一份上传,绑合成索引。
testing/bed.ts现在没有知识假件,照packs/workflow/case-location/test-hub.ts加一个构建、一个带 commands@1 目录的根,再加一个knowledge:index的合成读者。断言两个要求项的终态和计数。原来“没有产品绑定”的那条测试照新绑定改写。 - README 和版本:README 写明按命令的覆盖从哪来、限制(命令只从标题和上级节点解析;上传的文件不在索引里)、开放问题 1 已定。包升到 1.1.0,
node packs/workflow/template-gap/api.ts sign重签,node packs/workflow/template-gap/testing/examples.ts重写范例。
完成后在终端里回报:提交号、测试数量、没做完或拿不准的地方。