Files
memind/docs/branch-disposition.md
john 5a13950bc3
Memind CI / Test, build, and release guards (push) Successful in 1m36s
docs: close release gate policy branch
2026-07-28 01:17:40 +08:00

14 KiB
Raw Permalink Blame History

历史分支处置登记

本文件记录已经完成迁移、但仍可能因为 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 分支 HEAD90ee4c3 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 分支 HEAD7ba63a8 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 Gate187/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 历史分支 HEADebfdc21 审计时相对 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 模块拆分

456ec54ddb3a33 的 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

这些修改已在 933466cfix: preserve chat order and published page scripts)进入 main。 2026-07-17 复核结果:其中四个 worktree 文件与 main 字节级一致; chat-finish-sync.test.mjsmain 版本额外包含两组回归测试,因此主线版本更完整。

最终处置

  • 不要 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 分支 HEAD3de116d origin/main 对应提交:3de116d

原始用途

该分支用于在长图导出时隐藏平台操作控件,并补充对应回归测试。

验证摘要

  • Git 祖先检查确认分支 HEAD 已进入 origin/main
  • 实现与回归测试分别落在 mindspace-long-image.mjsmindspace-long-image.test.mjs
  • 本次仅补录历史处置事实,没有重新引用该分支或重跑历史发布。

最终处置

  • 保留本地分支名用于审计追溯。
  • 不要从该分支继续开发。
  • 不要 merge、cherry-pick 该分支提交或从该分支构建 runtime/artifact。
  • 后续开发必须从最新 origin/main 新建分支。

feature/relax-release-gate-pending-ci

状态:禁止再次引用。改动已提交并进入 origin/main,该分支保留仅用于只读追溯,不是待合并开发分支。

审计日期:2026-07-28 分支 HEADa95681e origin/main 对应提交:a95681e

原始用途

该分支用于在候选提交已与 origin/main 同步时处理 Gitea CI 长时间保持 pending 的发布闸门判定,并补充 CI 状态回归测试。

验证摘要

  • Git 祖先检查确认分支 HEAD 已进入 origin/main
  • 规则实现和回归测试分别落在 release-gate/ci-status.mjsrelease-gate/ci-status.test.mjs
  • 本次仅补录历史处置事实,没有重新引用该分支或重跑历史发布。

最终处置

  • 保留本地分支名用于审计追溯。
  • 不要从该分支继续开发。
  • 不要 merge、cherry-pick 该分支提交或从该分支构建 runtime/artifact。
  • 后续开发必须从最新 origin/main 新建分支。

feature/relax-release-gate-rel-checks

状态:禁止再次引用。改动已提交并进入 origin/main,该分支保留仅用于只读追溯,不是待合并开发分支。

审计日期:2026-07-28 分支 HEAD82b74d7 origin/main 对应提交:82b74d7

原始用途

该分支用于调整常规 Portal 发布的 REL 检查,包括忽略本地 runtime 产物、 同步主线时的 CI 状态判定,以及通过两次干净构建验证 artifact 可复现性。

验证摘要

  • Git 祖先检查确认分支 HEAD 已进入 origin/main
  • 变更包含 release-gate/ci-status.test.mjsrelease-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 新建分支。