edit | blame | history | raw

Shared Content Postcommit Archive 回退配置配方 V001

1. 用途与边界

本配方只定义 legacy 目录已完成正式归档后,如何在另一个明确、独立的回退授权下恢复
legacy 原路径。它不是回退授权,不包含可执行的生产 rollback config,也不允许在正常迁移
中预先执行回退。

2. 必需前态

  1. 原 archive config 和 ARCHIVED/0 terminal 的 bytes/SHA-256 精确可读。
  2. archive target 存在且为完整 exact-set,legacy source absent。
  3. 完整 publisher 648 项正式集合、manifest-self、cases/result 两入口、17列事件链和 lock
    absence 全部通过。
  4. 独立决策明确给出 AUTH-* rollback authorization、AUDIT-* rollback audit、唯一
    ROLLBACK-* identity 和 operator。
  5. 回退回执父目录为普通、非reparse、同卷目录,正式回退回执目标 absent。

3. 严格配置

配置必须符合
dev/ana-dev/shared_content_publisher/postcommit_archive.rollback.schema.json,且只含:

  • schema_version=SHARED_CONTENT_POSTCOMMIT_ARCHIVE_ROLLBACK_CONFIG_V1
  • 原 task/case/batch/run/attempt/archive 六项身份;
  • 新 rollback_id、operator、rollback_authorization_id、rollback_audit_id;
  • operation_root/resolved_root 与原 archive config 的项目根完全一致;
  • archive_config_path 及其 bytes/SHA-256;
  • 原 archive terminal bytes/SHA-256;
  • 生产 test_control=PRODUCTION/NONE

缺字段、多字段、类型错误、AUTH/AUDIT 域错误、任一身份或哈希漂移均须在移动前失败关闭。

4. 执行与验收

python -m shared_content_publisher.postcommit_archive --rollback-config <authorized-rollback-config.json>

协调器必须先以 CreateNew 形成独立 rollback contract、原 archive terminal 副本和 rollback
manifest;随后一次 no-overwrite 同卷目录原子改名 archive target → legacy source;最后原子
发布 rollback terminal。成功为 LEGACY_RESTORED/0,同配置完整重放为
IDEMPOTENT_LEGACY_RESTORED/0

任一中断由同配置从回执锚和 source/target 真值恢复。source/target 双存在或双缺失、回执
部分写、授权/配置/terminal/归档树漂移均 RECOVERY_REQUIRED/30。回退终态存在后,原
archive config 不得把 legacy 再次归档。