Skip to content
Anasemble

Recovery after code loss

Lost the code? Rebuild its behaviour.

When a component’s source code, binaries, container images, and replicas are gone, Anasemble can build a replacement for supported service types. It uses signed contracts and request/response records saved separately before the failure.

Prepare first: you must save behaviour records and state snapshots in separate failure domains. The current replacement handles a bounded set of states and operations; it does not generate a general-purpose HTTP server.

How it works

Rebuild, check, then restore.

Anasemble tries replacements within limits you set, checks their behaviour, and restores saved state. If records are missing, checks disagree, or a step times out, recovery stops. You approve activation; Anasemble does not switch it on automatically.

  1. 01

    Collect

    Verify the signed contracts, request/response records, and state snapshots saved outside the failed system.

  2. 02

    Reconstruct

    Try programs built from an allowed set of operations, within time, memory, and attempt limits.

  3. 03

    Check

    Run a separate checker against the contracts and tests reserved for verification. Stop if it cannot establish a single valid replacement.

  4. 04

    Restore

    Restore saved state and run the replacement in an isolated environment before activation.

  5. 05

    Approve

    Sign approval to activate the replacement. Use the recorded recovery details to accept the result or roll it back.

The recovery drill

Delete the original. Test the replacement.

The demo saves behaviour records and PostgreSQL, object-storage, and Redis snapshots. It then deletes the original component and source state, rebuilds the component, restores the data, and exercises activation and rollback.

The integrated demo is experimental: its replacement is a finite-state program, and its local Kubernetes setup does not prove network isolation. Use disposable infrastructure.

Read the drill and its limits ↗

Tested environments

Check your environment first.

The release candidate supports the exact combinations tested in recovery drills. Check the compatibility guide for versions, configuration requirements, and known limits.

Read the compatibility guide ↗

Local recovery

macOS arm64, Docker 29, PostgreSQL 18, S3-compatible storage, and Redis Streams 8.8.

Native Linux

Amazon Linux 2023 on arm64 and x86_64, using the documented configurations and Rust 1.97.0 builds.

AWS managed recovery

RDS PostgreSQL 18.3, S3, ElastiCache Redis 7.1, and EKS 1.36 in eu-west-1.

Everything else

Other combinations are experimental or rejected. They need their own recovery drill before they can be supported.

Limits

The records must describe what to rebuild.

Anasemble rebuilds components that fit its supported operations and data types. Hidden side effects and undeclared state are outside that scope. It still needs saved behaviour records and state snapshots; keep your backups and replicas.

  • Can work without the original code or deployable copies
  • Requires records stored in separate failure domains
  • Stops if it cannot verify one valid replacement
  • Requires your approval before activation

Try it

Run a recovery before you need one.