Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-24 17:23 UTC

QuEST-Kit / QuEST

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

C++MIT★ 483 estrellas⑂ 195 forksdesde mar 2017Ver en GitHub ↗

QuEST-Kit/QuEST tiene un índice de salud de 61 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Engineering Quality (77/100) y la más baja, Security (43/100). Se actualizó por última vez hace 8 días. Una sola persona concentra la mayor parte del trabajo reciente.

61
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

61
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

QuEST-KitOrganización
15 seguidores2 repositorios públicosdesde dic 2018

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

58Moderado · 22% del índice global
Cómo se puntúa
28.8/36Recencia de push — último push hace 8 días
6.2/36Cadencia de commits — 9/52 semanas con commits
11.3/18Volumen de commits — 17 commits en el último año
10/10OpenSSF Scorecard: Maintained — 0 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year17
human_commit_share1
days_since_last_push8
active_weeks_last_year9
Cómo se puntúa
27/27Publica versiones — 25 versiones publicadas
16.2/36Recencia de las versiones — última versión hace 283 días
12.6/27Cadencia de publicación — una versión cada ~176,7 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count25
latest_release_tagv4.2.0
releases_from_tagsno
days_since_latest_release283
mean_days_between_releases176,7
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

70Bueno · 18% del índice global
Cómo se puntúa
43.5/60Estrellas — 483 estrellas
19.1/25Forks — 195 forks
7/15Observadores — 19 observadores
Datos de entrada utilizados
forks195
stars483
watchers19
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
18/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

54Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
6.5/22.5Distribución de commits — el principal contribuyente firma el 71% de los commits
13.5/13.5Amplitud de contribuyentes — 18 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 11 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled18
top_contributor_share0,712
Cómo se puntúa
40.4/46.8Resolución de issues — 86% de issues cerradas
32.9/38.3Aceptación de PR — 410/476 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 2/23 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs410
open_issues42
closed_issues268
issue_closed_ratio0,865
closed_unmerged_prs66
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
8.7/25Alcance del propietario — 15 seguidores de QuEST-Kit
15.5/25Trayectoria — 2 repos públicos, cuenta de ~7 años
Datos de entrada utilizados
followers15
owner_typeOrganization
is_verified
owner_loginQuEST-Kit
public_repos2
account_age_days2777

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

77Bueno · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 5 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 23 out of 23 merged PRs checked by a CI test -- score normalized to 10
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno

Documentación

90Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://quest.qtechtheory.org/
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepagehttps://quest.qtechtheory.org/
has_readme
has_docs_dir
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

43En riesgo · 16% del índice global
Cómo se puntúa
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.5Licencia — 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 — sin datos
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 — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4,3
Excluidos de la puntuación (sin datos o no aplicable): packaging, signed_releases. Los pesos restantes se han renormalizado.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

46En riesgo · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 75 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,75
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — C++ (tipado estático)
0/10Entorno reproducible
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 100
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — C++ (tipado estático)
50.9/55Tamaños de archivo manejables — 11/149 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageC++
largest_source_bytes216.479
source_files_sampled149
oversized_source_files11
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signalno
api_schema_files

Datos clave

483estrellas de GitHub
18contribuidores
17commits en los últimos 12 meses
8días desde el último push
25versiones publicadas
1factor bus
42issues abiertas
ecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

Historial de estrellas y forks 0 ★ / 195 ⇿
0Estrellas
195Forks
19Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

04080120160200192112018-052022-062026-07
Mayor 3Menor 11Parche 5

Cada punto abarca 8 días.

OpenSSF Scorecard 4.3 / 10
4.3agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).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
n/dPackagingpackaging 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
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Todas las dependencias 0

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 0 paquetes directos y 0 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

RegistroPaqueteVersiónRelación
Avisos de dependencias sin evaluar

El cotejo de avisos no pudo ejecutarse para este informe: No resolved dependencies to assess

Informe JSON sin procesar legible por máquina
{
  "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"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadas.