# 切换与回退流程 — 可适配模板

Capordia 的情况是一个处理独立批次的团队。目标是恢复已识别的工作，同时不丢失其验收状态。可以计划一次中断。可接受时长、质量标准与责任划分均在迁移窗口之前确定。

## 1. 指定责任

| 角色 | 责任 | 需保留的证明 |
|---|---|---|
| 切换负责人 | 授权停止、变更权限与恢复 | 决定及 UTC 时间 |
| 数据负责人 | 冻结输入，检查副本与清单 | 带版本的清单与指纹 |
| 处理负责人 | 停止生产者，对尝试分类 | 批次登记册与流程日志 |
| 接收负责人 | 比对输出与约定标准 | 结果、拒绝与验收一致意见 |

小团队可以兼任多个角色，但作出验收的人与知道如何停止旧权限的人必须可识别。所提供的 CSV 模板不强制填写任何人员姓名。

## 2. 在复制之前建立基准

为每个批次分配稳定的标识符和输入版本。记录其路径、指纹、确切处理过程与验收标准。区分已启动的尝试与已验收的结果。保留恢复所需的参数与依赖项，包括你的软件所要求的计算状态。仅有一个名为 `final` 的文件不足以证明验收。

在练习中，八个批次代表 48 个虚构券。验收基于整数确定性结果；这不是 GPU checkpoint 模型。八个基准输出在中断前计算完成。

## 3. 停止新工作的进入

关闭新批次的准入，并记录最后获准的标识符。停止 worker 或等待预定的恢复边界。确认旧机器上已没有任何进程仍能接受输出。对登记册分类：已完成、进行中、待恢复。对模糊批次保留痕迹，而不是凭猜测将其声明为已完成。

在练习中，在 LOT-004 处中断得到 3 / 1 / 4。未经对账的重新启动会被拒绝。登记册及其结果保持在一起。

## 4. 复制、检查、变更权限

目标端必须拥有冻结数据集、所需状态和兼容程序。从目标端验证指纹与清单。如果缺少某项输入、清单已变更，或某个结果不再符合其指纹与验收规则，则阻止恢复。

在本练习中，`basculer` 先关闭源端，然后在连接关闭后复制文件。程序仅在检查之后才将目标端开放给生产。不要在此流程之外模仿对活动数据库的热复制。失败会使源端保持停止。

在真实系统中，关闭本地文件并不能阻止一台被隔离的旧机器继续运行。必须由接收结果的系统强制实施独占发布权，拒绝旧权限，并留存该拒绝的证明。本程序不提供这种保护。

## 5. 对账与验收

验证所有已完成的结果均已存在且可接受。没有验收的进行中尝试，在确认其旧生产者已停止后，重新置为待恢复。在重新开放准入之前进行一次有限的恢复。统计预期批次、已验收的唯一标识符、错误与恢复次数。记录一次独立于进程单纯结束的验收。

在程序中：`preparer-reprise` 将唯一的进行中批次转换为待恢复批次。`executer` 不会重新计算三个已完成的批次。最终检查要求八个已验收且与基准一致的输出。LOT-004 有两次尝试，但只有一个已验收输出。

## 6. 在可观察信号上触发回退

| 信号 | 本次演练建议的决策 |
|---|---|
| 输入指纹不同 | 处理前阻止；找回冻结版本 |
| 结果缺失或被篡改 | 阻止接收；检查批次与状态 |
| 存在两个可能的权威 | 停止恢复；确立唯一权威 |
| 程序无法恢复 | 保持准入关闭，并将最新状态转移到兼容环境 |
| 窗口期限已过 | 执行团队在切换前确定的决策与限制 |

如果目标已经接受了新结果，回到源的旧副本会丢失这些已接受的结果。冻结目标，导出其最新状态，进行校验，并将其转移到一个新的回退位置。在重新启动之前先对结果进行对账。如果存在外部效应，其清单也是回退的一部分；本次演练不会产生任何外部效应。

```text
python exercice.py basculer --source manuel/cible --destination manuel/retour --proprietaire atelier-retour
python exercice.py preparer-reprise --dossier manuel/retour
python exercice.py executer --dossier manuel/retour
python exercice.py comparer --reference manuel/reference --candidat manuel/retour
```

此操作之后，`manuel/source` 和 `manuel/cible` 将被关闭。只有 `manuel/retour` 可以继续工作。如果复制失败，或者校验拒绝某个结果，请保留证据，并且不要解锁两个生产者。

## 7. 结束迁移

保留清单、前后登记表、指纹、校验结果、程序版本、恢复决策以及可能的回退决策。只有在团队选定的保留期结束后，才能删除旧副本。本演练不会删除任何文件夹；其资源均为虚构，可与报告一并归档。
