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

Fheyalabs / ARES-core

Go · Swift · C++Apache-2.0★ 0 estrellas⑂ 0 forksdesde may 2026Ver en GitHub ↗

Fheyalabs/ARES-core tiene un índice de salud de 52 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Vitality (77/100) y la más baja, Security (27/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

52
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.

52
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

FheyalabsOrganización
0 seguidores1 repositorio públicodesde mar 2026

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

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
Gogithub.com/Fheyalabs/ares-corev0.9.15-27hace 0 días

Métricas por categoría

Vitalidad

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

77Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
7.6/36Cadencia de commits — 11/52 semanas con commits
18/18Volumen de commits — 256 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year256
human_commit_share1
days_since_last_push0
active_weeks_last_year11
Cómo se puntúa
27/27Publica versiones — 12 versiones publicadas
36/36Recencia de las versiones — última versión hace 27 días
27/27Cadencia de publicación — una versión cada ~4,1 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count12
latest_release_tagv0.9.8
releases_from_tagsno
days_since_latest_release27
mean_days_between_releases4,1
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?

43En riesgo · 18% del índice global
Cómo se puntúa
0/60Estrellas — 0 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (Apache-2.0)
18/18Guía CONTRIBUTING
13.5/13.5Código de conducta
0/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_templateno
has_code_of_conduct
has_pull_request_template

Sostenibilidad y Gobernanza

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

49En riesgo · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
38.2/38.3Aceptación de PR — 16/16 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs16
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
0/25Alcance del propietario — 0 seguidores de Fheyalabs
2.8/25Trayectoria — 1 repos públicos, cuenta de ~0 años
Datos de entrada utilizados
followers0
owner_typeOrganization
is_verified
owner_loginFheyalabs
public_repos1
account_age_days119
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en go
35/35Recencia de publicación — última publicación hace 0 días
20/20Historial de versiones — 27 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesgithub.com/Fheyalabs/ares-core
ecosystemsgo
any_deprecatedno
min_days_since_publish0

Calidad de Ingeniería

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

58Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 3 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.

Documentación

55Moderado
Cómo se puntúa
30/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
0/10Descripción del repositorio
0/10Topics
0/10Wiki
Datos de entrada utilizados
topics
has_wikino
homepage
has_readme
has_docs_dir
has_descriptionno

Seguridad

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

27Crítico · 16% del índice global
Cómo se puntúa
6.8/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — sin datos
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
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
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — sin datos
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 18 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate2,7
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, 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.

59Moderado · 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 — 100 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
12.6/18Arranque con un solo comando — clients/kotlin/ares-client-fhe/build.gradle.kts, clients/kotlin/ares-client/build.gradle.kts, clients/kotlin/ares-smoke/build.gradle.kts (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — Go (tipado estático)
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 59 de los últimos 100 commits con autoría o crédito de agente
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
lockfilesgo.sum
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,59
toolchain_manifestsclients/kotlin/ares-client-fhe/build.gradle.kts, clients/kotlin/ares-client/build.gradle.kts, clients/kotlin/ares-smoke/build.gradle.kts, clients/kotlin/build.gradle.kts, go.mod
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — Go (tipado estático)
54.7/55Tamaños de archivo manejables — 2/351 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageGo
largest_source_bytes156.261
source_files_sampled351
oversized_source_files2
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

0estrellas de GitHub
1contribuidores
256commits en los últimos 12 meses
0días desde el último push
12versiones publicadas
1factor bus
0issues abiertas
Goecosistemas de paquetes

Advertencias de recopilación de datos

  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Más detalle

OpenSSF Scorecard 2.7 / 10
2.7agregado

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-22 21:07 UTC

9Binary-Artifactsbinaries present in source code
0Branch-Protectionbranch protection not enabled on development/release branches
n/dCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
n/dPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
10Security-Policysecurity policy file detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities18 existing vulnerabilities detected
Dependencias directas 2
RegistroPaqueteRestricción de versiónManifiesto
Gogithub.com/gorilla/websocketv1.5.3go.mod
Gogolang.org/x/cryptov0.31.0go.mod
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 7780,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "C": 23464,
        "Go": 889816,
        "C++": 163640,
        "CMake": 1627,
        "Shell": 8914,
        "Swift": 177182,
        "Kotlin": 101085,
        "Python": 117753
      },
      "pushed_at": "2026-07-22T01:48:02Z",
      "created_at": "2026-05-12T11:21:00Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-18T06:19:58Z",
      "description": null,
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Go",
      "significant_languages": [
        "Go",
        "Swift",
        "C++"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "Organization",
      "login": "Fheyalabs",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/271052521?v=4",
      "created_at": "2026-03-25T19:15:16Z",
      "is_verified": null,
      "public_repos": 1,
      "account_age_days": 119
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.9.8",
          "kind": "patch",
          "published_at": "2026-06-25T15:21:59Z"
        },
        {
          "tag": "v0.9.7",
          "kind": "patch",
          "published_at": "2026-06-25T00:47:19Z"
        },
        {
          "tag": "v0.9.6",
          "kind": "patch",
          "published_at": "2026-06-24T21:02:47Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-06-14T15:42:10Z"
        },
        {
          "tag": "v0.7.5",
          "kind": "patch",
          "published_at": "2026-06-03T00:50:42Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-05-31T11:07:59Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2026-05-30T23:00:22Z"
        },
        {
          "tag": "v0.4.1",
          "kind": "patch",
          "published_at": "2026-05-28T17:09:01Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-05-28T14:22:17Z"
        },
        {
          "tag": "v0.3.2",
          "kind": "patch",
          "published_at": "2026-05-19T11:41:20Z"
        },
        {
          "tag": "v0.3.1",
          "kind": "patch",
          "published_at": "2026-05-19T06:37:55Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-05-19T05:48:46Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "6290743865d53da7b8d28b5e10087fadae9869eb",
          "body": null,
          "is_bot": false,
          "headline": "feat(transport): add websocket replay cursor",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-07-18T06:18:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "665facd97c1205e36be5a0210dd8a0dc77b4cb6f",
          "body": null,
          "is_bot": false,
          "headline": "fix(transport): preserve raw inbound payloads",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-07-18T05:44:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf51c9b1d02478a2a83416e63ed947672079c135",
          "body": null,
          "is_bot": false,
          "headline": "feat(swift): expose encrypted BFV distance inputs",
          "author_name": "Hardik",
          "author_login": "grussdorian",
          "committed_at": "2026-07-18T00:35:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65f23ac9fc2cf6032d224156a1582518a1a465b1",
          "body": null,
          "is_bot": false,
          "headline": "feat(bfv): add ciphertext-only blind fallback",
          "author_name": "Hardik",
          "author_login": "grussdorian",
          "committed_at": "2026-07-17T23:48:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fb119e692367cf16fb1b0dfa04e5db5db71e1b35",
          "body": null,
          "is_bot": false,
          "headline": "docs: add encrypted input ranking example",
          "author_name": "Hardik",
          "author_login": "grussdorian",
          "committed_at": "2026-07-17T22:00:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "241422057ab1a6a697fc78429b8729ff07369eb6",
          "body": null,
          "is_bot": false,
          "headline": "release: prepare ares-core v0.9.13",
          "author_name": "Hardik",
          "author_login": "grussdorian",
          "committed_at": "2026-07-17T21:54:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7111402436271edd24bdf322868c88a92a658ea3",
          "body": null,
          "is_bot": false,
          "headline": "fix(phase): route keygen round-one messages",
          "author_name": "Hardik",
          "author_login": "grussdorian",
          "committed_at": "2026-07-17T21:43:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5596735a3f36028ba1199edeeb5fb154a809c05a",
          "body": null,
          "is_bot": false,
          "headline": "feat(ckks): accept encrypted distances",
          "author_name": "Hardik",
          "author_login": "grussdorian",
          "committed_at": "2026-07-17T21:43:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f1e32863b6e8505e3a7fc97fe0e30ab95e73791",
          "body": null,
          "is_bot": false,
          "headline": "feat(clients): encrypt chunked payloads",
          "author_name": "Hardik",
          "author_login": "grussdorian",
          "committed_at": "2026-07-17T21:43:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45e1b327002ea2fdb458888238160fffcdba0d05",
          "body": null,
          "is_bot": false,
          "headline": "feat(ckks): fan out encrypted payload union",
          "author_name": "Hardik",
          "author_login": "grussdorian",
          "committed_at": "2026-07-17T21:43:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb136cd3cb83bb11671a827dedbbf0fded82170b",
          "body": null,
          "is_bot": false,
          "headline": "feat(cgo): support encrypted payload fusion",
          "author_name": "Hardik",
          "author_login": "grussdorian",
          "committed_at": "2026-07-17T21:43:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ffc4ac5d6619271ba79c32d794eb565e6141bec",
          "body": null,
          "is_bot": false,
          "headline": "feat(crypto): expose OpenFHE global context release",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-07-04T12:02:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01ce9a2c36821bb1409cdad58f89a9c5b7c5b552",
          "body": null,
          "is_bot": false,
          "headline": "fix(crypto): clear OpenFHE eval keys on context close",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-07-04T11:51:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "180e363f82bcc096d5a8f39852c37a06b2b404ea",
          "body": null,
          "is_bot": false,
          "headline": "docs: release ares-core v0.9.10",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-07-04T10:51:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5dcb3d6bf2dd9912228bac833b75de7bfc4d69b4",
          "body": null,
          "is_bot": false,
          "headline": "feat(crypto): eval product sum with per-index refs",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-07-04T09:45:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0fd87fa2d52183f526540cd5ef27567c4217b9d",
          "body": "…en fix\n\nAdd ChunkedUnionScoreCKKSWithEvalSumRefs, the per-index (b-only / CRS-seeded)\ncounterpart of ChunkedUnionScoreCKKSWithConcurrency. The threshold eval-sum fold\nkeys arrive as per-index a/b vector refs (the wire-reduced keygen) instead of one\nmonolithic serialized key map; this reconstructs t\n[…]\nTestBOnlyUnionDeepCircuitRecovers\ncovers the full secure b-only union path; TestSingularPerIndexEvalSumSharedA pins\nthe shared-a invariant after an eval-mult round1 (the regression for the fix above).",
          "is_bot": false,
          "headline": "feat(crypto): per-index b-only eval-sum union scoring + shared-a keyg…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-29T23:36:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3ff0726855034fa78eaded380d8f222d7affb5fa",
          "body": "…oothstep\n\nAn unset SelectorSchedule was defaulted to the 4-pass selector-sharpen\nschedule \"smoothstep5,smoothstep5,smoothstep5,smoothstep7\" in two places:\nthe Go fuse boundary (defaultStringGo in FullFusePayloadCKKS[WithContext]\nand ChunkedFusePayloadCKKS[WithContext]) and the native split_schedule\n[…]\n ring 32768 / depth 16, dim 128, n=6 / 5 candidates,\nreal EmbeddingGemma: union 6/6, >=2-recovered 6/6, redundancy_wrong 0/6,\n~106 s/cohort (vs ~136 s/cohort on the old ring-65536 / depth-23 circuit).",
          "is_bot": false,
          "headline": "fix(crypto): empty selector schedule is no-op, not a hidden 4-pass sm…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-25T15:21:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bf8ddd474a15333cd2fee118ebe9d5482cbb730d",
          "body": "The retune was first tagged v0.9.6.1, which is a 4-part string and not a\nvalid Go-module version (the proxy only resolves vMAJOR.MINOR.PATCH).\nRelabel the changelog entry to 0.9.7 so the tag, release, and changelog\nagree and the module stays go-gettable.",
          "is_bot": false,
          "headline": "docs(changelog): label the family-diverse union retune as 0.9.7",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-25T00:46:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc6608fe5d8fac2161ae26226ee54a0a34673b56",
          "body": "The default union CKKSRing32KUnionV1 shipped three logistic/selector\nlanes: ss5 (selector), logi_g4_b3_d13, logi_g3_b6_d13. A 100-cohort\nfull-Fheya-score sweep that scored seven candidate lanes on the same\ncohorts (then computed every lane-subset's union post-hoc) shows the\nrecovery ceiling is set b\n[…]\nCKKSRing32KUnionV1 pick up\nthe better lanes automatically.\n\nValidation: wiki summaries/ares-core-v0-9-5-ckks-bfv-validation.md\n(2026-06-25 section); run artifacts testbench/v28/runs/ckks_100_lanes7.*.",
          "is_bot": false,
          "headline": "feat(profiles): diversify default CKKS union by comparator family",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-25T00:43:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fb15cdc882e84d69b09cf46ab98f2c2bf6f81ff0",
          "body": "ChunkedUnionScoreCKKS ran the union comparator lanes sequentially against\none shared CKKS context. This adds ChunkedUnionScoreCKKSWithConcurrency to\nrun those lanes concurrently; ChunkedUnionScoreCKKS now delegates to it with\nconcurrency 1 so existing callers are unchanged.\n\nThe shared context made \n[…]\necision 0/200, all_closed_fallback_to_bfv\n5/200 (the 5 tightest near-ties, margins <= 0.0017), peak RSS 6.4 GiB.\n\nTests: TestClampUnionConcurrency, TestUnionComparatorRequestCanUsePreinsertedEvalKeys.",
          "is_bot": false,
          "headline": "feat(crypto): concurrent comparator fanout with preinserted eval keys",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-24T20:56:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0a9cba55d9f77460c1a403c616caf9e510b09db9",
          "body": null,
          "is_bot": false,
          "headline": "feat(crypto): add BFV fallback and chunked CKKS union",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-23T21:50:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "794b8eae5660eeedeeba1dd8a21c61f698ba4287",
          "body": null,
          "is_bot": false,
          "headline": "perf(openfhe): stream per-index eval-sum keys into scoring",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-18T18:50:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c73ed6a4b231c18c8d886b5f31f393aaf56229da",
          "body": "generatePerIndexEvalSumKey and generatePerIndexEvalSumShare now return\nRotKey handles directly instead of serialized Data. This eliminates\nthe serialize->deserialize roundtrip in the Mac client keygen loop.",
          "is_bot": false,
          "headline": "perf(swift): add handle-returning per-index eval-sum keygen methods",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-18T16:28:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd6a8abbdfa32ef88645f89783e128e8f4d4e235",
          "body": "The a-vectors are byte-identical across parties (proven by\nbonly_keygen_prototype), but combineEvalSumPerIndexLazy was resolving\nand deserializing them fresh for each party × each index: 102\nredundant 45 MB downloads + 102 redundant C++ deserializations for a\n6-party × 17-index combine.\n\nAdd a two-l\n[…]\nim=128 ring=2^16:\n- 85 fewer artifact downloads (~3.8 GB)\n- 85 fewer C++ deserializations (~3.8 GB of DCRTPoly work)\n- Combine latency ~6× faster\n\nNo wire change, no client change, no protocol change.",
          "is_bot": false,
          "headline": "perf(crypto): cache A-vectors in combineEvalSumPerIndexLazy",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-18T16:16:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "996353a06bd7563dd3dd4eb341355d608d013163",
          "body": null,
          "is_bot": false,
          "headline": "feat(crypto): support b-only per-index eval-sum refs",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-18T10:58:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7520f926c1370a656d38a2c59874f8c3f5ebd0b0",
          "body": null,
          "is_bot": false,
          "headline": "feat(crypto): lazily combine per-index eval-sum refs",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-17T22:16:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c568d0797de645c0d7a4f4c46bc2255a8169e1c",
          "body": null,
          "is_bot": false,
          "headline": "feat(crypto): combine eval-sum shares per index",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-17T21:50:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dbdf968b9fd8a3a539225eda8854c1e9d89cef2c",
          "body": "- C++ GeneratePerIndexEvalSumKey / GetMinimalRotationIndices\n- Swift CryptoContext wrappers for per-index (never-merged) keygen\n- MacClient emits eval_sum_round1_keys array instead of merged blob\n- Server orchestrator accepts both legacy and per-index format\n\nRing=2^16 still tight on Mac due to base64 accumulation in JSON.\nServer+homelab CI handles ring=2^16; Mac client validated at ring=2^15.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(swift): per-index rotation keygen — wire format change",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-17T13:34:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "afef86e22c9aaccc2d50257cc22247479f0f9746",
          "body": "…scoring\n\nARESFullFusePayloadCKKS now takes an optional CryptoContextHandle as first\nparameter. When non-NULL, the provided context is reused instead of creating\na new one (~4 GB savings at ring 2^16). When NULL, behavior is unchanged.\n\nAlso: FullFusePayloadCKKSWithContext Go wrapper, concatCandidat\n[…]\nCiphertexts\nhelper.\n\nThis is the last piece for ring=2^16 e2e testing on 16 GB Mac — one context\nshared across keygen, eval-key generation, and scoring.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(crypto): add FullFusePayloadCKKSWithContext — reuse context for …",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-15T21:01:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0701d0d558beaaae6af71b1bc4e262987991a53f",
          "body": "…shared context\n\nFinalize now only frees the CKKS context if ownsCtx=true.\nNewEvalSumIncrementalFold sets ownsCtx=true (owns its context).\nNewEvalSumIncrementalFoldWithContext sets ownsCtx=false (caller owns).\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(crypto): EvalSumIncrementalFold ownsCtx flag — don't double-free …",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-15T20:40:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c06f4a0dcdc60fe684bd7f87ec62eb91c40f75f1",
          "body": "Adds StreamedEvalSumKeyGenLead and StreamedEvalSumKeyShare in C++,\nplus Go wrappers via shared context. These generate rotation keys one\nindex at a time, merging into an accumulator, so peak C++ RAM is\nbounded to a single rotation key (~90 MB at ring 2^16) rather than\nthe full map (~1.5 GB for 17 minimal indices).\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(crypto): streamed rotation-key gen — one index at a time",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-15T20:30:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6ae55226ec4051dfa535812cbc005c196975e49f",
          "body": "…otocol\n\nAdds CryptoContext type + NewCryptoContext/Close, plus WithContext\nvariants of EvalKeyRound1Lead, EvalKeyRound1Participant,\nEvalKeyRound2Participant, CombineEvalMultSwitchShares,\nNewEvalSumIncrementalFold, and CombineEvalKeyRound2.\n\nCallers create one context (~3 GB at ring 2^16) and reuse it across\nall eval-key operations, instead of paying per-call context allocation.\nThis is load-bearing for ring=2^16 on 16 GB machines.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(crypto): add shared-context WithContext variants for eval-key pr…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-15T20:26:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "433e77cb721fdcad580f8488d2d0b2012c0c0c90",
          "body": "Lets callers combine eval-mult shares independently when eval-sum\nshares have been folded incrementally via EvalSumIncrementalFold.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(crypto): add standalone CombineEvalMultSwitchShares",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-15T20:21:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "21d884a757b838f4ef66249e9dcff3dd5355a874",
          "body": "Adds NewEvalSumIncrementalFold / Fold / Finalize so callers can fold\neval-sum shares one at a time, nil-ing each share's []byte immediately.\nPeak Go-side RAM stays at accumulator + one share instead of all N.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(crypto): expose step-by-step incremental eval-sum fold API",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-15T20:20:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "951cfa14af1665511bed4cb333dc02bf51ad4756",
          "body": "Round 1 combine deserialized every eval-sum (rotation) share at once before\nfolding, so at ring 2^16 it held all N rotation-key maps resident together (the\nmulti-GB peak). It now folds via combineEvalSumIncremental: seed with the lead\nbase, then deserialize/fold/free one participant share at a time,\n[…]\n. Output is byte-identical (the incremental round-trip\ntest plus the distributed/threshold keygen tests confirm it), so every consumer\nof CombineEvalKeyRound1 gets the lower-RAM combine transparently.",
          "is_bot": false,
          "headline": "refactor(crypto): CombineEvalKeyRound1 folds eval-sum incrementally",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-15T18:27:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fe40062eeb936b3cfbbc98e6c57dc5ee9469fe99",
          "body": "…ime)\n\nCombineEvalSumKeys folds rotation-key shares one at a time but requires every\nshare deserialized and resident at once, so combining N shares at ring 2^16\nholds N full rotation-key maps simultaneously (multi-GB peak). EvalSumCombineStart\nplus EvalSumCombineFold expose the fold incrementally: s\n[…]\ns as\nserialized bytes. A round-trip test confirms the incremental joint key is\nbyte-identical to the all-at-once CombineEvalSumKeys for the same share order\n(lead base first, then participant shares).",
          "is_bot": false,
          "headline": "feat(crypto): incremental eval-sum key combine (fold one share at a t…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-15T18:27:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a465dba34519d322052298ef8c9d0f2cb0308388",
          "body": "The Task 1 pure-Go files (minimalRotationIndices derivation + test) were\ncreated without build tags per the implementation plan, but this breaks\nuntagged go build when cgo is enabled by default: Go's toolchain sees\nopenfhe_wrapper.cpp in the same directory with no file importing \"C\"\n(all such files \n[…]\nvation math is still\nunit-testable with -tags openfhe, consistent with every other Go file in\nthis package. Non-OpenFHE consumers can use CGO_ENABLED=0.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(crypto): add openfhe build tag to minimal rotation key files",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-15T18:25:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b91be9cbaf18b731aaa1fc3505b1bd8e94fc7aea",
          "body": null,
          "is_bot": false,
          "headline": "feat(crypto): streamed rotation-keygen helpers honor minimal mode",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-15T18:13:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f025ad8a424665ac1cdf4a078865d6d56ad8734",
          "body": "…scorer",
          "is_bot": false,
          "headline": "feat(crypto): minimal-mode dot fold (rotate-and-add) in full payload …",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-15T18:09:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "196f3d3516396c5e967abca2ea9102293219791d",
          "body": "…d index set)\n\nAdd a per-context flag that, when set, replaces the full-batch EvalSumKeyGen +\nbroadcast EvalAtIndexKeyGen with a compact at-index set derived from two\ncaller-supplied dimensions: positive power-of-two shifts < profile_dim (dot-product\nfold) and negative power-of-two shifts < payload_\n[…]\nerifies that a 2-party minimal eval-sum\n  share (profile_dim=128, payload_slots=640) is < 0.75x the full-batch share for\n  the same ring — confirming the key-count reduction is reflected in wire size.",
          "is_bot": false,
          "headline": "feat(crypto): opt-in minimal rotation keygen (EvalAtIndex over derive…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-15T18:03:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1844f47519ad5f619c023246ed7c496ba18fbede",
          "body": "…erized keygen",
          "is_bot": false,
          "headline": "feat(crypto): minimal rotation-index derivation for dimension-paramet…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-15T17:26:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d7ee791dee9c619319256c3c93606c9a393362f",
          "body": "Highlights since v0.7.5:\n\n- Single-key (non-threshold) CKKS reverse auction MVP: SingleKeyEncrypt and\n  SingleKeyAuctionServerEnc, n=5 composite-key assembly at ring 2^14/depth 4,\n  a server/rider split that binds the driver identity, and singleKeyGen() plus\n  decryptSingle() in the Swift and Kotlin\n[…]\nduct.\n- CI: the hosted openfhe lane runs with -short so it stops being SIGTERM-killed\n  on the keygen benchmarks (red since that suite landed); it is green again.\n\nSee CHANGELOG.md for the full entry.",
          "is_bot": false,
          "headline": "docs(release): v0.8.0 — single-key reverse auction + b-only keygen wire",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-14T15:41:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "94e95c75d99b550d21d03372aa72f8a2d302e691",
          "body": "…chmarks\n\nThe hosted-runner openfhe job has failed on every push since 1dd2ba8 (the\nthreshold-CKKS keygen amortization suite). That commit added five\nmemory-bound benchmarks guarded by testing.Short(), plus a separate\nkeygen-bench.yml lane to run them on a high-RAM self-hosted runner, but the\nregula\n[…]\n every correctness test running. Locally the full\n`go test -tags openfhe -short ./...` suite is green in ~32s. The\nkeygen-bench lane invokes the benchmarks by name without -short, so it is\nunaffected.",
          "is_bot": false,
          "headline": "ci(openfhe): run the regular suite with -short to skip the keygen ben…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-14T15:34:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9e8ba11f9ae634d2cd8eb2e9facafe4f5bd0929c",
          "body": "…helper\n\nPython talks to OpenFHE through the Go contract-helper over IPC rather than\na native binding, so the b-only rotation-key optimization is exposed as two\nhelper ops instead of a direct C call. A participant uploads only its\nb-vectors; the shared a-vectors (byte-identical across parties under \n[…]\nepted it silently. The test fixture now sets\nARES_FHE_ALLOW_INSECURE for the helper subprocess; the wrapper stays\nsecure-by-default (HEStd_128_classic) for production, which uses real ring\ndimensions.",
          "is_bot": false,
          "headline": "feat(python): wire b-only rotation-key split/reconstruct through the …",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-14T15:19:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d8a2a2836cce04b88683dcb6de63aa646929ce7",
          "body": "…ift and Kotlin\n\nThe native wrapper (symlinked into both clients) gained the b-only\nrotation-key functions; expose them in the Swift and Kotlin FHE bindings\nso a participant can serialize only its b-vectors, send or seed the\nshared a once, and have the combiner rebuild the full share from the\nshared\n[…]\nacross parties,\nb-only is smaller, the rebuilt (a,b) match the originals). Kotlin: the\nthree JNI bindings plus NativeFHE external declarations. The native JNI\nlibrary builds and the Swift test passes.",
          "is_bot": false,
          "headline": "feat(clients): wire b-only rotation-key serialize/reconstruct into Sw…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-14T11:05:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ee9b125c280416247fc4dd8bd3915c3f468154d8",
          "body": "The multiparty rotation-key 'a'-vectors are byte-identical across parties\n(derived from shared public randomness), so each party only needs to\ntransmit its 'b'-vectors; the combiner rebuilds the full share from the\nshared 'a' plus the party 'b'. This halves the per-party rotation-key\nupload with no \n[…]\nhecks the 'a' vectors are shared across parties,\nthe b-only payload is smaller than the full share, and the rebuilt\nshare's (a,b) match the originals byte for byte (50 percent saved at the\ntest ring).",
          "is_bot": false,
          "headline": "feat(crypto): b-only rotation-key wire (serialize a/b + reconstruct)",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-14T10:42:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "369ca58ecae624e51df3e32d3be7aabc98072f0d",
          "body": null,
          "is_bot": false,
          "headline": "fix(swift-fhe): correct extension braces in Decrypt.swift",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-08T17:10:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71b20d4ad90f13b1e329581d0e4a15c75be235df",
          "body": null,
          "is_bot": false,
          "headline": "chore: add rideshareswift .build to gitignore",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-08T17:07:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fad3548d1666e8927b2f350ee80e2338685b69e5",
          "body": "Adds AresClientFHE (with COpenFHEBridge) to the products array so external\npackages like rideshareswift can depend on it.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(swift): expose AresClientFHE as library product",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-08T17:07:25Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ca6576df463984999bf2271489cf88cdb0ade90e",
          "body": "…ty CKKS\n\n- jni_openfhe.cpp: 2 new JNI bridge functions (singleKeyEvalMultKeyGen, decryptSingle)\n- NativeFHE.kt: 2 new external declarations\n- CryptoContext.kt: singleKeyGen() + decryptSingle() methods\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kotlin-fhe): add singleKeyGen() + decryptSingle() for single-par…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-08T17:02:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f9a009ae9f65a914836af231655dd1ed4cdd8fd6",
          "body": "…y CKKS\n\n- Keygen.swift: singleKeyGen() calls keyGenFirst() + SingleKeyEvalMultKeyGen\n- Decrypt.swift: decryptSingle() wraps C function DecryptSingle for direct\n  single-key decryption (no threshold fusion)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(swift-fhe): add singleKeyGen() + decryptSingle() for single-part…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-08T17:00:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3e800ab1434da37add343e1ce912d54cc318f1bb",
          "body": "…-price auction\n\nAdd two pure-Go bridge functions so bidders can encrypt their own price locally\nbefore submission; the server receives pre-encrypted bid ciphertexts and never\nsees plaintext prices. SingleKeyEncrypt wraps a single scalar into a 4-slot\nCKKS ciphertext. SingleKeyAuctionServerEnc is a \n[…]\nld tag) verifies\nfor n in {3,4,5} that enc-path winner == plaintext-path winner == true economic\nargmin; passes at ring 2^15/depth-5 in ~3.7 s.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cgo): add SingleKeyEncrypt + SingleKeyAuctionServerEnc for blind…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-04T23:09:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "296b44d1c4ad4db9ddf837ceb5807fd3ce9dd489",
          "body": "- singlekey_argmin_test.go, tiebreak_test.go: superseded by the new\n  singlekey_auction_test.go (server/rider split + bidirectional signing)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(cgo): consolidate single-key auction tests, remove superseded files",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-04T22:40:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "53b86073033e1396ed2925dec956ab5f7abd61da",
          "body": "…binding\n\nBREAKING: SingleKeyAuctionFull replaced by two functions:\n\n- SingleKeyAuctionServer(params, pk, bids...) → encrypted masks [][]byte\n  Server-side: takes rider's PUBLIC key only, never sees sk.\n  Returns serialized encrypted mask ciphertexts — server CANNOT decrypt.\n\n- SingleKeyAuctionDecry\n[…]\nhost winners are detected and rejected.\n\nVerified n=2..9 at ring 2^15/depth 5 (128-bit secure):\n  n=9: winner=0 masks[0]=0.010 sep=0.002 sig=OK\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(cgo): SingleKeyAuction server/rider split + driver identity …",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-04T22:02:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4884e3f60720e387e5542bac80da44f15504e577",
          "body": "Two optimisations to fit n=5 (rider+4 cabs) at ring 2^14/depth 4:\n\n1. Merged negate/scale into single EvalMultConst (1 level instead of 2)\n   in SingleKeyAuctionFull key assembly. The combined coefficient\n   -scale*K/span is applied in one level-conscious multiply.\n\n2. Balanced product tree in EvalA\n[…]\n12.00\n\nBinding via lineage commitment (plaintext lookup of winner's bid).\nShared secret = SHA256(nonce[winner] || sessionID) for OTP/phrase/QR.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cgo): n=5 full composite key assembly at ring 2^14/depth 4",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-04T21:12:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4731563cb860c3d094ee898a33e480499bf1221d",
          "body": "New C ABI primitives (openfhe_wrapper.{h,cpp}):\n- SchemeSwitchingArgmin: CKKS→FHEW exact argmin via EvalMinSchemeSwitching\n  (wired but deferred — needs depth >= 12 internally)\n- SingleKeyEvalMultKeyGen: generate eval-mult key for single-party context\n- DecryptSingle: direct single-key Decrypt (no t\n[…]\n — incompatible with ring 2^14\n- All mask values show correct argmax ordering; winner mask always strictly\n  largest even at epsilon=0.001 gaps\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cgo): single-key CKKS reverse auction — full MVP flow",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-04T21:01:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b2751448d1d11a09a1383238a139fd8a228e699f",
          "body": "The self-hosted runner has no C++ build toolchain (cmake not found) and per-run\nsource builds are the wrong model for a persistent box. Detect the provisioned\nOpenFHE install (lib + headers) and point cgo at it; fail with guidance if absent.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(keygen-bench): use the runner's existing OpenFHE instead of building",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-04T00:11:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1dd2ba83d3500eb214ef99fc6487853adf7d8a72",
          "body": "…ded keygen\n\nMeasurement suite (openfhe-gated, benchmarks skipped under -short) backing\nthe session-key amortization analysis, plus the bridge primitives it exercises:\n\n- keygen stage profile (CPK / eval-key round-1 / combine / decrypt) + sizes\n- resident vs byte-path combine (8-23x: the cost is (de\n[…]\n.yml — a manual\n(workflow_dispatch) lane for the heavy depth-30/2^17 rows on a high-RAM\nself-hosted runner; regular CI stays on hosted runners.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "bench(crypto): threshold-CKKS keygen amortization suite + memory-boun…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-03T23:43:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aeca812095f79b43308cea0dfa732ae674bb8c5c",
          "body": "Adds the Swift (SwiftPM) and Kotlin/Android (Gradle) client libraries —\nprotocol-crypto (onion/lineage/wire/signing), threshold-CKKS FHE over\nthe canonical openfhe_wrapper bridge, WebSocket transport, and\nclient-side ARES-BC — proven by local cross-language e2e. CKKS contexts\nare now secure-by-default; Kotlin builds pin the Gradle daemon to JDK 17.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(release): v0.7.5 — Swift + Kotlin ARES client libraries",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-03T00:49:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "68c3b335bd1d28bf198a0a8d6aef77080cdf5347",
          "body": "The bundled Kotlin compiler (KGP 2.0.21) crashes parsing the Java\nversion when run on a host JDK that postdates it (e.g. JDK 26:\nIllegalArgumentException: 26.0.1). jvmToolchain(17) only sets the\ncompile target/jdkHome; the Kotlin compile daemon still inherited the\nGradle daemon's JVM. Pin the Gradle\n[…]\nRU).\n\nFresh clean build verified: ares-client recompiles + all ares-client-fhe\ntests run (0 skipped, 0 failures) without the JDK-version crash.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "build(kotlin): pin Gradle daemon to JDK 17 for reproducible fresh builds",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-03T00:47:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "caf9c9f6bc799d736c7b0338458a10aef5587b2b",
          "body": "The canonical OpenFHE bridge created CKKS contexts with HEStd_NotSet,\nsilently disabling 128-bit security enforcement. Default to\nHEStd_128_classic so an under-provisioned ring (too small for the\nrequested multiplicative depth) is rejected at context creation.\n\nTests and local dev that deliberately \n[…]\np; FHE tests reparented\n- Kotlin: ares-client-fhe test task sets the env\n- e2e: lib.sh + boundcheck.sh export the opt-out (reduced local rings)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(crypto): CKKS contexts secure-by-default (HEStd_128_classic)",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-03T00:32:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b50de08383a202238018f3170b51fc38ac2308bd",
          "body": "Task 1 — challenge hook fix: broadcast all check CTs+commitments to each\nparty (boundcheck.Exit fuses N-of-N per-ciphertext quorum).\n\nTask 2 — Swift boundcheck flow: two-phase concurrent-submit-then-serial-FHE\nto avoid deadlock; partial-decrypt the real enc_check from the challenge\n(not the raw enc_\n[…]\nTTLED, all participate.passed==true\n- violation → server flags inflated party, session aborts\n- tamper    → client implicit check passed==false\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(bc-e2e): cross-language ARES-BC e2e (Swift+Kotlin) — 3 modes green",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T18:53:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "db8c889ee42297e7d806d39f99a2e4a36e328120",
          "body": "…tments\n\nThe merged hook unicast each party only its own enc_check, but\nboundcheck.Exit fuses an N-of-N quorum per ciphertext — every party\nmust partial-decrypt every check CT. With per-party-only challenges,\nall senders get flagged as withholding.\n\nNow broadcasts the full {\"checks\":{...},\"commitments\":{...}} map\nto each participant so each can produce the complete partial map.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(bounded_admission): challenge hook broadcasts all check CTs+commi…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T16:05:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2bfa8cb71bfe232e1057d2abb78711dff18c6517",
          "body": "…pant (implicit pass/fail)\n\nBoundCheckParticipant in ares-client-fhe: implicit commitment verify\n(SHA256(enc_check||SHA256(enc_x)||session_id), matches the Go boundcheck phase\n+ the Swift twin) + partial-decrypt; app sees only BoundCheckResult{passed}.\n3 tests (commitment-matches-Go native-free + pass-on-correct + fail-on-tamper).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Merge feat/androidB-B3c-kotlin-bc: Kotlin client-side ARES-BC partici…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T15:57:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e965820a7182ac119cd6905460913df128b826e1",
          "body": "…E-interop e2e\n\nares-smoke gains the auction subcommand (AuctionFlow mirrors Swift): local\nN-party keygen + eval-mult-key rounds + encrypt + partial-decrypt via the\nJNI FHE module, pre-shared keys seeded over admin attrs. clients/kotlin/e2e/\nauction.sh delegates to the shared harness (ARES_CLIENT_CM\n[…]\nath), local Go sealed_bid_auction server at shallow depth 12/2048.\nProves Kotlin-serialized CKKS interop with the Go helper -> AUCTION_SETTLED.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Merge feat/androidB-B2-kotlin-auction: Kotlin auction flow + local FH…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T15:57:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cf3b27ecd56a4b37eba39459322cf6deba655f73",
          "body": "…rness\n\n- AuctionFlow.kt: N-party threshold keygen, eval-mult-key 2-round protocol,\n  scalar-bid encrypt, pre-computed partial decrypts, pre-shared key seeding,\n  concurrent per-bidder WS flow matching the Swift L3 auction e2e exactly.\n- Wire 'auction' subcommand in Main.kt.\n- e2e/auction.sh: builds\n[…]\negates to shared\n  clients/swift/e2e/auction.sh via ARES_CLIENT_CMD with -Xmx2g.\n- ares-smoke/build.gradle.kts: add ares-client-fhe dependency.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kotlin-smoke): auction flow (mirrors Swift AuctionFlow) + e2e ha…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T15:53:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5ab6f3278762b0a613a2e4afc2027b8ed3fa1d4e",
          "body": "… commitment verify)\n\n- BoundCheckParticipant.kt: implicit commitment verify + partial-decrypt.\n  commitment = SHA256(enc_check || SHA256(enc_x) || session_id) matches Go\n  byte-exact from pkg/ares/phase/boundcheck/phase.go and the Swift participant.\n- BoundCheckResult: pass/fail verdict + partial d\n[…]\ndCheckParticipantTest: commitment-matches-Go (pure SHA-256, no FHE),\n  pass-on-correct, fail-on-tampered-enc-check (tiny 1024/depth-4 context).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kotlin-fhe): client-side ARES-BC participant (implicit pass/fail…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T15:51:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eb51797abd096b3e8ab0f77ec5ff7d62c7af6e74",
          "body": "… (implicit pass/fail)\n\nBoundCheckParticipant in AresClientFHE: implicit commitment verify\n(SHA256(enc_check||SHA256(enc_x)||session_id), matches the Go boundcheck phase)\n+ partial-decrypt, app sees only BoundCheckResult{passed}. 3 tests; Swift suite 37/37.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Merge feat/androidB-C-swift-bc: Swift client-side ARES-BC participant…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T15:39:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b15c7481f037241673c064c8ffd70f490b2e251e",
          "body": "…rver + per-session-handle affordance\n\nAdditive boundcheck affordance (per-session ContextHandle/fuse from SessionContext\nfor shared-runner session-services; construction-time still wins) + a runnable\nexamples/bounded_admission session-service (Invite->Keygen->SubmitInput->boundcheck->Settle)\nwith a PostDispatchHook unicasting enc_check+commitment. go build/test/vet green.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Merge feat/androidB-B-boundcheck-server: ARES-BC bounded_admission se…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T15:39:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9f9a4665cfdbe6e09646a647505b40a2826d57c2",
          "body": "…al openfhe_wrapper\n\nares-client-fhe module + host-native JNI .dylib (jni_openfhe.cpp + CMake +\nbuild-native.sh) doing real threshold CKKS; AutoCloseable+Cleaner handles;\nfull surface mirroring Swift AresClientFHE; threshold round-trip + 17.0625\nsmoke port + eval-key rounds + serialization tests (local, system OpenFHE 1.5.1).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Merge feat/androidB-A-kotlin-fhe: Kotlin FHE via JNI over the canonic…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T15:39:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f78aa266f1ade0c623eb0265f35f0835478542a5",
          "body": "… add -A; gitignore build/\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(kotlin-fhe): drop stray clients/python/build artifacts from git…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T15:38:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7cae0a99c4f3f1612836de283b79104f90fa9504",
          "body": "…mismatch test removed\n\n- CMakeLists.txt: manual JDK detection replacing find_package(JNI) to support JDK 21+ flat layouts\n- build-native.sh: auto-detect JAVA_HOME\n- Fixed symlink depth for openfhe_wrapper (3 levels up)\n- Removed ctxMismatchDeserializeThrows: OpenFHE 1.5.1 does not validate ring-dim at deserialization time\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(kotlin-fhe): JNI CMake manual JDK detection, symlinks fixed, ctx-…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T15:31:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "77f3953e066b376c5b90802de07e266b83acc75b",
          "body": "…commitment verify)\n\n- BoundCheckParticipant.swift: implicit commitment verify + partial-decrypt.\n  commitment = SHA256(enc_check || SHA256(enc_x) || session_id) matches Go\n  byte-exact from pkg/ares/phase/boundcheck/phase.go.\n- BoundCheckResult: pass/fail verdict + partial decrypt blob.\n- BoundCheckParticipantTests: pass-on-correct, fail-on-tampered-enc-check,\n  commitment-matches-Go-algorithm.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(swift-fhe): client-side ARES-BC participant (implicit pass/fail …",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T15:22:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3bec3d4b8c1512a3a7f6a40d4f7117dc6ba54ae3",
          "body": "… affordance\n\nB0: Additive per-session handle/fuse fallback in boundcheck.Phase.\n- CtxBoundCheckHandle / CtxBoundCheckFuse context keys (server-set via trigger).\n- Enter/Exit resolve handle/fuse from context when construction-time is nil.\n- Construction-time wins; existing NewPhaseWithCrypto callers\n[…]\nefaultContractParams + fhecalib.\n- crypto_stub.go: no-op stub for tests.\n\nB3: README documenting state arc, message types, commitment contract.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(bounded-admission): ARES-BC example with per-session handle/fuse…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T15:20:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b3d73e00649d6917a45ca19ac0a061335e146ba9",
          "body": "…he_wrapper\n\n- JNI bridge (jni_openfhe.cpp) covering every C ABI function\n- CMakeLists.txt, build-native.sh build infrastructure\n- NativeFHE.kt external declarations\n- AutoCloseable+Cleaner handle types (FheHandle, PublicKey, SecretKeyShare,\n  Ciphertext, EvalMultKey, RotKey)\n- CryptoContext: keygen\n[…]\nrounds + EvalMult,\n  serialization round-trips + ctx-mismatch rejection\n- assumeTrue(NativeFHE.loaded) so tests skip gracefully when lib absent\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kotlin-fhe): complete Kotlin FHE/JNI module over canonical openf…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T15:16:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "11dc7e1ba35c009178d35c5d94e931b13132fab7",
          "body": "…1 crypto + L3 transport, voting interop)\n\nKotlin/JVM mirror of the Swift client's L1 (SC-2 onion, SC-10 lineage DAGNode,\nv2 WSMessage frame, device signing) + L3 transport (OkHttp Session/AdminClient/\nOrchestrator/GossipParticipant) + an ares-smoke CLI. No FHE/JNI (the voting arc\nis pure crypto). B\n[…]\nly additive (clients/kotlin only);\npackage ares.client (fheya-free). FHE (L2/JNI) + auction + client-side ARES-BC\n= Android-B + Swift backport.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Merge feat/kotlin-client-androidA: Kotlin/Android client Android-A (L…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T11:30:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5806b4ec10e48851664c088848c6dba9db413549",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(kotlin): Android-A README + final gate",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T11:27:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "169cfac418a77130111d7d7d2184420ca2fcdcc1",
          "body": "…nion+lineage interop green)\n\nAdds the ares-smoke CLI module and VotingFlow for Android-A:\n- clients/kotlin/ares-smoke/build.gradle.kts: fat-jar target with signed-JAR\n  exclusions (META-INF/*.SF/DSA/RSA/EC) so BouncyCastle merges cleanly\n- clients/kotlin/ares-smoke/src/.../Main.kt: CLI dispatcher (\n[…]\ndelegates to shared harness\n\nvoting e2e exit code: 0 (all 3 voters peel, slot.submit lineage verifies,\nsession reaches terminal CLOSED state)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kotlin): ares-smoke CLI + voting onion-shuffle + lineage flow (o…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T11:23:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d8da3651206a9dfe054d6612784636b029390b0c",
          "body": "…+ GossipParticipant\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kotlin): L3 transport — OkHttp Session/AdminClient/Orchestrator …",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T11:14:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5a5df56d1b30a3f3614c6fbdf53a9d89bfaa1929",
          "body": "…auth token\n\nAdds WireFrame (outbound v1/v2 frame encoder with inlined payload and\nsnake_case DAGNode), Signing (sorted-keys canonical JSON, Ed25519 device\nsign, HMAC-SHA256 auth-token), and pinned-vector tests (13/13 pass).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kotlin): v2 WSMessage frame + canonical JSON + device signing + …",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T11:07:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a2d172edb770185d8b06a890aa2811c83294eaf5",
          "body": "…GCM)\n\nImplements Onion.build/peelBatch mirroring the Swift reference:\nephemeral X25519 → HKDF-SHA256(info=\"ares_onion_v1\") → AES-256-GCM;\nwire = ephPub(32)||nonce(12)||ct||tag(16); selfMemo identity by byte-match.\n4 OnionTest cases pass including N=4 party positional round-trip.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kotlin): SC-2 N-layer onion ECIES (BC X25519/HKDF + JCA AES-256-…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T11:03:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4e93ab0a62ad18de28023c4908aa23bb17086793",
          "body": "…te-parity (signature included)\n\nImplements Lineage.buildSlotNode in clients/kotlin mirroring the Go/Swift byte layout\n(SHA-256 node hash, lp-framed fields, lex-sorted parents, Ed25519 via Bouncy Castle).\nAdds LineageVectorsTest + hand-rolled MiniJson parser; both golden vectors reproduce all\nsix fields — producer, payload_hash, node_hash, signing_msg, signature, algorithm —\nbyte-for-byte.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kotlin): SC-10 lineage DAGNode + buildSlotNode; golden-vector by…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T10:53:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f224e4f76f1a2c7c32b6d1e481dbedfba7626f65",
          "body": "Gradle 9.5.1 wrapper (JDK 26 compat; plan spec'd 8.10 but 8.x predates JDK 26 support in bundled Kotlin compiler). ByteUtilTest: 3/3 pass. Both modules build.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(kotlin): ares-kotlin-client Gradle scaffold + ByteUtil",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T10:40:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "eb536fd02654289c3cb374b637a3b04fe933d37c",
          "body": "…anguage e2e)\n\nWS transport (AresTransport: Session/AdminClient/Orchestrator/GossipParticipant,\nFoundation-only) + AresSmoke CLI (auction/voting, gated ARES_OPENFHE) + a\nclient-agnostic e2e harness (clients/swift/e2e, ARES_CLIENT_CMD seam for the\nfuture Kotlin/Android client). Proves cross-language \n[…]\nssed\nSC-10 verification (now routed via HandleLineageMessage) + an opt-in\nPostDispatchHook. L1/L2 untouched bar a DAGNode Sendable conformance.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Merge feat/swift-client-l3: Swift ARES client L3 (transport + cross-l…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T09:48:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c7d6a2c6d3d357e21b9f00ea2e64f64596e7bfd1",
          "body": "…inal gate",
          "is_bot": false,
          "headline": "docs(swift): L3 README section + auction/voting session-leak guard; f…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T09:44:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5307b6c7ec46bae70a454c8e6ab6129e9fd4b285",
          "body": "…tate comment, add PostDispatchHook + v2-dispatch tests\n\n- examples/voting/states.go: correct PhaseSettle arc comment from\n  DECRYPTING -> BROADCASTING to DECRYPTING -> (terminal / StateNone)\n- pkg/ares/phase/anon/states.go: add AccumulatedOnions() exported helper\n  so external packages (relay, test\n[…]\ne (two sub-tests: v1 plain path\n  and v2 lineage path, each in an isolated session to avoid nil-current\n  collision after CheckComplete=true)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(voting/transport): export anon onion-bucket accessor, fix stale s…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T05:40:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ddcdbac48fe74eb9a117cdffd3ac7c6dfb046d89",
          "body": "…(onion+lineage interop green)\n\n- VotingFlow.swift: full N-participant gossip arc — concurrent onion.batch,\n  sequential server-relayed peel chain (voter-0→1→2), slot.submit with SC-10\n  lineage (v2 frame), vote.ballot; returns 0 when terminal state reached.\n- voting.sh: e2e harness building voting \n[…]\naiming phase, stalling advance.\n- DAGNode + GossipParticipant: add Sendable conformance for Swift-6\n  concurrency correctness in task groups.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(swift-smoke): voting onion-shuffle + lineage flow + e2e harness …",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T05:28:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "062b1e2c7bd19aa9d752d9688dd455eda64346f4",
          "body": "…fle (onion+lineage)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(voting-example): minimal session-service wiring PipelineWithShuf…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T05:05:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f13bff68d87cb15cb4bb2fa11539ae5b32ac0f1e",
          "body": "…erop vs local server\n\nclients/swift/e2e/lib.sh: shared REPO_ROOT resolver + wait_for_health + stop_server trap.\nclients/swift/e2e/auction.sh: builds helper + session-service (-tags openfhe), starts helper-backed\nserver (mode=helper, depth=12, ring_dim=2048, scaling_mod_size=50), runs AresSmoke auct\n[…]\nefault depth corrected to 12 (matches Python smoke and\nserver binary default; depth=6 is too shallow for PhaseArgmax depth_min=8 constraint).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(swift-e2e): client-agnostic auction harness — FHE-ciphertext int…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T05:01:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5a268f011dc0b308be3f26acb5ca5128b70a0cba",
          "body": "…fhe_smoke.py)\n\nAdds AresSmoke executable target (FHE-gated, inside `if openFHEEnabled`)\nwith AuctionFlow translating the Python smoke: N-party threshold keygen,\nencrypt bids, seed pre-shared keys via admin attrs, concurrent WS phase\nchoreography (invitation → keygen.share → BIDDING → bid → DECRYPTI\n[…]\n capturing non-Sendable FHE handles across\nconcurrency domains. Uses @main for top-level async. VotingFlow stub\nincluded (L3-T7 placeholder).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(swift-smoke): AresSmoke CLI + auction flow (mirrors auction_open…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T04:52:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7bba9c6ef1578bd591ac6029162cfb60e5b5b0d5",
          "body": "…slot submission)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(swift-transport): GossipParticipant (onion build/peel + lineage …",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T04:48:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9367cd7b076bd7ad3d19ad72f7685b997338b13d",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(swift-transport): AdminClient (health/start/poll) + Orchestrator",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T04:45:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3331015ed3ac9f37aad1a6c82e6c2e1231766d5c",
          "body": "…phaned continuation\n\nGive each waiter a stable UUID; on timeout/error, removeWaiter locates\nthe continuation by id, removes it, and resumes it with CancellationError\nso the associated nextFrame task can unwind (CheckedContinuation does not\nrespond to task cancellation alone).  Add SessionWaiterTests (#if DEBUG)\nthat exercise the orphan-free invariant via an internal no-socket surface.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(swift-transport): evict timed-out receiveAny waiter to prevent or…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T04:43:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2afcdfcd66ceffdf37dd9be0fe2cb4c490f8b1f0",
          "body": "…en, WS Session\n\nAdds AresTransport (Foundation-only, unconditional) with WSFrame encode/decode,\nHMAC-SHA256 auth-token derivation matching the Go AuthMiddleware, and an actor-based\nSession wrapping URLSessionWebSocketTask with inbox/waiter delivery, expect/receiveAny\nwith timeouts, awaitPhase HTTP-poll, and close. 16 tests pass (13 L1 + 3 WSFrame).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(swift-transport): AresTransport target — WSFrame codec, auth-tok…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T04:13:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a26c2545d4745bc19b793f86bb57712192280806",
          "body": "…ops)\n\nThreshold-CKKS FHE client ops as safe Swift wrappers over ARES-core's\ncanonical C bridge (pkg/ares/crypto/cgo/openfhe_wrapper.{h,cpp}, reused via\nrepo-relative symlinks) compiled against system OpenFHE 1.5.1. New SwiftPM\ntargets COpenFHEBridge (C++) + AresClientFHE, gated behind ARES_OPENFHE \n[…]\ndd/sub/mult/sum/chebyshev/poly/argmax), serialization. App composites\nexcluded. 25 FHE tests (round-trip + tolerance); L1 unchanged (13 tests).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Merge feat/swift-client-l2: Swift ARES client library L2 (FHE client …",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-02T00:01:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eb2dc5e386eb8d079053f85a52f67b7647893f31",
          "body": "…pyAndFree leak, eval-sum e2e test\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(swift-fhe): combine-share OOB guard, honest deserialize error, co…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-01T23:55:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3da3b6fea414daac2ae2cbb17d6796e91b25ff9e",
          "body": "Add SAFETY lifetime comment above the first handle class in Handles.swift\nexplaining the shared_ptr-backed ownership invariant. Append a generic\nAresClientFHE L2 section to clients/swift/README.md covering what the layer\nprovides, build gating via ARES_OPENFHE, a threshold round-trip usage snippet,\n\n[…]\nloy notes. .gitignore already covered .build/ and .swiftpm/.\nGate result: 25 / 13 / DECOUPLING-CLEAN / NO-ABSOLUTE-PATHS / SYMLINKS-RELATIVE.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(swift-fhe): L2 README section + handle SAFETY note + final gate",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-01T23:44:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cd54efea366a1f73f5be61f354d8eb28ac0b7fd4",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(swift-fhe): EvalChebyshevSign + EvalPolynomial + EvalArgmax",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-01T23:39:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8158c5509f8f6755fb592c61e6624180b29ca06d",
          "body": "…ultKey/RotKey serialization\n\nAdds EvalKeyRounds.swift with the complete 2-round distributed eval-mult-key\nprotocol (GenLead/SwitchShare/CombineSwitch/FinalShare/CombineFinal/Insert)\nand the eval-sum-key protocol (GenLead/Share/Combine/Insert). Appends\nserialize/deserialize overloads for EvalMultKey\n[…]\ng internal copyAndFree helper. All 22 tests pass including\nthe EvalMult-after-explicit-insert squared-value assertion (4.0/9.0 accuracy 0.1).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(swift-fhe): full eval-mult + eval-sum key round protocol + EvalM…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-01T23:34:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c09ec71692e5ca9ed4277a69ff6c9855d7ed460d",
          "body": "…; full smoke port (17.0625)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(swift-fhe): eval add/sub/mult/multconst/sum + eval-key share gen…",
          "author_name": "grussdorian",
          "author_login": "grussdorian",
          "committed_at": "2026-06-01T23:30:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 12,
      "commits_last_year": 256,
      "latest_release_at": "2026-06-25T15:21:59Z",
      "latest_release_tag": "v0.9.8",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 11,
      "days_since_latest_release": 27,
      "mean_days_between_releases": 4.1
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": false,
      "has_contributing": true,
      "health_percentage": 75,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/Fheyalabs/ares-core",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/Fheyalabs/ares-core",
          "is_deprecated": false,
          "latest_version": "v0.9.15",
          "repository_url": "https://github.com/Fheyalabs/ares-core",
          "versions_count": 27,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-22T01:47:08Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 0,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_stars": 0,
        "collected_at": null
      },
      "open_issues_and_prs": 0
    },
    "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": [
        "clients/kotlin/ares-client-fhe/build.gradle.kts",
        "clients/kotlin/ares-client/build.gradle.kts",
        "clients/kotlin/ares-smoke/build.gradle.kts",
        "clients/kotlin/build.gradle.kts",
        "go.mod"
      ],
      "largest_source_bytes": 156261,
      "source_files_sampled": 351,
      "oversized_source_files": 2,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "go.mod"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "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": [
        "go"
      ],
      "dependencies": [
        {
          "name": "github.com/gorilla/websocket",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.5.3"
        },
        {
          "name": "golang.org/x/crypto",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.31.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 16,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "grussdorian",
          "commits": 256,
          "avatar_url": "https://avatars.githubusercontent.com/u/45635468?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "go.yml",
        "keygen-bench.yml",
        "openfhe.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 9,
            "reason": "binaries present in source code",
            "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": null,
            "reason": "no pull request found",
            "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 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "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": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "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": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file 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": 0,
            "reason": "18 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "6290743865d53da7b8d28b5e10087fadae9869eb",
        "ran_at": "2026-07-22T21:07:42Z",
        "aggregate_score": 2.7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-18T06:24:03Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-05-19T10:45:02Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/Fheyalabs/ARES-core",
    "host": "github.com",
    "name": "ARES-core",
    "owner": "Fheyalabs"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 52,
      "inputs": {
        "security": 27,
        "vitality": 77,
        "community": 43,
        "governance": 49,
        "engineering": 58
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 77,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "commits_last_year": 256,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 11
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "11/52 weeks with commits",
                "points": 7.6,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "256 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 256
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "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": 100,
            "inputs": {
              "releases_count": 12,
              "latest_release_tag": "v0.9.8",
              "releases_from_tags": false,
              "days_since_latest_release": 27,
              "mean_days_between_releases": 4.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "12 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 27 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 27
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~4.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 4.1
                    }
                  }
                ],
                "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": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 43,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 0,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "0 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "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": 13.5,
                "status": "met",
                "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": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 49,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "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 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "merged_prs": 16,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "16/16 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 16,
                      "decided": 16
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 33,
            "inputs": {
              "followers": 0,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "Fheyalabs",
              "public_repos": 1,
              "account_age_days": 119
            },
            "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": "0 followers of Fheyalabs",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "Fheyalabs"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "1 public repos, account ~0 yr old",
                "points": 2.8,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 1
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/Fheyalabs/ares-core"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "27 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 27
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 58,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "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": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": false
            },
            "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "critical",
        "name": "Security",
        "value": 27,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 27,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 2.7
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6.8,
                "status": "partial",
                "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "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": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "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": "18 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "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": 1
            },
            "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": "moderate",
        "name": "AI Readiness",
        "value": 59,
        "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": 1,
              "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": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.59,
              "toolchain_manifests": [
                "clients/kotlin/ares-client-fhe/build.gradle.kts",
                "clients/kotlin/ares-client/build.gradle.kts",
                "clients/kotlin/ares-smoke/build.gradle.kts",
                "clients/kotlin/build.gradle.kts",
                "go.mod"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "clients/kotlin/ares-client-fhe/build.gradle.kts, clients/kotlin/ares-client/build.gradle.kts, clients/kotlin/ares-smoke/build.gradle.kts (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "clients/kotlin/ares-client-fhe/build.gradle.kts, clients/kotlin/ares-client/build.gradle.kts, clients/kotlin/ares-smoke/build.gradle.kts"
                    }
                  }
                ],
                "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": "Go (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "59 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 59,
                      "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": 100,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 156261,
              "source_files_sampled": 351,
              "oversized_source_files": 2
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Go (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "2/351 source files over 60KB",
                "points": 54.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 351,
                      "oversized": 2
                    }
                  }
                ],
                "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": [
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-22T21:07:46.538277Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/Fheyalabs/ARES-core.svg",
  "full_name": "Fheyalabs/ARES-core",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

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 agregadasGo.