任务:补完决定 126 留下的三项
依据:
- 所有者 2026-11-01 在问答中选择“改为在本机做完”(第 1–3 项;测试连接的审计记录和运行环境的响应时间待所有者定)与“推送,不建 PR”。决定 127。
- 决定 126 与任务页
console-data.md的“没有做的”;接口文档《circle-hub 控制台前端:模块与接口》的事件表(system.status:业务系统状态或响应时间变化)。
做法:
- 分支和工作树:
console-finish(目录circle-hub-console),从 main(0e5dfdc,#121 合并后)开出;推送,不建 PR。 - 可以改的路径:
hub/server/console/live.ts、hub/server/console/citations.ts及其测试;hub/records/store.ts、hub/records/api.ts(addIndex)及其测试;hub/runs/engine/store.ts、hub/runs/engine/service.ts、hub/runs/api.ts及其测试;hub/connectors/trial.ts、hub/connectors/connectors.ts、hub/connectors/api.ts及其测试;- 各包 README、
docs/hub-r4-progress.md、CHANGELOG.md、console-data.md和本页。
别的路径不动。不加依赖,不加迁移,不加词表。
- 规则同
console-data.md。 - 验证:
npm run typecheck、npm run verify:contracts、npm run test:unit、npm run test:docs、npm run test:acceptance;跳过的测试照实列出。
做了的
- 读取结束时发送
system.status:一次读取结束、写下读取清单(action记录,正文顶层有resource与started_at)时,给该业务系统发送system.status,近 24 小时的读取次数与耗时随之刷新;保留 6 秒期间同一系统的事件只发一次。 - 被引用次数回填:
RecordStore.addIndex给已存的记录追加索引项(记录与摘要不变,已有的项保留,合计至多 200 项)。backfillCitations从最早的提交往后,补到最早一份在存储时建了索引的提交为止,给每份已受理的提交补上与putSubmission现在相同的索引项,标记为backfilled;中途停下,下次接着补;走到头时在分界的提交上记下runs.submission.cites.complete。运行引擎的维护在启动时、此后没补完时每分钟在后台跑一遍,停止时中止。补完后近 30 天被引用次数是准确值(citations.complete为真),页面不再写“更早的提交未计入”。 - 测试连接的失败登录持久记住:失败过的登录的摘要(系统包、登录来源、路径、填好的正文的 SHA-256)记在密钥库条目
login-stop.trial,加密保存,不含凭据内容;重启后同样的内容也不再发送,改正后的照常发送。至多 10,000 条,满了只去掉最早的一条。这份记录读不出时不登录,答复写“登录失败记录不可读,未登录”;写入失败时本进程仍记得,并记resource_trial_failure_unkept事件。答复的说法改为“同样的凭据此前登录失败,未再次发送;更正凭据后再试”。
没有做的
- 测试连接的审计记录:合约里没有对应的动作种类(
action_kind没有试读)或记录类型,用哪种形式记,待所有者定;记了以后,页面上“不保存任何东西”的说法要一并改。 - 运行环境的响应时间:接口文档的运行环境一行没有这一列。派发记录对每次调用执行器都记了发出请求与收到应答的时间(
hub/dispatch/service.ts),可以据此统计;按什么口径统计,待所有者定。 login-stop.trial没有专门的清除命令:账户解锁后要用同样的凭据再试时怎样清除,待所有者定。
验证(2026-11-01,本机 macOS,Node 24.21)
在 b81fb2a 上(之后只改了文档):
- 本次改动直接相关的测试:
hub/records/add-index、hub/runs/engine/citations、maintenance-citations、deadlines、hub/connectors/trial、hub/server/console-search、console-systems、console-live,41/41。 npm run typecheck、npm run verify:contracts:退出码 0。npm run test:unit(共享通道并行度 4):- 隔离通道 175 项,173 通过,2 项跳过;
- 共享通道 190/190;
- 主通道 8140 项,8133 通过,0 失败,7 项跳过。
- 跳过的 9 项中,8 项只在 Linux 上运行;1 项(没有
sandbox-exec时拒绝运行)在有sandbox-exec的本机不适用。
npm run test:acceptance:201 项,199 通过,2 项失败,都发生在本机负载较高时(可用内存约 2.4 GB):- 场景 28 的派发结果为
not_dispatched; - 场景 42 报沙箱进程树的内存观测缺失,任务包样例检查出错。
- 两项随后单独重跑都通过(7/7、3/3)。全量以本 PR 的 CI 为准。
- 场景 28 的派发结果为
npm run verify:references、npm run test:references:8/8。npm run test:docs:279/279,改正文档后重跑仍为 279/279。