57 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: 备份作品抽取结果
description: 对单本作品的 upgrade_book 派生状态做七域一致性备份、离线复验、回滚演练与精确恢复。需要在重置或高危维护前留下可复验快照、或需要把作品抽取状态恢复到某个备份点时使用;不负责重置、定向修复和正常按窗抽取。
disable-model-invocation: true
---
# 备份作品抽取状态
何时用:要对某本书的 `upgrade_book` 派生状态做**可离线复验的快照**,或要把它恢复到某个已有快照。重置由 `重置作品抽取结果` 负责,定向修复与存量迁移由 `修复作品抽取结果` 负责,正常 `windows/run/status` 由 `抽取作品知识` 负责。
## 依赖边界
同书互斥复用 `抽取作品知识/scripts/upgrade_work_lock.py` 的 PostgreSQL session advisory lock,不复制第二套互斥规则。`upgrade_book`、`parse_upgrade.py`、`parse-book/SKILL.md` 等字符串是存量数据库与备份清单的兼容键,**不随 Skill 改名**;`capture_code_identity` 里 key 稳定、value 指向拆分后的真实路径。
## 输入
| 子命令 | 参数 | 用途 |
|---|---|---|
| `backup` | `--work-id`、`--expected-chapters`、`--expected-windows` | 一致性导出七域状态到 `/private/tmp` 下的新目录。 |
| `verify` | `--backup-dir` | 纯离线复验已有备份,不加载数据库连接配置。 |
| `rehearse` | `--work-id`、`--backup-dir`、`--confirmation-sha` | 在真实表的单事务中应用并强制回滚。 |
| `restore` | `--backup-dir`、`--backup-id`、`--confirmation-sha`、`--execute` | 精确匹配后逐域读回再提交。 |
```bash
.venv/bin/python muse/content/entity/skills/ingest/备份作品抽取结果/scripts/backup_upgrade_work.py backup \
--work-id 8 --expected-chapters 594 --expected-windows 116
.venv/bin/python muse/content/entity/skills/ingest/备份作品抽取结果/scripts/backup_upgrade_work.py verify \
--backup-dir /private/tmp/muse-upgrade-work8-before-reset
.venv/bin/python muse/content/entity/skills/ingest/备份作品抽取结果/scripts/backup_upgrade_work.py rehearse \
--work-id 8 --backup-dir /private/tmp/muse-upgrade-work8-before-reset \
--confirmation-sha <manifest-confirmationSha>
```
## 输出
备份目录内七个状态域各一个 JSONL,加 `manifest.json` 与 `manifest.sha256`。清单绑定数据库 identity、Canonical 章节与 block、窗口边界、活动字段合同、计划参数和实际代码 fileSha,并给出下游必须精确匹配的 `backup_id` 与 `confirmationSha`。`verify` 输出逐文件行数、主键摘要、内容摘要与文件摘要的复验结论;`rehearse` 输出应用差异并声明已回滚。
## 数据边界
- `backup` 只在一个 `REPEATABLE READ READ ONLY` 事务里读库,不写库、不调用模型;连接关闭后从磁盘独立重算全部摘要。
- `verify` 只读本地文件。
- `restore --execute` 是唯一写库入口,写入范围限于目标租户、目标作品、`upgrade_book` 边界内的派生状态。
- 备份目录必须是 `/private/tmp` 下尚不存在的新目录;导出失败时删除本次新建目录并非零退出。
## 红线
- 恢复前固定执行离线 `verify`;未 `verify` 不得 `restore`。
- `restore --execute` 必须精确匹配 `backup_id + confirmationSha`,逐域读回后才提交。
- work、tenant、数据库 identity、Canonical、窗口、字段合同或代码 fileSha 任一漂移,整体拒绝,不做部分恢复。
- 取锁失败必须在任何业务 SQL、文件验证、嵌入或模型调用之前非零退出。
- 备份清单里的逻辑键不得为了"看起来整齐"改名,否则存量备份立刻不可离线复验。
## 复利合同
- `backup` 并离线复验通过后经 `propose_lesson_dedup` 登记 `example_lesson`(绑 work_id / backup_id)。
- 升格仍走人工评审,不自动把备份参数升为公共运维规则。