diff --git a/.doc/ops/short-term/2026-09-22-docrev-ui-rerun.md b/.doc/ops/short-term/2026-09-22-docrev-ui-rerun.md index fc1d2895..bd10c41c 100644 --- a/.doc/ops/short-term/2026-09-22-docrev-ui-rerun.md +++ b/.doc/ops/short-term/2026-09-22-docrev-ui-rerun.md @@ -64,7 +64,5 @@ prelim 常 `author_id=0`(unmanaged duties → 无认领/编辑)。冲突用 ## CURRENT 同步说明 -- `docs(@document)` 收记录在 closeout tip `e9a9ce97`(含 DOCREV PASS 焦点行)。 -- 合入 local_dev 的 merge `437cee84` 以第二父带上该 tip,但 merge 树未带上 CURRENT 正文(曾误用 ours)。 -- **cleanup_pending**:持 `docs:admin` 的执行者对 local_dev 基线再跑一次 `@document` apply 后 `--no-ff` 合入,或从 `e9a9ce97` 重放 CURRENT。 -- audit/remediation/账本已在 local_dev `ddcb63cd`/`437cee84`。 +- 曾误用 ours merge 丢掉 CURRENT 焦点;后由 closeout `docs:admin` 重放并合入 local_dev(`c24e1548` → MATRIX 收口 `8f0e31e5`)。 +- audit/remediation/密封账本与 DOCREV PASS 焦点已在 local_dev;本 worktree 仅保留短文备忘。 diff --git a/.doc/ops/short-term/2026-09-22-freeform-project-id-bigint.md b/.doc/ops/short-term/2026-09-22-freeform-project-id-bigint.md new file mode 100644 index 00000000..9ee47c41 --- /dev/null +++ b/.doc/ops/short-term/2026-09-22-freeform-project-id-bigint.md @@ -0,0 +1,27 @@ +--- +title: "freeform project_id BIGINT 对齐 projects.id" +task_id: "freeform-project-id-bigint-2026-09-22" +status: done +created: 2026-09-22 +owner: Cursor +task_type: implementation +branch: feature/freeform-project-id-bigint-2026-09-22 +worktree: .worktrees/freeform-project-id-bigint-2026-09-22 +write_scope: ["deploy/postgres/goose", "internal/freedoc", "internal/server", ".doc"] +allowed_environments: ["dev"] +mutex: "deploy/postgres/goose + freeform" +--- + +# freeform project_id BIGINT + +## 问题 +`POST /api/v1/freeform-documents` 在雪花 `project_id`(>int4 max)时 pgx 编码失败(OID 23),阻塞 UI-11 附件注册。 + +## 修复 +- goose `00063`:`freeform_documents.project_id` → BIGINT +- Go `ProjectID`/`ListDocuments` → int64;list query 用 `ParseInt` +- 活库已手工 ALTER(schema 仍报 61);合入后 goose 幂等加固 + +## 验证 +- `go test ./internal/freedoc/ -short` PASS(含 snowflake 回归) +- 活库 column = bigint diff --git a/.doc/ops/short-term/2026-09-23-closeout-worktrees.md b/.doc/ops/short-term/2026-09-23-closeout-worktrees.md new file mode 100644 index 00000000..2e8d0ab5 --- /dev/null +++ b/.doc/ops/short-term/2026-09-23-closeout-worktrees.md @@ -0,0 +1,82 @@ +--- +title: "Worktree 收口:docs 增量合入与清理" +task_id: "closeout-worktrees-2026-09-23" +status: in_progress +created: 2026-09-23 +updated: 2026-09-23 +owner: Cursor +task_type: ops +task_tier: medium +policy_revision: "agent-governance-2026-09-21-r1 @ cc91c217e7c0e4732de3923d0fa229fd4bd65798" +branch: feature/closeout-worktrees-2026-09-23 +worktree: .worktrees/closeout-worktrees-2026-09-23 +base_dev_sha: "cc91c217e7c0e4732de3923d0fa229fd4bd65798" +head_sha: "" +write_scope: [".doc"] +allowed_environments: [] +mutex: "git:dev+worktree-cleanup" +review_state: pending +integration_state: pending +deployment: n/a +cleanup: pending +cleanup_owner: "本任务完成后独立维护者复查" +cleanup_trigger: "合入 local_dev 且批次 A–D remove 成功或 cleanup_pending 已登记" +remote_sync: not_requested +--- + +# Worktree 收口:docs 增量合入与清理 + +## 用户目标 + +检查所有 worktree 分支;推进并完成可合入的 docs 增量;验证通过后合入 `dev` 并清理 worktree。避开并行会话中的 `task-bubble-bind` 系列;不 push。 + +## 授权边界 + +- 允许:`.doc` 写入;`git:dev` 集成(候选 worktree);关闭已完成 agentctl 任务;脚本入口清理 worktree。 +- 禁止:push;晋升 test/main;碰 task-bubble 系列;强制 `--force`/`-D`;修改非 `.doc` 业务代码(合入时冲突取 dev)。 + +## 待合入分支(docs 增量) + +| tip | branch | 预期增量 | 代码风险 | +|---|---|---|---| +| 20290d03 | feature/2026-09-23-user-profile-display | CURRENT done 行 | 无 | +| 457bea85 | feature/docrev-ui-rerun-2026-09-22 | short-term 备忘 +5 行 | 无 | +| 10f9a8b9 | feature/integrate-modular-decouple-closeout-docs-2026-09-23 | W4 matrix / governance 校准(3ebabc19 已在 dev) | 无 | +| 5ab034eb | feature/integrate-modular-decouple-residual-2026-09-23 | cancelled 旧候选 docs | 无 | +| b6965eb0 | feature/freeform-project-id-bigint-2026-09-22 | 任务文档;代码等价物 3bdd53ae 已在 dev | **冲突取 dev** | +| ee66bd00 | feature/promote-fix-latest-upload-test-2026-09-23 | promote evidence docs | 无 | + +## 明确跳过 + +- task-bubble-bind / integrate-task-bubble-bind / promote-task-bubble-bind(并行会话 active) +- push / origin 同步 + +## 特殊残留(预登记) + +| 路径 | 处置 | +|---|---| +| docrev worktree 锁文件 `.exclusive-run.lockdir` / `.ui-run.lock` | 删除 | +| `canonical-ui00-13a-pass.json` sha256=`dd83d656…f287` | 测试报告未引用;登记后删除 | +| `sealed-ledger-main-20260922T195858Z.json` sha256=`31ed8a36…44be` | 正式密封账本 `sealed-ledger-ui00-16-post-20260923T0400Z` 已在 dev;登记后删除 | +| integrate-user-profile-display-current 脏 CURRENT.md | 与 20290d03 行等价 → checkout 丢弃 | + +## 验证计划 + +纯文档档:diff 核对;`.doc` 链接存在性;CURRENT/MATRIX 抽查;合入后 `git diff HEAD -- ':!.doc'` 必须为空;freeform 追加 `go vet`/`go test -short ./internal/freedoc/`。 + +## 步骤 + +1. [x] 创建 worktree + 登记任务 +2. [ ] 写本任务文档并提交 +3. [ ] integrate 候选:串行 merge 六分支(冲突取 dev) +4. [ ] validate + integrate 推进 local_dev +5. [ ] agentctl task close(跳过 task-bubble) +6. [ ] 分批清理 worktree A/B/C/D +7. [ ] 特殊残留处理 + 收口状态更新 + +## 结果(执行后填) + +- `integration_state`: +- `dev_tip_after`: +- `cleanup_summary`: +- `cleanup_pending`: diff --git a/.doc/ops/short-term/2026-09-23-promote-fix-latest-upload-test.md b/.doc/ops/short-term/2026-09-23-promote-fix-latest-upload-test.md new file mode 100644 index 00000000..76e51c25 --- /dev/null +++ b/.doc/ops/short-term/2026-09-23-promote-fix-latest-upload-test.md @@ -0,0 +1,57 @@ +--- +title: "晋升 latest-upload summary + parse-wait 至 test" +task_id: promote-fix-latest-upload-test-2026-09-23 +status: done +created: 2026-09-23 +updated: 2026-09-23 +owner: Cursor +task_type: ops +task_tier: multi_stage +policy_revision: "AGENTS+worktree-ops @ 30fa4e88" +branch: feature/promote-fix-latest-upload-test-2026-09-23 +worktree: .worktrees/promote-fix-latest-upload-test-2026-09-23 +base_dev_sha: "30fa4e88b21ddc918a4f408a13ef4d2c2d5acd6e" +head_sha: "54955c9d1a61f671556508ab7c89db088aaef7d7" +write_scope: [".", ".doc/"] +allowed_environments: ["test"] +mutex: git:test+env:test +review_state: not_required +integration_state: merged_local_test +deployment: test_ok +cleanup: pending +cleanup_owner: 独立维护者 +cleanup_trigger: tip 为 local_dev/origin 祖先且无进程占用后 remove +remote_sync: not_requested +--- + +# 晋升 latest-upload summary + parse-wait 至 test + +## 用户目标与授权 + +- 用户目标:合入 test,便于人工实测「总结刚刚上传的文档」与 MinerU 解析等待。 +- 授权来源:用户明确「合入 test,我来进行实际测试」(dev→local test;未要求 push/main)。 +- 交付终点:local `test` 含功能祖先、rc tag、pinned 镜像 recreate、`:8081` health。 +- 禁止:不晋升 main;不 push;不删 Volumes。 + +## 结果 + +- local `test@54955c9d` + `rc-v1.1.0-beta.3` +- 含 `30fa4e88`(local_dev tip)与实现祖先 `f6e14f97` +- test `:8081` schema_version=65;ready ok;pinned app digest `ba834cb1…` +- 报告:[../../test-reports/2026-09-23-promote-fix-latest-upload-test-report.md](../../test-reports/2026-09-23-promote-fix-latest-upload-test-report.md) + +## 步骤 + +1. [x] 登记 promote 任务 / worktree(基线 test@e217929c) +2. [x] candidate images + PASS receipt(`30fa4e88` suite=`scoped-latest-upload-summary`) +3. [x] merge local_dev → promote tip(CURRENT/FEATURE-MATRIX 保留 test 侧,走 docs apply 通道外) +4. [x] `agentctl validate` 聚焦 go test + arch-check +5. [x] 推进 local `test` + `rc-v1.1.0-beta.3`;apply pin;`env-service.sh test rebuild` +6. [x] health/ready 冒烟 + +## 验收标准 + +- [x] `test` 含 latest-upload summary / parse-wait 祖先 +- [x] `:8081` `/health` `/ready` ok,schema_version≥64 +- [x] 运行镜像 digest 与 receipt pin 一致 +- [ ] 人工:上传 PDF →「总结我刚刚上传的文档」可见 `document_parsing` / 总结结果(用户实测) diff --git a/.doc/test-reports/2026-09-23-promote-fix-latest-upload-test-report.md b/.doc/test-reports/2026-09-23-promote-fix-latest-upload-test-report.md new file mode 100644 index 00000000..d62b6e25 --- /dev/null +++ b/.doc/test-reports/2026-09-23-promote-fix-latest-upload-test-report.md @@ -0,0 +1,46 @@ +--- +title: "latest-upload summary → test 晋升报告" +date: 2026-09-23 +task_id: promote-fix-latest-upload-test-2026-09-23 +verdict: PASS +--- + +# latest-upload summary → test 晋升报告 + +## 结论 + +local `test@54955c9d` + tag `rc-v1.1.0-beta.3` 已含 latest-upload summary / parse-wait(祖先 `f6e14f97`,dev tip `30fa4e88`);test `:8081` schema_version=65;pinned 镜像 recreate 与 receipt digest 一致。人工聊天回归由用户执行。 + +## 版本矩阵 + +| 项 | 值 | +|---|---| +| local test | `54955c9d` | +| rc tag | `rc-v1.1.0-beta.3` → `54955c9d` | +| local_dev tip(merge 第二父) | `30fa4e88` | +| 功能祖先 | `f6e14f97` | +| pin commit | `30fa4e88` | +| app digest | `sha256:ba834cb1c08f44d615789940115fb7403efb476b7822b2aa3d5caeb85d35a579` | +| test health schema | 65 | +| ready | ok / kb_ready=true | + +## 验证 + +| 项 | 命令/证据 | 结果 | +|---|---|---| +| candidate validate | `agentctl validate`:intent/coordinator/materialindex + server 聚焦用例 + arch-check | PASS (`7f456e51…`) | +| receipt gate | `promotion-receipt-check.sh --commit 30fa4e88 --require-digests` | PASS | +| images apply | `candidate-images-apply.sh test --commit 30fa4e88` | PASS | +| rebuild | `env-service.sh test rebuild`(pinned,未 docker build) | PASS | +| health | `GET :8081/health` schema_version=65 | PASS | +| ready | `GET :8081/ready` status=ok | PASS | + +## 状态 + +| 字段 | 值 | +|---|---| +| review_state | not_required | +| integration_state | merged_local_test | +| deployment | test_ok | +| remote_sync | not_requested | +| cleanup | pending | diff --git a/.doc/test-reports/assets/promotion-receipts/30fa4e88b21ddc918a4f408a13ef4d2c2d5acd6e.images.json b/.doc/test-reports/assets/promotion-receipts/30fa4e88b21ddc918a4f408a13ef4d2c2d5acd6e.images.json new file mode 100644 index 00000000..641d790b --- /dev/null +++ b/.doc/test-reports/assets/promotion-receipts/30fa4e88b21ddc918a4f408a13ef4d2c2d5acd6e.images.json @@ -0,0 +1,21 @@ +{ + "commit": "30fa4e88b21ddc918a4f408a13ef4d2c2d5acd6e", + "source_tree": "f3558d25f4baa6e69d0cc50455663288069eb927", + "source_context": "git-archive", + "recorded_at": "2026-09-23T02:26:39Z", + "tags": { + "app": "shuimu-agent-app:candidate-30fa4e88b21d", + "events": "shuimu-agent-events:candidate-30fa4e88b21d", + "pi-agent": "shuimu-pi-agent:candidate-30fa4e88b21d" + }, + "image_ids": { + "app": "sha256:ba834cb1c08f44d615789940115fb7403efb476b7822b2aa3d5caeb85d35a579", + "events": "sha256:ba834cb1c08f44d615789940115fb7403efb476b7822b2aa3d5caeb85d35a579", + "pi-agent": "sha256:4482f7e5bc7719fb3ca5d6f4dea45feb02b74336e43822deddebca95e10f7c9b" + }, + "image_digests": { + "app": "shuimu-agent-app@sha256:ba834cb1c08f44d615789940115fb7403efb476b7822b2aa3d5caeb85d35a579", + "events": "shuimu-agent-app@sha256:ba834cb1c08f44d615789940115fb7403efb476b7822b2aa3d5caeb85d35a579", + "pi-agent": "shuimu-pi-agent@sha256:4482f7e5bc7719fb3ca5d6f4dea45feb02b74336e43822deddebca95e10f7c9b" + } +} diff --git a/.doc/test-reports/assets/promotion-receipts/30fa4e88b21ddc918a4f408a13ef4d2c2d5acd6e.json b/.doc/test-reports/assets/promotion-receipts/30fa4e88b21ddc918a4f408a13ef4d2c2d5acd6e.json new file mode 100644 index 00000000..e09f2495 --- /dev/null +++ b/.doc/test-reports/assets/promotion-receipts/30fa4e88b21ddc918a4f408a13ef4d2c2d5acd6e.json @@ -0,0 +1,18 @@ +{ + "verdict": "pass", + "commit": "30fa4e88b21ddc918a4f408a13ef4d2c2d5acd6e", + "recorded_at": "2026-09-23T02:26:53Z", + "runner_url": "http://127.0.0.1:18865", + "model_id": "MiniMax-M2.7-highspeed", + "protocol": "typed-result-v1", + "image_digests": { + "app": "shuimu-agent-app@sha256:ba834cb1c08f44d615789940115fb7403efb476b7822b2aa3d5caeb85d35a579", + "events": "shuimu-agent-app@sha256:ba834cb1c08f44d615789940115fb7403efb476b7822b2aa3d5caeb85d35a579", + "pi-agent": "shuimu-pi-agent@sha256:4482f7e5bc7719fb3ca5d6f4dea45feb02b74336e43822deddebca95e10f7c9b" + }, + "suite": "scoped-latest-upload-summary", + "failure_class": "none", + "evidence_refs": [ + ".doc/test-reports/assets/promotion-receipts/30fa4e88b21ddc918a4f408a13ef4d2c2d5acd6e.images.json" + ] +}