Runtime State Is Persistent by Default, Not by Application Discipline

The runtime platform carries persistence as a runtime primitive. Objects in the runtime have lifetimes longer than any single process; snapshot the runtime, restore it tomorrow, and agents continue from where they were, without marshaling, save-this calls, or a separate database to keep in sync. The state graph itself is the database; application code does not opt into persistence -- the platform provides it as the default condition of every object.

Why it is held

Persistence built as an application pattern fragments. Each team picks a serialization format, an ORM, a save-on-mutation policy, a recovery-on-restart routine; each implementation has bugs the team rebuilds when discovered, and the bugs differ across teams. The application code that calls save() at the right moments is not the application's actual logic -- it is bookkeeping the platform could provide. Treating persistence as a primitive removes the bookkeeping layer entirely: every object survives restart by default, and applications focus on the logic that belongs to them.

The platform-as-persistence stance composes with the atomic primitive ([[Agent Operations Commit Wholly or Roll Back Wholly]]). When the runtime rolls back an atomic call tree, the rollback restores the in-memory state graph -- which is also the persistence layer. The atomic primitive's "revert to pre-operation snapshot" presupposes that the state to revert to is durably present in the same runtime; persistence as a runtime primitive is what makes the rollback semantics meaningful across restart boundaries. A weaker persistence layer -- where state is materialized into the runtime from a separate database at startup -- would force the atomic rollback to coordinate across the database boundary, recreating exactly the patterns the platform aims to replace.

The platform-as-persistence stance also composes with capability separation ([[Capability Boundaries Are Runtime-Enforced, Not Policy-Checked]]). Capability tiers persist with their identities across restart: an agent's privileged-identity association does not have to be re-established from external sources after restart. Without runtime-level persistence, capability separation would require a separate identity store to keep in sync; with runtime-level persistence, the capability tier is part of the same state graph the runtime is already maintaining.

The reference runtime provides this primitive directly: a snapshot call writes the in-memory state to a dump file; the restore path reads it back at boot; reboot-callback hooks let objects participate in graceful shutdown and warm restoration; resource-quota state persists with object state. The foundation layer's mediation makes the snapshot file location and dump cadence configurable through declarative configuration. The Cloud Server Reference's eight-primitives table marks persistent state as "Provided; no gaps" -- the cleanest implementation grounding among the eight primitives.

The Conviction is held because the no-bookkeeping experience for application authors is what platform adoption purchases. When persistent-by-default is the runtime's promise, agent code becomes shorter, more direct, and easier to reason about. Trading the primitive for a serialization layer would surrender exactly the property that justifies the platform's other costs.

What it asks

Honoring this Conviction asks the project to defend the runtime as the persistence layer, not as a cache in front of one.

Drift recognition

The Conviction has weakened when the project's outputs treat persistence as something application code arranges, rather than as the runtime's standing condition.

Sources

Relations