Files
mnote/design/10-review/process/23-retired-product-cleanup-checklist-v1.md
T

86 lines
4.4 KiB
Markdown
Raw Normal View History

# 23 · 退役产品全库清理清单 v1
> 状态:**in-progress → 高优先级 Waves A1C 已落地(2026-07-28**
> 日期:2026-07-28
> 目标:把 convex + Weknora + openhub + reasonix + Hermes + ACP + OpenCode + Sidex + Yuxi + legacy_next_compat + soft retirement 残留彻底扫光,像没有存在过一样。
> 优先级:**高**(编译不红、runtime 不暴露、文档不广告)→ **中**(调试残留)→ **低**(历史叙事、死 smoke)。
## 1. 整体盘点(更新 2026-07-28 执行后)
| 品牌 | 产品面残留 | 调试/测试面 | 历史叙事 | 风险 |
|---|---|---|---|---|
| **Hermes** | seed→`pi``HERMES_HOME` 兼容读已删;`AiRuntimeOwner::RustWebPi` | soft-retire smoke 保留 exit 0 | design/old 可留 | **已收** |
| **OpenHub / OpenCode** | 无产品入口 | soft-retire smoke | design/old | **低** |
| **Reasonix** | seed→`pi` | `.reasonix` 目录忽略保留 | design/old | **已收** |
| **ACP** | DB 列 `acp_*` 保留(schema);产品 runtime 无 ACP 宿主 | 极少 | | **中(列名兼容)** |
| **next_compat / LEGACY_NEXT** | AppConfig / proxy / documents Next 链已删 | smoke 已去 env | design/done 历史稿 | **已收** |
| **convex_retired** | 已扫完 | | | **已完** |
| **Weknora / Yuxi / Sidex** | 极少 | | design/old | **低** |
## 2. 本批已执行(A1 → A2 → A3 → B → C
### A1 · control-plane brand → pi ✅
- sqlite / turso seed`hermes`/`reasonix``pi`display「我的 Pi」
- 迁移:历史 `agent_id='hermes'` 就地 UPDATE 到 `pi`
- fixtures / `turso_store` / `control-plane-dev-seed.js` 字面量中性化
### A2 · LEGACY_NEXT / documents proxy ✅
- `AppConfig` 删除 `legacy_next_base_url` / `enable_legacy_next_compat` / `compat_next_base_path`
- `session` / `gateway` health 与 legacy proxy 删除
- `documents` Next proxy 栈删除
- OnlyOffice 非 local writeback → fail-closed`onlyoffice_cloud_writeback_unavailable`
- 保留 OnlyOffice **同源 server proxy** 所需 `append_path_and_query`
### A3 · Hermes 命名 / HERMES_HOME ✅
- `AiRuntimeOwner::RustWebHermes``RustWebPi`
- spike`open_hermes_page_ai_drawer``open_page_ai_drawer`
- `agent_profile_home`:仅 `MNOTE_AGENT_HOME` / `~/.mnote-agent`(去掉 `HERMES_HOME` / `~/.hermes`
- audit log:仅 `MNOTE_AGENT_TOOL_AUDIT_LOG`
- AGENTS.md:去掉「旧 agent 网关 / OpenCode 代理壳」宣传句
- `.env.all`:删除 `MNOTE_HERMES_API_*`
### B · compat 410 / 文案 / debug ✅
- `/api/ai-agent/run` 继续 **410** `legacy_ai_agent_run_retired`(含 hermes/codex provider 负向合同)
- compat 测试去 mock Next 上游,只断言 GONE
- debug shell`MNOTE_WEB_ENABLE_DEBUG_SHELL_ROUTES` 默认 false(边界保持)
### C · smoke / 编译验证 ✅
- 17 个 smoke 去掉 `MNOTE_WEB_*LEGACY_NEXT*`
- `task164` 断言改为不出现 `legacy_next_compat`
- 死 hermes/opencode smoke 已 soft-retireWave 10,保持)
- 验证:
- `cargo check -p mnote-web --tests` 无 error
- `cargo test -p bridge-runtime --lib` 116 passed
- `cargo test -p control-plane --lib` 37 passed
- `cargo test -p mnote-web --lib routes::compat` 4 passed
## 3. 仍可后续(非阻塞)
| 项 | 说明 |
|---|---|
| ACP 列名 `acp_*` | 控制面 schema 兼容;改列需独立迁移批 |
| actor 占位拒绝 `hermes` | `mnote_tools` 仍拒绝 actor=`hermes` 占位 id(负向安全) |
| `mnote-hermes-tool` source | document-session 历史 external write source 兼容读 |
| `.reasonix` / `.opencode` 目录忽略 | local_folder 扫描忽略,非产品入口 |
| design/old 历史稿 | 不阻塞产品面 |
| 测试函数名 `hermes_tools_*` 前缀 | 历史命名,schema 已中性化 |
## 4. 验收 Checklist
- [x] `cargo check -p mnote-web --tests` 无 error
- [x] `cargo test -p bridge-runtime --lib` 全通过
- [x] `cargo test -p control-plane --lib` 全通过
- [x] AGENTS.md 不再把退役 agent 宿主写成可选主链
- [x] smoke 不再注入 `MNOTE_WEB_*LEGACY_NEXT*`
- [x] 产品 profile home 不再读 `HERMES_HOME` / `~/.hermes`
- [ ] (可选)ARCHITECTURE.md 全文扫 brand 叙事
- [ ] (可选)ACP 列 rename 迁移批
## 5. 工具回扫命令
```bash
rg -n "legacy_next|LEGACY_NEXT|HERMES_HOME|RustWebHermes|enable_legacy_next" rust scripts --glob '!**/target/**'
rg -n "MNOTE_WEB_ENABLE_LEGACY_NEXT|MNOTE_HERMES" scripts .env.all
cargo check -p mnote-web --tests
```