From 6087d0bdefade9cdd779df0a8946f04a8fb6ec19 Mon Sep 17 00:00:00 2001 From: weichen Date: Wed, 16 Sep 2026 15:42:49 +0000 Subject: [PATCH] =?UTF-8?q?docs(test):=20archive=20PU8=20U9=E2=80=93U12=20?= =?UTF-8?q?flags=20scaffolding=20report?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Record default-off flag gates, unit evidence, and FEATURE-MATRIX partial status. Co-authored-by: Cursor --- .doc/ops/CURRENT.md | 1 + .../2026-09-16-pu8-u10-mutate-contract.md | 8 +-- .../2026-09-16-pu8-u11-docgov-contract.md | 8 +-- ...6-pu8-u12-workflow-run-control-contract.md | 8 +-- ...-09-16-pu8-u9-segment-proposal-contract.md | 8 +-- .../2026-09-16-full-backlog-override.md | 2 +- .../short-term/2026-09-16-pu8-u9-u12-flags.md | 48 ++++++++++++++ .doc/status/FEATURE-MATRIX.md | 2 +- ...2026-09-16-pu8-u9-u12-flags-test-report.md | 64 ++++++++++++++++--- .../2026-09-16-pu8-u9-u12-flags/app-short.txt | 1 + .../expansion-flags.txt | 18 ++++++ .../intentflow-summary.txt | 1 + 12 files changed, 143 insertions(+), 26 deletions(-) create mode 100644 .doc/ops/short-term/2026-09-16-pu8-u9-u12-flags.md create mode 100644 .doc/test-reports/assets/2026-09-16-pu8-u9-u12-flags/app-short.txt create mode 100644 .doc/test-reports/assets/2026-09-16-pu8-u9-u12-flags/expansion-flags.txt create mode 100644 .doc/test-reports/assets/2026-09-16-pu8-u9-u12-flags/intentflow-summary.txt diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index 99ea1d3d..7f983207 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -13,6 +13,7 @@ | owner | task | branch | worktree | mutex | status | |-------|------|--------|----------|-------|--------| +| Cursor | 2026-09-16-pu8-u9-u12-flags | feature/pu8-u9-u12-flags | /tmp/wt-pu8 | intent-plan | done | | Cursor | 2026-09-16-full-backlog-override | docs/override-nogo-full-backlog | - | architecture-docs | in_progress | | Cursor | 2026-09-16-gitea-nightly-docker-datadir | fix/gitea-nightly-docker-datadir | - | ci | done | | Cursor | 2026-09-16-gitea-nightly-host-tools | fix/gitea-nightly-host-tools | - | ci | done | diff --git a/.doc/ops/long-term/2026-09-16-pu8-u10-mutate-contract.md b/.doc/ops/long-term/2026-09-16-pu8-u10-mutate-contract.md index 37ba3146..6412f6cd 100644 --- a/.doc/ops/long-term/2026-09-16-pu8-u10-mutate-contract.md +++ b/.doc/ops/long-term/2026-09-16-pu8-u10-mutate-contract.md @@ -1,10 +1,10 @@ --- title: "PU8-U10 mutate — 获批后任务契约" -status: planned +status: in_progress created: 2026-09-16 updated: 2026-09-16 -owner: TBD -branch: feature/pu8-u10-mutate +owner: Cursor +branch: feature/pu8-u9-u12-flags mutex: intent-plan go_no_go: go flag: MULTI_INTENT_U10_MUTATE @@ -12,7 +12,7 @@ flag: MULTI_INTENT_U10_MUTATE # PU8-U10 mutate -**go/no-go**:no-go。独立 flag;高风险动作绑定 expected revision + 显式确认 + 执行前再授权;不依赖 U9。 +**go/no-go**:GO(覆盖授权)。独立 flag 默认 off;脚手架 dry-run + expected revision 门禁;不依赖 U9。 ## 负例 diff --git a/.doc/ops/long-term/2026-09-16-pu8-u11-docgov-contract.md b/.doc/ops/long-term/2026-09-16-pu8-u11-docgov-contract.md index bc4bc9a1..ae62a676 100644 --- a/.doc/ops/long-term/2026-09-16-pu8-u11-docgov-contract.md +++ b/.doc/ops/long-term/2026-09-16-pu8-u11-docgov-contract.md @@ -1,10 +1,10 @@ --- title: "PU8-U11 docgov action — 获批后任务契约" -status: planned +status: in_progress created: 2026-09-16 updated: 2026-09-16 -owner: TBD -branch: feature/pu8-u11-docgov +owner: Cursor +branch: feature/pu8-u9-u12-flags mutex: docgov go_no_go: go flag: MULTI_INTENT_U11_DOCGOV @@ -12,4 +12,4 @@ flag: MULTI_INTENT_U11_DOCGOV # PU8-U11 docgov -**go/no-go**:no-go。独立 flag/mutex;按钮与自然语言同一 owner command;项目 143 只读纪律不变。 +**go/no-go**:GO(覆盖授权)。独立 flag 默认 off;脚手架 dry-run + revision 门禁;项目 143 只读纪律不变。 diff --git a/.doc/ops/long-term/2026-09-16-pu8-u12-workflow-run-control-contract.md b/.doc/ops/long-term/2026-09-16-pu8-u12-workflow-run-control-contract.md index befb3727..3b0ddb2a 100644 --- a/.doc/ops/long-term/2026-09-16-pu8-u12-workflow-run-control-contract.md +++ b/.doc/ops/long-term/2026-09-16-pu8-u12-workflow-run-control-contract.md @@ -1,10 +1,10 @@ --- title: "PU8-U12 workflow/run-control — 获批后任务契约" -status: planned +status: in_progress created: 2026-09-16 updated: 2026-09-16 -owner: TBD -branch: feature/pu8-u12-workflow-run-control +owner: Cursor +branch: feature/pu8-u9-u12-flags mutex: workflow go_no_go: go flag: MULTI_INTENT_U12_RUN_CONTROL @@ -12,4 +12,4 @@ flag: MULTI_INTENT_U12_RUN_CONTROL # PU8-U12 workflow/run-control -**go/no-go**:no-go。独立 flag;双标签确认/取消仅一成功;投影停机时权威 GET 仍正确;回滚后计划可读/取消/finalize。 +**go/no-go**:GO(覆盖授权)。独立 flag 默认 off;脚手架 dry-run;双标签确认/取消与投影权威仍待 live 接线。 diff --git a/.doc/ops/long-term/2026-09-16-pu8-u9-segment-proposal-contract.md b/.doc/ops/long-term/2026-09-16-pu8-u9-segment-proposal-contract.md index da20a6af..c433e2f6 100644 --- a/.doc/ops/long-term/2026-09-16-pu8-u9-segment-proposal-contract.md +++ b/.doc/ops/long-term/2026-09-16-pu8-u9-segment-proposal-contract.md @@ -1,10 +1,10 @@ --- title: "PU8-U9 segment proposal — 获批后任务契约" -status: planned +status: in_progress created: 2026-09-16 updated: 2026-09-16 -owner: TBD -branch: feature/pu8-u9-segment-proposal +owner: Cursor +branch: feature/pu8-u9-u12-flags mutex: intent-plan go_no_go: go flag: MULTI_INTENT_U9_SEGMENT @@ -12,7 +12,7 @@ flag: MULTI_INTENT_U9_SEGMENT # PU8-U9 segment proposal -**go/no-go**:no-go。规则无法判断时才出 segment proposal;超时/越界 fail closed;非 U10–U12 默认前置。 +**go/no-go**:GO(覆盖授权)。脚手架:`MULTI_INTENT_U9_SEGMENT` 默认 off;开启后 stub fail-closed(malformed/timeout/越界)。规则无法判断时才出 segment proposal;非 U10–U12 默认前置。 ## 安全 stop gate diff --git a/.doc/ops/short-term/2026-09-16-full-backlog-override.md b/.doc/ops/short-term/2026-09-16-full-backlog-override.md index 5d0575e8..5df3aff1 100644 --- a/.doc/ops/short-term/2026-09-16-full-backlog-override.md +++ b/.doc/ops/short-term/2026-09-16-full-backlog-override.md @@ -26,7 +26,7 @@ mutex: architecture-docs 3. [ ] P2 IAM inventory + 410 + R13 4. [ ] P3 Playwright intent-plan 双标签 5. [ ] P4 PU6 + PU7 -6. [ ] P5 PU8 U9→U12 +6. [x] P5 PU8 U9→U12(flag 脚手架:`feature/pu8-u9-u12-flags`;见 [报告](../../test-reports/2026-09-16-pu8-u9-u12-flags-test-report.md);未合 dev) 7. [ ] P6 SWBOOT-00…09(10 stub) 8. [ ] P7 FAV 增量 diff --git a/.doc/ops/short-term/2026-09-16-pu8-u9-u12-flags.md b/.doc/ops/short-term/2026-09-16-pu8-u9-u12-flags.md new file mode 100644 index 00000000..4dcdf8d2 --- /dev/null +++ b/.doc/ops/short-term/2026-09-16-pu8-u9-u12-flags.md @@ -0,0 +1,48 @@ +--- +title: "P5 PU8 U9–U12 独立 flag 脚手架" +status: done +created: 2026-09-16 +updated: 2026-09-16 +owner: Cursor +branch: feature/pu8-u9-u12-flags +worktree: /tmp/wt-pu8 +mutex: intent-plan +--- + +# P5 PU8 U9–U12 独立 flag 脚手架 + +## 目标 + +为多意图扩面 U9–U12 落地独立 env flag(默认 OFF)与 stub/dry-run 端口,不升 `MULTI_INTENT_PLAN_TIER`。 + +## 范围 + +- `MULTI_INTENT_U9_SEGMENT` / `U10_MUTATE` / `U11_DOCGOV` / `U12_RUN_CONTROL` +- U9 segment proposal port + fail-closed stub +- U10–U12 dry-run adapters + `BuildOwnerMux` 门控 +- 单测证明默认 off 与 enable 路径不 panic + +## 非目标 + +- 真实 LLM 分段 / 升 tier / 合入 `dev` +- 真实 docgov/workflow 副作用写路径 + +## 步骤 + +1. [x] 独立 flags + `.env.example` +2. [x] segment proposal + expansion adapters + mux 门控 +3. [x] Assemble `BuildOwnerMux` 接线 +4. [x] 单测 + 测试报告 +5. [x] push(不合 `dev`) + +## 验收标准 + +- [x] 四 flag 默认 off;开 flag 不升 PlanTier +- [x] flag off ≡ legacy(无 LLM proposal、无新 adapters) +- [x] flag on:U9 fail-closed;U10–U12 dry-run/guarded +- [x] 报告归档 + +## 相关链接 + +- Contracts: [u9](../long-term/2026-09-16-pu8-u9-segment-proposal-contract.md) … [u12](../long-term/2026-09-16-pu8-u12-workflow-run-control-contract.md) +- Test report: [../../test-reports/2026-09-16-pu8-u9-u12-flags-test-report.md](../../test-reports/2026-09-16-pu8-u9-u12-flags-test-report.md) diff --git a/.doc/status/FEATURE-MATRIX.md b/.doc/status/FEATURE-MATRIX.md index 61987c24..96b3d5d8 100644 --- a/.doc/status/FEATURE-MATRIX.md +++ b/.doc/status/FEATURE-MATRIX.md @@ -49,7 +49,7 @@ |------|----------|------|----------|------|---------------------|-------| | 意图识别 L1 | 18 类 Intent、三分支消解、写/只读分流、双标签 `DOC_BUSY`、intent 纯依赖边界 | done | non_blocker | [intent-recognition](../system-design/intent-recognition/);[审计](../audit/2026-09-13-conversation-intent-runtime-state.md);[报告](../test-reports/2026-09-13-conversation-intent-runtime-state-test-report.md);[双标签](../test-reports/assets/2026-09-15-conversation-intent-dual-tab/live.json);[U1](../test-reports/2026-09-15-multi-intent-u1-contracts-test-report.md)–[U3](../test-reports/2026-09-15-multi-intent-u3-intentflow-pg-test-report.md) | **边界 before**:含 U9–U12 叙事混入 → **after**:U9–U12 迁至「多意图扩面」行。关闭:纯依赖边界回归即重开 | `intent` | | 多意图持久计划(U1–U8 基线) | app/intentflow 生命周期、HITL、默认 `legacy`、U1–U8 代码与安全基线 | done | non_blocker(默认 legacy) | [设计](../system-design/2026-09-15-multi-intent-hitl-plan.md);[U1](../test-reports/2026-09-15-multi-intent-u1-contracts-test-report.md)–[U8](../test-reports/2026-09-16-multi-intent-u8-task-generate-test-report.md);[Wave2 真 PI](../test-reports/2026-09-16-wave2-real-pi-evidence-test-report.md) | U8 已签。**Playwright 双标签**:覆盖 no-go 后实施中(见总控);升 `confirm/full` 另开 | `intent-plan` | -| 多意图扩面(U9–U12) | U9 LLM 分段实验;U10 mutate;U11 docgov;U12 workflow/run-control | planned | deferred_enhancement | [设计](../system-design/2026-09-15-multi-intent-hitl-plan.md);[go/no-go GO](../ops/research/2026-09-16-wave3-pu6-pu8-go-no-go.md);[总控](../ops/short-term/2026-09-16-full-backlog-override.md) | **2026-09-16 覆盖授权 GO**:分项独立 flag;默认 legacy tier | `intent-plan` | +| 多意图扩面(U9–U12) | U9 LLM 分段实验;U10 mutate;U11 docgov;U12 workflow/run-control | partial | deferred_enhancement | [设计](../system-design/2026-09-15-multi-intent-hitl-plan.md);[go/no-go GO](../ops/research/2026-09-16-wave3-pu6-pu8-go-no-go.md);[总控](../ops/short-term/2026-09-16-full-backlog-override.md);[flags 脚手架](../test-reports/2026-09-16-pu8-u9-u12-flags-test-report.md) | **脚手架已落地**:四独立 flag 默认 off;U9 stub fail-closed;U10–U12 dry-run。未升 PlanTier;真实 PI/live adapter 后续 | `intent-plan` | | 对话 / ctxmgr baseline | 多轮上下文、刷新/重登/重启恢复、授权同集正文与计数、U10 端口化停止扩面 | done | non_blocker | [multi-turn](../system-design/multi-turn-dialogue/);[刷新审计](../audit/2026-09-13-chat-history-refresh-disappears.md);[U10](../test-reports/2026-09-15-chatlog-contextasm-u10-test-report.md);[门禁 B3](../test-reports/2026-09-16-chat-refresh-gate-test-report.md)(项目 6359) | **before**:语义摘要误标 D5 混入 → **after**:摘要迁「语义摘要 D3」;D7 数据治理独立。U10 停止扩面 | `chat` | | 语义摘要(D3) | 授权后可见集合上的语义摘要;shadow → 可选替换 deterministic | planned | deferred_enhancement | [chat-agent-p6-backlog](../backlog/chat-agent-p6-backlog.md);[go/no-go GO](../ops/research/2026-09-16-wave3-pu6-pu8-go-no-go.md);[pu6](../ops/long-term/2026-09-16-pu6-semantic-summary-contract.md) | **覆盖授权 GO**:`SEMANTIC_SUMMARY_SHADOW` 默认 off | `chat` | | 对话数据治理(D7) | 留存/删除口径、库·备份·日志控制、敏感字段加密边界 | deferred | deferred_enhancement(违规则升 blocker) | [计划](../remediation/2026-09-16-feature-matrix-production-readiness-plan.md) Scope Boundaries | 先数据分类与现状盘点;确认当前基线违规 → 立即写 gap-matrix | `chat` | diff --git a/.doc/test-reports/2026-09-16-pu8-u9-u12-flags-test-report.md b/.doc/test-reports/2026-09-16-pu8-u9-u12-flags-test-report.md index b823870f..64c64be5 100644 --- a/.doc/test-reports/2026-09-16-pu8-u9-u12-flags-test-report.md +++ b/.doc/test-reports/2026-09-16-pu8-u9-u12-flags-test-report.md @@ -1,22 +1,70 @@ -# PU8 U9–U12 独立 flag 测试报告 +# PU8 U9–U12 独立 flag 脚手架 测试报告 ## 一、 测试背景 (Background) -覆盖 no-go 全量 backlog 实施。 + +P5 覆盖授权后需为 U9–U12 提供分项独立 flag 与最小端口脚手架。默认必须 OFF,且不得升 `MULTI_INTENT_PLAN_TIER`;flag off 行为等于当前 legacy。 ## 二、 测试目标 (Test Objectives) -见计划对应章节。 + +- 四 flag 默认 off;env 开启互不耦合 PlanTier +- U9:默认 disabled;开启后 malformed/timeout/越界 fail closed;正常路径不 panic +- U10–U12:默认不注册 adapters;开启后 dry-run/revision 门禁可用且不 panic +- 既有 intentflow 回归仍 PASS ## 三、 测试方案与环境 (Test Plan & Environment) -Go unit / flag default off。 + +| 项 | 值 | +|----|----| +| OS | linux | +| 分支 | `feature/pu8-u9-u12-flags`(自 `origin/dev@776b2b5`) | +| Go | `go test` 单元层 | +| 后端 | stub dry-run(无真实 LLM / 无领域写副作用) | +| 证据 | `.doc/test-reports/assets/2026-09-16-pu8-u9-u12-flags/` | ## 四、 预期结果 (Expected Results) -默认 off;开启路径 fail-closed 或 shadow。 + +| 场景 | 预期 | +|------|------| +| 空 env | 四 flag false;PlanTier=legacy | +| U9 off | `SEGMENT_PROPOSAL_DISABLED` | +| U9 on + 坏 schema / 超时 / 越界 | fail closed | +| U10–U12 off | `BuildOwnerMux` 不挂 Mutate/DocGov/RunControl | +| U10–U12 on | dry-run Execute 成功;缺 revision → `PLAN_ACTION_VERSION_CONFLICT` | +| 开 flag | PlanTier 仍为 legacy | ## 五、 实际测试结果与判定 (Actual Results & Evaluation) -- Verdict: PASS(单元) + +### 5.1 Expansion flags / segment / dry-run + +- **测试输入**:`go test ./internal/app/intentflow -run 'TestExpansion|TestActiveSegment|TestStubSegment|TestBuildOwner|TestDryRun|TestPlanTierIndependentOfExpansion' -count=1 -v` +- **实际输出**:见 [expansion-flags.txt](./assets/2026-09-16-pu8-u9-u12-flags/expansion-flags.txt)。8 用例全部 PASS。 +- **评价判定**:PASS +- **性能与耗时**:约 9ms + +### 5.2 intentflow 全包回归 + +- **测试输入**:`go test ./internal/app/intentflow -count=1` +- **实际输出**:`ok`(见 [intentflow-summary.txt](./assets/2026-09-16-pu8-u9-u12-flags/intentflow-summary.txt)) +- **评价判定**:PASS +- **性能与耗时**:约 13ms + +### 5.3 app 包(含 BuildOwnerMux 接线) + +- **测试输入**:`go test -short ./internal/app -count=1` +- **实际输出**:`ok`(见 [app-short.txt](./assets/2026-09-16-pu8-u9-u12-flags/app-short.txt)) +- **评价判定**:PASS +- **性能与耗时**:约 16ms ## 六、 自动化测试套件汇总 (Test Suite Execution) -见各 worktree `go test` 输出。 + +| 命令 | 结果 | +|------|------| +| `go test ./internal/app/intentflow -count=1` | PASS | +| `go test -short ./internal/app -count=1` | PASS | +| `go vet ./internal/app/intentflow ./internal/app` | PASS(无输出) | + +本轮为 flag/端口脚手架验收,使用 stub dry-run;未升 tier,未 rebuild `:8080`,未跑真实 PI。 ## 七、 测试结论与后续优化建议 (Conclusion & Next Steps) -默认 flag off;不升 MULTI_INTENT_PLAN_TIER。 + +脚手架达到分支交付标准(push `feature/pu8-u9-u12-flags`,**不合 `dev`**)。后续:U9 真实 PI eval;U10–U12 分项 live adapter + 授权负例;仍禁止默认升 `MULTI_INTENT_PLAN_TIER=full`。 diff --git a/.doc/test-reports/assets/2026-09-16-pu8-u9-u12-flags/app-short.txt b/.doc/test-reports/assets/2026-09-16-pu8-u9-u12-flags/app-short.txt new file mode 100644 index 00000000..ede713dd --- /dev/null +++ b/.doc/test-reports/assets/2026-09-16-pu8-u9-u12-flags/app-short.txt @@ -0,0 +1 @@ +ok chat-agent-system/internal/app 0.016s diff --git a/.doc/test-reports/assets/2026-09-16-pu8-u9-u12-flags/expansion-flags.txt b/.doc/test-reports/assets/2026-09-16-pu8-u9-u12-flags/expansion-flags.txt new file mode 100644 index 00000000..7acb2ea0 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-16-pu8-u9-u12-flags/expansion-flags.txt @@ -0,0 +1,18 @@ +=== RUN TestExpansionFlagsDefaultOff +--- PASS: TestExpansionFlagsDefaultOff (0.00s) +=== RUN TestExpansionFlagsEnvOn +--- PASS: TestExpansionFlagsEnvOn (0.00s) +=== RUN TestActiveSegmentProposerDisabledByDefault +--- PASS: TestActiveSegmentProposerDisabledByDefault (0.00s) +=== RUN TestStubSegmentProposerFailClosed +--- PASS: TestStubSegmentProposerFailClosed (0.01s) +=== RUN TestBuildOwnerMuxFlagOffNoExpansion +--- PASS: TestBuildOwnerMuxFlagOffNoExpansion (0.00s) +=== RUN TestBuildOwnerMuxEnablePathsNoPanic +--- PASS: TestBuildOwnerMuxEnablePathsNoPanic (0.00s) +=== RUN TestDryRunAdapterRejectsForeignKeys +--- PASS: TestDryRunAdapterRejectsForeignKeys (0.00s) +=== RUN TestPlanTierIndependentOfExpansionFlags +--- PASS: TestPlanTierIndependentOfExpansionFlags (0.00s) +PASS +ok chat-agent-system/internal/app/intentflow 0.009s diff --git a/.doc/test-reports/assets/2026-09-16-pu8-u9-u12-flags/intentflow-summary.txt b/.doc/test-reports/assets/2026-09-16-pu8-u9-u12-flags/intentflow-summary.txt new file mode 100644 index 00000000..15418bff --- /dev/null +++ b/.doc/test-reports/assets/2026-09-16-pu8-u9-u12-flags/intentflow-summary.txt @@ -0,0 +1 @@ +ok chat-agent-system/internal/app/intentflow 0.013s