From ae86b47f6f059e9e9d2ae6ea5b420398a84b0aca Mon Sep 17 00:00:00 2001 From: weichen Date: Sun, 20 Sep 2026 15:35:22 +0000 Subject: [PATCH] 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 --- .doc/ops/CURRENT.md | 3 ++- .../2026-09-20-chat-revise-bridge.md | 12 +++++----- .../short-term/2026-09-20-impact-loop-t1.md | 22 +++++++++---------- .../2026-09-20-project-trace-index-t2.md | 22 +++++++++---------- .../2026-09-20-recheck-soft-hold.md | 12 +++++----- .../short-term/2026-09-20-stage-reopen-l2.md | 14 ++++++------ .../2026-09-20-trace-multihop-t3.md | 12 +++++----- .doc/status/FEATURE-MATRIX.md | 2 +- 8 files changed, 50 insertions(+), 49 deletions(-) diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index ca7bd36e..0879dcf3 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -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 | diff --git a/.doc/ops/short-term/2026-09-20-chat-revise-bridge.md b/.doc/ops/short-term/2026-09-20-chat-revise-bridge.md index 6243c0ae..0db1a494 100644 --- a/.doc/ops/short-term/2026-09-20-chat-revise-bridge.md +++ b/.doc/ops/short-term/2026-09-20-chat-revise-bridge.md @@ -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`。 ## 相关链接 diff --git a/.doc/ops/short-term/2026-09-20-impact-loop-t1.md b/.doc/ops/short-term/2026-09-20-impact-loop-t1.md index 74a450cb..29fd8c60 100644 --- a/.doc/ops/short-term/2026-09-20-impact-loop-t1.md +++ b/.doc/ops/short-term/2026-09-20-impact-loop-t1.md @@ -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`,会得到同一份报告。 diff --git a/.doc/ops/short-term/2026-09-20-project-trace-index-t2.md b/.doc/ops/short-term/2026-09-20-project-trace-index-t2.md index 7b6a092a..a9dfc628 100644 --- a/.doc/ops/short-term/2026-09-20-project-trace-index-t2.md +++ b/.doc/ops/short-term/2026-09-20-project-trace-index-t2.md @@ -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`。 ## 相关链接 diff --git a/.doc/ops/short-term/2026-09-20-recheck-soft-hold.md b/.doc/ops/short-term/2026-09-20-recheck-soft-hold.md index 65e3f157..ebef2162 100644 --- a/.doc/ops/short-term/2026-09-20-recheck-soft-hold.md +++ b/.doc/ops/short-term/2026-09-20-recheck-soft-hold.md @@ -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` 时展示不可折叠的知悉勾选;项目页可对标记点「无需变更」。 ## 相关链接 diff --git a/.doc/ops/short-term/2026-09-20-stage-reopen-l2.md b/.doc/ops/short-term/2026-09-20-stage-reopen-l2.md index c412d40a..89339c8b 100644 --- a/.doc/ops/short-term/2026-09-20-stage-reopen-l2.md +++ b/.doc/ops/short-term/2026-09-20-stage-reopen-l2.md @@ -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 阶段。 ## 相关链接 diff --git a/.doc/ops/short-term/2026-09-20-trace-multihop-t3.md b/.doc/ops/short-term/2026-09-20-trace-multihop-t3.md index 7e8a5b82..12477dc6 100644 --- a/.doc/ops/short-term/2026-09-20-trace-multihop-t3.md +++ b/.doc/ops/short-term/2026-09-20-trace-multihop-t3.md @@ -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`,分析在索引未完成时不会说无影响。 ## 相关链接 diff --git a/.doc/status/FEATURE-MATRIX.md b/.doc/status/FEATURE-MATRIX.md index c7f13c33..0176efa0 100644 --- a/.doc/status/FEATURE-MATRIX.md +++ b/.doc/status/FEATURE-MATRIX.md @@ -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` |