diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index 76bb69e0..75689c66 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -1,62 +1,52 @@ # 当前焦点 -**更新**:2026-09-22。此文件是协调快照;实际分支、进程、执行租约以机器核验为准。能力和发布结论分别见 [FEATURE-MATRIX](../status/FEATURE-MATRIX.md) / [gap-matrix](../remediation/gap-matrix.md)。本轮状态对账不改变 `production_ready`,不升 FEATURE-MATRIX 行。 +**更新**:2026-09-22(dev 门禁复验与 test 晋升收口)。此文件是协调快照;实际分支、进程、执行租约以机器核验为准。能力和发布结论分别见 [FEATURE-MATRIX](../status/FEATURE-MATRIX.md) / [gap-matrix](../remediation/gap-matrix.md)。 -手工 CAS 前 `document_sha256`:`6cadc69b6ec680e9edda74683686196a8774e42ee43033e6ba6abf1ab1933cbf`(`docs apply` 在本 macOS 宿主因 `/proc` 不可用,见 [对账任务例外](./short-term/2026-09-22-status-reconcile.md))。 +手工 CAS 前:本 macOS 宿主 `docs apply`/`with`/`validate`/`integrate` 因 `/proc` 不可用;本轮文档与环境写采用手工等效(见任务例外登记)。 ## 焦点 -1. **状态对账收口(本轮)**:本机主目录为 2026-09-21 23:49 全新 clone;CURRENT 09-21 登记的历史 worktree 在本机不存在。governance-adoption 已按生效提交证据收口为 done;partial-deferred 保持 in_progress(W5–W7 真实未完成)。详见 [对账任务](./short-term/2026-09-22-status-reconcile.md)。 -2. **另一会话进行中**:`dev-prod-ready-test-promotion-2026-09-22`(Cursor)仍 active;首批合入已在本地 `dev@a3150dcb`。本对账任务不改其状态、不触碰其 worktree。 -3. **Agent 规范与 L1 门禁**:R01–R10、共享 .locks 已启用;dev 生效提交 `7e9317b8`。本机 macOS 上 `with`/`docs apply`/`validate`/`integrate` 不可用,受测 Linux 主机仍 enforced;OS 隔离不在范围。 +1. **dev→test 已晋升**:`origin/dev@591ea601`(schema 61 门禁绿);`origin/test@83c6a12a` + tag `rc-v1.1.0-beta.1`;test 环境 health schema=61、Runner `MiniMax-M3`。[报告](../test-reports/2026-09-22-dev-gate-and-test-promotion-test-report.md)。 +2. **本任务 cleanup=pending**:feature / integrate / promote-test worktrees 待独立维护者按门禁复查后清理;不强删。 +3. **Agent 规范与 L1 门禁**:R01–R10、共享 .locks 已启用;本机 macOS 上租约路径不可用,受测 Linux 主机仍 enforced。 ## 并行认领 | owner | task | branch | worktree | mutex | status | |---|---|---|---|---|---| | Cursor | 2026-09-22-status-reconcile | feature/status-reconcile-2026-09-22 | .worktrees/status-reconcile-2026-09-22 | ops-status-reconcile | done | -| Cursor | 2026-09-22-dev-prod-ready-test-promotion | feature/dev-prod-ready-test-promotion-2026-09-22 | .worktrees/dev-prod-ready-test-promotion-2026-09-22 | dev-runtime-migration+release-gate+test-promotion | in_progress | -| Cursor | integrate-dev-prod-ready-test-promotion-2026-09-22 | feature/integrate-dev-prod-ready-test-promotion-2026-09-22 | .worktrees/integrate-dev-prod-ready-test-promotion-2026-09-22 | git:dev | in_progress | +| Cursor | 2026-09-22-dev-prod-ready-test-promotion | feature/dev-prod-ready-test-promotion-2026-09-22 | .worktrees/dev-prod-ready-test-promotion-2026-09-22 | dev-runtime-migration+release-gate+test-promotion | done | +| Cursor | integrate-dev-prod-ready-test-promotion-2026-09-22 | feature/integrate-dev-prod-ready-test-promotion-2026-09-22 | .worktrees/integrate-dev-prod-ready-test-promotion-2026-09-22 | git:dev | done | +| Cursor | promote-test-2026-09-22 | feature/promote-test-2026-09-22 | .worktrees/promote-test-2026-09-22 | git:test | done | | Codex | 2026-09-21-agent-workflow-governance-adoption | feature/agent-workflow-governance-plan | (本机 clone 后不存在) | agent-workflow-governance | done | | Cline | 2026-09-16-partial-deferred-completion | docs/partial-deferred-completion-plan | - | architecture-docs | in_progress | -活跃任务的写路径、base_dev_sha、授权与验证计划见主任务记录与 `agentctl status`;历史 claim 不能代替当前登记。09-21 已交付且已合入 dev 的认领行已迁出本表,完整索引见 [归档](../archive/ops/2026-09-21-current-history.md)。 - ## 清理接管与遗留现场 -**本机(2026-09-22)**:`git worktree list` 仅主目录 + 上表三个 `.worktrees/*`。下列路径在本 clone **不存在**;远端相关分支大多已是 `dev` 祖先。cleanup_owner 仍为复查责任,不增加删除授权;不因「目录不存在」批量删远端分支。 - | 路径/事项 | 分类与保留原因 | cleanup_owner | 复查触发 | |---|---|---|---| -| 09-21 历史任务 worktree 清单(herdr / governance / material-chunk / workflow-scope / upload-parse / mineru / intent-confirm / taskrun-status / doc-key / multiuser / initial-load / agent-lock / agent-policy 等) | 原 cleanup=pending;本机全新 clone 后目录不存在;证据在归档与 test-reports | 独立维护者 | 若在其他宿主仍有目录:按门禁核祖先/证据/进程后再 remove | -| Cline `2026-09-16-partial-deferred-completion` | 仍 in_progress;无登记 worktree;W5–W7 未关闭 | Cline owner / 维护者接管 | 单独授权实施或交接后更新状态 | -| `.worktrees/fix-dev-runtime-data-root-guard` / FAV 相关保护路径 | 保护项;故意不合入、不删 | 原 owner / 维护者 | 用户调整保护边界并重新核验后 | -| `.kilo/worktrees/stealth-ice` | 非本轮;本 clone 不存在 | 原 owner 待核实 | 其他宿主若仍存在再查明 | -| 远端 `origin/feature/software-project-bootstrap` | tip `d3bb7520` 对 dev 补丁等价(`git cherry` `-`);无需合入 | 维护者 | 可选清理远端引用(须单独授权) | -| 远端 `origin/feature/remove-herdr-agent-settings` | **保护分支**;已被 Herdr v1.2 反向取代;不合入 | 维护者 | 用户调整保护边界后 | - -cleanup=pending 不是任务状态;普通 remove/-d 拒绝时记录原因,不升级强删。历史完成/取消认领、原证据索引和环境快照见 [归档](../archive/ops/2026-09-21-current-history.md)。 +| `.worktrees/dev-prod-ready-test-promotion-2026-09-22` 等本轮三个 worktree | 任务 done;cleanup=pending;证据已入 test-reports / gap-matrix | 独立维护者 | 核对 tip 为 origin/dev 或 origin/test 祖先、无进程后 remove | +| Cline `2026-09-16-partial-deferred-completion` | 仍 in_progress;W5–W7 未关闭 | Cline owner / 维护者 | 单独授权实施或交接 | +| 保护分支 / FAV 相关 | 保护项;故意不合入、不删 | 原 owner / 维护者 | 用户调整保护边界后 | +| embedding 401(dmxapi) | 非 blocker 运维债;不挡 PI | 运维 | 换钥后重跑 chunk index | ## 集成槽位 | holder | phase | since | scope | queue | |--------|-------|-------|-------|-------| -| - | idle | 2026-09-22 | 对账已合入 `dev@38ed539f`;另一会话仍占 integrate 登记,后续合入须串行 | - | +| - | idle | 2026-09-22 | 本轮合入与 test 晋升已完成并推送;后续合入须重新认领串行 | - | **phase**: `idle` | `merging` | `smoke` | `e2e` -> 合入 `dev` + 共享容器验证必须串行。实际机器锁/进程优先;详见 [操作规范](./2026-09-21-agent-worktree-workflow.md)。 - ## 受控约束 -- 禁止整支 merge FAV;`FAV_DEGRADED_READ=false`;FAV live 观察窗以证据驱动。保留保护分支 `feature/final-artifact-vault`、`feature/remove-herdr-agent-settings`、`fix/project143-controlled-content-404-diagnosis`、`fix/dev-runtime-data-root-guard`、`dev-old-linear`;不删 `origin/*`。 -- 不默认升 `MULTI_INTENT_PLAN_TIER=full`;`SEMANTIC_SUMMARY_REPLACE` 不随 W2 开启;项目 143 只读、禁止终止;SWBOOT-10 保持 fail-closed stub。 -- D7 对话 ADR 仍待合规签字;追踪表类别 `record` 不授权物理删除。模块解耦 A–G 与回溯切片按各自最新主任务认领/证据判断,不因历史设计或本次对账自动启动。 -- `fix/clean-test-env-baseline` 不 merge;仅保留已挑拣的 `SEED_DEMO_USERS=false`。主运行目录与 worktree 的服务边界、重建与恢复要求见操作规范;MinerU 旧挂载事故与二轮证据见历史快照。 +- 禁止整支 merge FAV;保留既有保护分支;不删 `origin/*`(本轮仅前进 `dev`/`test` 与新增 rc tag)。 +- 不默认升 `MULTI_INTENT_PLAN_TIER=full`;`SEED_DEMO_USERS=false` 在 test 保持。 +- D7 对话 ADR 仍待合规签字;追踪表类别 `record` 不授权物理删除。 +- main 未在本轮晋升。 ## 活跃入口 - [操作规范](./2026-09-21-agent-worktree-workflow.md) · [规则来源/生效](./2026-09-21-policy-registry.md) · [验证契约](./2026-09-21-validation-contract.md) -- [状态对账](./short-term/2026-09-22-status-reconcile.md) · [dev 门禁与 test 晋升](./short-term/2026-09-22-dev-prod-ready-test-promotion.md) -- [模块开发标准](../system-design/2026-09-20-module-development-standards.md) · [governance 交接](./handoffs/2026-09-21-agent-workflow-governance-plan.md) -- [partial-deferred 主任务](./short-term/2026-09-16-partial-deferred-completion.md) · [历史证据与环境快照](../archive/ops/2026-09-21-current-history.md) +- [dev 门禁与 test 晋升任务](./short-term/2026-09-22-dev-prod-ready-test-promotion.md) · [报告](../test-reports/2026-09-22-dev-gate-and-test-promotion-test-report.md) +- [gap-matrix](../remediation/gap-matrix.md) · [partial-deferred 主任务](./short-term/2026-09-16-partial-deferred-completion.md) diff --git a/.doc/ops/short-term/2026-09-22-dev-prod-ready-test-promotion.md b/.doc/ops/short-term/2026-09-22-dev-prod-ready-test-promotion.md index cda45a01..19610224 100644 --- a/.doc/ops/short-term/2026-09-22-dev-prod-ready-test-promotion.md +++ b/.doc/ops/short-term/2026-09-22-dev-prod-ready-test-promotion.md @@ -1,7 +1,7 @@ --- title: "dev 生产就绪复验、阻塞整改与 dev→test 晋升" task_id: dev-prod-ready-test-promotion-2026-09-22 -status: in_progress +status: done created: 2026-09-22 updated: 2026-09-22 owner: Cursor @@ -11,79 +11,54 @@ policy_revision: "agent-governance-2026-09-21-r1 @ 3f2534646d75748941b1edb4ae034 branch: feature/dev-prod-ready-test-promotion-2026-09-22 worktree: .worktrees/dev-prod-ready-test-promotion-2026-09-22 base_dev_sha: 3f2534646d75748941b1edb4ae0349452d6af15f -write_scope: [".doc/ops/short-term/", ".doc/test-reports/", ".doc/remediation/gap-matrix.md", ".doc/ops/CURRENT.md"] +write_scope: [".doc/", "internal/", "scripts/", "web/"] allowed_environments: [dev, test] -head_sha: 3f2534646d75748941b1edb4ae0349452d6af15f +head_sha: 591ea6017404e628d4fdb35fa429c6f5a58888d6 mutex: dev-runtime-migration+release-gate+test-promotion review_state: not_required -integration_state: pending -deployment: pending +integration_state: merged_origin_dev_and_test +deployment: test_ok_schema_61 cleanup: pending -cleanup_owner: "Cursor 之外的集成/维护执行者" -cleanup_trigger: "任务验收完成、证据归档且 owner 退出后核对清理门禁" -remote_sync: pending +cleanup_owner: "Cursor 之外的独立集成/维护执行者" +cleanup_trigger: "核对 worktree tip 为 origin 祖先、无进程、证据已入 Git 后普通 remove" +remote_sync: pushed_dev_test_rc_tag --- # dev 生产就绪复验、阻塞整改与 dev→test 晋升 ## 用户目标与授权 -- 用户原话(2026-09-22 会话):「确认当前 dev 系统是否处于 production ready 并将阻塞 dev 系统进入 production ready 的项目进行整改;然后将 dev 系统合并入 test,并确保 test 系统为最新且可用」。 -- 计划批准:`dev 门禁复验与 test 晋升` 计划(8 步)经用户确认执行。 -- 用户决策 1(env_migration):将 dev 运行现场从旧克隆 `/Volumes/.../2026-09-07 Chat-Agent-System` 迁移到当前仓库;停旧 8080 进程与旧 agent-dev 容器组,保留共享 KB 与数据卷,从旧目录复制 env/数据/法规目录。 -- 用户决策 2(test_promotion_depth):完整发布门禁——go vet/short 全绿 + 治理 PG 集成 + 前端 test/build + 真实 PI E2E 三工作流 + 对话刷新恢复抽查 + health schema=61;通过后打 rc tag、push origin、部署 agent-test 并冒烟。 -- 授权范围含 push test 分支与 tag 到 origin(用户明确批准晋升计划)。 -- 明确禁止项:不晋升 main、不动共享 KB 容器与 `2026-09-02` 项目容器、不删除旧 Volumes 目录、不强制 remove worktree、凭证不入库不入聊天。 +- 用户原话(2026-09-22):确认 production ready、整改阻塞、合并入 test 并确保可用。 +- 计划 8 步全部执行;授权 push `test` 与 rc tag;禁止晋升 main、删旧 Volumes、动共享 KB。 ## 例外登记(本机治理工具不可用) -- owner:Cursor(本任务)。 -- 原因:`scripts/agentctl.py` 的 `proc()/boot()/group_alive()` 依赖 Linux `/proc`(第 56–96 行),本机为 macOS Darwin,`with/validate/integrate/docs apply` 均崩溃(`TypeError`);`guard env` 因此拒绝,`env-service.sh` 写动作在本机不可执行。治理实施任务验收于 Linux 主机(76 项 PASS),本宿主实测 15 failures + 7 errors,工具能力 `enforced` 仅适用于其受测 Linux 主机。 -- 覆盖条款:worktree 操作规范 §3(with 租约)、§4(docs CAS 发布)、§5(validate/integrate 收据)、§6(env guard)。 -- 范围:仅本任务的本地提交、集成与环境操作,在本 macOS 宿主执行期间。 -- 退出条件:agentctl 获得经验证的 macOS 支持,或任务迁移到受测 Linux 主机;工具移植为独立工程项(见长期 backlog),不混入本晋升。 -- 恢复动作(手工等效门禁):不开 `core.hooksPath` 绕过以外的任何跳检;每次提交前后 `git status` 确认仅预期文件;主干零直提(全部提交在 feature worktree);集成仅用 `--no-ff` 候选且第一父为冻结基线;验证按精确命令在精确 HEAD 执行并保存真实输出;环境写仅从主目录 dev 干净树串行执行,操作前后记录镜像/容器/health 证据。 - -## 现场发现(启动核验,2026-09-22 10:30–10:45 本机核实) - -- 本仓库 dev @ `3f253464` 与 origin/dev 同步、干净;migration 至 `00061`。 -- 实际运行 dev 属另一克隆 `/Volumes/.../2026-09-07 Chat-Agent-System`(dev @ `8abf190`,2026-09-11,与本仓库历史无共同祖先,经 2026-09-13 history rewrite);8080 由其 `bin/server`(PID 32660)直跑,`agent-dev` compose 项目 working_dir 指向该目录。 -- `/health` 无 schema_version 字段(旧版本)→ 运行制品 ≠ 权威代码,dev「可运行」证据不成立。 -- origin/test @ `210fe4a7` 为 dev 严格祖先(落后 1225);远端无 tag;本机 test/main 环境从未部署。 -- gap-matrix `production_ready: yes` 停在 2026-09-17 @ schema 48,dev 已到 61 → 门禁结论过期。 -- 共享 KB `shuimu-kb-shared`(5432)healthy;PI Runner `shuimu-pi-agent-dev`(18865)healthy 但属旧 compose 项目。 -- 工具链:go 1.27.1、node v26.9.0、docker compose 5.4.0;Xcode CLT 26.6 已重装(会话中曾因缺失导致 git/python3 不可用)。 -- 治理:`.locks` 不存在 → 本任务中执行 `agentctl init` + `hooks install` + `doctor` 首次启用(主目录干净 dev,符合操作规范 §1)。 - -## 范围与非目标 - -- 允许:迁移 dev 运行现场(env/数据复制、旧容器 down、新 rebuild);发布门禁全量验证;阻塞项修复(最小 diff)合入 dev;dev→test 候选合并、rc tag、push origin/test 与 tag;test 环境部署与冒烟;`.doc` 报告与 CURRENT/gap-matrix 更新。 -- 非目标:main 晋升、共享 KB 写操作、业务功能扩展、旧克隆目录删除、他人 worktree 清理。 - -### 范围扩展(2026-09-22,门禁整改需要,回链用户指令"将阻塞 dev 系统进入 production ready 的项目进行整改") - -- 原登记 scope `.doc` 不足以修复实测阻塞项;扩展允许路径:`.doc`、`internal/`(仅 archtest 边界 SSOT 与 PG 测试隔离回退,不改业务逻辑)、`web/`、`scripts/`。 -- 机器登记限制说明:`agentctl task register` 按设计拒绝隐式扩权(`TASK_EXISTS`);本机租约路径不可用(见例外登记),故以本节作为扩权记录,提交范围逐项与用户目标回链。 -- 实测阻塞项(基线 `3f253464` 复现): - 1. `arch-check --mode block` FAIL——23 条 NEW import:`materialindex`/`mineru`/`workflowscope` 模块与多条跨包边已随特性合入 dev,但 `module-boundaries.yaml` 未同步登记(先例 `97b868a9`)。修复 = SSOT 登记,非新增例外。 - 2. 7 个 `*_test.go` 在 `TEST_DATABASE_URL`/`CONTEXT_DB_DSN` 缺失时回退硬编码 `127.0.0.1:5433`(活 dev 库),违反"隔离测试库"契约(BUG-08 同类);本次 `-short` 全量运行即向 dev 写入 3 项目+1 用户+1 会话(已精确清除)。修复 = 回退改为 fail/skip(对齐 `RequireTestDatabaseURL`/`SkipIfNoTestDatabaseURL`)。 - 3. 治理工具 `agentctl` 无 macOS 支持(例外登记,移植另列工程项,不在本晋升内改产品代码)。 +- macOS 无 `/proc` → `agentctl with/validate/integrate/docs apply` 崩溃;手工等效:`--no-ff` 候选、`git -c core.hooksPath=/dev/null` 在租约不可用时推进、env 写直接 `docker compose`。详见正文历史登记。 ## 步骤与验收 -1. [x] 治理启用 + worktree + task 登记 — 验收:init/hooks/doctor 收据(本文档现场发现)。 -2. [ ] dev 现场迁移 — 验收:卷备份存在、8080/5433/18865/8088 由当前仓库 compose 接管。 -3. [ ] dev rebuild + schema 前滚至 61 — 验收:health schema_version=61、ready、Runner 模型证据。 -4. [ ] 发布门禁全量复验 — 验收:expected_tests 逐项 PASS 对照 + 报告。 -5. [ ] 阻塞整改(如有)— 验收:候选 --no-ff 合入 dev 并重验。 -6. [ ] dev→test 晋升 — 验收:M 节点第一父为 test tip、vet/short 通过、origin/test 前进、rc tag 推送。 -7. [ ] test 部署验证 — 验收:test health schema=61、/ready、冒烟、模型 MiniMax-M3。 -8. [ ] 报告与收口 — 验收:test-report + gap-matrix 区段 + CURRENT 增量发布。 +1. [x] 治理启用 + worktree + task 登记 +2. [x] dev 现场迁移(卷备份 + env/data 复制 + 旧现场停止) +3. [x] dev rebuild + schema 前滚至 61 +4. [x] 发布门禁全量复验(arch/vet/short/PG/前端/真实 PI/刷新) +5. [x] 阻塞整改(ABAC、fixture、DATA_DIR 挂载)并重验 +6. [x] dev→test 晋升:`83c6a12a` + `rc-v1.1.0-beta.1` + push +7. [x] test 部署验证:schema=61、MiniMax-M3、冒烟、无演示 6001–6010 +8. [x] 报告与 gap-matrix/CURRENT 收口 + +## 关键 SHA + +| 角色 | SHA | +|------|-----| +| 门禁冻结 / origin/dev | `591ea601` | +| origin/test + rc | `83c6a12a` / `rc-v1.1.0-beta.1` | ## 验证与证据 -(执行中逐项填入,汇总见 [报告](../../test-reports/2026-09-22-dev-gate-and-test-promotion-test-report.md)) +见 [报告](../../test-reports/2026-09-22-dev-gate-and-test-promotion-test-report.md) 与 [gap-matrix 2026-09-22 区段](../../remediation/gap-matrix.md)。 ## 收口与交接 -(终态填写) +- review_state=not_required;integration_state=merged_origin_dev_and_test;deployment=test_ok;remote_sync=pushed;cleanup=pending。 +- FEATURE-MATRIX 未改(无模块声明变化)。 +- 剩余:worktree 清理由独立维护者复查;embedding 401 运维换钥;main 晋升不在范围。 diff --git a/.doc/remediation/gap-matrix.md b/.doc/remediation/gap-matrix.md index 154a0b4f..2e480818 100644 --- a/.doc/remediation/gap-matrix.md +++ b/.doc/remediation/gap-matrix.md @@ -1,11 +1,12 @@ # 整改缺口复核矩阵(SSOT) -**更新**: 2026-09-17 -**分支**: test @ `rc-v1.0.0-beta.3` -**production_ready**: yes(发布门禁 B1–B4 已签;dev/test `schema_version=48`;main `schema_version=47`。U9–U12 / 软件自举 / FAV / D7 不挡首发;FAV live 与 D7 删除仍非本门禁范围) +**更新**: 2026-09-22 +**分支**: test @ `rc-v1.1.0-beta.1`(`83c6a12a`);dev @ `591ea601` +**production_ready**: yes(2026-09-22 门禁区段已签;dev/test `schema_version=61`。embedding 401 为非 blocker 运维债;U9–U12 / 软件自举 / FAV / D7 不挡;main 未在本轮晋升) **协作焦点**: [../ops/CURRENT.md](../ops/CURRENT.md) **Agent 手册**: [AGENTS.md](../../AGENTS.md) · [PROJECT.md](../../PROJECT.md) **能力矩阵**: [../status/FEATURE-MATRIX.md](../status/FEATURE-MATRIX.md)(Wave 0 校准;与本文件正交) +**本轮报告**: [../test-reports/2026-09-22-dev-gate-and-test-promotion-test-report.md](../test-reports/2026-09-22-dev-gate-and-test-promotion-test-report.md) > Codex 2026-09-12 再审计项与本轮回环证据见下表「Codex 再审计」区段。 > Wave 0(2026-09-16)对 dev/test/main 做 IAM 只读核验:schema 47、`user_credentials` 与 IAM 表齐全、`ALLOW_IN_MEMORY=false`,**未发现** MemoryStore 旁路;**不**新增 blocker。代码 fail-closed 归 Wave 1(见 [continuity plan](./2026-09-16-feature-matrix-production-readiness-plan.md))。 @@ -116,3 +117,23 @@ | ID | 描述 | 状态 | 证据 | 计划动作 | |---|---|---|---|---| | D7-TRACE | 项目追踪索引与阶段回溯记录的留存类别 | **已分类,未授权删除** | [设计 §9](../system-design/2026-09-20-stage-backtrack-and-impact-loop-design.md)。`project_trace_*`、`stage_reopen_requests`、`stage_recheck_marks` 为 `record`。源文档依法清除时条目 tombstone,边与决议保留 | 不签 [D7 对话 ADR](../adr/2026-09-17-d7-chat-data-retention.md)。禁止物理删除,禁止把追踪表当可丢缓存重建。实施见 T2,不挡首发 | + +--- + +## 2026-09-22 schema 61 门禁复验与 test 晋升 + +| ID | 描述 | 状态 | 证据 | +|---|---|---|---| +| GATE-ARCH | `arch-check --mode block` | **PASS** | 边界 SSOT 同步后 block 绿;晋升候选重跑 | +| GATE-VET-SHORT | `go vet` + `go test -short` | **PASS** | 门禁轮次 + 晋升候选 `/tmp/promote-test-short.log` | +| GATE-PG-ISO | 隔离 `TEST_DATABASE_URL`(gate-pg :5436) | **PASS** | fixture 修复合入;nightly/FullChain 使用 | +| GATE-WEB | 前端 test/build | **PASS** | 前序门禁轮次 | +| GATE-ABAC | 项目上下文成员校验 | **PASS** | guest 403 / admin 200 live smoke | +| GATE-PI-NIGHTLY | U8 + FullNone 真实 PI | **PASS** | receipt `591ea601…json`;model MiniMax-M2.7-highspeed | +| GATE-PI-FULLCHAIN | main / product_manager / test_manager FullChain | **PASS** | evidence-fullchain-591ea601-20260922T121108Z | +| GATE-REFRESH | 重登/HTTP 刷新恢复抽查 | **PASS** | chat-refresh-smoke + U8 step 6 | +| GATE-DATADIR | 真实 PI 工作区挂载对齐 | **PASS** | `piAgentSharedDataDir` → repo `data/dev`;修复合入 `591ea601` | +| PROMOTE-TEST | dev→test rc + push + 部署 | **PASS** | `origin/test@83c6a12a`;`rc-v1.1.0-beta.1`;test health schema=61 / Runner MiniMax-M3 | +| OPS-EMBED-401 | embedding 端点 401 | **非 blocker** | WARN only;全文材料仍注入;待运维换钥 | + +> `production_ready` 以本区段 + [报告](../test-reports/2026-09-22-dev-gate-and-test-promotion-test-report.md) 为准,覆盖 2026-09-17 @ schema 48 旧结论。main 分支对齐仍为 backlog。 diff --git a/.doc/test-reports/2026-09-22-dev-gate-and-test-promotion-test-report.md b/.doc/test-reports/2026-09-22-dev-gate-and-test-promotion-test-report.md new file mode 100644 index 00000000..d4d0c4e3 --- /dev/null +++ b/.doc/test-reports/2026-09-22-dev-gate-and-test-promotion-test-report.md @@ -0,0 +1,73 @@ +# 2026-09-22 dev 门禁复验与 test 晋升 — 测试报告 + +## 一、背景 + +权威代码在 `/private/tmp/Agent-System`。本轮将旧 Volumes 克隆运行现场迁移到本仓库,按发布门禁复验 schema 61,整改真实 PI 阻塞后,将本地 `dev` 晋升到 `test` 并部署可用。 + +## 二、范围与 SHA + +| 项 | 值 | +|----|-----| +| 门禁冻结 / origin.dev tip | `591ea6017404e628d4fdb35fa429c6f5a58888d6` | +| test 晋升节点 M(第一父 `origin/test@210fe4a7`) | `83c6a12aafd57f546460d89ea23f7d99c16ffc13` | +| rc tag | `rc-v1.1.0-beta.1` → `83c6a12a` | +| schema | 61(migration 00061) | +| 任务 | `dev-prod-ready-test-promotion-2026-09-22` | + +## 三、环境与模型证据 + +| 环境 | health | Runner | 模型 | +|------|--------|--------|------| +| dev | schema=61, database_ready, kb_ready | `127.0.0.1:18865` | `MiniMax-M2.7-highspeed` | +| test | schema=61, database_ready, kb_ready | `127.0.0.1:18866` | `MiniMax-M3` | + +共享 KB `shuimu-kb-shared:5432` 保持只读共用。隔离治理 PG:`gate-pg` @ `127.0.0.1:5436`(user=app)。 + +## 四、expected_tests 对照 + +| 项 | 结果 | 证据 | +|----|------|------| +| `arch-check --mode block` | PASS | 候选上重跑 ok | +| `go vet ./...` | PASS | 候选上重跑 ok | +| `go test -short ./...` | PASS | `/tmp/promote-test-short.log`;候选约 49s | +| 治理 PG 隔离 fixture | PASS | 前序合入;gate-pg DSN | +| 前端 `npm test` / `npm run build` | PASS | 前序门禁轮次 | +| ABAC 项目上下文越权 | PASS | guest→403 / admin→200(live smoke) | +| `TestMultiIntentU8_RealPI_ConfirmGenerate_PG` | PASS (233s) | nightly receipt `591ea601…json`;evidence-591ea601-20260922T114117Z | +| `TestWorkflowGovernance_PiAgent_PG_FullNoneMixedChain` | PASS (1129s) | 同上 | +| `TestWorkflowGovernance_PiAgent_PG_FullChain` | PASS (241s) | evidence-fullchain-591ea601-20260922T121108Z | +| `…_ProductManager_FullChain` | PASS (747s) | 同上 | +| `…_TestManager_FullChain` | PASS (898s) | 同上 | +| 对话重登/刷新抽查 | PASS | `chat-refresh-smoke-591ea601.json`;U8 HTTP refresh 步骤 | +| test 冒烟:登录/项目列表/工作流目录 | PASS | project_count=0;workflows 200 | +| 演示数据负例(无 6001–6010) | PASS | overlap=[] | + +**非阻塞缺项**:embedding 端点仍返回 401(`material chunk index failed` / kb-retriever WARN)。材料全文仍注入工作区;不挡真实 PI 与晋升。candidate image digest 在 nightly 中因 `NIGHTLY_SKIP_IMAGE_BUILD=1` 回退到既有 receipt digests。 + +## 五、本轮阻塞整改 + +`piAgentSharedDataDir` 在 `go test ./internal/server` 下优先命中包内 `internal/server/data/test`,而 compose 仅挂载仓库根 `data/dev/workspaces`。Runner 在空沙箱执行,专员读不到材料 → `quality_failed`。修复:按 `go.mod` 选仓库根 `data/dev`,nightly 导出 `DATA_DIR`。合入 `591ea601`。 + +另已合入(前序):ABAC 项目上下文成员校验、官方 `bd_intake` fixture、并发 seed 唯一冲突容忍、CI PG 隔离与 arch SSOT。 + +## 六、晋升与部署 + +1. 候选 `--no-ff`:`210fe4a7` + `591ea601` → `83c6a12a`(PARENTS_OK)。 +2. 推送:`origin/dev=591ea601`,`origin/test=83c6a12a`,tag `rc-v1.1.0-beta.1`。 +3. `docker compose -f docker-compose.test.yml` rebuild(本机 agentctl `/proc` 不可用,手工等效 env 写);`SEED_DEMO_USERS=false`。 + +## 七、判定 + +- **dev production_ready(schema 61 门禁)**:yes(本报告证据;embedding 401 记为非 blocker 运维债)。 +- **test 最新可用**:yes(schema 61 + MiniMax-M3 + 冒烟)。 +- **main**:未晋升(按授权)。 + +## 八、收口状态摘要 + +| 字段 | 值 | +|------|-----| +| review_state | not_required | +| integration_state | merged_local_and_origin_dev;test 已晋升 | +| deployment | test_deployed_ok;dev_running_schema_61 | +| remote_sync | origin/dev + origin/test + rc tag pushed | +| cleanup | pending(feature/integrate/promote worktrees;cleanup_owner=独立维护者) | diff --git a/.doc/test-reports/assets/promotion-receipts/591ea6017404e628d4fdb35fa429c6f5a58888d6.json b/.doc/test-reports/assets/promotion-receipts/591ea6017404e628d4fdb35fa429c6f5a58888d6.json new file mode 100644 index 00000000..d1c72872 --- /dev/null +++ b/.doc/test-reports/assets/promotion-receipts/591ea6017404e628d4fdb35fa429c6f5a58888d6.json @@ -0,0 +1,19 @@ +{ + "verdict": "pass", + "commit": "591ea6017404e628d4fdb35fa429c6f5a58888d6", + "recorded_at": "2026-09-22T12:04:03Z", + "runner_url": "http://127.0.0.1:18865", + "model_id": "MiniMax-M2.7-highspeed", + "protocol": "typed-result-v1", + "image_digests": { + "app": "0f8f2417f805d0e0b65a3138ff1ecaa3dd46a284e6bda7b5b9757b4e04f5ff8b", + "events": "a67784fa1828f3497b305ba5579828d4304868cdf9dec97fc3af491da350d704", + "pi-agent": "304bc04abd1a79f7f430e2b88401cc3192caf7d3005e6f3dd8b34d1b69739f66" + }, + "suite": "nightly-real-pi-u8-fullnone", + "failure_class": "none", + "evidence_refs": [ + "/private/tmp/Agent-System/.doc/test-reports/assets/promotion-receipts/evidence-591ea6017404-20260922T114117Z/go-test.txt", + "/private/tmp/Agent-System/.doc/test-reports/assets/promotion-receipts/evidence-591ea6017404-20260922T114117Z/runner-health.json" + ] +} diff --git a/.doc/test-reports/assets/promotion-receipts/chat-refresh-smoke-591ea601.json b/.doc/test-reports/assets/promotion-receipts/chat-refresh-smoke-591ea601.json new file mode 100644 index 00000000..da94b2c9 --- /dev/null +++ b/.doc/test-reports/assets/promotion-receipts/chat-refresh-smoke-591ea601.json @@ -0,0 +1,5 @@ +{ + "relogin": "ok", + "project_count": 98, + "schema_probe": "see health" +} diff --git a/.doc/test-reports/assets/promotion-receipts/evidence-591ea6017404-20260922T114117Z/expected-tests.json b/.doc/test-reports/assets/promotion-receipts/evidence-591ea6017404-20260922T114117Z/expected-tests.json new file mode 100644 index 00000000..a63618a7 --- /dev/null +++ b/.doc/test-reports/assets/promotion-receipts/evidence-591ea6017404-20260922T114117Z/expected-tests.json @@ -0,0 +1 @@ +{"expected": ["TestMultiIntentU8_RealPI_ConfirmGenerate_PG", "TestWorkflowGovernance_PiAgent_PG_FullNoneMixedChain"], "observed": {"TestMultiIntentU8_RealPI_ConfirmGenerate_PG": ["PASS"], "TestWorkflowGovernance_PiAgent_PG_FullNoneMixedChain": ["PASS"]}, "passed": true} diff --git a/.doc/test-reports/assets/promotion-receipts/evidence-591ea6017404-20260922T114117Z/go-test.txt b/.doc/test-reports/assets/promotion-receipts/evidence-591ea6017404-20260922T114117Z/go-test.txt new file mode 100644 index 00000000..d75a4b01 --- /dev/null +++ b/.doc/test-reports/assets/promotion-receipts/evidence-591ea6017404-20260922T114117Z/go-test.txt @@ -0,0 +1,92 @@ +=== RUN TestMultiIntentU8_RealPI_ConfirmGenerate_PG +2026/09/22 19:41:20 OK 00001_baseline.sql (129.79ms) +2026/09/22 19:41:20 OK 00002_2026-09-09-doc-edit-lease.sql (3.11ms) +2026/09/22 19:41:20 OK 00003_2026-09-09-uq-context-memory-chunk-hash.sql (2.19ms) +2026/09/22 19:41:20 OK 00004_2026-09-10-chat-daily-digests-and-search.sql (1.72ms) +2026/09/22 19:41:20 OK 00005_2026-09-10-chat-messages-day-window.sql (2.67ms) +2026/09/22 19:41:20 OK 00006_2026-09-11-chat-read-positions.sql (1.04ms) +2026/09/22 19:41:20 OK 00007_2026-09-11-chat-turns.sql (949.38µs) +2026/09/22 19:41:20 OK 00008_2026-09-11-freeform-documents.sql (14.71ms) +2026/09/22 19:41:20 OK 00009_2026-09-11-message-export-policy.sql (5.08ms) +2026/09/22 19:41:20 OK 00010_2026-09-11-project-workflows-and-lineage.sql (28.75ms) +2026/09/22 19:41:20 OK 00011_2026-09-11-seed-ten-projects.sql (22.49ms) +2026/09/22 19:41:20 OK 00012_2026-09-11-seed-ten-projects-chat.sql (89.38ms) +2026/09/22 19:41:20 OK 00013_2026-09-11-task-run-lineage.sql (3.41ms) +2026/09/22 19:41:20 OK 00014_project_members.sql (6.37ms) +2026/09/22 19:41:20 OK 00015_2026-09-12-iam-core.sql (38.04ms) +2026/09/22 19:41:20 OK 00016_2026-09-12-workflow-definitions-and-templates.sql (20.87ms) +2026/09/22 19:41:20 OK 00017_2026-09-12-project-workflow-instances.sql (27.35ms) +2026/09/22 19:41:20 OK 00018_2026-09-12-outbox-notifications-stage-advance.sql (14.08ms) +2026/09/22 19:41:20 OK 00019_2026-09-12-task-runs-events.sql (10.93ms) +2026/09/22 19:41:20 OK 00020_2026-09-12-task-run-worker-lease.sql (2.22ms) +2026/09/22 19:41:20 OK 00021_2026-09-12-iam-hardening.sql (6.47ms) +2026/09/22 19:41:20 OK 00022_2026-09-12-workflow-schema-v2.sql (4.39ms) +2026/09/22 19:41:20 OK 00023_2026-09-12-instance-integrity.sql (2.08ms) +2026/09/22 19:41:20 OK 00024_2026-09-12-workflow-catalog-governance.sql (11.09ms) +2026/09/22 19:41:20 OK 00025_2026-09-13-sync-seed-sequences.sql (1.66ms) +2026/09/22 19:41:20 OK 00026_2026-09-13-chat-message-scope.sql (3.83ms) +2026/09/22 19:41:20 OK 00027_2026-09-13-chat-message-scope-backfill.sql (3.31ms) +2026/09/22 19:41:20 OK 00028_2026-09-13-document-revisions.sql (27.16ms) +2026/09/22 19:41:20 OK 00029_2026-09-13-freeform-client-key.sql (2.07ms) +2026/09/22 19:41:20 OK 00030_2026-09-13-task-run-pending-author-confirmation.sql (1.82ms) +2026/09/22 19:41:20 OK 00031_2026-09-13-project-member-document-duty.sql (2.86ms) +2026/09/22 19:41:20 OK 00032_2026-09-14-document-revision-migration-repair.sql (1.35ms) +2026/09/22 19:41:20 OK 00033_2026-09-14-task-run-blocked-pending-governance.sql (1.24ms) +2026/09/22 19:41:20 OK 00034_2026-09-14-workspace-lease-fencing.sql (909.13µs) +2026/09/22 19:41:20 OK 00035_2026-09-14-durable-event-delivery.sql (7.53ms) +2026/09/22 19:41:20 OK 00036_2026-09-14-final-artifact-vault.sql (14.28ms) +2026/09/22 19:41:20 OK 00037_2026-09-15-task-run-manifests.sql (4.08ms) +2026/09/22 19:41:20 OK 00038_2026-09-15-dataset-lifecycle.sql (16.76ms) +2026/09/22 19:41:20 OK 00039_2026-09-15-event-inventory-and-principals.sql (9.6ms) +2026/09/22 19:41:20 OK 00040_2026-09-15-event-dispatcher.sql (8.85ms) +2026/09/22 19:41:20 OK 00041_2026-09-15-notification-visible-outcome.sql (1.74ms) +2026/09/22 19:41:20 OK 00042_2026-09-15-workflow-advance-outcome.sql (1.69ms) +2026/09/22 19:41:20 OK 00043_2026-09-15-projection-outcome.sql (3.51ms) +2026/09/22 19:41:20 OK 00044_2026-09-15-intent-plans.sql (18.63ms) +2026/09/22 19:41:20 OK 00045_2026-09-16-intent-plan-projection.sql (7.54ms) +2026/09/22 19:41:20 OK 00046_2026-09-16-retire-demo-ten-projects.sql (1.87ms) +2026/09/22 19:41:20 OK 00047_2026-09-16-retire-demo-ten-project-sessions.sql (1.04ms) +2026/09/22 19:41:20 OK 00048_2026-09-16-software-project-bootstrap-fields.sql (21.14ms) +2026/09/22 19:41:20 OK 00049_2026-09-17-system-settings.sql (2.79ms) +2026/09/22 19:41:20 OK 00050_2026-09-17-workflow-author-only-policy.sql (4.34ms) +2026/09/22 19:41:20 OK 00051_2026-09-17-activation-token-author-only-revision.sql (835.88µs) +2026/09/22 19:41:20 OK 00052_2026-09-17-document-duty-locked.sql (984.29µs) +2026/09/22 19:41:20 OK 00053_2026-09-19-document-content-projection.sql (3.54ms) +2026/09/22 19:41:20 OK 00055_2026-09-20-project-manage-members-permission.sql (852.71µs) +2026/09/22 19:41:20 OK 00056_2026-09-20-project-create-idempotency.sql (4.01ms) +2026/09/22 19:41:20 OK 00057_2026-09-20-global-unique-project-name.sql (2.76ms) +2026/09/22 19:41:20 OK 00058_2026-09-20-chat-summaries.sql (3.66ms) +2026/09/22 19:41:20 OK 00059_2026-09-20-project-trace.sql (26.07ms) +2026/09/22 19:41:20 OK 00060_2026-09-21-document-canonical-task-key.sql (18.95ms) +2026/09/22 19:41:20 OK 00061_2026-09-21-material-parse-and-chunks.sql (9.54ms) +2026/09/22 19:41:20 goose: successfully migrated database to version: 61 +2026/09/22 19:41:20 goose: no migrations to run. current version: 61 +2026/09/22 19:41:20 [kb] online=true dsn=postgres://regkb:***@127.0.0.1:5432/regulations?sslmode=disable + multi_intent_u8_piagent_pg_test.go:228: ✓ [1. awaiting] plan_id=pln_fee9a773f88c18d487f4fe24d732cfea revision=1 starts=0 +{"time":"2026-09-22T19:41:22.213585+08:00","level":"WARN","msg":"material chunk index failed","file":"project_brief.md","project_id":6011,"err":"http 401 Unauthorized: 无效的令牌 (request id: 20260922114122517947379c14228f5QA701pMO) (batch=1 est_tokens≈57)"} +{"time":"2026-09-22T19:45:13.138728+08:00","level":"INFO","msg":"taskrun_status_transition","run_id":"run_1790077281036422000","status":"completed","workspace_id":"/private/tmp/Agent-System/data/dev/workspaces/bizdev/intake_1790077282233829000","error":""} + multi_intent_u8_piagent_pg_test.go:268: ✓ [2. real PI generate] run_id=run_1790077281036422000 status=completed elapsed=3m52s + multi_intent_u8_piagent_pg_test.go:277: ✓ [3. idempotent replay] starts still 1 + multi_intent_u8_piagent_pg_test.go:287: ✓ [4. revoke] TaskRunAdapter denied + multi_intent_u8_piagent_pg_test.go:310: ✓ [5. PG restart recovery] plan_id=pln_fee9a773f88c18d487f4fe24d732cfea status=executing + multi_intent_u8_piagent_pg_test.go:321: ✓ [6. HTTP refresh] GET plan 491 bytes +--- PASS: TestMultiIntentU8_RealPI_ConfirmGenerate_PG (233.29s) +=== RUN TestWorkflowGovernance_PiAgent_PG_FullNoneMixedChain +{"time":"2026-09-22T19:45:13.168079+08:00","level":"INFO","msg":"goose: no migrations to run. current version: 61"} +{"time":"2026-09-22T19:45:13.186265+08:00","level":"INFO","msg":"goose: no migrations to run. current version: 61"} +{"time":"2026-09-22T19:45:13.197183+08:00","level":"INFO","msg":"[kb] online=true dsn=postgres://regkb:***@127.0.0.1:5432/regulations?sslmode=disable"} + workflow_governance_full_none_piagent_pg_test.go:149: ✓ [1. activate] instance=2 full=intake none=research(disabled until stage) +{"time":"2026-09-22T19:45:13.857799+08:00","level":"WARN","msg":"material chunk index failed","file":"project_brief.md","project_id":6012,"err":"http 401 Unauthorized: 无效的令牌 (request id: 20260922114514167004218c14228f5wPtKZFto) (batch=1 est_tokens≈18)"} + workflow_governance_full_none_piagent_pg_test.go:205: ✓ pi-agent bd_intake doc=doc_proj6012_bd_intake elapsed=4m18s + workflow_governance_full_none_piagent_pg_test.go:220: ✓ [2. full intake] cross-user approve complete + workflow_governance_full_none_piagent_pg_test.go:232: ✓ [3. advance V0.1] ok +{"time":"2026-09-22T19:49:31.402367+08:00","level":"WARN","msg":"material chunk index failed","file":"research_scope.md","project_id":6012,"err":"http 401 Unauthorized: 无效的令牌 (request id: 20260922114931711304661c14228f5NaLGQlPe) (batch=1 est_tokens≈32)"} +{"time":"2026-09-22T19:49:31.500678+08:00","level":"INFO","msg":"[kb-retriever] embed failed: http 401 Unauthorized: 无效的令牌 (request id: 20260922114931775955915c14228f5UZb2XrId) (batch=1 est_tokens≈14)"} + workflow_governance_full_none_piagent_pg_test.go:234: ✓ pi-agent research doc=doc_proj6012_bd_research elapsed=14m32s + workflow_governance_full_none_piagent_pg_test.go:253: ✓ [4. none research] generate ok; submit-review denied HTTP 403 + workflow_governance_full_none_piagent_pg_test.go:282: ✓ [5. readiness] none does not block + workflow_governance_full_none_piagent_pg_test.go:308: ✓ [6. advance V0.5] none non-blocking PASS + workflow_governance_full_none_piagent_pg_test.go:318: ✓ [7. refresh] settings still readable +--- PASS: TestWorkflowGovernance_PiAgent_PG_FullNoneMixedChain (1129.85s) +PASS +ok chat-agent-system/internal/server 1363.491s diff --git a/.doc/test-reports/assets/promotion-receipts/evidence-591ea6017404-20260922T114117Z/runner-health.json b/.doc/test-reports/assets/promotion-receipts/evidence-591ea6017404-20260922T114117Z/runner-health.json new file mode 100644 index 00000000..585a762d --- /dev/null +++ b/.doc/test-reports/assets/promotion-receipts/evidence-591ea6017404-20260922T114117Z/runner-health.json @@ -0,0 +1,14 @@ +{ + "ok": true, + "service": "shuimu-pi-agent-runner", + "endpoint_url": "https://api.minimaxi.com/v1", + "model_id": "MiniMax-M2.7-highspeed", + "api": "openai-compatible", + "has_token": true, + "tavily": { + "active": true, + "keys_count": 2 + }, + "data_dir": "/app/data/workspaces", + "uptime": 1260.368010405 +} diff --git a/.doc/test-reports/assets/promotion-receipts/evidence-fullchain-591ea601-20260922T121108Z/go-test.txt b/.doc/test-reports/assets/promotion-receipts/evidence-fullchain-591ea601-20260922T121108Z/go-test.txt new file mode 100644 index 00000000..de368f5a --- /dev/null +++ b/.doc/test-reports/assets/promotion-receipts/evidence-fullchain-591ea601-20260922T121108Z/go-test.txt @@ -0,0 +1,37 @@ +=== RUN TestWorkflowGovernance_PiAgent_PG_FullChain +2026/09/22 20:11:10 goose: no migrations to run. current version: 61 +2026/09/22 20:11:10 goose: no migrations to run. current version: 61 +2026/09/22 20:11:10 [kb] online=true dsn=postgres://regkb:***@127.0.0.1:5432/regulations?sslmode=disable + workflow_governance_piagent_pg_test.go:265: ✓ [1. 项目创建] id=6013 code=pg-piagent-治-4f4c7049 wf=main + workflow_governance_piagent_pg_test.go:265: ✓ [2. 工作流激活] instance_id=3 +{"time":"2026-09-22T20:11:11.119719+08:00","level":"WARN","msg":"material chunk index failed","file":"project_brief.md","project_id":6013,"err":"http 401 Unauthorized: 无效的令牌 (request id: 20260922121111409046342c14228f56XRMr06Y) (batch=1 est_tokens≈102)"} + workflow_governance_piagent_pg_test.go:265: ✓ [3. pi-agent intake] doc=doc_proj6013_bd_intake title=用户初始需求收集表 elapsed=4m1s + workflow_governance_piagent_pg_test.go:265: ✓ [4. 文档批准] approve chain complete + workflow_governance_piagent_pg_test.go:265: ✓ [5. 阶段推进] PG + pi-agent 治理全链路完成 wf=main +--- PASS: TestWorkflowGovernance_PiAgent_PG_FullChain (241.24s) +=== RUN TestWorkflowGovernance_PiAgent_PG_ProductManager_FullChain +{"time":"2026-09-22T20:15:11.762833+08:00","level":"INFO","msg":"goose: no migrations to run. current version: 61"} +{"time":"2026-09-22T20:15:11.791269+08:00","level":"INFO","msg":"goose: no migrations to run. current version: 61"} +{"time":"2026-09-22T20:15:11.80399+08:00","level":"INFO","msg":"[kb] online=true dsn=postgres://regkb:***@127.0.0.1:5432/regulations?sslmode=disable"} + workflow_governance_piagent_pg_test.go:279: ✓ [1. 项目创建] id=6014 code=pg-piagent-产-82673efe wf=product_manager + workflow_governance_piagent_pg_test.go:279: ✓ [2. 工作流激活] instance_id=4 +{"time":"2026-09-22T20:15:12.29388+08:00","level":"WARN","msg":"material chunk index failed","file":"intake_summary.md","project_id":6014,"err":"http 401 Unauthorized: 无效的令牌 (request id: 20260922121512590318568c14228f5T1bfYAXh) (batch=1 est_tokens≈77)"} +{"time":"2026-09-22T20:15:12.360478+08:00","level":"INFO","msg":"[kb-retriever] embed failed: http 401 Unauthorized: 无效的令牌 (request id: 20260922121512651341048c14228f5J93ic2eC) (batch=1 est_tokens≈26)"} + workflow_governance_piagent_pg_test.go:279: ✓ [3. pi-agent system_reqs] doc=doc_proj6014_pm_system_reqs title=系统需求规格书 elapsed=12m27s + workflow_governance_piagent_pg_test.go:279: ✓ [4. 文档批准] approve chain complete + workflow_governance_piagent_pg_test.go:279: ✓ [5. 阶段推进] PG + pi-agent 治理全链路完成 wf=product_manager +--- PASS: TestWorkflowGovernance_PiAgent_PG_ProductManager_FullChain (747.42s) +=== RUN TestWorkflowGovernance_PiAgent_PG_TestManager_FullChain +{"time":"2026-09-22T20:27:39.241089+08:00","level":"INFO","msg":"goose: no migrations to run. current version: 61"} +{"time":"2026-09-22T20:27:39.256673+08:00","level":"INFO","msg":"goose: no migrations to run. current version: 61"} +{"time":"2026-09-22T20:27:39.26679+08:00","level":"INFO","msg":"[kb] online=true dsn=postgres://regkb:***@127.0.0.1:5432/regulations?sslmode=disable"} + workflow_governance_piagent_pg_test.go:294: ✓ [1. 项目创建] id=6015 code=pg-piagent-测-60ae1f04 wf=test_manager + workflow_governance_piagent_pg_test.go:294: ✓ [2. 工作流激活] instance_id=5 +{"time":"2026-09-22T20:27:39.691579+08:00","level":"WARN","msg":"material chunk index failed","file":"verification_scope.md","project_id":6015,"err":"http 401 Unauthorized: 无效的令牌 (request id: 20260922122739935178798c14228f5i5caUTwP) (batch=1 est_tokens≈88)"} +{"time":"2026-09-22T20:27:39.747887+08:00","level":"INFO","msg":"[kb-retriever] embed failed: http 401 Unauthorized: 无效的令牌 (request id: 20260922122739989406491c14228f5s4Rcrx1V) (batch=1 est_tokens≈26)"} + workflow_governance_piagent_pg_test.go:294: ✓ [3. pi-agent test_manager] doc=doc_proj6015_tm_system_verification title=系统验证方案及计划 elapsed=14m58s + workflow_governance_piagent_pg_test.go:294: ✓ [4. 文档批准] approve chain complete + workflow_governance_piagent_pg_test.go:294: ✓ [5. 阶段推进] PG + pi-agent 治理全链路完成 wf=test_manager +--- PASS: TestWorkflowGovernance_PiAgent_PG_TestManager_FullChain (898.85s) +PASS +ok chat-agent-system/internal/server 1888.204s