用途:把同一组织、同一底层发布事件的多条发布条目归并为一条主故事。一次大发布常同时出现在营销文章、平台更新日志、应用或仓库版本说明中,归并后读者先落到最能解释“这是什么、为什么要关心”的主条目,其余作为佐证覆盖挂在其下。
何时运行:不用于摄取阶段。摄取时的归并由确定性代码完成(changesets 聚类,decided_by = "system:changesets")。本技能面向代码无法判断的人工裁定:批量核对某组织一段时间窗口内的发布(例如 releases tail --org <org> --json);修正错误分组或重新指定主条目。判断前须先明确候选范围(组织加日期窗口),不要越界查找。
判定标准:主条目选最能向不熟悉该组织者解释“这是什么、为什么值得关注”的一条,通常是发布类的博客或新闻稿、例行更新类的更新日志,但不按来源类型预设立场。应归并:同一组织、同一底层事件、数日内发布、读者合理只想落到一条主条目。不应归并:同一天发生的不同发布;数日或数周后补充实质新信息的后续;仅提及该发布但本身不是新发布的版本号提升(若其正是用户获得功能的途径,可作为覆盖);关于已发布产品但本身并非发布的帖子(若是被解析成发布条目,应标记而非归并)。
持久化:挂接用 POST /v1/releases/:canonicalId/coverage,请求体含 coverageIds、reason、decidedBy;decidedBy 必须以 human: 或 agent: 为前缀,否则审计无法记录来源;发布不能作为自身的覆盖。取消挂接用 DELETE /v1/releases/:id/coverage(幂等,不在聚类中返回 { unlinked: false })。读取聚类用 GET /v1/releases/:id/coverage。人工挂接持久有效,自动重分层只改 decided_by = "system:changesets" 的行。
输出:每个聚类给出主发布 ID 与非空的覆盖 ID 列表(可为空),并附一行原因。单条目聚类完全正常。每个输入 ID 必须恰好出现在一个聚类中,作为主条目或覆盖条目之一;若认为超出候选范围,仍以单条目返回并说明原因。