# 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. 执行与验收 ```powershell python -m shared_content_publisher.postcommit_archive --rollback-config ``` 协调器必须先以 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 再次归档。