跳转至

分支同步与发布门禁契约

依赖:shared.md。该契约只定义可验证的同步方向和发布证据,不授权任何 checkout、reset、清理或外部发布动作。

pub trait BranchReleasePolicy: Send + Sync {
    fn allowed_source(
        &self,
        target: ReleaseBranch,
    ) -> Result<ReleaseBranch, BranchReleaseError>;

    fn validate_worktree_safety(&self) -> Result<(), BranchReleaseError>;

    async fn verify_branch(
        &self,
        branch: ReleaseBranch,
    ) -> Result<Vec<VerificationEvidence>, BranchReleaseError>;

    fn decide_release(
        &self,
        decision: ReleaseDecision,
    ) -> Result<(), BranchReleaseError>;
}

前置条件

  • 共享协议、契约、CommitLog、Fanout、SDK 与契约测试以 Main 为唯一源;StoreRedis 和 StoreScylla 的同步方向均为单向吸收 Main。
  • StoreScylla 吸收后只承载后端装配与迁移差异,不能反向覆盖共享语义。
  • 任何分支操作前先通过 validate_worktree_safety;存在用户未提交改动时禁止以覆盖式操作获得干净树。

后置条件

  • verify_branch 分别产出每个分支的真实后端集成、功能 E2E 与性能门禁证据;一个分支的通过不能为另一分支背书。
  • decide_release 只在目标分支的全部必需证据 passed == true 且无跳过项时成功;180 秒、重负载或更长验证不得由短冒烟替代。

错误

  • 非单向来源返回 DirectionViolation;脏工作树风险返回 DirtyWorktreeRisk。
  • 缺少、跳过或失败的验证分别返回 MissingVerification、SkippedVerification 或同等阻断结果,禁止假绿。