# 历史分支处置登记 本文件记录已经完成迁移、但仍可能因为 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` 新建分支。