---
description: 归档已完成的变更，合并知识库，白名单 commit+push，最后可选外部 sync（步骤10）
argument-hint: "[变更目录或 scan-id] [补充说明]"
---

> Pi 包 `@suwenguang/pi-kb`：运行时包根为环境变量 `PI_KB_ROOT`（由 `extensions/kb-root.ts` 注入）。
> 工种子 Agent 通过 **pi-subagents** 派发（已 bundled）；agent 定义见本包 `agents/`。
> 脚本调用示例：`node "$PI_KB_ROOT/scripts/<name>.mjs"`。

## 用户输入

${@:-（未附带参数；结合当前对话上下文执行，缺信息时向用户澄清。）}

---
归档已完成的变更，将改动合并回知识库，确保知识库始终是最新现状。

**执行 Agent**：**kb-librarian**（步骤 6–7）+ **kb-release**（步骤 8–10：迁移、commit+push、外部 sync）；工种见 [kb-agent-roles.md](../skills/kb-workflow/references/kb-agent-roles.md)

**标准收尾顺序（必遵）**：① 目录迁移至 `knowledge/变更/归档/` → ② 按白名单 **commit + push** → ③ 若启用 integrations 则外部 sync 步骤 10。

**输入**: 变更名称（**必须为中文**，对应 `knowledge/变更/进行中/` 下的目录）。

## Bootstrap 门禁（硬阻断）

本命令要求业务仓已完成 KB 初始化（`/kb-init` / `kb-bootstrap`）。开始前**必须**先跑机器门禁；失败则**立即停止**，禁止继续（含禁止用 `mkdir -p knowledge/...` 绕过建目录）。执行：

`node "${PI_KB_ROOT}/scripts/kb-bootstrap-check.mjs" --target "$(pwd)"`

未通过时按脚本输出指引执行 `/kb-init`，或：

`node "${PI_KB_ROOT}/scripts/kb-bootstrap.mjs" --target "$(pwd)"`

## 约束

- **变更名称必须为中文**，如"红包功能"、"设备守卫-用户模糊搜索"
- 禁止使用 kebab-case、camelCase 或英文命名
- 目录格式：`<YYYYMMDDHHMMSS>-<中文名称>`
- 归档后变更目录从 `knowledge/变更/进行中/` 迁移到 `knowledge/变更/归档/`
- 长期清理见 [`/kb-archive-purge`](kb-archive-purge.md)，**非**本命令删除
- 变更文档必须按 kb-flow 优先级使用两位数字前缀；读取与新增产物均使用 `05-summary.md`

## 子 Agent 编排（必遵）

- **知识库合并（步骤 6）**：对 `02-design.md`「必须更新」清单中的**不同知识文件**，在互不依赖时**并行**派发 `Task`（`generalPurpose` 起草并写入目标文件，或先返回草案再由写入子 Agent 落盘）；合并目标只能是 `knowledge/知识地图.md`、`knowledge/业务域/**`、`knowledge/工程平台/**`，主 Agent 统一控制「每文件 ≤3000 字」与去历史化表述。
- **验证（步骤 7）**：可并行 `generalPurpose` 只读子 Agent 按知识地图、业务域、工程平台分片核对与代码一致性；子 Agent 必须优先使用 CodeGraph 核对当前实现和调用链，主 Agent 汇总后派发子 Agent 迁移目录、提交推送与外部 sync。
- **提交推送（步骤 9）**：按 `/kb-commit` 白名单规则暂存、提交并**默认 push**。未归属改动存在时停止并让用户确认。
- **外部 sync（步骤 10）**：在 commit+push **之后**执行；manifest 从**已归档目录**读取与回写；细则见 [kb-external-sync.md](../skills/kb-workflow/references/kb-external-sync.md)、[kb-external-writeback.md](../skills/kb-workflow/references/kb-external-writeback.md)。

## 执行步骤

### 1. 确认变更已完成

```bash
# 检查变更状态（目录带时间戳前缀）
ls "knowledge/变更/进行中/*-<中文名称>/"
```

读取 `00-manifest.json`。若变更目录缺失该文件，先由子 Agent 补建最小 manifest：标准流程从 `01`～`07` 反推阶段与任务，轻量流程写 `flow = "lite"`；无法证明完成的任务状态写 `"unknown"`，不得虚构 `"done"`。

标准流程要求 01-proposal.md 和 02-design.md 存在，且主要任务状态为 `done`。轻量流程要求 `flow = lite` 且至少存在 `05-summary.md`，不强制补 `01`～`03`；记录型 lite 可直接进入迁移，知识同步型 lite 必须先完成目标知识文件更新。

归档前先执行 `/kb-check <中文名称>` 的只读口径（与下方硬门禁一致）：若存在 manifest、`manifest.files`、评审闭环、知识库影响清单或两级索引阻断项，停止归档并先处理阻断。只读检查必须优先验证文件存在性和清单一致性，不能靠“看起来已完成”推进。

#### 归档前硬门禁（2B / 4A）

读取 `flow` 后按流别判定；**任一硬门禁失败则停止归档**：

| 条件 | `flow = standard` | `flow = lite` |
|------|-------------------|---------------|
| 缺少 `04-review.md` | **阻断**（必须存在，不再是「如果存在且未通过才停」） | **豁免**（不强制 04） |
| `reviews[].status = "open"` | **阻断** | **阻断**（有 open 评审则不得当完成归档） |
| `04` 结论未通过，且无明确 `accepted_debt` | **阻断**；须先修复或接受债务 | 若存在 04 且未通过、无 accepted_debt → **阻断**；无 04 则跳过本项 |
| 接受遗留债务时 | 仅允许 `stage = archived_with_debt`，债务写入 `reviews[]` 或 `05-summary.md` | 同左 |
| 缺少 `06-automation-test.md` | **不阻断**（archive 不强制 06 存在） | **不阻断** |
| `06` 存在但记录失败用例（未全绿） | **阻断**；须先修复或在 `06` 显式 skip 并说明，不得以 `archived_with_debt` 放行 | **阻断**（同 standard） |

说明：`accepted_debt` 只能归档为 `archived_with_debt`，不得写成普通 `archived`。执行验收失败不得标 `tested`、不得当验收通过（由 `/kb-test` 保证）；本命令**不**因缺 06 硬拦。若 `06-automation-test.md` 记录了失败用例，即使标 `accepted_debt` 也不得放行归档；须先转 `/kb-repair` 修复，或在 `06` 显式 skip 该用例并注明理由（仅限环境/依赖类失败，业务逻辑失败不得 skip）。

### 2. 读取评审结论

```bash
# 读取 04-review.md 的评审结论（standard 必有；lite 若存在则读）
grep "结论" "knowledge/变更/进行中/*-<中文名称>/04-review.md"
```

若 `04-review.md` 存在且通过，将评审中发现的设计偏差纳入「与设计的差异」章节。`flow = standard` 时本文件在步骤 1 已强制存在。

### 3. 读取知识库更新计划

标准流程以 **design** 阶段清单为主（`01-proposal.md` 为业务 PRD，不含工程向知识库影响）；轻量流程从 `05-summary.md` 读取：

```bash
# 主清单：design 中的精确更新计划（archive 主消费）
grep -A 30 "## 十、知识库更新计划\|## 知识库更新计划" "knowledge/变更/进行中/*-<中文名称>/02-design.md"
# 必须更新清单：新格式 ### 10.1 必须更新；过渡期兼容 ### （一）必须更新；旧格式 ### 必须更新
grep -A 15 "### 10\.1 必须更新\|### （一）必须更新\|### 必须更新" "knowledge/变更/进行中/*-<中文名称>/02-design.md"

# 辅助：design 中的初评（若与更新计划不一致，以「必须更新」为准）
grep -A 20 "## 九、知识库影响\|## 知识库影响" "knowledge/变更/进行中/*-<中文名称>/02-design.md"
```

标准流程中，`02-design.md` 的「必须更新」是 archive 主工作列表；`01-proposal.md` 仅作业务对照。历史变更若知识库影响仍在 `01`，可兼容 grep `01`，新变更不应依赖 `01` 的工程清单。轻量流程中，以 `05-summary.md` 的 lite 类型、已更新/不需要更新结论为准；若轻量总结无法说明影响范围或缺少“不需要更新”的原因，先补充总结再归档。最终清单必须同步到 `manifest.files`，用于后续校验和提交白名单。

快速判定默认更新范围：

| 代码变化 | 默认处理（业务域内落到对应子模块文件的相应段，结构见 [`knowledge/AGENTS.md`](../../knowledge/AGENTS.md)） |
|---|---|
| `doger_proto/` | 更新相关子模块「五、接口」「六、数据」段，并确认生成产物规则 |
| 服务端 endpoint、HTTP/gRPC 入参出参 | 更新相关子模块「五、接口」「三、服务端规则」段 |
| 服务层、跨模块调用链 | 更新相关子模块「三、服务端规则」与 `01-概览` 架构/依赖；跨域复用能力补工程平台 |
| 数据模型、缓存、队列、持久化结构 | 更新相关子模块「六、数据」「七、非功能与可观测」段；跨域基础设施补工程平台 |
| Flutter/Quasar 用户可见功能 | 更新相关子模块「1、能力范围」「4、客户端流程」段与 `01-概览`；端工程通用规则补工程平台 |
| 纯样式、文案、日志、无行为变化修正 | 可记录“不需要更新”，但必须写明原因 |

### 4. 分析实际代码变更

```bash
# 查看变更涉及的文件
git diff --name-only HEAD~<N>
```

标准流程对比 02-design.md 中的知识库更新计划与实际代码变更，调整更新范围；轻量流程对比 `05-summary.md` 与实际代码变更，确认是否需要补充知识库更新：
- 实现中新增了 design 未涵盖的变更 → 补充到更新计划
- design 中计划的更新实际未涉及 → 标记为不需要更新
- 对涉及接口、服务方法、公共类型、组件或数据结构的实际变更，使用 `codegraph_explore` / `codegraph_impact` 核对调用链和影响面，避免漏更新相关业务域或工程平台知识。
- **Ponytail 技术债**：在 diff 中检索 `ponytail:` 注释（`git diff` 或 `rg 'ponytail:'`），写入 `05-summary.md` **§3.1** 表格；无匹配则写「无」（细则 [kb-ponytail.md](../skills/kb-workflow/references/kb-ponytail.md)）

### 5. 编写变更总结

标准流程由子 Agent 在 `knowledge/变更/进行中/*-<中文名称>/05-summary.md` 中写入；轻量流程若已存在 `05-summary.md`，只补充缺失的影响范围、知识库更新与债务说明，不重写无关内容：

结构以 [`knowledge/AGENTS.md`](../../knowledge/AGENTS.md)「9」为准；大段须 `## N、` 阿拉伯数字编号。

```markdown
# <需求名称> - 变更总结

## 1、实际变更
<!-- 列出所有修改的文件和关键改动 -->
<!-- 必须与 manifest.files 中的 code/config/other 文件一致 -->

## 2、与设计的差异
<!-- 如有差异，说明原因；无则写「无」 -->

## 3、影响范围
<!-- 涉及的模块、接口、数据结构 -->

### 3.1 Ponytail 技术债

<!-- 从本次 diff harvest 所有 ponytail: 注释；无则写「无」 -->
<!-- 格式：| 位置 | 注释摘要 | 升级路径 | -->

| 位置 | 注释摘要 | 升级路径 |
|------|----------|----------|
| `path/to/file.dart:42` | … | … |

## 4、知识库影响清单
<!-- 从 02-design.md 继承，根据实际实现修正 -->
<!-- 必须与 manifest.files 中的 knowledge/index 文件一致 -->
- [ ] `knowledge/业务域/礼物/0X-<子模块>.md` — 「五、接口」补 SendGift；「六、数据」补 SendGiftParams/SendGiftResult
- [ ] `knowledge/业务域/礼物/01-概览.md` — 若术语/依赖/全局已知限制变化则同步
- [ ] `knowledge/业务域/礼物/index.md` — 若文件清单或阅读路径变化则同步
- [x] `knowledge/index.md` — 总入口未变化，无需更新
```

### 6. 合并改动到知识库（优先并行子 Agent）

根据 05-summary.md 中的知识库影响清单，更新知识文件：

**更新原则**：
- 知识库反映"现在是什么"，不是"曾经改了什么"
- 更新时不要标注"新增"/"修改"等历史信息，直接写最新内容
- 每个文件 <= 3000 字符，超限时拆分
- 只更新清单中标记为需要更新的文件，不做额外扩散
- `knowledge/变更/归档/` 不进入总索引或局部 index 的日常主体，避免历史变更噪音。
- 业务域编号子模块文件/工程平台叶子文件新增、删除、重命名时，更新所属领域/平台 `index.md`（wikilink 列表）；普通正文变化仅在 index 用途、边界或阅读路径失真时更新 index。
- 业务域子模块膨胀时拆成更多编号子模块文件；仍庞大时才拆入 `knowledge/业务域/<领域>/<中文子目录>/`（子目录内仍为编号子模块 + 十段式），并维护子目录 `index.md`；领域 index 只保留 `[[01-概览]]` 与子模块/子目录入口 wikilink。
- 业务域子目录内文件变化只更新子目录 index；子目录入口变化才更新所属领域 index；总索引仍只引用 `knowledge/业务域/<领域>/index.md`。
- 工程平台主题必须写入 `knowledge/工程平台/<中文平台分区>/`，分区内维护 `index.md`；平台根 index 只保留分区入口，不堆叠分区叶子文件。
- 概念文件内部互链用 `[[wikilink]]`；补全 `related` / `depends_on` 与「十一、相关」/ `## 相关`（细则 [kb-graph.md](../skills/kb-workflow/references/kb-graph.md)）。
- **写时演化（必遵）**：按 [kb-knowledge-evolve.md](../skills/kb-workflow/references/kb-knowledge-evolve.md) 三步——① 构笔记（`type`/`related`/`depends_on`/可选 `keywords`）② 建链（语义 `related`、硬依赖 `depends_on`、正文「相关」⊇ frontmatter）③ 邻接回写（同轮补反向 `related` 消孤儿；结构性变更写 `log.md`）。明确取代旧模块时写 `supersedes` 并为旧文件标 `status: superseded`（或删除并修断链）；默认仍就地更新「当前生效」正文。
- 工程平台分区内叶子文件变化只更新分区 index；分区入口变化才更新 `knowledge/工程平台/index.md`；总索引仍只引用 `knowledge/工程平台/index.md`。
- 总索引仅在知识地图、领域 index、工程平台 index 入口新增、删除、重命名，或总入口引用失效/摘要失真时更新；仅移动变更目录到归档不触发。

**派发方式**：对清单中**不同目标文件**，若无内容依赖，**并行**使用 `Task`（优先 `kb-librarian`，否则 `generalPurpose` 产出该文件全文草案、补丁式段落或只读差异要点）；主 Agent 负责去重、风格统一与确认最终写入路径，实际写入由子 Agent 执行。邻接回写若触及同一文件，须串行合并，禁止并行互踩。

### 7. 使用子 Agent 验证知识库（并行 `Task`）

**CodeGraph 门禁（硬阻断）**：验证步骤开始前**必须**先跑机器门禁；失败则停止并输出脚本指引，禁止继续验证。执行：

`node "${PI_KB_ROOT}/scripts/kb-codegraph-check.mjs" --target "$(pwd)"`

门禁通过后，再确认 MCP 工具 `codegraph_*`（至少能调用 `codegraph_explore`（或 `codegraph_status`））可用。若工具不可用：阻断，并指引用户从插件示例复制项目级 MCP 配置：

按 [kb-codegraph.md](../skills/kb-workflow/references/kb-codegraph.md) §一，从 `${PI_KB_ROOT}/bootstrap/examples/mcp/` **只写当前宿主**对应文件（Claude/其他 → 根 `.mcp.json`；Cursor → `.cursor/mcp.json`；禁止无脑双写），配置后 Reload / 重启会话，再重试本命令。

并行启动 `generalPurpose` 只读子 Agent 分片验证更新后的知识库：

- 文件是否 <= 3000 字符
- 内容是否与代码一致；核对代码事实时优先使用 `codegraph_explore`，涉及公共符号时使用 `codegraph_impact`
- 两级索引是否需要更新：叶子文件清单或阅读路径失真时更新所属 index；总入口失真时触发 `/kb-index 总索引` 或直接更新 `knowledge/index.md`，不得只留下待办提示。
- 业务域是否需要拆分：若子模块文件超限、一篇混入多主题，或领域 index 堆叠过多入口，必须同轮拆成更多编号子模块文件（或中文子目录），并更新所属 index 与 manifest。
- 工程平台是否规范分区：若根目录存在叶子文件、分区 index 缺失或平台根 `index.md` 堆叠分区叶子清单，必须同轮整理并更新分区 index、平台根 index 与 manifest。

### 8. 迁移变更目录到 archive

迁移前由子 Agent 更新 `00-manifest.json`：
- `stage`: `"archived"` 或 `"archived_with_debt"`（仅在明确接受债务时使用）
- `files`: 补齐 `00-manifest.json`、`05-summary.md`、所有实际代码/配置文件、所有知识地图/业务域/工程平台更新文件、所属领域/平台 index、必要时的 `knowledge/index.md`
- `archived_at`: 当前时间
- `updated_at`: 当前时间

`00-manifest.json` 与 `05-summary.md` 必须同轮同步；若二者对文件清单、知识库清单、债务结论或归档状态不一致，停止迁移，先按 `/kb-check` 报告漂移，必要时使用 `/kb-repair <中文名称>` 修状态/清单。

**迁移硬约束（必遵）**：

- **必须**使用 shell `mv` 整目录迁移；**禁止** `cp`/`rsync`/IDE 复制后在 `进行中/` 保留副本。
- **禁止**只在 `归档/` 新建 stub 或只改 `manifest.files` 路径而不移动磁盘目录。
- 细则与验收打回对称规则见 [kb-archive-migrate.md](../skills/kb-workflow/references/kb-archive-migrate.md)。

```bash
# 找到变更目录并迁移到归档目录（唯一合法方式）
mv "knowledge/变更/进行中/<YYYYMMDDHHMMSS>-<中文名称>" "knowledge/变更/归档/"

# 迁移门禁：进行中必须已清空，归档必须存在
test ! -d "knowledge/变更/进行中/<YYYYMMDDHHMMSS>-<中文名称>"
test -d "knowledge/变更/归档/<YYYYMMDDHHMMSS>-<中文名称>"
```

门禁任一失败：**停止**步骤 9～10，先 `/kb-repair <中文名称>` 或人工清理重复目录，不得 commit/push/外部 sync。

迁移完成后，后续步骤均基于**已归档路径** `knowledge/变更/归档/<YYYYMMDDHHMMSS>-<中文名称>/`。

### 9. 白名单 commit + push（archive 内必做）

按 `/kb-commit <中文名称>` 规则构建暂存白名单（`manifest.files` + `05-summary.md` 清单 + 变更目录 `00`～`07`），由子 Agent 执行：

1. `git status --short` 检查未归属改动；有则**区分两类**：
   - (a) **变更产物**（变更目录内 `00`～`07` 或 manifest.files 列出的文件）：补入白名单后继续；
   - (b) **仓库既有结构迁移**（与本次变更无关的 rename/移动，如项目代码从根级迁至子目录）：**不得**纳入本次归档 commit，提示主 Agent 在归档完成后另起独立 `chore` commit 收尾（提交信息示例：`chore(repo): <迁移说明>`），不得静默遗留。
2. 确认 `manifest.stage` 为 `archived` 或 `archived_with_debt`。
3. 按白名单逐文件 `git add`（禁止 `git add .` / 目录级全量暂存）。
4. 生成 Conventional Commits 提交信息，主题示例：`docs(kb): 归档 <中文名称> 变更，更新知识库与业务代码`。
5. `git commit`。
6. **`git push`**（与 `/kb-commit` 一致，默认推送）。

**失败处理**：commit 或 push 失败时，步骤 10 外部 sync **默认暂停**；修复后从步骤 9 重试，勿在远端未同步时发 completed 通知。commit 后若 `git status --short` 仍有未提交改动（如 (b) 类结构迁移），归档报告**必须**列出残留改动并提示主 Agent 补独立 `chore` commit + push 收尾；不得报告「归档完成」却留工作区不干净。

### 10. 外部 sync（可选，在 commit+push 之后执行）

**本步骤在步骤 9 commit+push 之后执行。** 仅当 `kb.project.json` 启用对应 integration 且变更已外部登记时执行。

#### 10.1 前置判定（shell 读磁盘 manifest，路径为已归档目录）

```bash
python3 -c "import json; m=json.load(open('knowledge/变更/归档/<dir>/00-manifest.json')); print(m.get('external',{}))"
```

| 条件 | 动作 |
|------|------|
| integrations 未启用 | **跳过**；归档报告注明「未配置外部集成」 |
| `external.registry_record_id` 存在，且 `notified_events` **不含** `"completed"` | **必须**执行 10.2～10.4 |
| `notified_events` 已含 `"completed"` | 跳过；归档报告注明「外部待验收态已同步」 |
| 无 `external` 或缺少 `registry_record_id`，但 `01-proposal.md` 头部「任务记录」有链接 | 先派子 Agent 从 01 解析并**补写** `manifest.external`，再执行 10.2～10.4 |
| 无 `external` 且 01 无任务记录，integrations 已启用且 `flow` 为 `lite`/`standard` | **警告**；建议先补跑 `/kb-lite` 或 `/kb-propose` 外部登记 |
| 无 `external` 且非 lite/standard（历史目录） | 可省略；报告注明「未外部登记，跳过 sync」 |
| 用户明确指令「跳过外部同步」 | 可省略；报告注明用户指令 |

#### 10.2 子 Agent 执行

由 **kb-release** 子 Agent 调用统一入口：

```bash
node "${PI_KB_ROOT}/scripts/kb-external-sync.mjs" --event sync.archive_completed --scan-id <14位变更ID前缀>
```

细则：[kb-external-sync.md](../skills/kb-workflow/references/kb-external-sync.md)、[kb-external-writeback.md](../skills/kb-workflow/references/kb-external-writeback.md)。

#### 10.3 manifest 回写（同轮、外部 sync 成功后）

外部 sync 成功后，子 Agent **立即**更新已归档目录下的 `00-manifest.json`：

- `external.notified_events` 追加 `"completed"`（去重）
- 可选：`external.completed_at` 写入 ISO 时间
- `updated_at` 刷新

主 Agent / orchestrator 收到回报后，**必须 shell 读磁盘**确认 `notified_events` 含 `"completed"`。

若 manifest 因回写产生 diff，**同轮追加轻量 commit + push**（仅 `00-manifest.json`），提交信息示例：`docs(kb): 回写 <中文名称> 外部待验收态同步标记`。

#### 10.4 失败处理

- sync 失败：归档报告标注失败；可重派子 Agent 重试（仍遵守 completed 幂等）。代码与 KB 已在步骤 9 推送，勿回滚目录迁移。
- 子 Agent 称成功但 manifest 无 `"completed"`：重派**仅补写 manifest**（及可选 follow-up push），禁止重复 sync（先读 `notified_events`）。

### 10.5 贡献分 bump（知识更新后）

迁移与验证通过后，由 **kb-librarian**（或写入型子 Agent）对本轮实际更新且仍存在的 `manifest.files` 中 `kind=knowledge`（及本轮改动的 `index` 若需）路径抬分：

```bash
node "${PI_KB_ROOT}/scripts/kb-knowledge-utility.mjs" bump \
  --target "$(pwd)" --paths "<逗号分隔相对路径>" --delta 1
```

无知识文件更新时可跳过。细则：[kb-knowledge-evolve.md](../skills/kb-workflow/references/kb-knowledge-evolve.md)。若 utility 文件产生 diff，宜纳入步骤 9 白名单或同轮轻量追加 commit（仅 `.kb/knowledge-utility.json`）。

### 11. 输出归档报告

```
## 归档报告

| 项目 | 状态 |
|------|------|
| 变更名称 | <中文名称> |
| 归档时间 | <YYYYMMDDHHMMSS> |
| 知识文件更新 | X 个文件 |
| 写时演化 | 构笔记/建链/邻接回写 / supersede 说明 |
| 贡献分 | 已 bump / 跳过（无知识更新） |
| 知识库完整性 | 验证通过 |
| Git 提交 | <commit hash 或失败原因> |
| Git 推送 | 已推送 / 失败待重试 |
| 外部 sync | 已同步 / 已跳过（原因） / 失败待重试 |
| 归档位置 | knowledge/变更/归档/<YYYYMMDDHHMMSS>-<中文名称>/ |
| 迁移方式 | shell mv（禁止 cp 留副本） |
| 进行中已清空 | 是 / 否（否则阻断） |
```

## 注意事项

- 归档后变更目录迁移到 `knowledge/变更/归档/`，保留作为历史记录
- 知识库中不保留变更历史，只保留最新现状
- 如果合并后发现分层问题，在对应业务域 `01-概览.md` 的架构/依赖段或 `knowledge/工程平台/**` 中记录
- 归档报告不得使用只有人能理解的“有条件归档”作为唯一结论；必须落到 `archived`、`archived_with_debt` 或停止归档三种结果之一
