任务:分面视图的未归位汇总,和生产运行的说明进回答

依据:

  • 所有者的规矩:未知只能是过渡状态,要写明缺的事实和下一步动作;能拿到的就该拿到。
  • gold-case-commands 和 gold-trace 两件里查到的两个核心缺口(集成者 2026-10-23 登记):
    • 分面视图没有 only= 和分页,截断时空组(未归位)那一行可能被砍掉,回归范围、维护巡检和质量看板只好拒绝启动;
    • 只出事实的包在 start_run 时算出的说明进不了回答。运行摘要去掉了 groups,非空运行的投影 warnings 也不进回答,所以“有 N 个用例解析不出命令”只能靠技能让客户端自己去读分面视图再披露。

这一件从 kb-candidates(K2)开出,因为要改的视图和回答文本 K2 都动过;合并时排在 K2 之后。

  • 分支和工作树:views-and-notes,目录 circle-hub-views-and-notes(从 kb-candidates 开出,依赖已装好)
  • 可以改的路径:
    • hub/knowledge/views.ts 里分面视图那一段,和 contracts/src/views.ts 里分面视图的形状(照生成器重新生成,--check 要过);
    • hub/runs/engine/start.ts 里生产运行说明的那一段,hub/server/text.ts 里生产运行回答的渲染;
    • 这三个工作流包的 SKILL 和 README:regression-scope、maintenance-sweep、quality-board。改完后去掉“截断时拒绝启动”和“客户端自己读分面视图披露”这两种临时做法;
    • 对应的测试。

    别的路径不动。

  • 规则:同前(不推送、不建 PR、不发布、不部署;不碰 7420、钥匙串、环境配置文件和任何真实系统;测试只用合成数据;git commit -s)。
  • 验证:npx tsc --noEmit;node tools/gen-contracts.ts --check;node --test --test-concurrency=1 对 hub/knowledge/**、hub/runs/**、hub/server/**、contracts/**,和这三个包。

分两步做

  • 现在:第 1 条和第 3 条,只动核心(视图、合约、运行说明、回答渲染)。
  • 后做:第 2 条和第 4 条,要改三个包。gold-case-commands 和 gold-trace 两件刚改过这三个包,还没合并;它们合并以后由集成者通知你,再在合并后的基础上做。

要做的

  1. 分面视图带上截断砍不掉的汇总字段:视图在 totals 里单独给出空组(按 by= 取不到值的条目)的计数,和行是否被截断无关。字段名用视图里现有的说法,新取值走生成的词表。测试:行被截断时汇总里的空组计数照样对;没有空组时是 0,不是缺字段。
  2. 三个包改读这个汇总:
    • 回归范围、维护巡检和质量看板改读汇总里的计数;
    • 截断时不再拒绝启动,因为汇总一定在;
    • 包升版本、重签,样例同步。
  3. 生产运行的说明进回答:只出事实的包在投影或检查里给出的确定说明(比如未归位数),要写进运行结果,并由 text.ts 渲染进模型看得到的回答文字,Circle 只看文本,这样模型才看得见。
    • 只渲染确定的说明;
    • 不加只在文本里有、结构化结果里没有的信息;
    • 测试断言这句说明确实出现在回答文字里。
  4. 去掉临时做法:三个包的 SKILL 里“客户端自己读分面视图再披露”的步骤删掉,改成照 Hub 回答里的说明转述。

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