# Goose v1.49 Phase 3 收口清单 > **本阶段不授权 103/105 操作。** 仅整理证据、回滚路径与合并前闸门。 > > **2026-09-09**:本机真实 LLM 聚合 smoke 已默认禁用,见 [goose-v149-real-llm-gate.md](./goose-v149-real-llm-gate.md)。`run-goosed-v149-phase3.mjs` 须 `GOOSE_V149_ALLOW_REAL_LLM=1` 且用户明确批准,禁止 Agent 循环重跑。 > 决策表:[TKMIND_V1_49_MIGRATION.md](../TKMIND_V1_49_MIGRATION.md) · Phase 2 台账:[goose-v149-phase2-evidence.md](./goose-v149-phase2-evidence.md) ## 聚合验证入口 **默认(不消耗 LLM token):** ```bash node scripts/run-goosed-v149-phase3-offline.mjs ``` 通过时应输出 **`GOOSE_V149_PHASE3_OFFLINE_OK`**。 **完整 smoke(须用户明确批准 + DashScope 配额):** ```bash GOOSE_V149_ALLOW_REAL_LLM=1 bash scripts/run-goosed-v149-local.sh # :18049 另开终端 GOOSE_V149_ALLOW_REAL_LLM=1 node scripts/run-goosed-v149-phase3.mjs ``` 通过时应输出 **`GOOSE_V149_PHASE3_OK`**。 ## 已取得证据(可进入合并讨论,不可直接删代码) | 能力 | 证据 | Phase 3 结论 | |---|---|---| | tkmind_compat / PG Session | `check-goosed-v149-all.mjs` | **Keep** — 已适配 v1.49 | | sandbox-fs / harness | harness + sandbox-fs smoke | **Keep** | | platform/web | `check-goosed-v149-web-smoke.mjs` | **Keep** — 已移植;upstream skill 并存 | | skills / web-search | `check-goosed-v149-skills-smoke.mjs` | **Wrapper** — 不替换 platform/web | | DeepSeek Finish + 工具轮次 | provider + deepseek-tools smoke | **Keep** relay + v1.49 runtime | | reasoning 保留 | `check-goosed-v149-thinking-preservation.mjs` | **保留** `:18036` 直至生产 parity | | message sanitize | `compare-goose-v149-message-sanitize.mjs` | provider 层等价;Portal 展示仍 Keep | | Memory legacy owner | memory-loop + drift + failopen | **Keep** — 禁止 upstream 写 MySQL | | 计费 token_state | cost-smoke JSON | **Wrapper** — 观察 v1.49 原生 cost | ## 明确禁止在本阶段删除 - `session-reply-wait.mjs`、H5 SSE 游标映射、Finish merge - `deepseek-no-think-proxy.mjs` / `:18036`(生产 parity 未退役) - MindSpace / Page Data / 微信 / 计费 / capabilities 策略 - 1.41 stable 端口池 `:18006`–`:18014` 与 launchd 配置 ## 合并前闸门(Memind 仓库) 1. [x] `upgrade/v1.49-tkmind` worktree 变更已 review(`tkmind_go-v149` · commit `6648c4bfb` pushed to `tkmind/upgrade/v1.49-tkmind`) 2. [x] Memind 侧脚本/文档/canary 开关 PR 就绪(`cursor/v149-merge-prep-gates` · `verify:mindspace-publish-guards:full` OK) 3. [x] `node scripts/run-goosed-v149-phase3.mjs` 连续通过(2026-09-10:canary=all 下两次 `GOOSE_V149_PHASE3_OK`,日志 `/tmp/v149-phase3-run2.log` 与 `/tmp/v149-phase3-run3.log`) 4. [x] Memory manifest 无 drift(`compare-goose-v149-memory-manifest.mjs` · 2026-09-10 `GOOSE_V149_MEMORY_DRIFT_OK`) 5. [x] 主 Portal 重启后 canary 联调:`check-goosed-v149-portal-smoke.mjs`(targets 含 `:18049`);canary 块强制 `H5_PUBLIC_BASE_URL=http://127.0.0.1:8081` 避免 5173 未起时链接失效 6. [x] **用户明确批准** 后才:`git push`、合并 `main`、任何 103 构建(2026-09-10:`feature/goose-v149-wechat-gate-runbook` → `main` `baff51e2`;103 只读预演见 `test/_103_baselines/pre-v149-20260910/`) ## 合并后 / 生产前(仍须单独审批) - `bash scripts/check-release-ready.sh` - 生产 Gate report(Core + Impact) - `npm run verify:mindspace-publish-guards:full` 等受保护路径 verify - Memory owner 切换:**不在** v1.49 运行时升级包内默认开启 ## 回滚(任意时刻) ```bash bash scripts/switch-goose-v149-canary.sh rollback pnpm dev # stable :18006 继续服务;v1.49 :18049 可单独停进程 ``` ## 基线产物索引 见 [docs/baselines/README.md](./baselines/README.md)。 ## 103 生产切换(单独审批) 本地 Phase 3 证据齐后,103 维护窗执行步骤见 **[goose-v149-103-cutover-runbook.md](./goose-v149-103-cutover-runbook.md)**(clone/vendor/build、9 实例 launchd、回滚、与 Portal 发版顺序)。**未获明确批准前不得按 runbook 操作 103/105。**