任务:回归范围和维护巡检的投影不要每个条目重复带变更详情

只按命令定义算以后,跨版本线的一对构建(相隔一条版本线)真实运行仍然被拒:回归范围 2,096 个用例,投影输出约 20 MB;维护巡检 1,147 个用例,投影输出约 60 MB,都超过投影函数的输出上限。平均每个条目约 10 KB 和 52 KB,说明每个条目都把它所在路径的变更详情(定义的签名、字段差异)原样带了一份。同一条路径下的几百个用例因此重复几百次。独立的命令树比较算出这一对的命令差是 30 条路径(新增 14、删除 11、修改 5),范围本身并不大。

  • 分支和工作树:hub-scope-size,目录 circle-hub-scope-size(依赖已装好)
  • 可以改的路径:packs/workflow/regression-scope/**、packs/workflow/maintenance-sweep/**、scripts/real/accept/regression-scope*.ts、scripts/real/accept/maintenance-sweep*.ts(含测试、README、SKILL;两个包各升一个小版本并重新签)。别的路径不动;核心缺什么先回报。
  • 规则:同前(不推送、不建 PR、不发布、不部署,不碰 7420、钥匙串、环境配置文件和任何真实系统;测试只用合成数据;git commit -s,合并用 git merge --signoff)。

要做的

  1. 条目只带它的路径、变更种类和指向变更条目的引用(tree:<根>/<路径>@<条目>),不带签名和字段差异的正文。每条路径的变更详情在运行级只写一份(每条路径一行:路径、种类、给模型读的简短说明、字段差异的前 3 处),条目的结论文字按路径引用它。
  2. 维护巡检结论里的“字段差异 N 处:…”照旧,取自这份按路径的详情,不再每个条目各算一遍。
  3. 结论文字的写法和真实验收场景要找的词保持不变;如果非改不可,场景同步。
  4. 测试先写:合成的一对构建,30 条变更路径、2,000 个挂在这些路径下的用例,投影输出在 2 MB 以内,结论和条目数正确;同一路径下的条目共用同一行详情;字段差异仍按“前 3 处,另有 M 处”写。
  5. 验证:npx tsc --noEmit;node --test --test-concurrency=2 对两个包和 scripts/real/**(数据库测试别和别的终端同时跑)。

第二轮(第一轮合并后,真实数据仍超)

第一轮合并发布(1.2.0)后,跨版本线那一对的回归范围仍被拒:2,096 个用例,投影约 7.9 MB,平均每个条目约 3.8 KB,超过包自己的输出预算(沙箱默认 8 MiB)。合成的体积测试每个条目约 1 KB,真实的大得多:标题是较长的中文,一个用例常挂在好几条变更路径下,每条原因又重复带了用例数据和完整的树引用(每个约 150 个字符)。

  1. 每个条目里用例数据(文档、节点、标题、优先级、反向)只写一份;原因只写路径在运行级详情表里的序号和变更种类;树引用按路径放在运行级详情里,每条路径只写一份。结论文字和场景要找的词不变。
  2. 体积测试改成真实形状:标题 60 个汉字,每个用例挂在 5 条变更路径下,每条路径两个树引用;2,096 个用例时投影在 2 MB 以内。
  3. 检查函数的输出也要有界:跨版本线的维护巡检(1,147 个用例)投影装下了,可两个检查函数的输出超过沙箱的输出上限(SANDBOX_OUTPUT_TOO_LARGE),1,147 个条目的两个要求项全部记为未核对(检查出错,归责生产者错误)。每个条目的判定只写简短的结论、一条依据引用、路径序号和变更种类,字段差异按路径在运行级只写一次;回归范围的检查同样处理。测试:真实形状下 2,096 个条目时每个检查函数的输出在 2 MB 以内,判定和计数不变。
  4. 两个包各升一个小版本重签;验证同上。

完成后在终端里回报:提交号、测试数量、没做完或拿不准的地方。