分支同步与发布门禁契约¶
依赖: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或同等阻断结果,禁止假绿。