Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-24 17:23 UTC

QuEST-Kit / QuEST

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

C++MIT★ 483 Sterne⑂ 195 Forksseit März 2017Auf GitHub ansehen ↗

QuEST-Kit/QuEST erreicht einen Gesundheitsindex von 61 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Engineering Quality (77/100) ab, am schwächsten bei Security (43/100). Zuletzt vor 8 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

61
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

61
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

QuEST-KitOrganisation
15 Follower2 öffentliche Reposseit Dez. 2018

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

58Mittel · 22 % des Gesamtindex
Wie die Bewertung erfolgt
28.8/36Push-Aktualität — letzter Push vor 8 Tagen
6.2/36Commit-Rhythmus — 9/52 Wochen mit Commits
11.3/18Commit-Volumen — 17 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 0 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year17
human_commit_share1
days_since_last_push8
active_weeks_last_year9
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 25 Releases veröffentlicht
16.2/36Release-Aktualität — letztes Release vor 283 Tagen
12.6/27Release-Rhythmus — ein Release etwa alle 176,7 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count25
latest_release_tagv4.2.0
releases_from_tagsnein
days_since_latest_release283
mean_days_between_releases176,7
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

70Gut · 18 % des Gesamtindex
Wie die Bewertung erfolgt
43.5/60Stars — 483 Stars
19.1/25Forks — 195 Forks
7/15Watcher — 19 Watcher
Verwendete Eingangsdaten
forks195
stars483
watchers19
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
18/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingja
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

54Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
6.5/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 71 % der Commits
13.5/13.5Breite der Beitragenden — 18 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 11 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor1
contributors_sampled18
top_contributor_share0,712
Wie die Bewertung erfolgt
40.4/46.8Issue-Lösungsquote — 86 % der Issues geschlossen
32.9/38.3PR-Annahme — 410/476 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 2/23 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs410
open_issues42
closed_issues268
issue_closed_ratio0,865
closed_unmerged_prs66
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
8.7/25Reichweite des Inhabers — 15 Follower von QuEST-Kit
15.5/25Kontohistorie — 2 öffentliche Repos, Kontoalter ca. 7 Jahre
Verwendete Eingangsdaten
followers15
owner_typeOrganization
is_verified
owner_loginQuEST-Kit
public_repos2
account_age_days2.777

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

77Gut · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 5 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 23 out of 23 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein

Dokumentation

90Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://quest.qtechtheory.org/
10/10Repository-Beschreibung
0/10Topics
10/10Wiki
Verwendete Eingangsdaten
topics
has_wikija
homepagehttps://quest.qtechtheory.org/
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

43Gefährdet · 16 % des Gesamtindex

Sicherheitslage

43Gefährdet
Wie die Bewertung erfolgt
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.5Lizenz — 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 — keine Daten
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 — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4,3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): packaging, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

46Gefährdet · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 75 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,75
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — C++ (statisch typisiert)
0/10Reproduzierbare Umgebung
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfiles
has_dockerfilenein
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — C++ (statisch typisiert)
50.9/55Handhabbare Dateigrößen — 11/149 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageC++
largest_source_bytes216.479
source_files_sampled149
oversized_source_files11
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalnein
api_schema_files

Eckdaten

483GitHub-Sterne
18Mitwirkende
17Commits, letzte 12 Monate
8Tage seit letztem Push
25Releases
1Bus-Faktor
42offene Issues
Paket-Ökosysteme

Warnungen zur Datenerhebung

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

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 195 ⇿
0Sterne
195Forks
19Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

04080120160200192112018-052022-062026-07
Major 3Minor 11Patch 5

Jeder Punkt umfasst 8 Tage.

OpenSSF Scorecard 4.3 / 10
4.3Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).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
k. A.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
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Alle Abhängigkeiten 0

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 0 direkte und 0 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

RegistryPaketVersionBeziehung
Abhängigkeits-Advisories nicht bewertet

Der Advisory-Abgleich konnte für diesen Bericht nicht ausgeführt werden: No resolved dependencies to assess

JSON-Rohbericht maschinenlesbar
{
  "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"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistiken.