{
  "assessment": {
    "all_ok": true,
    "decision": "PASS_STEP_049G2_SIMULATE_EGRESS2_IFDOWN_AND_VERIFY_REPAIR",
    "success_checks": {
      "all_interfaces_exist": true,
      "all_slots_strict_ok_post": true,
      "all_tables_have_routes": true,
      "auto_rollback_not_needed": true,
      "baseline_vpn2_was_ok": true,
      "break_method_ifdown": true,
      "broken_vpn2_strict_failed": true,
      "cycle1_saw_failure_below_threshold": true,
      "cycle2_triggered_commit": true,
      "dispatcher_after_ifdown_ready": true,
      "iface_missing_after_ifdown": true,
      "post_vpn2_strict_ok": true,
      "slot_broken_intentionally": true,
      "vm100_controller_running": true,
      "vm100_peer_count_five": true,
      "vm101_rc_zero": true,
      "vm121_db_pending_zero": true,
      "watcher_restarted": true
    },
    "warnings": [
      "This step intentionally ifdowns egress2/vpn2 to simulate failure.",
      "Rollback script is generated and auto-rollback runs if repair fails.",
      "If PASS, health-triggered repair path is proven for one slot."
    ]
  },
  "dispatcher_after_ifdown": {
    "adapter_dryrun_decision": "dry_run_ok",
    "apply_performed": false,
    "candidate_endpoint": "109.248.198.4:37129",
    "decision": "dry_run_ok",
    "iface": "vpn2",
    "mode": "--dry-run",
    "reason": "dispatcher_ready",
    "reason_input": "after_ifdown_break",
    "required_dispatch_confirm": "DISPATCH_egress2_109.248.198.4:37129",
    "safety": {
      "commit_requires_dispatch_confirm": true,
      "dry_run_no_ifup_ifdown": true,
      "dry_run_no_uci_set": true
    },
    "schema": "router-egress-recovery-dispatcher-v1",
    "slot": "egress2"
  },
  "dispatcher_baseline": {
    "adapter_dryrun_decision": "dry_run_ok",
    "apply_performed": false,
    "candidate_endpoint": "109.248.198.4:37129",
    "decision": "dry_run_ok",
    "iface": "vpn2",
    "mode": "--dry-run",
    "reason": "dispatcher_ready",
    "reason_input": "pre_ifdown_baseline",
    "required_dispatch_confirm": "DISPATCH_egress2_109.248.198.4:37129",
    "safety": {
      "commit_requires_dispatch_confirm": true,
      "dry_run_no_ifup_ifdown": true,
      "dry_run_no_uci_set": true
    },
    "schema": "router-egress-recovery-dispatcher-v1",
    "slot": "egress2"
  },
  "mode": "INTENTIONAL_IFDOWN_FAILURE_SIMULATION_FOR_EGRESS2_AND_HEALTH_REPAIR_COMMIT",
  "publish": {
    "facts_json": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260711-091216_step049g2_simulate_egress2_ifdown_and_verify_repair/facts.json",
    "report_txt": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260711-091216_step049g2_simulate_egress2_ifdown_and_verify_repair/report.txt",
    "trycf_report": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260711-091216_step049g2_simulate_egress2_ifdown_and_verify_repair/"
  },
  "schema": "router-step-facts-v1",
  "step": "STEP_049G2_SIMULATE_EGRESS2_IFDOWN_AND_VERIFY_REPAIR",
  "summary": {
    "auto_rollback_performed": "false",
    "cycle1_slot": {
      "action": "none",
      "decision": "fail_observed_below_threshold",
      "fail_count": 1,
      "iface": "vpn2",
      "required_confirm": "",
      "slot": "egress2",
      "status_ok": false
    },
    "cycle2_slot": {
      "action": "commit_dispatch",
      "decision": "commit_ok",
      "fail_count": 2,
      "iface": "vpn2",
      "required_confirm": "DISPATCH_egress2_109.248.198.4:37129",
      "slot": "egress2",
      "status_ok": false
    },
    "dispatcher_after_ifdown_candidate": "109.248.198.4:37129",
    "dispatcher_after_ifdown_decision": "dry_run_ok",
    "endpoint_after_ifdown": "192.121.163.235:42530",
    "iface": "vpn2",
    "next_step": "observe_watcher_and_checkpoint_after_repair_proven",
    "original_endpoint": "192.121.163.235:42530",
    "post_vpn2_strict_ok": "true",
    "prod_strict_ok": {
      "vpn1": "true",
      "vpn2": "true",
      "vpn3": "true",
      "vpn4": "true",
      "vpn5": "true"
    },
    "repaired_endpoint": "109.248.198.4:37129",
    "repaired_endpoint_equals_original": "false",
    "slot": "egress2",
    "vm100_peer_count": "5",
    "vm121_db_summary": {
      "enabled_peers": 5,
      "lease_rows": 5,
      "pending_jobs": 0
    },
    "watcher_running_post": "true"
  },
  "watcher_cycle1": {
    "any_action": false,
    "mode": "--commit",
    "run_mode": "once",
    "schema": "router-egress-health-repair-watch-v2",
    "slots": [
      {
        "action": "none",
        "decision": "fail_observed_below_threshold",
        "fail_count": 1,
        "iface": "vpn2",
        "required_confirm": "",
        "slot": "egress2",
        "status_ok": false
      }
    ]
  },
  "watcher_cycle2": {
    "any_action": true,
    "mode": "--commit",
    "run_mode": "once",
    "schema": "router-egress-health-repair-watch-v2",
    "slots": [
      {
        "action": "commit_dispatch",
        "decision": "commit_ok",
        "fail_count": 2,
        "iface": "vpn2",
        "required_confirm": "DISPATCH_egress2_109.248.198.4:37129",
        "slot": "egress2",
        "status_ok": false
      }
    ]
  }
}
