{
  "bundle_revision": "R03",
  "classification": "implementation_and_isolated_proof",
  "direct_policy_changed": false,
  "expected_installer_sha256": "f6d4df4bca7628b3e8af76e96af83fc7a53d7032d16cbcf158edb85391c0b882",
  "functional_stage": "vm100_selector_empty_move_hardening",
  "heavy_full_refresh_executed": false,
  "live_direct_route_changed": false,
  "live_zero_healthy_simulation_allowed": false,
  "mutated_machines": [
    "vm100"
  ],
  "new_sha256": {
    "vm100/usr/local/lib/router-wgpay-slot-topology-lib.sh": "43bab9cdf6fd504134d5c8fddee811aeebcc2187b8bf36114caec198b348f311",
    "vm100/usr/local/sbin/router-wgpay-slot-topology-apply.sh": "03bdf6186f3624d167846d0a5f85d4f9a58d1cfe50522d7dd527dd19e1e50e92"
  },
  "next_step": "R20QS_CONTROLLED_LIVE_ZERO_HEALTHY_END_TO_END_RETEST_WITH_CORE_BOUNDARY_FIX",
  "old_sha256": {
    "vm100/usr/local/lib/router-wgpay-slot-topology-lib.sh": "9d025e6cfcf9889671412cf66130c829e3ea6435b9a689a8d87029a36f83a6e9",
    "vm100/usr/local/sbin/router-wgpay-slot-topology-apply.sh": "7edcd9e16696581a4aa67607ccdc978f286598bcacd8c539e8280bbf91a090ea"
  },
  "private_key_material_exported": false,
  "provider_acquisition_used": false,
  "runtime_impact": "VM100 topology receiver source is hardened for valid empty move maps; isolated proof only; production selector, topology state, Direct state and routing remain unchanged during installation; bundle R03 removes all mandatory VM130 runtime dependence on a local busybox executable while retaining target BusyBox syntax and execution proof on VM100",
  "snapshot_name": "r20qt-r03-empty-move",
  "snapshot_name_preferred_max_length": 32,
  "source_of_truth": "machine_git",
  "step_id": "STEP_050M07R20QT_VM100_SELECTOR_EMPTY_MOVE_HARDENING",
  "target_apply_sha_transport": "EXPECTED_PACKAGE_SHA is positional argument 1 in scripts/apply-runtime.sh and is forwarded to VM100 apply",
  "target_package_sha256": "2f2a2e45560c10898d55801010ca38590f21bfe3d0d6934afcbb850ad0688b38",
  "title": "Harden VM100 selector candidate construction for valid empty move maps",
  "vm100_baseline_commit": "22fba62c800167f6391beb3dd727012b29e5651c",
  "vm100_baseline_file_count": 29,
  "vm100_baseline_tree": "decb190091126e3ff3aa49eb139c940c56f5354a",
  "vm100_changed_paths": [
    "usr/local/lib/router-wgpay-slot-topology-lib.sh",
    "usr/local/sbin/router-wgpay-slot-topology-apply.sh"
  ],
  "vm100_expected_file_count_after": 29,
  "vm100_public_url": "https://reports.secret-studio.ru/latest/20260729-201838_vm100_git_source_22fba62c8001/",
  "vm101_baseline_commit": "e656f9bfde6d727292f38cae43e41811a23d6714",
  "vm101_baseline_file_count": 55,
  "vm101_baseline_tree": "48a6c4365ccde9caaec7765fa796f09cbd74771e",
  "vm101_public_url": "https://reports.secret-studio.ru/latest/20260729-180106_vm101_git_source_e656f9bfde6d/"
}
