)]}'
{
  "log": [
    {
      "commit": "794404510d52cdecf612b56ea81171906c92ffdf",
      "tree": "cda55c92dc36149504470b45c0769d1b46799a76",
      "parents": [
        "b9e33e662ef76557ffbeba18b4ddcec852c4e9b5"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "vicwen@apache.org",
        "time": "Sat Aug 01 10:42:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 01 10:42:33 2026 +0800"
      },
      "message": "chore(deps): update website dependencies (#1459)\n\nSigned-off-by: viiccwen \u003cvicwen@apache.org\u003e"
    },
    {
      "commit": "b9e33e662ef76557ffbeba18b4ddcec852c4e9b5",
      "tree": "e50521178e5d6fb0d627740aabbaf69b1cde93ce",
      "parents": [
        "e7af6f2da9d1e4f03a8e64f0d98ecbc7c2ca6413"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "vicwen@apache.org",
        "time": "Thu Jul 16 16:19:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 16:19:52 2026 +0800"
      },
      "message": "fix(qdp): apply shared max qubit validation (#1442)"
    },
    {
      "commit": "e7af6f2da9d1e4f03a8e64f0d98ecbc7c2ca6413",
      "tree": "0ea15db9876dc84c57a833f22c3e8b9d5e4d4685",
      "parents": [
        "d93533b60a79f96999ee33aa812cbccf43136fe0"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "vicwen@apache.org",
        "time": "Mon Jul 13 19:16:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 19:16:27 2026 +0800"
      },
      "message": "[MAHOUT-1438][Docs] Update QDP CUDA tensor dtype guidance for float32 angle and basis (#1439)\n\nSigned-off-by: viiccwen \u003cvicwen@apache.org\u003e"
    },
    {
      "commit": "d93533b60a79f96999ee33aa812cbccf43136fe0",
      "tree": "0a53d6bd060c16e139937d0f1db4cb57c5d1d50e",
      "parents": [
        "35a8526d9cb08669ee3989b801be74bea0216cf4"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "vicwen@apache.org",
        "time": "Fri Jul 10 23:19:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 23:19:29 2026 +0800"
      },
      "message": "add viiccwen committer in website (#1437)"
    },
    {
      "commit": "35a8526d9cb08669ee3989b801be74bea0216cf4",
      "tree": "68fccdbe59464afbcbbcb9b1145d20108feeec73",
      "parents": [
        "826c3abb57ba1d39930a7a0e8af57f5844f7304e"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Fri Jul 10 14:14:16 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 14:14:16 2026 +0900"
      },
      "message": "[Bug][QDP] Align Iris GPU training path with sibling pipelines (real dtype + leaf weights) (#1412)"
    },
    {
      "commit": "826c3abb57ba1d39930a7a0e8af57f5844f7304e",
      "tree": "1b69021e24411e0871ea51e6753ee01f7ae63afd",
      "parents": [
        "58e4aff32c52e115b8fffd66eb84756b74e303f3"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Sun Jul 05 21:42:35 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 20:42:35 2026 +0800"
      },
      "message": "[MAHOUT-1414][QDP] Expose native cuda_available() and gate GPU tests on it (#1416)\n\nFollow-up to #1321 (addresses #1414). After #1321, `_qdp` can build and\nimport without the CUDA toolkit (stub runtime), so \"extension importable\"\nno longer implies a usable GPU. The test suite gated GPU tests on\n`torch.cuda.is_available()`, a proxy that is wrong on this PR\u0027s headline\nscenario -- a GPU host with PyTorch but no toolkit, where `_qdp` is a stub\nbuild yet torch still reports a device.\n\n- qdp-core: add `cuda_runtime_available()`, which queries\n  `cudaGetDeviceCount` (false in a stub build via the existing 999 sentinel\n  stub, and on hosts with no device). Re-exported from the crate root.\n- _qdp: expose it as `_qdp.cuda_available()`.\n- qumat_qdp: add `is_cuda_available()`, mirroring `is_triton_amd_available()`,\n  as the single Python source of truth.\n- testing/conftest: gate the `@pytest.mark.gpu` auto-skip on the native\n  signal (falling back to torch only if the helper is absent).\n- test_fallback: coverage that runs on a stub build too, guarding that\n  querying availability returns a bool without aborting.\n\nVerified on GPU (tests run and pass) and with CUDA hidden (tests skip);\nfull Rust suite, clippy --all-features, ruff, and ty all clean."
    },
    {
      "commit": "58e4aff32c52e115b8fffd66eb84756b74e303f3",
      "tree": "00c28d5c6839f6d7c09a8dc17dbe9adf315dba67",
      "parents": [
        "359f9590de355afe44131250327d3df68993940c"
      ],
      "author": {
        "name": "ChenChen Lai",
        "email": "72776271+0lai0@users.noreply.github.com",
        "time": "Sat Jul 04 16:13:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 04 16:13:01 2026 +0800"
      },
      "message": "[Testing][QDP] f32 Parquet fidelity tests and benchmark (#1422)\n\n* f32 Parquet fidelity tests and benchmark\n\n* fix error\n\n* address comment"
    },
    {
      "commit": "359f9590de355afe44131250327d3df68993940c",
      "tree": "3d53e78febaaf9ab2846132ef9a4d5a4061904ac",
      "parents": [
        "dccc97dbad6ca6c611caad25f82d96f64591f682"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Fri Jul 03 13:17:15 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 12:17:15 2026 +0800"
      },
      "message": "refactor(qdp): rename validate_tensor to validate_tensor_cpu and drop redundant check (#1415)"
    },
    {
      "commit": "dccc97dbad6ca6c611caad25f82d96f64591f682",
      "tree": "c61bfc8ac1e1b797f20b7ddb2e1c626c55763e65",
      "parents": [
        "44b04fbee127c1f5e6063375b571311cab054465"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "viiccwen@gmail.com",
        "time": "Thu Jul 02 19:06:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 19:06:54 2026 +0800"
      },
      "message": "feat: add local docs versioning validation (#1427)"
    },
    {
      "commit": "44b04fbee127c1f5e6063375b571311cab054465",
      "tree": "5b95b3462682f1b7edc514d681236b9e8e91b2e5",
      "parents": [
        "ca026635d9a0bb7f53f17f37dda748c7eecc51f0"
      ],
      "author": {
        "name": "Jie-Kai Chang",
        "email": "jiekaichang@apache.org",
        "time": "Tue Jun 30 08:30:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 08:30:08 2026 +0800"
      },
      "message": "[Website] Remove News page kicker (#1428)\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e"
    },
    {
      "commit": "ca026635d9a0bb7f53f17f37dda748c7eecc51f0",
      "tree": "46795ffa34901b1c7531d99b61c544606507bd6f",
      "parents": [
        "0474f57ef274af3bc4b94c5ecaa9c2dede658c3c"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "viiccwen@gmail.com",
        "time": "Mon Jun 29 22:42:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 22:42:14 2026 +0800"
      },
      "message": "ci: validate website build for API docs changes (#1426)"
    },
    {
      "commit": "0474f57ef274af3bc4b94c5ecaa9c2dede658c3c",
      "tree": "ad193435bdd479dd6a2ab1d22f452411d34ca5ed",
      "parents": [
        "f1c7b4aa9ce33235ad1bc5391b0edeb095d50971"
      ],
      "author": {
        "name": "Jie-Kai Chang",
        "email": "jiekaichang@apache.org",
        "time": "Mon Jun 29 13:11:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 13:11:15 2026 +0800"
      },
      "message": "[Website] Split blog post pagination by content type (#1425)\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e"
    },
    {
      "commit": "f1c7b4aa9ce33235ad1bc5391b0edeb095d50971",
      "tree": "8008f3f635d2f99ad363d6dbf4f6f87b62f1c563",
      "parents": [
        "e53b879a87e6ce42a7e3daf16856a128b74b517e"
      ],
      "author": {
        "name": "Jie-Kai Chang",
        "email": "jiekaichang@apache.org",
        "time": "Mon Jun 29 12:45:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 12:45:09 2026 +0800"
      },
      "message": "[Website] Add News dropdown navigation (#1424)\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e"
    },
    {
      "commit": "e53b879a87e6ce42a7e3daf16856a128b74b517e",
      "tree": "bd52f54eb4e38a2ff8c6b000061e6fd9bd8e0697",
      "parents": [
        "3e631d919147335d361a79e23aaf01878a1526fa"
      ],
      "author": {
        "name": "Jie-Kai Chang",
        "email": "jiekaichang@apache.org",
        "time": "Mon Jun 29 03:40:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 03:40:16 2026 +0800"
      },
      "message": "[Website] Split blog and meeting minutes listings (#1423)\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e"
    },
    {
      "commit": "3e631d919147335d361a79e23aaf01878a1526fa",
      "tree": "6e2bf286475b6c48f9d55226f2de28b59f8aa5cc",
      "parents": [
        "de484ad8d1d1a5c231b2c6977e2308a1bfa42a3b"
      ],
      "author": {
        "name": "Jie-Kai Chang",
        "email": "jiekaichang@apache.org",
        "time": "Sun Jun 28 20:40:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 28 20:40:30 2026 +0800"
      },
      "message": "[Website] Rename dev docs version to master (#1421)\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e"
    },
    {
      "commit": "de484ad8d1d1a5c231b2c6977e2308a1bfa42a3b",
      "tree": "d6ccf5faa34711d69530a62362883644a1ba5f32",
      "parents": [
        "a17627f5b00d6c229af397fdae81c5dec9decbdd"
      ],
      "author": {
        "name": "Jie-Kai Chang",
        "email": "jiekaichang@apache.org",
        "time": "Sun Jun 28 20:00:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 28 20:00:48 2026 +0800"
      },
      "message": "[Website] Update QuMat release blogs and community roster (#1420)\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e"
    },
    {
      "commit": "a17627f5b00d6c229af397fdae81c5dec9decbdd",
      "tree": "00b3e1d0f39530d01888a91caecf108eb4af69f7",
      "parents": [
        "cb8e2f066660dc548b6e6d57c0a00ff71f9f0a33"
      ],
      "author": {
        "name": "Jie-Kai Chang",
        "email": "jiekaichang@apache.org",
        "time": "Sun Jun 28 14:38:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 28 14:38:47 2026 +0800"
      },
      "message": "[Website] Add Qumat 0.5.0 release blog (#1419)\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e"
    },
    {
      "commit": "cb8e2f066660dc548b6e6d57c0a00ff71f9f0a33",
      "tree": "869896b45a20c548a2c22d6b2fe2504ea567ed48",
      "parents": [
        "96555a8a838eb2eb68a000551c29c232ea94c009"
      ],
      "author": {
        "name": "Jie-Kai Chang",
        "email": "jiekaichang@apache.org",
        "time": "Sun Jun 28 13:35:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 28 13:35:32 2026 +0800"
      },
      "message": "[Website] Redesign news index and blog post pages (#1418)\n\n* [Docs] Add 0.6 website version snapshot\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e\n\n* [Website] Redesign news index and blog post pages\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e\n\n---------\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e"
    },
    {
      "commit": "96555a8a838eb2eb68a000551c29c232ea94c009",
      "tree": "8cfd92942c9d8704e052144413b74d80c9f60fa1",
      "parents": [
        "205ce75f6b95c52ee02e14fdaa0f0ecd995c6cb9"
      ],
      "author": {
        "name": "Jie-Kai Chang",
        "email": "jiekaichang@apache.org",
        "time": "Sun Jun 28 11:16:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 28 11:16:10 2026 +0800"
      },
      "message": "[Docs] Add 0.6 website version snapshot (#1417)\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e"
    },
    {
      "commit": "205ce75f6b95c52ee02e14fdaa0f0ecd995c6cb9",
      "tree": "f6216362184b71ad853118b45fac43dbf082c3c2",
      "parents": [
        "5d424cde8316a806a3cb6b3ca206b10efbb7f123"
      ],
      "author": {
        "name": "Andrew Musselman",
        "email": "akm@apache.org",
        "time": "Fri Jun 26 11:56:14 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 27 02:56:14 2026 +0800"
      },
      "message": "fix(qdp-core): link cudart locally and stub FFI when toolkit is absent  (#1321)\n\n* fix(qdp): own -lcudart linkage in qdp-core, gate stubs on qdp_no_cuda\n\n* fix(qdp): check nvcc exit status and rerun build scripts on PATH\n\nAddress review feedback on the CUDA-detection probe shared by qdp-core\nand qdp-kernels build scripts:\n\n- output().is_ok() was true even when nvcc exited non-zero, so a\n  half-installed toolkit would set has_cuda \u003d true and fall through to a\n  link error. Use .map(|o| o.status.success()).unwrap_or(false) in both\n  scripts so the two probes can\u0027t disagree.\n- Add cargo:rerun-if-env-changed\u003dPATH so installing the toolkit after a\n  stub build re-triggers detection without `cargo clean`.\n\nAlso run cargo fmt on the no_cuda_stubs module in cuda_ffi.rs to clear\nthe pre-commit fmt hook (was failing the test job).\n\n* test(qdp): skip GPU tests when no CUDA device is available\n\nThis PR lets _qdp build and import without the CUDA toolkit (stub CUDA\nRuntime symbols), so \"extension importable\" no longer implies a usable\nGPU. The conftest auto-skip only checked extension availability, so on a\nGPU-less runner the @pytest.mark.gpu tests ran against the stub engine\nand aborted the pytest worker (SIGABRT) instead of being skipped.\n\n- conftest: add a torch.cuda.is_available() probe and skip\n  @pytest.mark.gpu tests when no device is present, matching the inline\n  torch.cuda.is_available() guards already used across the QDP modules.\n  The existing \"extension missing\" skip behaviour is unchanged.\n- mark test_synthetic_loader_batch_count @pytest.mark.gpu: it iterates a\n  synthetic loader, which encodes on the GPU.\n\nVerified locally: with CUDA hidden the previously-crashing tests skip\ncleanly (0 failures across testing/qdp + testing/qdp_python); with a GPU\npresent they run and pass.\n\n---------\n\nCo-authored-by: Hsien-Cheng Huang \u003chcr@apache.org\u003e"
    },
    {
      "commit": "5d424cde8316a806a3cb6b3ca206b10efbb7f123",
      "tree": "e96c4cb1ccd0b918bdb835a100a736ed6ca2e219",
      "parents": [
        "8379a84eca341bf664cb8ff30e544b821da52b6c"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Sat Jun 27 02:52:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 27 02:52:44 2026 +0800"
      },
      "message": "Update CODEOWNERS entries for removing ryankert01 from some entries"
    },
    {
      "commit": "8379a84eca341bf664cb8ff30e544b821da52b6c",
      "tree": "6fb4d7d6407f035e16c6530116eeac87c3578020",
      "parents": [
        "08a4852f285f364748bac89767cb8f97a475b9b1"
      ],
      "author": {
        "name": "ChenChen Lai",
        "email": "72776271+0lai0@users.noreply.github.com",
        "time": "Fri Jun 26 22:22:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 22:22:54 2026 +0800"
      },
      "message": "[Feature][QDP] Pipeline file load respects PipelineConfig.dtype (#1407)\n\n* [Feature][QDP] Pipeline file load respects PipelineConfig.dtype\n\n* [Feature][QDP] Pipeline file load respects PipelineConfig.dtype\n\n* address comment"
    },
    {
      "commit": "08a4852f285f364748bac89767cb8f97a475b9b1",
      "tree": "e80439270a66cf1d3d9aaf6be38b286117793cbd",
      "parents": [
        "415c8da0db4b8914b9441eb3e18ff209537aa66b"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Mon Jun 22 22:40:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 22:40:02 2026 +0800"
      },
      "message": "[ci] Add stale PR workflow (#1411)"
    },
    {
      "commit": "415c8da0db4b8914b9441eb3e18ff209537aa66b",
      "tree": "cfdb1f81e22b84eb4b5266371dcbb28079dfa9c0",
      "parents": [
        "91335ed1939a1b8f6c5eb5d7451d2d21e77da8ab"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 22 00:08:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 00:08:09 2026 +0800"
      },
      "message": "chore(deps): bump webpack-dev-server from 5.2.4 to 5.2.5 in /website (#1408)\n\nBumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 5.2.4 to 5.2.5.\n- [Release notes](https://github.com/webpack/webpack-dev-server/releases)\n- [Changelog](https://github.com/webpack/webpack-dev-server/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/webpack/webpack-dev-server/compare/v5.2.4...v5.2.5)\n\n---\nupdated-dependencies:\n- dependency-name: webpack-dev-server\n  dependency-version: 5.2.5\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "91335ed1939a1b8f6c5eb5d7451d2d21e77da8ab",
      "tree": "ab125f831ac826382e9ff5368ea6cdb808a94984",
      "parents": [
        "de4ec14f6b2cff88b7f6209489d38f9d5563ca68"
      ],
      "author": {
        "name": "ChenChen Lai",
        "email": "72776271+0lai0@users.noreply.github.com",
        "time": "Thu Jun 18 17:51:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 17:51:29 2026 +0800"
      },
      "message": "[Bug][QDP] Fix List\u003cT\u003e readers failing on nullable outer rows (#1402)\n\n* Fix List\u003cT\u003e readers failing on nullable outer rows\n\n* Fix ParquetStreamingReader rejecting all-null leading batches"
    },
    {
      "commit": "de4ec14f6b2cff88b7f6209489d38f9d5563ca68",
      "tree": "0f8ec883e852ed089ace85a68dac21d6b4c63228",
      "parents": [
        "8a4ee363292346e510fb4a3ba029229e15f73c5a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jun 18 17:50:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 17:50:25 2026 +0800"
      },
      "message": "chore(deps): bump ws from 7.5.10 to 7.5.11 in /website (#1405)\n\nBumps [ws](https://github.com/websockets/ws) from 7.5.10 to 7.5.11.\n- [Release notes](https://github.com/websockets/ws/releases)\n- [Commits](https://github.com/websockets/ws/compare/7.5.10...7.5.11)\n\n---\nupdated-dependencies:\n- dependency-name: ws\n  dependency-version: 7.5.11\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "8a4ee363292346e510fb4a3ba029229e15f73c5a",
      "tree": "3995615518fcee5fd3810da39cb189d147512779",
      "parents": [
        "9d4c85fd7293068134c40fa32dd789cfb32e88c3"
      ],
      "author": {
        "name": "Guan-Ming (Wesley) Chiu",
        "email": "105915352+guan404ming@users.noreply.github.com",
        "time": "Thu Jun 18 17:47:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 17:47:57 2026 +0800"
      },
      "message": "Update CODEOWNERS to remove Guan-Ming\n\nRemoved @guan404ming from CODEOWNERS for various directories."
    },
    {
      "commit": "9d4c85fd7293068134c40fa32dd789cfb32e88c3",
      "tree": "8ef4ba7e0770957c0110f6426462f43d68aa025b",
      "parents": [
        "28bab6e869452def1687c602e034a60e10737a24"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 16 15:20:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 15:20:42 2026 +0800"
      },
      "message": "chore(deps): bump launch-editor from 2.12.0 to 2.14.1 in /website (#1406)\n\nBumps [launch-editor](https://github.com/vitejs/launch-editor) from 2.12.0 to 2.14.1.\n- [Commits](https://github.com/vitejs/launch-editor/compare/v2.12.0...v2.14.1)\n\n---\nupdated-dependencies:\n- dependency-name: launch-editor\n  dependency-version: 2.14.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "28bab6e869452def1687c602e034a60e10737a24",
      "tree": "fca0245dbe1b2dd1cf5b7366e487c1a5b17a7d85",
      "parents": [
        "69568a0173f8973f6b74ef7706aa3b5755bf98ae"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "viiccwen@gmail.com",
        "time": "Tue Jun 16 11:06:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 11:06:34 2026 +0800"
      },
      "message": "docs: add QDP source API docstrings (#1404)"
    },
    {
      "commit": "69568a0173f8973f6b74ef7706aa3b5755bf98ae",
      "tree": "a518548b1658ef841d5274050dacb90dee9dbcfd",
      "parents": [
        "b20959e40dce7eef1fb5bad3e0a36f53ebf9aba9"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "viiccwen@gmail.com",
        "time": "Tue Jun 16 11:05:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 11:05:08 2026 +0800"
      },
      "message": "[Feature] Generate Python API docs from module discovery (#1392)\n\n* feat(website): generate Python API docs from module discovery\n\nRefs #1347\n\n* docs: simplify QDP API doc generation\n\n* chore: align script coding style\n\n* ci: install uv for website builds"
    },
    {
      "commit": "b20959e40dce7eef1fb5bad3e0a36f53ebf9aba9",
      "tree": "5906aec1f8e3ef241b6dff9cae6eac39ff82816e",
      "parents": [
        "c4da8c7ab76094f9d5acb8db3d9374f6b898f0b1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 15 15:24:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 15:24:20 2026 +0800"
      },
      "message": "chore(deps): bump black from 23.12.1 to 26.3.1 (#1403)\n\nBumps [black](https://github.com/psf/black) from 23.12.1 to 26.3.1.\n- [Release notes](https://github.com/psf/black/releases)\n- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)\n- [Commits](https://github.com/psf/black/compare/23.12.1...26.3.1)\n\n---\nupdated-dependencies:\n- dependency-name: black\n  dependency-version: 26.3.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c4da8c7ab76094f9d5acb8db3d9374f6b898f0b1",
      "tree": "befdef911ee8736478aef4ad0593edf751a7b6df",
      "parents": [
        "3692e694c56b86524472ff8e097a2e348e60b2f2"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "viiccwen@gmail.com",
        "time": "Mon Jun 15 10:15:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 10:15:51 2026 +0800"
      },
      "message": "docs: add pydoc-markdown API generation config (#1381)"
    },
    {
      "commit": "3692e694c56b86524472ff8e097a2e348e60b2f2",
      "tree": "72f0808473c022d7e58b747221fa6bbf4733cba9",
      "parents": [
        "6d7b82ff2cef111a48c574d8cfd8c037781e6a2e"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Sat Jun 13 00:21:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 00:21:13 2026 +0800"
      },
      "message": "Change community meeting frequency to monthly (#1400)\n\n* Change community meeting frequency to monthly\n\nUpdated the frequency of the community meeting from biweekly to monthly.\n\n* Update index.md\n\n* Update versioned community meeting docs\n\n* Keep version 0.4 community meeting docs unchanged"
    },
    {
      "commit": "6d7b82ff2cef111a48c574d8cfd8c037781e6a2e",
      "tree": "2a676c9a3c1edd146799bd7697e7249f96f24722",
      "parents": [
        "bd1a29397527fc3412a1267d1d0fb0cac92f8583"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jun 12 01:08:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 01:08:07 2026 +0800"
      },
      "message": "chore(deps-dev): bump torch from 2.8.0 to 2.12.0 in /qdp/qdp-python (#1397)\n\nBumps [torch](https://github.com/pytorch/pytorch) from 2.8.0 to 2.12.0.\n- [Release notes](https://github.com/pytorch/pytorch/releases)\n- [Changelog](https://github.com/pytorch/pytorch/blob/main/RELEASE.md)\n- [Commits](https://github.com/pytorch/pytorch/compare/v2.8.0...v2.12.0)\n\n---\nupdated-dependencies:\n- dependency-name: torch\n  dependency-version: 2.12.0\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "bd1a29397527fc3412a1267d1d0fb0cac92f8583",
      "tree": "951daab19d7e26575ba1d58aca9f4ecefe5eb09f",
      "parents": [
        "214b02dcb7b32412246c0fa98d3b02cfeb1e7872"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jun 12 01:03:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 01:03:39 2026 +0800"
      },
      "message": "chore(deps): bump shell-quote from 1.8.3 to 1.8.4 in /website (#1395)\n\nBumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.3 to 1.8.4.\n- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.3...v1.8.4)\n\n---\nupdated-dependencies:\n- dependency-name: shell-quote\n  dependency-version: 1.8.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "214b02dcb7b32412246c0fa98d3b02cfeb1e7872",
      "tree": "101d916ae2e5f7c6d6cf6482ff8dff5f794d9ab2",
      "parents": [
        "0076003b0777ade5ae4d2e8ad9b2e8b0c83a3cd3"
      ],
      "author": {
        "name": "ChenChen Lai",
        "email": "72776271+0lai0@users.noreply.github.com",
        "time": "Thu Jun 11 17:11:06 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 16:11:06 2026 +0800"
      },
      "message": "[Feature][QDP]ParquetReader generic over f32/f64 with Arrow cast (#1393)\n\n* ParquetReader generic over f32/f64 with Arrow cast\n\n* address comment"
    },
    {
      "commit": "0076003b0777ade5ae4d2e8ad9b2e8b0c83a3cd3",
      "tree": "a8fee4b0aaa44cd8351cad2af09c7db373fcc193",
      "parents": [
        "b22bbdcdba6d0b19bc4f56b23107309b0bf41710"
      ],
      "author": {
        "name": "aloha1357",
        "email": "64310247+aloha1357@users.noreply.github.com",
        "time": "Tue Jun 09 20:24:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 02:24:47 2026 +0800"
      },
      "message": "[QDP] Pr1 phase kernel opt (#1386)\n\n* feat(qdp): optimize phase kernel divergence and hoist constant mem computation\n\n* test(qdp): add phase encoding tests and benchmark script\n\n---------\n\nCo-authored-by: Ryan Huang \u003chcr@apache.org\u003e"
    },
    {
      "commit": "b22bbdcdba6d0b19bc4f56b23107309b0bf41710",
      "tree": "9d688c079e5283003455b678a364899445180e13",
      "parents": [
        "472061900967c7ab2f2b1f44ed70059d904623a2"
      ],
      "author": {
        "name": "botsz",
        "email": "22925483+botszhuang@users.noreply.github.com",
        "time": "Wed Jun 10 02:17:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 02:17:38 2026 +0800"
      },
      "message": "perf(qdp): inline norm calculation in phase kernel loop for 5% speedup (#1380)\n\n* perf(qdp): inline norm calculation in phase kernel loop for 5% speedup\n\n* Potential fix for pull request finding\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* fix: remove trailing whitespace in phase.cu\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "472061900967c7ab2f2b1f44ed70059d904623a2",
      "tree": "decedddae00f0ab75c93dac6f2db07916c463600",
      "parents": [
        "aaf3f6f7efc3ff0db6302550c118707deddd89d8"
      ],
      "author": {
        "name": "Trevor Grant",
        "email": "trevor.d.grant@gmail.com",
        "time": "Tue Jun 09 08:17:56 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 08:17:56 2026 -0500"
      },
      "message": "Change Trevor Grant\u0027s status to Emeritus PMC\n\nUpdated Trevor Grant\u0027s status to Emeritus PMC."
    },
    {
      "commit": "aaf3f6f7efc3ff0db6302550c118707deddd89d8",
      "tree": "448f22d6979c38c2972fbd590c973d9511de1d75",
      "parents": [
        "d9155fae9877554f9213c9618125f0dcca649fc4"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "viiccwen@gmail.com",
        "time": "Sun Jun 07 19:06:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 07 19:06:54 2026 +0800"
      },
      "message": "docs: remove obsolete ADR tracking files (#1384)"
    },
    {
      "commit": "d9155fae9877554f9213c9618125f0dcca649fc4",
      "tree": "580e9fcdc2fccc327d969df3592415054f91167c",
      "parents": [
        "14844084d5d02da0dd550a8b79afb4a8180ec6d9"
      ],
      "author": {
        "name": "ChenChen Lai",
        "email": "72776271+0lai0@users.noreply.github.com",
        "time": "Sat Jun 06 15:11:10 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 14:11:10 2026 +0800"
      },
      "message": "refactor(qdp-core): generic DataReader\u003cT\u003e with FloatElem (#1343)\n\n* refactor(qdp-core): generic DataReader\u003cT\u003e with FloatElem\n\n* add test"
    },
    {
      "commit": "14844084d5d02da0dd550a8b79afb4a8180ec6d9",
      "tree": "17cacbe1143a81c03d71ebcf23b548ebf4df40ea",
      "parents": [
        "9b5e312e67d5356dfec281417f8dbdff94610b12"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jun 06 14:10:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 14:10:36 2026 +0800"
      },
      "message": "chore(deps-dev): bump pyarrow from 22.0.0 to 23.0.1 in /qdp/qdp-python (#1378)\n\nBumps [pyarrow](https://github.com/apache/arrow) from 22.0.0 to 23.0.1.\n- [Release notes](https://github.com/apache/arrow/releases)\n- [Commits](https://github.com/apache/arrow/compare/apache-arrow-22.0.0...apache-arrow-23.0.1)\n\n---\nupdated-dependencies:\n- dependency-name: pyarrow\n  dependency-version: 23.0.1\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "9b5e312e67d5356dfec281417f8dbdff94610b12",
      "tree": "d7456be8098d1545120bae51e0f7662bdd8b3f85",
      "parents": [
        "38916d32aacf9039e236578059aa6dadd3e2bfde"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Sat Jun 06 14:10:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 14:10:17 2026 +0800"
      },
      "message": "ci(wheel-build): tighten and speed up wheel build workflow (#1376)\n\n* ci(wheel-build): tighten and speed up wheel build workflow\n\n- Add paths filters so wheel builds only run when qumat/qdp or\n  packaging files change (website/docs-only PRs skip the CUDA build)\n- Add concurrency group to cancel superseded PR runs\n- Collapse the 3-version matrix into a single maturin invocation so\n  the CUDA toolkit and gcc-toolset are installed once instead of 3x\n- Remove the silent QDP_NO_CUDA fallback: a green wheel build now\n  always means real CUDA kernels were compiled (inspection of recent\n  run logs showed the fallback path has never legitimately fired)\n- Validate artifacts before upload: twine check for all dists, plus\n  import smoke tests (qumat, and each qumat-qdp wheel in a matching\n  per-version venv asserting the Rust extension loads)\n- Define the CUDA version once at the top of the build script\n\n* ci(wheel-build): derive CUDA package version, cover packaged root files in paths filter\n\n- Derive CUDA_PKG_VER from CUDA_VER so a future CUDA bump cannot\n  leave the two out of sync\n- Add README.md and LICENSE to the paths filters: both are packaged\n  into the qumat sdist/wheel, so changes to them should run the\n  build and twine check\n\n* ci(wheel-build): provision smoke-test Pythons via setup-python, trim comments\n\nInstall Python 3.10-3.12 with setup-python so the smoke-test venvs use\ndeterministic, cached interpreters instead of uv downloading toolchains\nat runtime (addresses review feedback)."
    },
    {
      "commit": "38916d32aacf9039e236578059aa6dadd3e2bfde",
      "tree": "1cb2a75bf798bcf4fd284562e264c10377fdbfbe",
      "parents": [
        "d64a9f3878480923eff4d7e6366d09a55f31a60d"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Sat Jun 06 00:28:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 00:28:34 2026 +0800"
      },
      "message": "fix(website): serve author avatar as local asset instead of GitHub hotlink (#1377)\n\nASF infra does not allow hotlinking external images, so the GitHub\navatar URL fails to load on the published site. Download the avatar\ninto website/static/img/authors/ and reference it locally."
    },
    {
      "commit": "d64a9f3878480923eff4d7e6366d09a55f31a60d",
      "tree": "86daa88d9759796d92a7d8982ab49a898fb2d3e4",
      "parents": [
        "cf043a2535e04a369baa7730e873bf2e659375aa"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Fri Jun 05 23:33:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 23:33:03 2026 +0800"
      },
      "message": "fix(website): resolve npm audit vulnerabilities and upgrade Docusaurus to 3.10.1 (#1375)\n\n* fix(website): resolve npm audit vulnerabilities and upgrade Docusaurus to 3.10.1\n\n- Add npm overrides for serialize-javascript (\u003e\u003d7.0.5, fixes GHSA-5c6j-r48x-rmvq\n  RCE and GHSA-qj8w-gfj5-8c6v DoS) and uuid under sockjs (\u003e\u003d11.1.1, fixes\n  GHSA-w5hq-g745-h8pq), clearing all 22 audit findings\n- Upgrade @docusaurus/* 3.9.2 -\u003e 3.10.1\n- Add @docusaurus/faster, required by future.v4 in Docusaurus 3.10\n\n* fix(website): pin @docusaurus/faster to exact version like other @docusaurus packages"
    },
    {
      "commit": "cf043a2535e04a369baa7730e873bf2e659375aa",
      "tree": "4ace508ce5a9c4543ff30d6fdbf9b3ae31e4442f",
      "parents": [
        "25ce84855db68c9dd1773197214305359bd888fa"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Thu Jun 04 12:34:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 12:34:28 2026 +0800"
      },
      "message": "fix(qdp): add dtype support to QdpBenchmark; default f64 (#1366)\n\nThe Rust binding run_throughput_pipeline_py already accepts a dtype\nparameter (defaulting to \u0027f64\u0027) but QdpBenchmark in api.py never\nexposed it — the field was missing from __init__ and there was no\nbuilder method. A stale attempt at passing dtype\u003d\u0027f32\u0027 unconditionally\ncaused a TypeError on any QdpBenchmark call against a built extension\nthat predated the dtype parameter.\n\nChanges:\n- Add _dtype\u003d\u0027f64\u0027 field to QdpBenchmark.__init__\n- Add .dtype(\u0027f32\u0027|\u0027f64\u0027) builder method with validation and docstring\n- Pass self._dtype to both Rust call sites (_run_throughput_rust and\n  _run_latency_rust); f32 activates the zero-copy batch path where the\n  encoding supports it, falling back to f64 inside Rust otherwise"
    },
    {
      "commit": "25ce84855db68c9dd1773197214305359bd888fa",
      "tree": "ed43712458a13242e7225843640e9a38fc33ddc4",
      "parents": [
        "2174a66a55342033d7c386721a173cd438b0754a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jun 04 12:33:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 12:33:41 2026 +0800"
      },
      "message": "chore(deps): bump qs and express in /website (#1333)\n\nBumps [qs](https://github.com/ljharb/qs) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.\n\nUpdates `qs` from 6.14.2 to 6.15.2\n- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/ljharb/qs/compare/v6.14.2...v6.15.2)\n\nUpdates `express` from 4.22.1 to 4.22.2\n- [Release notes](https://github.com/expressjs/express/releases)\n- [Changelog](https://github.com/expressjs/express/blob/v4.22.2/History.md)\n- [Commits](https://github.com/expressjs/express/compare/v4.22.1...v4.22.2)\n\n---\nupdated-dependencies:\n- dependency-name: qs\n  dependency-version: 6.15.2\n  dependency-type: indirect\n- dependency-name: express\n  dependency-version: 4.22.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "2174a66a55342033d7c386721a173cd438b0754a",
      "tree": "25f98f4edf95e9e06b8062acc62228e2cb8b20b4",
      "parents": [
        "60654708dda0501e6ffa62f0b00145aba159dc16"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jun 04 12:33:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 12:33:29 2026 +0800"
      },
      "message": "chore(deps): bump webpack-dev-server from 5.2.3 to 5.2.4 in /website (#1328)\n\nBumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 5.2.3 to 5.2.4.\n- [Release notes](https://github.com/webpack/webpack-dev-server/releases)\n- [Changelog](https://github.com/webpack/webpack-dev-server/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/webpack/webpack-dev-server/compare/v5.2.3...v5.2.4)\n\n---\nupdated-dependencies:\n- dependency-name: webpack-dev-server\n  dependency-version: 5.2.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "60654708dda0501e6ffa62f0b00145aba159dc16",
      "tree": "4e5264585900c154f2d97106555bef5570292dd2",
      "parents": [
        "1b60a06ae351a36ab1768daa3e33cb7162843929"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jun 04 12:33:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 12:33:10 2026 +0800"
      },
      "message": "chore(deps): bump idna from 3.11 to 3.15 (#1327)\n\nBumps [idna](https://github.com/kjd/idna) from 3.11 to 3.15.\n- [Release notes](https://github.com/kjd/idna/releases)\n- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.md)\n- [Commits](https://github.com/kjd/idna/compare/v3.11...v3.15)\n\n---\nupdated-dependencies:\n- dependency-name: idna\n  dependency-version: \u00273.15\u0027\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1b60a06ae351a36ab1768daa3e33cb7162843929",
      "tree": "0016bf2f5b99f3f96eeaff43df302b6c9317b3b0",
      "parents": [
        "b4603c10c738fda3a619132509b2d33af66ecd0b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jun 04 12:32:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 12:32:47 2026 +0800"
      },
      "message": "chore(deps): bump idna from 3.11 to 3.15 in /qdp/qdp-python (#1326)\n\nBumps [idna](https://github.com/kjd/idna) from 3.11 to 3.15.\n- [Release notes](https://github.com/kjd/idna/releases)\n- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.md)\n- [Commits](https://github.com/kjd/idna/compare/v3.11...v3.15)\n\n---\nupdated-dependencies:\n- dependency-name: idna\n  dependency-version: \u00273.15\u0027\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b4603c10c738fda3a619132509b2d33af66ecd0b",
      "tree": "a708918320c97b5eff47abc1ea672ac3e3affc11",
      "parents": [
        "83bb94e112df8d979c76c9c6a884e48e1da3fee7"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Thu Jun 04 12:32:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 12:32:12 2026 +0800"
      },
      "message": "docs: add qumat 0.6.0 release blog post with verified benchmarks (#1364)\n\n- Blog post covering QDP encoding parity, AMD Triton backend, new\n  benchmarks (SVHN IQP, data-to-state latency, DataLoader throughput),\n  and docs overhaul\n- Benchmark charts generated from fresh runs on RTX 3090 Ti (GPU 0/1)\n- Add ryankert to blog authors.yml"
    },
    {
      "commit": "83bb94e112df8d979c76c9c6a884e48e1da3fee7",
      "tree": "bcc8e11a938f9b1f1dcb5547f2a7a0af2dd51749",
      "parents": [
        "599a2616f7e1902468b5ef04c41abe955e564f21"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Wed Jun 03 23:20:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 23:20:46 2026 +0800"
      },
      "message": "fix(examples): correct backend_name in quantum_teleportation.py (#1367)\n\n\u0027qiskit_simulator\u0027 is not a registered Qumat backend module; the valid\nname is \u0027qiskit\u0027 (matches simple_example.py and QuMat.__init__ docs).\nFixes #1317."
    },
    {
      "commit": "599a2616f7e1902468b5ef04c41abe955e564f21",
      "tree": "b200269e7727014e75057ecf7db6968d257d482e",
      "parents": [
        "165c959f585b4c60ceb8b7b77698b0612c5cc225"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "viiccwen@gmail.com",
        "time": "Wed Jun 03 09:47:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 09:47:35 2026 +0800"
      },
      "message": "docs: refresh QDP Python API docstrings (#1335)"
    },
    {
      "commit": "165c959f585b4c60ceb8b7b77698b0612c5cc225",
      "tree": "838c1fb1ded1788aaec05dba95e9c8134d59d79d",
      "parents": [
        "51104cbcee2d7ae22e8d287adc1deda3dc41c263"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Mon Jun 01 17:26:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 17:26:02 2026 +0800"
      },
      "message": "ci: pin all GitHub Actions to commit hashes per ASF policy (#1369)\n\nResolves #1368. All third-party actions are pinned to their full 40-char\ncommit SHA (with version tag preserved as a comment) and verified against\nthe Apache infrastructure-actions allowlist."
    },
    {
      "commit": "51104cbcee2d7ae22e8d287adc1deda3dc41c263",
      "tree": "a2877fc2765e0374de0fce1a16ccbd3b2fab8d38",
      "parents": [
        "ab5fb719bad50935848b01bd11c3f46f20cc70ed"
      ],
      "author": {
        "name": "KUAN-HAO HUANG",
        "email": "101171023+rich7420@users.noreply.github.com",
        "time": "Mon Jun 01 16:18:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 16:18:29 2026 +0800"
      },
      "message": "feat(qdp): hoist encode_from_gpu_ptr_f32 onto QuantumEncoder trait (#1310)"
    },
    {
      "commit": "ab5fb719bad50935848b01bd11c3f46f20cc70ed",
      "tree": "57a384a9442da260af2656dcc6e237b95e78b557",
      "parents": [
        "2cc80072d5fea9864c03b6595136a5e4eeda0a83"
      ],
      "author": {
        "name": "Andrew Musselman",
        "email": "akm@apache.org",
        "time": "Mon Jun 01 00:05:48 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 15:05:48 2026 +0800"
      },
      "message": "Add Trusted Publishing release workflow for qumat and qumat-qdp (#1363)"
    },
    {
      "commit": "2cc80072d5fea9864c03b6595136a5e4eeda0a83",
      "tree": "c239acef08055a7eaa319a527974c6ba86fd3c5b",
      "parents": [
        "8f58acc2767c9a61e903b00f1e50425c453d9d22"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "viiccwen@gmail.com",
        "time": "Mon Jun 01 12:51:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 12:51:15 2026 +0800"
      },
      "message": "docs: add missing QDP Python API docstrings (#1334)"
    },
    {
      "commit": "8f58acc2767c9a61e903b00f1e50425c453d9d22",
      "tree": "1b0d04258edda5b05a1369210d8cec2a579941a8",
      "parents": [
        "ac30a8c954f692f0e57e53cef185497b68b61217"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Mon Jun 01 12:50:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 12:50:35 2026 +0800"
      },
      "message": "chore: bump versions to 0.7.0.dev0 / 0.3.0-dev (#1362)\n\nPost-release version bump on main following the 0.6.0 / 0.2.0 release.\nPEP 440 .dev0 / Cargo -dev prerelease so the next 0.7.0rcN tags sort\nabove main while keeping the next release line clear."
    },
    {
      "commit": "ac30a8c954f692f0e57e53cef185497b68b61217",
      "tree": "0bbf7c7a7482c8c428d5bd7dfe1e30c18db5e6bb",
      "parents": [
        "bd965e1df0d5cc7457f279fc9f7f608630521522"
      ],
      "author": {
        "name": "KUAN-HAO HUANG",
        "email": "101171023+rich7420@users.noreply.github.com",
        "time": "Mon May 18 19:49:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 19:49:33 2026 +0800"
      },
      "message": "fix(qdp): guard batch size multiplication against overflow (#1324)\n\n`Preprocessor::validate_batch` and `AmplitudeEncoder::encode_batch_f32`\ncomputed `num_samples * sample_size` without overflow checks, while the\nanalogous angle encoder paths already use `checked_mul`. On 64-bit hosts\nthe product can wrap and let an undersized buffer pass validation,\nleading to out-of-bounds reads in the encoder.\n\nMirror the angle.rs pattern: use `checked_mul` and surface an\n`InvalidInput` error on overflow. Add a unit test covering the\noverflow path through the shared preprocessor."
    },
    {
      "commit": "bd965e1df0d5cc7457f279fc9f7f608630521522",
      "tree": "b7cd769566a879c0d0640494a8ba24906ebbf866",
      "parents": [
        "54b0f23633b5ffcd51479ec272a305b099c37d2e"
      ],
      "author": {
        "name": "Andrew Musselman",
        "email": "akm@apache.org",
        "time": "Mon May 18 04:49:18 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 19:49:18 2026 +0800"
      },
      "message": "fix(build): gate test_rust on nvcc presence, not just nvidia-smi (#1322)"
    },
    {
      "commit": "54b0f23633b5ffcd51479ec272a305b099c37d2e",
      "tree": "9af18cf308d730082ebddbbacf245c3e88a0319f",
      "parents": [
        "6a1ea6a315054975e0551135f4bf88de4e3e0f9a"
      ],
      "author": {
        "name": "Andrew Musselman",
        "email": "akm@apache.org",
        "time": "Mon May 18 04:48:43 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 19:48:43 2026 +0800"
      },
      "message": "fix(qdp): fall back to CPU when GPU arch not in PyTorch\u0027s compiled list (#1323)"
    },
    {
      "commit": "6a1ea6a315054975e0551135f4bf88de4e3e0f9a",
      "tree": "6f357f9a922396611d6217e2a646bf28bd2bdb59",
      "parents": [
        "d23be9ab8030e43e726a8bf6716ad3603453b6e8"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "viiccwen@gmail.com",
        "time": "Thu May 14 10:33:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 10:33:03 2026 +0800"
      },
      "message": "fix(qdp): reject invalid non-amplitude benchmark combos (#1303)\n\n* fix(qdp): reject invalid non-amplitude benchmark combos\n\n* test(qdp): cover non-happy benchmark CLI cases"
    },
    {
      "commit": "d23be9ab8030e43e726a8bf6716ad3603453b6e8",
      "tree": "7582c1636cc402cfa334ab39dbf22a29814bd13a",
      "parents": [
        "436dd1e6b5e6ffcbeebc1764988d368ef7573ecd"
      ],
      "author": {
        "name": "Tim Hsiung",
        "email": "timhsiung@microsoft.com",
        "time": "Thu May 14 10:31:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 10:31:02 2026 +0800"
      },
      "message": "docs: fix stale links and Docusaurus relative-link rendering (#1305)\n\nThe How to Contribute pages referenced three stale targets on\nmahout.apache.org that all return 404, and additional relative-path\nlinks in the source docs were silently rendering as 404 on the built\nsite:\n\n- guide for making website updates -\u003e documentation/developers/how-to-update-the-website.html\n- wide variety of books and slides -\u003e general/books-tutorials-and-talks.html\n- Handling GitHub PRs              -\u003e documentation/developers/github\n\nRoot cause for the relative-link rendering bug: docusaurus.config.ts\ndoes not set trailingSlash, so Docusaurus serves URLs with a trailing\nslash, and a relative href `../community/mailing-lists` from\n`/docs/next/about/how-to-contribute/` resolves in the browser to\n`/docs/next/about/community/mailing-lists` (404). The proper\nDocusaurus fix is markdown links with the .md extension so Docusaurus\nstatically resolves them to the correct version-aware URL, but\nsync-docs.js was stripping the .md extension before Docusaurus saw\nthe file, defeating that resolution.\n\nFixes:\n\n- website/scripts/sync-docs.js: stop stripping .md from internal links\n  in transformLinks(); let Docusaurus handle resolution.\n- docs/about/how-to-contribute.md: switch the three `../community/...`\n  relative links to use a .md extension (lines 15, 85, 144). Drop the\n  `guide for making website updates` sentence and its [2] reference;\n  website/README.md is not published to mahout.apache.org so there is\n  no equivalent page.\n- docs/qumat/index.md, docs/qumat/getting-started.md: switch\n  `../qdp`, `../learning/...` relative links to use the .md\n  extension, fixing previously silently-broken links from the same\n  pattern.\n- website/versioned_docs/version-0.4/about/how-to-contribute.md:\n  replace stale http://people.apache.org/~hossman/#private_q (404)\n  with https://www.apache.org/theapacheway/ (matches next/v0.5).\n  Drop the `[2]` guide-for-making-website-updates sentence.\n- website/versioned_docs/version-0.5/about/how-to-contribute.md:\n  drop the `[2]` guide-for-making-website-updates sentence.\n- Earlier: rewire `Handling GitHub PRs` to the\n  pr-policy-and-review-guidelines doc, drop the `books and slides`\n  sentence (no equivalent page exists), and remove\n  docs/about/how-to-contribute.md from lychee.toml exclude_path.\n\nVerified locally:\n\n- `cd website \u0026\u0026 npm run build`: no broken-link warnings on the\n  previously broken paths; rendered hrefs in the built `next` page\n  resolve to `/docs/next/community/mailing-lists` and\n  `/docs/next/community/pr-policy-and-review-guidelines`.\n- `lychee 0.24.2 --config lychee.toml .`: 95 -\u003e 94 total errors\n  (removed v0.4 hossman 404; no new failures).\n- `pre-commit run --files \u003cchanged\u003e` with environment-specific\n  hooks (clippy/fmt/ty) skipped: end-of-file-fixer and\n  trailing-whitespace pass.\n\nCloses #1301\n\nGenerated-by: GitHub Copilot CLI\n\nCo-authored-by: Copilot \u003c223556219+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "436dd1e6b5e6ffcbeebc1764988d368ef7573ecd",
      "tree": "1f0cb5c32794a45898a5cff07d46094c3db0428a",
      "parents": [
        "5adc5c8318d814c0604f0f717a5facb27e6a2735"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu May 14 10:30:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 10:30:23 2026 +0800"
      },
      "message": "chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /qdp/qdp-python (#1309)\n\nBumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.3 to 2.7.0.\n- [Release notes](https://github.com/urllib3/urllib3/releases)\n- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)\n- [Commits](https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0)\n\n---\nupdated-dependencies:\n- dependency-name: urllib3\n  dependency-version: 2.7.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5adc5c8318d814c0604f0f717a5facb27e6a2735",
      "tree": "711076ffd718e46bdd251e750495cc7933eb745e",
      "parents": [
        "afbaf00e6729256318a36f3a601c86cc1806a654"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu May 14 10:30:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 10:30:04 2026 +0800"
      },
      "message": "chore(deps): bump urllib3 from 2.6.3 to 2.7.0 (#1316)\n\nBumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.3 to 2.7.0.\n- [Release notes](https://github.com/urllib3/urllib3/releases)\n- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)\n- [Commits](https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0)\n\n---\nupdated-dependencies:\n- dependency-name: urllib3\n  dependency-version: 2.7.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "afbaf00e6729256318a36f3a601c86cc1806a654",
      "tree": "f4e2cce3b7ebfe40c08e9323edaf7ad93c28c6c8",
      "parents": [
        "e59b90f1bd2de74cd043da56042fbc5509289771"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Thu May 14 02:01:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 02:01:35 2026 +0800"
      },
      "message": "test(qdp_python): match actual ValueError from QuantumDataLoader.backend() (#1314)\n\n`test_invalid_backend_raises` was asserting an older error message\nformat (\u0027rust\u0027, \u0027pytorch\u0027, or \u0027auto\u0027), but `QuantumDataLoader.backend()`\nnow raises \u0027backend must be one of [\"auto\", \"pytorch\", \"rust\"], got\n\"invalid\"\u0027 (qdp/qdp-python/qumat_qdp/loader.py:355). Update the regex\nto match the current sorted-list format.\n\nDiscovered while running the testing/ suite against the qumat-qdp\n0.2.0rc1 wheel installed from TestPyPI."
    },
    {
      "commit": "e59b90f1bd2de74cd043da56042fbc5509289771",
      "tree": "d8511275f58f5a12adab75b657dd4b24d2f47b2b",
      "parents": [
        "d9ad79801ba8f09cf3e0eec60a38b6718a067044"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Thu May 14 01:13:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 01:13:07 2026 +0800"
      },
      "message": "fix(qdp): drop invalid PyPI classifiers from qumat-qdp (#1313)\n\n\u0027Framework :: PyTorch\u0027 and \u0027Framework :: TensorFlow\u0027 are not in PyPI\u0027s\ntrove of valid classifiers, so PyPI/TestPyPI rejects qumat-qdp uploads\nwith HTTP 400. Remove them from qdp/qdp-python/pyproject.toml.\n\nDiscovered while uploading 0.6.0rc1 release candidates to TestPyPI."
    },
    {
      "commit": "d9ad79801ba8f09cf3e0eec60a38b6718a067044",
      "tree": "7501f8f1a9a480937faf8c451b3f75f42a3e01d6",
      "parents": [
        "3aff2794635a2d1ba109b9b3c2ca05ece3d1ba26"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Wed May 13 22:12:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 22:12:23 2026 +0800"
      },
      "message": "feat: Add new PGP public key for Ryan Huang to KEYS file (#1312)"
    },
    {
      "commit": "3aff2794635a2d1ba109b9b3c2ca05ece3d1ba26",
      "tree": "0cc308742dfa58c5365ded145c5f14ee97e4d0a7",
      "parents": [
        "ffae662ec51c8b445d6cdc3566c1a98eda1d6196"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "viiccwen@gmail.com",
        "time": "Tue May 12 12:40:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 12:40:13 2026 +0800"
      },
      "message": "[Feature] Make QDP CUDA kernel build targets configurable and future-compatible (#1283)\n\n* Make QDP CUDA kernel build targets configurable\n\n* docs(qdp): document CUDA architecture target override\n\n* Revert \"docs(qdp): document CUDA architecture target override\"\n\nThis reverts commit 9062a4bcf5fa38698bb15756d02a9346cb353f77.\n\n* docs(qdp): add supported GPU backends section"
    },
    {
      "commit": "ffae662ec51c8b445d6cdc3566c1a98eda1d6196",
      "tree": "c75bea47674962f0e8934d92489573f665c21856",
      "parents": [
        "6cfbf10ecb023ddb870c5fe80623b0893442f6ac"
      ],
      "author": {
        "name": "KUAN-HAO HUANG",
        "email": "101171023+rich7420@users.noreply.github.com",
        "time": "Mon May 11 23:52:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 23:52:45 2026 +0800"
      },
      "message": "[Feature][QDP] F32 support for angle/basis encoders, fidelity metrics and pipeline improvements (#1275)\n\n* [Feature][QDP] F32 support for angle/basis encoders, fidelity metrics, and pipeline improvements\n\n* update and improve\n\n* correctness + completeness for f32 zero-copy paths\n\n* update and improve\n\n* update and improve\n\n* refactor(qdp): clean up loader and gate metrics module as test-only\n\nCleanup pass on review feedback for the f32 angle/basis PR:\n\n- gpu/mod.rs: mark `metrics` module and its re-exports `#[doc(hidden)]`\n  to signal that fidelity / trace-distance helpers are test-only and\n  not part of the supported runtime API.\n- loader.py: lift inline `import os/sys/warnings` to module scope; add\n  named constants for backend literals (`_BACKEND_RUST/PYTORCH/AUTO`)\n  and supported file extensions (`_STREAMING_FILE_EXTS`,\n  `_SUPPORTED_FILE_EXTS`); extract `_path_extension` and\n  `_platform_hint` helpers to remove duplicated string parsing and\n  platform-message construction; cache the IterableDataset subclass\n  at module scope via `_build_torch_dataset` so `as_torch_dataset()`\n  no longer redefines the class on every call.\n\n* test(qdp): update compute_optimal_prefetch_depth tests for enum signature\n\nTests still passed args using the pre-#1276 string/bool signature.\nUpdate them to the post-rebase (Encoding, Precision) signature.\n\n* refactor(qdp): converge CUDA-tensor encoding dispatch\n\nThree small cleanups in _encode_from_cuda_tensor:\n\n- Hoist validate_shape(ndim, ...) to the top so the redundant per-branch\n  ndim error arms (one in the f32 path, one in the f64 path with the\n  same message) both collapse into a single unreachable! guard.\n- Hoist the duplicate get_torch_cuda_stream_ptr(data)? call shared by\n  both paths.\n- Merge the six-arm f32 match-of-tuples into a single match block with\n  shared num_samples/sample_size/input_len bindings, dropping ~45 lines\n  of repeated unsafe { ... }.map_err(...)? scaffolding.\n\nNet: -45 LoC. No behavior change; same error messages; clippy clean."
    },
    {
      "commit": "6cfbf10ecb023ddb870c5fe80623b0893442f6ac",
      "tree": "582078177f8319d9b3ad04fc8d2b80f277ac3cdd",
      "parents": [
        "9be560c7742bd2a3ac3ad1bb2e28d3200284e929"
      ],
      "author": {
        "name": "KUAN-HAO HUANG",
        "email": "101171023+rich7420@users.noreply.github.com",
        "time": "Mon May 11 18:24:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 18:24:28 2026 +0800"
      },
      "message": "feat(qdp): Encoding + Dtype enums, static encoder dispatch (#1276)"
    },
    {
      "commit": "9be560c7742bd2a3ac3ad1bb2e28d3200284e929",
      "tree": "51c9debcacd545daa4fa59d99ed0d8ee70690dbf",
      "parents": [
        "4f21c1076f435d381b8a664f1f3055b60fc92e3d"
      ],
      "author": {
        "name": "Tim Hsiung",
        "email": "timhsiung@microsoft.com",
        "time": "Mon May 11 01:12:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 01:12:13 2026 +0800"
      },
      "message": "docs: fix broken blog link to the quantum computing primer (#1306)\n\nThree meeting-minutes blog entries linked to a broken target on\nmahout.apache.org:\n\n  https://mahout.apache.org/quantum-computing-primer  -\u003e  404 Not Found\n\nThe page now lives under /docs/learning/quantum-computing-primer/.\nUpdate all three references:\n\n- docs/blog/2025-01-24-Meeting-Minutes.md\n- docs/blog/2025-02-14-Meeting-Minutes.md\n- docs/blog/2025-03-13-Meeting-Minutes.md\n\nVerified locally with lychee 0.24.2:\n- Before: 3 x 404 on https://mahout.apache.org/quantum-computing-primer\n- After:  0 errors; new target https://mahout.apache.org/docs/learning/quantum-computing-primer/ returns 200.\n\nCloses #1300\n\nCo-authored-by: Copilot \u003c223556219+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "4f21c1076f435d381b8a664f1f3055b60fc92e3d",
      "tree": "e92d2a56e56425d9a720a94695ca57effb30ad34",
      "parents": [
        "ce775fa10c59fbf558f18b539501423906692926"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Mon May 11 01:04:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 01:04:54 2026 +0800"
      },
      "message": "[QDP] Close AMD-vs-CUDA encoder parity: add iqp, iqp-z, phase (#1292)\n\n* [QDP] Close AMD-vs-CUDA encoder parity gap: add iqp, iqp-z, phase\n\nCUDA QdpEngine accepts amplitude, angle, basis, iqp, iqp-z, and phase.\nThe Triton AMD path only implemented the first three, so AMD users hit\na hard error on the IQP- and phase-family encodings (e.g. SVHN-IQP).\n\nThis adds vectorized PyTorch implementations for the missing methods on\nTritonAmdEngine, dispatched through the same ``encode(method\u003d...)``\ncontract:\n\n- ``iqp`` — full ZZ entanglement: phase \u003d Σ x_i·data_i + Σ_{i\u003cj} x_i x_j·data_ij,\n  followed by an n-stage Walsh-Hadamard butterfly and 1/2^n scaling.\n- ``iqp-z`` — Z-only diagonal: same FWT path with no ZZ pairs.\n- ``phase`` — per-qubit product state (1/√2^n)·exp(i·Σ_k phases_k·b_k).\n\nParity tests added against ``qumat_qdp.torch_ref.iqp_encode`` (which is\nalready validated against CUDA upstream) and a local pure-torch phase\nreference. Also added unit-norm structural checks, param-count\nvalidation, float64 precision contract, and a router test that the\npublic ``QdpEngine(backend\u003d\"amd\")`` accepts the new methods.\n\nVerified on AMD Instinct MI300X (ROCm 7.2 / torch 2.9.0+rocm6.4 /\ntriton 3.5.0): full triton_amd test file is 18 passed, 2 skipped\n(NVIDIA CUDA-only references).\n\n* Optimize TritonAmdEngine encoders + Triton @jit phase kernel\n\nAddresses Copilot review on PR #1292 and pushes general kernel-level\noptimization across all six AMD encoders.\n\nPR review responses:\n\n- Drop the unreachable `test_triton_amd_iqp_cuda_reference_optional`\n  (decorator required `torch.version.cuda` while body required\n  `is_triton_amd_available()` → mutually exclusive). Replace with a\n  meaningful float64 IQP precision contract test that actually runs.\n- Qualify README about the CUDA-tensor `phase` limitation: the Python\n  extension\u0027s CUDA-tensor allowlist (`CUDA_ENCODING_METHODS`) does not\n  yet include `phase`, so cuda-resident torch tensors must `.cpu()`\n  first. Tracked as a follow-up.\n- The pair-matrix-rewrite suggestion (per-pair Python loop) is\n  rejected — n² tiny kernel launches lose to one matmul on every\n  modern GPU; the current path matches `torch_ref.iqp_encode` and the\n  CUDA FWT phase kernel. Add a `_IQP_PAIR_MATRIX_MAX_N` guard that\n  *does* fall back to a pair loop past n\u003d20 (where the (2^n × n_pairs)\n  workspace dominates HBM), so the OOM scenario is bounded.\n\nEncoder optimizations (verified on MI300X vs `qumat_qdp.torch_ref`,\nbatch\u003d64, fp32 input):\n\n|        | q\u003d8   | q\u003d12  | q\u003d16  |\n|--------|-------|-------|-------|\n| amplitude | 0.95× | 0.95× | 1.00× |\n| angle     | 1.57× | 1.37× | 1.04× |\n| basis     | 2.18× | 2.10× | 2.14× |\n| iqp(ZZ)   | 1.96× | 1.81× | 1.14× |\n| iqp-z     | 1.35× | 1.32× | 0.91× |\n| **phase** | **5.29×** | **5.39×** | **5.30×** |\n\nWhat changed:\n\n- **Real `@triton.jit` phase kernel** (fp32 / n ≤ 32). One HIP kernel\n  fuses bit-pattern materialization + θ(b) accumulation + cos/sin +\n  1/√2^n scaling + complex-pack, writing the output buffer interleaved\n  via `view_as_real`. The PyTorch fallback path (used at fp64 or n \u003e 32)\n  was making 5 intermediate (B, S) allocations; the kernel makes one.\n- **Per-engine bits-table cache** (`_bits_cache`): the\n  `((idx \u003e\u003e arange(n)) \u0026 1).to(real)` table was being rebuilt on every\n  call by `angle`/`iqp`/`phase`. Now cached per (n, dtype). At n\u003d16\n  that\u0027s a ~4 MiB int64 + ~4 MiB real allocation saved per call.\n- **Pair-index cache** (`_pair_cache`): `torch.combinations(arange(n))`\n  cached per n.\n- **`encode_amplitude`**: replaced\n  `torch.complex(amp, zeros_like(amp)).to(complex_dtype)` with a single\n  `amp.to(complex_dtype)` (writes (real, 0) interleaved in one kernel\n  vs. zeros_like + complex_pack + cast \u003d three).\n- **`encode_angle`**: collapsed the n-step Python product loop (which\n  reallocated a (B, S) tensor per qubit) into a single\n  `where(bits, sin, cos).prod(dim\u003d2)` reduction.\n- **`encode_iqp`**: in-place n-stage Walsh-Hadamard butterfly using a\n  single `(B, S/2)` scratch buffer. The previous\n  `cat([lo+hi, lo-hi], dim\u003d2)` allocated a fresh (B, S) tensor every\n  stage; now `sub(out\u003dscratch); a.add_(b); b.copy_(scratch)` reuses one\n  workspace across all n stages. Also packs `f` via `torch.complex(cos,\n  sin)` in one shot rather than writing to strided `.real`/`.imag`.\n- **`_to_2d` fast path**: skip `as_tensor` + `.contiguous()` work when\n  the caller already supplies a 2-D, contiguous, on-device,\n  correctly-typed torch tensor (the common case for benchmarks).\n\nTest parity: 19 passed, 1 skipped (`test_triton_amd_cuda_reference_optional`\nis the pre-existing amplitude cross-ref; same skipif latency as the\nnew iqp test we just deleted — out of scope here).\n\nNumerical parity: all encoders still match `torch_ref` /\n`_torch_phase_ref` within float-rounding tolerance; the IQP fp64\ncontract test confirms `atol\u003d1e-12`."
    },
    {
      "commit": "ce775fa10c59fbf558f18b539501423906692926",
      "tree": "7719d25212ef670f6b115655b80763b4915791e0",
      "parents": [
        "496c1856afac70c19199a08f9deb45c61434841b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon May 11 01:00:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 01:00:13 2026 +0800"
      },
      "message": "chore(deps): bump fast-uri from 3.1.0 to 3.1.2 in /website (#1302)\n\nBumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.0 to 3.1.2.\n- [Release notes](https://github.com/fastify/fast-uri/releases)\n- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.2)\n\n---\nupdated-dependencies:\n- dependency-name: fast-uri\n  dependency-version: 3.1.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "496c1856afac70c19199a08f9deb45c61434841b",
      "tree": "b90e902331484bae875ce5aa81e7401abd9c2146",
      "parents": [
        "52018d44fca9e40ee46682314894561979107839"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon May 11 00:59:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 00:59:57 2026 +0800"
      },
      "message": "chore(deps): bump @babel/plugin-transform-modules-systemjs in /website (#1304)\n\nBumps [@babel/plugin-transform-modules-systemjs](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs) from 7.28.5 to 7.29.4.\n- [Release notes](https://github.com/babel/babel/releases)\n- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/babel/babel/commits/v7.29.4/packages/babel-plugin-transform-modules-systemjs)\n\n---\nupdated-dependencies:\n- dependency-name: \"@babel/plugin-transform-modules-systemjs\"\n  dependency-version: 7.29.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "52018d44fca9e40ee46682314894561979107839",
      "tree": "354575762014b35a348e02e23416a53ad44ea7ea",
      "parents": [
        "33bee580ef9b3a0a994d795bfa3eb5a3ced50319"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Sun May 10 04:06:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 04:06:34 2026 +0800"
      },
      "message": "[merge it when release] Add pypi badge (#1176)\n\n* Add PyPI badges to README.md\n\n* Remove duplicate license badge\n\nRemoved duplicate license badge from README.\n\n* Update README.md"
    },
    {
      "commit": "33bee580ef9b3a0a994d795bfa3eb5a3ced50319",
      "tree": "dd8ebf5e5dac1b50476f5261859f0917714d217d",
      "parents": [
        "c45cc240823036910baf42e7fde051b39bf27fac"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "viiccwen@gmail.com",
        "time": "Thu May 07 18:17:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 18:17:51 2026 +0800"
      },
      "message": "feat: add IQP / IQP-Z latency and throughput benchmark (#1257)\n\n* feat: add iqp/iqp-z benchmark functionality\n\n* test: add unit tests to cover the changes\n\n* docs: update README.md and API.md\n\n* docs: clarify benchmark input sizes"
    },
    {
      "commit": "c45cc240823036910baf42e7fde051b39bf27fac",
      "tree": "2ae22ae6e438cc9990b9548f4478b0a6e3cd50c3",
      "parents": [
        "245aad37237f81e224a4883cfd202734a0959aa8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed May 06 02:26:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 02:26:12 2026 +0800"
      },
      "message": "chore(deps): bump postcss from 8.5.6 to 8.5.12 in /website (#1293)\n\nBumps [postcss](https://github.com/postcss/postcss) from 8.5.6 to 8.5.12.\n- [Release notes](https://github.com/postcss/postcss/releases)\n- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/postcss/postcss/compare/8.5.6...8.5.12)\n\n---\nupdated-dependencies:\n- dependency-name: postcss\n  dependency-version: 8.5.12\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "245aad37237f81e224a4883cfd202734a0959aa8",
      "tree": "80572a3d4aaedfafce1c7438fad846532cfeded8",
      "parents": [
        "42ec67a9efa752a691f68cb7a89558a1179a7f7d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 29 12:26:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 12:26:13 2026 +0800"
      },
      "message": "chore(deps): bump rustls-webpki from 0.103.10 to 0.103.13 in /qdp (#1288)\n\nBumps [rustls-webpki](https://github.com/rustls/webpki) from 0.103.10 to 0.103.13.\n- [Release notes](https://github.com/rustls/webpki/releases)\n- [Commits](https://github.com/rustls/webpki/compare/v/0.103.10...v/0.103.13)\n\n---\nupdated-dependencies:\n- dependency-name: rustls-webpki\n  dependency-version: 0.103.13\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "42ec67a9efa752a691f68cb7a89558a1179a7f7d",
      "tree": "ec719631364e2bf0353f3e8dfdbb80e7f2d86cc0",
      "parents": [
        "696f902ccae549c7c16dbfe6c639f96a9750e464"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "viiccwen@gmail.com",
        "time": "Mon Apr 27 19:55:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 19:55:56 2026 +0800"
      },
      "message": "[Feature] Add batch float32 zero-copy angle encoding in qdp-python bindings (#1278)\n\n* feat(qdp-python): add batch float32 angle CUDA binding\n\n* refactor(qdp-python): simplify CUDA angle validation docs\n\n* refactor(qdp-python): simplify CUDA dtype validation\n\n* docs(qdp-python): clarify CUDA encoding method notes"
    },
    {
      "commit": "696f902ccae549c7c16dbfe6c639f96a9750e464",
      "tree": "73bcb82a043142f2e43a94d86c913b60e47a7ee7",
      "parents": [
        "6cf5126a785cffa9702e095964fa253a1490508b"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Sun Apr 26 12:40:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 26 12:40:34 2026 +0800"
      },
      "message": "[QDP] Add Mahout-AMD and PennyLane-AMDGPU frameworks to throughput benchmark (#1291)\n\n* [QDP] Add Mahout-AMD and PennyLane-AMDGPU frameworks to throughput benchmark\n\nExtends the canonical multi-framework throughput benchmark\n(benchmark_throughput.py: Mahout vs PennyLane vs Qiskit) with two new\nframeworks so users on AMD ROCm hosts can benchmark on equal footing:\n\n* mahout-amd       — QDP AMD path via QdpEngine(backend\u003d\"amd\")\n                     (TritonAmdEngine on ROCm). Drives the same\n                     prefetched_batches loop as the existing \u0027mahout\u0027\n                     path. Auto-skips on hosts without is_triton_amd_available().\n\n* pennylane-amdgpu — PennyLane lightning.amdgpu, the official ROCm\n                     simulator (Kokkos+HIP backend). Per-sample loop\n                     because the native sim doesn\u0027t broadcast over\n                     batch dimension for AmplitudeEmbedding.\n\nBoth new framework names are added to FRAMEWORK_CHOICES and dispatched\nin main(). Speedup reporting picks whichever Mahout backend ran.\n\nLoader caveat: lightning.amdgpu\u0027s bundled liblightning_kokkos_catalyst.so\nNEEDs libhsa-runtime64.so.1 / libamdhip64.so.7. Ubuntu 24.04\u0027s\n/lib/x86_64-linux-gnu/libhsa-runtime64.so.1 is from ROCm 5.7 and shadows\nnewer symbols (e.g. hsa_amd_memory_get_preferred_copy_engine), making\nthe plugin fail at device init. Resolved by RTLD_GLOBAL-pre-loading the\nmatching ROCm 7.x libs at module top, gated on ROCM_LIB_DIR env var or\nMAHOUT_PRELOAD_ROCM\u003d1. The preload MUST happen before torch / pennylane\nimport — doing it after deadlocks because torch\u0027s HIP runtime has\nalready mapped the older libhsa.\n\nVerified on AMD Instinct MI300X (ROCm 7.2 / torch 2.9.0+rocm6.4 /\npennylane 0.44.1, pennylane-lightning-amdgpu 0.44.0). End-to-end at\nq\u003d12, 3200 samples:\n\n  Mahout-AMD          3,965 vec/s    (winner)\n  PennyLane-AMDGPU      705 vec/s    (5.6x slower)\n  PennyLane             627 vec/s    (6.3x slower)\n\nCUDA hosts and CPU-only hosts unaffected; new frameworks gracefully\nskip when their dependencies are missing.\n\n* Fix ruff lint + format on benchmark_throughput.py\n\n* Remove unused `# noqa: E402` directives (RUF100). The ruff config in\n  this repo doesn\u0027t enable E402, so the markers were warnings rather\n  than suppressions.\n* Apply `ruff format` to satisfy the pre-commit format hook.\n\nNo behavior change.\n\n* benchmark_throughput: methodology fixes + tighter security gate\n\nThree pre-existing methodology issues were inflating Mahout\u0027s reported\nspeedup vs PennyLane in the throughput numbers. Fixed all three so the\nhonest result stands on its own:\n\n* run_pennylane was casting complex64 -\u003e float32 on the GPU transfer,\n  silently dropping the imaginary part of every encoded state (and\n  triggering pytorch\u0027s \"Casting complex values to real discards the\n  imaginary part\" warning on every batch). The broken pennylane path\n  was ~4x slower than a correct one — the cast is removed and the\n  state stays complex64 on the target device.\n\n* No warmup anywhere meant first-batch costs (Triton AMD JIT autotune,\n  PennyLane QNode tracing/cache, Kokkos device init, Aer transpile\n  cache) were inside every timer. Added WARMUP_BATCHES \u003d 3 used by all\n  runners.\n\n* run_mahout_amd ran float32 while both PennyLane runners ran float64.\n  All runners now use float32 input for the same dtype across the\n  comparison.\n\nAlso tightened the ROCm preload gate: previously \u0027_preload_rocm_libs_at_import\u0027\nfired when EITHER MAHOUT_PRELOAD_ROCM\u003d1 OR ROCM_LIB_DIR was set. A stale\nexported ROCM_LIB_DIR could trigger global symbol injection in unrelated\nprocesses that import this module. Now it requires the explicit\nMAHOUT_PRELOAD_ROCM\u003d1 opt-in.\n\nAlso added run_qiskit warmup and made torch.cuda.synchronize() calls\nin run_pennylane and run_qiskit conditional on torch.cuda.is_available()\nso the script no longer raises on AMD-only or CPU-only hosts when those\nrunners try to bookend their timers.\n\nHonest results on AMD Instinct MI300X (batch\u003d64, post-fix):\n  q\u003d8, 6400  Mahout-AMD 111,703 / PennyLane 44,085  \u003d\u003e  2.53x\n  q\u003d12, 3200 Mahout-AMD   4,108 / PennyLane  2,545  \u003d\u003e  1.61x\n  q\u003d16, 1920 Mahout-AMD     715 / PennyLane    771  \u003d\u003e  0.93x\n\nMahout-AMD wins at small states (lower per-call dispatch); default.qubit\nGPU\u0027s batched torch broadcast catches up at larger states. Worth a\nfollow-up to trim per-call overhead in triton_amd.py.\n\nPennyLane-AMDGPU stays 2-76x behind both because it doesn\u0027t broadcast\nover the batch dimension for AmplitudeEmbedding — that\u0027s the public API\nreality, not a kernel-level comparison.\n\n* Add pytorch-ref framework as PyTorch-only reference baseline\n\nAdds a \u0027pytorch-ref\u0027 framework that runs the same amplitude-encoding\nworkload as \u0027mahout-amd\u0027 but goes through the project\u0027s own PyTorch\nreference (qumat_qdp.torch_ref.amplitude_encode) — a pure PyTorch op\nchain (L2 normalize, zero-pad to 2**num_qubits, complex view) with no\nengine wrapper.\n\nUseful as a \"what naive PyTorch on the same hardware can do\" ceiling\nfor the AMD comparison: gaps between this and \u0027mahout-amd\u0027 quantify\nthe per-call overhead in the AMD engine adapter rather than any\nfundamental kernel-level difference.\n\nHonest result on AMD Instinct MI300X (batch\u003d64, 12800 samples at\nq\u003d8/q\u003d12, 6400 at q\u003d16):\n\n  q\u003d8   PyTorch-ref 119,815 / Mahout-AMD 112,650  \u003d\u003e  M-AMD 0.94x\n  q\u003d12  PyTorch-ref   4,163 / Mahout-AMD   4,918  \u003d\u003e  M-AMD 1.18x\n  q\u003d16  PyTorch-ref     926 / Mahout-AMD     890  \u003d\u003e  M-AMD 0.96x\n\nMahout-AMD essentially ties PyTorch-ref within run-to-run noise. The\nAMD path\u0027s TritonAmdEngine is not currently delivering a kernel-level\nspeedup over the same operation in plain PyTorch ops — closing or\nbeating that gap would require real @triton.jit kernels (follow-up).\n\nThe Mahout-AMD value-add on AMD is therefore the unified API surface\nand DLPack-zero-copy integration, not raw kernel throughput. The\nhonest win remains 1.3-2.8x over PennyLane default.qubit GPU (skips\nMottonenStatePreparation) and 2.6-75x over PennyLane lightning.amdgpu\n(skips per-sample QNode dispatch)."
    },
    {
      "commit": "6cf5126a785cffa9702e095964fa253a1490508b",
      "tree": "8cec1cc27820627f4c43caa83ed2ff7eb0bdb131",
      "parents": [
        "1fab161dcc05df992a548749213e53e750380107"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Sun Apr 26 03:12:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 26 03:12:52 2026 +0800"
      },
      "message": "docs(qdp): document phase and iqp-family encodings (#1286)\n\n* docs(qdp): document phase and iqp-family encodings\n\n* docs(qdp): keep advanced encoding PR out of examples\n\n* Update docs/qdp/python-api.md\n\n\n* Update docs/qdp/getting-started.md\n\n\n---------"
    },
    {
      "commit": "1fab161dcc05df992a548749213e53e750380107",
      "tree": "8258ac84bbc7566fbcca4826c9c9dc4da0ee9e02",
      "parents": [
        "5e5d20ff2d0a13b9ec349e2631a03f7f03f52b4b"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Sun Apr 26 02:57:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 26 02:57:04 2026 +0800"
      },
      "message": "docs(qdp): sync python-api page with current qumat_qdp (#1287)\n\n* docs(qdp): sync python-api page with current qumat_qdp\n\n* docs(qdp): address Copilot review on python-api page\n\n- Clarify that force_backend only mutates get_backend()/BACKEND and is\n  not consulted by QdpBenchmark, QuantumDataLoader, or\n  RustQdpEngine/NativeQuantumTensor availability; document the\n  Backend | None signature.\n- Add CUDA tensor-input caveat: zero-copy CUDA tensors do not currently\n  support phase encoding (CUDA_ENCODING_METHODS in src/constants.rs).\n- Add missing float32_pipeline\u003dFalse parameter to the\n  run_throughput_pipeline_py signature, matching the pyo3 binding in\n  qdp-python/src/lib.rs.\n- Disambiguate the loader iteration table: the \"rust\" path yields the\n  native _qdp.QuantumTensor (re-exported as NativeQuantumTensor), not\n  the QuantumTensor facade alias for QdpTensor.\n\n\n---------"
    },
    {
      "commit": "5e5d20ff2d0a13b9ec349e2631a03f7f03f52b4b",
      "tree": "d991e037c14564064a2f3f703838821d53c60174",
      "parents": [
        "68fbaeac37c2d8ff776229542e9353ab4527a2cc"
      ],
      "author": {
        "name": "Jie-Kai Chang",
        "email": "jiekaichang@apache.org",
        "time": "Sun Apr 26 02:33:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 26 02:33:37 2026 +0800"
      },
      "message": "[QDP] Add AMD backend selection to QDP encoding benchmarks (#1289)\n\n* Add AMD backend selection to QDP encoding benchmarks\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e\n\n* Fix AMD parity gaps surfaced by --qdp-backend amd\n\n* TritonAmdEngine.encode_amplitude now zero-pads when sample_size \u003c\n  2**num_qubits, matching the CUDA Rust path\u0027s contract; oversize input\n  remains a hard error. Without this, the SVHN-kernel benchmark\n  (3072-D vectors -\u003e 12-qubit / 4096-D state) crashed on the AMD route.\n\n* qdp_pipeline/mnist_amplitude.py falls back from lightning.gpu to\n  default.qubit when lightning.gpu is unavailable (CUDA-only), mirroring\n  the iris pattern. CUDA hosts are unaffected; AMD hosts now run\n  end-to-end with PennyLane training on CPU.\n\n* Adds two pad-parity tests for the AMD amplitude encoder.\n\n* README note that MNIST AMD training currently runs on CPU because\n  lightning.gpu is CUDA-only.\n\nVerified on AMD Instinct MI300X (ROCm 7.2 / torch 2.9.0+rocm6.4):\n  iris  --qdp-backend amd                 best test acc 0.40 (smoke)\n  mnist --qdp-backend amd  (n\u003d200, 3v6)   best test acc 0.98\n  svhn-kernel --qdp-backend amd (n\u003d500)   CV acc 0.7981 +/- 0.0294\n\nTests: 13 passed, 2 skipped (NVIDIA-CUDA-only refs).\n\n---------\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e\nCo-authored-by: Ryan Huang \u003chcr@apache.org\u003e"
    },
    {
      "commit": "68fbaeac37c2d8ff776229542e9353ab4527a2cc",
      "tree": "2ece732942182908b4d5c5a53542ed522bfac9df",
      "parents": [
        "a56e1a7e8a04cec0d295fb6b19b6c3d3e2ff50cb"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Sun Apr 26 02:20:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 26 02:20:09 2026 +0800"
      },
      "message": "docs(qdp): sync getting-started guide with current engine and encoding behavior (#1290)\n\n* docs(qdp): sync getting-started guide with current engine and encoding behavior\n\nRefresh the QDP getting-started page so it matches the current QdpEngine\nfacade in qdp/qdp-python/qumat_qdp/backend.py and the package README:\n\n- Drop redundant backend\u003d\"cuda\" since CUDA is the default; clarify AMD\n  route via backend\u003d\"amd\" (with \"triton_amd\" alias noted).\n- Replace pip install triton shortcut with the recommended\n  uv sync --group benchmark path from TRITON_AMD_BACKEND.md and surface\n  qumat_qdp.is_triton_amd_available() as the runtime capability check.\n- Fix the basis encoding example: the kernel requires sample_size\u003d1\n  (one integer index per sample), not num_qubits bits.\n- Add iqp/iqp-z to the methods table with a CUDA-only support note.\n- Tighten file-input and remote-URL guidance and move the streaming note\n  out of the Tips section, pointing at the python-api page instead.\n- Expand troubleshooting with ValueError on unsupported backend and a\n  more specific AMD-route diagnosis using is_triton_amd_available().\n\n* docs(qdp): address Copilot review for backend-specific behavior\n\n- Scope the DLPack single-consume note to the CUDA route. The AMD route\n  returns a raw torch.Tensor (qumat_qdp/triton_amd.py) and can produce\n  multiple DLPack capsules.\n- Split the amplitude constraint by backend. CUDA\u0027s AmplitudeEncoder\n  zero-pads when sample_size \u003c 2^num_qubits; AMD\u0027s TritonAmdEngine\n  rejects any sample_size !\u003d 2^num_qubits.\n- Note that file and remote-URL inputs are CUDA-only. The AMD route\u0027s\n  encode() runs torch.as_tensor on its input and rejects path strings.\n- Expand the supported-extension list to .arrow, .feather, .npy, .pt,\n  .pth, .pb to match qdp/qdp-python/src/engine.rs (intentionally\n  omitting .ipc, which is loader-only, not engine.encode)."
    },
    {
      "commit": "a56e1a7e8a04cec0d295fb6b19b6c3d3e2ff50cb",
      "tree": "7b0bef38552a9cbf9ddef702a1179cbf6dac448f",
      "parents": [
        "bbce3c39266263025b01386d2abd15926b6df5aa"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 23 22:33:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 22:33:26 2026 +0800"
      },
      "message": "chore(deps): bump rand from 0.8.5 to 0.8.6 in /qdp (#1284)\n\nBumps [rand](https://github.com/rust-random/rand) from 0.8.5 to 0.8.6.\n- [Release notes](https://github.com/rust-random/rand/releases)\n- [Changelog](https://github.com/rust-random/rand/blob/0.8.6/CHANGELOG.md)\n- [Commits](https://github.com/rust-random/rand/compare/0.8.5...0.8.6)\n\n---\nupdated-dependencies:\n- dependency-name: rand\n  dependency-version: 0.8.6\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "bbce3c39266263025b01386d2abd15926b6df5aa",
      "tree": "83adde5da3b7decbb33406b9db8295cdc9239c16",
      "parents": [
        "df0618a1cebc370ad534df3395a5557a021a0a2f"
      ],
      "author": {
        "name": "Jie-Kai Chang",
        "email": "jiekaichang@apache.org",
        "time": "Wed Apr 22 22:16:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 22:16:35 2026 +0800"
      },
      "message": "[Feature][QDP] Add AMD GPU support via Triton backend (#1158)"
    },
    {
      "commit": "df0618a1cebc370ad534df3395a5557a021a0a2f",
      "tree": "a697663bc3d3ed5099b58ef7ad617cfea58de07b",
      "parents": [
        "ee9f1166cf848affd2c2bbf741c8d5d67ed63630"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "99777196+viiccwen@users.noreply.github.com",
        "time": "Tue Apr 21 17:27:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 17:27:20 2026 +0800"
      },
      "message": "feat: Add float32 zero-copy angle encoding in Python bindings (single sample) (#1264)\n\n* feat: support python binding in f32 angle encoding (single-sample)\n\n* test: add unit test for dtype and rejected situation\n\n* test: add more unit tests\n\n* fix: format python code\n\n* docs: update README.md \u0026 comments\n\n* chore: remove unnecessary texts\n\n* fix: pre-commit error\n\n* chore: remove unreachable error message\n\n* chore: adjust error messages"
    },
    {
      "commit": "ee9f1166cf848affd2c2bbf741c8d5d67ed63630",
      "tree": "7c11f3842e121e2500befc4e0c837d89591b399e",
      "parents": [
        "95f4759173fe0666071e7d2d8660984cd3a9bf57"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "99777196+viiccwen@users.noreply.github.com",
        "time": "Tue Apr 21 14:51:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 14:51:18 2026 +0800"
      },
      "message": "feat: Add batch float32 zero-copy angle encoding in qdp-core (#1268)\n\n* Add batch float32 zero-copy angle encoding in qdp-core\n\n* feat: add missed validation\n\n* feat: add shared validation.cu\n\n* test: add more tests\n\n* Add angle batch kernel rejection tests"
    },
    {
      "commit": "95f4759173fe0666071e7d2d8660984cd3a9bf57",
      "tree": "64d48a7432a8c3889732c7e4d8385855faa80535",
      "parents": [
        "829f0adb508cafc28baf40d18ce99dc31c8c1c85"
      ],
      "author": {
        "name": "yehfela",
        "email": "49918362+yehfelareborn@users.noreply.github.com",
        "time": "Mon Apr 20 12:45:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 12:45:58 2026 +0800"
      },
      "message": "[Test] Add streaming basis encoder coverage tests (#1263)\n\n* [Test] Add streaming basis encoder coverage tests (#1182)\n\n- Add needs_staging_copy_is_false unit test in encoding/basis.rs\n- Add gpu_basis_encoding.rs integration tests covering sample_size\n  rejection, NaN/Inf/negative/fractional/out-of-range index validation,\n  and a successful encode path through the full pipeline\n\n* [Test] Use tempfile for parquet test fixtures in basis encoding tests"
    },
    {
      "commit": "829f0adb508cafc28baf40d18ce99dc31c8c1c85",
      "tree": "3d9924a236b43b1cc3cbd1de0278caf7123099ba",
      "parents": [
        "2fa8c2170e575a38754147c4baf7b2bb58ad817d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 20 12:44:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 12:44:35 2026 +0800"
      },
      "message": "chore(deps-dev): bump pytest from 9.0.2 to 9.0.3 in /qdp/qdp-python (#1271)\n\nBumps [pytest](https://github.com/pytest-dev/pytest) from 9.0.2 to 9.0.3.\n- [Release notes](https://github.com/pytest-dev/pytest/releases)\n- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3)\n\n---\nupdated-dependencies:\n- dependency-name: pytest\n  dependency-version: 9.0.3\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "2fa8c2170e575a38754147c4baf7b2bb58ad817d",
      "tree": "04c4d2cbf381660ccea5224cd8992e4b104664f1",
      "parents": [
        "0155298eddeda1b98e2ba4d98217a15726d5a352"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 20 12:44:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 12:44:20 2026 +0800"
      },
      "message": "chore(deps-dev): bump pytest from 9.0.2 to 9.0.3 (#1270)\n\nBumps [pytest](https://github.com/pytest-dev/pytest) from 9.0.2 to 9.0.3.\n- [Release notes](https://github.com/pytest-dev/pytest/releases)\n- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3)\n\n---\nupdated-dependencies:\n- dependency-name: pytest\n  dependency-version: 9.0.3\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "0155298eddeda1b98e2ba4d98217a15726d5a352",
      "tree": "ebc5401e20dfd19491a25926c497af074244bc87",
      "parents": [
        "f2afaf10c44b31019a73b7acb04cd01d98cd52ff"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 20 12:43:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 12:43:59 2026 +0800"
      },
      "message": "chore(deps): bump pillow from 12.1.1 to 12.2.0 in /qdp/qdp-python (#1269)\n\nBumps [pillow](https://github.com/python-pillow/Pillow) from 12.1.1 to 12.2.0.\n- [Release notes](https://github.com/python-pillow/Pillow/releases)\n- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)\n- [Commits](https://github.com/python-pillow/Pillow/compare/12.1.1...12.2.0)\n\n---\nupdated-dependencies:\n- dependency-name: pillow\n  dependency-version: 12.2.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f2afaf10c44b31019a73b7acb04cd01d98cd52ff",
      "tree": "4b3cb3215680c55e1ff7477b0b1179e0d9f1bf20",
      "parents": [
        "d02ef18d7ce1911e657d5aee01f3abdf0c182bd6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 20 12:43:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 12:43:40 2026 +0800"
      },
      "message": "chore(deps): bump follow-redirects from 1.15.11 to 1.16.0 in /website (#1273)\n\nBumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.11 to 1.16.0.\n- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)\n- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.11...v1.16.0)\n\n---\nupdated-dependencies:\n- dependency-name: follow-redirects\n  dependency-version: 1.16.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d02ef18d7ce1911e657d5aee01f3abdf0c182bd6",
      "tree": "1ea41cf0897bf8f08d668fd934c6b33e943d900f",
      "parents": [
        "06866bca39fe66e3f83467f1f9a38adf81c35dd8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 20 12:43:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 12:43:18 2026 +0800"
      },
      "message": "chore(deps): bump pillow from 12.1.1 to 12.2.0 (#1274)\n\nBumps [pillow](https://github.com/python-pillow/Pillow) from 12.1.1 to 12.2.0.\n- [Release notes](https://github.com/python-pillow/Pillow/releases)\n- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)\n- [Commits](https://github.com/python-pillow/Pillow/compare/12.1.1...12.2.0)\n\n---\nupdated-dependencies:\n- dependency-name: pillow\n  dependency-version: 12.2.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "06866bca39fe66e3f83467f1f9a38adf81c35dd8",
      "tree": "03c42a71a188b4f35d1b20c8bef120254d6284ef",
      "parents": [
        "145278479f0fa3926c48358e6717d84d3ac53271"
      ],
      "author": {
        "name": "Trevor Grant",
        "email": "trevor.d.grant@gmail.com",
        "time": "Wed Apr 15 17:32:33 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 06:32:33 2026 +0800"
      },
      "message": "Delete .github/workflows/pr_review.yml (#1272)"
    },
    {
      "commit": "145278479f0fa3926c48358e6717d84d3ac53271",
      "tree": "25805b0367453b7c318168ea6623289f13a05689",
      "parents": [
        "3882f3b65a8a1092f980a4337ce5b9558a619eb1"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "hcr@apache.org",
        "time": "Tue Apr 14 00:55:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 00:55:38 2026 +0800"
      },
      "message": "add ryankert01 committer in website (#1266)\n\n* Add Ryan Huang (@ryankert01, hcr@apache.org) as committer to who-we-are.md\n\nAgent-Logs-Url: https://github.com/ryankert01/mahout/sessions/21863ac0-0807-412e-a3da-ae0ca92f51e3\n\nCo-authored-by: ryankert01 \u003c91534261+ryankert01@users.noreply.github.com\u003e\n\n* Revert committer addition from old versioned docs (version-0.4, version-0.5)\n\nAgent-Logs-Url: https://github.com/ryankert01/mahout/sessions/14e09c81-40de-4112-a07b-c25a6b4d3103\n\nCo-authored-by: ryankert01 \u003c91534261+ryankert01@users.noreply.github.com\u003e\n\n* Add Ryan Huang as committer to version-0.5 who-we-are.md\n\nAgent-Logs-Url: https://github.com/ryankert01/mahout/sessions/96aa37f4-1ca6-464a-8202-e2c1948d0155\n\nCo-authored-by: ryankert01 \u003c91534261+ryankert01@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] \u003c198982749+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "3882f3b65a8a1092f980a4337ce5b9558a619eb1",
      "tree": "204f08a8964fb0d492529293bfcd04f9a4b8043c",
      "parents": [
        "23f30f205daba34cf9c8e5e8c09ae500f8f3d82e"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "99777196+viiccwen@users.noreply.github.com",
        "time": "Mon Apr 13 11:58:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 11:58:03 2026 +0800"
      },
      "message": "feat:  Add float32 zero-copy angle encoding in qdp-core (single sample) (#1249)\n\n* feat(kernel): add angle encoding kernel (f32)\n\n* feat: add angle encoding from GPU pointer (f32)\n\n* test: add unit tests for angle encoding\n\n* fix: pre-commit error\n\n* fix: add validation for qubit count in AngleEncoder methods\n\n* test: add additional unit tests for angle encoding error handling"
    },
    {
      "commit": "23f30f205daba34cf9c8e5e8c09ae500f8f3d82e",
      "tree": "8d923ef8f759a505a527681017c8e592807d6dc1",
      "parents": [
        "fbeb08938709269544eb9814197756514d3884ad"
      ],
      "author": {
        "name": "Vic Wen",
        "email": "99777196+viiccwen@users.noreply.github.com",
        "time": "Sun Apr 12 21:30:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 12 21:30:38 2026 +0800"
      },
      "message": "fix: remove hardcoded IQP qubit limit and reuse shared validation (#1261)"
    },
    {
      "commit": "fbeb08938709269544eb9814197756514d3884ad",
      "tree": "8bc21bfcb85874597775abb62779cfd1e7a85354",
      "parents": [
        "24e6285c9d545d37b310655039c2338d455bd1b9"
      ],
      "author": {
        "name": "Jie-Kai Chang",
        "email": "jiekaichang@apache.org",
        "time": "Sun Apr 12 10:17:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 12 10:17:54 2026 +0800"
      },
      "message": "[Feature][QDP] IQP kernel fusion and persistent kernel / grid-stride optimizations (#1253)\n\n* [QDP] IQP kernel fusion and persistent kernel / grid-stride optimizations\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e\n\n* fix pre-commit\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e\n\n---------\n\nSigned-off-by: 400Ping \u003cjiekaichang@apache.org\u003e"
    }
  ],
  "next": "24e6285c9d545d37b310655039c2338d455bd1b9"
}
