From 6ef80acf8dd10db4fe3cd710ef009924c90c7703 Mon Sep 17 00:00:00 2001 From: weichen Date: Mon, 14 Sep 2026 04:03:39 +0000 Subject: [PATCH] docs(docgov): reconcile remediation status with UI evidence --- .../2026-09-14-document-revision-refresh-cache-race.md | 9 ++++++++- .../2026-09-14-project143-controlled-content-404.md | 8 +++++--- .doc/remediation/gap-matrix.md | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.doc/audit/2026-09-14-document-revision-refresh-cache-race.md b/.doc/audit/2026-09-14-document-revision-refresh-cache-race.md index 08532a41..700b83f4 100644 --- a/.doc/audit/2026-09-14-document-revision-refresh-cache-race.md +++ b/.doc/audit/2026-09-14-document-revision-refresh-cache-race.md @@ -1,6 +1,6 @@ --- title: "UI-06 页面刷新后受控正文停留加载骨架竞争态审计" -status: planned +status: done created: 2026-09-14 updated: 2026-09-14 severity: high @@ -67,6 +67,13 @@ severity: high 1. `syncWorkflowDocs` 不应对所有 `serverBackedIds` 进行盲目的全量缓存与 ready 标志清空;应比对服务端返回的 `updatedAt` / `sha256` / `stage`,仅在真正发生更新时定向失效; 2. 或者,若主动清空了已加载文档的缓存,必须同步唤醒重新拉取(如递增 `hydrateResumeKey`),避免状态丢失后无重入机制。 +## 整改与复验结果 + +- Cursor 在 `08bf615` 引入统一的 `controlledContentInvalidation` 规划:`list_sync` 保留已水合缓存;`post_task` 定向失效并唤醒重水合;编辑期间保护活动正文并在关闭编辑器后恢复拉取。 +- 修复通过 349 项前端脚本测试、30 项 Vitest 与生产构建,并随 `36e4bc3` 合入 dev 后 rebuild。 +- Antigravity 在完全新建的真实 UI 项目中重跑 `UI-06`:人工编辑 `r0→r1` 后硬刷新,正文和唯一标记在 1.1 秒内恢复;完整主链与容器重启后恢复均 PASS。 +- 有效证据与历史 FAIL/INVALID 运行严格分开,详见[真实 UI 验收报告](../test-reports/2026-09-14-controlled-content-ui-acceptance.md)。 + ## 证据路径 - 报告:`.doc/test-reports/2026-09-14-controlled-content-ui-acceptance.md` diff --git a/.doc/audit/2026-09-14-project143-controlled-content-404.md b/.doc/audit/2026-09-14-project143-controlled-content-404.md index 00917399..98f1eb35 100644 --- a/.doc/audit/2026-09-14-project143-controlled-content-404.md +++ b/.doc/audit/2026-09-14-project143-controlled-content-404.md @@ -99,7 +99,9 @@ bootstrap 调用链: - 数据库:`document_records.id=87`、`document_versions.id=59`、`document_snapshots.id=66` - 历史 UI 资产:`.doc/test-reports/assets/2026-09-13-document-revision-runtime-ui/ui01-parent-directory-sync-failure/ui-acceptance-results.json` -## 开放问题 +## 关闭结果 -- 尚未执行任何数据修复、代码修复、容器 rebuild 或浏览器重验。 -- 项目 143 可定位为 legacy canonicalization drift,但不能判定为渲染语义等价;修复须优先保全原文件,并以显式 migration repair 事件校正账本。 +- Cursor 已完成语义保持的 canonicalization、结构化错误、原子投影、定向 reconciler、legacy/mock 水合隔离和刷新缓存竞态修复;产品代码已合入并部署至 dev。 +- 项目 143 已在保全原文件与旧 head 后以显式 `migration_repair` 校正账本,没有把裁剪硬换行的旧 head 静默覆盖回原文件。 +- Antigravity 的 `clean-run3` 仅通过真实页面完成登录、正文打开、30 秒静置、人工编辑、三模式切换、硬刷新和退出重登;`doc_proj143_intake` 的 content/revision 目标 404 全程为 0。 +- 新项目 `full-chain-final` 又覆盖真实小队生成、影响/风险报告、高风险确认与拒绝、多文档、上传账本、权限、并发冲突及容器重启后恢复。最终验收见[报告](../test-reports/2026-09-14-controlled-content-ui-acceptance.md)。 diff --git a/.doc/remediation/gap-matrix.md b/.doc/remediation/gap-matrix.md index ff802dee..4231f40e 100644 --- a/.doc/remediation/gap-matrix.md +++ b/.doc/remediation/gap-matrix.md @@ -57,7 +57,7 @@ | ID | 描述 | 状态 | 证据 | 计划动作 | |---|---|---|---|---| -| DOC-CONTENT-CANONICAL-HASH-DRIFT | 旧受控文档 bootstrap 裁剪 Markdown 双空格硬换行并将 canonical SHA 写入账本/DocGov,但未同步文件;正文读取把完整性冲突误报 404,lease no-op 每 5 秒重复 hydration | **FAIL** | [audit](../audit/2026-09-14-project143-controlled-content-404.md);[handoff](../ops/handoffs/2026-09-14-controlled-content-canonical-hash.md)。工程门禁 + 审查修补已在分支通过;**隔离 PG apply 未跑**;未合 dev、未 apply 143、未真实 UI | [remediation](./2026-09-14-controlled-content-canonical-hash-remediation.md);W7 合入+rebuild 后 **先 live apply 143** 再 W8 UI | +| DOC-CONTENT-CANONICAL-HASH-DRIFT | 旧受控文档 bootstrap 裁剪 Markdown 双空格硬换行并将 canonical SHA 写入账本/DocGov,但未同步文件;正文读取把完整性冲突误报 404,lease/list sync 又放大并制造刷新后加载死锁 | **PASS(真实 UI)** | [audit](../audit/2026-09-14-project143-controlled-content-404.md);[UI report](../test-reports/2026-09-14-controlled-content-ui-acceptance.md)。代码已合 dev、schema 32、项目 143 定向 `migration_repair`;项目 143 `clean-run3` 与新项目 `full-chain-final` 主链及 restart 全部纯页面 PASS,目标 404=0 | [remediation](./2026-09-14-controlled-content-canonical-hash-remediation.md)。隔离 `TestReconcile_LegacyRepair_PG` 未执行,按用户“本轮只允许页面测试”的边界保留为工程测试债,不作为本轮 UI PASS 的替代证据 | | CHAT-HISTORY-REFRESH | 工作流激活后刷新,对话正文被阶段过滤器清空,但分类数量与锚点仍按全量返回 | **PASS** | [test-report](../test-reports/2026-09-13-chat-history-refresh-test-report.md);代码:`message_scope.go`、`chat_history_auth.go`、goose 00026/00027 | 真实 PI 刷新 E2E 待 dev 容器补录(自动化/PG 已 PASS) | | CHAT-INTENT-STATE | 真实会话被诊断探针污染;只读查询误启动文档写任务;错误动作与编辑状态刷新后丢失 | **FAIL** | [audit](../audit/2026-09-13-conversation-intent-runtime-state.md);dev `sess-p143-u9` / task run / lease 现场 | [remediation](./2026-09-13-conversation-intent-runtime-state-remediation.md) | | ENV-RESTART-SOURCE | `docker compose restart` 只重启旧镜像,健康检查无法证明合入代码已部署 | **PASS** | `env-service.sh rebuild` + 真实摘要重测 | 集成冒烟统一使用 `dev rebuild` |