35ec2e3544
Memind CI / Test, build, and release guards (push) Failing after 6s
Record merged image quota work as closed; admin UI lives in memind_adm 5174 only. Co-authored-by: Cursor <cursoragent@cursor.com>
413 lines
17 KiB
Markdown
413 lines
17 KiB
Markdown
# 历史分支处置登记
|
||
|
||
本文件记录已经完成迁移、但仍可能因为 Git 拓扑或遗留 worktree 被误判为“尚未进入 `main`”的分支。
|
||
它是分支复用、合并、cherry-pick 和清理前的必查清单。
|
||
|
||
## 处置规则
|
||
|
||
- 标记为“禁止再次引用”的分支只允许用于只读历史追溯。
|
||
- 不得从这类分支继续开发,不得 merge、cherry-pick、打包或发布。
|
||
- 不得把旧 worktree 中的未提交文件直接覆盖到当前主线;应先与最新 `origin/main` 逐文件比较。
|
||
- 若确需恢复历史代码,必须重新评估当前 `main`,在最新主线上建立新分支,并重新执行对应测试和 verify。
|
||
- 已提交、已合入并已进入 `origin/main` 的开发分支可以保留本地分支名;保留只用于审计和追溯,不代表还有待合并工作。
|
||
- 远端功能分支默认在闭环后删除;发布和审计依据使用 `main` commit、tag、CI 记录或 runtime manifest,不使用功能分支名。
|
||
- 这类保留分支必须在本文件登记清楚:分支名、最终 HEAD、进入 `origin/main` 的提交、验证摘要,以及“禁止再次引用”的状态。
|
||
|
||
## `feature/fix-rybbit-publication-tracking`
|
||
|
||
**状态:禁止再次引用。改动已提交并进入 `origin/main`,该分支保留仅用于只读追溯,不是待合并开发分支。**
|
||
|
||
审计日期:2026-07-27
|
||
分支 HEAD:`90ee4c3`
|
||
`origin/main` 对应提交:`90ee4c3`
|
||
|
||
### 原始用途
|
||
|
||
该分支用于补齐 `m.tkmind.cn` 发布页 Rybbit tracking:
|
||
|
||
- 在 `/u/:owner/pages/:slug` 与 `/MindSpace/:user/public/...` 发布页 HTML / shell 注入 Rybbit tracker。
|
||
- Portal bootstrap 在 Rybbit env secret 缺失时复用 `mindspace_config` 中存储的 MindSpace analytics secret。
|
||
- 补充发布页交付、domain bootstrap 与 Rybbit 配置测试。
|
||
|
||
### 已进入 `main` 的提交
|
||
|
||
| 提交 | 内容 |
|
||
|---|---|
|
||
| `c7718c6` | 注入 Rybbit tracking 到发布页交付链路 |
|
||
| `90ee4c3` | 修复空字符串 env secret 阻断存储 secret fallback |
|
||
|
||
### 验证摘要
|
||
|
||
本分支闭环前已通过:
|
||
|
||
- `node --test mindspace-rybbit.test.mjs server/portal-domain-services-bootstrap.test.mjs server/portal-published-page-delivery.test.mjs server/portal-publication-shell.test.mjs`
|
||
- `npm run verify:chat-finish-sync`
|
||
- `npm run verify:mindspace-publish-guards`
|
||
- `npm run verify:mindspace-publish-guards:full`
|
||
- `npm run verify:mindspace-page-sync-guards`
|
||
- `npm run verify:h5-session-patches`
|
||
- `npm run build`
|
||
- `npm test`
|
||
|
||
### 最终处置
|
||
|
||
- 保留本地分支名用于审计追溯。
|
||
- 远端功能分支如曾创建,应在确认 `origin/main` 包含对应提交后删除;发布依据是 `90ee4c3` 及后续 main/tag/manifest,不是该功能分支名。
|
||
- 不要从该分支继续开发。
|
||
- 不要 merge、cherry-pick 该分支提交或从该分支构建 runtime/artifact。
|
||
- 后续开发必须从最新 `origin/main` 新建分支。
|
||
|
||
## `codex/fix-portal-canary-backup-ssh`
|
||
|
||
**状态:禁止再次引用。改动已提交并进入 `origin/main`,该分支保留仅用于只读追溯,不是待合并开发分支。**
|
||
|
||
审计日期:2026-07-27
|
||
分支 HEAD:`7ba63a8`
|
||
`origin/main` 对应提交:`7ba63a8`
|
||
|
||
### 原始用途
|
||
|
||
该分支用于修复 Portal canary 生产发布脚本在 103 完整备份阶段的 SSH 中断问题:
|
||
|
||
- 将 103 full stable backup 与 persisted-data backup 拆到候选安装前的独立 SSH 步骤。
|
||
- 保留 full/persisted 备份硬闸门,后续 canary 安装远程脚本只复核已生成备份的 sha、gzip 与 `.env` 内容。
|
||
- 避免长 here-doc 发布脚本在大备份阶段被远端关闭连接后无法继续发布。
|
||
|
||
### 已进入 `main` 的提交
|
||
|
||
| 提交 | 内容 |
|
||
|---|---|
|
||
| `7ba63a8` | 拆分 Portal canary 发布前 103 备份步骤 |
|
||
|
||
### 验证摘要
|
||
|
||
本分支闭环前已通过:
|
||
|
||
- `bash -n scripts/release-portal-canary-prod.sh`
|
||
- `node scripts/build-portal-runtime.mjs`
|
||
- `ALLOW_MAIN_RELEASE=1 bash scripts/release-portal-canary-prod.sh --dry-run --yes`
|
||
- Portal production Gate:187/187 通过,report commit `7ba63a83b1b52add4536a9391e3f3ea7869e569f`
|
||
- `ALLOW_MAIN_RELEASE=1 bash scripts/release-portal-canary-prod.sh --yes`
|
||
|
||
### 最终处置
|
||
|
||
- 保留本地分支名用于审计追溯。
|
||
- 不要从该分支继续开发。
|
||
- 不要 merge、cherry-pick 该分支提交或从该分支构建 runtime/artifact。
|
||
- 后续开发必须从最新 `origin/main` 新建分支。
|
||
|
||
## `codex/product-quality-p0`
|
||
|
||
**状态:禁止再次引用。功能已进入 `main`,该分支不是待合并开发分支。**
|
||
|
||
审计日期:2026-07-17
|
||
历史分支基线:`6ef3ea8`
|
||
历史分支 HEAD:`ebfdc21`
|
||
审计时相对 `main`:分支侧 6 个提交、主线侧 53 个提交
|
||
|
||
### 原始用途
|
||
|
||
该分支用于 Memind 产品质量 P0 审计与修复,内容包括:
|
||
|
||
- 修复用户可见的聊天 routing/skill 前缀、旧 Page Data prompt 和部分 MindSpace/语音交互问题。
|
||
- 修复页面发布确认状态与过期未确认页面的 `owner_only` 回退。
|
||
- 将 `src/api/client.ts` 拆分为 MindSpace、发布、Page Data、Agent Jobs 等模块。
|
||
- 在 worktree 中继续处理聊天 Finish 顺序、消息按 ID 合并和发布 HTML 的预览 CSP 清理。
|
||
|
||
### 已进入 `main` 的提交
|
||
|
||
原分支提交已经在更新后的主线基线上重新落地,不能因为 commit hash 不同而再次引用:
|
||
|
||
| 原分支提交 | `main` 对应提交 | 内容 |
|
||
|---|---|---|
|
||
| `f7a9c21` | `77f1ea8` | 产品交互加固 |
|
||
| `db17691` | `f2d0c99` | 旧 prompt 与发布确认兼容 |
|
||
| `ad3c5bf` | `f6dcf5b` | MindSpace API 模块拆分 |
|
||
| `3504ee0` | `8ac159a` | 发布 API 模块拆分 |
|
||
| `456ec54` | `ddb3a33` | Page Data API 模块拆分 |
|
||
| `ebfdc21` | `6250b59` | Agent Jobs API 模块拆分 |
|
||
|
||
`456ec54` 与 `ddb3a33` 的 patch-id 不同,是因为主线重新落地时原有 Page Data 路径已经从
|
||
`/page-data` 更新为 `/admin/page-data`。两边最终的 `src/api/page-data.ts` 内容一致;
|
||
`ddb3a33` 是适配更新后主线的正确落点,不是遗漏提交。
|
||
|
||
### 遗留 worktree 的五文件修改
|
||
|
||
`/Users/john/Project/Memind-product-quality-p0` 曾保留以下五个未提交文件:
|
||
|
||
- `chat-finish-sync.mjs`
|
||
- `chat-finish-sync.test.mjs`
|
||
- `mindspace-public-delivery.mjs`
|
||
- `mindspace-public-delivery.test.mjs`
|
||
- `src/utils/message.ts`
|
||
|
||
这些修改已在 `933466c`(`fix: preserve chat order and published page scripts`)进入 `main`。
|
||
2026-07-17 复核结果:其中四个 worktree 文件与 `main` 字节级一致;
|
||
`chat-finish-sync.test.mjs` 的 `main` 版本额外包含两组回归测试,因此主线版本更完整。
|
||
|
||
### 最终处置
|
||
|
||
- 不要 merge `codex/product-quality-p0`。
|
||
- 不要 cherry-pick 该分支的 6 个提交。
|
||
- 不要从其脏 worktree 复制上述五个文件覆盖主线。
|
||
- 不要从该分支或 worktree 构建任何 runtime/artifact。
|
||
- 后续开发必须从最新 `origin/main` 新建分支。
|
||
|
||
该分支及 worktree 是否删除,属于独立清理动作;删除前仍需用户明确批准。
|
||
|
||
## `codex/retain-completed-branch-history`
|
||
|
||
**状态:禁止再次引用。改动已提交并进入 `origin/main`,该分支保留仅用于只读追溯,不是待合并开发分支。**
|
||
|
||
审计日期:2026-07-28
|
||
分支 HEAD:`3de116d`
|
||
`origin/main` 对应提交:`3de116d`
|
||
|
||
### 原始用途
|
||
|
||
该分支用于在长图导出时隐藏平台操作控件,并补充对应回归测试。
|
||
|
||
### 验证摘要
|
||
|
||
- Git 祖先检查确认分支 HEAD 已进入 `origin/main`。
|
||
- 实现与回归测试分别落在 `mindspace-long-image.mjs` 和
|
||
`mindspace-long-image.test.mjs`。
|
||
- 本次仅补录历史处置事实,没有重新引用该分支或重跑历史发布。
|
||
|
||
### 最终处置
|
||
|
||
- 保留本地分支名用于审计追溯。
|
||
- 不要从该分支继续开发。
|
||
- 不要 merge、cherry-pick 该分支提交或从该分支构建 runtime/artifact。
|
||
- 后续开发必须从最新 `origin/main` 新建分支。
|
||
|
||
## `feature/relax-release-gate-pending-ci`
|
||
|
||
**状态:禁止再次引用。改动已提交并进入 `origin/main`,该分支保留仅用于只读追溯,不是待合并开发分支。**
|
||
|
||
审计日期:2026-07-28
|
||
分支 HEAD:`a95681e`
|
||
`origin/main` 对应提交:`a95681e`
|
||
|
||
### 原始用途
|
||
|
||
该分支用于在候选提交已与 `origin/main` 同步时处理 Gitea CI 长时间保持
|
||
pending 的发布闸门判定,并补充 CI 状态回归测试。
|
||
|
||
### 验证摘要
|
||
|
||
- Git 祖先检查确认分支 HEAD 已进入 `origin/main`。
|
||
- 规则实现和回归测试分别落在 `release-gate/ci-status.mjs` 和
|
||
`release-gate/ci-status.test.mjs`。
|
||
- 本次仅补录历史处置事实,没有重新引用该分支或重跑历史发布。
|
||
|
||
### 最终处置
|
||
|
||
- 保留本地分支名用于审计追溯。
|
||
- 不要从该分支继续开发。
|
||
- 不要 merge、cherry-pick 该分支提交或从该分支构建 runtime/artifact。
|
||
- 后续开发必须从最新 `origin/main` 新建分支。
|
||
|
||
## `feature/relax-release-gate-rel-checks`
|
||
|
||
**状态:禁止再次引用。改动已提交并进入 `origin/main`,该分支保留仅用于只读追溯,不是待合并开发分支。**
|
||
|
||
审计日期:2026-07-28
|
||
分支 HEAD:`82b74d7`
|
||
`origin/main` 对应提交:`82b74d7`
|
||
|
||
### 原始用途
|
||
|
||
该分支用于调整常规 Portal 发布的 REL 检查,包括忽略本地 runtime 产物、
|
||
同步主线时的 CI 状态判定,以及通过两次干净构建验证 artifact 可复现性。
|
||
|
||
### 验证摘要
|
||
|
||
- Git 祖先检查确认分支 HEAD 已进入 `origin/main`。
|
||
- 变更包含 `release-gate/ci-status.test.mjs`、
|
||
`release-gate/runner.test.mjs` 和 artifact 可复现脚本。
|
||
- 本次仅补录历史处置事实,没有重新引用该分支或重跑历史发布。
|
||
|
||
### 最终处置
|
||
|
||
- 保留本地分支名用于审计追溯。
|
||
- 不要从该分支继续开发。
|
||
- 不要 merge、cherry-pick 该分支提交或从该分支构建 runtime/artifact。
|
||
- 后续开发必须从最新 `origin/main` 新建分支。
|
||
|
||
## `codex/wechat-page-data-delivery-guard`
|
||
|
||
**状态:禁止再次引用。改动已提交并进入 `origin/main`,该分支保留仅用于只读追溯,不是待合并开发分支。**
|
||
|
||
审计日期:2026-07-28
|
||
功能提交:`8bfb795`
|
||
`origin/main` 对应提交:`8bfb795`
|
||
|
||
### 原始用途
|
||
|
||
该分支用于为微信 Page Data 生成与修复增加独立 Aider 发送前审核,借鉴 Tool Gateway
|
||
能力但不写入 `h5_agent_runs`,并通过用户级开关和不可变用户标识限制灰度范围。
|
||
|
||
### 验证摘要
|
||
|
||
- 全量 Node 测试 `1399/1399` 通过。
|
||
- Page Data 专项验证 `78/78` 通过。
|
||
- 生产发布守门员单测 `90/90` 通过。
|
||
- Portal runtime 构建、运行时语法检查和 MindSpace 附件链接检查通过。
|
||
- Git 祖先检查确认功能提交已进入 `origin/main`。
|
||
|
||
### 最终处置
|
||
|
||
- 保留本地分支名用于审计追溯。
|
||
- 不要从该分支继续开发。
|
||
- 不要 merge、cherry-pick 该分支提交或从该分支构建 runtime/artifact。
|
||
- 后续开发必须从最新 `origin/main` 新建分支。
|
||
|
||
## `codex/wechat-page-data-canary-config`
|
||
|
||
**状态:禁止再次引用。改动已提交并进入 `origin/main`,该分支保留仅用于只读追溯,不是待合并开发分支。**
|
||
|
||
审计日期:2026-07-28
|
||
功能提交:`1e91195`
|
||
`origin/main` 对应提交:`1e91195`
|
||
|
||
### 原始用途
|
||
|
||
该分支用于把微信 Page Data Aider 审核开关和唐用户不可变 UUID 注入 103 候选
|
||
Portal,避免在线修改稳定 `.env`,并确保稳定 8081 与其他用户不进入审核链路。
|
||
|
||
### 验证摘要
|
||
|
||
- 全量 Node 测试 `1399/1399` 通过。
|
||
- 生产发布守门员单测 `90/90` 通过。
|
||
- 灰度发布脚本、候选启动脚本和远端 heredoc shell 语法检查通过。
|
||
- Git 祖先检查确认功能提交已进入 `origin/main`。
|
||
|
||
### 最终处置
|
||
|
||
- 保留本地分支名用于审计追溯。
|
||
- 不要从该分支继续开发。
|
||
- 不要 merge、cherry-pick 该分支提交或从该分支构建 runtime/artifact。
|
||
- 后续开发必须从最新 `origin/main` 新建分支。
|
||
|
||
## `codex/wechat-page-data-canary-aider-bin`
|
||
|
||
**状态:禁止再次引用。改动已提交并进入 `origin/main`,该分支保留仅用于只读追溯,不是待合并开发分支。**
|
||
|
||
审计日期:2026-07-28
|
||
功能提交:`8cd85a9`
|
||
`origin/main` 对应提交:`8cd85a9`
|
||
|
||
### 原始用途
|
||
|
||
该分支用于修复 launchd 候选进程无法从系统 `PATH` 定位 Aider 的问题,将
|
||
`/opt/homebrew/bin/aider` 纳入 103 灰度预检、LaunchAgent 环境和候选启动校验。
|
||
|
||
### 验证摘要
|
||
|
||
- 全量 Node 测试 `1399/1399` 通过。
|
||
- 生产发布守门员单测 `90/90` 通过。
|
||
- 候选启动测试确认稳定 `.env` 无法覆盖受控 Aider 绝对路径。
|
||
- Git 祖先检查确认功能提交已进入 `origin/main`。
|
||
|
||
### 最终处置
|
||
|
||
- 保留本地分支名用于审计追溯。
|
||
- 不要从该分支继续开发。
|
||
- 不要 merge、cherry-pick 该分支提交或从该分支构建 runtime/artifact。
|
||
- 后续开发必须从最新 `origin/main` 新建分支。
|
||
|
||
## `codex/release-gate-impact-only`
|
||
|
||
**状态:禁止再次引用。改动已提交并进入 `origin/main`,该分支保留仅用于只读追溯,不是待合并开发分支。**
|
||
|
||
审计日期:2026-07-28
|
||
功能提交:`7a381db`
|
||
`origin/main` 对应提交:`7a381db`
|
||
|
||
### 原始用途
|
||
|
||
该分支用于将生产发布 Gate 调整为按 Git 影响域自动选择核心和受影响场景,
|
||
取消每次生产发布自动执行 187 项全量回归;无法识别影响范围或基线异常时硬阻断发布。
|
||
|
||
### 验证摘要
|
||
|
||
- 全量 Node 测试 `1399/1399` 通过。
|
||
- 生产发布守门员单测 `92/92` 通过。
|
||
- 对当前稳定 103 基线执行影响域选择,命中 `126/187`,无未映射文件。
|
||
- Git 祖先检查确认功能提交已进入 `origin/main`。
|
||
|
||
### 最终处置
|
||
|
||
- 保留本地分支名用于审计追溯。
|
||
- 不要从该分支继续开发。
|
||
- 不要 merge、cherry-pick 该分支提交或从该分支构建 runtime/artifact。
|
||
- 后续开发必须从最新 `origin/main` 新建分支。
|
||
|
||
## `feature/h5-llm-router-canary`
|
||
|
||
**状态:禁止再次引用。分支核心功能已提交并进入 `origin/main`,且已随 `main` 发布到 103 生产;该分支保留仅用于只读追溯,不是待合并开发分支。**
|
||
|
||
审计日期:2026-08-03
|
||
分支 HEAD:`0ea72f4`
|
||
`origin/main` 对应提交:`5ead1ab`(103 生产 release `20260802-214434-5ead1ab`)
|
||
|
||
### 原始用途
|
||
|
||
该分支用于 H5 LLM Intent Router 灰度验证,以及同一开发周期内的 WeChat 页面交付、缩略图、
|
||
45047/45015 延迟发送等修复。
|
||
|
||
### 为何不再使用该分支
|
||
|
||
1. **LLM Router 核心功能已在 `main` 中**,关键提交包括:
|
||
- `e45c930` — LLM intent router、direct chat execution、Memory V2 light intervention
|
||
- `43bc8bb` — H5 LLM intent router admin controls and shadow verification
|
||
- `91e140d` — WeChat admin-pluggable LLM intent router
|
||
2. **103 生产已从 `main` 发布**,当前 manifest 指向 `5ead1ab`(2026-08-02),已包含上述能力。
|
||
3. 分支 HEAD `0ea72f4` **不在** `origin/main` 历史中;分支上与 `main` 同消息的 9 个 WeChat
|
||
修复为平行重写(不同 SHA),`git cherry` 判定 patch 不等价;合并会在 `wechat-mp.mjs` 等处
|
||
产生冲突,并可能回退 `main` 上更新的 page-data 交付修复(`7e26b45`、`7624538`、`5ead1ab` 等)。
|
||
4. 分支相对 `main` **缺少**上述 page-data / release 修复,**不应**作为合并来源或发布来源。
|
||
|
||
### 验证摘要
|
||
|
||
- Git 祖先检查确认 Router 功能提交(`43bc8bb` 等)已进入 `origin/main`。
|
||
- 103 生产 `.release-manifest.txt` 确认 `git_head=5ead1ab`、`git_branch=main`。
|
||
- 分支工作区已干净;无未提交独有功能待并入 `main`。
|
||
|
||
### 最终处置
|
||
|
||
- 保留本地分支名 `feature/h5-llm-router-canary` 仅用于审计追溯。
|
||
- **后续不再使用该分支进行任何开发、合并、cherry-pick、打包或发布。**
|
||
- 不要 merge 该分支到 `main`;不要从该分支构建 runtime/artifact。
|
||
- 新功能必须从最新 `origin/main` 新建分支(推荐 `bash scripts/new-branch.sh feature/xxx`)。
|
||
|
||
## `feature/image-quota-admin`
|
||
|
||
**状态:禁止再次引用。改动已提交并进入 `origin/main`(Memind + memind_adm),该分支保留仅用于只读追溯,不是待合并开发分支。**
|
||
|
||
审计日期:2026-08-03
|
||
分支 HEAD(Memind):`946d875`
|
||
分支 HEAD(memind_adm):`a4d46f2`
|
||
`origin/main` 对应提交:`946d875`(Memind)、`a4d46f2`(memind_adm)
|
||
|
||
### 原始用途
|
||
|
||
图片生成额度(image_make)计费与管理:
|
||
|
||
- Memind:订阅 bonus 字段、额度流水、生图前校验与扣费、Admin API、Portal 余额弹窗展示
|
||
- memind_adm(5174):套餐默认额度、流水、用户详情充值 UI(禁止在 Memind `ops/` 扩展)
|
||
|
||
### 验证摘要
|
||
|
||
- `billing-subscription.test.mjs` + `mindspace-image-generation.test.mjs`:37/37 通过
|
||
- memind_adm `npm run build` 通过
|
||
- 本地 Admin API 联调脚本 `verify-image-quota-local.mjs` 通过
|
||
- Portal `/auth/me` 联调脚本 `verify-image-quota-portal.mjs` 通过
|
||
|
||
### 最终处置
|
||
|
||
- 保留本地分支名仅用于审计追溯。
|
||
- 不要从该分支继续开发、merge、cherry-pick 或发布。
|
||
- 后续管理后台 UI 只能在 memind_adm 5174 开发。
|