公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-24 17:23 UTC

QuEST-Kit / QuEST

A multithreaded, distributed, GPU-accelerated simulator of quantum computers

C++MIT★ 483 星标⑂ 195 复刻始于 2017年3月在 GitHub 上查看 ↗

QuEST-Kit/QuEST 的健康指数为 100 分中的 61 分,处于「中等」区间。 其得分最高的类别是Engineering Quality(77/100),最低的是Security(43/100)。 最近一次更新在 8 天前。 近期的大部分工作由 1 位贡献者完成。

61
总分 / 100
中等

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

61
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

QuEST-Kit组织
15 关注者2 个公开仓库始于 2018年12月

该仓库由组织支持——共同承担、可问责的托管责任,可延续于任何单一维护者之后。

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

58中等 · 占总体的 22%
评分方式
28.8/36推送新近度 — 最近一次推送于 8 天前
6.2/36提交节奏 — 52 周中有 9 周有提交
11.3/18提交量 — 最近一年 17 次提交
10/10OpenSSF Scorecard:Maintained — 0 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year17
human_commit_share1
days_since_last_push8
active_weeks_last_year9

发布纪律

62中等
评分方式
27/27有发布版本 — 已发布 25 个发布版本
16.2/36发布时效 — 最近一次发布版本于 283 天前
12.6/27发布节奏 — 约每 176.7 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count25
latest_release_tagv4.2.0
releases_from_tags
days_since_latest_release283
mean_days_between_releases176.7
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

70良好 · 占总体的 18%
评分方式
43.5/60星标 — 483 个星标
19.1/25复刻 — 195 个复刻
7/15关注者 — 19 位关注者
所用输入
forks195
stars483
watchers19
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

70良好
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
18/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

54中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
6.5/22.5提交分布 — 头号贡献者编写了 71% 的提交
13.5/13.5贡献者广度 — 18 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 11 contributing companies or organizations
所用输入
bus_factor1
contributors_sampled18
top_contributor_share0.712
评分方式
40.4/46.8议题解决 — 86% 的议题已关闭
32.9/38.3PR 接受 — 已裁定的 PR 中 410/476 已合并
0/15OpenSSF Scorecard:Code-Review — Found 2/23 approved changesets -- score normalized to 0
所用输入
merged_prs410
open_issues42
closed_issues268
issue_closed_ratio0.865
closed_unmerged_prs66
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
8.7/25所有者影响力 — QuEST-Kit 有 15 位关注者
15.5/25既往记录 — 2 个公开仓库,账户约 7 年
所用输入
followers15
owner_typeOrganization
is_verified
owner_loginQuEST-Kit
public_repos2
account_age_days2,777

工程质量

基础的工程与文档实践是否到位?

77良好 · 占总体的 20%

工程实践

68中等
评分方式
24/24CI 工作流 — 5 个工作流
24/24存在测试
0/16Linter 配置
0/9.6Pre-commit 钩子
0/6.4.editorconfig
20/20OpenSSF Scorecard:CI-Tests — 23 out of 23 merged PRs checked by a CI test -- score normalized to 10
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

90优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://quest.qtechtheory.org/
10/10仓库描述
0/10主题标签
10/10Wiki
所用输入
topics
has_wiki
homepagehttps://quest.qtechtheory.org/
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

43存在风险 · 占总体的 16%

安全态势

43存在风险
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 23 out of 23 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 2/23 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 11 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 0 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — 无数据
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4.3
已排除计分(无数据或不适用):packaging, signed_releases。 其余权重已重新归一化。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

46存在风险 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 75 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.75
agent_instruction_files
agent_instruction_max_bytes
评分方式
0/18一条命令的引导启动
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — C++(静态类型)
0/10可复现环境
0/10已体现的代理实践 — 最近 100 次提交中没有代理编写的提交
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfiles
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — C++(静态类型)
50.9/55可控的文件大小 — 采样的 149 个源文件中有 11 个超过 60KB
所用输入
primary_languageC++
largest_source_bytes216,479
source_files_sampled149
oversized_source_files11

机器可读接口

40存在风险
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
0/20MCP 服务器
40/40可运行示例 — examples
所用输入
example_dirsexamples
has_mcp_signal
api_schema_files

关键数据

483GitHub 星标
18贡献者
17最近 12 个月提交数
8距最近推送天数
25发布版本数
1巴士系数(bus factor)
42开放议题
软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

更多细节

Star 与 Fork 历史 0 ★ / 195 ⇿
0Star
195Fork
19发布

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

04080120160200192112018-052022-062026-07
主版本 3次版本 11修订 5

每个点涵盖 8 天。

OpenSSF Scorecard 4.3 / 10
4.3综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-24 17:22 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests23 out of 23 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 2/23 approved changesets -- score normalized to 0
10Contributorsproject has 11 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained0 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10
不适用Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
全部依赖 0

来自 GitHub 依赖图的完整解析依赖集合:0 个直接依赖与 0 个间接(传递)软件包。仓库提交锁文件时,传递闭包才是完整的。

注册表软件包版本关系
依赖安全公告 未评估

本报告未能完成公告比对:No resolved dependencies to assess

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 18911,
      "has_wiki": true,
      "homepage": "https://quest.qtechtheory.org/",
      "languages": {
        "C": 64831,
        "C++": 2413228,
        "CSS": 74385,
        "TeX": 1261,
        "Cuda": 96016,
        "HTML": 3292,
        "CMake": 26735,
        "Shell": 17879,
        "JavaScript": 9809
      },
      "pushed_at": "2026-07-16T02:33:18Z",
      "created_at": "2017-03-28T12:00:18Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-11T15:44:34Z",
      "description": "A multithreaded, distributed, GPU-accelerated simulator of quantum computers",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "C++",
      "significant_languages": [
        "C++"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "Organization",
      "login": "QuEST-Kit",
      "company": null,
      "location": null,
      "followers": 15,
      "avatar_url": "https://avatars.githubusercontent.com/u/45902318?v=4",
      "created_at": "2018-12-15T18:07:35Z",
      "is_verified": null,
      "public_repos": 2,
      "account_age_days": 2777
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v4.2.0",
          "kind": "minor",
          "published_at": "2025-10-14T01:39:44Z"
        },
        {
          "tag": "v4.1.0",
          "kind": "minor",
          "published_at": "2025-05-28T02:19:46Z"
        },
        {
          "tag": "v4.0.0",
          "kind": "major",
          "published_at": "2025-04-06T23:25:17Z"
        },
        {
          "tag": "v3.7.0",
          "kind": "minor",
          "published_at": "2023-09-22T11:17:04Z"
        },
        {
          "tag": "v3.6.0",
          "kind": "minor",
          "published_at": "2023-08-07T18:01:23Z"
        },
        {
          "tag": "v3.5.0",
          "kind": "minor",
          "published_at": "2022-04-21T10:07:13Z"
        },
        {
          "tag": "v3.4.1",
          "kind": "patch",
          "published_at": "2021-10-13T12:16:59Z"
        },
        {
          "tag": "v3.4.0",
          "kind": "minor",
          "published_at": "2021-10-10T07:23:00Z"
        },
        {
          "tag": "v3.3.0",
          "kind": "minor",
          "published_at": "2021-08-22T13:14:09Z"
        },
        {
          "tag": "v3.2.1",
          "kind": "patch",
          "published_at": "2021-06-06T17:30:11Z"
        },
        {
          "tag": "v3.2.0",
          "kind": "minor",
          "published_at": "2020-07-21T20:46:28Z"
        },
        {
          "tag": "v3.1.1",
          "kind": "patch",
          "published_at": "2020-03-21T14:43:07Z"
        },
        {
          "tag": "v3.1.0",
          "kind": "minor",
          "published_at": "2020-02-29T00:12:48Z"
        },
        {
          "tag": "v3.0.1",
          "kind": "patch",
          "published_at": "2020-01-17T16:51:31Z"
        },
        {
          "tag": "3.0.0",
          "kind": "major",
          "published_at": "2020-01-10T08:19:09Z"
        },
        {
          "tag": "2.1.0",
          "kind": "minor",
          "published_at": "2019-05-15T16:42:11Z"
        },
        {
          "tag": "v2.0.1",
          "kind": "patch",
          "published_at": "2019-05-14T15:10:02Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2018-12-12T17:37:48Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2018-07-14T17:09:51Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2018-05-10T08:53:17Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2018-05-02T13:32:05Z"
        },
        {
          "tag": "v0.11.1",
          "kind": "patch",
          "published_at": "2018-03-20T15:48:36Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2018-02-21T20:22:53Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2018-02-20T16:38:18Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2017-10-02T15:51:40Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "9d7618d7263e3bfba433b88cf1eac0647f08fa0a",
          "body": null,
          "is_bot": false,
          "headline": "v4.2 (#692)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-10-14T01:36:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0c66d2b088724cc79f614a58aab20b64e9cccca",
          "body": null,
          "is_bot": false,
          "headline": "updated README with EPCC lead",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-10-13T01:00:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f0d4bcd1cc487d7f26bc6a5b101764ac8848062e",
          "body": null,
          "is_bot": false,
          "headline": "bumped version to v4.2.0",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-10-09T01:52:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1d7abf75e8aceec3ea733a3e08b17093d1aada96",
          "body": "All user-configurable macros utilised by the source code (e.g. `COMPILE_MPI`) are now CMake options, passed to the source only via preparation of the `config.h` header. This centralises them, reduces the myriad of arguments to the compiler command (which made verbose debugging cumbersome), makes err\n[…]\nnd/or inside a directory (like as a git submodule).\n\nTyson refactored options and Oliver patched the install issues.\n\n---------\n\nCo-authored-by: Oliver Thomson Brown <otbrown@users.noreply.github.com>",
          "is_bot": false,
          "headline": "refactored all macros to config options (#685)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-10-09T01:47:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cb682b239746ab239fd61ac3aaafe5af722437a3",
          "body": null,
          "is_bot": false,
          "headline": "added calculation doc",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-10-09T01:34:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "265569090a45e1edcfa99b1345840fae16314ba8",
          "body": null,
          "is_bot": false,
          "headline": "updated LICENSE.txt",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-09-20T21:20:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60f9b3a153b52430286e555d75d5defc6c41a7b5",
          "body": "As described in issue #638, QuEST v4 contained a performance regression (from v3) only sometimes seen in CPU settings. This was due to the use of std::complex operator overloads in cpu_subroutines.cpp (whereas QuEST v3 hand-rolled complex arithmetic), and affected compilation with Clang (in both sin\n[…]\n the C++ standard library. After deliberation, it beat out other solutions including hand-rolling complex arithmetic, use of a custom complex type, and use of more precise and compiler-specific flags.",
          "is_bot": false,
          "headline": "patched CPU performance",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-09-16T00:27:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "be7edbb1f3e2ff571cd1742db4228c334c7dc587",
          "body": "so I can subsequently refactor it (stop propagating options to preprocessors) without pulling out all my hair. Whitespace is free! :^)",
          "is_bot": false,
          "headline": "tidied CMakeLists.txt",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-09-15T00:31:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "347d7e55391779d4eed1fd78db6e840b22aff48c",
          "body": "which had only the below 4 changes visible to users:\n- changed the significant figures from 3 to 4 of reported memory (e.g. `3.23e1 KiB` becomes `32.30 KiB`)\n- fixed a README doc link\n- renamed to clarify the `setQuregToClone` parameters\n- suppressed illegitimate unused-variable compiler warnings\n\nand otherwise merely tidied internal code. See #672 for all changes.",
          "is_bot": false,
          "headline": "minor code cleanup (#672)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-09-05T14:19:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5bd864b5881ab783465bde3aebf2195216641ec1",
          "body": null,
          "is_bot": false,
          "headline": "added news doc",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-09-04T19:38:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "851691dd518aaa8089cc01eff382360209269b3c",
          "body": "as per #638. The previous use of the Pauli-specific multi-qubit backend logic was suboptimal for single-target since it involved superfluous per-amplitude evaluation of bitstring parity. This introduced a performance regression in single-core QuEST v4 since v3 which used single-target matrix logic.\n\n[…]\ning a single-target through functions which can accept many, such as applyPauliStr() and applyPauliGadget(). Note too that further changes are expected necessary to recover single-core v3 performance.",
          "is_bot": false,
          "headline": "optimised one-qubit Paulis to use applyCompMatr1 (#682)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-09-04T19:08:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ab8b5603abeea8da52949edeb43005fc37d66d9a",
          "body": "since superseded by setQuregToWeightedSum().\n\nAdditionally defined internal convenience functions...\n- localiser_statevec_scaleAmps\n- localiser_statevec_setQuregToClone\nwhich merely call localiser_statevec_setQuregToWeightedSum, for code clarity",
          "is_bot": false,
          "headline": "removed setQuregToSuperposition()",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-08-22T17:02:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4a5714e76f00d760f146b7013de2e570b278e92",
          "body": null,
          "is_bot": false,
          "headline": "added setQuregToWeightedSum (and ToMixture)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-08-22T17:02:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "211d4e8a0030501bf71bc6258b22eb256ba47f23",
          "body": "in order to make the applyTrotterized prefix consistent, as considered in #669.\n\nSpecifically, renamed:\n- applyNonUnitaryTrotterizedPauliStrSumGadget -> applyTrotterizedNonUnitaryPauliStrSumGadget\n- applyControlledTrotterizedPauliStrSumGadget -> applyTrotterizedControlledPauliStrSumGadget\n- applyMul\n[…]\ntrolledTrotterizedPauliStrSumGadget -> applyTrotterizedMultiControlledPauliStrSumGadget\n- applyMultiStateControlledTrotterizedPauliStrSumGadget -> applyTrotterizedMultiStateControlledPauliStrSumGadget",
          "is_bot": false,
          "headline": "renamed Trotter functions",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-08-20T19:14:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0ecad9ca9f8d18728907b176c84a1cb513e2a4d7",
          "body": "since paulis.cpp is an \"API\" file while the pauli logic previously therein was used by numerous core files.\n\nA final inelegance remains; some unit test utilities leverage the internal pauli logic functions using extern, which will break when we eventually switch to private namespacing. Alas!",
          "is_bot": false,
          "headline": "separated pauli logic from paulis.cpp",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-08-20T19:13:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6eec1cf662ba0d6f35acf059f7fc947ac7d1fa26",
          "body": "Specifically:\n- applyTrotterizedUnitaryTimeEvolution()\n- applyTrotterizedImaginaryTimeEvolution()\n- applyTrotterizedNoisyTimeEvolution()\nwhere the latter has significant novelty.\n\nPR also\n- (patch) made imaginary-time evolution assert Hermiticity (315ea41)\n- (patch) patched non-unitary Trotter on de\n[…]\namples to use these new time-evol functions\n- tidied some Pauli algebra (replacing paulis_hasOddNumY calls with direct paulis_getSignOfPauliStrConj)\n- made createPauliStrSum validate it can fit in RAM",
          "is_bot": false,
          "headline": "added Trotterised time evolution (#674)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-08-19T15:57:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2db00e55a376972d4d92a066dc9d7deaddb27af8",
          "body": "…ly (#668)\n\nas discussed in issue #663",
          "is_bot": false,
          "headline": "renamed multiply and postmultiply functions to leftapply and rightapp…",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-08-13T21:09:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53c68280df3ce7bfb14a6e0fd047d2a3dab71c1b",
          "body": "specifically:\n- multiplyQubitProjector\n- postMultiplyQubitProjector\n- multiplyMultiQubitProjector\n- postMultiplyMultiQubitProjector\n\nAlso updated multiplication doc warnings",
          "is_bot": false,
          "headline": "added multiply projector functions",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-07-22T13:15:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0a0e96bb183d6d6fc9d4221cb06f93caf0b4d65",
          "body": "Previously, the order >= 4 scenario of Trotterisation did not correctly invoke recursion, but instead called first order Trotterisation five times without symmetrisation. This meant passing order=4 erroneously excluded symmetrisation (halving the Trotter depth), and passing order>=6 merely performed\n[…]\nproximation of the intended unitary, albeit of lower order and ergo accuracy than expected. This was not caught by the unit tests since they do not exist, as warned in the function documentation. Eep!",
          "is_bot": false,
          "headline": "patched Trotterisation of order >= 4",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-07-21T20:21:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2110b745bddaafa4554996b537ad7b0ec2fcc9c7",
          "body": "which has the below benefits:\n- the remaining functions in operations.cpp are precise and do not need to be user-configured for accuracy (i.e. no Trotter hyperparameters)\n- the remaining functions in operations.cpp merely call the backend and do not include any bespoke logic (i.e. Trotter circuit sc\n[…]\nrations\n- the Trotter logic is isolated in preparation for it becoming more substantial with the introduction of randomisation, commuting groups, and that necessary for Linblad master equation solving",
          "is_bot": false,
          "headline": "separated API trotterisation from operations",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-07-20T01:37:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c49f8d2ee92fd4055106daab2e36001d7ff3d498",
          "body": "in order to shrink the bloated set of operations, making those remaining \"standard\" and trace-preserving (with the exception of the applyQubitProjector and applyMultiQubitProjector). The new multiplications module is catered to \"raw\" linear algebra upon density matrices",
          "is_bot": false,
          "headline": "separated API multiplications from operations",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-07-19T22:52:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "37e222ea2f3526d29cb14b01c319f4fabb62ec7e",
          "body": "Danny Hindson discovered a bug wherein the failing cudaMalloc() call deliberately induced by the 'out-of-memory' unit test of createFullStateDiagMatr() breaks subsequent GPU simulation. This is because a failing cudaMalloc corrupts the CUDA API state until being explicitly cleared using the undocumented facility of cudaGetLastError (which clears \"non-sticky' errors). We correct this, and defensively check for irrecoverable sticky errors.",
          "is_bot": false,
          "headline": "patched broken CUDA state after malloc failure",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-07-13T16:21:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "378ad71021c2911db38c46eb5e5de09cfdfee155",
          "body": "Luc:\nv3.7 was sensible on NUMA machines “by default” through first-touch initialization. This had been lost in v4 as idnetified by James Richings. Here’s some basic numa-aware allocation, and a little love for general parallel/openmp usage.\n\n- If we’re on *nix _and_ we find libnuma, we enable NUMA-a\n[…]\nction once (rather than once per thread).\n\nLuc coded the logic and Tyson added doc and error-handling. PR #658 replaced the original of #652\n\n---------\n\nCo-authored-by: Luc Jaulmes <ljaulmes@ed.ac.uk>",
          "is_bot": false,
          "headline": "restored NUMA-awareness (#658)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-07-09T15:18:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "738ca891eee654d93b586afd10ffff3381009a07",
          "body": "For every existing multiply*() function, such as multiplyCompMatr(), this commit adds a corresponding postMultiply*() function which operates upon a density matrix from the right-hand side. This is useful for preparing density matrices in non-physical states which appear as sub-expressions within th\n[…]\n- extending and refactoring the unit tests with postMultiply references\n\nWe additionally added the below expected but missing functions from the API:\n- multiplyPauliX\n- multiplyPauliY\n- multiplyPauliZ",
          "is_bot": false,
          "headline": "added postMultiply functions (#657)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-06-30T18:04:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aa11c23f39210445390d9d5c460c250a6ec57931",
          "body": "The API functions createFullStateDiagMatr() and createCustomFullStateDiagMatr() worked correctly though their \"insufficient distributed memory\" validation error messages were erroneously excluded from the expected message lists in their respective unit tests.",
          "is_bot": false,
          "headline": "patched distributed validation test",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-06-26T17:51:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd01c6f79de405d34c227db8b584b9c8add5f176",
          "body": "which enables post-compilation pre-runtime configuring of the unit tests without hooking into QuEST's internal environment variable facilities. The macros...\n- TEST_MAX_NUM_QUBIT_PERMUTATIONS\n- TEST_MAX_NUM_SUPEROP_TARGETS\n- TEST_ALL_DEPLOYMENTS\n- TEST_NUM_MIXED_DEPLOYMENT_REPETITIONS\nare now enviro\n[…]\nles, along with new variable TEST_NUM_QUBITS_IN_QUREG which controls the size of the Quregs in the unit tests.\n\nWith this commit, all preprocessors considered in #645 have become environment variables",
          "is_bot": false,
          "headline": "added test environment variables (#655)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-06-26T17:47:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eeedec7002b1a09f3412ee910cff3c54e22e4ae6",
          "body": "which enable configuring QuEST's execution after compilation, before QuEST environment initialisation, solving some of the issues lamented in #645 and generally being more sensible/convenient. It also patched an esoteric bug in the parsing of floating-point numbers, affecting functions like initInli\n[…]\nspaces into cmake error message about MacOS multithreading to make the advised commands clearer.\n\nA subsequent commit will refactor some unit-testing macros to non-QuEST-managed environment variables.",
          "is_bot": false,
          "headline": "added environment variables (#653)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-06-25T21:09:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f28691cede4c66bcf106271be530667c448e31fa",
          "body": "- Promoted variables set in compile_option CMake function to parent scope, which ensures correct values are generated in the header file.\n- Separated compilation configuration defines into config.h\n- Added guards to check at least one of the required compiler macros is undefined as proposed by @TysonRayJones\n- Removed guards from modes.h which prevented COMPILE macros from being defined, as proposed by @TysonRayJones",
          "is_bot": false,
          "headline": "Patched quest.h generation (#645)",
          "author_name": "Oliver Thomson Brown",
          "author_login": "otbrown",
          "committed_at": "2025-06-21T12:05:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c357267563e8fa9701908f6ff8057c1f7277df63",
          "body": "so that the COMPILE_CUQUANTUM preprocessor need only ever be consulted by the source during compilation, as proposed by Oliver in #645",
          "is_bot": false,
          "headline": "bound isCuQuantumEnabled to QuESTEnv",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-06-14T08:04:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4706b92a4f66cc541e6ba1a9f9bde0c4d85a075",
          "body": "New API functions:\n- applyControlledTrotterizedPauliStrSumGadget()\n- applyMultiControlledTrotterizedPauliStrSumGadget()\n- applyMultiStateControlledTrotterizedPauliStrSumGadget()\n- C++-only std::vector overloads of the latter two.\n\nAdditionally:\n- renamed the internal constituent functions, like appl\n[…]\nwhich is bound to the PauliStrSum instance. We have deferred any such optimisation and the associated struct changes since it necessitates an update to the PauliStrSum design (like new sync functions)",
          "is_bot": false,
          "headline": "added controlled Trotter",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-06-13T18:42:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f3baf3455956c03f98f351e69bcdb5d47b45562b",
          "body": "- applyTrotterizedPauliStrSumGadget() was documented to effect exp(i t H) but actually effected exp(-i t H), eep! Thankfully the doc warned the function was untested. It now correctly effects exp(i t H).\n- defensively removed hardcoding of the scalar responsible for the above bug, which undoes the c\n[…]\nunctions\n- fixed defunct doxygen command (@cppoverload)\n\nNote that both these Trotter functions remain without unit tests since impending new functions are anticipated which will generalise the tests.",
          "is_bot": false,
          "headline": "patched Trotter sign and added non-unitary Trotter (#647)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-06-12T21:34:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5fa4f609847a80e1303e5a12c2024a8259db8515",
          "body": "as part of unitaryHACK 2025, challenge issue #594\n\n---------\n\nCo-authored-by: Tyson Jones <tyson.jones.input@gmail.com>",
          "is_bot": false,
          "headline": "added non-unitary Pauli gadgets (#637)",
          "author_name": "diogomaia00",
          "author_login": "diogomaia00",
          "committed_at": "2025-06-04T14:29:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd5120c9c717420bbd363586fc37568a209d3d59",
          "body": "Mai (Roll249) implemented the probe, and Tyson updated the tests and authorlist\n\n---------\n\nCo-authored-by: Tyson Jones <tyson.jones.input@gmail.com>",
          "is_bot": false,
          "headline": "implemented cross-platform RAM probe (#636)",
          "author_name": "Roll249",
          "author_login": "Roll249",
          "committed_at": "2025-06-03T22:04:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d44ec81debdae20cb6ae988e400bf606180a65e",
          "body": "Updates version references and fixes doxygen parsing of CMake configured header broken in #616",
          "is_bot": false,
          "headline": "post v4.1",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-05-28T02:18:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8678836cd29ac59688556399860aab712db1fe14",
          "body": "and fixing doxygen parsing of CMake configured header broken in #616",
          "is_bot": false,
          "headline": "updating version number (#628)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-05-28T02:16:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d1a6fbc147b38a2fa32e10ac007120578b605ff",
          "body": null,
          "is_bot": false,
          "headline": "v4.1 (#622)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-05-28T01:06:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9fa519617edd498a9f7e8901ce7273f44ceebe1",
          "body": "Now, all standalone C and C++ files in the 'isolated' and 'automated' subdirectories of 'examples' will be executed by the compiler Github Action. The former is to just catch/log interface issues not reflected by the unit tests, while the latter empowers external contributors to include casual test \n[…]\noss-precision. This is a much easier alternative to users attempting to include unit tests in their PRs,  and has been setup in preparation for unitaryHACK 2025.\n\n Also documented each examples subdir",
          "is_bot": false,
          "headline": "extended CI example testing",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-05-27T21:43:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "835208e38735ef35341191eceeb4bc14cf81684e",
          "body": "When the passed PauliStr is identity and no control qubits are imposed, the function merely effects a change in global phase. For density matrices, this induces no change at all; the two constituent operations upon the Choi vector cancel one-another, wasting time and numerical accuracy. So, we abort\n[…]\n insignificant runtime and accuracy optimisation, and this scenario is superfluously handled mostly to document the validity of the scenario (i.e. the use of gadgets to effect arbitrary phase changes)",
          "is_bot": false,
          "headline": "optimised applyPauliGadget edgecase",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-05-27T20:52:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8db1c06b70b9a8642d8fc14bc09544d3500616d1",
          "body": "This required editing the source to exclude designated initialisers which are not supported in C++17 except through compiler extensions. Such extensions are enabled by default in Clang and GCC but require explicit enabling in e.g. MSVC. We've here made the decision to widen default-compiler support by making struct initialisation a little uglier.",
          "is_bot": false,
          "headline": "separated source (C++17) and testing (C++20) standards",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-05-25T19:53:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49e5ff32568885b0c1da74ef649a56adfd13ea8c",
          "body": "Since `bitValue` is an `int`, the expression `bitValue << bitIndex` can overflow when `bitIndex` equals/exceeds 32. This is solved by casting `bitValue` into a `qindex` before shifting.\n\n(Tyson updated authorlists)",
          "is_bot": false,
          "headline": "patched overflow in setBit (#623)",
          "author_name": "JPRichings",
          "author_login": "JPRichings",
          "committed_at": "2025-05-23T22:22:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c47422633b62a5e46f0b916afffb24283e1267e7",
          "body": "including\n- removing references to defunct `invalidQuESTInputError`\n- essential doc needed to disambiguate function conventions (like relationship between function parameters and effected operation phases)\n- renamed Doxygen keyword `@equivalent` to `@equivalences`\n- ... `@notvalidated` to `@notyetva\n[…]\nanged some `@cpponly` functions into new `@cppvectoroverload`, and then hid the latter\n- added links from doc to the example PR\n- linked `C++`-overload doc to corresponding `C` function (using `@see`)",
          "is_bot": false,
          "headline": "updated doc (#621)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-05-22T18:13:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f11fb9511bb29b54ae3e60360648ccc39456613e",
          "body": null,
          "is_bot": false,
          "headline": "added Luc Jualmes to authorlist",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-05-08T19:25:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9be1dfd4b7359c45fd7732d41ee611622cc695a1",
          "body": "This resolves the issues highlighted in #611 while maintaining QuEST's header include structure in the source",
          "is_bot": false,
          "headline": "patched CMake install (#616)",
          "author_name": "Luc Jaulmes",
          "author_login": "lucjaulmes",
          "committed_at": "2025-05-08T19:13:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ce95cf2e9c7759c11c47333677b309fbb88aa0d1",
          "body": "so that external contributors (and importantly right now, example PRs) can contribute new, self-contained unit test code without needing to incorporate new headers",
          "is_bot": false,
          "headline": "standardising unit-test includes",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-05-06T17:18:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c051cf38b227896d1c6316fbd5a3d9ce96e097b",
          "body": "Erich (build):\n- adjusted install interface paths to use CMAKE_INSTALL_INCLUDEDIR\n- added platform-agnostic RPATH handling via helper function setup_quest_rpath\n- set RPATH origin for dynamic linking\n- passed QuEST version info to CMake\n\nTyson (CI):\n- run compiled examples to test for link-time errors\n- temporarily disabled LCOV reporting to PRs\n\n---------\n\nCo-authored-by: Tyson Jones <tyson.jones.input@gmail.com>",
          "is_bot": false,
          "headline": "improved build and CI (#601)",
          "author_name": "Erich Essmann",
          "author_login": "eessmann",
          "committed_at": "2025-05-01T11:28:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3699f7c46ca892a4c2145f78d61d441514cf9487",
          "body": "- moved and renamed isolated examples\n- tidied example-related CMakeLists.txt\n- updated example-related doc\n- added dynamics example\n- updated min_example to be C/C++ agnostic\n- change compile workflow to run Windows first (since MSVC is the most pedantic compiler of those tested so should run and fail soonest)",
          "is_bot": false,
          "headline": "restructured and extended examples (#593)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-04-27T12:40:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b4623c7eaada61b89080925acb1a950473f10b0",
          "body": null,
          "is_bot": false,
          "headline": "added setReportedPauli(Chars|StrStyle)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-04-22T14:35:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3279c45927dfe8be53149c48f40e4fd126036414",
          "body": "See PR #589 for info on each patch",
          "is_bot": false,
          "headline": "patched reporters and optimised applyTrotter",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-04-22T09:45:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53f8f3ad60e5b0171646ee8250c0e6ea65878b44",
          "body": null,
          "is_bot": false,
          "headline": "updated v4 refs to main",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-04-06T23:16:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "786c0bff5a6a4d0fef4e723854cce0c126a4d5ae",
          "body": "- added very cute, very essential emojis to markdown titles\n- added a tutorial\n- added a main docs/README.md\n- added a main tests/README.md\n- made markdown hyperlinks work on both Github and Doxygen\n- made markdown files appear as Doxygen pages\n- made macros appear in Doxygen docs via function/const\n[…]\nction)`) cannot be handled by Doxygen at all. A user clicking such a hyperlink in the generated html will hit a 404. These little user-traps have been marked with comments in the markdown files. Alas!",
          "is_bot": false,
          "headline": "added (final) v4 repo docs",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-04-06T21:57:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e00cb41164302c4c367540cd1b4717ecb8cd3c14",
          "body": "so that C++ users can pass vectors directly to functions, even inline, rather than having to store qubit lists as local variables and pass pointers. This is not only concise, but prevents them from causing insidious seg-faults/dangling errors by attempting to pass inline vector pointers.\n\nAlas this adds quite a lot of new boilerplate; 2000 lines of it! :'( \n\nSee PR #584 for a breakdown into smaller commits.",
          "is_bot": false,
          "headline": "added C++ convenience overloads",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-04-06T00:08:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "29d343a55d004106a63afa30717e69baa7a2ea51",
          "body": "and API docs, and some patches!\n\nSpecifically: \n- added docs/v4.md\n- added docs/compile.md (WIP)\n- added docs/run.md (WIP)\n- added examples/README.md tutorial (WIP)\n- expanded docs/compilers.md\n- added test-var list to docs/cmake.md\n- added API doc latex definitins\n- added API doc sub-groups\n- added\n[…]\nseShift\n- added some TODO comments to source\n- patched:\n  - syncQuESTEnv (which wasn't syncing GPU)\n  - FullStateDiagMatr multithreaded setters (missing OpenMP if clause)\n\nSee commit breakdown in #583",
          "is_bot": false,
          "headline": "added (most) v4 repo docs",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-04-04T21:43:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6bac19c16a96e69f44af87dd4242b46e7d91a892",
          "body": "Corrected dereference of wasGpuSynced, as discussed in #581",
          "is_bot": false,
          "headline": "patched matrix-sync validation test",
          "author_name": "Oliver Thomson Brown",
          "author_login": "otbrown",
          "committed_at": "2025-04-04T13:35:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c131a292214624b02a966293be021e3ed5b7f274",
          "body": "The benefits include:\n- better portability between compilers; no macro guards!\n- better symmetry with existing debug API (mostly setters)\n- enables runtime re-routing of errors (so it can be unit tested!)\n- resolves problem when multiple translation units both define the previous weak-symbol function (like when deprecated tests are compiled alongside v4 tests)\n- more standard!",
          "is_bot": false,
          "headline": "replaced invalidQuESTInputError with setInputErrorHandler",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-04-02T23:07:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2dccccc7ac8b0f45e039afe6a4b29ff937d13535",
          "body": "which used an incorrect method to obtain MPI_TAG_UB. We additionally added a fallback to use the standard-gauranteed minimum when there is trouble obtaining MPI_TAG_UB.\n\nShout out to the Julia G's for helping discover the bug!\n\n---------\n\nCo-authored-by: Oliver Thomson Brown <8394906+otbrown@users.noreply.github.com>",
          "is_bot": false,
          "headline": "patched MPI max-tag inference",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-04-02T17:07:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9b39fe4522561b8f8c652deefcc68109d3638f51",
          "body": "since they arguably constitute the majority of functions interfaced by users, so are worth checking before v4 release! The in-development more-doc branch has removed the corresponding `@nottested` tags from the checked functions.\n\nAdditionally:\n- added C++-macro guard (to defend from `__cplusplus=0`\n[…]\nnsured pre-processor checks are performed first when `quest.h` is included\n- removed some defunct validation-related comments\n- added post-sample validation to test utility RNG - I'm suspicious of it!",
          "is_bot": false,
          "headline": "added (some) operator validation tests",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-04-02T15:25:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0799d14730cb42d7b93e1664a4730a4502127dd8",
          "body": "by adding missing test RNG seeding, and using only local C++ RNGs (foregoing use of the C-lib rand) \n\n---------\n\nCo-authored-by: Oliver Thomson Brown <8394906+otbrown@users.noreply.github.com>",
          "is_bot": false,
          "headline": "patched HIP + MPICH unit tests",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-31T21:30:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ae04976cf4a66912dceca4c7e0db1ed4f7bdddf",
          "body": "see individual commits/sub-tasks in #576",
          "is_bot": false,
          "headline": "scaffolded v4 doc",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-30T15:57:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6531616434d1b417f7232f01216c118d08197f11",
          "body": "and added a warning about a potential issue with v3.X MPICH compilers. Also added code warnings that MSVC does not support the `#warning` pragma (ridiculous!)",
          "is_bot": false,
          "headline": "patching MPICH preprocessors",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-27T14:14:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ca3daacf8c521f7aedb24ebe87ee298077df442",
          "body": "to improve the user printing experience. Updated the examples to use these, and additionally made further patches to CI address sanitizer tests.",
          "is_bot": false,
          "headline": "added reportScalar, reportStr and setNumReportedNewlines",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-26T16:24:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0195c6ac627e6de1af4767413b532124a0237710",
          "body": "By giving each send-recv pair a unique tag, we no longer require message orderedness and can ergo support adaptive routing (AR)\n\n---------\n\nCo-authored-by: Oliver Thomson Brown <8394906+otbrown@users.noreply.github.com>",
          "is_bot": false,
          "headline": "added MPI tags to support AR",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-25T23:22:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2cf512a854b6dde26d378737c4096ec8630edf00",
          "body": "- renamed KrausMap.isCPTP to KrausMap.isApproxCPTP to reflect its epsilon-dependence, for consistency with isApproxUnitarity, isApproxHermitian and isApproxNonZero\n- defined util_setFlagToUnknown() so that constant validate_STRUCT_PROPERTY_UNKNOWN_FLAG need not be exposed beyond validation.cpp and u\n[…]\nlidation-changes (setValidationEpsilon, setValidationEpsilonToDefault()) clear all epsilon-dependent struct fields\n- hid \"struct not initialised\" tests from address sanitizer (which erm disliked them)",
          "is_bot": false,
          "headline": "tidied heap flags",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-25T23:19:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a5e8e3e2054c6db472791f66e2ce57448a179b89",
          "body": "Co-authored-by: Richard Meister <richardm.tug@gmail.com>",
          "is_bot": false,
          "headline": "clear matrix-flags when validation changes",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-25T19:45:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3abab9eab97f09abbdc683cfc208038191a7c289",
          "body": "This colossal commit makes the follow...\n\nchanges:\n- made tests use both absolute and relative epsilon comparisons\n- added macro TEST_MAX_NUM_SUPEROP_TARGETS to speedup tests\n- added macro PERMIT_NODES_TO_SHARE_GPU to cmake\n- added macro TEST_NUM_MIXED_DEPLOYMENT_REPETITIONS to speedup tests\n- renam\n[…]\n and FullStateDiagMatr setters)\n- all operations (_sans_ Trotterisation and input validation)\n- all paulis (_sans_ reporters)\n- all qureg (_sans_ reporters and GPU syncs)\n- all types (_sans_ reporter)",
          "is_bot": false,
          "headline": "added most v4 tests and patches (#570)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-25T02:22:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "778f03ac98de798264a6bf1069ce32b6c2415300",
          "body": "v4 unit tests are now run with multithreaded (64 threads), multithreaded + distributed (4 threads on each of 16 nodes) and GPU-accelerated (with and without cuQuantum) deployments on paid Github runners.\n\nall changes:\n- disabled compiling tests by default, to significantly reduce first-compile time \n[…]\ns of HIP v6 UUID utility)\n- made workflows compile in parallel for small speedup\n- tidied unit-test qubit-list generation\n- changed min-example to use a random state (more interesting than plus state)",
          "is_bot": false,
          "headline": "added accelerated CI tests",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-12T22:42:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "842c375511889f7ebd7fc4acf01a70c53dacac09",
          "body": "and:\n- updated README doc links\n- moved aux to utils (former is illegal on Windows)\n- added docgroup brief descriptions\n- moved TODOs to doxygen @todo (although not currently collected)\n- added missing channels.cpp and debug.cpp unit-test files\n- added high-res quest logo (for safe-keeping, not used)",
          "is_bot": false,
          "headline": "setup v4 doc CI",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-11T18:06:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a72c9293519d33bfb4ed811b62fd5dd7d41d21cd",
          "body": "scaffolded v4 doc",
          "is_bot": false,
          "headline": "Merge pull request #563 from QuEST-Kit/alt-new-doc",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-11T00:21:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85a0033bc47888784bc1e8fd36406a2454d16796",
          "body": null,
          "is_bot": false,
          "headline": "scaffolded v4 doc",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-11T00:21:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "988aa821a1f5230da9e86f709e2df6a113260e83",
          "body": "specifically:\n- updated landing README for v4 (although links must still be changed from relative to absolute for doxygen compatibility0\n- updated AUTHORS.txt for v4\n- updated author tags in file doc\n- added `compilers.md`\n- added `styleguide.md` (WIP)\n- added `version4.md` placeholder (WIP)\n- removed defunct v3 tutorial\n- removed defunct v3 makefile\n- removed defunct reportQuregToFile function stub\n- removed defunct error_functionNotImplemented function",
          "is_bot": false,
          "headline": "updated READMEs and author lists",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-10T17:26:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a36e3c66c742419a7c85dab012fae8c0000ae76",
          "body": "source changes:\n- patched GPU CompMatr upon large Quregs (larger than unit tests, eep!) whereby kernel cache indexing was wrong\n- patched multi-GPU cuquantum (erroneously called when custom-kernels were necessary)\n- added validation that MPI processes use unique GPUs in multi-GPU mode\n- added compil\n[…]\nll test suite\n\nbuild changes:\n- made cmake CXX compiler as default nvcc host compiler\n- suppressed unknown-pragma warnings when not-multithreading on gcc\n\nother:\n- added author docstrings to workflows",
          "is_bot": false,
          "headline": "patched v4 multi-GPU",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-10T17:13:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "69c78f5c180e3007f33b543c7a0e77718eee277b",
          "body": "- ROCm documentation suggests using `hip::host` as the link target. I checked the CMake files and it is just an interface target to `hip::amdhip64`, so it should (and does as far as I can tell) generate the same build files, but ought to be more robust across platforms as it's what AMD expects.\n- re\n[…]\nrget language is HIP, so it ends up double defined in the compile line currently. That doesn't break anything, but it's just cruft.\n- unsuccessfully experimented with restoring HIP + MPI CI (see #554)",
          "is_bot": false,
          "headline": "tweaked HIP build",
          "author_name": "Oliver Thomson Brown",
          "author_login": "otbrown",
          "committed_at": "2025-03-05T17:42:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "87ce001eb61b83b705ff787c6fbfeaa6d781d14b",
          "body": "and set up associated CI compilation tests. These are incomplete; outstanding tasks include:\n- compile on Windows (ROCm installation hangs, times out after 6h)\n- compile with HIP + MPI (throws a thrust compilation `vtables` error, not seen when testing outside VM)\n\nCo-authoring with Oliver to acknowledge his cmake edits, and his organising access to test platforms!\n\n---------\n\nCo-authored-by: Oliver Thomson Brown <8394906+otbrown@users.noreply.github.com>",
          "is_bot": false,
          "headline": "patched HIP GPU build",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-04T23:40:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7d22de42c27d18b91268c3830e62d660e1588b8",
          "body": null,
          "is_bot": false,
          "headline": "patched MSVC GPU build",
          "author_name": "Oliver Thomson Brown",
          "author_login": "otbrown",
          "committed_at": "2025-03-03T20:02:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ddf6465b0142b5ba884db8a2c17359114e511c0",
          "body": null,
          "is_bot": false,
          "headline": "added CI test coverage",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-03T19:06:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1aa777327330f51d224299f51a35a2ba8b16741",
          "body": "and some unimportant deprecated test patches",
          "is_bot": false,
          "headline": "added CI mem-leak and serial unit tests",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-02T23:05:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "113df8ec6e127eb8d6e2570af53e3804027f0e4a",
          "body": "I guess Bill won.\n\nAlso added missing validation-aborts to avoid numerically-sensitive validation when user has called setValidationEpsilon(0), which is unrelated to MSVC, but I am too lazy to separate the commit",
          "is_bot": false,
          "headline": "patched MSVC multithreading",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-03-01T19:21:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "34916278e2ad5cc8d2a334128f5c6218ca3c456c",
          "body": "in addition to:\n- patching MSVC distributed compilation\n- removed MSVC-incompatible data-structure initialisers on Windows\n- made examples MSVC-compatible\n- removed previous defunct CI workflows",
          "is_bot": false,
          "headline": "added CI compilation tests",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-02-28T23:43:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "103b9617cb08f1455e5c33fe220eae4e08545127",
          "body": "so that development out of v4 can compile/use the existing tests immediately",
          "is_bot": false,
          "headline": "added half of v4 tests",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-02-27T16:50:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e616ae55b1be3feba723e4e80182f85edda1989",
          "body": "in addition to some other CPU and GPU facilities; see the full list in #541",
          "is_bot": false,
          "headline": "patched (mostly) v4 cuQuantum (#541)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-02-27T16:14:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d970024af11591a44b30b570d0e50d5220469c15",
          "body": "- corrected reporting of dependencies\n- added cmake config generation (improving QuEST's incorporation as a package)\n- restructured install directory\n- privatised link libraries to prevent spurious onward dependencies\n- removed (default) package export\n- added MPI as an explicit dependency of the deprecated tests\n- corrected BUILD/INSTALL interface in target_include_directories\n\n---------\n\nCo-authored-by: Oliver Thomson Brown <otbrown@users.noreply.github.com>",
          "is_bot": false,
          "headline": "patched CMake build (#537)",
          "author_name": "Erich Essmann",
          "author_login": "eessmann",
          "committed_at": "2025-02-27T16:09:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b7dddae7e440a2ac2b63860fce6c117af4e8bd67",
          "body": "- bumped internal standard to C++20\n- disabled OpenMP on Windows (since MSVC does not support custom OpenMP reductions)\n- corrected struct initialisation (formerly using C syntax)\n- added `_USE_MATH_DEFINES` to ensure `M_PI` defined in relevant files\n- added cross-platform workaround for `getBitMaskParity()`\n- patched memory leak in `getTypeName()`\n- extended `getTypeName()` to Windows\n- patched `invalidQuESTInputError()` lacking C-linkage",
          "is_bot": false,
          "headline": "patched MSVC build (#539)",
          "author_name": "Erich Essmann",
          "author_login": "eessmann",
          "committed_at": "2025-02-27T15:44:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "796568ba0a79af8275193f9e85a039bc9ef7b5e4",
          "body": "replacing the 2D CPU memory of CompMatr and SuperOp, which each retain a 2D alias to the new 1D memory for user convenience.\n\nExisting code which accesses .cpuElems of both these structs remains valid, although some usages may be accelerated by switching to accesing .cpuElemsFlat (like some unit-testing code).\n\nPrompted by discussion #540\n\nCo-authored-by: Erich Essmann <11630432+eessmann@users.noreply.github.com>",
          "is_bot": false,
          "headline": "added row-major CPU matrices",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-02-19T18:01:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "25256814bfe143866541d1afd971b55032b68919",
          "body": "such that the deprecated unit tests pass on Ubuntu in GPU-accelerated deployment, distributed over up to 8 nodes, when not using cuQuantum. Alas we cannot presently test cuQuantum for want of a compatible GPU!\n\nSee PR #534 for the list of patches",
          "is_bot": false,
          "headline": "patched v4 GPU (without cuQuantum)",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-02-06T13:23:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14855c9aff17e542cec081206d6efdcb3e5e96af",
          "body": null,
          "is_bot": false,
          "headline": "corrected typo in FindCUQUANTUM.cmake",
          "author_name": "Oliver Thomson Brown",
          "author_login": "otbrown",
          "committed_at": "2025-02-06T12:14:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "522353076045334df58b7d2e40ed4224e33d222e",
          "body": null,
          "is_bot": false,
          "headline": "added cuQuantum to CMake",
          "author_name": "Oliver Thomson Brown",
          "author_login": "otbrown",
          "committed_at": "2025-02-05T14:03:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35de0e4e4b9add9cbfbfa682f73651ccc5ad19c0",
          "body": "additionally\n- migrated v3 unit tests (now deprecated) to Catch v3\n- removed defunct examples",
          "is_bot": false,
          "headline": "added v4 CMake build (#430)",
          "author_name": "Oliver Thomson Brown",
          "author_login": "otbrown",
          "committed_at": "2025-01-29T22:59:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "334a128ad9420fcf1cbfb9387782f13d9bf4f630",
          "body": "such that the deprecated unit tests pass on MacOS and Ubuntu in serial, multithreaded, distributed and multithreaded+distributed settings, with clang and gcc. GPU-acceleration requires further patching.\n\nSee PR #528 for the list of patches",
          "is_bot": false,
          "headline": "patched v4 CPU",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-01-28T22:43:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "404dbc3787ccbae187cb3cd57e3e136b9b0ce634",
          "body": "- calcPartialTrace\n- calcReducedDensityMatrix\n- setQuregToPartialTrace\n- setQuregToReducedDensityMatrix\n- setDensityQuregFlatAmps\n- createFullStateDiagMatrFromPauliStrSum\n- createForcedQureg\n- createForcedDensityQureg\n- getEnvironmentString",
          "is_bot": false,
          "headline": "added remaining API functions",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-01-27T14:26:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d9a1606afd17a0b3adafc08a5ced30682faa0a5",
          "body": "- setQuregToPauliStrSum()\n- setFullStateDiagMatrFromPauliStrSum()\n- multiplyPauliStrSum()\n- applyTrotterizedPauliStrSumGadget()",
          "is_bot": false,
          "headline": "added remaining PauliStrSum functions",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-01-26T13:52:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47e542a11bd2609345f7f2718f75df21ea3720e9",
          "body": "The v4 utility functions are refactored and significantly de-cluttered from v3, and separated into semantic files. The unit tests are also placed into a 'unit' subfolder, with an 'integration' subfolder reserved for future integration tests.\n\nSeveral functions were renamed (notably, areEqual() becam\n[…]\nto users for use in their own C++ source, to leverage the convenient matrix algebra/overloads and random generators\n\nA bug introduced in the previous commit's setSeeds() change was also patched, oops!",
          "is_bot": false,
          "headline": "Scaffolding v4 unit tests",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-01-24T21:28:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d2dea7dd297e57893cbe65cbb8fe69c593860376",
          "body": "Previously, setSeeds() had to receive identical seeds from every node in distributed settings, as validated. This was a painful nuisance for users to assure, requiring they themselves broadcast their per-node seeds for consensus.\n\nNow, only the root node's seed is consulted, and is broadcast interna\n[…]\nr even no seeds at all. This greatly simplifies user's distributed code, which is now identical to the serial code.\n\nWe also minor patched v4 user-input validation, and deleted defunct QASM references",
          "is_bot": false,
          "headline": "made setSeeds broadcast from root",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-01-24T20:37:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "31ffa0b571b5739dcd576378ca7681a84f7426f7",
          "body": "so that they successfully run using the deprecated v3 API with the new v4 backend.\n\nCo-authoring with Ali Rezaei to recognise his previous efforts porting the tests\n\nCo-Authored-By: Ali Rezaei <26064235+rezaeial@users.noreply.github.com>",
          "is_bot": false,
          "headline": "updated deprecated tests",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-01-23T00:29:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67a42052a43b81c83179c2e3dcc161eb838ebd2d",
          "body": null,
          "is_bot": false,
          "headline": "restructured unit tests",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-01-23T00:29:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ead283e6bc9dba0bd1e5074b911ac1e36abfedc8",
          "body": "along with non-unity exponent and non-Hermitian variants",
          "is_bot": false,
          "headline": "added calcExpecFullStateDiagMatr",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-01-22T20:51:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d969f43e77374bfdee0ee1f44e199aabf3ad6f1b",
          "body": "- centralised localiser's struct spoofing\n- added missing multiplyFullStateDiagMatrPower API declaration\n- corrected DEAULT_VALIDATION_EPSILON typo (eep!)\n- added calcExpecNonHermitianPauliStrSum definition, missing from 4621e89\n- patched applyQubitMeasurementAndGetProb which was not modifying outpu\n[…]\n initPureState validation\n- changed nullptr comparisons in errors.cpp to use mem_isAllocated for consistency\n- removed now-superfluous warning-suppressing code from cpu_subroutines\n- improved some doc",
          "is_bot": false,
          "headline": "misc tidying and v4 bug patches",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-01-22T20:22:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ce6079280e3554a27553a3a94d0ac4ed434d0625",
          "body": "so that all v3 deprecated \"operator\" unit tests pass, for development convenience.\n\nWe will return to optimise a novel, optimised method (adapted from Simon's, removed from the initial distributed manuscript)",
          "is_bot": false,
          "headline": "added placeholder QFTs",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-01-22T14:03:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62ea519769faf4f579d568780a172d4340b0f3d8",
          "body": "* misc bug fixes\n\nwhich progress toward making the v3 deprecated unit tests run without error.\n\nWe also relax exclusivity of multithreading and GPU-acceleration, which was pointless and annoying.\n\n* patching density-matrix prob-calc\n\n* added missing amps-fit-in-node validation\n\n* patched bug in many\n[…]\nes\n\n* avoid overwriting .isCPTP when eps=0\n\n* patched deprecated createPauliStrSum\n\n* patched two-qubit depolarising\n\nas per https://github.com/TysonRayJones/Distributed-Full-State-Algorithms/issues/7",
          "is_bot": false,
          "headline": "misc v4 bug patches",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-01-20T14:36:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4621e89d6235b5a391e646d6eac5e7264a8f14e0",
          "body": null,
          "is_bot": false,
          "headline": "added calcExpecPauliStrSum",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2025-01-13T15:31:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3bd93f2c6e950557f3dd7dd08d1a6b90f18d2704",
          "body": null,
          "is_bot": false,
          "headline": "added GPU-only expected values",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2024-11-24T23:43:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "400154915560077a7ec262ed70454f6fb193b59a",
          "body": "such that backend functions which apply Pauli tensors and gadgets are agnostic to whether simulation is distributed.\r\n\r\nPreviously, these functions received masks encoding Paulis even on the prefix substate, for which necessary pre-communication had already been performed. This violated the conventi\n[…]\nunctions receive only suffix Paulis; the impact of the prefix Paulis is to change the complex coefficients passed to the backend.\r\n\r\nThis refactor involved removing the messy `util_pauliStrData` type.",
          "is_bot": false,
          "headline": "refactored Paulis in backend",
          "author_name": "Tyson Jones",
          "author_login": "TysonRayJones",
          "committed_at": "2024-11-24T23:43:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 25,
      "commits_last_year": 17,
      "latest_release_at": "2025-10-14T01:39:44Z",
      "latest_release_tag": "v4.2.0",
      "releases_from_tags": false,
      "days_since_last_push": 8,
      "active_weeks_last_year": 9,
      "days_since_latest_release": 283,
      "mean_days_between_releases": 176.7
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 195,
      "stars": 483,
      "watchers": 19,
      "fork_history": {
        "days": [
          {
            "date": "2018-05-25",
            "count": 1
          },
          {
            "date": "2018-12-02",
            "count": 1
          },
          {
            "date": "2019-01-23",
            "count": 1
          },
          {
            "date": "2019-02-13",
            "count": 1
          },
          {
            "date": "2019-02-20",
            "count": 1
          },
          {
            "date": "2019-02-27",
            "count": 1
          },
          {
            "date": "2019-03-04",
            "count": 1
          },
          {
            "date": "2019-03-08",
            "count": 1
          },
          {
            "date": "2019-04-01",
            "count": 1
          },
          {
            "date": "2019-04-17",
            "count": 1
          },
          {
            "date": "2019-04-24",
            "count": 1
          },
          {
            "date": "2019-05-05",
            "count": 1
          },
          {
            "date": "2019-06-02",
            "count": 1
          },
          {
            "date": "2019-06-06",
            "count": 1
          },
          {
            "date": "2019-06-17",
            "count": 1
          },
          {
            "date": "2019-08-21",
            "count": 1
          },
          {
            "date": "2019-11-25",
            "count": 1
          },
          {
            "date": "2019-12-18",
            "count": 1
          },
          {
            "date": "2020-01-12",
            "count": 1
          },
          {
            "date": "2020-01-16",
            "count": 1
          },
          {
            "date": "2020-01-26",
            "count": 1
          },
          {
            "date": "2020-01-30",
            "count": 1
          },
          {
            "date": "2020-02-08",
            "count": 1
          },
          {
            "date": "2020-02-12",
            "count": 1
          },
          {
            "date": "2020-02-14",
            "count": 1
          },
          {
            "date": "2020-03-06",
            "count": 2
          },
          {
            "date": "2020-03-23",
            "count": 1
          },
          {
            "date": "2020-03-25",
            "count": 1
          },
          {
            "date": "2020-03-30",
            "count": 1
          },
          {
            "date": "2020-04-09",
            "count": 1
          },
          {
            "date": "2020-04-30",
            "count": 1
          },
          {
            "date": "2020-05-13",
            "count": 1
          },
          {
            "date": "2020-06-01",
            "count": 1
          },
          {
            "date": "2020-07-08",
            "count": 1
          },
          {
            "date": "2020-07-31",
            "count": 1
          },
          {
            "date": "2020-08-04",
            "count": 1
          },
          {
            "date": "2020-08-10",
            "count": 1
          },
          {
            "date": "2020-09-08",
            "count": 1
          },
          {
            "date": "2020-09-11",
            "count": 1
          },
          {
            "date": "2020-09-16",
            "count": 1
          },
          {
            "date": "2020-10-11",
            "count": 1
          },
          {
            "date": "2020-10-13",
            "count": 1
          },
          {
            "date": "2020-10-26",
            "count": 1
          },
          {
            "date": "2020-11-02",
            "count": 1
          },
          {
            "date": "2020-11-05",
            "count": 1
          },
          {
            "date": "2020-11-16",
            "count": 1
          },
          {
            "date": "2020-11-24",
            "count": 1
          },
          {
            "date": "2020-11-25",
            "count": 1
          },
          {
            "date": "2020-11-26",
            "count": 1
          },
          {
            "date": "2020-12-12",
            "count": 1
          },
          {
            "date": "2020-12-15",
            "count": 1
          },
          {
            "date": "2020-12-19",
            "count": 1
          },
          {
            "date": "2020-12-20",
            "count": 1
          },
          {
            "date": "2020-12-29",
            "count": 1
          },
          {
            "date": "2021-01-12",
            "count": 1
          },
          {
            "date": "2021-01-19",
            "count": 1
          },
          {
            "date": "2021-02-11",
            "count": 1
          },
          {
            "date": "2021-03-15",
            "count": 1
          },
          {
            "date": "2021-04-11",
            "count": 1
          },
          {
            "date": "2021-06-11",
            "count": 1
          },
          {
            "date": "2021-06-26",
            "count": 1
          },
          {
            "date": "2021-07-12",
            "count": 1
          },
          {
            "date": "2021-08-04",
            "count": 1
          },
          {
            "date": "2021-08-31",
            "count": 1
          },
          {
            "date": "2021-09-02",
            "count": 1
          },
          {
            "date": "2021-09-06",
            "count": 1
          },
          {
            "date": "2021-09-17",
            "count": 1
          },
          {
            "date": "2021-10-14",
            "count": 1
          },
          {
            "date": "2021-11-06",
            "count": 1
          },
          {
            "date": "2021-12-02",
            "count": 1
          },
          {
            "date": "2022-01-25",
            "count": 1
          },
          {
            "date": "2022-02-11",
            "count": 1
          },
          {
            "date": "2022-02-17",
            "count": 1
          },
          {
            "date": "2022-02-18",
            "count": 1
          },
          {
            "date": "2022-03-13",
            "count": 1
          },
          {
            "date": "2022-03-14",
            "count": 1
          },
          {
            "date": "2022-04-17",
            "count": 1
          },
          {
            "date": "2022-04-24",
            "count": 1
          },
          {
            "date": "2022-04-25",
            "count": 1
          },
          {
            "date": "2022-05-09",
            "count": 1
          },
          {
            "date": "2022-05-26",
            "count": 1
          },
          {
            "date": "2022-06-19",
            "count": 1
          },
          {
            "date": "2022-07-05",
            "count": 1
          },
          {
            "date": "2022-07-11",
            "count": 1
          },
          {
            "date": "2022-09-16",
            "count": 1
          },
          {
            "date": "2022-10-07",
            "count": 1
          },
          {
            "date": "2022-10-25",
            "count": 1
          },
          {
            "date": "2022-11-16",
            "count": 1
          },
          {
            "date": "2023-01-13",
            "count": 1
          },
          {
            "date": "2023-01-17",
            "count": 1
          },
          {
            "date": "2023-02-05",
            "count": 1
          },
          {
            "date": "2023-02-12",
            "count": 1
          },
          {
            "date": "2023-03-25",
            "count": 1
          },
          {
            "date": "2023-04-03",
            "count": 1
          },
          {
            "date": "2023-04-07",
            "count": 1
          },
          {
            "date": "2023-04-27",
            "count": 1
          },
          {
            "date": "2023-05-14",
            "count": 1
          },
          {
            "date": "2023-05-16",
            "count": 1
          },
          {
            "date": "2023-05-26",
            "count": 1
          },
          {
            "date": "2023-06-03",
            "count": 1
          },
          {
            "date": "2023-06-13",
            "count": 1
          },
          {
            "date": "2023-06-14",
            "count": 1
          },
          {
            "date": "2023-06-15",
            "count": 1
          },
          {
            "date": "2023-07-07",
            "count": 1
          },
          {
            "date": "2023-07-10",
            "count": 1
          },
          {
            "date": "2023-07-18",
            "count": 1
          },
          {
            "date": "2023-08-10",
            "count": 1
          },
          {
            "date": "2023-08-20",
            "count": 1
          },
          {
            "date": "2023-08-31",
            "count": 1
          },
          {
            "date": "2023-10-06",
            "count": 1
          },
          {
            "date": "2023-10-09",
            "count": 1
          },
          {
            "date": "2023-10-11",
            "count": 1
          },
          {
            "date": "2023-10-19",
            "count": 1
          },
          {
            "date": "2023-10-27",
            "count": 1
          },
          {
            "date": "2023-10-31",
            "count": 1
          },
          {
            "date": "2023-11-08",
            "count": 1
          },
          {
            "date": "2023-11-09",
            "count": 1
          },
          {
            "date": "2024-02-17",
            "count": 1
          },
          {
            "date": "2024-02-26",
            "count": 1
          },
          {
            "date": "2024-04-17",
            "count": 1
          },
          {
            "date": "2024-04-29",
            "count": 1
          },
          {
            "date": "2024-05-16",
            "count": 1
          },
          {
            "date": "2024-06-03",
            "count": 1
          },
          {
            "date": "2024-07-01",
            "count": 1
          },
          {
            "date": "2024-09-21",
            "count": 1
          },
          {
            "date": "2024-10-26",
            "count": 1
          },
          {
            "date": "2024-11-19",
            "count": 1
          },
          {
            "date": "2024-11-20",
            "count": 1
          },
          {
            "date": "2024-12-20",
            "count": 1
          },
          {
            "date": "2025-03-14",
            "count": 1
          },
          {
            "date": "2025-04-01",
            "count": 1
          },
          {
            "date": "2025-04-07",
            "count": 2
          },
          {
            "date": "2025-04-11",
            "count": 1
          },
          {
            "date": "2025-04-15",
            "count": 1
          },
          {
            "date": "2025-04-22",
            "count": 1
          },
          {
            "date": "2025-05-06",
            "count": 1
          },
          {
            "date": "2025-05-23",
            "count": 1
          },
          {
            "date": "2025-05-27",
            "count": 1
          },
          {
            "date": "2025-05-28",
            "count": 1
          },
          {
            "date": "2025-05-29",
            "count": 3
          },
          {
            "date": "2025-05-30",
            "count": 1
          },
          {
            "date": "2025-05-31",
            "count": 1
          },
          {
            "date": "2025-06-16",
            "count": 1
          },
          {
            "date": "2025-06-21",
            "count": 1
          },
          {
            "date": "2025-07-15",
            "count": 1
          },
          {
            "date": "2025-08-04",
            "count": 1
          },
          {
            "date": "2025-08-21",
            "count": 1
          },
          {
            "date": "2025-08-24",
            "count": 1
          },
          {
            "date": "2025-08-28",
            "count": 1
          },
          {
            "date": "2025-10-24",
            "count": 2
          },
          {
            "date": "2025-10-27",
            "count": 1
          },
          {
            "date": "2026-01-03",
            "count": 1
          },
          {
            "date": "2026-01-14",
            "count": 1
          },
          {
            "date": "2026-01-24",
            "count": 1
          },
          {
            "date": "2026-02-02",
            "count": 1
          },
          {
            "date": "2026-02-26",
            "count": 1
          },
          {
            "date": "2026-03-02",
            "count": 1
          },
          {
            "date": "2026-03-09",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 1
          },
          {
            "date": "2026-04-02",
            "count": 1
          },
          {
            "date": "2026-04-10",
            "count": 1
          },
          {
            "date": "2026-04-14",
            "count": 1
          },
          {
            "date": "2026-04-26",
            "count": 1
          },
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-06-04",
            "count": 4
          },
          {
            "date": "2026-06-05",
            "count": 3
          },
          {
            "date": "2026-06-06",
            "count": 1
          },
          {
            "date": "2026-06-07",
            "count": 2
          },
          {
            "date": "2026-06-08",
            "count": 3
          },
          {
            "date": "2026-06-10",
            "count": 3
          },
          {
            "date": "2026-06-11",
            "count": 2
          },
          {
            "date": "2026-06-12",
            "count": 2
          },
          {
            "date": "2026-06-14",
            "count": 1
          },
          {
            "date": "2026-06-16",
            "count": 1
          },
          {
            "date": "2026-07-19",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 192,
        "total_forks": 195
      },
      "star_history": null,
      "open_issues_and_prs": 50
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 216479,
      "source_files_sampled": 149,
      "oversized_source_files": 11,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [],
      "advisories": {
        "error": "No resolved dependencies to assess",
        "scope": "repository_graph",
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [],
        "collected": true,
        "truncated": false,
        "total_count": 0,
        "direct_count": 0,
        "indirect_count": 0
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 8,
        "merged_prs": 410,
        "open_issues": 42,
        "closed_ratio": 0.865,
        "closed_issues": 268,
        "closed_unmerged_prs": 66
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "TysonRayJones",
          "commits": 1006,
          "avatar_url": "https://avatars.githubusercontent.com/u/29574749?v=4"
        },
        {
          "type": "User",
          "login": "aniabrown",
          "commits": 280,
          "avatar_url": "https://avatars.githubusercontent.com/u/1617558?v=4"
        },
        {
          "type": "User",
          "login": "oerc0122",
          "commits": 59,
          "avatar_url": "https://avatars.githubusercontent.com/u/46597752?v=4"
        },
        {
          "type": "User",
          "login": "rrmeister",
          "commits": 19,
          "avatar_url": "https://avatars.githubusercontent.com/u/80358408?v=4"
        },
        {
          "type": "User",
          "login": "fcooper8472",
          "commits": 16,
          "avatar_url": "https://avatars.githubusercontent.com/u/3770306?v=4"
        },
        {
          "type": "User",
          "login": "nfwvogt",
          "commits": 10,
          "avatar_url": "https://avatars.githubusercontent.com/u/45093608?v=4"
        },
        {
          "type": "User",
          "login": "otbrown",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/8394906?v=4"
        },
        {
          "type": "User",
          "login": "eessmann",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/11630432?v=4"
        },
        {
          "type": "User",
          "login": "drewsilcock",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/14921224?v=4"
        },
        {
          "type": "User",
          "login": "chr5tphr",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/15217558?v=4"
        }
      ],
      "contributors_sampled": 18,
      "top_contributor_share": 0.712
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "audit.yml",
        "compile.yml",
        "doc.yml",
        "test_free.yml",
        "test_paid.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "23 out of 23 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 2/23 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 11 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "0 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "9d7618d7263e3bfba433b88cf1eac0647f08fa0a",
        "ran_at": "2026-07-24T17:22:59Z",
        "aggregate_score": 4.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2025-10-14T04:44:57Z",
      "oldest_open_prs": [
        {
          "number": 615,
          "created_at": "2025-05-06T17:19:28Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 726,
          "created_at": "2026-04-16T14:31:10Z",
          "last_comment_at": "2026-07-24T13:41:30Z",
          "last_comment_author": "otbrown"
        },
        {
          "number": 774,
          "created_at": "2026-06-03T02:55:12Z",
          "last_comment_at": "2026-06-03T10:20:23Z",
          "last_comment_author": "otbrown"
        },
        {
          "number": 785,
          "created_at": "2026-06-08T03:11:39Z",
          "last_comment_at": "2026-06-21T17:00:42Z",
          "last_comment_author": "TysonRayJones"
        },
        {
          "number": 790,
          "created_at": "2026-06-11T15:16:28Z",
          "last_comment_at": "2026-06-16T14:20:55Z",
          "last_comment_author": "thedaemon-wizard"
        },
        {
          "number": 791,
          "created_at": "2026-06-12T22:39:54Z",
          "last_comment_at": "2026-06-15T18:10:55Z",
          "last_comment_author": "TysonRayJones"
        },
        {
          "number": 798,
          "created_at": "2026-06-16T17:46:47Z",
          "last_comment_at": "2026-06-16T19:42:07Z",
          "last_comment_author": "VinaYrdx"
        },
        {
          "number": 811,
          "created_at": "2026-07-07T22:22:22Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-06-30T04:19:00Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 10,
          "created_at": "2018-05-03T11:08:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 11,
          "created_at": "2018-05-03T11:10:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 153,
          "created_at": "2019-06-15T01:30:19Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 201,
          "created_at": "2020-01-12T16:20:48Z",
          "last_comment_at": "2020-01-13T15:24:07Z",
          "last_comment_author": "TysonRayJones"
        },
        {
          "number": 543,
          "created_at": "2025-02-20T10:50:58Z",
          "last_comment_at": "2026-05-19T03:00:40Z",
          "last_comment_author": "TysonRayJones"
        },
        {
          "number": 588,
          "created_at": "2025-04-19T16:40:50Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 597,
          "created_at": "2025-04-27T15:25:29Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 599,
          "created_at": "2025-04-28T13:24:29Z",
          "last_comment_at": "2025-07-05T00:27:10Z",
          "last_comment_author": "TysonRayJones"
        },
        {
          "number": 602,
          "created_at": "2025-04-30T22:27:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 603,
          "created_at": "2025-04-30T22:48:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 604,
          "created_at": "2025-04-30T23:06:49Z",
          "last_comment_at": "2025-05-02T13:09:55Z",
          "last_comment_author": "TysonRayJones"
        },
        {
          "number": 620,
          "created_at": "2025-05-18T20:26:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 639,
          "created_at": "2025-06-03T12:21:39Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 640,
          "created_at": "2025-06-03T19:02:40Z",
          "last_comment_at": "2026-06-22T06:14:02Z",
          "last_comment_author": "TysonRayJones"
        },
        {
          "number": 642,
          "created_at": "2025-06-05T16:40:28Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 644,
          "created_at": "2025-06-10T21:05:22Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 651,
          "created_at": "2025-06-19T10:06:29Z",
          "last_comment_at": "2025-09-21T19:43:25Z",
          "last_comment_author": "TysonRayJones"
        },
        {
          "number": 662,
          "created_at": "2025-07-21T13:21:19Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 665,
          "created_at": "2025-07-21T17:31:23Z",
          "last_comment_at": "2025-07-21T23:04:25Z",
          "last_comment_author": "TysonRayJones"
        },
        {
          "number": 666,
          "created_at": "2025-07-21T19:33:06Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/QuEST-Kit/QuEST",
    "host": "github.com",
    "name": "QuEST",
    "owner": "QuEST-Kit"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 61,
      "inputs": {
        "security": 43,
        "vitality": 58,
        "community": 70,
        "governance": 54,
        "engineering": 77
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 58,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 56,
            "inputs": {
              "commits_last_year": 17,
              "human_commit_share": 1,
              "days_since_last_push": 8,
              "active_weeks_last_year": 9
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 8 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "9/52 weeks with commits",
                "points": 6.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 9
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "17 commits in the last year",
                "points": 11.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 17
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "0 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "moderate",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 62,
            "inputs": {
              "releases_count": 25,
              "latest_release_tag": "v4.2.0",
              "releases_from_tags": false,
              "days_since_latest_release": 283,
              "mean_days_between_releases": 176.7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "25 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 25
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 283 days ago",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 283
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~176.7 days",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 176.7
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "dormant",
              "guards": [
                "maintainer_replying",
                "recent_release"
              ],
              "signals": [
                "issue_rot"
              ],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": 1,
              "unanswered_open_issues": 13,
              "days_since_last_merged_pr": 24,
              "days_since_last_human_commit": 283,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "no human commit for 283 days, with nothing left unanswered; held at dormant by a maintainer still replying, a release within the year",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_quiet",
                    "params": {
                      "days": 283
                    }
                  },
                  {
                    "code": "abandonment_guarded",
                    "params": {
                      "guards": "a maintainer still replying, a release within the year"
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 70,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "forks": 195,
              "stars": 483,
              "watchers": 19,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "483 stars",
                "points": 43.5,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 483
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "195 forks",
                "points": 19.1,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 195
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "19 watchers",
                "points": 7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 19
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 54,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 39,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 18,
              "top_contributor_share": 0.712
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 71% of commits",
                "points": 6.5,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 71
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "18 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 18
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 11 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "merged_prs": 410,
              "open_issues": 42,
              "closed_issues": 268,
              "issue_closed_ratio": 0.865,
              "closed_unmerged_prs": 66
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "86% of issues closed",
                "points": 40.4,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 86
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "410/476 decided PRs merged",
                "points": 32.9,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 410,
                      "decided": 476
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 2/23 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "followers": 15,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "QuEST-Kit",
              "public_repos": 2,
              "account_age_days": 2777
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "15 followers of QuEST-Kit",
                "points": 8.7,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 15,
                      "login": "QuEST-Kit"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "2 public repos, account ~7 yr old",
                "points": 15.5,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 2
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 7
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 77,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "5 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "23 out of 23 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": "https://quest.qtechtheory.org/",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://quest.qtechtheory.org/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 43,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 43,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 4.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "23 out of 23 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 2/23 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 11 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "0 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 9
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "at_risk",
        "name": "AI Readiness",
        "value": 46,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.75,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "75 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 75,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 33,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "C++ (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C++"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 96,
            "inputs": {
              "primary_language": "C++",
              "largest_source_bytes": 216479,
              "source_files_sampled": 149,
              "oversized_source_files": 11
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "C++ (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C++"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "11/149 source files over 60KB",
                "points": 50.9,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 149,
                      "oversized": 11
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-24T17:23:22.446153Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/q/QuEST-Kit/QuEST.svg",
  "full_name": "QuEST-Kit/QuEST",
  "license_state": "standard",
  "license_spdx": "MIT"
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.27.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计.