mirror of
https://github.com/agent-substrate/substrate.git
synced 2026-11-10 10:13:50 +08:00
Refactors the atelet Restore API so the DATA_ON_GOLDEN base snapshot travels as a typed restore source instead of a bare string, preparing for the node-local snapshot cache (#690, #1551): `RestoreRequest` gets its own external snapshot *source* message, and read-side attributes of a restore source have a home — today the URI, next (in the M2 cache work) a sharing property set by the control plane. **This change is not backward compatible.** `golden_snapshot_uri` is removed from `RestoreRequest` with no transition: an ateapi from before this change sends a DATA_ON_GOLDEN restore an updated atelet rejects (no `base_config`), and an updated ateapi sends one an old atelet rejects (no `golden_snapshot_uri`). ateapi and atelet must be rolled together. Fresh starts, FULL/DATA restores of an actor's own snapshot, and local pause restores without a golden base are unaffected. Three commits, each buildable and tested: 1. **`ateletpb: give Restore its own external snapshot source message`** — `ExternalRestoreConfiguration` replaces `ExternalCheckpointConfiguration` in `RestoreRequest`'s config oneof (same wire shape; the checkpoint-side write-destination message is untouched), and `base_config` is added for the DATA_ON_GOLDEN base. No behavior change: nothing sets or reads the new field yet. 2. **`ateapi, atelet: carry the restore base snapshot in base_config`** — the cutover: ateapi sets `base_config` on both golden-data resume paths (external data snapshot, and local pause checkpoint combining with the golden); atelet reads and validates only `base_config`. The characteristic test of the ateapi→atelet request and the golden-data functional test pin the new field. 3. **`ateletpb: remove golden_snapshot_uri from RestoreRequest`** — the old field is deleted and `base_config` takes its field number, keeping the numbering dense. Tested: full ateapi + atelet suites including the controlapi functional tests; gofmt, golangci-lint, boilerplate clean. 🤖 Generated with [Claude Code](https://claude.com/claude-code)