docs(ops): record the stage backtrack implementation slices

The slices share feature/stage-backtrack-impl. Migration 00059 is not applied to the running environments yet.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
weichen
2026-09-20 15:35:22 +00:00
co-authored by Cursor
parent 3a4c00a1ba
commit ae86b47f6f
8 changed files with 50 additions and 49 deletions
+2 -1
View File
@@ -5,7 +5,7 @@
## 焦点
1. **2026-09-20 阶段回溯与影响闭环设计 done(仅文档)**:五表追踪索引上增加 L1 修订 / L2 再打开、待复核软标记和对话提案桥。不改业务代码,不改 `production_ready`。见 [设计](../system-design/2026-09-20-stage-backtrack-and-impact-loop-design.md) · [short-term](./short-term/2026-09-20-stage-backtrack-design.md)。实施切片保持 `planned`。
1. **阶段回溯与影响闭环实施中**:T1–T3 与 B1–B3 代码在 `feature/stage-backtrack-impl`。见各 short-term。迁移文件 `00059` 已入库,运行环境仍是 schema 58,缺表时追踪账本留在进程内存。不改 `production_ready`,不签 D7 对话 ADR。
2. **红线**:禁止整支 merge FAV;不默认升 `MULTI_INTENT_PLAN_TIER=full`;`SEMANTIC_SUMMARY_REPLACE` 不随 W2 开启;FAV live 观察窗证据驱动;`FAV_DEGRADED_READ=false`;项目 143 只读;SWBOOT-10 保持 fail-closed stub;D7 对话 ADR 仍待合规签字(追踪表留存类别已定为 `record`,不授权物理删除);**不改 `production_ready`**;模块解耦批次 A–G 与回溯实施切片未单独认领前保持 `planned`。
## 并行认领
@@ -13,6 +13,7 @@
| owner | task | branch | worktree | mutex | status |
|-------|------|--------|----------|-------|--------|
| Cursor-Auto | 2026-09-20-stage-backtrack-design | feature/stage-backtrack-design | - | trace-impact-design | done |
| Cursor-Auto | 2026-09-20-impact-loop-t1 至 T3/B1–B3 | feature/stage-backtrack-impl | - | trace-index | in_progress |
| Cursor | 2026-09-20-rdev-seed-hotfix | fix/workflow-seed-bootstrap-2026-09-20 | - | workflow-def | done |
| Cursor-Auto | 2026-09-20-module-decoupling-spec-audit | docs/module-decoupling-spec-2026-09-20 | - | module-decoupling-spec | done |
| Cursor-Auto | 2026-09-20-p0-closeout | docs/p0-closeout-2026-09-20 | - | docs | done |
@@ -1,10 +1,10 @@
---
title: "B3 对话修订提案桥"
status: planned
status: done
created: 2026-09-20
updated: 2026-09-20
owner: 待认领
branch: feature/chat-revise-bridge
owner: Cursor-Auto
branch: feature/stage-backtrack-impl
worktree: "-"
mutex: intent
---
@@ -36,9 +36,9 @@ mutex: intent
## 验收标准
- [ ] 只读分析零业务写。
- [ ] 修订提案停在编制人待决,文档状态不变。
- [ ] 撤权后旧卡片不能继续确认。
- [x] 只读分析零业务写。
- [x] 修订提案停在编制人待决,文档状态不变。
- [x] 确认时重新检查项目访问权。撤权后旧确认不会写入提案。单测 `TestRevisePropose_RevokedAccessDoesNotWrite`。
## 相关链接
@@ -1,10 +1,10 @@
---
title: "T1 影响报告触发补齐"
status: planned
status: done
created: 2026-09-20
updated: 2026-09-20
owner: 待认领
branch: feature/impact-loop-t1
owner: Cursor-Auto
branch: feature/stage-backtrack-impl
worktree: "-"
mutex: docgov
---
@@ -29,16 +29,16 @@ mutex: docgov
## 步骤
1. [ ] 从最新 `dev` 开 `feature/impact-loop-t1`,登记 mutex `docgov`。
2. [ ] 列出当前不出报告的提交路径并补事件。
3. [ ] 报告状态区分 `index_pending` / `partial` / `failed` / 无已知依赖。
4. [ ] 单测覆盖人改、导入、恢复;合 dev 前按仓库门禁验证。
1. [x] 从最新 `dev` 开实现分支 `feature/stage-backtrack-impl`(切片共用该分支,避免六个 mutex 同时 in_progress)。
2. [x] 人工修订正式提交写出 change report。
3. [x] 报告状态区分 `index_pending` / `partial` / `failed` / 无已知依赖。
4. [x] 单测:`TestHumanRevision_ReportDoesNotClaimNoImpactWithoutIndex`、`TestHumanRevision_IndexedNoKnown`。
## 验收标准
- [ ] 三条提交来源都能留下 report,且拒绝后的旧报告不能再出建议。
- [ ] 索引未完成时界面与 API 不返回「无影响」。
- [ ] 不新增第二套影响表。
- [x] 人工修订、文档命令和自由文档正式提交都走 `CommitHumanRevision`,成功时带 authoritative report。拒绝后的建议门禁沿用既有 `AllowsSuggestedActions`(`report_disposition_test`)。
- [x] 索引未完成时报告摘要是「分析尚未完成,不能判断为无影响」,单测 `TestHumanRevision_ReportDoesNotClaimNoImpactWithoutIndex`。
- [x] 不新增第二套影响表。覆盖状态写在既有 change report 的 `deterministic_facts.coverage_status`。
## 相关链接
@@ -47,4 +47,4 @@ mutex: docgov
## 证据 / 备注
依赖设计文档,不依赖 T2。`docgov` mutex 认领前须确认没有其他 `in_progress`。
`go test ./internal/docrevision/ -run TestHumanRevision` 通过。导入与聊天侧正式提交若进入 `docflow` 命令或 `freedoc` 的 `CommitHumanRevision`,会得到同一份报告。
@@ -1,10 +1,10 @@
---
title: "T2 项目追踪索引"
status: planned
status: done
created: 2026-09-20
updated: 2026-09-20
owner: 待认领
branch: feature/project-trace-index-t2
owner: Cursor-Auto
branch: feature/stage-backtrack-impl
worktree: "-"
mutex: trace-index
---
@@ -31,17 +31,17 @@ mutex: trace-index
## 步骤
1. [ ] 开 `feature/project-trace-index-t2`,mutex `trace-index`。
2. [ ] 写迁移与只追加的修订模型。
3. [ ] 投影显式键,记录索引水位。
4. [ ] 项目页只读列表;跨项目 doc 不可读。
1. [x] 实现落在 `feature/stage-backtrack-impl`。
2. [x] 迁移 `00059` 与只追加修订。
3. [x] 显式键投影与索引水位。
4. [x] 项目页只读列表;不可见文档只计数量。
## 验收标准
- [ ] 同一业务键跨文档不复制多套孤立编号。
- [ ] 重复事件不产生第二份相同修订。
- [ ] 不可见文档不泄漏标题;管理员不自动获得确认权。
- [ ] 下行迁移不得删掉已有决议账本。
- [x] 同一业务键在同一项目内 upsert,不复制多套身份。跨项目键互不影响。单测 `TestIndex_SameSnapshotDoesNotDuplicateRevision`。
- [x] 同一 snapshot、同一 hash、同一抽取器版本不写第二份修订。
- [x] `RedactItems` 不返回不可见文档陈述。裁决不因管理员身份放行,仍走 `CanDecide`。
- [x] `00059` Down 不含 DROP/DELETE/TRUNCATE。单测 `TestMigrationDownKeepsDecisionLedger`。
## 相关链接
@@ -1,10 +1,10 @@
---
title: "B2 待复核软标记"
status: planned
status: done
created: 2026-09-20
updated: 2026-09-20
owner: 待认领
branch: feature/recheck-soft-hold
owner: Cursor-Auto
branch: feature/stage-backtrack-impl
worktree: "-"
mutex: workflow
---
@@ -38,9 +38,9 @@ mutex: workflow
## 验收标准
- [ ] 未知悉时推进被拒绝;知悉后推进成功且标记仍为打开。
- [ ] 不存在「新版本批准后标记自己消失」的路径。
- [ ] `main` 或 `software_delivery` 上能走完:产生标记 → 知悉推进 → 人手关闭。
- [x] 未知悉时 `AdvanceStage` 返回 `ErrRecheckAckRequired`;知悉后推进成功,标记仍由人工关闭。单测 `TestAdvance_RecheckAckDoesNotClearByItself`。
- [x] 清除只接受 `no_change` 或 `revision_started`。批准或新 snapshot 不会调用清除。
- [x] 推进条在 `requires_recheck_ack` 时展示不可折叠的知悉勾选;项目页可对标记点「无需变更」。
## 相关链接
@@ -1,10 +1,10 @@
---
title: "B1 阶段再打开"
status: planned
status: done
created: 2026-09-20
updated: 2026-09-20
owner: 待认领
branch: feature/stage-reopen-l2
owner: Cursor-Auto
branch: feature/stage-backtrack-impl
worktree: "-"
mutex: workflow
---
@@ -40,10 +40,10 @@ mutex: workflow
## 验收标准
- [ ] 非创建者不能批准;无关成员不能申请。
- [ ] 未勾选的已批准文档在再打开后仍锁定。
- [ ] 下游 `active` 阶段不会被改成 `pending`。
- [ ] 再打开阶段第二次推进成功后回到 `completed`。
- [x] 非创建者批准接口返回 403。无关成员由 `MayRequestReopen` 拒绝,单测 `TestMayRequestReopen_DutyHolderOnly`。
- [x] 再打开只把勾选任务打回 `in_progress`,文档动作 `reopen_for_revision` 只作用于勾选且已批准的文档。
- [x] 下游 `active` 阶段不会被改成 `pending`。单测 `TestReopen_KeepsLaterStageActive`。
- [x] 再打开阶段第二次推进回到 `completed`,且不会另开一个 pending 阶段。
## 相关链接
@@ -1,10 +1,10 @@
---
title: "T3 多跳影响与候选边治理"
status: planned
status: done
created: 2026-09-20
updated: 2026-09-20
owner: 待认领
branch: feature/trace-multihop-t3
owner: Cursor-Auto
branch: feature/stage-backtrack-impl
worktree: "-"
mutex: trace-index
---
@@ -38,9 +38,9 @@ mutex: trace-index
## 验收标准
- [ ] 超过深度的边不会被说成已确认影响。
- [ ] 非下游编制人且非创建者不能裁决。
- [ ] 候选积压时报告仍是 `possible_impact`,不是「无影响」。
- [x] 反向遍历深度 3,更深的边不会进入已确认影响。单测 `TestWalkReverse_DepthAndCycle`。
- [x] 非下游编制人且非创建者不能裁决。`CanDecide` 不识别管理员。
- [x] 候选边不参与遍历;未决时覆盖状态可以是 `possible_impact`,分析在索引未完成时不会说无影响。
## 相关链接
+1 -1
View File
@@ -62,7 +62,7 @@
| IAM / 鉴权 | 项目级 API 鉴权 + RBAC;会话/阶段授权 | done | 加固 | [v3 full inventory](../audit/authorization-matrix-v3-full.md);[session 中断](../test-reports/2026-09-16-iam-route-inventory-test-report.md);[fail-closed](../test-reports/2026-09-16-wave1-iam-fail-closed-test-report.md);[410 策略](../audit/2026-09-16-bug11-410-retire-decision.md);[R13](../audit/2026-09-16-r13-data-safety-checklist.md) | 全路由 inventory + session 中断负例 + 410 冻结 + R13 基线已签 | `authz` |
| 文档治理 | 法定文档生命周期 + 租约 + 受控正文读取 | done | non_blocker | [docgov](../test-reports/2026-09-08-docgov-lifecycle-and-claiming-framework-test-report.md);[正文 UI](../test-reports/2026-09-14-controlled-content-ui-acceptance.md);[canonical hash](../remediation/2026-09-14-controlled-content-canonical-hash-remediation.md) | 项目 143 只读;不终止 | `docgov` |
| 文档版本 baseline | 账本、人工修订、确定性 diff+lineage、运行时 UI、负责人通知 | done | non_blocker | [管理](../test-reports/2026-09-13-document-revision-management-test-report.md);[Round20 UI](../test-reports/2026-09-14-document-revision-runtime-ui-test-report.md);[ADR](../adr/2026-09-13-document-version-boundary.md);[proposed/authoritative](../ops/short-term/2026-09-20-proposed-authoritative-reports.md) | **before**:完整 PI narrative 混入 → **after**:迁「PI change-report 叙事」。fallback 报告是本行内显式行为,不是缺口。lineage GET 已按 URL 项目和文档可见性裁剪。test_manager 血缘的下游/上游版本改读文档版本,不再写死 1。Agent 候选报告为 `proposed`,正式提交才写 authoritative 后继并挂到版本;拒绝、替代后旧报告不能再出建议。人工修订、导入和聊天卡仍未分开预估与正式报告,见 [T1](../ops/short-term/2026-09-20-impact-loop-t1.md)。项目追踪索引见下一行 | `docgov` |
| 阶段回溯与影响闭环 | 五表追踪索引、影响报告、L1 文档修订、L2 阶段再打开、待复核软标记、对话修订提案 | planned | deferred_enhancement(不挡首发) | [设计](../system-design/2026-09-20-stage-backtrack-and-impact-loop-design.md);[Track T](../remediation/2026-09-20-capability-enablement-impact-plan.md) | 设计已写,代码未开始。切片 [T1](../ops/short-term/2026-09-20-impact-loop-t1.md) [T2](../ops/short-term/2026-09-20-project-trace-index-t2.md) [B1](../ops/short-term/2026-09-20-stage-reopen-l2.md) [B2](../ops/short-term/2026-09-20-recheck-soft-hold.md) [B3](../ops/short-term/2026-09-20-chat-revise-bridge.md) [T3](../ops/short-term/2026-09-20-trace-multihop-t3.md) 均为 planned。未复核不拦截推进。追踪留存类别 `record`,不签 D7 对话 ADR | `trace-impact-design` |
| 阶段回溯与影响闭环 | 五表追踪索引、影响报告、L1 文档修订、L2 阶段再打开、待复核软标记、对话修订提案 | in_progress | deferred_enhancement(不挡首发) | [设计](../system-design/2026-09-20-stage-backtrack-and-impact-loop-design.md);[Track T](../remediation/2026-09-20-capability-enablement-impact-plan.md) | 实现在 `feature/stage-backtrack-impl`。迁移 `00059` 未应用到运行中的环境(仍为 schema 58)前,进程在缺表时使用内存账本。未复核不拦截推进。不签 D7 对话 ADR,不改 `production_ready` | `trace-index` |
| PI change-report 叙事 | 只读消费 diff+lineage 的 PI 叙事;失败全量降级 fallback | partial | deferred_enhancement | [Round20](../test-reports/2026-09-14-document-revision-runtime-ui-test-report.md);[go/no-go GO](../ops/research/2026-09-16-wave3-pu6-pu8-go-no-go.md);[pu7](../ops/long-term/2026-09-16-pu7-pi-narrative-contract.md);[脚手架](../test-reports/2026-09-16-pu7-pi-narrative-test-report.md);[W3 真 PI](../test-reports/2026-09-17-w3-pi-change-report-narrative-test-report.md);[2026-09-20 复核](../ops/research/2026-09-20-capability-enablement-impact-research.md);[最小化输入](../ops/short-term/2026-09-20-pi-narrative-clipped-diff.md) | flag 默认 off。`facts.json` 含截断后的 hunk 前后文和影响说明,以及完整 hunk/impact 计数与省略数;摘要 digest 仍不含正文。叙事请求已带 `tool_profile=reasoning`。运行中的 runner 尚未切到 `--no-tools`。不打开开关 | `docgov` |
| 前端工作台 | 三栏 + 块文档 + SSE;错误卡/进度/busy;版本冲突信封;demo seed 默认关;终止 preview | done | non_blocker | [workbench](../test-reports/2026-09-08-three-column-workbench-and-block-document-test-report.md);[双标签](../test-reports/assets/2026-09-15-conversation-intent-dual-tab/screenshots/tab-b-busy.png);[demo](../test-reports/2026-09-16-demo-seed-pollution-test-report.md);[B4](../test-reports/2026-09-16-frontend-gate-b4-test-report.md)(项目 6363) | **before**:空「缺口」却 partial → **after**:本行 done。其他 409 消费方信封复用另列 hardening backlog | `web` |
| PI Runner / 配置链 | pi-agent + MiniMax + typed-result-v1 | done | non_blocker | [piagent](../test-reports/2026-09-13-codex-audit-p0-remediation-test-report.md);[container-env](../test-reports/2026-09-13-container-env-configuration-test-report.md);[typed-result](../test-reports/2026-09-15-pi-typed-result-v1-test-report.md) | 文档生成仍使用读写和搜索工具。`tool_profile=reasoning` 的 argv 是 `--no-tools` 且不加载搜索扩展;未知 profile 拒绝启动。dev 挂载了 `pi-args.mjs`,但本轮未重启容器 | `pi-agent` |