merge: truthful integration rebuild command
This commit is contained in:
@@ -39,6 +39,10 @@ dev PostgreSQL 的 `sess-p143-u9` 在 03:17–03:32 记录了 `debug ping`、`te
|
||||
|
||||
并发请求因有效租约拒绝时,事件被分类为 `INTERNAL_ERROR/fatal/actions=[restart]`,用户看到“系统内部错误,请重新开始会话”。实际是可预期的 `DOC_BUSY` 状态,应禁止重复启动并展示持有人、进度与预计状态,而不是建议重启会话。
|
||||
|
||||
### 6. dev restart 不会加载新代码,健康检查可对旧镜像误报通过
|
||||
|
||||
`env-service.sh dev restart` 调用的是 `docker compose restart`;应用代码未挂载进容器,因此该命令只重启旧镜像。第一次修复后真实验证仍返回旧的 `CASUAL_CHAT`,但 `/health` 与 `/ready` 都为绿色。重建 app 镜像后,同一句话才返回 `QUERY_DOC_STATUS/doc_summary`。已新增显式 `rebuild` 动作,并将集成冒烟命令改为 `dev rebuild`。
|
||||
|
||||
## 严重度
|
||||
|
||||
`critical`:真实会话污染破坏可审计性;只读请求触发写入违反用户意图;刷新丢失恢复能力;后台编辑不可见导致重复劳动和冲突。
|
||||
@@ -59,6 +63,7 @@ dev PostgreSQL 的 `sess-p143-u9` 在 03:17–03:32 记录了 `debug ping`、`te
|
||||
- `web/src/App.tsx`
|
||||
- `web/src/api/chatWindow.ts`
|
||||
- `internal/taskrun/manager.go`
|
||||
- `scripts/env-service.sh`(`restart` 与 `rebuild` 语义)
|
||||
|
||||
## 开放问题
|
||||
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
# 当前焦点
|
||||
|
||||
**更新**: 2026-09-13
|
||||
**production_ready**: no(真实 PI 刷新 E2E 与只读文档总结验收待补录)
|
||||
**production_ready**: no(只读文档总结已通过真实 PI;刷新/双标签页 busy 浏览器 E2E 待补录)
|
||||
|
||||
## 焦点
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
| holder | phase | since | scope | queue |
|
||||
|--------|-------|-------|-------|-------|
|
||||
| Codex | merging | 2026-09-13 04:24 UTC | authorized readonly document summary | - |
|
||||
| Codex | smoke | 2026-09-13 04:24 UTC | chat state + readonly summary | - |
|
||||
|
||||
**phase**: `idle` | `merging` | `smoke` | `e2e`
|
||||
|
||||
|
||||
@@ -35,6 +35,8 @@ mutex: intent
|
||||
4. [x] 实现任务/租约状态刷新恢复与统一提示
|
||||
5. [x] 实现命名文档的服务端鉴权只读总结(“总结”不止是不写入)
|
||||
6. [ ] 执行前端、Go、PG 与真实 PI 双标签页验收
|
||||
- [x] Go、前端、构建、dev 重建与真实 PI 只读总结
|
||||
- [ ] 浏览器刷新恢复与双标签页 busy 可见性
|
||||
|
||||
## 验收标准
|
||||
|
||||
|
||||
@@ -30,12 +30,12 @@ updated: 2026-09-13
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [ ] “总结一下用户初始需求表”返回已有文档摘要,不创建 `task_runs`。
|
||||
- [x] “总结一下用户初始需求表”返回已有文档摘要,不创建 `task_runs`。
|
||||
- [ ] “开始编写用户初始需求表”只创建一个 run;运行中再次写请求不创建失败 run。
|
||||
- [ ] 任务失败后刷新,错误码、诊断摘要及允许动作与刷新前一致。
|
||||
- [ ] 运行中刷新,聊天占位、阶段进度、文档 busy 标识和输入保护均恢复。
|
||||
- [ ] 租约释放/任务终态后 UI 自动解除 busy,无需用户手动刷新。
|
||||
- [ ] 测试使用专用项目/会话并在 teardown 清理;禁止 `debug/test` 探针进入非 fixture 会话。
|
||||
- [x] 测试使用专用项目/会话并在 teardown 清理;禁止 `debug/test` 探针进入非 fixture 会话。
|
||||
|
||||
## 相关链接
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
| HEALTH-SCHEMA-CACHE | health schema 启动缓存 | PASS | `LiveSchemaVersion` + health 实时读 |
|
||||
| GO-VET-ASSET | asset handler resp before err | PASS | `asset_handlers_test.go` err-first |
|
||||
| ENV-TEST-STALE | test 旧镜像/schema 漂移 | PASS | rebuild app;health schema_version=25 |
|
||||
| ENV-DEV-STALE | dev 二进制/schema 漂移 | PASS | docker app 重启;schema_version=25 |
|
||||
| ENV-DEV-STALE | dev 二进制/schema 漂移 | PASS | docker app 重建;schema_version=25 |
|
||||
| ENV-MAIN-MISSING | main 未部署验收 | PASS | docker 创建 `data/main`;compose 注入 ADMIN/KB 密码;health/ready schema 25 |
|
||||
| DOC-SSOT | 文档叙事漂移 | PASS | 本矩阵 + superseded 标记 + ops |
|
||||
| OPS-AGENTS | 多 Agent 协作规范 | PASS | `AGENTS.md` / `PROJECT.md` / `.doc/ops` |
|
||||
@@ -59,6 +59,7 @@
|
||||
|---|---|---|---|---|
|
||||
| CHAT-HISTORY-REFRESH | 工作流激活后刷新,对话正文被阶段过滤器清空,但分类数量与锚点仍按全量返回 | **PASS** | [test-report](../test-reports/2026-09-13-chat-history-refresh-test-report.md);代码:`message_scope.go`、`chat_history_auth.go`、goose 00026/00027 | 真实 PI 刷新 E2E 待 dev 容器补录(自动化/PG 已 PASS) |
|
||||
| CHAT-INTENT-STATE | 真实会话被诊断探针污染;只读查询误启动文档写任务;错误动作与编辑状态刷新后丢失 | **FAIL** | [audit](../audit/2026-09-13-conversation-intent-runtime-state.md);dev `sess-p143-u9` / task run / lease 现场 | [remediation](./2026-09-13-conversation-intent-runtime-state-remediation.md) |
|
||||
| ENV-RESTART-SOURCE | `docker compose restart` 只重启旧镜像,健康检查无法证明合入代码已部署 | **PASS** | `env-service.sh rebuild` + 真实摘要重测 | 集成冒烟统一使用 `dev rebuild` |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
| 模块 | 能力 | 状态 | 证据 | 缺口/后续 | mutex |
|
||||
|------|------|------|------|-----------|-------|
|
||||
| 意图识别 L1 | 18 类 Intent + 三分支消解 | partial | [system-design/intent-recognition](../system-design/intent-recognition/);[现场专项审计](../audit/2026-09-13-conversation-intent-runtime-state.md) | 客户端关键词捷径绕过意图合同,只读文档查询会触发写任务 | `intent` |
|
||||
| 意图识别 L1 | 18 类 Intent + 三分支消解 | partial | [system-design/intent-recognition](../system-design/intent-recognition/);[现场专项审计](../audit/2026-09-13-conversation-intent-runtime-state.md) | 明确写动作与只读总结已分流;完整 hard-negative/eval 集仍待补齐 | `intent` |
|
||||
| 对话 / ctxmgr | 多轮上下文、记忆、摘要 | partial | [system-design/multi-turn-dialogue](../system-design/multi-turn-dialogue/);[刷新恢复专项审计](../audit/2026-09-13-chat-history-refresh-disappears.md) | `CHAT-HISTORY-REFRESH`:作用域写入、同集授权统计、历史回填;语义摘要(D5 backlog) | `chat` |
|
||||
| 智能体小队 | 角色-任务-工作区-黑板 | done | [system-design/agent-squad](../system-design/agent-squad/);[test 2026-09-07](../test-reports/2026-09-07-dynamic-squad-planning-test-report.md) | 非关键步骤降级(A5/A6 backlog) | `squad` |
|
||||
| 工作流治理 | 三正式工作流 + 阶段门禁 | done | [remediation/three-workflows](../remediation/2026-09-12-three-workflows-strict-governance-remediation.md);[test 2026-09-12](../test-reports/2026-09-12-three-workflows-governance-remediation-test-report.md) | Phase2 设计器 partial | `workflow` |
|
||||
|
||||
@@ -59,21 +59,33 @@
|
||||
|
||||
### 用例 E:真实 PI + 浏览器刷新/双标签页
|
||||
|
||||
- **Input**: 待合入 dev 后执行
|
||||
- **Actual Output**: 未执行
|
||||
- **Evaluation**: DEFERRED
|
||||
- **Input**: 真实 PI 只读总结已执行;浏览器刷新/双标签页待执行
|
||||
- **Actual Output**: 只读总结见用例 H;刷新和 busy 可见性尚无浏览器证据
|
||||
- **Evaluation**: PARTIAL
|
||||
|
||||
### 用例 F:dev 集成冒烟
|
||||
|
||||
- **Input**: `go vet ./...`、`go test -short ./...`、`./scripts/env-service.sh dev restart`、`/health`、`/ready`
|
||||
- **Actual Output**: 全部 PASS;dev 数据库、schema 27 与 task store 均 ready
|
||||
- **Evaluation**: PASS;共享集成槽位已释放
|
||||
- **Input**: `go vet ./...`、`go test -short ./...`、前端测试/构建、`/health`、`/ready`
|
||||
- **Actual Output**: 全部 PASS;前端 Node 185 + Vitest 24;dev 数据库、schema 27 与 task store 均 ready
|
||||
- **Evaluation**: PASS;但 `env-service.sh dev restart` 只重启旧镜像,不能作为新代码已部署的证据
|
||||
|
||||
### 用例 G:服务端鉴权只读文档总结
|
||||
|
||||
- **Input**: 原句意图测试、协调层只读 reader 测试、文档别名选择测试、提示注入隔离测试
|
||||
- **Actual Output**: 原句识别为 `QUERY_DOC_STATUS/query_topic=doc_summary`;正文只从服务端项目/阶段权限过滤后的 reader 获取;无 `PendingAction`;生成目录仅允许 `reply.md`
|
||||
- **Evaluation**: PASS(代码级);待 dev 真实会话验证“不新增 task_runs”
|
||||
- **Evaluation**: PASS
|
||||
|
||||
### 用例 H:dev 真实 PI 隔离会话总结
|
||||
|
||||
- **Input**: `fixture-summary-20260913-codex-01` / project 143 / `总结一下用户初始需求表`
|
||||
- **Actual Output**: `QUERY_DOC_STATUS`、`query_topic=doc_summary`、`target_doc=用户初始需求表`、`reply_source=pi-agent`、`pending_action=null`;返回现有文档实质摘要;`task_runs` 前后均为 0;租约前后为空;用户原会话 `sess-p143-u9` 最大消息 ID 仍为 567
|
||||
- **Evaluation**: PASS;fixture 的 2 条消息与 1 条会话已精确清理,清理后消息/run 均为 0
|
||||
|
||||
### 用例 I:容器代码新鲜度
|
||||
|
||||
- **Input**: 先 `dev restart`,再重建 app 镜像后重复用例 H
|
||||
- **Actual Output**: restart 后仍返回旧版 `CASUAL_CHAT`;重建后返回新版 `QUERY_DOC_STATUS/doc_summary`
|
||||
- **Evaluation**: 首次 FAIL、整改后 PASS;新增 `env-service.sh rebuild`,集成冒烟改用 `dev rebuild`
|
||||
|
||||
## 六、 自动化测试套件汇总 (Test Suite Execution)
|
||||
|
||||
@@ -88,4 +100,4 @@ git diff --check PASS
|
||||
|
||||
## 七、 测试结论与后续优化建议 (Conclusion & Next Steps)
|
||||
|
||||
代码级与构建门禁通过,达到进入集成槽位的条件;尚不能标记发布完成。合入 dev 后必须使用隔离 fixture 执行真实 PI、刷新恢复、双标签页租约可见性与“不新增第二 run”验收。真实会话中的诊断消息与误启动产物只记录证据,不在未获确认时删除或回滚。
|
||||
代码级、构建门禁及真实 PI 只读总结已通过;原句不会创建任务或租约。尚不能标记发布完成:浏览器刷新恢复、双标签页租约可见性与并发写“不新增第二 run”仍需补录。真实会话中的诊断消息与误启动产物只记录证据,不在未获确认时删除或回滚。
|
||||
|
||||
@@ -150,7 +150,7 @@ CURRENT「集成槽位」:`holder` | `phase`(idle/merging/smoke/e2e)| `sin
|
||||
```bash
|
||||
go vet ./...
|
||||
go test -short ./...
|
||||
./scripts/env-service.sh dev restart
|
||||
./scripts/env-service.sh dev rebuild
|
||||
curl -sf http://127.0.0.1:8080/health
|
||||
```
|
||||
|
||||
|
||||
+17
-4
@@ -9,7 +9,7 @@
|
||||
# main : 生产环境服务 (端口 8000, DB 5435, 数据隔离 ./data/main)
|
||||
# all : 所有环境
|
||||
#
|
||||
# 支持命令: start | stop | restart | status | logs | down
|
||||
# 支持命令: start | stop | restart | rebuild | status | logs | down
|
||||
# =============================================================================
|
||||
|
||||
set -eo pipefail
|
||||
@@ -25,11 +25,12 @@ ACTION="$2"
|
||||
show_usage() {
|
||||
cat <<EOF
|
||||
用法:
|
||||
$0 <shared|dev|test|main|all> <start|stop|restart|status|logs|down>
|
||||
$0 <shared|dev|test|main|all> <start|stop|restart|rebuild|status|logs|down>
|
||||
|
||||
示例:
|
||||
$0 shared start # 启动共享知识库基础服务
|
||||
$0 dev start # 启动开发分支环境
|
||||
$0 dev rebuild # 重建镜像并重建容器(合入代码后使用)
|
||||
$0 test start # 启动测试分支环境
|
||||
$0 main start # 启动主分支生产环境
|
||||
$0 all status # 查看所有环境服务状态
|
||||
@@ -113,9 +114,15 @@ run_compose() {
|
||||
;;
|
||||
restart)
|
||||
ensure_shared_network
|
||||
echo "==> [${target}] 重启服务..."
|
||||
echo "==> [${target}] 重启现有容器(不会重建镜像)..."
|
||||
docker compose -f "${compose_file}" "${env_args[@]}" restart
|
||||
;;
|
||||
rebuild)
|
||||
ensure_shared_network
|
||||
echo "==> [${target}] 重建镜像并重建容器..."
|
||||
docker compose -f "${compose_file}" "${env_args[@]}" up -d --build
|
||||
echo "==> [${target}] 镜像与容器已更新"
|
||||
;;
|
||||
status|ps)
|
||||
echo "------------------------------------------------------------"
|
||||
echo "环境: [${target}] (编排: ${compose_file})"
|
||||
@@ -161,8 +168,14 @@ case "${ENV_TARGET}" in
|
||||
run_compose "test" "status"
|
||||
run_compose "main" "status"
|
||||
;;
|
||||
rebuild)
|
||||
run_compose "shared" "rebuild"
|
||||
run_compose "dev" "rebuild"
|
||||
run_compose "test" "rebuild"
|
||||
run_compose "main" "rebuild"
|
||||
;;
|
||||
*)
|
||||
echo "[错误] 'all' 仅支持 start | stop | down | status 操作"
|
||||
echo "[错误] 'all' 仅支持 start | stop | down | rebuild | status 操作"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user