{
  "schema": "mvc4p/direction-fix-public/v1",
  "status": "PASS_SCOPED_EMULATOR_PREPROCESSING_FIX",
  "full_acceptance": false,
  "rom_changes_for_this_fix": 0,
  "observer_gameplay_memory_writes": 0,
  "binary_sha256": "31869159d1a3fe1dbde7a0aeec6fd580b7e7df71a636672a298cc549f3922fb4",
  "source": "prepare_fbneo_profile.py: selected native MVC/MSH driver inputs use the same stateless simultaneous-opposite neutralization for all four owners.",
  "cause": "Previous MVC profile interpolated rapid direction reversals for P3/P4 only; previous MSH profile interpolated all four. A legal reversal could become neutral before the game read it.",
  "port_controls": {
    "directions-before": {
      "status": "FAIL",
      "matched": 59,
      "required": 77,
      "binding": {
        "game": "mvsc",
        "profile": "cps2-native4-six-freeplay-v1",
        "rom_sha256": "9308e6d77ed9eaba7d1dc546c782ba7f5b2b7d1c7301fae7cc657229c0e12911",
        "binary_sha256": "a6d71060f90a01ee5bb84fd6d875a93dd6d73827b5a365ba157901075f68157c"
      },
      "receipt": "directions-before/direction-preflight.json",
      "sha256": "7cb11d9c08ac11ada7ea00a6899608ab9666b5670a79e431b093341fcb85428b"
    },
    "directions-after": {
      "status": "PASS",
      "matched": 77,
      "required": 77,
      "binding": {
        "game": "mvsc",
        "profile": "cps2-native4-six-freeplay-v1",
        "rom_sha256": "9308e6d77ed9eaba7d1dc546c782ba7f5b2b7d1c7301fae7cc657229c0e12911",
        "binary_sha256": "31869159d1a3fe1dbde7a0aeec6fd580b7e7df71a636672a298cc549f3922fb4"
      },
      "receipt": "directions-after/direction-preflight.json",
      "sha256": "96c3ca08a0516172512b31f61f2b751c4989d7cf35063d8d2219dfbf9d7862f7"
    },
    "directions-msh-before": {
      "status": "FAIL",
      "matched": 43,
      "required": 77,
      "binding": {
        "game": "mshvsfu",
        "profile": "cps2-native4-six-freeplay-v1",
        "rom_sha256": "ff48460b5414fd05957d1ccae9731ddbace687f7bbc8c3a60406cc34af89d862",
        "binary_sha256": "bcd193412a4bcba07f546df4890058d44cc9c93c43d25b5b8e1be243dad11398"
      },
      "receipt": "directions-msh-before/direction-preflight.json",
      "sha256": "57447aa2847f80ce03876fd8d3a6fe7e31f87285947b17c1a3ff26bfe06d8a86"
    },
    "directions-msh-after": {
      "status": "PASS",
      "matched": 77,
      "required": 77,
      "binding": {
        "game": "mshvsfu",
        "profile": "cps2-native4-six-freeplay-v1",
        "rom_sha256": "ff48460b5414fd05957d1ccae9731ddbace687f7bbc8c3a60406cc34af89d862",
        "binary_sha256": "31869159d1a3fe1dbde7a0aeec6fd580b7e7df71a636672a298cc549f3922fb4"
      },
      "receipt": "directions-msh-after/direction-preflight.json",
      "sha256": "22c3cd14d71c166f49340bd08983e5500a3287a72db7da0b8d9acd68b0c09f0e"
    }
  },
  "separate_switch_and_exec_preflight": "Fresh 43/43 switch cases plus positive/negative execution hook controls pass on each exact game/ROM/binary binding.",
  "normal_both_duo_stress": {
    "old_profile_requested_owner_words": 156,
    "old_profile_port_matches": 118,
    "corrected_profile_port_matches": 156,
    "complete_physical_sampler_calls": 2461,
    "fighter_reader_and_history_checks": 1337,
    "reader_history_errors": 0,
    "outcomes": {
      "READ_AND_RETURNED_THIS_CALLBACK": 154,
      "NO_MATCHING_PHYSICAL_ACTOR_READ": 1,
      "READ_THIS_CALLBACK_RETURNED_NEXT": 1
    },
    "boundary_receipt": "native-stress-boundary/boundary-evidence.json",
    "boundary_receipt_sha256": "a1e74b8e80ef0589d2de97132ff6600c935a88c9fb4a3850629cff601afd72db",
    "read_only_extra_instrumentation_preserved_all_three_original_streams": true
  },
  "remaining_gates": [
    "One P2 one-callback pulse has no physical actor read in this workload. Universal brief-pulse retention is not accepted.",
    "No game-side FIFO/latch added; a semantic timing change requires a matched stock comparison and justified RAM allocation.",
    "No claim that these direction controls fix the reported Strider/Wolverine combo or Hyper matcher cases.",
    "Local diagnostic FBNeo only; Fightcade rollback and physical four-controller/cabinet acceptance remain open."
  ],
  "validation": {
    "profile_and_existing_preflight_tests": 10,
    "shared_direction_tests": 4,
    "MCP_selftest": "PASS",
    "full_shared_suite": {
      "tests": 419,
      "failures": 3,
      "skipped": 8,
      "failures_scope": "Existing unrelated Strider provenance/support pins and missing fact files."
    }
  },
  "source_pins": {
    "prepare_fbneo_profile.py": "33e6802e6e06f6ae6c819bdd8d14591121c0abc7e7b25e2a700e3a70d8bd90dc",
    "direction_preflight_observer.lua": "4e10791dc57047d1813a5fe8f57e0482bed859ab5ad614188c5af3844b15437e",
    "run_direction_preflight.py": "df4be98018282ec700bb7fabdc2680c45b8b06af516fbe780b5c196b9a98866d"
  }
}
