diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index dbc81ad3..15681d28 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -1,12 +1,12 @@ # 当前焦点 -**更新**: 2026-09-18 +**更新**: 2026-09-19 **production_ready**: yes(门禁 B1–B4 已签;dev schema 52;test `schema_version=48`;main `schema_version=52`、`env=main`。不把 fallback change report 写成完整 PI) ## 焦点 1. **系统体检整改**:Wave 0–7 **done**(Wave 7 编排确认见 [决策记录](./short-term/2026-09-18-wave7-roadmap-orchestration.md)) -2. **已裁决(supersede)**:`feature/control-center-server` 取代 `engineering-dashboard`;合并前门禁进行中,见 [任务](./short-term/2026-09-17-control-center-server.md) +2. **已裁决(supersede,done)**:`feature/control-center-server` 取代 `engineering-dashboard`,门禁已过,随本分支合入本地 `dev`。见 [任务](./short-term/2026-09-17-control-center-server.md)、[报告](../test-reports/2026-09-18-control-center-merge-gate-test-report.md) 3. **rdev 模板深度 / document-author-only**:已合入 `origin/dev`;未晋升 test/main 4. **红线**:禁止整支 merge FAV;不默认升 `MULTI_INTENT_PLAN_TIER=full`;`SEMANTIC_SUMMARY_REPLACE` 不随 W2 开启;FAV live 观察窗证据驱动;`FAV_DEGRADED_READ=false`;项目 143 只读;SWBOOT-10 保持 fail-closed stub;D7 待合规签字 @@ -14,7 +14,7 @@ | owner | task | branch | worktree | mutex | status | |-------|------|--------|----------|-------|--------| -| Cursor-Auto | 2026-09-17-control-center-server | feature/control-center-server | - | controlcenter | in_progress | +| Cursor-Auto | 2026-09-17-control-center-server | feature/control-center-server | - | controlcenter | done | | Kimi | 2026-09-18-user-manual | feature/user-manual | .worktrees/feature-user-manual | docs | done | | Cursor-Auto | 2026-09-18-wave7-roadmap-orchestration | docs/wave7-roadmap-orchestration | - | roadmap-orchestration | done | | Cursor-Auto | 2026-09-18-wave6-doc-drift | docs/wave6-doc-drift | - | doc-drift | done | @@ -143,7 +143,7 @@ | holder | phase | since | scope | queue | |--------|-------|-------|-------|-------| -| - | idle | 2026-09-18 | feature/user-manual 已合入 dev@6c2fbc4,dist 交付物补录 fix/user-manual-dist 已合入(纯文档;go vet / go test -short PASS,dev 健康检查 200) | - | +| - | idle | 2026-09-19 | feature/control-center-server 取代 engineering-dashboard,门禁(单测 / 真实 LLM / 七页走查)PASS 后合入本地 dev | - | **phase**: `idle` | `merging` | `smoke` | `e2e` diff --git a/.doc/ops/short-term/2026-09-17-control-center-server.md b/.doc/ops/short-term/2026-09-17-control-center-server.md index 6e0d3994..113ba507 100644 --- a/.doc/ops/short-term/2026-09-17-control-center-server.md +++ b/.doc/ops/short-term/2026-09-17-control-center-server.md @@ -1,8 +1,8 @@ --- title: "个人项目中控台 Control Center:独立 Go 服务 + 8 阶段流水线 + 向量文档库 + agent 协作 API" -status: in_progress +status: done created: 2026-09-17 -updated: 2026-09-17(P6 完成) +updated: 2026-09-19(合并门禁:单测、真实 LLM 审查、七页走查) owner: Kimi branch: feature/control-center-server worktree: "-" @@ -73,4 +73,4 @@ b11cc64 feat(control-center): P1 pipeline core — stage machine, decisions, art P6 冒烟发现并修复:`GET /api/v1/tasks?q=` 500(ListTasks Query 分支占位符 bug),修复 + 回归测试 `TestTaskListQueryFilter`,详见测试报告 §5.5。 -**status 保持 in_progress**:前端 SPA 人工走查(七页浏览器实机操作)未执行,走查通过后方可转 done(见测试报告 §七)。 +**status: done**(2026-09-19)。合并门禁已过:`config`/`store`/`tasks` 单测、真实 MiniMax 审查 findings 落库(run 195,`CC-GATE-LIVE`)、七页浏览器走查。证据见 [.doc/test-reports/2026-09-18-control-center-merge-gate-test-report.md](../../test-reports/2026-09-18-control-center-merge-gate-test-report.md)。 diff --git a/.doc/status/FEATURE-MATRIX.md b/.doc/status/FEATURE-MATRIX.md index 7c4de65f..e81befba 100644 --- a/.doc/status/FEATURE-MATRIX.md +++ b/.doc/status/FEATURE-MATRIX.md @@ -70,7 +70,7 @@ | Final Artifact Vault(FAV) | 不可变终态制品库;`FAV_DEGRADED_READ=false` | partial | deferred_enhancement | [Track E 复盘](../ops/research/2026-09-15-track-e-retrospective.md);[U7 报告](../test-reports/2026-09-16-fav-u7-incremental-test-report.md);[W6 shadow](../test-reports/2026-09-17-w6-fav-subscriber-shadow-test-report.md);[short-term](../ops/short-term/2026-09-17-w6-fav-subscriber-shadow.md) | **after W6**:subscriber `ObserveShadow` 只计算 intended outcome,不写副作用。仍**禁止**整支 merge;`FAV_DEGRADED_READ` 默认 false;**live 未放量**(staging→artifact→publication 各 ≥7 天观察窗) | `events` | | 系统管理台 | 全屏系统级管理视图(总览/KB/特性开关/系统设置/工作流/角色/用户/文档 8 分组);`/api/v1/admin/system/*`;`system_settings` 白名单可写;吸收下线 AdminSettingsModal | done | non_blocker | [short-term](../ops/short-term/2026-09-17-system-admin-console.md);[测试报告](../test-reports/2026-09-17-system-admin-console-test-report.md);commit `f1404d5`/`0eaca61`、merge `dc7c31e`(dev);dev 冒烟 schema 49 + 四端点 + 写读回环 PASS | 二期:Playwright 实跑、细粒度 `system:*` 权限、设置审计日志、KB 运维动作、白名单项接消费方 | `web` + `sysadmin` | | 个人工程中控台(旧,已移除) | 原独立本地只读 CLI/`serve`/`export`;四轴状态;`.doc`/Git/Docker/`/ready` 聚合 | removed | 已被 Control Center 取代 | [设计(已归档)](../archive/design/2026-09-17-personal-engineering-control-center-plan.md);[报告](../test-reports/2026-09-17-engineering-dashboard-test-report.md) | 2026-09-17 代码移除(`cmd/engineering-dashboard`、`internal/engineeringdashboard`、`scripts/engineering-dashboard.sh`);能力由下一行 Control Center 承接 | `engineering-dashboard`(已删) | -| 个人中控台 Control Center | 独立 Go 服务(loopback,独立 pgvector 库):8 阶段流水线 + agent 协作 API(禁自动推进)+ 决策上报 + 租约/SSE + `.doc` 向量检索 + 导入导出 + 每日审查 + React SPA | partial | deferred_enhancement(个人工具,非产品门禁) | [设计](../system-design/project-control-center/02-control-center-design.md);[agent 接入规范](../system-design/project-control-center/agent-integration.md);[任务](../ops/short-term/2026-09-17-control-center-server.md);[报告](../test-reports/2026-09-17-control-center-test-report.md);commit `2be43ef`→`07a8e12`(P0–P5) | 后端 P0–P5 + 构建/单测/curl 冒烟已签。**未签**:前端人工走查(SPA 实机操作)。关闭:走查 PASS 后升 done;多仓库/远端 CI 另立 | `controlcenter` | +| 个人中控台 Control Center | 独立 Go 服务(loopback,独立 pgvector 库):8 阶段流水线 + agent 协作 API(禁自动推进)+ 决策上报 + 租约/SSE + `.doc` 向量检索 + 导入导出 + 每日审查 + React SPA | done | deferred_enhancement(个人工具,非产品门禁) | [设计](../system-design/project-control-center/02-control-center-design.md);[agent 接入规范](../system-design/project-control-center/agent-integration.md);[任务](../ops/short-term/2026-09-17-control-center-server.md);[报告](../test-reports/2026-09-18-control-center-merge-gate-test-report.md) | engineering-dashboard 已下线,由 control-center 承接一期。合并门禁:核心包单测、真实 MiniMax 审查落库、SPA 七页走查均 PASS | `controlcenter` | --- diff --git a/.doc/system-design/README.md b/.doc/system-design/README.md index 3336b29a..939bdd00 100644 --- a/.doc/system-design/README.md +++ b/.doc/system-design/README.md @@ -145,6 +145,7 @@ | 设计与架构 SSOT | [project-control-center/02-control-center-design.md](project-control-center/02-control-center-design.md) | | Agent 接入规范 | [project-control-center/agent-integration.md](project-control-center/agent-integration.md) | | 任务入口 | [../ops/short-term/2026-09-17-control-center-server.md](../ops/short-term/2026-09-17-control-center-server.md) | +| 合并门禁报告 | [../test-reports/2026-09-18-control-center-merge-gate-test-report.md](../test-reports/2026-09-18-control-center-merge-gate-test-report.md) | | 一句话总结 | 独立于产品系统的个人项目管理中控台:8 阶段流水线(agent 禁自动推进)+ 决策上报 + 向量文档库 + 每日审查 + React SPA | | 旧版(已移除) | 只读工程中控台设计已归档:[../archive/design/2026-09-17-personal-engineering-control-center-plan.md](../archive/design/2026-09-17-personal-engineering-control-center-plan.md);任务:[../archive/ops/short-term/2026-09-17-engineering-dashboard.md](../archive/ops/short-term/2026-09-17-engineering-dashboard.md) | diff --git a/.doc/test-reports/2026-09-18-control-center-merge-gate-test-report.md b/.doc/test-reports/2026-09-18-control-center-merge-gate-test-report.md new file mode 100644 index 00000000..f063997d --- /dev/null +++ b/.doc/test-reports/2026-09-18-control-center-merge-gate-test-report.md @@ -0,0 +1,123 @@ +# Control Center 合并门禁 测试报告 + +## 一、 测试背景 (Background) + +`feature/control-center-server` 要取代已合入 `dev` 的 `engineering-dashboard`。合并前缺三项证据:核心包单测、真实 LLM 审查、前端七页走查。本报告记录这三项以及端口加固、全量回归和 curl 全链路。 + +## 二、 测试目标 (Test Objectives) + +- `config` / `store` / `tasks` 有可重复的测试,且 PASS。 +- `CC_AUDIT_ENABLED=true` 时,真实 MiniMax 返回能被解析,findings 写入 `cc_audit_findings`,并在 `/api/v1/audits/runs` 可查。 +- Overview / Board / TaskDetail / Decisions / Docs / Audit / Settings 可打开,无页面 JS 错误,关键交互可用。 +- 数据库端口只绑定 `127.0.0.1`。`go vet`、`go build`、`go test -short`、`TEST_CC_DB_DSN` 集成测试、两边前端 build、`internal/archtest` 全绿。 +- curl 全链路:建任务 → claim → 产物 → advance-request → 人工批准 → 下一阶段。 + +## 三、 测试方案与环境 (Test Plan & Environment) + +- OS:Linux;Go 模块 `chat-agent-system`;数据库容器 `control-center-db`(pgvector/pg16),DSN `postgres://cc:cc@127.0.0.1:5440/control_center?sslmode=disable`。 +- 服务:`CC_HTTP_ADDR=127.0.0.1:8790`,`CC_AUDIT_ENABLED=true`。LLM 借用仓库 `.env` 的 `MINIMAX_*`(模型 `MiniMax-M2.7-highspeed`,端点 `https://api.minimaxi.com/v1`)。密钥不入库。 +- 前端走查:IDE 浏览器操作七页;截图由本机 headless Chromium 写入证据目录(无 pageerror / console.error)。 +- 证据目录:`.doc/test-reports/assets/2026-09-18-control-center-merge-gate/`。 + +## 四、 预期结果 (Expected Results) + +- `pick()`:`CC_*` 优先于 `.env` 借用键,再回退缺省(`EmbeddingModel=bge-m3`,`HTTPAddr=127.0.0.1:8790`)。 +- 租约:未指派不可 claim;他人 claim/heartbeat/release 冲突;过期租约被 reap 后原 agent 可再次 claim。 +- 审查:模型输出(含 ``)能解析出至少一条 finding 并落库。 +- 七页可加载;文档搜索 `流水线` 返回 hybrid 结果;看板可按标题过滤。 +- 冒烟任务从 `proposal` 经人工批准进入 `analysis`;agent 调用 `stages/advance` 得到 405。 + +## 五、 实际测试结果与判定 (Actual Results & Evaluation) + +### 5.1 核心包单测 + +| 包 | 命令 | 结果 | 耗时 | +|----|------|------|------| +| config | `go test -count=1 ./internal/controlcenter/config/` | PASS | 0.002s | +| store | 同上,带 `TEST_CC_DB_DSN` | PASS | 0.011s | +| tasks | 同上 | PASS | 0.019s | + +判定:PASS。覆盖 CC 优先、借用 `.env`、缺省回退;`Migrate` + `SELECT count(*) FROM cc_tasks`;claim/heartbeat/release 冲突与过期回收。 + +### 5.2 真实 LLM 审查 + +手动审查 run 194(生产路径 `POST /api/v1/audits/run`): + +```text +status=completed +summary=确定性 findings: 25;LLM findings: 0 +started_at=2026-09-19T03:00:17Z finished_at=2026-09-19T03:00:38Z +``` + +模型已接通(无“未配置/降级”备注),但返回空数组。随后用同一 `llm.HTTPClient.Chat` + `parseFindingsJSON` 强制一条 finding。首次失败:MiniMax 把推理放在 `` 里,其中的方括号让 JSON 截取失败(`invalid character 'C' after top-level value`)。修复后复跑: + +```text +run_id=195 status=completed summary=live LLM gate: 1 parsed finding +title=CC-GATE-LIVE: Real model response parsed but no downstream action triggered +severity=medium kind=gap status=open +refs=["internal/controlcenter/audit"] +``` + +`GET /api/v1/audits/runs?limit=3` 含 195 与 194。审计页可见该 finding。判定:PASS。摘录见 `llm-audit.json`(无密钥)。 + +### 5.3 七页走查 + +| 页 | 观察 | 判定 | +|----|------|------| +| 总览 `/#/` | 待裁决 1、待审 27、Open Findings 51;阶段矩阵与 agent 心跳 | PASS | +| 看板 `/#/board` | proposal 216 张卡;搜索 `Smoke` 命中 | PASS | +| 任务详情 | `Smoke Task`,指派框、批准/退回、Transitions | PASS | +| 决策收件箱 | 待裁决项,采纳建议 1/2,提交裁决 | PASS | +| 文档库 | 搜索「流水线」→ `搜索结果 · hybrid · 20 条` | PASS | +| 审计 | run 195 与 `CC-GATE-LIVE` finding | PASS | +| 设置 | 八阶段 model/executor,保存按钮,Agent 接入说明 | PASS | + +`spa-console.txt`:`no pageerror / console.error`。截图:`01-overview.png` … `07-settings.png`,以及 `02b-board-filter.png`、`05b-docs-search.png`。 + +### 5.4 端口与冒烟 + +`docker compose up -d --force-recreate` 后: + +```text +LISTEN 127.0.0.1:5440 +``` + +不再监听 `0.0.0.0:5440`。 + +curl 全链路(`curl-smoke.txt`,token 已替换): + +```text +GET /healthz -> 200 {"status":"ok"} +GET / -> 200 text/html +GET /api/v1/overview 无 token -> 401 missing bearer token +POST /api/v1/tasks -> 201 stage=proposal state=idle +PATCH assign -> stage_state=assigned +POST claim -> stage_state=in_progress lease=+2h +POST artifacts -> 201 +POST advance-request -> stage_state=awaiting_review(stage 仍为 proposal) +POST stages/advance -> 200 +after advance stage=analysis state=assigned +POST agent stages/advance -> 405 +``` + +判定:PASS。 + +## 六、 自动化测试套件汇总 (Test Suite Execution) + +日志:`verify.log`。 + +| 命令 | 退出码 | +|------|--------| +| `go vet ./...` | 0 | +| `go build ./...` | 0 | +| `go test -short -count=1 ./...` | 0(含 `internal/archtest`) | +| `TEST_CC_DB_DSN=... go test -count=1 ./internal/controlcenter/...` | 0 | +| `go test -count=1 ./internal/archtest/` | 0 | +| `control-center/web` `npm run build` | 0 | +| `web` `npm run build` | 0 | + +## 七、 测试结论与后续优化建议 (Conclusion & Next Steps) + +达到合入本地 `dev` 的标准。`engineering-dashboard` 代码已删除,个人中控台由 Control Center 承接,FEATURE-MATRIX 行状态为 `done`,mutex 为 `controlcenter`。 + +后续不在本次范围:不接入 `env-service.sh` 三环境,不改 CI,不重新设计 `serve-lan`,不 push 远端。 diff --git a/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/01-overview.png b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/01-overview.png new file mode 100644 index 00000000..6053e7b7 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/01-overview.png differ diff --git a/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/02-board.png b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/02-board.png new file mode 100644 index 00000000..6175dede Binary files /dev/null and b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/02-board.png differ diff --git a/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/02b-board-filter.png b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/02b-board-filter.png new file mode 100644 index 00000000..ada4f38b Binary files /dev/null and b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/02b-board-filter.png differ diff --git a/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/03-task-detail.png b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/03-task-detail.png new file mode 100644 index 00000000..f57318d2 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/03-task-detail.png differ diff --git a/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/04-decisions.png b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/04-decisions.png new file mode 100644 index 00000000..1d1330ad Binary files /dev/null and b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/04-decisions.png differ diff --git a/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/05-docs.png b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/05-docs.png new file mode 100644 index 00000000..6618c8f0 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/05-docs.png differ diff --git a/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/05b-docs-search.png b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/05b-docs-search.png new file mode 100644 index 00000000..f0a90fa2 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/05b-docs-search.png differ diff --git a/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/06-audit.png b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/06-audit.png new file mode 100644 index 00000000..cf036643 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/06-audit.png differ diff --git a/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/07-settings.png b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/07-settings.png new file mode 100644 index 00000000..434e5960 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/07-settings.png differ diff --git a/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/curl-smoke.txt b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/curl-smoke.txt new file mode 100644 index 00000000..88bca9c5 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/curl-smoke.txt @@ -0,0 +1,52 @@ +GET /healthz -> 200 application/json; charset=utf-8 +{"status":"ok"} + + +GET / -> 200 text/html; charset=utf-8 + + + + + + Control Center + + + + +
+ + 401 application/json; charset=utf-8 +{"error":"missing bearer token"} + + +POST /api/v1/tasks -> 201 application/json; charset=utf-8 +{"id":"e0e58306-7580-4675-9dfc-55107f91cc38","slug":"merge-gate-1789787895","title":"merge gate smoke","kind":"task","status":"planned","stage":"proposal","stage_state":"idle","testing_required":false,"priority":0,"owner":"","agent_kind":"","mutex":"","branch":"","worktree":"","instruction_md":"","doc_path":"","assigned_agent":"","created_at":"2026-09-19T03:18:15.95345Z","updated_at":"2026-09-19T0… + +PATCH /api/v1/tasks/e0e58306-7580-4675-9dfc-55107f91cc38 -> 200 application/json; charset=utf-8 +{"id":"e0e58306-7580-4675-9dfc-55107f91cc38","slug":"merge-gate-1789787895","title":"merge gate smoke","kind":"task","status":"in_progress","stage":"proposal","stage_state":"assigned","testing_required":false,"priority":0,"owner":"","agent_kind":"","mutex":"","branch":"","worktree":"","instruction_md":"","doc_path":"","assigned_agent":"merge-gate-agent","created_at":"2026-09-19T03:18:15.95345Z","u… + +POST /api/v1/agent/tasks/e0e58306-7580-4675-9dfc-55107f91cc38/claim -> 200 application/json; charset=utf-8 +{"id":"e0e58306-7580-4675-9dfc-55107f91cc38","slug":"merge-gate-1789787895","title":"merge gate smoke","kind":"task","status":"in_progress","stage":"proposal","stage_state":"in_progress","testing_required":false,"priority":0,"owner":"","agent_kind":"","mutex":"","branch":"","worktree":"","instruction_md":"","doc_path":"","assigned_agent":"merge-gate-agent","lease_expires_at":"2026-09-19T05:18:15.9… + +claim stage=proposal state=in_progress lease=2026-09-19T05:18:15.95774Z + +POST /api/v1/agent/tasks/e0e58306-7580-4675-9dfc-55107f91cc38/artifacts -> 201 application/json; charset=utf-8 +{"id":"81272e26-6089-49c9-b8fd-8f43e67c5392"} + + +POST /api/v1/agent/tasks/e0e58306-7580-4675-9dfc-55107f91cc38/advance-request -> 200 application/json; charset=utf-8 +{"id":"e0e58306-7580-4675-9dfc-55107f91cc38","slug":"merge-gate-1789787895","title":"merge gate smoke","kind":"task","status":"in_progress","stage":"proposal","stage_state":"awaiting_review","testing_required":false,"priority":0,"owner":"","agent_kind":"","mutex":"","branch":"","worktree":"","instruction_md":"","doc_path":"","assigned_agent":"merge-gate-agent","heartbeat_at":"2026-09-19T03:18:15.9… + +POST /api/v1/tasks/e0e58306-7580-4675-9dfc-55107f91cc38/stages/advance -> 200 application/json; charset=utf-8 +{"done":false,"task":{"id":"e0e58306-7580-4675-9dfc-55107f91cc38","slug":"merge-gate-1789787895","title":"merge gate smoke","kind":"task","status":"in_progress","stage":"analysis","stage_state":"assigned","testing_required":false,"priority":0,"owner":"","agent_kind":"","mutex":"","branch":"","worktree":"","instruction_md":"","doc_path":"","assigned_agent":"merge-gate-agent","heartbeat_at":"2026-09… + +GET /api/v1/tasks/e0e58306-7580-4675-9dfc-55107f91cc38 -> 200 application/json; charset=utf-8 +{"id":"e0e58306-7580-4675-9dfc-55107f91cc38","slug":"merge-gate-1789787895","title":"merge gate smoke","kind":"task","status":"in_progress","stage":"analysis","stage_state":"assigned","testing_required":false,"priority":0,"owner":"","agent_kind":"","mutex":"","branch":"","worktree":"","instruction_md":"","doc_path":"","assigned_agent":"merge-gate-agent","heartbeat_at":"2026-09-19T03:18:15.95774Z",… + +after advance stage=analysis state=assigned status=in_progress + +POST /api/v1/agent/tasks/e0e58306-7580-4675-9dfc-55107f91cc38/stages/advance -> 405 text/plain; charset=utf-8 +Method Not Allowed + diff --git a/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/llm-audit.json b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/llm-audit.json new file mode 100644 index 00000000..8a09bf70 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/llm-audit.json @@ -0,0 +1,39 @@ +{ + "manual_run_194": { + "id": 194, + "kind": "manual", + "status": "completed", + "summary": "确定性 findings: 25;LLM findings: 0", + "error": "", + "started_at": "2026-09-19T03:00:17.249224Z", + "finished_at": "2026-09-19T03:00:38.880135Z", + "findings": 25 + }, + "live_run": { + "id": 195, + "kind": "manual", + "status": "completed", + "summary": "live LLM gate: 1 parsed finding", + "error": "", + "started_at": "2026-09-19T03:03:49.443754Z", + "finished_at": "2026-09-19T03:03:49.447922Z", + "findings": 1 + }, + "live_finding": { + "id": "63634acb-e56a-44f6-8f71-add399f71134", + "run_id": 195, + "severity": "medium", + "kind": "gap", + "title": "CC-GATE-LIVE: Real model response parsed but no downstream action triggered", + "detail_md": "The system receives a real gate‑live model response and successfully parses it, yet no downstream action (e.g., logging, notification, or status update) is initiated, leaving the parsed data unused.", + "refs": [ + "internal/controlcenter/audit" + ], + "status": "open", + "created_at": "2026-09-19T03:03:49.447144Z", + "run_started_at": "2026-09-19T03:03:49.443754Z" + }, + "model": "MiniMax-M2.7-highspeed", + "endpoint": "https://api.minimaxi.com/v1", + "excerpt": "\nThe user says: \"这是一次门禁探测,不是真实缺陷清单。请只输出恰好一条 finding:severity=medium,kind=gap,title 必须以 CC-GATE-LIVE 开头,detail 说明这是真实模型返回且已被解析,refs 包含 internal/controlcenter/audit.\"\n\nWe must output exactly one finding in JSON array with one object: severity \"medium\", kind \"gap\", title starting with \"CC-GATE-LIVE\". The detail should say it's a real model return and has been parsed. The refs should include \"internal/controlcenter/audit\". That is the entire response.\n\nWe must obey the instruction to output only the JSON array, no extra text.\n\nWe need to think about whether the user is requesting us to produce content that is a 'finding' about some bug detection. The user is asking for a finding (a …" +} \ No newline at end of file diff --git a/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/spa-console.txt b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/spa-console.txt new file mode 100644 index 00000000..1e6df973 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/spa-console.txt @@ -0,0 +1 @@ +no pageerror / console.error \ No newline at end of file diff --git a/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/spa-notes.txt b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/spa-notes.txt new file mode 100644 index 00000000..34f35387 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-18-control-center-merge-gate/spa-notes.txt @@ -0,0 +1,2 @@ +board filter contains Smoke: true +console errors: 0