{
  "fixture": "fictional CAD order amounts, three isolated in-memory scenarios",
  "runtime": {
    "python": "3.12.6",
    "sqlite": "3.45.3"
  },
  "network_requests": 0,
  "disk_databases": 0,
  "scenarios": [
    {
      "case": "additive_column_with_old_reader",
      "before_total_cents": 3500,
      "old_reader_after_new_write_cents": 4200,
      "observed": "The old explicit-column query still reads all three records.",
      "scope": "This query and fixture only; not proof all additive changes are compatible."
    },
    {
      "case": "renamed_column_and_old_snapshot",
      "old_reader_error": "no such column: amount_cents",
      "schema_unchanged_by_running_old_query": true,
      "current_total_cents": 4200,
      "snapshot_restored_total_cents": 3500,
      "snapshot_restored_ids": [
        1,
        2
      ],
      "post_snapshot_record_missing": 3,
      "observed": "Running old code did not undo the schema rename. Restoring only the older snapshot omitted the later write.",
      "scope": "No log replay, replication, reconciliation, real deployment or disaster recovery was tested."
    },
    {
      "case": "backfill_then_old_writer_update",
      "old_reader_cents": 1200,
      "naive_new_reader_cents": 1000,
      "observed": "Backfilling a second column and preferring it on reads left a stale value after an old writer updated only the first column.",
      "scope": "Illustrates a mixed-version write hazard; does not prescribe a general synchronization mechanism."
    }
  ],
  "limitations": [
    "No concurrent transactions, locks, performance, real traffic or client data.",
    "SQLite behavior is not evidence for PostgreSQL/MySQL migration or recovery semantics.",
    "No Git command, Kubernetes cluster, rollout, feature flag or automated recovery was executed.",
    "Examples demonstrate specific failures, not universal production readiness or recovery-time targets."
  ],
  "executed_at": "2026-10-23T02:25:04.069633+00:00",
  "source": "rollback-schema-lab.py",
  "source_sha256": "84f5dfea0637f38c16ccaca0a513563197bfa1d73f66a40366df7e0e38a83e4c"
}
