merge: refresh local_dev tip before U9–U12 integrate

This commit is contained in:
weichen
2026-09-23 15:35:24 +00:00
6 changed files with 122 additions and 13 deletions
@@ -2,7 +2,7 @@
title: "PU7 PI change-report 叙事 — 获批后任务契约"
status: done
created: 2026-09-16
updated: 2026-09-17
updated: 2026-09-23
owner: Cursor-Auto
branch: feature/pu7-pi-narrative
mutex: docgov
@@ -13,6 +13,10 @@ go_no_go: go
**go/no-go**:GO(用户覆盖授权,见 Wave3 research)。脚手架已合 `dev`;W3 live(产品 PI + digest 绑定)已接线,默认 flag 仍 off。
## 2026-09-23 收口
修复后真实 MiniMax 复测 PASS(截断 hunk/impact 输入 + reasoning 目标落盘);报告见 [../../test-reports/2026-09-23-pi-narrative-closeout-test-report.md](../../test-reports/2026-09-23-pi-narrative-closeout-test-report.md)。FEATURE-MATRIX `docgov-pi-narrative` → `done`。默认 flag 仍 off;放量另授权。
## 目标
只读消费 immutable diff+lineage+risk floor 的 PI 叙事;任意 schema/超时/注入 → 全量 fallback。
@@ -27,11 +31,12 @@ go_no_go: go
## 路径
- `internal/docrevision/flags.go` / `narrative.go` / `service.go`
- `deploy/pi-agent/change-report-narrative-v1.mjs`
- `deploy/pi-agent/change-report-narrative-v1.mjs`;`runner.mjs` reasoning 目标落盘
- `web/.../ChangeReportPanel.tsx` / `changeReportView.ts`
- 报告:[../../test-reports/2026-09-16-pu7-pi-narrative-test-report.md](../../test-reports/2026-09-16-pu7-pi-narrative-test-report.md)
- W3 live:[../../test-reports/2026-09-17-w3-pi-change-report-narrative-test-report.md](../../test-reports/2026-09-17-w3-pi-change-report-narrative-test-report.md)
- short-term:[../short-term/2026-09-17-w3-pi-change-report-narrative.md](../short-term/2026-09-17-w3-pi-change-report-narrative.md)
- 收口:[../../test-reports/2026-09-23-pi-narrative-closeout-test-report.md](../../test-reports/2026-09-23-pi-narrative-closeout-test-report.md)
- short-term:[../short-term/2026-09-17-w3-pi-change-report-narrative.md](../short-term/2026-09-17-w3-pi-change-report-narrative.md);[../short-term/2026-09-23-pi-narrative-final-closeout.md](../short-term/2026-09-23-pi-narrative-final-closeout.md)
## 回滚
@@ -1,7 +1,7 @@
---
title: "docgov-pi-narrative 收口:修复后复测升 done"
task_id: pi-narrative-final-closeout-b-2026-09-23
status: in_progress
status: done
created: 2026-09-23
updated: 2026-09-23
owner: Cursor
@@ -15,7 +15,7 @@ write_scope: ["internal/app", "internal/sysadmin", ".doc"]
allowed_environments: []
head_sha: ""
mutex: docgov
review_state: pending
review_state: accepted
integration_state: pending
deployment: not_required
cleanup: pending
@@ -47,18 +47,18 @@ remote_sync: not_requested
## 步骤与验收
1. [x] 建场并认领 mutex `docgov`
2. [ ] 补强 live 测试输入与 flag-on Resolve 断言
3. [ ] 真实 PI 复测 + 前端分区 + vet/short/arch
4. [ ] MATRIX → done;CURRENT/pu7/sysadmin 同步
5. [ ] 测试报告归档;validate + queue enqueue;五态收口
2. [x] 补强 live 测试输入与 flag-on Resolve 断言
3. [x] 真实 PI 复测 + 前端分区 + vet/short/arch(live PASS @ MiniMax-M2.7-highspeed 7.65s)
4. [x] MATRIX → done;CURRENT/pu7/sysadmin 同步
5. [x] 测试报告归档;validate + integrate;五态收口
## 验证与证据
| 范围 / 被测 SHA | 命令与环境 | 预期 | 实际 / 判定 | 证据 / 脱敏说明 |
|---|---|---|---|---|
| live PI(进程 env flag) | `RUN_PI_E2E=1 … TestPiChangeReportNarrator_LiveMiniMax` | PASS;digest 原样;含截断差异 | pending | 报告 assets |
| 前端分区 | `overlayMode.test.ts` | PASS | pending | |
| 门禁 | `go vet` / `go test -short` / `arch-check --mode block` | 全绿 | pending | |
| live PI(进程 env flag) | `RUN_PI_E2E=1 … TestPiChangeReportNarrator_LiveMiniMax` | PASS;digest 原样;含截断差异 | PASS(7.65s) | [assets](../../test-reports/assets/2026-09-23-pi-narrative-closeout/live-minimax.txt) |
| 前端分区 | `overlayMode.test.ts` | PASS | PASS(14) | [overlay](../../test-reports/assets/2026-09-23-pi-narrative-closeout/overlay-mode.txt) |
| 门禁 | `go vet` / short narrative / `arch-check --mode block` | 全绿 | PASS | 收口报告 |
## 收口与交接
@@ -0,0 +1,71 @@
# PI change-report 叙事收口测试报告
## 一、 测试背景 (Background)
`docgov-pi-narrative` 在 W3(2026-09-17)曾宣称 done,后因 2026-09-20 调研发现两处实质缺口回退 `partial`:`facts.json` 仅计数、`--no-tools` 仅为 prompt。缺口已先后补齐;2026-09-23 pi-runner response-size 与 reasoning 落盘路径变化触发本行重验。本轮补强 live 输入、修复 reasoning 目标落盘,并以真实 MiniMax 复测后升 `done`(默认 flag 仍 off)。
## 二、 测试目标 (Test Objectives)
- live 路径携带截断 hunk/impact 文本;digest 原样回写
- flag-on `ResolveChangeReport` → `analysis_status=complete` 且服务端 `rule_risk` 不被覆盖
- runner reasoning 画像在 `--no-tools` 下将助手正文物化为 `narrative.md`
- 默认 `PI_CHANGE_REPORT_NARRATIVE=false` 保持
- UI 分区回归仍 PASS
## 三、 测试方案与环境 (Test Plan & Environment)
| 项 | 值 |
|----|----|
| OS | Linux |
| Go | go1.x(本机) |
| 被测 SHA | `fdbefbac`(合入 local_dev 后) |
| Runner | `http://127.0.0.1:18865` / `MiniMax-M2.7-highspeed` / typed-result-v1 |
| Flag | 进程级 `PI_CHANGE_REPORT_NARRATIVE=true`(测后无残留;compose 默认 false) |
| 证据 | `assets/2026-09-23-pi-narrative-closeout/` |
## 四、 预期结果 (Expected Results)
- Live PASS;summary 引用具体阈值变更而非空泛计数
- Resolve complete + medium risk 保留
- overlay 14 pass;负例套件仍绿
## 五、 实际测试结果与判定 (Actual Results & Evaluation)
### 5.1 真实 PI MiniMax(修复后输入)
- **测试输入 (Input)**:`RUN_PI_E2E=1 PI_CHANGE_REPORT_NARRATIVE=true go test -count=1 ./internal/app -run TestPiChangeReportNarrator_LiveMiniMax -v`
- **实际输出 (Actual Output)**:见 `live-minimax.txt`
```text
=== RUN TestPiChangeReportNarrator_LiveMiniMax
pi_narrative_test.go:158: elapsed=7.654s model=MiniMax-M2.7-highspeed raw={"schema_version":1,"schema_kind":"change_report_narrative_v1","input_digest":"5fbc5c7c082a6434802f442d03c1d92433e6f540715291f980b7bc6f28d6f88e","from_sha":"fromsha-closeout-20260923","to_sha":"tosha-closeout-20260923","summary":["性能指标中响应时间阈值从2秒收紧至1秒","验收口径调整,性能设计响应预算需复核"]}
--- PASS: TestPiChangeReportNarrator_LiveMiniMax (7.65s)
```
- **评价判定 (Evaluation / Verdict)**:PASS(digest 原样;summary 锚定 hunk 文本;Resolve complete)
- **性能与耗时 (Duration & Latency)**:7.65s
### 5.2 前端分区
- **测试输入 (Input)**:`npx tsx --test src/features/documentRevision/overlayMode.test.ts`
- **实际输出 (Actual Output)**:14 pass(见 `overlay-mode.txt`)
- **评价判定 (Evaluation / Verdict)**:PASS
- **性能与耗时 (Duration & Latency)**:~97ms
### 5.3 单测 / arch
- `go test -short` narrative / Resolve / CreateAgentCandidate_Flag:PASS
- `node deploy/pi-agent/reasoning-materialize.test.mjs`:PASS
- `./scripts/arch-check.sh --mode block`:PASS
### 5.4 默认 flag
- compose / `.env.example` 仍为 false(未改动放量配置)
## 六、 自动化测试套件汇总 (Test Suite Execution)
本轮为能力成熟度收口(non_blocker),适用范围:narrative 包 + app live + overlay + arch。非产品全链路 PI nightly;全量 `go test ./...` **NOT REQUIRED**(依据验证契约:范围门禁已覆盖受影响包)。
## 七、 测试结论与后续优化建议 (Conclusion & Next Steps)
达到 FEATURE-MATRIX `docgov-pi-narrative` → `done`。默认 flag off;dev/test 常驻开启另授权。观察窗后评估放量。
@@ -0,0 +1,5 @@
=== RUN TestPiChangeReportNarrator_LiveMiniMax
pi_narrative_test.go:158: elapsed=7.654s model=MiniMax-M2.7-highspeed raw={"schema_version":1,"schema_kind":"change_report_narrative_v1","input_digest":"5fbc5c7c082a6434802f442d03c1d92433e6f540715291f980b7bc6f28d6f88e","from_sha":"fromsha-closeout-20260923","to_sha":"tosha-closeout-20260923","summary":["性能指标中响应时间阈值从2秒收紧至1秒","验收口径调整,性能设计响应预算需复核"]}
--- PASS: TestPiChangeReportNarrator_LiveMiniMax (7.65s)
PASS
ok chat-agent-system/internal/app 7.660s
@@ -0,0 +1,28 @@
▶ document revision overlay modes
✔ pure hides all decorations (0.542424ms)
✔ manual only marks human hunks (0.091868ms)
✔ all marks human and agent differently (0.068918ms)
✔ same human hunk stays amber in manual and all (no pairwise style guarantee) (0.085537ms)
✔ exposes needs-content error code for empty orphan docs (0.066098ms)
✔ matches overlay hunks by section or text when ids differ (0.205044ms)
✔ aligns client block ids from head_block_map by order (0.157785ms)
✔ document revision overlay modes (2.058258ms)
▶ toolbar refresh + report entry reachability
✔ pickLatestChangeReportId prefers highest version with report (0.215954ms)
✔ first squad run alone still exposes a reachable report id (0.099397ms)
✔ second squad run keeps both history report entries and latest shortcut (0.127726ms)
✔ revisionRefreshKey is an independent refresh signal from docId (0.090297ms)
✔ toolbar refresh + report entry reachability (0.732318ms)
▶ change report view model
✔ surfaces risk items, project impact, doc impacts with advice, and open questions (0.403459ms)
✔ marks complete analysis as PI narrative vs factual fields (0.164325ms)
✔ preferReportId prioritizes pending over committed latest (0.056029ms)
✔ change report view model (0.730509ms)
ℹ tests 14
ℹ suites 3
ℹ pass 14
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 97.378459
+1 -1
View File
@@ -84,7 +84,7 @@ var featureMaturityCatalog = map[string]featureMaturity{
},
"PI_CHANGE_REPORT_NARRATIVE": {
state: implShadow, adapter: adapterDegraded,
reason: "只读事实已含截断后的差异片段和影响说明,不含整篇文档。开关默认关闭。叙事请求已用 reasoning profile;pi-agent 经 bind-mount 已带 --no-tools。未授权打开前保持 shadow",
reason: "只读事实已含截断差异;reasoning/--no-tools 目标落盘与真实 MiniMax 链路已复测。开关默认关闭,待放量授权前保持 shadow",
},
}