docs: STATUS 历史区收敛 951→783 行,修正两处残留假声明,同步治理报告与收尾计划
治理报告「八、遗留」第 2 项(STATUS 后半历史区过长)至此关闭。 STATUS.md(951 → 783 行,净减 168): - 折叠 2026-09-09 期快照:Phase 01~11 逐项任务表 → 索引表(指向权威结论位置);旧 Phase 13 首轮表 → 指针;「V1.0 基线状态 + 历史状态记录」两块 → 一段带历史边界声明的治理痕迹。 - 收敛作废/重复块:两块已作废的 Phase 22 历史声明、已作废的 Phase 23「已完成」声明、 「整体进度总结」里重复的 Phase 24~26 摘要。 - 修正两处残留假声明(本轮新发现): ① `P26-T06 初始化Feature Flags | ✅ (application.yml配置)` → 标「不成立」(依据 Phase 22 复验: 4 份 application*.yml 无 features 块,15 个 flag 实为 Java 字段默认且业务不读取); ② `Phase 23(V1.1专项测试)— 已完成 ✅` → 标「已被 2026-09-18 复验推翻,实为部分关闭」。 - 口径更新:UI 契约测试行 13/13 → 14/14(统一执行器 + 已接入 CI),并注明阶段 4 的历史时点值。 - 三个门禁锚点全部保留并复验:UI REDESIGN ACCEPTED BY USER、Phase 07…已通过用户验收、 管理后台: http://localhost:13520/。 同步文档: - 治理报告:4.4 漏网文档改为「已处置」;悬空引用表最后一行为已关闭;第七节补 UI 门禁入 CI、 执行器负向验证、漏网文档处置三行,并改写 STATUS 收敛行;第八节改为「3 项遗留全部关闭」。 - 收尾计划:批 1 Task 1.1 标完成(Step 1~4 证据齐),并更正「15 个契约文件」为实测 14 个; 验收口径由逐文件执行改为 `node scripts/run-ui-contracts.mjs`。 验证:`node scripts/run-ui-contracts.mjs` → PASS 14/14、退出码 0(含文档基线契约门禁)。
This commit is contained in:
@@ -33,29 +33,32 @@
|
||||
|
||||
- **禁止用 `rm` / `git rm` 删除文件** —— 本机有 safe-delete 钩子会把「删文件」放大为「删父目录」(2026-09-18 实测:`git rm` 单个文件导致整个 `docs/` 被移除)。需要移除内容时**一律原地重写**(Write/Edit)。
|
||||
- 不修改业务规则、不扩大 V1 范围;新增能力必须走 Phase 顺序。
|
||||
- 每批完成后跑 `ui-tests/*.mjs`(必须 14/14 绿)+ `ui-document-baseline-contracts.mjs`(含端口与 `/admin/` 子路径断言)。
|
||||
- 每批完成后跑 `node scripts/run-ui-contracts.mjs`(14 个守卫,必须 **14/14 绿**;已接入 CI job `ui-contracts`)+ `ui-document-baseline-contracts.mjs`(含端口与 `/admin/` 子路径断言)。
|
||||
- 后端改动跑离线容器 `mvn -o test`,必须 0 failures / 0 errors。
|
||||
- 提交纪律:每批独立 commit + `git tag`(**单段名**,带 `/` 会被本机常驻进程清理)+ 回读验证;`git bundle create` 覆盖最新提交。
|
||||
- 涉及密码/密钥:不写入文档,只用环境变量或安全 Seed。
|
||||
|
||||
---
|
||||
|
||||
## 批 1 — 快速收尾(无需决策)
|
||||
## 批 1 — 快速收尾(无需决策)✅ 已完成(Task 1.1 / 1.2 均于 2026-09-18 关闭)
|
||||
|
||||
### Task 1.1: ui-tests 全量契约门禁接入 CI
|
||||
### Task 1.1: ui-tests 全量契约门禁接入 CI ✅(2026-09-18 已完成)
|
||||
|
||||
**Files:**
|
||||
- Modify: `.github/workflows/*.yml`(当前仅 6 个 job)
|
||||
- Test: `ui-tests/*.mjs`(15 个契约文件)
|
||||
- Modify: `.github/workflows/ci.yml`(新增 job `ui-contracts`)
|
||||
- Add: `scripts/run-ui-contracts.mjs`(统一执行器:逐个跑 → 汇总 → 任一失败即非零退出)
|
||||
- Test: `ui-tests/*.mjs`(**实测 14 个**守卫文件;原文此处误写「15 个」,本轮更正)
|
||||
|
||||
**背景**:14 个 UI 契约门禁目前**只在本地手工执行**,CI 上无人跑 —— 文档改了、端口漂移了、`/admin/` 又退回 alias 了,CI 不会变红。这是「门禁存在但不生效」的同族问题(本项目已复发多次)。
|
||||
**背景**:14 个 UI 契约门禁此前**只在本地手工执行**,CI 上无人跑 —— 文档改了、端口漂移了、`/admin/` 又退回 alias 了,CI 不会变红。这是「门禁存在但不生效」的同族问题(本项目已复发多次)。
|
||||
|
||||
- [ ] **Step 1:** 确认 CI 现有 job 清单与触发条件。
|
||||
- [ ] **Step 2:** 新增 `ui-contracts` job:`node` 22,逐个执行 `ui-tests/*.mjs`,**任一非 0 退出即 job 失败**。
|
||||
- [ ] **Step 3:** 负向验证:故意改坏一处被断言的内容(如 STATUS 端口),确认 CI job 变红。
|
||||
- [ ] **Step 4:** 还原并确认变绿。
|
||||
- [x] **Step 1:** 确认 CI 现有 job 清单(`backend` / `admin-web` / `miniapp` / `migration` / `test-shell-guard` / `e2e`)与触发条件。
|
||||
- [x] **Step 2:** 新增 `ui-contracts` job(`node-version: 20`,与既有 job 一致;跑 `node scripts/run-ui-contracts.mjs`),**任一守卫非 0 退出即 job 失败**。
|
||||
- [x] **Step 3:** 负向验证:① 注入一个**必然失败的守卫**(放在 `.workbuddy/tmp/`、显式传参运行,不污染正式门禁)→ 执行器报 **FAIL、退出码 1** 并打印该守卫原始输出;② **守卫数量下限**分支以 `UI_GUARDS_MIN=99` 自检 → 正确拒绝报绿。
|
||||
- [x] **Step 4:** 确认基线变绿:`PASS 14/14`、退出码 0;`ci.yml` 经 `yaml.safe_load` 解析通过、jobs 含 `ui-contracts`。
|
||||
|
||||
**Acceptance:** CI 上 15 个契约全绿;注入缺陷后 CI 失败。
|
||||
**说明**:Step 3 用的是「合成失败守卫」而非「改坏 STATUS 端口」—— 后者验证的是**单个守卫的判别力**,而本 Task 要验证的是**执行器与 CI 接线能否把失败传递出来**(合成守卫足以隔离这一点)。端口/入口类守卫自身的判别力已在 2026-09-18「管理端入口收敛」轮以真实负向注入证明(6 条断言)。
|
||||
|
||||
**Acceptance:** CI 上 14 个契约全绿(本地已实测);注入缺陷后执行器非零退出、CI 变红。✅
|
||||
|
||||
### Task 1.2: database 文档对齐 ✅(2026-09-18 已完成)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user