diff --git a/AGENTS.md b/AGENTS.md index 9f2694e..4e1a912 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,11 +6,11 @@ 以下规则适用于 Codex、Cursor、Cloud、Claude、人工操作及其它任何自动化工具,不得绕过: -1. 除 `main` 外,同一时间只允许存在一个尚未闭环的本地开发分支;同时只允许一个开发 worktree。已有开发分支或开发 worktree 时,严禁通过 `git switch -c`、`git checkout -b`、`git worktree add`、IDE、云端任务或脚本再创建第二个分支/worktree。 -2. 当前开发分支未完成全部改动、仍有未提交文件、仍有未推送提交、尚未并入 `main`、其提交尚未进入 `origin/main`,或该分支/worktree 尚未删除时,Codex、Cursor 及其它 Agent 一律不得创建新分支。不得以并行开发、临时修复、试验、续作、PR、冲突处理或“先开分支再说”等理由例外处理。 -3. 一个开发分支必须完整闭环后才能开始下一分支,顺序固定为:完成开发 → 执行对应测试/verify → 提交全部应交付改动 → 取得规则要求的明确批准 → 合并进本地 `main` → 推送并确认远端 `origin/main` 已包含该分支提交 → 删除开发 worktree(如有)→ 删除本地开发分支 → 删除同名远端开发分支(如曾创建)。 -4. 新建分支前必须先执行只读检查,确认工作区干净、当前位于已同步的 `main`、不存在其它本地开发分支、不存在其它开发 worktree,且上一分支的 HEAD 已是 `origin/main` 的祖先。任一检查不满足,必须停止并继续完成或清理上一分支,禁止创建新分支。 -5. 分支闭环中的 `push`、合并 `main`、删除分支等动作仍分别受本文的测试、明确批准和发布闸门约束;本节只增加“未闭环不得开新分支”的硬阻断,不构成对这些动作的预先授权。 +1. 除 `main` 外,同一时间只允许存在一个尚未闭环的本地开发分支;同时只允许一个开发 worktree。已有尚未闭环的开发分支或开发 worktree 时,严禁通过 `git switch -c`、`git checkout -b`、`git worktree add`、IDE、云端任务或脚本再创建第二个分支/worktree。 +2. 当前开发分支未完成全部改动、仍有未提交文件、仍有未推送提交、尚未并入 `main`、其提交尚未进入 `origin/main`,或相关开发 worktree 尚未删除时,Codex、Cursor 及其它 Agent 一律不得创建新分支。不得以并行开发、临时修复、试验、续作、PR、冲突处理或“先开分支再说”等理由例外处理。 +3. 一个开发分支必须完整闭环后才能开始下一分支,顺序固定为:完成开发 → 执行对应测试/verify → 提交全部应交付改动 → 取得规则要求的明确批准 → 合并进本地 `main` → 推送并确认远端 `origin/main` 已包含该分支提交 → 删除开发 worktree(如有)→ 在 [docs/branch-disposition.md](docs/branch-disposition.md) 登记该分支“已提交/已进入 main/禁止再次引用”。本地分支可保留用于只读追溯,但不得再作为开发基线、合并来源、cherry-pick 来源或发布来源;远端功能分支默认删除,发布和审计依据必须使用 `main` commit、tag、CI 记录或 runtime manifest,而不是功能分支名。 +4. 新建分支前必须先执行只读检查,确认工作区干净、当前位于已同步的 `main`、不存在尚未闭环的本地开发分支、不存在其它开发 worktree,且上一分支的 HEAD 已是 `origin/main` 的祖先;若存在已登记为“禁止再次引用”的历史本地分支,它不阻塞新分支创建。任一检查不满足,必须停止并继续完成、同步或登记上一分支,禁止创建新分支。 +5. 分支闭环中的 `push`、合并 `main`、删除 worktree、处置/登记历史分支等动作仍分别受本文的测试、明确批准和发布闸门约束;本节只增加“未闭环不得开新分支”的硬阻断,不构成对这些动作的预先授权。 ## 必读:分支与发布闸门 diff --git a/docs/branch-disposition.md b/docs/branch-disposition.md index 3dfe847..0ec74e7 100644 --- a/docs/branch-disposition.md +++ b/docs/branch-disposition.md @@ -9,6 +9,53 @@ - 不得从这类分支继续开发,不得 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/product-quality-p0`