← Versioned state

State.MigrationFailure

luastra/state

State.MigrationFailure represents the unsuccessful branch of a bounded operation. Its stable code and structured context support control flow and safe diagnostics without parsing an exception message.

Before you use it

Add luastra/state to this module's dependencies in luastra.json, then import it with require("luastra/state"). No capability is required for encoding, decoding, or migration. Persistence additionally needs luastra/host plus storage.get and storage.set.

How it fits

The type describes string fields, migration functions, or tagged decode/migration results.

When to use it

Use State.MigrationFailure on the unsuccessful branch of the related result. Read its stable fields for control flow or diagnostics; do not parse human-readable assertion or error text.

Fields or definition

ParameterType / valuesDescription
successfalseDiscriminator that must be checked before reading branch-specific fields.
versionnilExplicit contract version used to validate or migrate the serialized value.
fieldsnilValidated bounded field map carried by the decoded or migrated value.
encodednilDeterministic snapshot string produced after a successful migration.
errorMigrationErrorBounded failure information, or nil on the successful branch.

Error codes

This is the complete closed vocabulary emitted by the named operation in this Source SDK contract.

CodeWhen it occurs
emptyThe encoded source state is empty or not a string.
too_largeThe encoded source state exceeds 4096 bytes.
invalid_target_versiontargetVersion is not an integer from 1 through 999.
invalid_migrationsThe migration collection is not a table.
malformedThe source version prefix is missing or invalid.
newer_versionThe source version is newer than the requested target.
too_many_migrationsThe migration would require more than 32 steps.
missing_migrationNo migration function exists for the current version.
migration_failedA migration function raised an error.
invalid_migrationA migration returned, encoded, or verified an invalid replacement.

SDK type flow

Produced by

State.migrate

What happens next

A checked snapshot or result annotation.

Failures and fixes

Malformed data, wrong versions, missing migration steps, excessive size, or non-string fields remain explicit failure branches. Do not silently replace corrupt security- or domain-sensitive values with defaults.

Availability

Public-source alpha API in 0.5.0-alpha; persistence support is host-dependent.

Exact declaration

export type MigrationFailure = { success: false, version: nil, fields: nil, encoded: nil, error: MigrationError }

Continue learning

Prerequisites

State.Migration

Complete inventory

View all pages in Versioned state
← Previous: State.MigrationSuccessNext: State.MigrationResult →