{
  "bundle_revision": "R01",
  "classification": "implementation_and_isolated_proof",
  "direct_policy_changed": false,
  "expected_installer_sha256": "1073032bce08467bea60d3bd813eb874053e931b375822c6942900575ce90e80",
  "functional_stage": "normal_selector_canonical_restore",
  "heavy_full_refresh_executed": false,
  "live_direct_route_changed": false,
  "live_zero_healthy_simulation_allowed": false,
  "mutated_machines": ["vm100"],
  "new_sha256": {
    "vm100/etc/router-machine-git-source.conf": "ee2c3b5366d8eb4c4ebf9766c07f6926ecc927e9c38a3766d870fc7397ab2743",
    "vm100/etc/router-wgpay-selector.d/canonical.conf": "46d41783effb8d80ea1b09895f829b98a0946e0edbff1e29e7651eb3ef9b036a",
    "vm100/etc/router-wgpay-slot-topology.conf": "d75ccc901080960ee8a7dbd8d5d99ae7699fdf21df0130767c9139bef26fcee7",
    "vm100/usr/local/sbin/router-wgpay-slot-topology-apply.sh": "7edcd9e16696581a4aa67607ccdc978f286598bcacd8c539e8280bbf91a090ea"
  },
  "next_step": "CONTROLLED_LIVE_ZERO_HEALTHY_END_TO_END_WITH_TEMPORARY_ACCELERATED_INTERVALS",
  "old_sha256": {
    "vm100/etc/router-machine-git-source.conf": "1ab9b29bc9b55c359164350e0112e5deec893d279e8212cce516477b76f67635",
    "vm100/etc/router-wgpay-selector.d/canonical.conf": "ABSENT",
    "vm100/etc/router-wgpay-slot-topology.conf": "efa81225a11c4dc189269571dbc8d21c33eb0cedac18af878c62154f13ef4824",
    "vm100/usr/local/sbin/router-wgpay-slot-topology-apply.sh": "a598581e406e3c78e44f5c5fa3286410e0c208bcd7ef6e1bac1d3959315286c6"
  },
  "private_key_material_exported": false,
  "provider_acquisition_used": false,
  "runtime_impact": "VM100 NORMAL topology generations gain canonical selector restoration by immutable tunnel-IP mapping; production routing remains unchanged during installation",
  "snapshot_name": "r20qr-pre-selector-canon",
  "snapshot_name_preferred_max_length": 32,
  "source_of_truth": "machine_git",
  "step_id": "STEP_050M07R20QR_NORMAL_SELECTOR_CANONICAL_RESTORE",
  "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": "2d28dec53a7563dbce0709cccc55aa42bb626fd5fea34fd8d50032e3019c987c",
  "title": "Restore the canonical VM100 selector on final NORMAL topology",
  "vm100_baseline_commit": "83a8233181f3bd55faefd13b541edf5f80406c0e",
  "vm100_baseline_file_count": 28,
  "vm100_baseline_tree": "f9a7e80c41c48b145bf2631d76afdeee4cc5e62c",
  "vm100_changed_paths": [
    "etc/router-machine-git-source.conf",
    "etc/router-wgpay-selector.d/canonical.conf",
    "etc/router-wgpay-slot-topology.conf",
    "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-135140_vm100_git_source_83a8233181f3/",
  "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/"
}
