{
  "kind": "java_multiplexer_readiness_build",
  "qualified_build": {
    "head": "75712b0ee38dbcc54eacb07caa993aa0a7cfbea7",
    "finished_utc": "2026-09-10T10:11:07Z",
    "source_unchanged": true,
    "runtime_unchanged": true,
    "installed": false,
    "remaining_fix_processes": [],
    "java_only_build": true,
    "native_build_skipped": true,
    "engine_test_count": 234,
    "engine_tests_skipped": 0,
    "changed_engine_classes": [
      "com/atrekes/libhft/PureJavaHftSession$TcpClientConnection.class",
      "com/atrekes/libhft/PureJavaHftSession$TcpAcceptorParserBuffer.class",
      "com/atrekes/libhft/PureJavaHftSession$BasicValidityRejectContext.class",
      "com/atrekes/libhft/PureJavaHftSession$SeenNewOrderSingleClOrdIds.class",
      "com/atrekes/libhft/PureJavaHftSession$ParsedFields.class",
      "com/atrekes/libhft/PureJavaHftSession$AppCommandRing.class",
      "com/atrekes/libhft/PureJavaHftSession$AppCommandSlot.class",
      "com/atrekes/libhft/PureJavaHftSession$EventRing.class",
      "com/atrekes/libhft/PureJavaHftSession$RawFixRing.class",
      "com/atrekes/libhft/PureJavaHftSession$RawFixSlot.class",
      "com/atrekes/libhft/PureJavaHftSession$CompactMarketDataRing.class",
      "com/atrekes/libhft/PureJavaHftSession$CompactMarketDataSlot.class",
      "com/atrekes/libhft/PureJavaHftSession$CompactExecutionReportV2Ring.class",
      "com/atrekes/libhft/PureJavaHftSession$CompactExecutionReportV2Slot.class",
      "com/atrekes/libhft/PureJavaHftSession$ServerTickToTradeRecorder.class",
      "com/atrekes/libhft/PureJavaHftSession$AuditLog$1.class",
      "com/atrekes/libhft/PureJavaHftSession$AuditLog.class",
      "com/atrekes/libhft/PureJavaHftSession$AuditRecord.class",
      "com/atrekes/libhft/PureJavaHftSession$MemoryReplayStore.class",
      "com/atrekes/libhft/PureJavaHftSession$MappedReplayStore.class",
      "com/atrekes/libhft/PureJavaHftSession$AllocationMeter.class",
      "com/atrekes/libhft/PureJavaHftSession$ReceiveDiagnostics.class",
      "com/atrekes/libhft/PureJavaHftSession$SendDiagnostics.class",
      "com/atrekes/libhft/PureJavaHftSession$ServerDiagnostics.class",
      "com/atrekes/libhft/PureJavaHftSession.class"
    ],
    "engine_jar_sha256": "8d917896bc1b102633068df39e854d71ad655fd6bdbe666b38e2cd7852a763b2",
    "records": [
      {
        "name": "suite-runner-compile",
        "command": [
          "javac",
          "-cp",
          "/home/yann/.m2/repository/junit/junit/4.13.2/junit-4.13.2.jar:/home/yann/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar",
          "-d",
          "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK",
          "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/SuiteTest.java"
        ],
        "cwd": "/home/yann/code/libhft",
        "exit_code": 0,
        "elapsed_seconds": 0.7649774558376521,
        "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
      },
      {
        "name": "broad-engine-tests",
        "command": [
          "java",
          "-cp",
          "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK:/home/yann/code/libhft/engine/java/target/test-classes:/home/yann/code/libhft/engine/java/target/classes:/home/yann/.m2/repository/junit/junit/4.13.2/junit-4.13.2.jar:/home/yann/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar",
          "SuiteTest",
          "com.atrekes.libhft.PureJavaHftSessionTest",
          "com.atrekes.libhft.PureJavaMonoAcceptorOwnerTest",
          "com.atrekes.libhft.PureJavaAcceptorValidationParityTest",
          "com.atrekes.libhft.HftPureJavaTickToTradeRawSamplesTest",
          "com.atrekes.libhft.PureJavaPlainTcpWriteTest",
          "com.atrekes.libhft.PureJavaMultiplexerReadinessTest"
        ],
        "cwd": "/home/yann/code/libhft",
        "exit_code": 0,
        "elapsed_seconds": 80.01423410093412,
        "log_sha256": "03c5da6da3d14d941f04a5a061d4a6deb29a93db24be1c9371065b2edd962a74"
      },
      {
        "name": "engine-package",
        "command": [
          "mvn",
          "-o",
          "-q",
          "-Dlibhft.native.skip=true",
          "-DskipTests",
          "package"
        ],
        "cwd": "/home/yann/code/libhft/engine/java",
        "exit_code": 0,
        "elapsed_seconds": 5.270838965894654,
        "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
      },
      {
        "name": "bench-compat-tests",
        "command": [
          "mvn",
          "-o",
          "-q",
          "test"
        ],
        "cwd": "/home/yann/code/libhft/bench/java/fixbench",
        "exit_code": 0,
        "elapsed_seconds": 2.76779467985034,
        "log_sha256": "2dce3edeaa6482905eeb077220913aad6d236c3bebf4f151959fa063ae50cf97"
      }
    ]
  },
  "candidate_only": true,
  "hardware_qualification_pending": true,
  "staged": false,
  "changes": [
    "At most four plaintext peers per owner keep direct reads; larger nonblocking-write owners use one selectNow snapshot.",
    "TLS and explicit blocking/stream-write modes keep their existing read paths.",
    "Readiness failure retires the current generation; selector lifetime stays with its data owner.",
    "Multiplexed positive read/parse work is now represented in the existing opt-in server diagnostics.",
    "A full incomplete frame retires only its peer instead of spinning on a zero-capacity read."
  ],
  "tests": {
    "new_loopback_tests": 8,
    "broad_engine_tests": 234,
    "broad_engine_skipped": 0,
    "downstream_bench_tests": 99,
    "downstream_bench_skipped": 0,
    "downstream_suites": [
      {
        "name": "org.latency.bench.BenchmarkScenarioContractTest",
        "tests": 4,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.bench.BenchmarkScenarioContractTest.xml",
        "sha256": "fde56ffd9da0f7b2a4ff90bd86536a80f94f6e9b02abe141b6d3755c024f01e5"
      },
      {
        "name": "org.latency.bench.BusinessWorkloadTest",
        "tests": 2,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.bench.BusinessWorkloadTest.xml",
        "sha256": "af480b0507c25cd388d4598b75a21a46177dfd04707e8335acfde4ae774c593e"
      },
      {
        "name": "org.latency.bench.ExtractionSinkTest",
        "tests": 7,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.bench.ExtractionSinkTest.xml",
        "sha256": "b0c3327d7992db5953c9bfc12c97c3ed808eae5e7ec054ca7ff132fb3c8a1f20"
      },
      {
        "name": "org.latency.bench.FixBenchWireTest",
        "tests": 5,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.bench.FixBenchWireTest.xml",
        "sha256": "e3252be3f0de8383db7d64b000dfe6862b1b4ef28b77e2be403dc6372b1f5ef4"
      },
      {
        "name": "org.latency.bench.MarketMakerWorkloadTest",
        "tests": 1,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.bench.MarketMakerWorkloadTest.xml",
        "sha256": "a6ebcfc0d90d4db3df94b0c50b6ecad69fa31eabb9f1c5d6d544665b621eca00"
      },
      {
        "name": "org.latency.bench.ServerTickToTradeRecorderTest",
        "tests": 3,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.bench.ServerTickToTradeRecorderTest.xml",
        "sha256": "3a33dbb9d842b33ea2b5881a9f54e2779dacef81f7aad9378f8aefb993c403ff"
      },
      {
        "name": "org.latency.libhftjava.LHProviderFrontendPlacementTest",
        "tests": 4,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.libhftjava.LHProviderFrontendPlacementTest.xml",
        "sha256": "0ee85fd78561dc13efc183818b298f84996208298af690f2510bbd2cd7c90958"
      },
      {
        "name": "org.latency.libhftjava.LHProviderShardParticipationTest",
        "tests": 4,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.libhftjava.LHProviderShardParticipationTest.xml",
        "sha256": "7271c5a7ea6fc961d79466bd2530712da6231c617e946eb4a94c4a6a1cac1093"
      },
      {
        "name": "org.latency.libhftjava.LHProviderTcpRemoteMultiClientBarrierTest",
        "tests": 5,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.libhftjava.LHProviderTcpRemoteMultiClientBarrierTest.xml",
        "sha256": "dab7469080807d717060c7f22eceb7683111ae927ce8c2a5aca723b94b822dd0"
      },
      {
        "name": "org.latency.libhftjava.LHProviderTcpRemoteMultiClientTest",
        "tests": 53,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.libhftjava.LHProviderTcpRemoteMultiClientTest.xml",
        "sha256": "b4c7f1d377bbee654f4064bcf749b72f7161f4ce5d14f236e57b3138f6795c3d"
      },
      {
        "name": "org.latency.libhftjava.LHProviderTcpRemoteSupportTest",
        "tests": 4,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.libhftjava.LHProviderTcpRemoteSupportTest.xml",
        "sha256": "e680b3fe28f036fbc52f4da04c7b187361e13f41177c54f92cb68ca62316551b"
      },
      {
        "name": "org.latency.libhftjava.LHProviderTcpSingleOwnerTest",
        "tests": 5,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.libhftjava.LHProviderTcpSingleOwnerTest.xml",
        "sha256": "47afa91a352a846108db7f4236603d730cbbf19e384d93e38f5085198982fd66"
      },
      {
        "name": "org.latency.philadelphia.PHEngineParityTest",
        "tests": 1,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.philadelphia.PHEngineParityTest.xml",
        "sha256": "e2567ab3dcb85fe35a79769d511a64af84ef34c3540bd21faeb71dc68bc2e3b7"
      },
      {
        "name": "org.latency.quickfix.QFEngineParityTest",
        "tests": 1,
        "path": "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-test-reports/TEST-org.latency.quickfix.QFEngineParityTest.xml",
        "sha256": "e460289b2e9aa5ff48cf768bf68dd60bcf4d10ae0aee2bedb010114ccea7ccd0"
      }
    ],
    "baseline_failures_reproduced": [
      "missing multiplexed read/parse counters",
      "full unterminated BodyLength header"
    ]
  },
  "initial_fixture_correction": {
    "evidence": "/tmp/libhft-java-mono-median-20260910-JlbMD0",
    "first_new_tests": "7 passed / 1 failed",
    "reason": "Initial body-length fixture exceeded the 2048-byte wire cap, so framing resynchronized instead of filling the buffer. It did not exercise the alleged full-buffer condition.",
    "correction": "Use an unterminated BodyLength field and assert tcpFrameLength remains incomplete before sending; it fails on the original JAR and passes on the candidate.",
    "original_attempt_retained": true
  },
  "hashes": {
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/build.py": "2cf1382a75489ecb36a907175a417f5b15fe07cd9512de3607ee69014f2ccd78",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/MethodTest.java": "196a588555f24297a31ada6a4dcd7be3a7492e1eec8b36f10285768014b9583e",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/build-before.json": "8d0e683f9be8ecd36456e8fe6bceededd1c4e75e80b025c6e0426904fb0fbefb",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/compile.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/compile.json": "2ad605ba27af57c7d6bfa63c331dad2e5d488ac1d8175a24ead35ce13b639a1b",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/method-runner-compile.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/method-runner-compile.json": "e90998b199d7f79571388d482d9dddb76bf15d1739c4f083e1af9d0411cf0755",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/baseline-diagnostic-gap.log": "2488515eb2e5a94dc5c0a3be4e841ac5c194b7a44b0b8436048569c273688efd",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/baseline-diagnostic-gap.json": "bab2807514df4cac334094efaca9ec8852cc2eb2d588344bfd9854158194f848",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/baseline-full-buffer.log": "8c7d8c653dd29b69bc886e1d6dda21ed77be1ad29a348241a156dbc6f6cca7cb",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/baseline-full-buffer.json": "ab03ab5ffd70b4dc940d846cb4a52f8aee6c013d01705554e0dc2480b12560c1",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/new-readiness-tests.log": "403dde320a17f17d365838a29799122df2171baac91928db387ba39087534270",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/new-readiness-tests.json": "ef385d9c7559c810f08f67ed48c6106df85e423f3b790f7db079ed1590f29846",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/build-after.json": "ba1808a4647a27417a0b3634e784bdb3847c961900186daeffde227559dc880d",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/SuiteTest.java": "2d56bb014442240e6da39f0f26f82f5e1a5e42425fb5fae70aa22cd6611ca28a",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/qualify.py": "499dce2a5837f6cdad0a1702b248dc6e6cb2236edc7833b6174d8d5bb2420a14",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/suite-runner-compile.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/suite-runner-compile.json": "49da7cbb7ad6c5ab2d0dc67be84ab843dba18eb96231b5c3df8e424b151a96f7",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/broad-engine-tests.log": "03c5da6da3d14d941f04a5a061d4a6deb29a93db24be1c9371065b2edd962a74",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/broad-engine-tests.json": "b3beb42a1bb91b13ae38b458e6c0ca1409be055824ef47872a6e7912038af69c",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/engine-package.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/engine-package.json": "115a6f9c53f3c81503c1e96468728639c34453c9607e6410ba1cf0241b687de5",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-compat-tests.log": "2dce3edeaa6482905eeb077220913aad6d236c3bebf4f151959fa063ae50cf97",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/bench-compat-tests.json": "47c3029faa5fef19c4eec6c8d7ac07751ee6c3c8e26ea66c6f28a65cec9c8c72",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/qualified-build.json": "79e356aa318630def271afad6324694c6a792b16722637b8627547d206b7d8ff",
    "/tmp/libhft-java-mono-readiness-fixed-20260910-2T5oAK/report_build.py": "c9e5bf3a1e5fd4e7b617af0327343af808fbc56794ae7313444b6a1fb9a0fc80"
  },
  "limitations": [
    "No network latency claim from unit tests; full hardware runs remain pending.",
    "Existing 100000-idle-sweep backoff is retained; a faster sweep can change its wall-clock duration.",
    "No JNI/native library, launcher, recipe, warmup, pacing, JVM policy, or publication gate changed.",
    "The 234 engine tests include the eight focused tests; those counts are not additive.",
    "Engine package skips its Maven test execution only after the explicit 234-test suite; native compilation is intentionally skipped."
  ]
}
