{
  "run": "replay window run, WF-TRANSPORT-001",
  "generated_at_utc": "2026-10-25T18:51:30.978399+00:00",
  "commits": {
    "pre_swap": "0b8ed75a3208d7bcab590023166981edbe87e0f1",
    "post_swap": "a49c60ace6744be400c91ccf6edfd9a8309cc67d",
    "baseline_commit": "0b8ed75a3208d7bcab590023166981edbe87e0f1",
    "head": "38ab06fceed85f468cf07fd07386a00f5bdd415c"
  },
  "source_versions": {
    "moroop_kth": "MoRoOp v1.0.0, MoRoOp_V_1_0_0.zip MD5 da5124004f1f9830d4d93c539019332c",
    "dedicat6g_wings": "Zenodo 10793054, OPERATIONAL.csv MD5 4ab212e88fe903281b34711e5a23b36e",
    "sim_c": "generators/c_generate.py seed 20261025, sha256 439a4a7601f3dc2a85a4d47f96115ab252feed20ec6d2fb057b3dd242ae8e30e"
  },
  "replay_config": {
    "workflow_id": "WF-TRANSPORT-001",
    "workflow_label": "Transport workflow (SIMULATED)",
    "replay_note": "Replay time is relative and simulated. Each source window starts at replay 0 s. It is not wall clock time and does not align real events from different labs.",
    "initial_sources": [
      "moroop_kth",
      "dedicat6g_wings"
    ],
    "sources": {
      "moroop_kth": {
        "file": "raw/extracted/A/data/2026_07_27_morning/2026_07_27_morning_dispatch_events.parquet",
        "window_start_utc": "2026-07-27T08:29:12.590Z",
        "window_end_utc_exclusive": "2026-07-27T08:32:12.590Z"
      },
      "dedicat6g_wings": {
        "file": "raw/downloads/DEDICAT6G_Robot_KPIs_SmartWarehousing_OPERATIONAL.csv",
        "window": "whole_file"
      }
    }
  },
  "baseline": {
    "file": "baselines/b-events.json",
    "source_id": "dedicat6g_wings",
    "events": 25,
    "created_at_utc": "2026-10-25T12:48:55.242869+00:00",
    "sha256": "ca77a4bccd49686f66e56d45ed18ede1f6e91e97947701b1775e2a2e17d1d1b6"
  },
  "history_preserved": {
    "preserved": 25,
    "baseline_events": 25,
    "percent": 100.0,
    "api": {
      "source_id": "dedicat6g_wings",
      "preserved": 25,
      "baseline_events": 25,
      "missing": [],
      "duplicated": [],
      "changed": [],
      "extra": [],
      "pass": true
    },
    "independent_export_query": {
      "source_id": "dedicat6g_wings",
      "preserved": 25,
      "baseline_events": 25,
      "missing": [],
      "duplicated": [],
      "changed": [],
      "extra": [],
      "pass": true
    },
    "pass": true,
    "negative_control": {
      "copy_equals_measured_post_swap_before_damage": true,
      "deleted_events": 25,
      "export_equals_api": true,
      "baseline_vs_export": {
        "source_id": "dedicat6g_wings",
        "preserved": 0,
        "baseline_events": 25,
        "missing": 25,
        "duplicated": 0,
        "changed": 0,
        "extra": 0,
        "pass": false
      },
      "baseline_vs_api": {
        "source_id": "dedicat6g_wings",
        "preserved": 0,
        "baseline_events": 25,
        "missing": 25,
        "duplicated": 0,
        "changed": 0,
        "extra": 0,
        "pass": false
      },
      "reader_exit_code": 1,
      "control_behaves_as_expected": true
    }
  },
  "application_changes": {
    "dirs": [
      "app",
      "api",
      "queries"
    ],
    "changed_files_pre_to_post": [],
    "count": 0,
    "uncommitted_or_untracked": [],
    "query_unchanged": true,
    "same_sql_returns_b_unchanged": true,
    "c_events_added": 24,
    "c_wo_fail": 3,
    "export_equals_api": true,
    "other_frozen_code_changed": []
  },
  "connection_effort": {
    "phases": [
      {
        "phase": "mapping",
        "start_utc": "2026-10-25T12:49:46+00:00",
        "stop_utc": "2026-10-25T12:49:54+00:00",
        "elapsed_min": "0.1",
        "active_min": "0.1",
        "counted_as": "connection_effort",
        "note": "map C contract fields to the Base1 event schema"
      },
      {
        "phase": "implementation",
        "start_utc": "2026-10-25T12:49:54+00:00",
        "stop_utc": "2026-10-25T12:50:14+00:00",
        "elapsed_min": "0.3",
        "active_min": "0.3",
        "counted_as": "connection_effort",
        "note": "adapters/c_synthetic.py"
      },
      {
        "phase": "validation",
        "start_utc": "2026-10-25T12:50:14+00:00",
        "stop_utc": "2026-10-25T12:50:34+00:00",
        "elapsed_min": "0.3",
        "active_min": "0.3",
        "counted_as": "connection_effort",
        "note": "real swap on the running app, history and export verification against the baseline"
      }
    ],
    "active_min": 0.7,
    "elapsed_min": 0.8,
    "generator_setup_separate": [
      {
        "phase": "generator",
        "start_utc": "2026-10-25T12:49:12+00:00",
        "stop_utc": "2026-10-25T12:49:46+00:00",
        "elapsed_min": "0.6",
        "active_min": "0.6",
        "counted_as": "generator_setup_separate",
        "note": "contract document, deterministic generator and expected-values fixture; Claude Code (coding assistant) working alone, active equals elapsed"
      }
    ],
    "coding_assistant": "Claude Code (Claude Opus 5.5) wrote and ran all of it, with no person at the keyboard",
    "source": "synthetic source C, SIMULATED",
    "caveat": "Timed from the first C step to the end of validation, as wall clock between logged steps. The adapter interface, the generic connect action and the replay design were built before pre-swap, so C only needed one small adapter file. C's format was designed by the same assistant. A real vendor source would add discovery, access and format questions not measured here.",
    "slide_rounding": "active minutes rounded up to a whole minute, minimum 1"
  },
  "context_only": {
    "A_dispatch_events_whole_archive": 19352,
    "A_events_in_window": 13,
    "B_rows_in_file": 1685,
    "B_events_in_file": 25
  },
  "attempt_2": {
    "why": "Design pass from docs/base1-demo-design-review-claude.md on app/ (and core/export.py run_reader) after attempt 1. The earlier zero change result does not cover these edits, so the swap was measured again on a fresh store with the same baseline (not regenerated).",
    "changes_since_previous_attempt": [
      "adapters/b_dedicat6g.py",
      "adapters/c_synthetic.py",
      "app/base1-logo.png",
      "app/index.html",
      "config/replay.json",
      "core/export.py"
    ],
    "commits": {
      "pre_swap": "39c8c058212a84391f6e5820bf03058316a70318",
      "post_swap": "8051c5100e3694650812bfa5449281c155fa7cfb"
    },
    "pre_swap_reference_equals_baseline": true,
    "history_preserved": {
      "baseline_vs_export": {
        "source_id": "dedicat6g_wings",
        "preserved": 25,
        "baseline_events": 25,
        "missing": [],
        "duplicated": [],
        "changed": [],
        "extra": [],
        "pass": true
      },
      "baseline_vs_api": {
        "source_id": "dedicat6g_wings",
        "preserved": 25,
        "baseline_events": 25,
        "missing": [],
        "duplicated": [],
        "changed": [],
        "extra": [],
        "pass": true
      }
    },
    "export_equals_api": true,
    "application_files_changed": [],
    "other_frozen_code_changed": [],
    "negative_control": {
      "copy_equals_measured_post_swap_before_damage": true,
      "deleted_events": 25,
      "export_equals_api": true,
      "baseline_vs_export": {
        "source_id": "dedicat6g_wings",
        "preserved": 0,
        "baseline_events": 25,
        "missing": 25,
        "duplicated": 0,
        "changed": 0,
        "extra": 0,
        "pass": false
      },
      "baseline_vs_api": {
        "source_id": "dedicat6g_wings",
        "preserved": 0,
        "baseline_events": 25,
        "missing": 25,
        "duplicated": 0,
        "changed": 0,
        "extra": 0,
        "pass": false
      },
      "reader_exit_code": 1,
      "control_behaves_as_expected": true
    },
    "swap_driven_through": "the app UI in a headless browser (Disconnect B, Connect C, Export, Run independent reader)",
    "connection_effort": "not re-measured: adapter C was written in attempt 1 and reused unchanged"
  },
  "attempt_3": {
    "why": "Design pass 2 on app/: preservation as headline, Replay details, exact time at the swap boundary, shorter export copy, navigable preview mode. The earlier zero change result does not cover these edits, so the swap was measured again on a fresh store with the same baseline (not regenerated).",
    "changes_since_previous_attempt": [
      "app/index.html"
    ],
    "commits": {
      "pre_swap": "031b4a36cf549e4a4caaffc20439a7c16160b7b3",
      "post_swap": "51d58e8bac061880cb16f60f8c56f778c4ac54be"
    },
    "pre_swap_reference_equals_baseline": true,
    "history_preserved": {
      "baseline_vs_export": {
        "source_id": "dedicat6g_wings",
        "preserved": 25,
        "baseline_events": 25,
        "missing": [],
        "duplicated": [],
        "changed": [],
        "extra": [],
        "pass": true
      },
      "baseline_vs_api": {
        "source_id": "dedicat6g_wings",
        "preserved": 25,
        "baseline_events": 25,
        "missing": [],
        "duplicated": [],
        "changed": [],
        "extra": [],
        "pass": true
      }
    },
    "export_equals_api": true,
    "application_files_changed": [],
    "other_frozen_code_changed": [],
    "negative_control": {
      "copy_equals_measured_post_swap_before_damage": true,
      "deleted_events": 25,
      "export_equals_api": true,
      "baseline_vs_export": {
        "source_id": "dedicat6g_wings",
        "preserved": 0,
        "baseline_events": 25,
        "missing": 25,
        "duplicated": 0,
        "changed": 0,
        "extra": 0,
        "pass": false
      },
      "baseline_vs_api": {
        "source_id": "dedicat6g_wings",
        "preserved": 0,
        "baseline_events": 25,
        "missing": 25,
        "duplicated": 0,
        "changed": 0,
        "extra": 0,
        "pass": false
      },
      "reader_exit_code": 1,
      "control_behaves_as_expected": true
    },
    "swap_driven_through": "the app UI in a headless browser (Disconnect B, Connect C, Export, Run independent reader)",
    "connection_effort": "not re-measured: adapter C was written in attempt 1 and reused unchanged"
  }
}
