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

AceDataCloud / CodingBridge

Node daemon for AceDataCloud Coding Bridge: run Claude Code / Codex on your own machine and drive it remotely from the web. Pairs to your Ace account; all execution stays local.

PythonAGPL-3.0★ 1 estrella⑂ 0 forksdesde jun 2026Ver en GitHub ↗

AceDataCloud/CodingBridge tiene un índice de salud de 56 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Engineering Quality (73/100) y la más baja, Community & Adoption (24/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

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

56
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

Ace Data CloudOrganización
53 seguidores93 repositorios públicosdesde ene 2024

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ónEtiquetas
PyPIcoding-bridge2026.7.26.0-37hace 0 díasacedatacloudclaudeclaude-codecoding-agentremotewebsocket

Métricas por categoría

Vitalidad

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

70Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
4.2/36Cadencia de commits — 6/52 semanas con commits
16.7/18Volumen de commits — 72 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_year72
human_commit_share1
days_since_last_push0
active_weeks_last_year6
Cómo se puntúa
27/27Publica versiones — 64 versiones publicadas
36/36Recencia de las versiones — última versión hace 0 días
27/27Cadencia de publicación — una versión cada ~2,4 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count64
latest_release_tagv2026.7.26.0
releases_from_tagsno
days_since_latest_release0
mean_days_between_releases2,4

Comunidad y Adopción

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

24Crítico · 18% del índice global
Cómo se puntúa
0/60Estrellas — 1 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars1
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 (AGPL-3.0)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

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

66Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
3.4/22.5Distribución de commits — el principal contribuyente firma el 85% de los commits
2.7/13.5Amplitud de contribuyentes — 2 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 6 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled2
top_contributor_share0,849
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
37.7/38.3Aceptación de PR — 66/67 PR decididos fusionados
12/15OpenSSF Scorecard: Code-Review — Found 25/30 approved changesets -- score normalized to 8
Datos de entrada utilizados
merged_prs66
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs1
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
12.5/25Alcance del propietario — 53 seguidores de AceDataCloud
18.1/25Trayectoria — 93 repos públicos, cuenta de ~2 años
Datos de entrada utilizados
followers53
owner_typeOrganization
is_verified
owner_loginAceDataCloud
public_repos93
account_age_days928
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en pypi
35/35Recencia de publicación — última publicación hace 0 días
20/20Historial de versiones — 37 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagescoding-bridge
ecosystemspypi
any_deprecatedno
min_days_since_publish0

Calidad de Ingeniería

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

73Bueno · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 2 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://studio.acedata.cloud/coding-bridge
10/10Descripción del repositorio
0/10Topics
0/10Wiki
Datos de entrada utilizados
topics
has_wikino
homepagehttps://studio.acedata.cloud/coding-bridge
has_readme
has_docs_dir
has_description

Seguridad

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

38En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
6/7.5Code-Review — Found 25/30 approved changesets -- score normalized to 8
2.5/2.5Contributors — project has 6 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
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 — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3,9
Excluidos de la puntuación (sin datos o no aplicable): packaging. 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.

39En riesgo · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 71 de 73 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,973
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
0/11Configuración de lint / formato
0/11Verificación estática de tipos
0/10Entorno reproducible
10/10Práctica demostrada con agentes — 11 de los últimos 73 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
lockfiles
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,151
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
0/45Código verificable por tipos — Python sin configuración de verificación de tipos
55/55Tamaños de archivo manejables — 0/81 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languagePython
largest_source_bytes40.322
source_files_sampled81
oversized_source_files0

Datos clave

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

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository
  • deps.dev does not index pypi:coding-bridge@2026.7.26.0; advisories assessed against the repository dependency graph instead

Más detalle

OpenSSF Scorecard 3.9 / 10
3.9agregado

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-26 06:15 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
8Code-ReviewFound 25/30 approved changesets -- score normalized to 8
10Contributorsproject has 6 contributing companies or organizations
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
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Dependencias directas 4
RegistroPaqueteRestricción de versiónManifiesto
PyPIwebsockets>=12,<14pyproject.toml
PyPIhttpx>=0.27,<0.29pyproject.toml
PyPIclaude-agent-sdk>=0.1.0pyproject.toml
PyPItomli>=2.0pyproject.toml
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": 419,
      "has_wiki": false,
      "homepage": "https://studio.acedata.cloud/coding-bridge",
      "languages": {
        "Python": 773775
      },
      "pushed_at": "2026-07-26T06:14:36Z",
      "created_at": "2026-06-08T05:43:19Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-26T06:13:53Z",
      "description": "Node daemon for AceDataCloud Coding Bridge: run Claude Code / Codex on your own machine and drive it remotely from the web. Pairs to your Ace account; all execution stays local.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "AGPL-3.0",
      "default_branch": "main",
      "license_spdx_raw": "AGPL-3.0",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": "https://platform.acedata.cloud",
      "name": "Ace Data Cloud",
      "type": "Organization",
      "login": "AceDataCloud",
      "company": null,
      "location": "United States of America",
      "followers": 53,
      "avatar_url": "https://avatars.githubusercontent.com/u/156096448?v=4",
      "created_at": "2024-01-09T14:00:18Z",
      "is_verified": null,
      "public_repos": 93,
      "account_age_days": 928
    },
    "license": {
      "state": "standard",
      "spdx_id": "AGPL-3.0",
      "raw_spdx": "AGPL-3.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v2026.7.26.0",
          "kind": "other",
          "published_at": "2026-07-26T06:14:37Z"
        },
        {
          "tag": "v2026.7.22.1",
          "kind": "other",
          "published_at": "2026-07-22T18:20:00Z"
        },
        {
          "tag": "v2026.7.22.0",
          "kind": "other",
          "published_at": "2026-07-22T13:48:25Z"
        },
        {
          "tag": "v2026.7.21.0",
          "kind": "other",
          "published_at": "2026-07-21T11:24:55Z"
        },
        {
          "tag": "v2026.7.13.2",
          "kind": "other",
          "published_at": "2026-07-13T04:42:35Z"
        },
        {
          "tag": "v2026.7.13.1",
          "kind": "other",
          "published_at": "2026-07-13T04:23:13Z"
        },
        {
          "tag": "v2026.7.13.0",
          "kind": "other",
          "published_at": "2026-07-13T01:34:46Z"
        },
        {
          "tag": "v2026.7.4.4",
          "kind": "other",
          "published_at": "2026-07-04T08:05:08Z"
        },
        {
          "tag": "v2026.7.4.3",
          "kind": "other",
          "published_at": "2026-07-04T07:47:32Z"
        },
        {
          "tag": "v2026.7.4.2",
          "kind": "other",
          "published_at": "2026-07-04T07:09:04Z"
        },
        {
          "tag": "v2026.7.4.1",
          "kind": "other",
          "published_at": "2026-07-04T05:45:10Z"
        },
        {
          "tag": "v2026.7.4.0",
          "kind": "other",
          "published_at": "2026-07-04T04:49:45Z"
        },
        {
          "tag": "v2026.7.3.17",
          "kind": "other",
          "published_at": "2026-07-03T18:41:22Z"
        },
        {
          "tag": "v2026.7.3.16",
          "kind": "other",
          "published_at": "2026-07-03T18:13:35Z"
        },
        {
          "tag": "v2026.7.3.15",
          "kind": "other",
          "published_at": "2026-07-03T17:40:30Z"
        },
        {
          "tag": "v2026.7.3.14",
          "kind": "other",
          "published_at": "2026-07-03T17:18:34Z"
        },
        {
          "tag": "v2026.7.3.13",
          "kind": "other",
          "published_at": "2026-07-03T16:30:37Z"
        },
        {
          "tag": "v2026.7.3.12",
          "kind": "other",
          "published_at": "2026-07-03T15:21:29Z"
        },
        {
          "tag": "v2026.7.3.11",
          "kind": "other",
          "published_at": "2026-07-03T14:22:18Z"
        },
        {
          "tag": "v2026.7.3.10",
          "kind": "other",
          "published_at": "2026-07-03T11:24:03Z"
        },
        {
          "tag": "v2026.7.3.9",
          "kind": "other",
          "published_at": "2026-07-03T11:18:43Z"
        },
        {
          "tag": "v2026.7.3.8",
          "kind": "other",
          "published_at": "2026-07-03T10:38:37Z"
        },
        {
          "tag": "v2026.7.3.7",
          "kind": "other",
          "published_at": "2026-07-03T10:36:42Z"
        },
        {
          "tag": "v2026.7.3.6",
          "kind": "other",
          "published_at": "2026-07-03T10:34:08Z"
        },
        {
          "tag": "v2026.7.3.5",
          "kind": "other",
          "published_at": "2026-07-03T10:32:14Z"
        },
        {
          "tag": "v2026.7.3.4",
          "kind": "other",
          "published_at": "2026-07-03T10:29:28Z"
        },
        {
          "tag": "v2026.7.3.3",
          "kind": "other",
          "published_at": "2026-07-03T10:24:07Z"
        },
        {
          "tag": "v2026.7.3.2",
          "kind": "other",
          "published_at": "2026-07-03T10:20:31Z"
        },
        {
          "tag": "v2026.7.3.1",
          "kind": "other",
          "published_at": "2026-07-03T10:17:13Z"
        },
        {
          "tag": "v2026.7.3.0",
          "kind": "other",
          "published_at": "2026-07-03T05:47:55Z"
        },
        {
          "tag": "v2026.7.2.3",
          "kind": "other",
          "published_at": "2026-07-02T11:19:17Z"
        },
        {
          "tag": "v2026.7.2.2",
          "kind": "other",
          "published_at": "2026-07-02T07:26:48Z"
        },
        {
          "tag": "v2026.7.2.1",
          "kind": "other",
          "published_at": "2026-07-02T07:17:08Z"
        },
        {
          "tag": "v2026.7.2.0",
          "kind": "other",
          "published_at": "2026-07-02T01:50:27Z"
        },
        {
          "tag": "v2026.6.25.0",
          "kind": "other",
          "published_at": "2026-06-25T19:07:19Z"
        },
        {
          "tag": "v2026.6.20.1",
          "kind": "other",
          "published_at": "2026-06-20T15:04:36Z"
        },
        {
          "tag": "v2026.6.20.0",
          "kind": "other",
          "published_at": "2026-06-20T13:01:54Z"
        },
        {
          "tag": "v2026.6.18.0",
          "kind": "other",
          "published_at": "2026-06-18T17:09:47Z"
        },
        {
          "tag": "v2026.6.14.4",
          "kind": "other",
          "published_at": "2026-06-14T07:41:36Z"
        },
        {
          "tag": "v2026.6.14.3",
          "kind": "other",
          "published_at": "2026-06-14T05:57:02Z"
        },
        {
          "tag": "v2026.6.14.2",
          "kind": "other",
          "published_at": "2026-06-14T02:51:38Z"
        },
        {
          "tag": "v2026.6.14.1",
          "kind": "other",
          "published_at": "2026-06-14T02:40:54Z"
        },
        {
          "tag": "v2026.6.14.0",
          "kind": "other",
          "published_at": "2026-06-14T02:16:16Z"
        },
        {
          "tag": "v2026.6.13.7",
          "kind": "other",
          "published_at": "2026-06-13T14:01:07Z"
        },
        {
          "tag": "v2026.6.13.6",
          "kind": "other",
          "published_at": "2026-06-13T07:42:07Z"
        },
        {
          "tag": "v2026.6.13.5",
          "kind": "other",
          "published_at": "2026-06-13T05:54:43Z"
        },
        {
          "tag": "v2026.6.13.4",
          "kind": "other",
          "published_at": "2026-06-13T05:44:03Z"
        },
        {
          "tag": "v2026.6.13.3",
          "kind": "other",
          "published_at": "2026-06-13T04:41:32Z"
        },
        {
          "tag": "v2026.6.13.2",
          "kind": "other",
          "published_at": "2026-06-13T04:01:58Z"
        },
        {
          "tag": "v2026.6.13.1",
          "kind": "other",
          "published_at": "2026-06-13T03:26:19Z"
        },
        {
          "tag": "v2026.6.13.0",
          "kind": "other",
          "published_at": "2026-06-13T02:50:46Z"
        },
        {
          "tag": "v2026.6.9.4",
          "kind": "other",
          "published_at": "2026-06-09T17:34:21Z"
        },
        {
          "tag": "v2026.6.9.3",
          "kind": "other",
          "published_at": "2026-06-09T17:29:15Z"
        },
        {
          "tag": "v2026.6.9.2",
          "kind": "other",
          "published_at": "2026-06-09T16:29:16Z"
        },
        {
          "tag": "v2026.6.9.1",
          "kind": "other",
          "published_at": "2026-06-09T16:20:17Z"
        },
        {
          "tag": "v2026.6.9.0",
          "kind": "other",
          "published_at": "2026-06-09T02:41:41Z"
        },
        {
          "tag": "v2026.6.8.7",
          "kind": "other",
          "published_at": "2026-06-08T18:17:19Z"
        },
        {
          "tag": "v2026.6.8.6",
          "kind": "other",
          "published_at": "2026-06-08T17:51:04Z"
        },
        {
          "tag": "v2026.6.8.5",
          "kind": "other",
          "published_at": "2026-06-08T17:34:50Z"
        },
        {
          "tag": "v2026.6.8.4",
          "kind": "other",
          "published_at": "2026-06-08T17:12:46Z"
        },
        {
          "tag": "v2026.6.8.3",
          "kind": "other",
          "published_at": "2026-06-08T16:33:00Z"
        },
        {
          "tag": "v2026.6.8.2",
          "kind": "other",
          "published_at": "2026-06-08T15:41:21Z"
        },
        {
          "tag": "v2026.6.8.1",
          "kind": "other",
          "published_at": "2026-06-08T14:59:43Z"
        },
        {
          "tag": "v2026.6.8.0",
          "kind": "other",
          "published_at": "2026-06-08T13:22:51Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "65a40a01ff130e5f93b1c38ab605b95999933ae5",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(service): run the main daemon as a user-scoped OS service (#67)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-26T06:13:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "00af803594a2d1f3d0ff8a2e31c40bc1506b9073",
          "body": "…al setup (#66)\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(channels): add `channels enable wechat` for one-command, no-port…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-22T18:19:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "09d8bd38b011786b87fb98c84c274ca2bc3bf1bf",
          "body": "…ectTimeout) (#65)\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(channels): raise doctor probe timeout 5s→15s (cold-TLS false Conn…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-22T13:47:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5b953a3adb13f95d18e2fab310c63588486e0f1c",
          "body": "Co-authored-by: Ace Data Cloud Dev <dev@acedata.cloud>",
          "is_bot": false,
          "headline": "Fix Wisdom channel replies with polling fallback (#64)",
          "author_name": "Germey",
          "author_login": "Germey",
          "committed_at": "2026-07-21T11:24:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44a9c7a50a9c70a64825af99838cd50fb0143f0a",
          "body": "Squash-merge PR 63: fix(channels): keep all CLI output ASCII",
          "is_bot": false,
          "headline": "fix(channels): keep all CLI output ASCII (#63)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-13T04:41:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "438f93d1161ac870c30f5f16a6050a5ca8a81f31",
          "body": "Use ASCII-only [OK]/[FAIL]/-> markers so channels doctor works on Chinese Windows CP936 consoles without UnicodeEncodeError.",
          "is_bot": false,
          "headline": "fix(channels): support Windows legacy consoles (#62)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-13T04:22:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef0ed79a2dc7ed5be3b956e2b5d5526b72f57f38",
          "body": null,
          "is_bot": false,
          "headline": "fix(channels): verify real WeChat task endpoint (#61)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-13T01:34:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "342a7434c29d138c290d8f50d099b78550e10361",
          "body": "…t login/boot (#60)",
          "is_bot": false,
          "headline": "feat(channels): install-service — one command to run channels start a…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-04T08:04:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5db6383ec10ba2cc1e9919ea1a4bf575f9eca9c4",
          "body": null,
          "is_bot": false,
          "headline": "feat(portal): live daemon status + recent-turns panel (#59)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-04T07:46:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a322f8b8a56aa666c24683d4e9e21bddb9705da",
          "body": null,
          "is_bot": false,
          "headline": "feat(portal): one-click Telegram allowlist from recent senders (#58)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-04T07:08:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "117a442cf1b57331c4a7906cbaa1ce003b14400a",
          "body": null,
          "is_bot": false,
          "headline": "feat(portal): add / remove channel instances from the UI (#57)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-04T05:44:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63d67f8682c1d7d1cff81170a7a56e6a56341f22",
          "body": "…egram) (#56)",
          "is_bot": false,
          "headline": "docs(readme): lead with multi-channel driving (browser + WeChat + Tel…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-04T04:49:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d2d38357c0d6bf10a570b56e1e94d174212d8d9",
          "body": null,
          "is_bot": false,
          "headline": "feat(portal): channel-agnostic channels portal (WeChat + Telegram) (#55)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T18:40:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "873323d87e81586d42877ebec7d5745693528d7d",
          "body": "…er) (#54)",
          "is_bot": false,
          "headline": "feat(channels): add Telegram as a first-class chat channel (WeChat pe…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T18:12:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bec4f1765816a0a3612828fa5aea724f9b9fa628",
          "body": null,
          "is_bot": false,
          "headline": "feat(channels): opt-in live tool approvals via the portal (#53)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T17:39:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ef3cd740e26aec2041c37e0b515ae8839dc95d6",
          "body": null,
          "is_bot": false,
          "headline": "feat(portal): WeChat QR onboarding + faster/cleaner contact search (#52)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T17:17:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0752b2491e501984f4879c685e2f242c75a74305",
          "body": "…icker (#51)",
          "is_bot": false,
          "headline": "feat(channels): add allowed_groups policy + functional portal group p…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T16:30:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f26633c947658a43012f02768e02d222e04bfaa0",
          "body": "…r channels.toml (#50)",
          "is_bot": false,
          "headline": "feat(channels): add `coding-bridge channels portal` — local web UI fo…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T15:20:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69c9b3286ad07fdca01fbaecce72e82d2b7a703c",
          "body": "…d WeChat quickstart (#49)",
          "is_bot": false,
          "headline": "docs(channels): document provider sign-in (AceDataCloud) + one-comman…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T14:21:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46c1e65c17225fc9e2b999faae483e54bbf583f8",
          "body": "First CHANGELOG.md: continuous CalVer/PyPI scheme + the WeChat chat-channels milestone.",
          "is_bot": false,
          "headline": "docs: add CHANGELOG with the WeChat channels release notes (P11) (#48)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T11:23:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e05bcd5a9e0a44e623fbda77bb210552b404f5b9",
          "body": "README section covering the WeChat channels feature: install, channels.toml walkthrough, doctor/smoke/start, example, and safety model.",
          "is_bot": false,
          "headline": "docs: document the WeChat chat-channels feature (P10) (#47)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T11:18:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31f390a20df8265cf5e8a13436097f24d2c3e3c1",
          "body": "Emits one content-free 'turn' event per dispatched message (instance, provider, outcome, latency, sizes) on the coding-bridge.channels logger; never logs message/reply text.",
          "is_bot": false,
          "headline": "feat(channels): structured per-turn observability (P9) (#46)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T10:37:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d20f51859eb964780dea15a0fde1ee28df5057f8",
          "body": "… (#45)\n\nsystemd/launchd/Windows service templates + token-injection guidance for running the WeChat channels daemon.",
          "is_bot": false,
          "headline": "docs: deploy templates for running 'channels start' as a service (P8)…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T10:36:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7161e861067f4a730e14216f7a702e083db42286",
          "body": "config + 'channels smoke --provider' now reject unknown provider names (rc=2); adds codex/copilot routing e2e coverage.",
          "is_bot": false,
          "headline": "channels: validate provider name + codex routing coverage (P6) (#44)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T10:33:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d7c6a89b0970e743696171bb1abd335fc6686260",
          "body": "Offline full-loop e2e test (all deps stubbed) + 'channels smoke' running one real provider turn with no network.",
          "is_bot": false,
          "headline": "channels: end-to-end smoke test + 'channels smoke' CLI (P5) (#43)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T10:31:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "731949c167b4ec89991bc9a41e54214191f37e72",
          "body": "Wires config -> PolicyGate -> SessionDispatcher -> WeChat adapter. init writes a safe channels.toml (0600), doctor pings each enabled endpoint, start runs the adapter loop.",
          "is_bot": false,
          "headline": "channels: coding-bridge channels {init,start,doctor} CLI (P4) (#42)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T10:28:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "146bd95e147c71b36b5b573ada699749a8675bde",
          "body": "…p) (P7) (#41)\n\nPolicyGate in front of the dispatcher: trigger prefix, sender allowlist, per-sender rate limit, dedup; adds WeChatClient.get_task_status for delivery polling.",
          "is_bot": false,
          "headline": "channels: abuse controls (trigger prefix, allowlist, rate limit, dedu…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T10:23:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a49fa56b1fd4a445519aea27bcf823976ed83714",
          "body": "Parses ~/.ace-bridge/channels.toml into a fail-fast schema; token never stored in the file (token_env / token_file only).",
          "is_bot": false,
          "headline": "channels: TOML config schema for [[channels.wechat]] (P3) (#40)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T10:19:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1aa9d817f115965cb2641b3f751557052ccb661",
          "body": "First ChannelAdapter: WeChat gateway WS receive + REST send, token redaction, non-raising WeChatClient.",
          "is_bot": false,
          "headline": "feat(channels): WeChat adapter (P2) (#39)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T10:16:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dae37174708e10e888b95fd9bdcdb8eb29616e70",
          "body": "…r change) (#38)",
          "is_bot": false,
          "headline": "P1: SessionDispatcher + ChannelAdapter Protocol (additive, no behavio…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-03T05:47:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "28b0174e299a2b71e1fe05ed2f42968baa87774a",
          "body": null,
          "is_bot": false,
          "headline": "revert: VS Code Copilot Chat compatibility (#35, #36) (#37)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-02T11:18:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "828e6522cb59a0f3f4ab7c2c9d3df3cd90dba365",
          "body": "…resumable sessions (#36)",
          "is_bot": false,
          "headline": "feat(continue): seed VS Code Copilot Chat transcript to continue non-…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-02T07:26:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "789ecb53f4b6712c55f52e4a10b4e9eb70d96f4f",
          "body": "…ilot) (#35)",
          "is_bot": false,
          "headline": "feat(history): read VS Code Copilot Chat transcripts (surfaced as Cop…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-02T07:16:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8f55a8d8e56c12eed304157123a4eace8e5472a3",
          "body": null,
          "is_bot": false,
          "headline": "feat(history): read GitHub Copilot transcripts for history replay (#34)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-07-02T01:49:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "531787cf11656e2c8479521985e367f368cc5da0",
          "body": null,
          "is_bot": false,
          "headline": "feat: add GitHub Copilot ACP provider (#33)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-25T19:06:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d78b488ac898dead88a74f23d3209f6ae15a81c",
          "body": "….json), like claude commands (#32)",
          "is_bot": false,
          "headline": "feat(codex): read model catalog LIVE from host (~/.codex/models_cache…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-20T15:03:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f123a661d8bcac8ea2dd8b24756753b3f1722e9f",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: rename package coding-bridge-agent -> coding-bridge (#31)",
          "author_name": "Germey",
          "author_login": "Germey",
          "committed_at": "2026-06-20T14:18:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "54317b4ed1414b43eede2707c877309afc2e6395",
          "body": "…faster listing (#30)",
          "is_bot": false,
          "headline": "fix(codex): make exec resume work (no -s on resume) + history tail & …",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-20T13:01:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f70267ed3b30a1e0df5cc0d14f9230398156f94c",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(capabilities): detect provider CLIs beyond a bare daemon PATH (#29)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-18T17:09:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1018a387dba15ca6bb3531e14fc40ac0c7908acd",
          "body": "…y one (#28)",
          "is_bot": false,
          "headline": "fix(history): only flag actively-running sessions, not every in-memor…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-14T07:40:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76a78dad9d07ee8389e5f6e3890df357f89e257a",
          "body": null,
          "is_bot": false,
          "headline": "feat(session): unify session identity on the provider's real id (#27)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-14T05:56:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03625e86cc0fd5ac0943c869f265e3d6e712c84d",
          "body": "…#26)",
          "is_bot": false,
          "headline": "feat(history): persist & restore per-session settings across reload (…",
          "author_name": "Germey",
          "author_login": "Germey",
          "committed_at": "2026-06-14T02:50:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cff0f7ec62394e6917ec126c538f3bb1e845076d",
          "body": null,
          "is_bot": false,
          "headline": "fix(claude): feed AskUserQuestion answers back to the agent (#25)",
          "author_name": "Germey",
          "author_login": "Germey",
          "committed_at": "2026-06-14T02:40:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1383d263ebc55e7420e48a1720d1be28fe1a25d",
          "body": null,
          "is_bot": false,
          "headline": "fix(claude): feed AskUserQuestion answers back to the agent (#24)",
          "author_name": "Germey",
          "author_login": "Germey",
          "committed_at": "2026-06-14T02:15:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eb5a623c71d434af6de6fffde2de4974fce21cac",
          "body": "…undation) (#23)",
          "is_bot": false,
          "headline": "feat(permissions): durable pending requests + replay (notification fo…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-13T14:00:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "617f12122840a1ba5fe54e040ce4ae3a9a805a68",
          "body": "…oken (#22)\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: single-instance lock so two daemons can't fight over one node t…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-13T07:41:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5972133168e565aada1f4133da36f92218ee6f37",
          "body": "…) (#21)\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: dedup redelivered browser commands by cmd_id (Phase 4 node side…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-13T05:54:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "92c28ac11e5e9e7df6bbac11d126de6117b1a881",
          "body": "… 2) (#20)\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: node outbox for reliable delivery + emit session.rewound (Phase…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-13T05:43:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "00d2a136d311097ded5f5aba9a3ada23f6c0029e",
          "body": "…c (#19)\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(coding-bridge): reliable event delivery design + protocol v2 spe…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-13T04:40:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bc063ae1a85de92a92ac292656b810a8f0af728e",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: edit a past prompt by forking the conversation (Claude) (#18)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-13T04:01:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "713dbc3ab54f38af5061d6cd93d1deb6f812fb54",
          "body": "…s mid-history) (#17)",
          "is_bot": false,
          "headline": "fix(claude): drop resume transcript replay (new prompt no longer land…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-13T03:25:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45e20e7ba70164fd29a22b2e670f4856d2cc63ff",
          "body": "… (#16)\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(session): structured errors + self-healing reset & bounded retry…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-13T02:50:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bc90a727e659a77ed78899a8c586cc158a024551",
          "body": null,
          "is_bot": false,
          "headline": "feat: add structured logging and end-to-end trace ids (#15)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-09T17:33:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f55eb7c33e721ea3fcb804ce754da51c670de18",
          "body": null,
          "is_bot": false,
          "headline": "feat: stream assistant text token-by-token for both providers (#14)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-09T17:28:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07f343a795f13b495d1b0cfbdc5bb415f75812c4",
          "body": null,
          "is_bot": false,
          "headline": "feat: support headless slash commands via server-info catalog (#12)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-09T16:28:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85cc61de25411ebea2ce03d55da1c9f73ad89b02",
          "body": null,
          "is_bot": false,
          "headline": "feat(session): allow switching the model mid-session (#13)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-09T16:19:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d68dc7a40e64ef5d178577d4a5efd4ba2eb1dc5",
          "body": null,
          "is_bot": false,
          "headline": "Support CDN file attachments (#11)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-09T02:41:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51fb99fda7426681e03d7816217aa5618b685d50",
          "body": "…I never hard-codes them (#9)\n\nAdd capabilities.get -> capabilities round-trip. The node returns each provider (claude/codex), its installed status, model catalog, effort tiers and permission modes from one place (capabilities.py). Heartbeat capabilities now reflect actually-installed CLIs. 90 tests pass.",
          "is_bot": false,
          "headline": "feat(capabilities): node advertises providers/models/efforts so the U…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-08T18:16:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "195251b77443fe13c62990162355a03ad58d0ee7",
          "body": "…roviders (#8)\n\nAdd fs.list action so the paired browser can list directories to pick a working directory, and accept pasted images that are decoded to <cwd>/.tmp/images/ and handed to Claude (path note) or Codex (-i). Threads images through session/connection/providers; 84 tests pass.",
          "is_bot": false,
          "headline": "feat(io): remote directory browser (fs.list) + image input for both p…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-08T17:50:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd1b742c6d443062f0b120da2f0f916eb2187185",
          "body": "feat(providers): live Codex provider + Claude/Codex switch + reasoning effort",
          "is_bot": false,
          "headline": "Merge pull request #7 from AceDataCloud/feat/codex-provider",
          "author_name": "Germey",
          "author_login": "Germey",
          "committed_at": "2026-06-08T17:34:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb1755719729c97a85d3495451ef971a76ad3899",
          "body": "…ider switch\n\n- New CodexProvider drives `codex exec --json`, mapping the JSONL event\n  stream (thread.started / item.* / turn.completed) to the existing inner\n  events. Transient \"error\" notices are buffered and only surfaced if the\n  process exits without completing a turn.\n- permission_mode -> co\n[…]\nnown), advertises the `codex`\n  capability, and forwards `effort`.\n- Tests: full Codex event-parser/argv/effort coverage; connection tests\n  updated for the new factory signature and codex acceptance.",
          "is_bot": false,
          "headline": "feat(providers): add live Codex provider with reasoning-effort + prov…",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-08T17:14:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "efa72a3894031aae94f76ac31515db3bde0f6f04",
          "body": "chore: relicense from GPL-3.0 to AGPL-3.0-or-later",
          "is_bot": false,
          "headline": "Merge pull request #6 from AceDataCloud/chore/relicense-agpl3",
          "author_name": "Germey",
          "author_login": "Germey",
          "committed_at": "2026-06-08T17:11:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68ef1f368da6326278c4567d0998c6d9ee37e970",
          "body": "Switch the project license from GPL-3.0-or-later to AGPL-3.0-or-later. As an outbound network daemon that relays sessions over WebSocket, AGPL's section 13 (remote network interaction) is the appropriate copyleft for this use case.",
          "is_bot": false,
          "headline": "chore: relicense from GPL-3.0 to AGPL-3.0-or-later",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-08T17:09:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "23943642b251f260581f37e44bbf7cdd9ee162e9",
          "body": "fix(history): strip tool-injected context from real transcripts",
          "is_bot": false,
          "headline": "Merge pull request #5 from AceDataCloud/fix/history-real-transcripts",
          "author_name": "Germey",
          "author_login": "Germey",
          "committed_at": "2026-06-08T16:32:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b84688b160ba08c479fee4a1a45a799f70a8d2f4",
          "body": "Verified against real on-disk ~/.claude/projects and ~/.codex/sessions\n(43 Claude + 316 Codex transcripts):\n\n- Skip injected context messages (AGENTS.md / copilot-instructions /\n  environment_context / <cwd> / IDE open-file reminders / compaction\n  caveats) when deriving titles and prompt events.\n- \n[…]\ntext block.\n\nResult on real data: '(no prompt)' titles dropped from 104 to 5 (all\ntiny aborted sessions); recovered prompts for 100+ Codex sessions.\nAdds 5 regression tests; 41 tests pass, ruff clean.",
          "is_bot": false,
          "headline": "fix(history): strip tool-injected context from real transcripts",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-08T16:01:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ed3cfa4ccb03a8fbee893583471d4ee9af13a12d",
          "body": "feat: read & replay local Claude Code and Codex history",
          "is_bot": false,
          "headline": "Merge pull request #4 from AceDataCloud/feat/history",
          "author_name": "Germey",
          "author_login": "Germey",
          "committed_at": "2026-06-08T15:40:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0e33116e44ac7f3f18d8aa6465056fef3a04d3e",
          "body": null,
          "is_bot": false,
          "headline": "feat: sync and replay local Claude Code & Codex history",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-08T15:03:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e2a59d904bf684af11a3e576b29719607796b47c",
          "body": "fix: update pairing claim URL to /coding-bridge",
          "is_bot": false,
          "headline": "Merge pull request #3 from AceDataCloud/fix/pair-url-output",
          "author_name": "Germey",
          "author_login": "Germey",
          "committed_at": "2026-06-08T14:58:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d6bf010a7de612b8e8a798fc4c2f8c87dd612ab",
          "body": null,
          "is_bot": false,
          "headline": "fix: update pairing claim URL to /coding-bridge",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-08T14:55:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff543ee830fa18788857cfba337cfc3d404628d0",
          "body": "Mirror the AceDataCloud MCP publish pattern: date-based CalVer\n(YYYY.M.D.BUILD), build sdist+wheel, twine upload via the org-level\nPYPI_TOKEN secret under the pypi environment, then cut a GitHub Release.",
          "is_bot": false,
          "headline": "ci: auto-publish coding-bridge-agent to PyPI on push to main (#2)",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-08T13:22:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ada64451fa2a8186647a560957b6df688dea6d64",
          "body": "feat: node daemon for remote Claude Code via coding-bridge",
          "is_bot": false,
          "headline": "Merge pull request #1 from AceDataCloud/feat/node-daemon",
          "author_name": "Germey",
          "author_login": "Germey",
          "committed_at": "2026-06-08T06:05:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "305fa9de2171036ec6e47bd9ec76e8938edf2841",
          "body": "Outbound-only daemon that registers a developer's machine with the coding-bridge relay and runs local Claude Code sessions driven from the browser. Code execution and tool permissions stay local; every tool use is relayed to the browser for approval.",
          "is_bot": false,
          "headline": "feat: node daemon for remote Claude Code via coding-bridge",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-08T06:01:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aafe02994bcab5437f055c8bf0ca4fb71e0195da",
          "body": null,
          "is_bot": false,
          "headline": "Initial commit",
          "author_name": "Ace Data Cloud Dev",
          "author_login": "acedatacloud-dev",
          "committed_at": "2026-06-08T05:43:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 64,
      "commits_last_year": 72,
      "latest_release_at": "2026-07-26T06:14:37Z",
      "latest_release_tag": "v2026.7.26.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 6,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 2.4
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "coding-bridge",
          "exists": true,
          "license": null,
          "keywords": [
            "acedatacloud",
            "claude",
            "claude-code",
            "coding-agent",
            "remote",
            "websocket",
            "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.10",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/coding-bridge/",
          "is_deprecated": false,
          "latest_version": "2026.7.26.0",
          "repository_url": "https://github.com/AceDataCloud/CodingBridge",
          "versions_count": 37,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-06-20T14:18:40.891736Z",
          "latest_published_at": "2026-07-26T06:14:24.419502Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 1,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 40322,
      "source_files_sampled": 81,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "pyproject.toml"
      ],
      "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": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "websockets",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=12,<14"
        },
        {
          "name": "httpx",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.27,<0.29"
        },
        {
          "name": "claude-agent-sdk",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.1.0"
        },
        {
          "name": "tomli",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.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": 66,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 1
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "acedatacloud-dev",
          "commits": 62,
          "avatar_url": "https://avatars.githubusercontent.com/u/261699522?v=4"
        },
        {
          "type": "User",
          "login": "Germey",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/8678661?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.849
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yaml",
        "publish.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 8,
            "reason": "Found 25/30 approved changesets -- score normalized to 8",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 6 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 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": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "65a40a01ff130e5f93b1c38ab605b95999933ae5",
        "ran_at": "2026-07-26T06:15:36Z",
        "aggregate_score": 3.9,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-26T06:14:39Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-26T06:13:40Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/AceDataCloud/CodingBridge",
    "host": "github.com",
    "name": "CodingBridge",
    "owner": "AceDataCloud"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 56,
      "inputs": {
        "security": 38,
        "vitality": 70,
        "community": 24,
        "governance": 66,
        "engineering": 73
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 70,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "commits_last_year": 72,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 6
            },
            "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": "6/52 weeks with commits",
                "points": 4.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "72 commits in the last year",
                "points": 16.7,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 72
                    }
                  }
                ],
                "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": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 64,
              "latest_release_tag": "v2026.7.26.0",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 2.4
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "64 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 64
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~2.4 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2.4
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "critical",
        "name": "Community & Adoption",
        "value": 24,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 1,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (AGPL-3.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "AGPL-3.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 66,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.849
            },
            "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 85% of commits",
                "points": 3.4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 85
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 6 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "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": 93,
            "inputs": {
              "merged_prs": 66,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 1
            },
            "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": "66/67 decided PRs merged",
                "points": 37.7,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 66,
                      "decided": 67
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 25/30 approved changesets -- score normalized to 8",
                "points": 12,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 61,
            "inputs": {
              "followers": 53,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "AceDataCloud",
              "public_repos": 93,
              "account_age_days": 928
            },
            "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": "53 followers of AceDataCloud",
                "points": 12.5,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 53,
                      "login": "AceDataCloud"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "93 public repos, account ~2 yr old",
                "points": 18.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 93
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 2
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "coding-bridge"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "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": "37 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 37
                    }
                  }
                ],
                "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": "good",
        "name": "Engineering Quality",
        "value": 73,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "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": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "https://studio.acedata.cloud/coding-bridge",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://studio.acedata.cloud/coding-bridge",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 38,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 38,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 3.9
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 25/30 approved changesets -- score normalized to 8",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 6 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "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": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 4
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "at_risk",
        "name": "AI Readiness",
        "value": 39,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.973,
              "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": "71 of 73 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 71,
                      "sampled": 73
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 32,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.151,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "11 of the last 73 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 11,
                      "sampled": 73
                    }
                  }
                ],
                "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": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 40322,
              "source_files_sampled": 81,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/81 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 81,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
    "deps.dev does not index pypi:coding-bridge@2026.7.26.0; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T06:15:51.675871Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/AceDataCloud/CodingBridge.svg",
  "full_name": "AceDataCloud/CodingBridge",
  "license_state": "standard",
  "license_spdx": "AGPL-3.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 agregadasPyPI.