mirror of
https://github.com/agent-substrate/substrate.git
synced 2026-11-10 10:13:50 +08:00
I'm cleaning up the ResumeActor workflow in https://github.com/agent-substrate/substrate/pull/1492/changes . This PR is to add tests first to make sure the refactor does not introduce any behaviour changes. Testing table: | \# | local (OnPause) | external (scope) | tmplUID | golden (scope) | fromData | boot | want | | :---- | :---- | :---- | :---- | :---- | :---- | :---- | :---- | | 01 | — | — | — | — | unset | f | Run RPC (cold boot), Restore not called | | 02 | — | — | — | — | GOLDEN | f | still Run: fromData only governs data-only snapshots; nothing to restore ⇒ golden branch skipped | | 03 | — | — | — | FULL | unset | f | golden fallback: Restore EXTERNAL, uri=goldenURI, Scope=FULL, golden="" | | 04 | — | — | — | FULL | unset | t | boot=true skips golden: Run RPC (fromData irrelevant here too) | | 05 | — | — | — | FULL | GOLDEN | f | same as 03 (no actor snapshot ⇒ not dataOnly ⇒ GoldenSnapshotUri stays empty) | | 06 | — | — | — | DATA | unset | f | FailedPrecondition — golden fallback rejects a non-Full golden | | 07 | — | — | — | FULL, malformed URI | unset | f | DataLoss — golden fallback, malformed golden URI | | 08 | — | — | mismatch | FULL | unset | f | golden fallback unaffected: Restore EXTERNAL, uri=goldenURI, Scope=FULL (TemplateReplaced needs a durable snapshot) | | 09 | — | FULL | — | — | unset | f | Restore EXTERNAL, uri=actor snapshot, Scope=FULL | | 10 | — | FULL | — | FULL | GOLDEN | f | Full snapshot ignores policy: Scope=FULL, golden="" | | 11 | — | FULL | match | — | unset | f | matching UID ⇒ no downgrade: Scope=FULL | | 12 | — | FULL | mismatch | — | unset | f | repointed ⇒ Restore EXTERNAL, Scope=DATA, golden="" | | 13 | — | FULL | mismatch | FULL | GOLDEN | f | TemplateReplaced beats the golden policy: Scope=DATA, golden="" | | 14 | — | DATA | — | — | unset | f | Restore EXTERNAL, Scope=DATA, golden="" | | 15 | — | DATA | — | FULL | GOLDEN | f | Restore EXTERNAL, uri=actor snapshot, Scope=DATA\_ON\_GOLDEN, golden=goldenURI | | 16 | — | DATA | — | DATA | GOLDEN | f | FailedPrecondition — Golden data resume, golden not Full ("regenerate the golden snapshot") | | 17 | — | DATA | mismatch | FULL | GOLDEN | f | TemplateReplaced beats DATA\_ON\_GOLDEN: Scope=DATA, golden="" | | 18 | — | UNSPEC | — | — | unset | f | Restore EXTERNAL, Scope=FULL (conversion maps UNSPECIFIED → Full) | | 19 | — | malformed URI (FULL) | — | — | unset | f | DataLoss — actor's own external snapshot URI fails to parse | | 20 | FULL | — | — | — | unset | f | Restore LOCAL, LocalConfig.SnapshotName, Scope=FULL, golden="" | | 21 | FULL | — | — | FULL | GOLDEN | f | Full pause ignores policy: Restore LOCAL, Scope=FULL, golden="" | | 22 | FULL | — | mismatch | — | unset | f | Restore LOCAL, Scope=FULL — repoint detection requires a durable snapshot, local-only actors never downgrade | | 23 | DATA | — | — | — | unset | f | Restore LOCAL, Scope=DATA, golden="" | | 24 | DATA | — | — | — | GOLDEN | f | FailedPrecondition — Golden data resume requires a golden snapshot, template has none | | 25 | DATA | — | — | FULL | GOLDEN | f | Restore LOCAL, Scope=DATA\_ON\_GOLDEN, golden=goldenURI | | 26 | DATA | — | — | DATA | GOLDEN | f | FailedPrecondition — golden not Full, local-snapshot path | | 27 | DATA | — | — | UNSPEC | GOLDEN | f | UNSPECIFIED golden scope accepted as Full: Restore LOCAL, Scope=DATA\_ON\_GOLDEN | | 28 | DATA | — | — | FULL, malformed URI | GOLDEN | f | DataLoss — golden URI fails `ParseSnapshotURI` | | 29 | DATA | FULL | — | FULL | GOLDEN | f | local wins over external: Restore LOCAL, Scope=DATA\_ON\_GOLDEN (dataOnly from OnPause, not the external scope) | | 30 | DATA | FULL | mismatch | FULL | GOLDEN | f | TemplateReplaced wins in the local branch too: Restore LOCAL, Scope=DATA, golden="" |