Skip to content

[bug] squash 合并下 sync 与 verifiedCommit 两头卡死,归档被迫重跑 review #59

Closed

Description

@stack-wuh

缺陷

sync 在 squash 合并的仓库里两头都过不去,导致 PR 合并后无法用规定的命令收口基线:

  • 停在 feature 分支:brief 读得到,但 merge-base --is-ancestor HEAD origin/main 因 squash 提交与分支头不同源而失败 → SYNC_NOT_FAST_FORWARD。
  • 切到 main:可以 fast-forward,但 sync.mjs 的 planData 第一步就 brief(r, n),而 brief 尚未取回 → BRIEF_NOT_FOUND。

连锁后果:review.verifiedCommit 指向合并前的分支 HEAD,与 squash 后的 main HEAD 不同源,archive plan 被 REVIEW_NOT_PASSED 拒;目前只能按 shadow-dev-release SKILL §4 在 main 上重跑一次 review 才能归档(同一次 change 的 review 记录被写两遍)。

实测复现

期望

  • sync plan 的读序调整或提供跨分支定位:允许在 main 上按名称/baseBranch 取回 brief 后再 fetch + --ff-only(与现 execute 同语义,不动 fast-forward 判定)。
  • squash 合并下 verifiedCommit 的同源判定应能识别「squash 提交即本次变更的落地提交」,不要求重跑 review。

影响面

仅收口体验,不产生数据破坏;规避手段是 git merge --ff-only origin/main 加一次 review 重跑。

Activity

  1. stack-wuh commented on Oct 12, 2026

    @stack-wuh
    OwnerAuthor

    前半的浅修复试过并回退:抛错点在 cli.mjs 的 readBrief(进域逻辑之前),且 planDomain 无条件 write(b) 使 blob 派生的 brief 无处持久化。真修复的形状与取舍见 #65。后半(verifiedCommit 同源)按规范仍是 main 上重跑 review。

  2. stack-wuh commented on Oct 13, 2026

    @stack-wuh
    OwnerAuthor

    结论:sync 那一半已修,verifiedCommit 那一半裁定为设计内的门

    现象一(squash 后 sync 取不回基线)—— 已修复并发版

    现象二(归档前须在 main 重跑 review)—— 裁定为设计内的门,不作为缺陷修

    • 归档门要求 review.verifiedCommit === HEAD。squash / merge 产生的合并提交必然不等于审查时记录的提交,这个对账是故意保留的:不在合并后的树上重跑一次 review,就是带着未对账的漂移归档。
    • 因此该步骤已在 skills/shadow-dev-release/SKILL.md §4 明确写成流程的一部分("squash 合并必然带来漂移,这是设计内的门而非缺陷"),不再被记录为 CLI 缺陷。
    • 若将来要消掉这一步,需要的是「证明合并提交与审查提交同源」的新机制(比对 tree、或合并提交的第一父),那属新的契约设计,须单独立项。

    关闭本 issue:现象一已修复并发版(v1.7.0),现象二按裁定归入 SKILL 流程说明。

  3. stack-wuh commented on Oct 13, 2026

    @stack-wuh
    OwnerAuthor

    sync 半边由 PR #70 / v1.7.0 修复并四次真实收口验证;verifiedCommit 半边裁定为设计内的门,已写进 release SKILL §4。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions