What restore does
It reconciles the managed world toward a target Version, on the same map. For each object it computes one of five operations:
Anything outside the Version’s coverage is left alone. If an adapter was not authoritative
when that Version was captured, restoring it does not delete that adapter’s objects: absent
means unknown, never none.
Order, and why removals are last
remove still has a cheap inverse if a later one fails. A destroyed
object does not. Removals therefore run last, when everything else has already succeeded.
The plan
Blueprints shows you the whole plan before the first change: every operation, per object, plus everything it cannot do and why. That second list is a closed vocabulary, so a blocked plan can never grow a “probably fine” reason:
Whole domains are blocked separately, above the per-object list, when an adapter that was
authoritative in that Version cannot be used here. Since the reason matters, it is
specific: the adapter is not installed, or its dependency is missing (DarkRP is not
running), or the Version recorded a data format this build of the adapter cannot read. An
operator told “the adapter is missing” when the truth is “DarkRP is not running” goes
looking in the wrong place.
The plan also names, with zero operations against them, the managed objects it is
deliberately not touching because no adapter in this Version was authoritative over
them.
The plan is fingerprinted. If the world moves under you, or an adapter is updated between
the plan you read and your confirmation, the plan is stale and Blueprints re-plans rather
than applying something you did not see.
The recovery Version
Before the first destructive change, Blueprints captures the current world as a recovery
Version, writes it, and reads it back. If that read-back fails, the restore does not
start.
If it fails part way
The operation moves through a small set of durable states:- rolled back appears only when the return actually completed and verified;
- if an artifact remains, the report says so and names it;
- rollback failed transitions back into work, because a person must be able to attack it again after fixing whatever refused.
Restrictions worth knowing
Same map only
Same map only
A restore reconciles one world. Applying another map’s state to it has no defensible
meaning, so it is refused outright rather than offered behind a flag. Cross-map
placement is Migration.
Imported Versions cannot be restored
Imported Versions cannot be restored
A Version imported from another Vetra installation can be inspected, compared and used
as a migration source, and it is what a deployment applies. It cannot be restored here,
because the object identities inside it belong to that server and the same id means
something different on this one.To apply an imported Version, use Deploy.
Session-scoped objects across a restart
Session-scoped objects across a restart
Props and NPCs carry session identity: correct, because nothing durable holds an id for
a runtime-spawned entity. After a restart, objects captured in the previous session are
reported
session_churn rather than matched by luck.Domains backed by a database, such as DarkRP job spawns and saved PermaProps, are
persistent and survive a restart cleanly.