{
  "schema": "mvc1-cross-fever-v3-preview-qualification/v1",
  "version": "v3-preview",
  "date": "2026-10-15",
  "status": "EXPERIMENTAL_PREVIEW_WITH_KNOWN_REPLAY_LIMITATION",
  "romSha256": "4e85efdcd953f02a62870d7f70a84bf0a02b1d296244183b3845e55840b8ad02",
  "archiveHashNote": "This pins the canonical developer ROM archive. Installer ZIP metadata/order may differ; all 21 output member contents must match the package RELEASE.json gameMembers contract.",
  "coreName": "FBNeo (MVC1 Cross Fever V3)",
  "coreVersion": "v1.0.0.03 261015 GITv3preview",
  "cores": {
    "macos-arm64": {
      "filename": "fbneo_mvc1cf_v3_libretro.dylib",
      "sha256": "3a97623463b228da741482c933f296d8ba9cdf8dd55baf2d3f2bef9a416f8f2f",
      "bytes": 8615056,
      "sourceProfileSha256": "ecc39be28b0eabfbd8c31f2a42511c43512f6759e06fed8eebc0d61a8ea2ed31"
    },
    "windows-x64": {
      "filename": "fbneo_mvc1cf_v3_libretro.dll",
      "sha256": "e47b6b9adfd6cd521ae04476a7863a08a0be95d715b6e399a353aa5e94405a8b",
      "bytes": 10140672,
      "sourceProfileSha256": "ecc39be28b0eabfbd8c31f2a42511c43512f6759e06fed8eebc0d61a8ea2ed31"
    },
    "linux-x64": {
      "filename": "fbneo_mvc1cf_v3_libretro.so",
      "sha256": "ccbc6d528202132af282b1bd4920403c63296d75327fb1780f81fd59c1f838fe",
      "bytes": 10646040,
      "sourceProfileSha256": "ecc39be28b0eabfbd8c31f2a42511c43512f6759e06fed8eebc0d61a8ea2ed31"
    }
  },
  "contract": {
    "teams": [
      [
        1,
        2
      ],
      [
        3,
        4
      ]
    ],
    "logical_to_actor_slots": [
      0,
      2,
      1,
      3
    ],
    "helper_owners": [
      2,
      4
    ],
    "punches": [
      "Y",
      "X",
      "L"
    ],
    "kicks": [
      "B",
      "A",
      "R"
    ],
    "macros": {
      "PPP": "L2",
      "KKK": "R2"
    },
    "devices": {
      "Classic": 5,
      "Modern": 517,
      "6-button panel": 261
    }
  },
  "fullAcceptance": false,
  "physicalControllers": false,
  "fourMachineInternet": false,
  "cabinetAcceptance": false,
  "nativeWindowsAcceptance": false,
  "inputMethod": "Simulated ordinary libretro controller callbacks; no gameplay memory writes. Lifecycle save/load uses a naturally reached state.",
  "inputSuites": {
    "compiled_input_transport": {
      "status": "PASS",
      "repetitions": 3,
      "device_types": 3,
      "attack_cases_per_run": 352,
      "pulse_macro_cases_per_run": 95,
      "observations_passed": 4023,
      "scope": "compiled ports, not gameplay command acceptance"
    },
    "character_and_helper_commits": {
      "status": "PASS",
      "repetitions": 1,
      "character_confirms": 24,
      "direct_helper_codes_per_team": 22,
      "helper_cases": 44,
      "scope": "fresh ordinary boots; native helper ID plus 0-to-FF completion flag"
    },
    "ownership_negative_controls": {
      "status": "PASS",
      "repetitions": 1,
      "helper_nonowner_cases": 12,
      "held_primary_cannot_confirm_partner_cases": 4
    },
    "normal_diagnostic_equivalence": {
      "status": "PASS",
      "repetitions": 1,
      "frames_compared": 12459,
      "scope": "every-frame 64 KiB work-RAM hashes and supplied inputs; not video/audio or entire serialized state"
    },
    "strict_content_contract": {
      "status": "PASS",
      "wrong_content_cases": 4,
      "stock_positive_controls": 1,
      "scope": "2400 callbacks per run; true libretro load return does not establish successful game boot"
    }
  },
  "inputReportSource": {
    "path": "harness/V3_SIMULATED_INPUT_RESULTS.json",
    "sha256": "0bcccb51b72ec7414f7d2d7ab4a242034f2cd0549c0af635c7e62ae72d7055a9"
  },
  "lifecycle": {
    "status": "PASS_SCOPED",
    "repetitions": 3,
    "runs": [
      {
        "path": "harness/candidate03-lifecycle-05/receipt.json",
        "sha256": "6c19f0478163686e32056fdb644f76cdbcb6cf2ab06afdcd7cd099f99ddff331",
        "frames": 10269,
        "checksPassed": 12,
        "traceSha256": "debae97ddaef1eed8339a4e76b00153de1f6a51384372d556e48bee6d6fd7c83",
        "runnerSha256": "15b3993fd24e69cb0cc46a55c6c855631e98e81f9be765366d78fc980d8f7c5f"
      },
      {
        "path": "harness/candidate03-lifecycle-06/receipt.json",
        "sha256": "6c19f0478163686e32056fdb644f76cdbcb6cf2ab06afdcd7cd099f99ddff331",
        "frames": 10269,
        "checksPassed": 12,
        "traceSha256": "debae97ddaef1eed8339a4e76b00153de1f6a51384372d556e48bee6d6fd7c83",
        "runnerSha256": "15b3993fd24e69cb0cc46a55c6c855631e98e81f9be765366d78fc980d8f7c5f"
      },
      {
        "path": "harness/candidate03-lifecycle-07/receipt.json",
        "sha256": "6c19f0478163686e32056fdb644f76cdbcb6cf2ab06afdcd7cd099f99ddff331",
        "frames": 10269,
        "checksPassed": 12,
        "traceSha256": "debae97ddaef1eed8339a4e76b00153de1f6a51384372d556e48bee6d6fd7c83",
        "runnerSha256": "15b3993fd24e69cb0cc46a55c6c855631e98e81f9be765366d78fc980d8f7c5f"
      }
    ],
    "checks": [
      "ordinary-selection-to-combat",
      "both-team-tag",
      "ordinary-meter-build",
      "simultaneous-duo",
      "duo-save-load-replay",
      "four-owner-duo-inputs",
      "duo-expiry",
      "post-expiry-tag",
      "ordinary-team-ko",
      "rematch-rejoin-selection",
      "rematch-to-combat",
      "rematch-tag-ownership"
    ],
    "all24AttacksHeldDuringSimultaneousDuo": true,
    "scope": "Ordinary selection, both-team tags, naturally earned meter, simultaneous Duo, independent owners, expiry, two partner KOs, rejoining, actual rematch and correct rematch tag owners on the retained tested teams.",
    "saveLoadScope": "100 per-frame work-RAM hashes match after restoring a naturally reached Duo state in each run. This is not equality of video, audio or the complete serialized state."
  },
  "frontendBoots": [
    {
      "path": "retroarch-v22-clean-02/receipt.json",
      "sha256": "77346be8d4e20b5dcb91bffc87de8c48ede13d95f111c18bcc00f9d450429e07",
      "status": "PASS_CLEAN_FRONTEND_BOOT",
      "frontend": "RetroArch 1.10.3 native arm64",
      "os": "macOS 26.5.2",
      "frames": 1800,
      "exit_code": 0,
      "coreSha256": "a86f4da9235cff41dbbb4ff4663552fce8c48bfe8737787393dde8e6d74be24b",
      "romSha256": "5e9fd14a95f0c4c1f7bf1b4b144f06cee020efaceff1793340a38f2defe82876",
      "screenshotSha256": "a9a807fa86330183514d24e54d35dcf894a324d83b4e108e82b7d044b81e99cf",
      "scope": "Clean configuration, content load and rendered attract gameplay; no physical controllers or internet test. A previous run paused while inactive; this run used pause_nonactive=false. RetroArch 1.10.3 also saved per-core defaults in its user core-options folder; subsequent runs isolate rgui_config_directory."
    },
    {
      "path": "retroarch-v3-clean-01/receipt.json",
      "sha256": "d86be8f54a2708c31a8cad392e1e801c4900a6e6f18cea86b70fb7135e9faf28",
      "schema": "mvc1cf-v3-frontend-boot/1",
      "status": "PASS_CLEAN_FRONTEND_BOOT",
      "frontend": "RetroArch 1.10.3 native arm64",
      "os": "macOS 26.5.2",
      "frames": 1800,
      "exit_code": 0,
      "coreSha256": "3a97623463b228da741482c933f296d8ba9cdf8dd55baf2d3f2bef9a416f8f2f",
      "romSha256": "4e85efdcd953f02a62870d7f70a84bf0a02b1d296244183b3845e55840b8ad02",
      "screenshotSha256": "8bfd4fb36db9f3cebc34aa59c4693c7b0afc00392eeba272b718f650f7626f2d",
      "logSha256": "93f62a82b9098bdf0b94350618ea2d31f3828dcbec6b02e0e593df1411ee9e6c",
      "scope": "Clean configuration, strict V3 content load and rendered attract gameplay. Metal renderer; pause while inactive disabled in isolated test config. No physical controllers or internet test."
    }
  ],
  "platformSmoke": {
    "path": "platform-smoke-02/receipt-with-baseline.json",
    "sha256": "67d022904d6c79076bf007ff4b804576d77c7daa7aa0595fc6f3da06493bd366",
    "status": "SCOPED_SMOKE_PASS_WITH_REPLAY_LIMITATION",
    "scope": "Ordinary scripted libretro inputs in Linux x64 container and Windows x64 DLL under Wine; no physical controllers, internet or native Windows execution.",
    "frames": 4200,
    "platforms": {
      "linux": {
        "coreSha256": "ccbc6d528202132af282b1bd4920403c63296d75327fb1780f81fd59c1f838fe",
        "ordinarySelectionCombatAndTag": true,
        "workRamReplayMismatches": 0,
        "fullReplayTestExitCode": 3,
        "coreLoadAndWorkRam": true,
        "logSha256": "7dc11a61d58d6c046433c9b4ea52e957e4de10c5ce8fd42c5457b9805a113ff0",
        "screenshots": {
          "select.png": "6738e9dec85dacc33c6fbfaf44f2faec0b3613b6d00513215c978d5d8e08f09d",
          "fight.png": "0d166f292e80ee550070b5a1c6bc3ad5ff46925d2cbe7994228892cf055c3a8e",
          "tag.png": "1b66cd3209a7fd0cab0406255eee09740af65c0ba75108c36d6d5ca3dd9f1de8"
        },
        "runtime": "Linux x64 Docker container"
      },
      "wine": {
        "coreSha256": "e47b6b9adfd6cd521ae04476a7863a08a0be95d715b6e399a353aa5e94405a8b",
        "ordinarySelectionCombatAndTag": true,
        "workRamReplayMismatches": 0,
        "fullReplayTestExitCode": 3,
        "coreLoadAndWorkRam": true,
        "logSha256": "c7f4fc893758aee24afcc03563ff0d0d6154b1302cc90d8445ecc70973d4db84",
        "screenshots": {
          "select.png": "6738e9dec85dacc33c6fbfaf44f2faec0b3613b6d00513215c978d5d8e08f09d",
          "fight.png": "0d166f292e80ee550070b5a1c6bc3ad5ff46925d2cbe7994228892cf055c3a8e",
          "tag.png": "1b66cd3209a7fd0cab0406255eee09740af65c0ba75108c36d6d5ca3dd9f1de8"
        },
        "runtime": "Windows x64 DLL under Wine 9 Linux container"
      }
    },
    "saveLoadReplay": {
      "firstFrame": 3400,
      "count": 60,
      "workRamBytes": 65536,
      "videoFramesNotIdentical": 1,
      "serializedBytesNotIdentical": 749,
      "completeSerializedStateEquality": false,
      "cause": "Inherited in exact V2.2 control: same 1/60 first-video mismatch and 749 serialized-byte differences. All 749 lie in scanned QSound chip state; this is a real audio-state replay limitation, not padding. Root cause remains unproven. Separate sprite rendering history is a candidate for the first video frame; work RAM agrees for 60/60 frames."
    },
    "baselineComparison": {
      "schema": "mvc1cf-inherited-replay-control/v1",
      "version": "v2.2",
      "coreSha256": "b6b6823c49b816f363c5204bae425ff8e7a570d49de6882f17904743a229d6d5",
      "romSha256": "5e9fd14a95f0c4c1f7bf1b4b144f06cee020efaceff1793340a38f2defe82876",
      "hostSourceSha256": "22c307044eecf2201fe27926e4142b4e83b66a88cb350d8cc181128995004fc4",
      "inputTapeSha256": "f23298d0ea53bd86cb5ec8fab730dfb8bcc73600fd9be6d6ad8b6595e0837fce",
      "scope": "Published V2.2 Linux x64 core/game under the same Ubuntu24 container. Classic5 and V2.2 logical selection owners. Ordinary-input gameplay only; same 3400..3459 replay window.",
      "frames": 4200,
      "workRamReplayMismatches": 0,
      "videoReplayMismatches": 1,
      "serializedBytesDifferent": 749,
      "serializedDifferenceFirst": 353150,
      "serializedDifferenceLast": 357610,
      "matchesV3DiscrepancyCounts": true,
      "note": "This is inherited behavior in the measured window, not complete save/load acceptance. QSound emulation state differs; work RAM is identical.",
      "physicalControllers": false,
      "fourMachineInternet": false,
      "status": "BASELINE_REPRODUCES_LIMITATION",
      "logSha256": "dd38a8e9b61523e1799939dfbde20b63f0faea9a84042942dd7e9b5037fca73b"
    },
    "sampledCrossPlatformVideoHashes": {
      "equal": true,
      "count": 70,
      "intervalFrames": 60
    }
  },
  "replayStaticReview": {
    "path": "harness/REPLAY_STATIC_REVIEW.json",
    "sha256": "8c3c96096957a69e34cc4bf75d5895adc81d151f5cbb96ea125e92350c1f1953"
  },
  "installerQualification": {
    "path": "build/package-qa-02/installer-qualification.json",
    "sha256": "bb2de451c82033ebfd703e10ba13cb07fa00ccf0e66eac56e36b54f22b948ddc",
    "status": "PASS",
    "casesPassed": 10,
    "host": "Python and PowerShell 7 on macOS; not native Windows CMD/PowerShell 5.1",
    "installerPins": {
      "install.py": "f3d8ffa5daee02afce8a29967e5ed4ccf9672ad765219b8c470a600357798ed5",
      "Install.ps1": "979e89ad3f4cc512f44c889f5bf639a00bfd07c99691d43f8239ef8e5ac90dd0",
      "MVC1-Cross-Fever-v3-preview.cmd": "d3ddfb68b31dddb4727193caac7377c6d0d3a53effb243e8259cf68c58a9af15",
      "patch-mvc1-cross-fever-v3-preview.json": "b5397bb7aa29e802eb5c02b315a0aaf2211f315070c5ed1519bf16e478c6c896",
      "patcher/mvsc_patch.py": "d5c9e0d848aa94579b403702ec3c26d2daa1281abd5eebe93874d0ae17d589ab",
      "patcher/gen_cmd.py": "d085b7ebd559e3ee2f8d205337d3732dfa63f1859c62a239043bdb3e42d549cb"
    },
    "originalParentPreserved": true,
    "scope": "Pre-seal qualification of the exact installer sources. Clean, reordered and extra-member stock archives yield all 21 required output members; missing key/wrong program are refused; existing output is preserved."
  },
  "supportQualification": {
    "path": "build/support-qualification-01.json",
    "sha256": "0c1f273af03ffc5bfa37ee9bead31bf926f7e3acb44c90902762a4a3ff6f48b7",
    "schema": "mvc1-cross-fever-support-qualification/1",
    "version": "v3-preview",
    "status": "PASS",
    "tests": 6,
    "command": "python3 -B -m unittest discover -s experiments/cross_fever/release/v3 -p test_support.py -v",
    "scopes": [
      "Python and PowerShell7 check-only content validation",
      "Wrong core, wrong program, missing key and extra member refusals",
      "Configuration preserved and credentials excluded",
      "Python failed-start retains process log and support JSON using a fake executable"
    ],
    "notCovered": [
      "Native Windows PowerShell5.1/CMD",
      "Physical controllers",
      "Four-machine internet"
    ],
    "pins": {
      "diagnose.py": "b88e6ed0b505a99fce13c3185ab0605ea0bee5c3b7f3fd3423ae4dd32f874c5f",
      "play.py": "30bd2c92bcad6dc0290e1e8eecfda2810897e961a631ba28522a30b7a7f73962",
      "Play.ps1": "8b1aa739f516be02a2a356707b53052d739367ada448fd1bdb328f75c130394d",
      "PLAY.cmd": "33d1e76f8fbe3450b41cab50903e3997b1ee0113114f71a79b29fdadcd1799d5",
      "CHECK.cmd": "fa8c2e74076b664c1ebef3b08f9272429894240ec7bdb5114042a0575f470558",
      "test_support.py": "73ab1791252e8975f7f799f42e5bd1c42dfe2c95c0c740b79484c4fefd36c879"
    }
  },
  "gameSourceRebuild": {
    "path": "build/game-source-rebuild-02/receipt.json",
    "sha256": "46ba88fd9a1c6e00e78975fd67dd28b735f3d390e61fc7cc62789a9ec9722815",
    "schema": "mvc1cf-source-reproduction/v1",
    "version": "v3-preview",
    "sourceArchive": "mvc1-cross-fever-v3-game-sources.zip",
    "sourceSha256": "600e63c494ea0f85c9ebe72ed5742cff29b34232fa50ea2946dfd0695e90f6af",
    "candidateSha256": "4e85efdcd953f02a62870d7f70a84bf0a02b1d296244183b3845e55840b8ad02",
    "outputSha256": "4e85efdcd953f02a62870d7f70a84bf0a02b1d296244183b3845e55840b8ad02",
    "all21MembersMatch": true,
    "memberCount": 21,
    "freshCensus": true,
    "runtimeClaim": false,
    "status": "PASS",
    "commands": [
      "python3 experiments/cross_fever/build.py --config experiments/cross_fever/mvc1-v3-config.json --inspect --out work/v3-stock-census",
      "python3 experiments/cross_fever/build.py --config experiments/cross_fever/mvc1-v3-config.json --census-dir work/v3-stock-census --out work/v3-game"
    ],
    "scope": "Fresh extraction and clean stock census reproduced the canonical candidate ZIP and all 21 members. Final source archive additionally receives tooling portability edits; post-seal qualification is retained separately."
  },
  "remainingGates": [
    "Four physical controllers, OS assignments, device disconnection/reconnection and simultaneous physical button input.",
    "Four separate machines completing a real internet match and rematch. Neither same-host simulation nor a Wine/container test establishes this.",
    "Complete audiovisual and serialized-state replay equality: the retained Linux/Wine check has one first restored video frame and 749 QSound-state bytes different. Exact V2.2 Linux control reproduces the measured pattern. Root cause and correction are not proven.",
    "Native Windows RetroArch/CMD/PowerShell5.1 and a native Linux desktop/frontend session. Windows DLL smoke used Wine; installer tests used PowerShell7 on macOS.",
    "Full stock roster/forms, every move and lifecycle boundary, and worst-case CPU/object budgets.",
    "Physical CPS2 cabinets and four-player Fightcade/GGPO. No hardware address expansion was used; this does not certify cabinet wiring.",
    "Control switching, three-human play and classic shared Duo control are separate design requests, not included in V3."
  ],
  "baselineAttribution": "The first-version feedback and a later report without package/core identity are separate evidence. V2.2 clean frontend boot passed; its Modern preset mapping conflict was reproduced. These tests do not establish the cause of the unidentified launch failure.",
  "distribution": "Patch-only packages with a matching custom core and original source. Do not stack on V2.2 or DHC. Supply verified stock Euro 980123 MVC1 including its original key."
}
