From e0f6d5991cfedfd69e5afd4a6054e5936652fe28 Mon Sep 17 00:00:00 2001 From: weichen Date: Fri, 18 Sep 2026 04:02:18 +0000 Subject: [PATCH] docs(ops): plan Wave5 deadcode decisions (X-1~X-5) Co-authored-by: Cursor --- .../2026-09-18-wave5-deadcode-decisions.md | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 .doc/ops/short-term/2026-09-18-wave5-deadcode-decisions.md diff --git a/.doc/ops/short-term/2026-09-18-wave5-deadcode-decisions.md b/.doc/ops/short-term/2026-09-18-wave5-deadcode-decisions.md new file mode 100644 index 00000000..e22b5018 --- /dev/null +++ b/.doc/ops/short-term/2026-09-18-wave5-deadcode-decisions.md @@ -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`)。