docs(ops): plan Wave5 deadcode decisions (X-1~X-5)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
weichen
2026-09-18 04:02:18 +00:00
co-authored by Cursor
parent a12c94700f
commit e0f6d5991c
@@ -0,0 +1,98 @@
---
title: "Wave 5:死代码与机制收口(X-1~X-5)"
status: done
created: 2026-09-18
updated: 2026-09-18
owner: Cursor-Auto
branch: fix/wave5-deadcode-decisions
worktree: "-"
mutex: deadcode-cleanup
---
# Wave 5:死代码与机制收口(X-1~X-5)
## 目标
按系统体检整改方案 Wave 5,对 X-1~X-5 逐项决策并收口:删除真死 flag/组件、封存 REPLACE、标记 00048 deferred、保留 system_settings 二期键。
## 范围
- X-1~X-5 全项(含级联删除 `patchNotification`)
## 非目标
- X-6(`useTaskRunStream` 伪 ref);不接线 REPLACE;不升 MULTI_INTENT_PLAN_TIER;不改 FAV;项目 143 只读;不改 goose 00048/00049 schema;不 push
## 步骤
1. [x] 决策记录落盘(本文件「决策记录」段)
2. [x] X-1 删除 `SEMANTIC_FALLBACK_ENABLED` + 回归测试
3. [x] X-2 封存注释回链
4. [x] X-3 00048 deferred 注释 + long-term
5. [x] X-4 system_settings 6 键注释
6. [x] X-5 删除死组件/死 API
7. [x] 全量验收 + test-report + 合入本地 `.worktrees/dev-rdev-merge` `dev`
## 验收标准
- [x] X-1~X-5 每项有决策记录(本文件)
- [x] `go vet ./...` / `go test -short ./...` / `cd web && npm test && npm run build`
- [x] remediation Wave 5 行改 done;勾选「X-1~X-5 每项有决策记录」
- [x] 文档闭环 + merge `--no-ff`
## 相关链接
- Remediation: [.doc/remediation/2026-09-17-system-health-remediation-plan.md](../../remediation/2026-09-17-system-health-remediation-plan.md)
- Audit: [.doc/audit/2026-09-17-system-health-check.md](../../audit/2026-09-17-system-health-check.md)
- Test report: [.doc/test-reports/2026-09-18-wave5-deadcode-decisions-test-report.md](../../test-reports/2026-09-18-wave5-deadcode-decisions-test-report.md)
- Assets: [.doc/test-reports/assets/2026-09-18-wave5-deadcode-decisions/](../../test-reports/assets/2026-09-18-wave5-deadcode-decisions/)
## 决策记录
### X-1:`SEMANTIC_FALLBACK_ENABLED` — 删除
- **现状证据**:字段仅在 `internal/intent/flags.go` 解析、`internal/app/app.go` 注入 sysadmin 视图、`internal/sysadmin/features.go` 目录展示;全仓无业务消费方。三环境 compose + `.env.example` 均声明该死变量。
- **决策**:删除(不接线)。
- **理由**:零读者、无设计文档描述预期语义;接线需独立产品设计,保留只会继续污染配置面。
- **影响范围**:`flags.go` / `app.go` / `features.go` / 三 compose / `.env.example`;新增 `TestComposeNoDeadSemanticFallbackConfig` 防复活。
- **验收**:`go vet ./...`;`go test ./internal/intent/... ./internal/app/... ./internal/sysadmin/... ./internal/config/...`;`rg SEMANTIC_FALLBACK_ENABLED` 除 `.doc/` 历史外无匹配。
### X-2:`SEMANTIC_SUMMARY_REPLACE` — 维持封存
- **现状证据**:env 可读但 `semantic_summary.go` 明确 `_ = SemanticSummaryReplaceEnabled()` 且不替换 `sum.Narrative`;负例 `TestSemanticSummary_ShadowOKKeepsDeterministic` 已覆盖 `Replace: true`。
- **决策**:维持不接线;补强注释回链本决策记录。
- **理由**:与 CURRENT 红线及 remediation Wave 5 一致;启用需独立授权 + fail-closed 灰度设计。
- **影响范围**:仅 `summary_flags.go` / `semantic_summary.go` 注释。
- **验收**:`go test ./internal/ctxmgr/... -run Semantic`;diff 仅注释。
### X-3:goose 00048 三表 — deferred → SWBOOT-10/W5b
- **现状证据**:`project_types` / `compliance_profiles` / `project_type_workflows` 已建表有种子,但 API 走硬编码 `swboot.ProjectTypesCatalog()` / `ComplianceProfilesCatalog()`;`project_source_bindings` / `repo_path_allowlist` 零运行时读写;`RepoAllowlist` 仅 stub + 单测。
- **决策**:标记 deferred,归 W5b/SWBOOT-10;**不改 schema**。
- **理由**:FEATURE-MATRIX 明确 SWBOOT-10 仍 stub;DB 化消费方与受控执行器需独立安全评审。
- **影响范围**:`catalog.go` / `repo_allowlist.go` 注释;long-term 软件自举文档追加一行。
- **验收**:`go test ./internal/swboot/...`;diff 仅注释与 long-term 文档。
### X-4:`system_settings` 6 未接线键 — 保留待二期
- **现状证据**:白名单 7 键中仅 `workflow.allow_author_only_approval` 有消费方;其余 6 键(`ui.maintenance_notice`、`ui.read_only_mode`、`chat.default_session_role`、`tasks.default_auto_repair`、`kb.default_search_limit`、`notifications.stage_advance_reminder`)零业务读取。FEATURE-MATRIX 系统管理台「白名单项接消费方」列为二期。
- **决策**:保留白名单 + 逐键注释说明预期消费方;不删。
- **理由**:删除需改写多处白盒测试且收益低;机制先行符合一期设计,二期再接线。
- **影响范围**:仅 `internal/sysadmin/settings.go` 注释。
- **验收**:`go test ./internal/sysadmin/...`;diff 仅注释。
### X-5:前端死组件/死 API — 删除
- **现状证据**(`web/` 全目录扫描,排除自身):
- `DocumentNotificationList` / `WorkflowPrerequisiteBanner` / `SettingsModal`:仅自身文件命中;`App` 使用 `UserSettingsModal`。
- `activateWorkflow`(`api/projectWorkflow.ts`):仅定义处;实际用 `activateWorkflowInstance`。
- `saveMessages`:已 `@deprecated` no-op,仅定义处。
- 级联:`patchNotification` 唯一调用方为 `DocumentNotificationList`。
- **决策**:删除上述 3 组件 + `activateWorkflow`(及类型)+ `saveMessages` + `patchNotification`;同步 import。后端 `PATCH /api/v1/notifications/{id}` 保留。
- **理由**:真死代码;删除降低误挂载与维护噪音;后端路由未经本波审计故不删。
- **影响范围**:见删除清单;无 barrel / 无专用单测。
- **验收**:`cd web && npm test && npm run build`;`rg` 无残留(`activateWorkflowInstance` 除外)。
## 证据 / 备注
基线 tip:`a12c947`(Wave 4 已合入本地 `.worktrees/dev-rdev-merge` `dev`)。