From 176db44c4bb26420bf74858aa26e6e41775698ee Mon Sep 17 00:00:00 2001 From: weichen Date: Fri, 9 Oct 2026 10:44:33 +0000 Subject: [PATCH] Record the v0.2.0 base release scope and owner tag steps Why: v0.2.0 is the hard prerequisite for RDM shared work, and the release checklist referenced a stale SurfaceVersion and tag message. Evidence: SELF - scope lines are tied to merged Backend PRs (#66-#110); Backend #110 CI success; UI composite run 1369 shows 14 files/103 tests. Impact: Adds docs/records/2026-10-09-base-v0.2.0-release.md and points the compat policy and the EXT-1 proposal at the actual 2.5.0-experimental line. Tag creation and push stay with the owner (dual-key rule). Refs: Dev feature/base-v020-release; Backend #110 --- .../2026-10-01-extension-compat-policy.md | 7 +- ...2026-10-05-ext-1-inproc-command-handler.md | 1 + .../records/2026-10-09-base-v0.2.0-release.md | 102 ++++++++++++++++++ 3 files changed, 107 insertions(+), 3 deletions(-) create mode 100644 docs/records/2026-10-09-base-v0.2.0-release.md diff --git a/docs/proposals/2026-10-01-extension-compat-policy.md b/docs/proposals/2026-10-01-extension-compat-policy.md index 1daba9f..62e90d4 100644 --- a/docs/proposals/2026-10-01-extension-compat-policy.md +++ b/docs/proposals/2026-10-01-extension-compat-policy.md @@ -8,7 +8,7 @@ | 面 | 标识 | 规则 | |---|---|---| | 插件清单 | `apiVersion` | 接受 `1.0` 与 `2.0-experimental`。其他值整包拒绝(fail-closed) | -| 公开 Go 包 | `extension.SurfaceVersion` | `2.0.0-experimental`。实验窗口内允许破坏性调整,但必须改契约快照并在提案里写一句 | +| 公开 Go 包 | `extension.SurfaceVersion` | 实验系列 `2.x.0-experimental`(2026-10-09 v0.2.0 时为 `2.5.0-experimental`,每次加法升次版本号)。实验窗口内允许破坏性调整,但必须改契约快照并在提案里写一句 | | HTTP API | 路径前缀 `/api/` 与 `/host/v1/` | 已发布路径只加字段,不改语义、不删字段。新能力用新路径 | 弃用:公开符号先标记注释 `Deprecated:`,至少一个下游可升级的版本之后才删除。实验窗口内的删除仍要改快照测试,不能静默。 @@ -45,10 +45,11 @@ replace agent-system-core => ../Agent-System-Dev/modules/core ## 5. 发版命令(owner 执行,本次未执行) -tag 名以 V1.2 实施推进方案批复的 `v0.2.0` 为准(2026-10-05 对齐;五仓 backend/core/frontend/ui/Dev 同打): +tag 名以 V1.2 实施推进方案批复的 `v0.2.0` 为准(2026-10-05 对齐;五仓 backend/core/frontend/ui/Dev 同打)。 +具体提交、tag 消息与核对命令以 [v0.2.0 发版记录](../records/2026-10-09-base-v0.2.0-release.md) 为准(消息里的 SurfaceVersion 写发版时的实际值): ``` -git tag -a v0.2.0 -m "extension surface 2.0.0-experimental" +git tag -a v0.2.0 <该仓对应提交> -m "<发版记录里的消息>" git push origin v0.2.0 ``` diff --git a/docs/proposals/2026-10-05-ext-1-inproc-command-handler.md b/docs/proposals/2026-10-05-ext-1-inproc-command-handler.md index 988e551..ce8c7a5 100644 --- a/docs/proposals/2026-10-05-ext-1-inproc-command-handler.md +++ b/docs/proposals/2026-10-05-ext-1-inproc-command-handler.md @@ -9,6 +9,7 @@ - **希望符号**:`pkg/extension` 新增 `Request` / `Handler` / `Host`(owner 作用域宿主句柄最小集)与 `Registry.AddCommandHandler(spec, h)`;基座侧配套 `cmdbus.Bus.RegisterPluginCommand`。 - **为何现有注册点组合不出来**:`RegisterPluginCommands` 仅登记 spec;`HostClient` 走 sidecar HTTP 且需要进程内不可得的 host token;owner 作用域必须由基座在分发时构造,插件无法自造。 - **兼容**:只加符号与方法,不改既有路径语义;`SurfaceVersion` 保持 `2.0.0-experimental`,实验窗口内的接口调整以本提案为记录。 + (2026-10-09 注:此后 EXT-8/9/11/12 与执行原语硬开关按 compat-policy 逐次加法升级,v0.2.0 发版时为 `2.5.0-experimental`,见 [v0.2.0 发版记录](../records/2026-10-09-base-v0.2.0-release.md)。) ## 2. 公开面变更(surface.txt 12 → 15 项) diff --git a/docs/records/2026-10-09-base-v0.2.0-release.md b/docs/records/2026-10-09-base-v0.2.0-release.md new file mode 100644 index 0000000..a4d00d6 --- /dev/null +++ b/docs/records/2026-10-09-base-v0.2.0-release.md @@ -0,0 +1,102 @@ +# 基座 v0.2.0 发版记录 + +| 项 | 内容 | +|---|---| +| 状态 | **候选已就绪,tag 待 owner 执行**(高后果操作双钥匙:发布版本由 owner 亲手打 tag 并推送) | +| 发版授权 | owner 2026-10-09 会话:「越快越好,你来执行即可,我已同意」(Q3)。Agent 完成候选组合、验证与本记录;tag 创建与推送按 AGENTS.md 双钥匙规则由 owner 执行 | +| 主任务 | Dev 仓 `feature/base-v020-release`(任务卡即本次发版的主记录) | +| 规范依据 | Agent-System-RDM `docs/materials/12-基座发版核对清单.md`;[扩展面兼容与演进](../proposals/2026-10-01-extension-compat-policy.md) §5 | + +## 1. 范围 + +v0.2.0 是第二段发版:在 v0.1.0 评估基线之上,附 experimental 兼容承诺(实验窗口内仍可破坏性调整,但须改快照并在提案记录)。 + +相对 v0.1.0 的公开面(`pkg/extension`,SurfaceVersion `2.0.0-experimental` → **`2.5.0-experimental`**): + +| 扩展 | 公开面 | 来源 | +|---|---|---| +| EXT-1 | `Handler`、`Host`、`Request`、`Registry.AddCommandHandler` | Backend #66 | +| EXT-5 | `Host.ParseDocument`;内置 xlsx/pptx 解析 | Backend #67、#68 | +| EXT-8 | `ResourceAuthorizer`、`Registry.RegisterResourceAuthorizer`;工件/检索/项目流/向量/hostapi 共享读取 | Backend #105、#107、#109 | +| EXT-9 | `Host.KnowledgePublish`、`Host.KnowledgeDelete`、`Options.DisableUploadIndexing` | Backend #106 | +| EXT-11 | `SetScopedHostFactory`、`NewScopedHost` | Backend #108 | +| EXT-12 | `Options.DisableConvCardMirror` | Backend #107 | +| 执行原语硬关闭 | `Options.DisableExecTools`;CLI `--disable-exec-tools`、配置键 `disableExecTools`、环境变量 `AGENT_SYSTEM_DISABLE_EXEC_TOOLS` | Backend #110 | + +同时包含的缺陷修复与行为变化(不改公开面): + +- 命令审计按 owner 存储与查询(v0.1.0 的 `GET /api/commands/audit` 跨租户可见;Backend `e0b1c27`,随 #105 合入); +- DOCX 解析保留修订插入、超链接与域结果内的文字;删除/移走的原文与域代码不进正文;含修订时显式告警(Backend #110); +- agent-stack N1–N3、Q1–Q3、I1–I2 阶段的库与接线(见 Backend #69–#103)。 + +**升级须知(下游)**: + +- 多用户共享部署在执行隔离就位前,应设置 `Options.DisableExecTools = true`。只关闭用户设置 `runtime.exec` 不够,因为任何用户都能经 `PUT /api/settings/user` 把它改回 true。 +- 下游 go.mod 的 8 条 deps replace 不变(compat-policy §4)。 +- 下游兼容验证:RDM PR #113 头 `d49d5c9` 的源码在 replace 指向本次 backend 候选时 `go build ./...` 与 `go test ./...` 通过(SELF,2026-10-09)。 + +## 2. 候选组合 + +| 仓 | 提交 | 依据 | +|---|---|---| +| Backend | 由 Dev 合入提交的 gitlink 决定(Backend main `f1c9cc0` 或其后) | Backend #110 合入;CI `ci / vet-and-test (push)` success | +| Core | `a253a40b8e5563119b00c4e71fb61fe0d11d6d6a` | == Dev gitlink == backend `deps/agent-system-core`(同 commit 约束) | +| Frontend | `84b73ab32848e623d0a0ab7ade552784dca8cf3c` | == Dev gitlink == Frontend main | +| UI | `76d6633736a7abb36ac1ecca42fe4e6f120d0558` | == Dev gitlink == UI main | +| Dev | 本任务 PR 合入 main 后的合入提交 | Dev CI(PR HEAD `make test` + `make build`) | + +最终 SHA 以 Dev 合入后 `git ls-tree modules/` 的实际输出为准,执行前按 §4 核对。 + +**UI 仓自身 CI 现状**:UI 仓 `ci.yml` 跑在 `nightly` 运行器上,自 2026-10-04 起每次都失败于 vitest 启动(`Cannot find native binding`,rolldown 可选依赖),与代码无关。同一 UI 提交在 Dev 组合 CI 中 `npm ci && tsc && vitest` 通过(14 文件 / 103 用例;Dev run 1369),本地 Node 26 复验同样通过。v0.2.0 以 Dev 组合 CI 为 UI 的权威验证;UI 仓 runner 修复另列后续任务。 + +## 3. tag 消息(五仓一致) + +``` +SurfaceVersion 2.5.0-experimental. Adds in-proc command handlers, the owner-scoped host handle, document parsing, resource authorization, knowledge publish/revoke, scoped host recovery, the card mirror switch and the exec hard switch. +``` + +## 4. owner 执行步骤 + +先在 Dev 主检出确认合入后的组合(只读): + +```bash +cd /home/weichen/projects/Agent-System-Dev && git fetch origin && git checkout main && git pull --ff-only +git status --porcelain # 必须为空 +DEV=$(git rev-parse origin/main); echo $DEV +git ls-tree $DEV modules/backend modules/core modules/frontend modules/ui +# core 同 commit:以下三行必须相同 +git ls-tree $DEV modules/core | awk '{print $3}' +git -C modules/core rev-parse HEAD +git -C modules/backend/deps/agent-system-core rev-parse HEAD +``` + +然后子仓先、Dev 后,逐仓打 tag(`` 用上面 `ls-tree` 打印的该仓 gitlink): + +```bash +MSG='SurfaceVersion 2.5.0-experimental. Adds in-proc command handlers, the owner-scoped host handle, document parsing, resource authorization, knowledge publish/revoke, scoped host recovery, the card mirror switch and the exec hard switch.' +for m in backend core frontend ui; do + SHA=$(git ls-tree $DEV modules/$m | awk '{print $3}') + git -C modules/$m fetch origin && git -C modules/$m tag -a v0.2.0 "$SHA" -m "$MSG" && git -C modules/$m push origin v0.2.0 +done +git tag -a v0.2.0 "$DEV" -m "$MSG" && git push origin v0.2.0 +``` + +推完核对(五处一致): + +```bash +for m in backend core frontend ui; do + echo "$m tag=$(git -C modules/$m rev-parse v0.2.0^{commit}) gitlink=$(git ls-tree v0.2.0 modules/$m | awk '{print $3}')" +done +git ls-remote --tags origin v0.2.0 +``` + +## 5. 发版后(Agent 可执行,tag 在位后启动) + +- RDM 升钉到 v0.2.0 五仓 tag,并重定基合入 #113/#114(RDM 计划 G1-1); +- RDM 二进制设置 `DisableExecTools: true`(RDM 计划 G1-7); +- Releases 仓按 `scripts/build-release.sh 0.2.0` 构建制品与 manifest(另立任务,内部发布,不公开)。 + +## 6. 不做的事 + +- 不使用 `v0.2.0-experimental` 这类 tag 名;不在实验窗口发布 npm;不改 Go module path。 +- RDM 仓 v0.2.0 tag 不在本次范围(RDM 升钉完成后另行评估)。