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

TA-Lib / ta-lib

TA-Lib (Core C Library)

Java · C · RustBSD-3-Clause★ 1638 estrellas⑂ 291 forksdesde ago 2016Ver en GitHub ↗

TA-Lib/ta-lib tiene un índice de salud de 31 sobre 100, lo que lo sitúa en la banda En riesgo. Su puntuación más alta es Vitality (77/100) y la más baja, Security (34/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

31
global / 100
En riesgo

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

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

La Política de Jurisdicciones de Alto Riesgo aplica un multiplicador del 50% a la salud global ponderada y le da un límite «En riesgo» de 49.

Titularidad

TA-LibOrganización
332 seguidores12 repositorios públicosdesde ago 2016

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

Métricas por categoría

Vitalidad

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

77Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
13.2/36Cadencia de commits — 19/52 semanas con commits
18/18Volumen de commits — 966 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year966
human_commit_share0,78
days_since_last_push0
active_weeks_last_year19
Cómo se puntúa
27/27Publica versiones — 6 versiones publicadas
36/36Recencia de las versiones — última versión hace 23 días
12.6/27Cadencia de publicación — una versión cada ~174,2 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count6
latest_release_tagv0.7.1
releases_from_tagsno
days_since_latest_release23
mean_days_between_releases174,2

Comunidad y Adopción

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

67Moderado · 18% del índice global
Cómo se puntúa
52.1/60Estrellas — 1638 estrellas
20.5/25Forks — 291 forks
8.1/15Observadores — 30 observadores
Datos de entrada utilizados
forks291
stars1638
watchers30
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (BSD-3-Clause)
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?

60Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
9.2/22.5Distribución de commits — el principal contribuyente firma el 59% de los commits
13.5/13.5Amplitud de contribuyentes — 20 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 7 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled20
top_contributor_share0,592
Cómo se puntúa
43.6/46.8Resolución de issues — 93% de issues cerradas
28.4/38.3Aceptación de PR — 23/31 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 1/29 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs23
open_issues7
closed_issues98
issue_closed_ratio0,933
closed_unmerged_prs8
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
18.1/25Alcance del propietario — 332 seguidores de TA-Lib
20.1/25Trayectoria — 12 repos públicos, cuenta de ~9 años
Datos de entrada utilizados
followers332
owner_typeOrganization
is_verified
owner_loginTA-Lib
public_repos12
account_age_days3628

Calidad de Ingeniería

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

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

Documentación

90Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://ta-lib.org/
10/10Descripción del repositorio
10/10Topics — 4 topics
0/10Wiki
Datos de entrada utilizados
topicsta-lib, financial, series-analysis, technical-analysis
has_wikino
homepagehttps://ta-lib.org/
has_readme
has_docs_dir
has_description

Seguridad

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

34En riesgo · 16% del índice global
Cómo se puntúa
3/7.5Binary-Artifacts — binaries present in source code
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
0/2.5CI-Tests — 0 out of 1 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 1/29 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 7 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
7.5/7.5Maintained — 30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — sin datos
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 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,5
high_risk_jurisdiction_cap49
high_risk_jurisdiction_multiplier50
security_posture_after_multiplier18
security_posture_before_jurisdiction35
Excluidos de la puntuación (sin datos o no aplicable): packaging. Los pesos restantes se han renormalizado. La Política de Jurisdicciones de Alto Riesgo aplica un multiplicador del 50% y da a la postura de seguridad un límite «En riesgo» de 49.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
0/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories0
affected_packages0
assessed_packages498
unassessed_packages1
affected_by_severitynone
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos, Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejaron 498 dependencias resueltas con OSV. 1 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido o fuera de la lista de paquetes informada. Este repositorio no publica ningún paquete que el índice resuelva, por lo que se evaluó en su lugar el grafo de dependencias del repositorio. Ese grafo mezcla fijaciones de desarrollo y prueba con las dependencias distribuidas, de modo que solo se puntúan las dependencias declaradas en tiempo de ejecución; los hallazgos transitivos se informan como contexto y quedan excluidos de la puntuación. No se analiza la alcanzabilidad.

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.

71Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — CLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 78 de 78 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_filesCLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md
agent_instruction_max_bytes27.322
Cómo se puntúa
12.6/18Arranque con un solo comando — ta_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — Java (tipado estático)
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 9 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilesCargo.lock, pnpm-lock.yaml
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,09
toolchain_manifeststa_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml, ta_codegen/output/rust/library/Cargo.toml, ta_codegen/output/rust/tools/Cargo.toml
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — Java (tipado estático)
43.3/55Tamaños de archivo manejables — 196/922 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageJava
largest_source_bytes12.329.300
source_files_sampled922
oversized_source_files196
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signalno
api_schema_files

Datos clave

1638estrellas de GitHub
20contribuidores
966commits en los últimos 12 meses
0días desde el último push
6versiones publicadas
1factor bus
7issues abiertas
npmecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch npm package 'ta-lib.org' from its registry
  • Could not fetch crates package 'ta-codegen' from its registry

Más detalle

Historial de estrellas y forks 0 ★ / 291 ⇿
0Estrellas
291Forks
6Versiones

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

05010015020025030029172016-122021-102026-07
Mayor 0Menor 1Parche 5

Cada punto abarca 9 días.

OpenSSF Scorecard 3.5 / 10
3.5agregado

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-27 10:40 UTC

4Binary-Artifactsbinaries present in source code
3Branch-Protectionbranch protection is not maximal on development and all release branches
0CI-Tests0 out of 1 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 1/29 approved changesets -- score normalized to 0
10Contributorsproject has 7 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
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 5
RegistroPaqueteRestricción de versiónManifiesto
npmkatex^0.16.47website/package.json
crates.ioserde1ta_codegen/generator/Cargo.toml
crates.ioserde_yaml0.9ta_codegen/generator/Cargo.toml
crates.ioserde_json1ta_codegen/generator/Cargo.toml
crates.ioregex1ta_codegen/generator/Cargo.toml
Todas las dependencias 499

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

RegistroPaqueteVersiónRelación
crates.ioregex1.12.3directa
crates.ioserde1.0.228directa
crates.ioserde_jsondirecta
crates.ioserde_json1.0.149directa
crates.ioserde_yaml0.9.34+deprecateddirecta
npmkatex0.16.47directa
crates.ioaho-corasick1.1.4indirecta
crates.ioequivalent1.0.2indirecta
crates.iohashbrown0.16.1indirecta
crates.ioindexmap2.13.0indirecta
crates.ioitoa1.0.17indirecta
crates.iomemchr2.8.0indirecta
crates.ioproc-macro21.0.106indirecta
crates.ioquote1.0.45indirecta
crates.ioregex-automata0.4.14indirecta
crates.ioregex-syntax0.8.10indirecta
crates.ioryu1.0.23indirecta
crates.ioserde_core1.0.228indirecta
crates.ioserde_derive1.0.228indirecta
crates.iosyn2.0.117indirecta
crates.iounicode-ident1.0.24indirecta
crates.iounsafe-libyaml0.2.11indirecta
crates.iozmij1.0.21indirecta
npm@babel/generator8.0.0indirecta
npm@babel/helper-string-parser7.29.7indirecta
npm@babel/helper-string-parser8.0.0indirecta
npm@babel/helper-validator-identifier7.29.7indirecta
npm@babel/helper-validator-identifier8.0.4indirecta
npm@babel/parser7.29.7indirecta
npm@babel/parser8.0.4indirecta
npm@babel/types7.29.7indirecta
npm@babel/types8.0.4indirecta
npm@bufbuild/protobuf2.12.1indirecta
npm@emnapi/core1.11.1indirecta
npm@emnapi/runtime1.11.1indirecta
npm@emnapi/wasi-threads1.2.2indirecta
npm@esbuild/aix-ppc640.28.1indirecta
npm@esbuild/android-arm0.28.1indirecta
npm@esbuild/android-arm640.28.1indirecta
npm@esbuild/android-x640.28.1indirecta
npm@esbuild/darwin-arm640.28.1indirecta
npm@esbuild/darwin-x640.28.1indirecta
npm@esbuild/freebsd-arm640.28.1indirecta
npm@esbuild/freebsd-x640.28.1indirecta
npm@esbuild/linux-arm0.28.1indirecta
npm@esbuild/linux-arm640.28.1indirecta
npm@esbuild/linux-ia320.28.1indirecta
npm@esbuild/linux-loong640.28.1indirecta
npm@esbuild/linux-mips64el0.28.1indirecta
npm@esbuild/linux-ppc640.28.1indirecta
npm@esbuild/linux-riscv640.28.1indirecta
npm@esbuild/linux-s390x0.28.1indirecta
npm@esbuild/linux-x640.28.1indirecta
npm@esbuild/netbsd-arm640.28.1indirecta
npm@esbuild/netbsd-x640.28.1indirecta
npm@esbuild/openbsd-arm640.28.1indirecta
npm@esbuild/openbsd-x640.28.1indirecta
npm@esbuild/openharmony-arm640.28.1indirecta
npm@esbuild/sunos-x640.28.1indirecta
npm@esbuild/win32-arm640.28.1indirecta
npm@esbuild/win32-ia320.28.1indirecta
npm@esbuild/win32-x640.28.1indirecta
npm@jridgewell/gen-mapping0.3.13indirecta
npm@jridgewell/remapping2.3.5indirecta
npm@jridgewell/resolve-uri3.1.2indirecta
npm@jridgewell/sourcemap-codec1.5.5indirecta
npm@jridgewell/trace-mapping0.3.31indirecta
npm@lit-labs/ssr-dom-shim1.6.0indirecta
npm@lit/reactive-element2.1.2indirecta
npm@mdit-vue/plugin-component3.0.2indirecta
npm@mdit-vue/plugin-frontmatter3.0.2indirecta
npm@mdit-vue/plugin-headers3.0.2indirecta
npm@mdit-vue/plugin-sfc3.0.2indirecta
npm@mdit-vue/plugin-title3.0.2indirecta
npm@mdit-vue/plugin-toc3.0.2indirecta
npm@mdit-vue/shared3.0.2indirecta
npm@mdit-vue/types3.0.2indirecta
npm@mdit/helper0.23.2indirecta
npm@mdit/plugin-alert0.23.2indirecta
npm@mdit/plugin-align0.24.2indirecta
npm@mdit/plugin-attrs0.25.2indirecta
npm@mdit/plugin-container0.23.2indirecta
npm@mdit/plugin-demo0.23.2indirecta
npm@mdit/plugin-figure0.23.2indirecta
npm@mdit/plugin-footnote0.23.2indirecta
npm@mdit/plugin-icon0.24.2indirecta
npm@mdit/plugin-img-lazyload0.23.2indirecta
npm@mdit/plugin-img-mark0.23.2indirecta
npm@mdit/plugin-img-size0.23.2indirecta
npm@mdit/plugin-include0.23.2indirecta
npm@mdit/plugin-inline-rule0.23.2indirecta
npm@mdit/plugin-katex-slim0.26.2indirecta
npm@mdit/plugin-layout0.2.2indirecta
npm@mdit/plugin-mark0.23.2indirecta
npm@mdit/plugin-mathjax-slim0.26.2indirecta
npm@mdit/plugin-plantuml0.24.2indirecta
npm@mdit/plugin-spoiler0.23.2indirecta
npm@mdit/plugin-stylize0.23.2indirecta
npm@mdit/plugin-sub0.24.2indirecta
npm@mdit/plugin-sup0.24.2indirecta
npm@mdit/plugin-tab0.24.2indirecta
npm@mdit/plugin-tasklist0.23.2indirecta
npm@mdit/plugin-tex0.24.2indirecta
npm@mdit/plugin-uml0.24.2indirecta
npm@napi-rs/wasm-runtime1.1.6indirecta
npm@oxc-project/types0.139.0indirecta
npm@parcel/watcher2.5.6indirecta
npm@parcel/watcher-android-arm642.5.6indirecta
npm@parcel/watcher-darwin-arm642.5.6indirecta
npm@parcel/watcher-darwin-x642.5.6indirecta
npm@parcel/watcher-freebsd-x642.5.6indirecta
npm@parcel/watcher-linux-arm-glibc2.5.6indirecta
npm@parcel/watcher-linux-arm-musl2.5.6indirecta
npm@parcel/watcher-linux-arm64-glibc2.5.6indirecta
npm@parcel/watcher-linux-arm64-musl2.5.6indirecta
npm@parcel/watcher-linux-x64-glibc2.5.6indirecta
npm@parcel/watcher-linux-x64-musl2.5.6indirecta
npm@parcel/watcher-win32-arm642.5.6indirecta
npm@parcel/watcher-win32-ia322.5.6indirecta
npm@parcel/watcher-win32-x642.5.6indirecta
npm@pkgr/core0.3.6indirecta
npm@rolldown/binding-android-arm641.1.5indirecta
npm@rolldown/binding-darwin-arm641.1.5indirecta
npm@rolldown/binding-darwin-x641.1.5indirecta
npm@rolldown/binding-freebsd-x641.1.5indirecta
npm@rolldown/binding-linux-arm-gnueabihf1.1.5indirecta
npm@rolldown/binding-linux-arm64-gnu1.1.5indirecta
npm@rolldown/binding-linux-arm64-musl1.1.5indirecta
npm@rolldown/binding-linux-ppc64-gnu1.1.5indirecta
npm@rolldown/binding-linux-s390x-gnu1.1.5indirecta
npm@rolldown/binding-linux-x64-gnu1.1.5indirecta
npm@rolldown/binding-linux-x64-musl1.1.5indirecta
npm@rolldown/binding-openharmony-arm641.1.5indirecta
npm@rolldown/binding-wasm32-wasi1.1.5indirecta
npm@rolldown/binding-win32-arm64-msvc1.1.5indirecta
npm@rolldown/binding-win32-x64-msvc1.1.5indirecta
npm@rolldown/pluginutils1.0.1indirecta
npm@shikijs/core4.3.1indirecta
npm@shikijs/engine-javascript4.3.1indirecta
npm@shikijs/engine-oniguruma4.3.1indirecta
npm@shikijs/langs4.3.1indirecta
npm@shikijs/primitive4.3.1indirecta
npm@shikijs/themes4.3.1indirecta
npm@shikijs/transformers4.3.1indirecta
npm@shikijs/types4.3.1indirecta
npm@shikijs/vscode-textmate10.0.2indirecta
npm@stackblitz/sdk1.11.1indirecta
npm@tybys/wasm-util0.10.3indirecta
npm@types/debug4.1.13indirecta
npm@types/fs-extra11.0.4indirecta
npm@types/hash-sum1.0.2indirecta
npm@types/hast3.0.5indirecta
npm@types/jsesc2.5.1indirecta
npm@types/jsonfile6.1.4indirecta
npm@types/linkify-it5.0.0indirecta
npm@types/markdown-it14.1.2indirecta
npm@types/markdown-it-emoji3.0.1indirecta
npm@types/mdast4.0.4indirecta
npm@types/mdurl2.0.0indirecta
npm@types/ms2.1.0indirecta
npm@types/node24.13.3indirecta
npm@types/node26.1.1indirecta
npm@types/picomatch4.0.3indirecta
npm@types/sax1.2.7indirecta
npm@types/trusted-types2.0.7indirecta
npm@types/unist3.0.3indirecta
npm@types/web-bluetooth0.0.21indirecta
npm@ungap/structured-clone1.3.3indirecta
npm@vitejs/plugin-vue6.0.7indirecta
npm@vue-macros/common3.1.2indirecta
npm@vue/compiler-core3.5.39indirecta
npm@vue/compiler-dom3.5.39indirecta
npm@vue/compiler-sfc3.5.39indirecta
npm@vue/compiler-ssr3.5.39indirecta
npm@vue/devtools-api8.1.5indirecta
npm@vue/devtools-kit8.1.5indirecta
npm@vue/devtools-shared8.1.5indirecta
npm@vue/reactivity3.5.39indirecta
npm@vue/runtime-core3.5.39indirecta
npm@vue/runtime-dom3.5.39indirecta
npm@vue/server-renderer3.5.39indirecta
npm@vue/shared3.5.39indirecta
npm@vuepress/bundler-vite2.0.0-rc.30indirecta
npm@vuepress/bundlerutils2.0.0-rc.30indirecta
npm@vuepress/cli2.0.0-rc.30indirecta
npm@vuepress/client2.0.0-rc.30indirecta
npm@vuepress/core2.0.0-rc.30indirecta
npm@vuepress/helper2.0.0-rc.130indirecta
npm@vuepress/highlighter-helper2.0.0-rc.130indirecta
npm@vuepress/markdown2.0.0-rc.30indirecta
npm@vuepress/plugin-active-header-links2.0.0-rc.130indirecta
npm@vuepress/plugin-back-to-top2.0.0-rc.130indirecta
npm@vuepress/plugin-blog2.0.0-rc.130indirecta
npm@vuepress/plugin-catalog2.0.0-rc.130indirecta
npm@vuepress/plugin-comment2.0.0-rc.130indirecta
npm@vuepress/plugin-copy-code2.0.0-rc.130indirecta
npm@vuepress/plugin-copyright2.0.0-rc.130indirecta
npm@vuepress/plugin-git2.0.0-rc.130indirecta
npm@vuepress/plugin-icon2.0.0-rc.130indirecta
npm@vuepress/plugin-links-check2.0.0-rc.130indirecta
npm@vuepress/plugin-markdown-chart2.0.0-rc.130indirecta
npm@vuepress/plugin-markdown-ext2.0.0-rc.130indirecta
npm@vuepress/plugin-markdown-hint2.0.0-rc.130indirecta
npm@vuepress/plugin-markdown-image2.0.0-rc.130indirecta
npm@vuepress/plugin-markdown-include2.0.0-rc.130indirecta
npm@vuepress/plugin-markdown-math2.0.0-rc.130indirecta
npm@vuepress/plugin-markdown-preview2.0.0-rc.130indirecta
npm@vuepress/plugin-markdown-stylize2.0.0-rc.130indirecta
npm@vuepress/plugin-markdown-tab2.0.0-rc.130indirecta
npm@vuepress/plugin-notice2.0.0-rc.130indirecta
npm@vuepress/plugin-nprogress2.0.0-rc.130indirecta
npm@vuepress/plugin-photo-swipe2.0.0-rc.130indirecta
npm@vuepress/plugin-reading-time2.0.0-rc.130indirecta
npm@vuepress/plugin-redirect2.0.0-rc.130indirecta
npm@vuepress/plugin-rtl2.0.0-rc.130indirecta
npm@vuepress/plugin-sass-palette2.0.0-rc.130indirecta
npm@vuepress/plugin-seo2.0.0-rc.130indirecta
npm@vuepress/plugin-shiki2.0.0-rc.130indirecta
npm@vuepress/plugin-sitemap2.0.0-rc.130indirecta
npm@vuepress/plugin-slimsearch2.0.0-rc.130indirecta
npm@vuepress/plugin-theme-data2.0.0-rc.130indirecta
npm@vuepress/shared2.0.0-rc.30indirecta
npm@vuepress/utils2.0.0-rc.30indirecta
npm@vueuse/core14.3.0indirecta
npm@vueuse/metadata14.3.0indirecta
npm@vueuse/shared14.3.0indirecta
npmacorn8.17.0indirecta
npmansi-regex5.0.1indirecta
npmansi-regex6.2.2indirecta
npmansi-styles4.3.0indirecta
npmarg5.0.2indirecta
npmargparse1.0.10indirecta
npmargparse2.0.1indirecta
npmast-kit2.2.0indirecta
npmast-walker-scope0.9.0indirecta
npmautoprefixer10.5.2indirecta
npmbail2.0.2indirecta
npmballoon-css1.2.0indirecta
npmbaseline-browser-mapping2.10.43indirecta
npmbcrypt-ts8.0.1indirecta
npmbirpc2.9.0indirecta
npmboolbase1.0.0indirecta
npmbrowserslist4.28.6indirecta
npmcac7.0.0indirecta
npmcamelcase5.3.1indirecta
npmcaniuse-lite1.0.30001805indirecta
npmccount2.0.1indirecta
npmchalk5.6.2indirecta
npmcharacter-entities-html42.1.0indirecta
npmcharacter-entities-legacy3.0.0indirecta
npmcheerio1.2.0indirecta
npmcheerio-select2.1.0indirecta
npmchokidar5.0.0indirecta
npmcli-cursor5.0.0indirecta
npmcli-spinners3.4.0indirecta
npmcliui6.0.0indirecta
npmcolor-convert2.0.1indirecta
npmcolor-name1.1.4indirecta
npmcolorjs.io0.5.2indirecta
npmcomma-separated-tokens2.0.3indirecta
npmcommander14.0.3indirecta
npmcommander8.3.0indirecta
npmconfbox0.1.8indirecta
npmconfbox0.2.4indirecta
npmconnect-history-api-fallback2.0.0indirecta
npmcreate-codepen2.0.3indirecta
npmcss-select5.2.2indirecta
npmcss-what6.2.2indirecta
npmcsstype3.2.3indirecta
npmdebug4.4.3indirecta
npmdecamelize1.2.0indirecta
npmdequal2.0.3indirecta
npmdetect-libc2.1.2indirecta
npmdevlop1.1.0indirecta
npmdijkstrajs1.0.3indirecta
npmdom-serializer2.0.0indirecta
npmdomelementtype2.3.0indirecta
npmdomhandler5.0.3indirecta
npmdomutils3.2.2indirecta
npmelectron-to-chromium1.5.389indirecta
npmemoji-regex8.0.0indirecta
npmencoding-sniffer0.2.1indirecta
npmentities4.5.0indirecta
npmentities6.0.1indirecta
npmentities7.0.1indirecta
npmenvinfo7.21.0indirecta
npmesbuild0.28.1indirecta
npmescalade3.2.0indirecta
npmesprima4.0.1indirecta
npmestree-walker2.0.2indirecta
npmexsolve1.1.0indirecta
npmextend3.0.2indirecta
npmextend-shallow2.0.1indirecta
npmfdir6.5.0indirecta
npmfflate0.8.3indirecta
npmfind-up4.1.0indirecta
npmfraction.js5.3.4indirecta
npmfs-extra11.3.6indirecta
npmfsevents2.3.3indirecta
npmget-caller-file2.0.5indirecta
npmget-east-asian-width1.6.0indirecta
npmgiscus1.6.0indirecta
npmgraceful-fs4.2.11indirecta
npmgray-matter4.0.3indirecta
npmhas-flag4.0.0indirecta
npmhash-sum2.0.0indirecta
npmhast-util-from-html2.0.3indirecta
npmhast-util-from-parse58.0.3indirecta
npmhast-util-parse-selector4.0.0indirecta
npmhast-util-sanitize5.0.2indirecta
npmhast-util-to-html9.0.5indirecta
npmhast-util-whitespace3.0.0indirecta
npmhastscript9.0.1indirecta
npmhookable5.5.3indirecta
npmhtml-void-elements3.0.0indirecta
npmhtmlparser210.1.0indirecta
npmiconv-lite0.6.3indirecta
npmimmutable5.1.9indirecta
npmis-extendable0.1.1indirecta
npmis-extglob2.1.1indirecta
npmis-fullwidth-code-point3.0.0indirecta
npmis-glob4.0.3indirecta
npmis-interactive2.0.0indirecta
npmis-plain-obj4.1.0indirecta
npmis-unicode-supported2.1.0indirecta
npmjs-yaml3.15.0indirecta
npmjs-yaml4.3.0indirecta
npmjsesc3.1.0indirecta
npmjson52.2.3indirecta
npmjsonfile6.2.1indirecta
npmkind-of6.0.3indirecta
npmlightningcss1.32.0indirecta
npmlightningcss-android-arm641.32.0indirecta
npmlightningcss-darwin-arm641.32.0indirecta
npmlightningcss-darwin-x641.32.0indirecta
npmlightningcss-freebsd-x641.32.0indirecta
npmlightningcss-linux-arm-gnueabihf1.32.0indirecta
npmlightningcss-linux-arm64-gnu1.32.0indirecta
npmlightningcss-linux-arm64-musl1.32.0indirecta
npmlightningcss-linux-x64-gnu1.32.0indirecta
npmlightningcss-linux-x64-musl1.32.0indirecta
npmlightningcss-win32-arm64-msvc1.32.0indirecta
npmlightningcss-win32-x64-msvc1.32.0indirecta
npmlilconfig3.1.3indirecta
npmlinkify-it5.0.2indirecta
npmlit3.3.3indirecta
npmlit-element4.2.2indirecta
npmlit-html3.3.3indirecta
npmlocal-pkg1.2.1indirecta
npmlocate-path5.0.0indirecta
npmlog-symbols7.0.1indirecta
npmmagic-string0.30.21indirecta
npmmagic-string-ast1.0.3indirecta
npmmarkdown-it14.3.0indirecta
npmmarkdown-it-anchor9.2.1indirecta
npmmarkdown-it-cjk-friendly2.0.2indirecta
npmmarkdown-it-emoji3.0.0indirecta
npmmdast-util-to-hast13.2.1indirecta
npmmdurl2.0.0indirecta
npmmicromark-util-character2.1.1indirecta
npmmicromark-util-encode2.0.1indirecta
npmmicromark-util-sanitize-uri2.0.1indirecta
npmmicromark-util-symbol2.0.1indirecta
npmmicromark-util-types2.0.2indirecta
npmmimic-function5.0.1indirecta
npmmlly1.8.2indirecta
npmms2.1.3indirecta
npmmuggle-string0.4.1indirecta
npmnanoid3.3.16indirecta
npmnanoid5.1.16indirecta
npmnode-addon-api7.1.1indirecta
npmnode-releases2.0.51indirecta
npmnth-check2.1.1indirecta
npmonetime7.0.0indirecta
npmoniguruma-parser0.12.2indirecta
npmoniguruma-to-es4.3.6indirecta
npmora9.4.1indirecta
npmp-limit2.3.0indirecta
npmp-locate4.1.0indirecta
npmp-try2.2.0indirecta
npmparse57.3.0indirecta
npmparse5-htmlparser2-tree-adapter7.1.0indirecta
npmparse5-parser-stream7.1.2indirecta
npmpath-exists4.0.0indirecta
npmpathe2.0.3indirecta
npmperfect-debounce2.1.0indirecta
npmphotoswipe5.4.4indirecta
npmpicocolors1.1.1indirecta
npmpicomatch4.0.5indirecta
npmpkg-types1.3.1indirecta
npmpkg-types2.3.1indirecta
npmpngjs5.0.0indirecta
npmpostcss8.5.22indirecta
npmpostcss-load-config6.0.1indirecta
npmpostcss-value-parser4.2.0indirecta
npmproperty-information7.2.0indirecta
npmpunycode.js2.3.1indirecta
npmqrcode1.5.4indirecta
npmquansync0.2.11indirecta
npmreaddirp5.0.0indirecta
npmregex6.1.0indirecta
npmregex-recursion6.0.2indirecta
npmregex-utilities2.3.0indirecta
npmrehype-parse9.0.1indirecta
npmrehype-sanitize6.0.0indirecta
npmrehype-stringify10.0.1indirecta
npmrequire-directory2.1.1indirecta
npmrequire-main-filename2.0.0indirecta
npmrestore-cursor5.1.0indirecta
npmrolldown1.1.5indirecta
npmrxjs7.8.2indirecta
npmsafer-buffer2.1.2indirecta
npmsass1.100.0indirecta
npmsass-embedded1.100.0indirecta
npmsass-embedded-all-unknown1.100.0indirecta
npmsass-embedded-android-arm1.100.0indirecta
npmsass-embedded-android-arm641.100.0indirecta
npmsass-embedded-android-riscv641.100.0indirecta
npmsass-embedded-android-x641.100.0indirecta
npmsass-embedded-darwin-arm641.100.0indirecta
npmsass-embedded-darwin-x641.100.0indirecta
npmsass-embedded-linux-arm1.100.0indirecta
npmsass-embedded-linux-arm641.100.0indirecta
npmsass-embedded-linux-musl-arm1.100.0indirecta
npmsass-embedded-linux-musl-arm641.100.0indirecta
npmsass-embedded-linux-musl-riscv641.100.0indirecta
npmsass-embedded-linux-musl-x641.100.0indirecta
npmsass-embedded-linux-riscv641.100.0indirecta
npmsass-embedded-linux-x641.100.0indirecta
npmsass-embedded-unknown-all1.100.0indirecta
npmsass-embedded-win32-arm641.100.0indirecta
npmsass-embedded-win32-x641.100.0indirecta
npmsax1.6.0indirecta
npmscule1.3.0indirecta
npmsection-matter1.0.0indirecta
npmset-blocking2.0.0indirecta
npmshiki4.3.1indirecta
npmsignal-exit4.1.0indirecta
npmsitemap9.0.1indirecta
npmslimsearch2.3.0indirecta
npmsource-map-js1.2.1indirecta
npmspace-separated-tokens2.0.2indirecta
npmsprintf-js1.0.3indirecta
npmstdin-discarder0.3.2indirecta
npmstring-width4.2.3indirecta
npmstring-width8.2.2indirecta
npmstringify-entities4.0.4indirecta
npmstrip-ansi6.0.1indirecta
npmstrip-ansi7.2.0indirecta
npmstrip-bom-string1.0.0indirecta
npmsupports-color8.1.1indirecta
npmsync-child-process1.0.2indirecta
npmsync-message-port1.2.0indirecta
npmsynckit0.11.13indirecta
npmtinyglobby0.2.17indirecta
npmtrim-lines3.0.1indirecta
npmtrough2.2.0indirecta
npmtslib2.8.1indirecta
npmuc.micro2.1.0indirecta
npmufo1.6.4indirecta
npmundici7.28.0indirecta
npmundici-types7.18.2indirecta
npmundici-types8.3.0indirecta
npmunified11.0.5indirecta
npmunist-util-is6.0.1indirecta
npmunist-util-position5.0.0indirecta
npmunist-util-stringify-position4.0.0indirecta
npmunist-util-visit5.1.0indirecta
npmunist-util-visit-parents6.0.2indirecta
npmuniversalify2.0.1indirecta
npmunplugin3.3.0indirecta
npmunplugin-utils0.3.2indirecta
npmupath2.0.1indirecta
npmupath3.0.8indirecta
npmupdate-browserslist-db1.2.3indirecta
npmvarint6.0.0indirecta
npmvfile6.0.3indirecta
npmvfile-location5.0.3indirecta
npmvfile-message4.0.3indirecta
npmvite8.1.4indirecta
npmvue3.5.39indirecta
npmvue-router5.1.0indirecta
npmvuepress2.0.0-rc.30indirecta
npmvuepress-plugin-components2.0.0-rc.107indirecta
npmvuepress-plugin-md-enhance2.0.0-rc.107indirecta
npmvuepress-shared2.0.0-rc.107indirecta
npmvuepress-theme-hope2.0.0-rc.107indirecta
npmweb-namespaces2.0.1indirecta
npmwebpack-virtual-modules0.6.2indirecta
npmwhatwg-encoding3.1.1indirecta
npmwhatwg-mimetype4.0.0indirecta
npmwhich-module2.0.1indirecta
npmwrap-ansi6.2.0indirecta
npmy18n4.0.3indirecta
npmyaml2.9.0indirecta
npmyargs15.4.1indirecta
npmyargs-parser18.1.3indirecta
npmyoctocolors2.1.2indirecta
npmzwitch2.0.4indirecta
Avisos de dependencias 0

Este repositorio no publica ningún paquete que el índice resuelva, así que se evaluó su propio grafo de dependencias — 498 paquetes, que incluyen también fijaciones de desarrollo y prueba que nunca se distribuyen: 0 tienen avisos conocidos, de los cuales 0 son directas. 1 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido, o fuera de la lista de paquetes informada.

Ningún aviso conocido afecta a las dependencias evaluadas.

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "ta-lib",
        "financial",
        "series-analysis",
        "technical-analysis"
      ],
      "is_fork": false,
      "size_kb": 1008183,
      "has_wiki": false,
      "homepage": "https://ta-lib.org/",
      "languages": {
        "C": 14039671,
        "C#": 606931,
        "M4": 2173,
        "Java": 32229391,
        "Rust": 12494524,
        "SCSS": 5456,
        "CMake": 42533,
        "Shell": 15521,
        "Python": 295013,
        "Makefile": 7066,
        "TypeScript": 3352
      },
      "pushed_at": "2026-07-27T08:35:28Z",
      "created_at": "2016-08-20T06:28:16Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-27T02:56:58Z",
      "description": "TA-Lib (Core C Library)",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "BSD-3-Clause",
      "default_branch": "main",
      "license_spdx_raw": "BSD-3-Clause",
      "primary_language": "Java",
      "significant_languages": [
        "Java",
        "C",
        "Rust"
      ]
    },
    "owner": {
      "blog": "https://sourceforge.net/p/ta-lib/bugs/102/",
      "name": "TA-Lib",
      "type": "Organization",
      "login": "TA-Lib",
      "company": null,
      "location": null,
      "followers": 332,
      "avatar_url": "https://avatars.githubusercontent.com/u/21127168?v=4",
      "created_at": "2016-08-19T14:54:08Z",
      "is_verified": null,
      "public_repos": 12,
      "account_age_days": 3628
    },
    "license": {
      "state": "standard",
      "spdx_id": "BSD-3-Clause",
      "raw_spdx": "BSD-3-Clause",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.7.1",
          "kind": "patch",
          "published_at": "2026-07-03T17:36:45Z"
        },
        {
          "tag": "v0.6.4",
          "kind": "patch",
          "published_at": "2025-01-11T05:00:37Z"
        },
        {
          "tag": "v0.6.3",
          "kind": "patch",
          "published_at": "2025-01-06T00:16:36Z"
        },
        {
          "tag": "v0.6.2",
          "kind": "patch",
          "published_at": "2024-12-26T04:12:47Z"
        },
        {
          "tag": "v0.6.1",
          "kind": "patch",
          "published_at": "2024-12-23T21:37:11Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2024-02-13T17:47:56Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "144c635bb429759235696d9f95e1734169205f3a",
          "body": "…one (replaced by the generated metadata registry)",
          "is_bot": false,
          "headline": "docs: CLAUDE.md project tree — the hand-written Java meta/ layer is g…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-27T02:50:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4d46dbdc905712bdda7e27a978056ae3b5258b5",
          "body": "… emitters\n\nFour lints under -D warnings (unnecessary_to_owned, unnecessary_map_or,\nredundant_closure_for_method_calls, too_many_lines on the ParamHolder\nemitter — allowed per the c_stream.rs precedent). Emission-neutral: a full\ngenerate produces zero file changes.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(codegen): clear the clippy pedantic gate in the Java doc/metadata…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-27T02:41:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "acad5800617507d77364cd9839d06382605294d1",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-27T02:36:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bcbecf469891abc98c26fde3c8525780c3e97f7a",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-27T02:28:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dab2d5c9295d5bbc82cfd63d40766643614b1ce0",
          "body": "Merged for contribution credit. dev already carries the reworked\nimplementation (e9848f1e) built on this PR's end-bounding idea; all\nconflicts resolved to the dev version, so this merge changes no content.",
          "is_bot": false,
          "headline": "Merge PR #143: bound each MAVP ma() pass at its period's last use",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-27T02:01:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6160bc12d0de60ec4678dc37b12ed6b00d6de6a",
          "body": "…ith doclint\n\njava_doc.rs renders each function's ta_codegen/input/<name>/<name>.md onto the\npublic batch API -- the Java counterpart of rust_doc.rs. Until now Core.java's\nonly /** blocks were the templated streaming blurbs: 168 batch methods with no\ndocumentation and no IDE hover. Prose comes from \n[…]\nges, exit 0; xlang-hash Rust 200961 / Java\n200907 cases, 0 mismatches; cargo test all 10 suites 0 failed; 5 Java suites +\ndoclint; regen idempotent; C/Rust/.NET generated output byte-identical.\n\nMF,CC",
          "is_bot": false,
          "headline": "feat(java): generate batch Javadoc from the canonical .md + gate it w…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-27T00:27:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1bd1fcec96be1ddd94c4fee6a522cb37434dc069",
          "body": "Java gets the introspection layer C and Rust already ship, replacing the frozen\n2007 meta/ island that A2 had to delete. Package io.github.talib.metadata:\nFunctions.all()/byName(), rows as immutable records, plus a ParamHolder and a\nGENERATED STATIC SWITCH for call-by-name -- C's TA_ParamHolderAlloc\n[…]\n961 / Java\n200907 cases, 0 mismatches; cargo test all 10 suites 0 failed; 5 junit-free Java\nsuites (MetadataTest auto-discovered); regen idempotent; C/Rust/.NET generated\noutput byte-identical.\n\nMF,CC",
          "is_bot": false,
          "headline": "feat(java): ship the generated metadata registry + call-by-name",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T21:51:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e9848f1ec15b629fb2192e6038bcdfc25b28494f",
          "body": "…ast use (#143)\n\nBuilds on PR #143 by @dexhunter: each per-period ma() pass now ends at the\nlast output using that period — bit-safe because every dispatched MA fills\nforward (truncating the end cannot change earlier outputs). The\nflag-and-rescan selection is replaced by a counting sort sized by the\n[…]\nlock-copy and wrong-fast-path-buffer defects pass\nevery pre-existing gate and are caught only by this group.\n\nAlso adds the missing #128 CHANGELOG entry.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(mavp): group outputs by period and bound each ma() pass at its l…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T21:12:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6ceb94e83c1e0ad4aeeb8b56edc8148f8e1dafb5",
          "body": "…overy\n\nThe A2 checkpoint review found what the gates structurally cannot see.\n\nThe published ta-lib.org Java pages documented an API that no longer exists. A2\nrewrote only the import FQNs there, so the pages LOOKED reviewed while every\nsample stayed on the pre-A1 surface: MInteger/RetCode imports (\n[…]\nd; 4 Java suites pass; regen\nidempotent. Note the gate run happened on a tree that also carried another\nsession's in-flight #143 MAVP work, so it green-lit both; the commit itself is\nJava-only.\n\nMF,CC",
          "is_bot": false,
          "headline": "fix(java): A2 checkpoint review — website API docs, casing, test disc…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T20:42:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e2b15dde33c82f705d425bc6caab365ca1fc71de",
          "body": "The public batch surface returns `record OutRange(begIdx, count)` and throws on\nmisuse. A range shorter than the lookback stays a SUCCESS with count 0 -- C's\ncontract -- and is never an exception.\n\nFragments keep the C shape as package-private cores (`xxxInternal`,\n`xxxUnguardedInternal`); `java.rs`\n[…]\nJava\n200907 cases, 0 mismatches; cargo test ALL 10 suites 0 failed; 4 junit-free Java\nsuites pass (38+30+4 checks + stream smoke); regen idempotent; C/Rust/.NET\ngenerated output byte-identical.\n\nMF,CC",
          "is_bot": false,
          "headline": "refactor(java)!: OutRange + throwing wrappers; rename to io.github.talib",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T05:15:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "74ba14d4eae4ef89ba1dde8327433eeb510cc38f",
          "body": "Core is immutable (final fields, deep-immutable CandleSetting, defensive\ncopies, no accessor hands an array back), so sharing one across threads is\nsafe under JLS 17.5 without synchronization. Settings move to a hand-written\nCoreBuilder; Core.DEFAULT is the shared zero-config instance.\n\nCompatibilit\n[…]\n --codegen 161/0/7 x4 languages, exit 0; xlang-hash Rust 200961 /\nJava 200907 cases, 0 mismatches; cargo test 306+226+2, 0 failed; regen\nidempotent; C/Rust/.NET generated output byte-identical.\n\nMF,CC",
          "is_bot": false,
          "headline": "refactor(java): immutable Core + CoreBuilder; drop compatibility",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T03:27:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0e48c4eb35f8e842040a6a2f6a0363f15d58e8da",
          "body": "…riod prose\n\nPath-Dependent was the one category described only in the abstract. Add AD (a\nrunning accumulation whose level is an artifact of the start date) and SAR (a\nstate machine that can pick the opposite initial trend direction) as a two-item\nlist, so the reader sees both shapes the opening se\n[…]\nction page already names the setting it\nresponds to.\n\nLink \"Function Documentation\" in the intro to /functions/ rather than leaving\n\"the documentation\" for the reader to locate.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): give Path-Dependent two examples; trim the unstable-pe…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-26T01:00:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ba2269e3b6f294a72f8a7dfb6b4e62a2d74c36d7",
          "body": "TA_MAVP normalized every requested period into localPeriodArray, then, for\neach distinct period still flagged, called ma() over the whole remaining\nrange and scanned the rest of localPeriodArray to find and copy every\noutput sharing that period. Every ma() pass therefore ran to endIdx even\nwhen its \n[…]\ninside the\n1e-12 bar).\n\nThe added allocation is 2*(optInMaxPeriod+1) ints, sized by the period\nrange rather than the data, and is null-checked with full cleanup.\n\nCo-Authored-By: Aiden <aiden@weco.ai>",
          "is_bot": false,
          "headline": "perf(mavp): bound each ma() pass at its period's last use",
          "author_name": "Dex Hunter",
          "author_login": "dexhunter",
          "committed_at": "2026-07-25T12:12:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "68757ff34d2ce5ed5bf3379aa936605fa515565f",
          "body": "Transitive dev dependency of the VuePress/vite build. Path traversal in\nprevious-source-map auto-loading; not reachable here (build-time only,\nno untrusted CSS). Lockfile-only.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "build(website): bump postcss 8.5.17 -> 8.5.22 (GHSA-r28c-9q8g-f849)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T03:59:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e203f7c436a9c21fd08246661971cfcb7ee37517",
          "body": "\"If Initial Unstable Period, then...\" rather than a bare category name, so a\nreader landing mid-page sees that a section covers one case out of four, not a\nproperty every function has, and that the answer is the body below.\n\nAnchors are pinned with {#id} (markdown-it-attrs, already enabled by the th\n[…]\nnction pages deep-link\nthese sections, and letting the slugifier follow the wording would both lengthen\nthe ids and break every inbound link the next time a heading is reworded.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): phrase the stability headings as conditionals",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T02:58:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "25c5157dd47c01a1a73800d477b2e5bd3c8eb515",
          "body": "…I section\n\nReference page: trim the Start-Independent and Initial Unstable Period sections\nto what the reader needs, drop the two \"comparing across different-length\nwindows\" restatements, and link /api/unstable-period/ for what to do about an\nunstable period. Call the four things \"categories\" rathe\n[…]\nasted in issues and forum answers, so a bare rename would silently land\nthose readers at the top of a long page. The four in-repo pages that used it are\nmoved to the new anchor.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): tighten the numerical-stability wording; rename the AP…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T02:49:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ba8c75f08d225a4abc33072f3b5e0c8505463101",
          "body": "…lity line\n\nA state's definition is written once, on /functions/stability, and linked. The\nper-function line adds a clause only when there is something the link cannot\nsay: which inner function the unstable period is inherited from (DEMA -> EMA),\nwhat this function's own MAType default implies (BBAN\n[…]\nso inherits a period that still\nmoves its lookback (ADOSC -> EMA). Start-Independent, an intrinsic unstable\nperiod and plain path-dependence now render as the bare linked state.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): say only what is specific to the function in the stabi…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T01:59:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d9108cd2758e769912626825f8825398ab06b9e0",
          "body": "…ckboxes\n\nThe Properties table claimed \"Start-Independent\" for 17 functions that are not.\nThe YAML `unstable_period` flag answers the ABI question -- does this function own\na tunable TA_FUNC_UNST_* id -- which is what TA_FUNC_FLG_UNST_PER has always\nmeant, and the documentation was rendering it as a\n[…]\non) but\nunchecked cells no longer carry their tooltip. Verified: the phrases \"never\nconverges\" and \"candlestick-pattern signal\" now appear only on the pages where\nthey are true.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(website): derive numerical stability; state it in prose, not che…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T01:41:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7b842bb10de1a133f9f5fa0042ca82b274c57761",
          "body": "Present the RSI and BBANDS formulas as KaTeX display blocks (already enabled\nsite-wide via vuepress-theme-hope markdown.math + katex) instead of prose with\ninline math, followed by a short \"where ...\" legend line.\n\nRSI now states Wilder's published form (RS, then 100 - 100/(1+RS)) rather than\nour fu\n[…]\neriod shortcuts stay out of the docs.\n\ndocs_site: drop any \"##\" section whose body is blank, so an empty \"## Notes\"\nplaceholder in an input page never renders as a bare heading.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(rsi,bbands): typeset formulas as display math; drop empty sections",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-25T01:08:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1ce79015cc02f9ef42f77db0c72beffb28772c33",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-24T20:19:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80a11563bfea3957bf1b7b4530e5508892ba30af",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-24T20:11:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71105c62c7a5d43c950f05ce981785c42cc78ba8",
          "body": "… comments\n\nThe fuzz/xlang param-vector builder collected MAType candidates into a fixed\ncand[10] with an `nc < 10` guard that dropped extra values SILENTLY — it never\nreached the FUZZ_MAX_VEC overflow counter, so a MAType list longer than 10\nnon-default would quietly stop being swept. #93 (DISABLED\n[…]\n\" comment fixed.\n\nBehavior-neutral at M=11 (no coverage change); the next MAType add now fails\nthe gate instead of silently dropping arms. All gates green (--codegen,\n--xlang-hash, --fuzz-064, plain).",
          "is_bot": false,
          "headline": "test(regtest): make MAType vector-cap truncation fail loudly, refresh…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T19:56:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d7519d6c7a73403466d28630c29619d07666d198",
          "body": "MACDEXT carries 3 MAType params, so its stream-vector count is 6*M+1 in the\nMAType-list length M. #93 added TA_MAType_DISABLED (M 10->11), taking it from\n61 to 67 vectors and tripping the STREAM_MAX_VEC=64 overflow guard — a hard\nfailure of the unfiltered `ta_regtest --codegen` stream_verify gate th\n[…]\ned since #93 landed. Raise the cap to 128 (runway for ~10 more\nMATypes); the dropped MACDEXT DISABLED arms are now actually stream-verified\n(15596 legs, up from 10684). Coverage restored, not reduced.",
          "is_bot": false,
          "headline": "test(regtest): raise STREAM_MAX_VEC 64->128 for MACDEXT after #93 (#93)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T18:18:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4ebb02a3fcbac58d2640e585d2ceef0b84b21a85",
          "body": "…ers (#142)\n\nRoute the abstract sweep's empty-output cases (period consumes the whole\nrange -> TA_SUCCESS + zero-length) through server_verify, so the contract is\nverified against the Rust/Java/.NET servers, not just in-process C. The\ngeneric --codegen/--xlang-hash sweeps clamp every lookback below nbBars, so\nperiod>data was the one boundary never cross-checked. Non-vacuity guard +\n84 cases x 4 langs; sabotage-proven both ways.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "test(regtest): cross-check period>input empty-output vs language serv…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T18:01:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7bf49d271bf3ba1165dd8de360216f0d20f3fa21",
          "body": "…s (#93)\n\nThe MA page also notes that DISABLED bypasses smoothing for any period.",
          "is_bot": false,
          "headline": "docs(functions): list TA_MAType_DISABLED in per-function MAType table…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T16:57:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7566c9f4fed9bc97435fe09fa2f5a860f1085dc3",
          "body": "New TA_MAType value that makes the moving average a plain input->output copy\nwith a lookback of 0, regardless of the period parameter. Every function that\ntakes an MAType parameter (MA, MAVP, BBANDS, MACDEXT, STOCH/STOCHF/STOCHRSI,\nAPO/PPO/PVO) accepts it: they all route the copy through the single \n[…]\nISABLED swept everywhere: four-variant parity\n(guarded/unguarded/TA_S_), batch==stream (stream_verify), and bit-identical\nC/Rust/Java (--xlang-hash); the frozen-oracle differential sweep is unchanged.",
          "is_bot": false,
          "headline": "feat(ma): TA_MAType_DISABLED — period-independent no-smoothing (#93)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T16:57:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "39aac3bd8822a9b5fa77f2d91468472fe13ced7c",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-24T07:40:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6cf93e43b1a5dc7c0516eb54455ef27f940322f",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-24T07:31:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b8b7c4596b7909fcce573ba31ef97a61c240823",
          "body": "Several period-scaled integer expressions were evaluated in int32 before\nbeing stored to a double, overflowing (signed UB) well inside the advertised\n[.,100000] period range:\n\n- WMA/HMA  divider = (n*(n+1))>>1  -- the int product overflows at n>=46341\n  (the issue's 65536 is only where the post-shif\n[…]\ne build folds the overflow to the correct value (the optimizer is\n  entitled to assume no signed overflow), so the value check there is\n  coherence-only.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(wma,hma,linearreg): compute period-scaled dividers in double (#142)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T04:28:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "81d9d54b879c38ab955194b40db181f00f6591a1",
          "body": "Adding TA_MAType_HMA (#139) surfaced four places the MAType enum was still\nhand-maintained even though enums.yaml is the source of truth. All four now\nderive from enums.yaml:\n\n- include/ta_defs.h: moved the TA_MAType enum inside GENCODE SECTION 1 (a\n  one-time marker edit) and emit it from enums.yam\n[…]\nd; no\nindicator-source drift). Gates: 303 generator tests + clippy; C reference\nregtest (four-variant bitwise parity); all 4 servers built; cross-language\n--codegen-only 161/161 x 4 languages, 0 fail.",
          "is_bot": false,
          "headline": "refactor(codegen): ta_codegen owns every MAType enum surface (#140)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T03:29:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "22924cdb7856fe68bb811984f4d3eb3b959a7618",
          "body": "The flag never meant the \"start-dependent\" umbrella its name implied. An\nunstable-period function is *also* start-dependent (its warm-up depends on\nwhere the data begins) yet is deliberately NOT flagged, because it converges;\nthe flag marks only the set that never converges -- running accumulations\n\n[…]\nkeys;\nfull generator suite (611); C build + reference regtest (path-dependent set\nstill skipped correctly); all 4 language servers built; cross-language\n--codegen-only (161/161 x 4 languages, 0 fail).",
          "is_bot": false,
          "headline": "refactor(abstract): rename TA_FUNC_FLG_START_DEP -> TA_FUNC_FLG_PATH_DEP",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T02:35:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "180ec2fd99987441763044bff0b762bd505a9ac1",
          "body": "Add a generated `## Properties` table to every function page\n(backends/docs_site.rs, injected before `## Implementation`), surfacing the\nabstract-layer flags that were previously invisible in the docs:\n\n- Numerical Stability column: a single-select of three mutually-exclusive\n  states folded from tw\n[…]\nstability logic reads both `path_dependent` and the current\n`start_dependent` YAML word, so the generated pages are byte-stable across\nthe pending TA_FUNC_FLG_START_DEP -> TA_FUNC_FLG_PATH_DEP rename.",
          "is_bot": false,
          "headline": "docs(website): per-function Properties table (stability + display flags)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-24T02:15:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "32f69a58dd2564596629bb3f3a9977ee5ae519c8",
          "body": "Flip hma.yaml to [overlap, stream]. Recognition was already unlocked by\n#139's param-pure dual-mode split (optInTimePeriod == 2 || == 3): the\nanalyzer derives a full dual-mode plan -- mode A (degenerate, T3 input-ring\nonly) and mode B (general: two input rings + the sqrt(n)-1 dRing CIRCBUF).\nThe sol\n[…]\nC dualmode modeA=T3/state=5 modeB=T3/state=19. The abstract\nsurface carries TA_FUNC_FLG_STREAM; servers and the stream bench\nregenerated (ta_bench_stream: HMA update ~8ns, ~4x faster than batch@last).",
          "is_bot": false,
          "headline": "feat(hma): stream support via dual-mode per-arm buffer union (#141)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-23T23:07:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "728f8130c65edb21dfbadbd831b1feeaa9b085b6",
          "body": "HMA(n) = WMA(2*WMA(price,n/2) - WMA(price,n), sqrt(n)), both derived\nperiods TRUNCATED per Alan Hull's own Integer() (Tulip and pandas-ta agree;\nStockCharts rounds -- a visibly different line, documented in hma.md and\npinned by n=7/8 convention tests). Default 20 is the author's, and a period\nwhere \n[…]\n, #141\n(streaming: recognition unlocked, per-arm buffer union in the stream\nemitters remains), #142 (pre-existing WMA divider int overflow at\np >= 65536, inherited deliberately for bit-compatibility).",
          "is_bot": false,
          "headline": "feat(hma): Hull Moving Average + TA_MAType_HMA, fused single-pass (#139)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-23T16:34:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fed29d3e4d2b24cc123be14d652d16121e86a1c7",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-23T07:40:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f551684f8ee46e1f4afb6be4854300ae27a95a9",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-23T07:33:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80b70d156ce55b4044f0137007308242826628d0",
          "body": "…' term\n\nIntro paragraphs described the batch API first; now purpose -> mechanism ->\nguarantee, with batch as the closing contrast. Replace 'handle' with\n'stream' throughout (matches the actual type, e.g. TA_SMA_Stream) on the\nC, Rust and Java pages; fix a stale '*s is NULL' comment in the C example.",
          "is_bot": false,
          "headline": "docs(website): streaming intros lead with streaming; unify on 'stream…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-23T00:41:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7eb5bca6e81747f4f3968cde2cae2e5402491a1e",
          "body": "…129)\n\nBoth ids were accepted by TA_SetUnstablePeriod() but never read by any\ncomputation (0 reads at v0.6.4 and reference-pre-cutover): ADXR and\nSTOCHRSI follow the unstable period of their internal ADX and RSI. Renamed\nto TA_FUNC_UNST_UNUSED_1 / _UNUSED_22 with values preserved (the MFI/IMI\npreced\n[…]\ne two ids everywhere; the website\nunstable-period list falls to 20 entries automatically.\n\nOutput is bit-identical by construction (fuzz-064 green); full --codegen\nsweep 161 funcs x 4 languages green.",
          "is_bot": false,
          "headline": "fix(api): retire inert TA_FUNC_UNST_ADXR and TA_FUNC_UNST_STOCHRSI (#…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-22T19:39:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0586205b88ef9639e97e20e88b82d66fd23a3867",
          "body": "The FuncUnstId emitter (ta_defs.rs) drops the gen_code-era /* NNN */\ncomment format and writes TA_MAType-style explicit initializers, asserting\nvalues are contiguous from 0 (Java/Rust backends index by declaration\norder). Same treatment hand-applied to TA_RetCode, TA_Compatibility,\nTA_RangeType and TA_CandleSettingType. Values unchanged; no ABI change.\nAlso documents TA_Compatibility as deprecated.",
          "is_bot": false,
          "headline": "refactor(include): explicit = N values for every ta_defs.h enum",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-22T19:39:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df28ca3750ad90776c841a968c98fbae271fd840",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-22T07:44:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a70c72c0df9e8feaaac7d465aa20abfc9ae7e10",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-22T07:35:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d784e9f2a1a39dc4a30a38307548ffcc58ffcac8",
          "body": "The 0.8.1 entry scoped NATR to startIdx > lookback; the zero-close\noutReal[0] gap also hits ordinary full-range calls (ta-lib-python#653).\nSplit the IMI unstable-period note onto its own line.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(changelog): #98 NATR zero-close gap affects full-range calls too",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-22T01:43:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9bf176fc25a0fabbfe034488bf4c0fc99a62a6b7",
          "body": "TA_REALBODY/TA_UPPERSHADOW/TA_LOWERSHADOW/TA_HIGHLOWRANGE in ta_utility.h read\ntheir input arrays with no cast. In a TA_S_CDL* body those arrays are const\nfloat[], so TA_CANDLERANGE/TA_CANDLEAVERAGE compute the range in float and round\nbefore it widens into the double accumulator -- breaking PR #33'\n[…]\nregtest so the autotools dist nightly covers it.\n\nVerified: bare ./ta_regtest (VARIANT gate 167 funcs x 31104 vectors bit-identical\n+ new test green); fuzz-064 PASS, 0 failures.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "fix(ta_func): compute candle range in double inside TA_S_ bodies (#138)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-22T00:07:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "99826e3ac839576712de5ddd936220d5af0842f0",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-21T23:33:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10672914575e89c43d1b2b5c19ad30cd9bdc2439",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-21T23:26:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf376135e2dbc784de722ad00e154e1d4d191564",
          "body": "…tops reading garbage\n\nThe new VARIANT gate's build_regime() is the first code to read\nTA_History.openInterest and trusts the struct's \"unused arrays are NULL\"\ncontract, but testTAFunction_ALL and test_codegen_with_simulator never set the\nfield (the fuzz histories already do). On Linux the stack slo\n[…]\n see\nuninitialized reads): the poison build SIGSEGVs at test_variants.c:368 and passes\nclean with the initializer. Harness only; no library code changes.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ta_regtest): NULL-init history.openInterest so the variant gate s…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T23:18:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "190aaf1e420821bbf4a9e113a11ab5ac064c532c",
          "body": "…every slot (#137)\n\nvariant_frame::flat_inputs classified inputs by matching ParamType::Price -- an\narm that never fires, because parser::yaml expands a price bundle into Real\ninputs long before any backend sees it. Every price component therefore fell\nthrough to the Real arm and was emitted as TA_V\n[…]\nippy --all-targets clean, ta_regtest --codegen green across\nall four languages, and the full variant sweep (167 functions x 31104 vectors)\nbit-identical on the corrected inputs.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "fix(ta_regtest): feed the variant gate real OHLC bars, not volume in …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T21:41:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0fac748036faa096ea38df696ad1a33e74836f99",
          "body": "…the price bundle (#135)\n\nA price bar is declared once and used two ways. `ta_abstract` describes it as a\nsingle TA_Input_Price parameter named `inPriceHLC` whose flags word names the\ncomponents; the functions themselves take one array per component --\nTA_STOCH(startIdx, endIdx, inHigh, inLow, inClo\n[…]\n--codegen green across all four languages\n(including test_abstract's paramName comparison), 338 doctests, cargo doc\nwarning-free, and a fresh generate leaves the tree unchanged.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "docs(ta_codegen): document the arrays a function is called with, not …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T21:21:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "08e4e5172ea2f20ad01378bd3a198ead5eca40ae",
          "body": "The clippy gate is a hard CI step and variant_frame.rs landed in 7359f7ad\nwithout ever being run through it -- I built and tested the generator but not\n`cargo clippy --all-targets -- -D warnings`, so 7 pedantic errors reached dev.\n\nReal fixes:\n- map(...).unwrap_or(...) -> map_or(...)\n- `n - 1` as a \n[…]\nentical, so no downstream artifact\nmoves. Verified: both clippy steps clean, generator tests, the generated\ncrate's 338 doctests, and a fresh generate leaves the tree unchanged.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "fix(ta_codegen): satisfy clippy pedantic in variant_frame (#137)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T20:42:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7359f7ad95676d28ed24b917a6ee4883791243e6",
          "body": "…period 1 (#137)\n\nEvery function ships four times over -- TA_<N>, TA_<N>_Unguarded, TA_S_<N> and\nTA_S_<N>_Unguarded -- and nothing gated three of them generically. #137 reported\nthis for the six post-cutover functions the frozen-reference sweep skips; the\nhole is wider than that, and was demonstrate\n[…]\n; --codegen all four languages; --xlang-hash\n(192942 cases, 0 mismatches); ASan+UBSan clean; -Wall -Wextra clean;\ncheck-source-lists; a fresh generate leaves the tree unchanged.\n\nCo-authored-by: MF,CC",
          "is_bot": false,
          "headline": "test(regtest): bitwise four-variant parity gate, and fix TA_S_WMA at …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T20:17:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ab484ccbd3fd7d18eeb35bafafa9426bbc1d46cd",
          "body": "CMF landed as the 167th streamable function without updating the ratchet,\nso the dev nightly's generator-test job has been failing since 48e0170d.\nThe paired `emitted == total` assertion was already green — every\nstreamable function does emit its Java stream section.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(java): bump the stream emit ratchet to 167 for CMF (#134)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T18:57:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "519311abc6d170b5e9f9f6a8a50ed42f5d141dc6",
          "body": "The example bars put close at the exact midpoint of high/low, so the\nmoney-flow multiplier was identically zero and the AD/ADOSC/CMF doctests\ncould not fail. Measured over all 167 doctests: 62 produced an output that\nno implementation error could change (52 CDL all-zero, AD/ADOSC/CMF\nall-zero, ACOS/\n[…]\necuted them.\n\nThe generated diff is rustdoc comments only -- no library code changes.\n338 doctests pass; sabotaging CMF's divisor makes its doctest fail.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(rust): make the generated doctests able to fail (#136)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T18:44:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d661b9ae084709184c5b3ad76d776e6961a4b442",
          "body": "…en/input\n\nReworks the previous commit's hint into the generator's own idiom and extends\nit past MIN/MAX, then narrows it to the targets where it was measured to pay.\n\n- New Statement::UnrollHint IR node. `TA_UNROLL(n)` is written once per loop in\n  ta_codegen/input/<f>/<f>.c, so the source of truth\n[…]\n frozen-reference codegen\nverification passes for all 4 languages / 161 functions, and the generated\nRust/Java/.NET sources are byte-identical to before.\n\nCo-authored-by: MF,CC <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(minmax): express the rescan unroll as TA_UNROLL(n) from ta_codeg…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T17:19:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0365a69a37f5faaf2e3190881774c9ff7670c29e",
          "body": "Brings in dexhunter's original work so the contribution stays in the history.\nThe follow-up commit reworks the hint into the generator's TA_UNROLL(n) idiom,\nextends it to the other rescan functions, and restricts it to the compilers\nwhere it was measured to pay.",
          "is_bot": false,
          "headline": "Merge PR #128: unroll the expired-extreme rescans in MIN/MAX",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T17:11:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "48e0170d4c41ff8abd916b3826667d2a4b2b31de",
          "body": "The n-bar sum of Chaikin's money flow volume over the n-bar sum of volume.\nGroup Volume Indicators, default period 20, lookback n-1, streamable.\n\nThe per-bar multiplier is written exactly as ta_AD.c's, deliberately. Tulip's\norder, (v*num)/den, would instead make our output bit-identical to that orac\n[…]\nMF examples are all-zero and cannot fail) and #137\n(post-cutover functions reach no *_Unguarded or TA_S_* variant -- three\nsabotages of TA_S_CMF passed the entire suite before test_cmf.c was widened).",
          "is_bot": false,
          "headline": "feat(cmf): Chaikin Money Flow (#134)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T16:52:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "65e49d72ab77aa830e14e0c6d48e51296be09edd",
          "body": "The earlier approach fast-pathed monotonic windows, which are atypical in normal TA-Lib input. This targets the common random-walk case instead without changing the algorithm or adding work to the per-sample tight loop.\n\nMIN and MAX already cache the current extreme and rescan only when it expires. \n[…]\n ASan plus UBSan, generator tests, clippy, and idempotent regeneration. Wall-clock samples were inconclusive and are not claimed.\n\nFixes TA-Lib/ta-lib-python#715\n\nCo-Authored-By: Aiden <aiden@weco.ai>",
          "is_bot": false,
          "headline": "perf(minmax): unroll expired-extreme rescans",
          "author_name": "Dex Hunter",
          "author_login": "dexhunter",
          "committed_at": "2026-07-21T11:29:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cae231d8f0764c92d8ba7712d0c46a017cf1a117",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-21T07:40:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba3f8a516e8350a6cd35f9e538ec83ce86f39f9e",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-21T07:34:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb8bf53aec1796833d749fe0ca2691a50737b41b",
          "body": "escape_prose escaped every `[` outside a code span, which is right for prose\nlike inReal[i] but also mangled real markdown links, stranding the URL as plain\ntext. The shipped crate rendered a literal\n\n  \\[TradingView](https://www.tradingview.com/...)\n\nand the dangling URL tripped rustdoc's bare_urls\n[…]\neral text into a live broken link. Site-absolute destinations are\nrebased onto https://ta-lib.org/.\n\nVerified in the rendered HTML rather than by warning count — a silenced lint is\nnot a working link.",
          "is_bot": false,
          "headline": "fix(rustdoc): keep genuine inline links intact in the generated docs",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T05:31:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "09888183369784ab9f32d8a96a9fba4609589529",
          "body": "A generated page described what each parameter meant but never what values it\naccepted: 0 of 166 showed a default or a range, and the reader had to open the\nYAML. docs/ta_codegen_input_doc.md has always specified the split — numbers live\nin <name>.yaml and are injected at render — but only the prohi\n[…]\ndles\ninto inHigh/inLow/inClose, so the authored `inPriceHLC` has nothing to join\nagainst; carrying the bundle on FuncDef is the prerequisite and is left for the\nfollow-on, recorded in the status note.",
          "is_bot": false,
          "headline": "feat(docs): inject the YAML parameter metadata at render time (#132)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T05:31:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "df6f59ec1676e044f92c9c2b192aa50e14f9aa8e",
          "body": "VWMA (#131) added the 166th stream-flagged function without touching the\npin, so the suite has been red since 5e50d7f4. The count is deliberately\nhand-maintained, and this is the deliberate update.",
          "is_bot": false,
          "headline": "test(java): move the stream emit ratchet to 166",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T05:30:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eaf3a1f64515f5b7555ce6deb07e56d3358413ed",
          "body": "…d oracle\n\nThey were skipped at FUNCTION level for #118, so all three had zero differential\ncoverage vs 0.6.4 -- and the summary reported that as '3 case(s)', understating a\n~3000-comparison gap by three orders of magnitude.\n\nThe exclusion is only justified where 0.6.4's cancelling E[x^2]-mean^2 for\n[…]\nannot:\nit restores agreement with 0.6.4. That direction stays pinned by test_stddev.c\nand the BBANDS stable-variance test.\n\nAlso corrects the stochrsi-skipped label, which counts functions, not cases.",
          "is_bot": false,
          "headline": "test(fuzz-064): compare VAR/STDDEV/BBANDS where 0.6.4 is still a vali…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T03:36:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cec94326f32b0dc02d17dd206f704abeafed59d6",
          "body": "Bollinger specifies 20 periods / 2 standard deviations. The 5 came from\nTA_DEF_UI_TimePeriod_5_MINIMUM2, a generic descriptor shared with STDDEV/VAR/\nBETA/T3, never a decision about Bollinger Bands -- the deviation defaults (2.0)\nand MA type (SMA) were set correctly from the same recommendation, and\n[…]\nr changes only for callers relying on the abstract-layer\ndefault. Gates green: ta_regtest, --codegen 161/161 x3, --xlang-hash 0\nmismatches, fuzz-064 0 failures (BBANDS already excluded there by #118).",
          "is_bot": false,
          "headline": "fix(bbands): default optInTimePeriod 5 -> 20 (#133)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T02:55:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fae2c79c4467b82ce2be32b382d97bc3782e215c",
          "body": null,
          "is_bot": false,
          "headline": "docs(vwma): drop the cross-implementation default note",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T02:31:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4be71d3aa8ac755c3a028c384b445805e30c2e4e",
          "body": "… inReal\n\nThe unconditional staging buffer from 3f2f804e cost ~21% at 100k bars (the\nonly real MAVP slowdown in history — a fixed-flag bisect across ten commits\nfrom reference-pre-cutover shows everything else flat and bit-identical; the\nta_bench \"+11% vs cref\" that prompted the audit was mean-of-50\n[…]\n BBANDS' tempBuffer guard.\n\nInterleaved bench: conditional == pre-#130 baseline. In-place path stays\nbitwise-correct (193-pair gate, ASan); MAVP green on all four languages\nincl. stream + OpenAndFill.",
          "is_bot": false,
          "headline": "perf(mavp): stage the #130 in-place defence only when outReal aliases…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T02:25:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d72e41571d8ef090ef739f194fbc50da8e3e9ed6",
          "body": "It also fed the page description and the rustdoc.",
          "is_bot": false,
          "headline": "docs(vwma): drop the VWAP contrast from the summary",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T02:14:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cad531db586b08296c8645dab06e4032e27e8d2e",
          "body": "Sabotage-proven: reintroducing a guard that returns 0.0 fails this leg and\nnothing else. Also trims the flat-price comment -- agreement there is to a few\nULP in every implementation (pandas-ta 9.1e-12, Tulip 6.5e-11, ours 8.0e-11),\nso it needed a measurement, not an essay.",
          "is_bot": false,
          "headline": "test(vwma): pin the documented NaN on an all-zero-volume window (#131)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T01:46:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "582db41e05d52a1e82556b42d5c3769a015a3b61",
          "body": "Closes the gap between what #131's verification plan claimed and what was\nactually implemented.\n\n- Tulip Indicators 0.9.2 checked-in vectors as deterministic small cases:\n  tests/extra.txt:320 (vwma 4) and tests/untest.txt:466 (vwma 5). Only extra.txt\n  is independently derived -- its header says th\n[…]\n were re-verified live against pandas-ta-classic 0.6.52\n(max rel 4.739e-16) and cross-checked against the Tulip server (max rel\n4.739e-16) -- they are genuinely externally derived, not self-generated.",
          "is_bot": false,
          "headline": "test(vwma): add the second oracle and the flat-price case (#131)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T01:46:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5e50d7f4b428b01e6fd4a026489c905ff87d5431",
          "body": "Sum(P*V)/Sum(V) over a trailing window. Overlap Studies, inReal + volume\n(the OBV input shape, so a source other than close is expressible), lookback\nperiod-1, streaming from day one.\n\nKeeps the redundant /n on both sums and mirrors TA_SMA's add-new / snapshot /\nsubtract-old order, which makes it BI\n[…]\nr. abstract_volume_view() keys off the existing\nTA_IN_PRICE_VOLUME flag and is applied to both the in-process call and the JSON\nrequest so the two sides cannot diverge. Benefits every volume function.",
          "is_bot": false,
          "headline": "feat(vwma): Volume Weighted Moving Average (#131)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T01:46:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3f2f804e21348022a0b1105fed16280deb3c93b5",
          "body": "…functions (#130)\n\nReusing an input buffer as one of the outputs is a documented guarantee\n(\"All TA functions support this\") but returned TA_SUCCESS with wrong values:\n\n- LINEARREG/_ANGLE/_SLOPE/_INTERCEPT/TSF: the O(1) sliding recurrence read\n  the departing value after the priming write clobbered \n[…]\n path. Red on exactly the 8 functions before the fix.\n\nASan/UBSan green, --codegen 161/161 x4 languages, stream 14840 legs\nbit-exact, OpenAndFill bitwise, fuzz-064 0 failures, xlang-hash 0 mismatches.",
          "is_bot": false,
          "headline": "fix(func): in-place (input==output) calls returned wrong values in 8 …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-21T01:20:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2af1dca199ef0e7b29892349f47596480cf710e3",
          "body": "…ance trap\n\nGroundwork for the new-indicator wave (board proposals #21-#48). Each of these\nwould have let a future function ship with a gate that looked green while\ntesting nothing.\n\n- checkOracleValue(): shared |got-want| <= absTol + relTol*|want| comparison for\n  external-oracle golden values, rep\n[…]\nual 165; count them with TA_ForEachFunc instead.\n\nAll three sabotage-proven: the perturbed golden, the flipped cap and the\nmutated count each turn the run red, and the run is green with them restored.",
          "is_bot": false,
          "headline": "test(regtest): close three gate-vacuity holes + a zero-crossing toler…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T21:19:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b0c8ff23809a5fa6830b634cee498136e7e09216",
          "body": "Updates the four generator-side header sources (c.rs, rust_lang.rs,\nta_abstract_c.rs, ta_retcode.c.template) plus the hand-written headers;\nalso brings the 43 legacy Java files forward from 1999-2006/2007.",
          "is_bot": false,
          "headline": "chore: bump BSD license copyright year to 2026",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T19:18:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38148302ad5d89e3e9b6cb4260e37f83bb406274",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T18:20:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f3404024ad0deec520feb58983b41b35258880e",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T18:13:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46a1bce48ef6c0961c2e3b0493a240ac0167abc6",
          "body": "Rust and Java never ship a way to select a compatibility variant: the enum is\ncrate-internal/package-private, the setter and getter are gone, and the private\nfield stays pinned to Default. The variant branches in the generated indicators\nare dead code pending their removal. C keeps the deprecated TA\n[…]\nsabotage-proven: perturbing the Metastock seeding in CMO fails\nthe compat=1 leg.\n\nMetastock notes dropped from the EMA/RSI/MACD/CMO pages, the crate docs/README\nand the rust/java/stream website pages.",
          "is_bot": false,
          "headline": "refactor(rust,java): drop the public compatibility (Metastock) API",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T17:54:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "75318b7e0e7f0f790825c9ca33a756690e54a2b9",
          "body": "Audited every open/deferred item in docs/canonical-cutover-runbook.md\nagainst dev, main and v0.7.1: all complete. Stage 6-B (the one stage\nwithout a DONE marker) was delivered by PR #92 + 97e9f89a; the XML\nNUL-termination and large-period gaps are fixed; the server_verify and\ntag-portability deferra\n[…]\ncation-runbook.md section 4\n\nAlso drops the two pointers into the deleted file and a now-false\nNVI/PVI comment in backends/mod.rs.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: delete the canonical-cutover runbook (cutover shipped in 0.7.1)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T17:21:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "80411e03301ce609aea5d4e48ce20b532d8f9c6d",
          "body": null,
          "is_bot": false,
          "headline": "docs(changelog): 0.8.1 entry updates + deprecate TA_SetCompatibility",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T15:00:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7a528a00ada4629481c26e8563ddc23146d8be2",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T08:05:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7842d1cd3699d1b53a094f268652a6207a0ac75",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T07:58:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c99845aec0e53c6fdd3a503fea7300ea0cdb9d23",
          "body": "… on the C API page\n\n4.3: TA_S_ is a prefix, not a suffix; fix plurals and \"allows to digest\";\nstate the guarantee precisely (same output, bit-for-bit — verified by the\nregression gates); align the two signature blocks.\n\n4.4: fix grammar throughout (linked against, thread-safe, single-threaded,\n\"prior to exit\"); mirror 3.1's TA_Shutdown wording.\n\n3.0: \"declared in headers in include/*.h\" -> \"in the include/*.h headers\".",
          "is_bot": false,
          "headline": "docs(website): copyedit float-vs-double (4.3) + multi-threading (4.4)…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T01:56:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9d5e75faf510b8b5b2d5a2242be29a7a5a24511",
          "body": "…le period intro (4.2)\n\n4.1: drop the duplicated \"at runtime\"; replace \"without knowing it a\npriori\" with the concrete claim (call a function whose signature was\nunknown at compile time).\n\n4.2: reword around the actual phenomenon — recursive functions' first\noutputs depend on the starting point, an effect that decays until the\noutput is stable — instead of the \"function having memories\" framing.\nFixes the grammar errors and links the two API calls to the #api anchor.",
          "is_bot": false,
          "headline": "docs(website): copyedit abstraction-layer tail (4.1) + rewrite unstab…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T01:32:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4822d6c33a90ce2beac170c6146aab000e99f638",
          "body": "…n the C API page\n\n3.3: fix grammar in the intro and lookback paragraphs, scope the Range\nMatching waste example to startIdx=0, and state the Exact Allocation pro\nas its result.\n\n4.1: the opener implied by-name calling is what direct calls do — it is\nwhat ta_abstract enables; reword to hard-coded vs runtime lookup. Lead the\nuse-case list with wrapper generation, make the charting-app bullet\nconcrete, and point the closing off-ramp at both batch and streaming.",
          "is_bot": false,
          "headline": "docs(website): copyedit Output Size (3.3) + abstraction layer (4.1) o…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T01:10:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0e2aeaead7c0bece1606e56d1c0f4e45059fc6a",
          "body": "…PI page\n\nFix grammar and simplify wording throughout: the calling-pattern intro and\nits four parameter-group bullets, both TA_MA examples and their result\nexplanations, the single-bar EMA example, and the in-place buffer notes.\n\nAlso fix a wrong value in the range example: with startIdx=125 and\nendIdx=225, outNbElement is 101, not 100 — endIdx is inclusive (now stated\nexplicitly). Verified against the compiled library.",
          "is_bot": false,
          "headline": "docs(website): copyedit the batch-processing section (3.2) of the C A…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-20T00:49:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f38e132f6531f8e1bbf8135cacb6c0910e2ca8f6",
          "body": "…sources\n\nThe pre-cutover generators re-preprocessed the C source with _MANAGED /\n_JAVA / _RUST defined; all bindings are now generated natively by\nta_codegen, so only the plain-C branch was ever compiled. Remove the dead\narms and the macro scaffolding:\n\n- ta_defs.h: plain `typedef enum` for all six\n[…]\n for the frozen\n  reference-pre-cutover tag.\n\nPreprocessed output is token-identical (gcc -E diff), regtest passes\n161 functions x 4 languages against the frozen reference, and generate\nis idempotent.",
          "is_bot": false,
          "headline": "refactor: drop the dead multi-language preprocessor layer from the C …",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T21:02:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a7892a23601b14673f32548c134c122ad158bc38",
          "body": "Intro: drop the \"Part of the C/C++ Core API\" breadcrumb so the page can later\ncover the Rust/Java bindings too, and say plainly that \"unstable period\" names\na setting rather than the problem it addresses.\n\nAPI section: \"family of functions\" was wrong -- each TA_FuncUnstId value maps\nto exactly one f\n[…]\n, ...) as a\ncaller would write them, instead of bare suffixes with the prefix explained in\nthe lead-in.\n\nAlso drop \"in principle\" and the last use of \"transient\", a term used nowhere\nelse on the page.",
          "is_bot": false,
          "headline": "docs(website): unstable period — clarify the API section, list the C ids",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T17:41:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c3fc0a5acb4d84a2ac625f5ef5d9e8014bfc7041",
          "body": "…te pages\n\nThe unstable-period page listed the 22 TA_FuncUnstId functions by hand, so it\ncould silently drift from the enum it documents. Generate that list instead.\n\nNew backend docs_patch.rs, a sibling to docs_site.rs. The split is deliberate:\ndocs_site OWNS whole files under website/src/functions\n[…]\n3) and reverts cleanly; deleting a\nmarker panics with the marker name; a full generate on a clean tree produces no\nother churn; a production VuePress build renders the region with no visible\nartifact.",
          "is_bot": false,
          "headline": "feat(generator): maintain generated regions inside hand-written websi…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T16:28:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dc129b3f1512044527a3112942d795122be84720",
          "body": "Explain in \"Why it exists\" that the warm-up distortion is inherent to the\nalgorithms rather than specific to TA-Lib: every implementation has to seed\nthe recursion somewhere. What TA-Lib adds is the ability to scrub those\nearly values on every function call.\n\nAdd \"What to do\" enumerating the three d\n[…]\nFUNC_UNST_ADX`, `ADXR`, ...) and so read as a typo. State the\nprefix once in the lead-in and list every name bare. The 22 names were\nverified to match the FuncUnstId enum in include/ta_defs.h exactly.",
          "is_bot": false,
          "headline": "docs(website): unstable period — add a \"What to do\" section",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T15:43:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cecaaf303b7762c8d4426d1fbe6edbab7381a8d9",
          "body": "vuepress-theme-hope renders a single `.vp-toc-placeholder` and repositions\nit by breakpoint: at >= $pc (1440px) `#toc` is absolutely placed as the\nright-hand rail, below that it collapses into a box above the content. The\ntheme leaves the placeholder `position: sticky` at every width, so on\nnarrower\n[…]\noutrank the theme: its toc.scss is imported by the TOC\ncomponent, so its injection order relative to this file differs between dev\nand build; equal specificity would make the override order-dependent.",
          "is_bot": false,
          "headline": "fix(website): stop \"On this page\" floating over the content",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T15:43:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "39c583f1777a52a3a3d4a45af4d715f2f5317cab",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T04:46:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2582d647d3c856e9ce6c689dfc1e730af08fe8c7",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T04:38:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3dc5c125fda3be250a95ae06116d55a484fe3a8",
          "body": "Core page: rename 3.0 to 'Calling into TA-Lib'; add a 3.1 'Initialize and\nShutdown' section (TA_Initialize/TA_Shutdown) before batch processing; move\nthe 'all public functions in ta_func.h' pointer under the 3.0 title; rename\n'direct call' to 'batch processing' consistently (the direct-vs-abstractio\n[…]\n Core\npage as a section instead of a separate page).\n\nDeprecate TA_SetCompatibility: undocumented on the site and marked deprecated\nin include/ta_func.h (via the generator source in ta_abstract_c.rs).",
          "is_bot": false,
          "headline": "docs(website): C API restructure + deprecate TA_SetCompatibility",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-19T04:32:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d2807ae256a5a63cea9ff5d294b7edc6b426f8d",
          "body": "Split the language docs into independent pages — Rust Core API, Rust\nStreaming API, Java Core API, Java Streaming API — each headed by a\n'Not yet released — estimated Q1 2027' banner. The C/C++ Streaming page\nis now C-only (the Rust and Java sections that had accreted onto it are\nremoved). Sidebar regrouped into collapsible C/C++, Rust, and Java API\ngroups. Every code example was fact-checked against the generated\nRust/Java source.",
          "is_bot": false,
          "headline": "docs(website): per-language API pages (Rust/Java Core + Streaming)",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T23:08:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "239dcb7782bb3af43ca1b8c12994288f52fddb41",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from ubuntu-latest)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-18T21:42:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d9f24356ac27d2c6841dec016e8c330b49e4af7",
          "body": null,
          "is_bot": true,
          "headline": "Update dist package (from windows-2022)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-18T21:38:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "352b6ff75ef961bbfd9ea8a8cecdff3601d2f506",
          "body": "…ool_assert_comparison\n\nThe dev-nightly clippy gate runs `--all-targets -D warnings`, which promotes\nthis warning to an error; use a plain assert! so the gate stays green.",
          "is_bot": false,
          "headline": "test(java-stream): assert! over assert_eq!(_, true) — clears clippy b…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T21:31:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a060db6f81d651032d68bb112242824b6c381245",
          "body": "# Conflicts:\n#\tta_codegen/generator/src/backends/ta_abstract_c.rs\n#\tta_codegen/generator/src/server_gen.rs",
          "is_bot": false,
          "headline": "Merge branch 'java-stream' into dev",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T21:22:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62e5e1e858e1d0934d89096ade417355b4c3290a",
          "body": "…elf-check live\n\ncargo clippy --lib: 0 errors, 0 warnings (dev's 4052b053 cherry-picked for the\nparallel pre-existing fixes; the rest were this branch's). Final gates: 580\ngenerator tests green; all-language ta_regtest --codegen green with the Java\nstream pass at 165 functions / 14840 bit-exact legs\n[…]\ne new stream-pass fuzz-port self-check reporting 9/9 shapes bit-identical\nfor both porting servers (Rust, Java). PrefixProbe confirms TA_MA/TA_MAVP\nrejects now carry their own stable message prefixes.",
          "is_bot": false,
          "headline": "fix(java-stream): clippy-clean generator, verified prefix fix, fuzz s…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T18:57:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c0b5a13b2fe57401a05c494e895a700dab6f568c",
          "body": "…er_gen.rs / c_stream.rs\n\nPre-existing clippy::pedantic failures surfaced by the dev nightly's clippy gate\n(introduced by the Rust streaming API commits 9706dc61/fa85c6f6, never clippy-checked\nbefore landing on dev). Fixes: single_match/single_match_else -> if/if-let, unused\nout_args, into_iter() ->\n[…]\nrgo test (267+224+... all green) and a full `generate --backend=rust`\nconfirm the generated output is byte-identical before/after.\n\n(cherry picked from commit 4052b0534ad761a8545f7c011f7cbd3e2fe5f7eb)",
          "is_bot": false,
          "headline": "fix(generator): clear clippy pedantic errors in rust_stream.rs / serv…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T18:52:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d216a3d2706d4614ab87f4eed65484daa1eeec8",
          "body": "…ning\n\nDispatch/period-bank opens precheck their OWN lookback before delegating, so\ninsufficient-history rejects always carry the caller's stable \"TA_<NAME>\nopen:\" prefix (previously a TA_MA short-history reject surfaced as\n\"TA_SMA open:\"). flag_sync: pre-add start_dependent (dev #127), panic on\nunp\n[…]\ncompiles fuzz_data.h directly). Dedup sv input-array maps and the\nper-tier base field lists; InsufficientHistoryException server copy moves to\na template file; build.xml gains the stream-smoke target.",
          "is_bot": false,
          "headline": "fix(java-stream): review findings — prefix-stable rejects, gate harde…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T18:51:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4052b0534ad761a8545f7c011f7cbd3e2fe5f7eb",
          "body": "…er_gen.rs / c_stream.rs\n\nPre-existing clippy::pedantic failures surfaced by the dev nightly's clippy gate\n(introduced by the Rust streaming API commits 9706dc61/fa85c6f6, never clippy-checked\nbefore landing on dev). Fixes: single_match/single_match_else -> if/if-let, unused\nout_args, into_iter() ->\n[…]\nems_after_test_module) to the end of the file.\n\nNo behavior change: cargo test (267+224+... all green) and a full `generate --backend=rust`\nconfirm the generated output is byte-identical before/after.",
          "is_bot": false,
          "headline": "fix(generator): clear clippy pedantic errors in rust_stream.rs / serv…",
          "author_name": "mario4tier",
          "author_login": "mario4tier",
          "committed_at": "2026-07-18T15:48:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 6,
      "commits_last_year": 966,
      "latest_release_at": "2026-07-03T17:36:45Z",
      "latest_release_tag": "v0.7.1",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 19,
      "days_since_latest_release": 23,
      "mean_days_between_releases": 174.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 37,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 291,
      "stars": 1638,
      "watchers": 30,
      "fork_history": {
        "days": [
          {
            "date": "2016-12-22",
            "count": 1
          },
          {
            "date": "2017-01-06",
            "count": 1
          },
          {
            "date": "2017-08-22",
            "count": 1
          },
          {
            "date": "2018-01-27",
            "count": 1
          },
          {
            "date": "2018-03-11",
            "count": 1
          },
          {
            "date": "2018-03-12",
            "count": 1
          },
          {
            "date": "2018-08-28",
            "count": 1
          },
          {
            "date": "2018-09-18",
            "count": 1
          },
          {
            "date": "2018-10-04",
            "count": 1
          },
          {
            "date": "2019-01-04",
            "count": 1
          },
          {
            "date": "2019-02-24",
            "count": 1
          },
          {
            "date": "2019-12-04",
            "count": 1
          },
          {
            "date": "2020-06-15",
            "count": 1
          },
          {
            "date": "2020-11-17",
            "count": 1
          },
          {
            "date": "2020-11-19",
            "count": 1
          },
          {
            "date": "2021-01-10",
            "count": 1
          },
          {
            "date": "2021-02-03",
            "count": 1
          },
          {
            "date": "2021-02-15",
            "count": 1
          },
          {
            "date": "2021-04-25",
            "count": 1
          },
          {
            "date": "2021-05-08",
            "count": 1
          },
          {
            "date": "2021-10-13",
            "count": 1
          },
          {
            "date": "2022-01-25",
            "count": 1
          },
          {
            "date": "2022-04-29",
            "count": 1
          },
          {
            "date": "2022-06-28",
            "count": 1
          },
          {
            "date": "2022-07-09",
            "count": 1
          },
          {
            "date": "2023-01-16",
            "count": 1
          },
          {
            "date": "2023-02-03",
            "count": 1
          },
          {
            "date": "2023-02-13",
            "count": 1
          },
          {
            "date": "2023-02-17",
            "count": 1
          },
          {
            "date": "2023-02-28",
            "count": 1
          },
          {
            "date": "2023-03-06",
            "count": 1
          },
          {
            "date": "2023-03-08",
            "count": 1
          },
          {
            "date": "2023-03-29",
            "count": 1
          },
          {
            "date": "2023-04-09",
            "count": 1
          },
          {
            "date": "2023-04-10",
            "count": 1
          },
          {
            "date": "2023-04-17",
            "count": 1
          },
          {
            "date": "2023-05-06",
            "count": 1
          },
          {
            "date": "2023-05-27",
            "count": 1
          },
          {
            "date": "2023-05-28",
            "count": 1
          },
          {
            "date": "2023-06-07",
            "count": 1
          },
          {
            "date": "2023-06-23",
            "count": 1
          },
          {
            "date": "2023-07-01",
            "count": 1
          },
          {
            "date": "2023-07-09",
            "count": 1
          },
          {
            "date": "2023-07-16",
            "count": 1
          },
          {
            "date": "2023-08-09",
            "count": 1
          },
          {
            "date": "2023-08-16",
            "count": 1
          },
          {
            "date": "2023-08-20",
            "count": 1
          },
          {
            "date": "2023-08-25",
            "count": 1
          },
          {
            "date": "2023-09-22",
            "count": 1
          },
          {
            "date": "2023-09-28",
            "count": 1
          },
          {
            "date": "2023-10-07",
            "count": 1
          },
          {
            "date": "2023-10-18",
            "count": 2
          },
          {
            "date": "2023-10-22",
            "count": 1
          },
          {
            "date": "2023-10-30",
            "count": 1
          },
          {
            "date": "2023-11-18",
            "count": 1
          },
          {
            "date": "2023-11-20",
            "count": 1
          },
          {
            "date": "2023-11-26",
            "count": 1
          },
          {
            "date": "2023-11-27",
            "count": 1
          },
          {
            "date": "2023-11-29",
            "count": 2
          },
          {
            "date": "2023-12-14",
            "count": 1
          },
          {
            "date": "2023-12-17",
            "count": 1
          },
          {
            "date": "2023-12-22",
            "count": 1
          },
          {
            "date": "2023-12-25",
            "count": 2
          },
          {
            "date": "2023-12-26",
            "count": 1
          },
          {
            "date": "2024-01-02",
            "count": 1
          },
          {
            "date": "2024-01-10",
            "count": 1
          },
          {
            "date": "2024-01-14",
            "count": 1
          },
          {
            "date": "2024-01-15",
            "count": 1
          },
          {
            "date": "2024-01-22",
            "count": 1
          },
          {
            "date": "2024-02-02",
            "count": 2
          },
          {
            "date": "2024-02-10",
            "count": 1
          },
          {
            "date": "2024-02-12",
            "count": 2
          },
          {
            "date": "2024-02-18",
            "count": 1
          },
          {
            "date": "2024-03-01",
            "count": 1
          },
          {
            "date": "2024-03-11",
            "count": 1
          },
          {
            "date": "2024-03-16",
            "count": 1
          },
          {
            "date": "2024-03-23",
            "count": 1
          },
          {
            "date": "2024-03-24",
            "count": 1
          },
          {
            "date": "2024-03-25",
            "count": 1
          },
          {
            "date": "2024-03-28",
            "count": 2
          },
          {
            "date": "2024-03-29",
            "count": 1
          },
          {
            "date": "2024-03-30",
            "count": 1
          },
          {
            "date": "2024-04-16",
            "count": 1
          },
          {
            "date": "2024-04-21",
            "count": 2
          },
          {
            "date": "2024-04-27",
            "count": 1
          },
          {
            "date": "2024-04-28",
            "count": 1
          },
          {
            "date": "2024-05-01",
            "count": 2
          },
          {
            "date": "2024-05-02",
            "count": 1
          },
          {
            "date": "2024-05-05",
            "count": 1
          },
          {
            "date": "2024-05-14",
            "count": 1
          },
          {
            "date": "2024-05-20",
            "count": 1
          },
          {
            "date": "2024-05-22",
            "count": 1
          },
          {
            "date": "2024-05-23",
            "count": 1
          },
          {
            "date": "2024-05-24",
            "count": 1
          },
          {
            "date": "2024-05-27",
            "count": 2
          },
          {
            "date": "2024-05-29",
            "count": 1
          },
          {
            "date": "2024-05-30",
            "count": 1
          },
          {
            "date": "2024-06-07",
            "count": 1
          },
          {
            "date": "2024-06-08",
            "count": 1
          },
          {
            "date": "2024-06-15",
            "count": 1
          },
          {
            "date": "2024-06-20",
            "count": 1
          },
          {
            "date": "2024-06-28",
            "count": 2
          },
          {
            "date": "2024-07-05",
            "count": 1
          },
          {
            "date": "2024-07-21",
            "count": 1
          },
          {
            "date": "2024-08-02",
            "count": 1
          },
          {
            "date": "2024-08-10",
            "count": 1
          },
          {
            "date": "2024-08-14",
            "count": 1
          },
          {
            "date": "2024-08-15",
            "count": 1
          },
          {
            "date": "2024-08-17",
            "count": 1
          },
          {
            "date": "2024-08-18",
            "count": 1
          },
          {
            "date": "2024-08-19",
            "count": 1
          },
          {
            "date": "2024-08-22",
            "count": 1
          },
          {
            "date": "2024-08-23",
            "count": 1
          },
          {
            "date": "2024-08-25",
            "count": 1
          },
          {
            "date": "2024-09-10",
            "count": 1
          },
          {
            "date": "2024-09-15",
            "count": 1
          },
          {
            "date": "2024-09-23",
            "count": 1
          },
          {
            "date": "2024-09-26",
            "count": 1
          },
          {
            "date": "2024-09-27",
            "count": 1
          },
          {
            "date": "2024-09-30",
            "count": 1
          },
          {
            "date": "2024-10-08",
            "count": 1
          },
          {
            "date": "2024-10-09",
            "count": 1
          },
          {
            "date": "2024-10-12",
            "count": 1
          },
          {
            "date": "2024-10-18",
            "count": 1
          },
          {
            "date": "2024-10-22",
            "count": 1
          },
          {
            "date": "2024-10-25",
            "count": 1
          },
          {
            "date": "2024-10-28",
            "count": 1
          },
          {
            "date": "2024-11-13",
            "count": 1
          },
          {
            "date": "2024-11-14",
            "count": 1
          },
          {
            "date": "2024-11-17",
            "count": 1
          },
          {
            "date": "2024-11-20",
            "count": 2
          },
          {
            "date": "2024-11-29",
            "count": 1
          },
          {
            "date": "2024-12-02",
            "count": 1
          },
          {
            "date": "2024-12-07",
            "count": 1
          },
          {
            "date": "2024-12-19",
            "count": 1
          },
          {
            "date": "2024-12-23",
            "count": 1
          },
          {
            "date": "2024-12-26",
            "count": 1
          },
          {
            "date": "2024-12-28",
            "count": 2
          },
          {
            "date": "2024-12-29",
            "count": 1
          },
          {
            "date": "2025-01-03",
            "count": 1
          },
          {
            "date": "2025-01-06",
            "count": 1
          },
          {
            "date": "2025-01-08",
            "count": 1
          },
          {
            "date": "2025-01-12",
            "count": 1
          },
          {
            "date": "2025-01-17",
            "count": 2
          },
          {
            "date": "2025-01-18",
            "count": 1
          },
          {
            "date": "2025-01-23",
            "count": 1
          },
          {
            "date": "2025-01-25",
            "count": 1
          },
          {
            "date": "2025-02-01",
            "count": 1
          },
          {
            "date": "2025-02-05",
            "count": 2
          },
          {
            "date": "2025-02-08",
            "count": 2
          },
          {
            "date": "2025-02-15",
            "count": 1
          },
          {
            "date": "2025-02-22",
            "count": 1
          },
          {
            "date": "2025-03-03",
            "count": 1
          },
          {
            "date": "2025-03-09",
            "count": 1
          },
          {
            "date": "2025-03-13",
            "count": 1
          },
          {
            "date": "2025-03-14",
            "count": 1
          },
          {
            "date": "2025-03-19",
            "count": 1
          },
          {
            "date": "2025-03-20",
            "count": 1
          },
          {
            "date": "2025-03-21",
            "count": 1
          },
          {
            "date": "2025-03-23",
            "count": 1
          },
          {
            "date": "2025-03-26",
            "count": 1
          },
          {
            "date": "2025-03-28",
            "count": 1
          },
          {
            "date": "2025-03-29",
            "count": 1
          },
          {
            "date": "2025-04-01",
            "count": 1
          },
          {
            "date": "2025-04-02",
            "count": 1
          },
          {
            "date": "2025-04-03",
            "count": 1
          },
          {
            "date": "2025-04-05",
            "count": 1
          },
          {
            "date": "2025-04-09",
            "count": 1
          },
          {
            "date": "2025-04-13",
            "count": 1
          },
          {
            "date": "2025-04-14",
            "count": 1
          },
          {
            "date": "2025-04-20",
            "count": 1
          },
          {
            "date": "2025-04-22",
            "count": 1
          },
          {
            "date": "2025-04-24",
            "count": 1
          },
          {
            "date": "2025-04-27",
            "count": 1
          },
          {
            "date": "2025-05-02",
            "count": 1
          },
          {
            "date": "2025-05-04",
            "count": 1
          },
          {
            "date": "2025-05-15",
            "count": 1
          },
          {
            "date": "2025-05-19",
            "count": 3
          },
          {
            "date": "2025-05-28",
            "count": 1
          },
          {
            "date": "2025-05-30",
            "count": 1
          },
          {
            "date": "2025-06-03",
            "count": 1
          },
          {
            "date": "2025-06-09",
            "count": 1
          },
          {
            "date": "2025-06-10",
            "count": 1
          },
          {
            "date": "2025-06-14",
            "count": 1
          },
          {
            "date": "2025-06-16",
            "count": 1
          },
          {
            "date": "2025-06-17",
            "count": 1
          },
          {
            "date": "2025-06-20",
            "count": 1
          },
          {
            "date": "2025-06-21",
            "count": 2
          },
          {
            "date": "2025-06-22",
            "count": 1
          },
          {
            "date": "2025-06-29",
            "count": 1
          },
          {
            "date": "2025-07-02",
            "count": 1
          },
          {
            "date": "2025-07-04",
            "count": 1
          },
          {
            "date": "2025-07-06",
            "count": 1
          },
          {
            "date": "2025-07-09",
            "count": 1
          },
          {
            "date": "2025-07-14",
            "count": 1
          },
          {
            "date": "2025-07-18",
            "count": 1
          },
          {
            "date": "2025-07-20",
            "count": 1
          },
          {
            "date": "2025-07-23",
            "count": 1
          },
          {
            "date": "2025-07-28",
            "count": 1
          },
          {
            "date": "2025-07-30",
            "count": 1
          },
          {
            "date": "2025-08-03",
            "count": 1
          },
          {
            "date": "2025-08-12",
            "count": 1
          },
          {
            "date": "2025-08-13",
            "count": 1
          },
          {
            "date": "2025-08-14",
            "count": 1
          },
          {
            "date": "2025-08-15",
            "count": 2
          },
          {
            "date": "2025-08-18",
            "count": 1
          },
          {
            "date": "2025-08-20",
            "count": 1
          },
          {
            "date": "2025-08-23",
            "count": 1
          },
          {
            "date": "2025-08-27",
            "count": 1
          },
          {
            "date": "2025-08-31",
            "count": 1
          },
          {
            "date": "2025-09-18",
            "count": 1
          },
          {
            "date": "2025-09-26",
            "count": 1
          },
          {
            "date": "2025-09-28",
            "count": 1
          },
          {
            "date": "2025-10-02",
            "count": 1
          },
          {
            "date": "2025-10-04",
            "count": 1
          },
          {
            "date": "2025-10-11",
            "count": 1
          },
          {
            "date": "2025-10-14",
            "count": 1
          },
          {
            "date": "2025-10-19",
            "count": 2
          },
          {
            "date": "2025-10-21",
            "count": 2
          },
          {
            "date": "2025-10-24",
            "count": 1
          },
          {
            "date": "2025-10-25",
            "count": 1
          },
          {
            "date": "2025-10-30",
            "count": 1
          },
          {
            "date": "2025-11-08",
            "count": 1
          },
          {
            "date": "2025-11-11",
            "count": 2
          },
          {
            "date": "2025-11-14",
            "count": 1
          },
          {
            "date": "2025-11-17",
            "count": 1
          },
          {
            "date": "2025-11-24",
            "count": 2
          },
          {
            "date": "2025-11-27",
            "count": 1
          },
          {
            "date": "2025-12-03",
            "count": 1
          },
          {
            "date": "2025-12-05",
            "count": 2
          },
          {
            "date": "2025-12-09",
            "count": 2
          },
          {
            "date": "2025-12-16",
            "count": 1
          },
          {
            "date": "2025-12-24",
            "count": 1
          },
          {
            "date": "2025-12-25",
            "count": 1
          },
          {
            "date": "2025-12-27",
            "count": 1
          },
          {
            "date": "2026-01-03",
            "count": 1
          },
          {
            "date": "2026-01-13",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-01-25",
            "count": 1
          },
          {
            "date": "2026-02-10",
            "count": 1
          },
          {
            "date": "2026-02-12",
            "count": 1
          },
          {
            "date": "2026-03-09",
            "count": 1
          },
          {
            "date": "2026-03-14",
            "count": 1
          },
          {
            "date": "2026-04-10",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 1
          },
          {
            "date": "2026-04-22",
            "count": 1
          },
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-04-29",
            "count": 1
          },
          {
            "date": "2026-05-08",
            "count": 1
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 1
          },
          {
            "date": "2026-06-01",
            "count": 1
          },
          {
            "date": "2026-06-02",
            "count": 2
          },
          {
            "date": "2026-06-05",
            "count": 1
          },
          {
            "date": "2026-06-10",
            "count": 1
          },
          {
            "date": "2026-06-19",
            "count": 1
          },
          {
            "date": "2026-06-21",
            "count": 1
          },
          {
            "date": "2026-06-26",
            "count": 1
          },
          {
            "date": "2026-06-30",
            "count": 1
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-09",
            "count": 2
          },
          {
            "date": "2026-07-10",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 1
          },
          {
            "date": "2026-07-18",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 291,
        "total_forks": 291
      },
      "star_history": null,
      "open_issues_and_prs": 8
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "ta_codegen/generator/Cargo.toml",
        "ta_codegen/output/dotnet/tools/TaCodegenServe.csproj",
        "ta_codegen/output/rust/Cargo.toml",
        "ta_codegen/output/rust/library/Cargo.toml",
        "ta_codegen/output/rust/tools/Cargo.toml"
      ],
      "largest_source_bytes": 12329300,
      "source_files_sampled": 922,
      "oversized_source_files": 196,
      "agent_instruction_files": [
        "CLAUDE.md",
        "src/tools/ta_regtest/CLAUDE.md",
        "ta_codegen/generator/CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 27322
    },
    "dependencies": {
      "manifests": [
        "website/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 498,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 1,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "katex",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.16.47"
        },
        {
          "name": "serde",
          "manifest": "ta_codegen/generator/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde_yaml",
          "manifest": "ta_codegen/generator/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.9"
        },
        {
          "name": "serde_json",
          "manifest": "ta_codegen/generator/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "regex",
          "manifest": "ta_codegen/generator/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "regex",
            "direct": true,
            "version": "1.12.3",
            "ecosystem": "crates"
          },
          {
            "name": "serde",
            "direct": true,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_json",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "serde_json",
            "direct": true,
            "version": "1.0.149",
            "ecosystem": "crates"
          },
          {
            "name": "serde_yaml",
            "direct": true,
            "version": "0.9.34+deprecated",
            "ecosystem": "crates"
          },
          {
            "name": "katex",
            "direct": true,
            "version": "0.16.47",
            "ecosystem": "npm"
          },
          {
            "name": "aho-corasick",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "equivalent",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": false,
            "version": "0.16.1",
            "ecosystem": "crates"
          },
          {
            "name": "indexmap",
            "direct": false,
            "version": "2.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "itoa",
            "direct": false,
            "version": "1.0.17",
            "ecosystem": "crates"
          },
          {
            "name": "memchr",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": false,
            "version": "1.0.106",
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": false,
            "version": "1.0.45",
            "ecosystem": "crates"
          },
          {
            "name": "regex-automata",
            "direct": false,
            "version": "0.4.14",
            "ecosystem": "crates"
          },
          {
            "name": "regex-syntax",
            "direct": false,
            "version": "0.8.10",
            "ecosystem": "crates"
          },
          {
            "name": "ryu",
            "direct": false,
            "version": "1.0.23",
            "ecosystem": "crates"
          },
          {
            "name": "serde_core",
            "direct": false,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_derive",
            "direct": false,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": false,
            "version": "2.0.117",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-ident",
            "direct": false,
            "version": "1.0.24",
            "ecosystem": "crates"
          },
          {
            "name": "unsafe-libyaml",
            "direct": false,
            "version": "0.2.11",
            "ecosystem": "crates"
          },
          {
            "name": "zmij",
            "direct": false,
            "version": "1.0.21",
            "ecosystem": "crates"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@bufbuild/protobuf",
            "direct": false,
            "version": "2.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/core",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@lit-labs/ssr-dom-shim",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@lit/reactive-element",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-component",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-frontmatter",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-headers",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-sfc",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-title",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/plugin-toc",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/shared",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit-vue/types",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/helper",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-alert",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-align",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-attrs",
            "direct": false,
            "version": "0.25.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-container",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-demo",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-figure",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-footnote",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-icon",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-img-lazyload",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-img-mark",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-img-size",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-include",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-inline-rule",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-katex-slim",
            "direct": false,
            "version": "0.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-layout",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-mark",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-mathjax-slim",
            "direct": false,
            "version": "0.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-plantuml",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-spoiler",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-stylize",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-sub",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-sup",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-tab",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-tasklist",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-tex",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mdit/plugin-uml",
            "direct": false,
            "version": "0.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oxc-project/types",
            "direct": false,
            "version": "0.139.0",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-android-arm64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-darwin-arm64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-darwin-x64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-freebsd-x64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm-glibc",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm-musl",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm64-glibc",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm64-musl",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-x64-glibc",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-x64-musl",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-arm64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-ia32",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-x64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@pkgr/core",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-android-arm64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-arm64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-x64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-freebsd-x64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-musl",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-gnu",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-musl",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-openharmony-arm64",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-wasm32-wasi",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-x64-msvc",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/pluginutils",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/core",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-javascript",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-oniguruma",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/langs",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/primitive",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/themes",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/transformers",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/types",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/vscode-textmate",
            "direct": false,
            "version": "10.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@stackblitz/sdk",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/debug",
            "direct": false,
            "version": "4.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/fs-extra",
            "direct": false,
            "version": "11.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hash-sum",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hast",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jsesc",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jsonfile",
            "direct": false,
            "version": "6.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/linkify-it",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/markdown-it",
            "direct": false,
            "version": "14.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/markdown-it-emoji",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ms",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "24.13.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "26.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/picomatch",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/sax",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/trusted-types",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/web-bluetooth",
            "direct": false,
            "version": "0.0.21",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@vitejs/plugin-vue",
            "direct": false,
            "version": "6.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@vue-macros/common",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-core",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-dom",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-sfc",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-ssr",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/devtools-api",
            "direct": false,
            "version": "8.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/devtools-kit",
            "direct": false,
            "version": "8.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/devtools-shared",
            "direct": false,
            "version": "8.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/reactivity",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/runtime-core",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/runtime-dom",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/server-renderer",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/shared",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/bundler-vite",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/bundlerutils",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/cli",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/client",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/core",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/helper",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/highlighter-helper",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/markdown",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-active-header-links",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-back-to-top",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-blog",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-catalog",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-comment",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-copy-code",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-copyright",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-git",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-icon",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-links-check",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-chart",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-ext",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-hint",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-image",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-include",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-math",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-preview",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-stylize",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-markdown-tab",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-notice",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-nprogress",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-photo-swipe",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-reading-time",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-redirect",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-rtl",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-sass-palette",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-seo",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-shiki",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-sitemap",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-slimsearch",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/plugin-theme-data",
            "direct": false,
            "version": "2.0.0-rc.130",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/shared",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vuepress/utils",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vueuse/core",
            "direct": false,
            "version": "14.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vueuse/metadata",
            "direct": false,
            "version": "14.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vueuse/shared",
            "direct": false,
            "version": "14.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "arg",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ast-kit",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ast-walker-scope",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "autoprefixer",
            "direct": false,
            "version": "10.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balloon-css",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.43",
            "ecosystem": "npm"
          },
          {
            "name": "bcrypt-ts",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "birpc",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "cac",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001805",
            "ecosystem": "npm"
          },
          {
            "name": "ccount",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-html4",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio-select",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-cursor",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-spinners",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "colorjs.io",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "comma-separated-tokens",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "14.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "confbox",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "confbox",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "connect-history-api-fallback",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "create-codepen",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "css-select",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "css-what",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "csstype",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dijkstrajs",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.389",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "encoding-sniffer",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "envinfo",
            "direct": false,
            "version": "7.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "exsolve",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "extend-shallow",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fflate",
            "direct": false,
            "version": "0.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fraction.js",
            "direct": false,
            "version": "5.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "11.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-east-asian-width",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "giscus",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "gray-matter",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hash-sum",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-html",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-parse5",
            "direct": false,
            "version": "8.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-parse-selector",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-sanitize",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-html",
            "direct": false,
            "version": "9.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-whitespace",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hastscript",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hookable",
            "direct": false,
            "version": "5.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "html-void-elements",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "10.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "5.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "is-extendable",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-interactive",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-android-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-freebsd-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-arm64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-x64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lilconfig",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "linkify-it",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "lit",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "lit-element",
            "direct": false,
            "version": "4.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "lit-html",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "local-pkg",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string-ast",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it",
            "direct": false,
            "version": "14.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it-anchor",
            "direct": false,
            "version": "9.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it-cjk-friendly",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it-emoji",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-hast",
            "direct": false,
            "version": "13.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-character",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-encode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-sanitize-uri",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-symbol",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-types",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-function",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mlly",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "muggle-string",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.16",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "5.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "node-addon-api",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.51",
            "ecosystem": "npm"
          },
          {
            "name": "nth-check",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-parser",
            "direct": false,
            "version": "0.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-to-es",
            "direct": false,
            "version": "4.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "ora",
            "direct": false,
            "version": "9.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5-htmlparser2-tree-adapter",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5-parser-stream",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "perfect-debounce",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "photoswipe",
            "direct": false,
            "version": "5.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-types",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-types",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pngjs",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.22",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-load-config",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-value-parser",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "property-information",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "punycode.js",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "qrcode",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "quansync",
            "direct": false,
            "version": "0.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "regex-recursion",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "regex-utilities",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-parse",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-sanitize",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-stringify",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-main-filename",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "restore-cursor",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rolldown",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "rxjs",
            "direct": false,
            "version": "7.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "sass",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-all-unknown",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-arm",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-riscv64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-android-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-darwin-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-darwin-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-arm",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-arm",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-riscv64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-musl-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-riscv64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-linux-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-unknown-all",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-win32-arm64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass-embedded-win32-x64",
            "direct": false,
            "version": "1.100.0",
            "ecosystem": "npm"
          },
          {
            "name": "sax",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "scule",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "section-matter",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-blocking",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shiki",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "sitemap",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "slimsearch",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "space-separated-tokens",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "stdin-discarder",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "8.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "stringify-entities",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom-string",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "sync-child-process",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "sync-message-port",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "synckit",
            "direct": false,
            "version": "0.11.13",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "trim-lines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "uc.micro",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ufo",
            "direct": false,
            "version": "1.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "11.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-position",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-parents",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unplugin",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "unplugin-utils",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "upath",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "upath",
            "direct": false,
            "version": "3.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "varint",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-location",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "8.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "vue",
            "direct": false,
            "version": "3.5.39",
            "ecosystem": "npm"
          },
          {
            "name": "vue-router",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress",
            "direct": false,
            "version": "2.0.0-rc.30",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress-plugin-components",
            "direct": false,
            "version": "2.0.0-rc.107",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress-plugin-md-enhance",
            "direct": false,
            "version": "2.0.0-rc.107",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress-shared",
            "direct": false,
            "version": "2.0.0-rc.107",
            "ecosystem": "npm"
          },
          {
            "name": "vuepress-theme-hope",
            "direct": false,
            "version": "2.0.0-rc.107",
            "ecosystem": "npm"
          },
          {
            "name": "web-namespaces",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-virtual-modules",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-encoding",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "which-module",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "15.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "18.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "yoctocolors",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 499,
        "direct_count": 6,
        "indirect_count": 493
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 23,
        "open_issues": 7,
        "closed_ratio": 0.933,
        "closed_issues": 98,
        "closed_unmerged_prs": 8
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "mario4tier",
          "commits": 601,
          "avatar_url": "https://avatars.githubusercontent.com/u/4542410?v=4"
        },
        {
          "type": "User",
          "login": "chadfurman",
          "commits": 384,
          "avatar_url": "https://avatars.githubusercontent.com/u/635170?v=4"
        },
        {
          "type": "User",
          "login": "vbmithr",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/797581?v=4"
        },
        {
          "type": "User",
          "login": "chad-fossa",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/161645047?v=4"
        },
        {
          "type": "User",
          "login": "cpp4ever",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/1954426?v=4"
        },
        {
          "type": "User",
          "login": "dexhunter",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/6930518?v=4"
        },
        {
          "type": "User",
          "login": "nehemiah888",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/141201269?v=4"
        },
        {
          "type": "User",
          "login": "greenTableWork",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/252103756?v=4"
        },
        {
          "type": "User",
          "login": "vikasnkumar",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/12120?v=4"
        },
        {
          "type": "User",
          "login": "trufanov-nok",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/5746456?v=4"
        }
      ],
      "contributors_sampled": 20,
      "top_contributor_share": 0.592
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "dev-nightly-tests.yml",
        "main-nightly-tests.yml",
        "post-release-vcpkg.yml",
        "release-step-1.yml",
        "release-step-2.yml",
        "website.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock",
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 4,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 0,
            "reason": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 1/29 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 7 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 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": "144c635bb429759235696d9f95e1734169205f3a",
        "ran_at": "2026-07-27T10:40:16Z",
        "aggregate_score": 3.5,
        "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-27T08:46:31Z",
      "oldest_open_prs": [
        {
          "number": 85,
          "created_at": "2026-04-05T15:05:16Z",
          "last_comment_at": "2026-07-14T19:19:38Z",
          "last_comment_author": "mario4tier"
        }
      ],
      "last_merged_pr_at": "2026-07-27T02:09:46Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 30,
          "created_at": "2024-02-13T18:07:52Z",
          "last_comment_at": "2024-11-12T04:07:23Z",
          "last_comment_author": "mario4tier"
        },
        {
          "number": 60,
          "created_at": "2025-03-17T06:48:14Z",
          "last_comment_at": "2025-03-17T14:55:40Z",
          "last_comment_author": "mario4tier"
        },
        {
          "number": 81,
          "created_at": "2026-02-19T20:06:41Z",
          "last_comment_at": "2026-07-04T11:37:17Z",
          "last_comment_author": "mario4tier"
        },
        {
          "number": 84,
          "created_at": "2026-03-16T22:33:26Z",
          "last_comment_at": "2026-07-03T23:19:16Z",
          "last_comment_author": "mario4tier"
        },
        {
          "number": 116,
          "created_at": "2026-07-15T19:03:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 144,
          "created_at": "2026-07-26T04:26:54Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 145,
          "created_at": "2026-07-27T04:20:55Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/TA-Lib/ta-lib",
    "host": "github.com",
    "name": "ta-lib",
    "owner": "TA-Lib"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": "High-Risk Jurisdiction Policy applies a 50% multiplier to weighted overall health and gives it an At risk ceiling of 49.",
      "notes": [
        {
          "code": "jurisdiction_overall_adjustment",
          "params": {
            "cap": 49,
            "pct": 50
          }
        }
      ],
      "value": 31,
      "inputs": {
        "security": 34,
        "vitality": 77,
        "community": 67,
        "governance": 60,
        "engineering": 68,
        "high_risk_jurisdiction_cap": 49,
        "high_risk_jurisdiction_multiplier": 50,
        "weighted_overall_before_jurisdiction": 62,
        "overall_after_jurisdiction_multiplier": 31
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 77,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "commits_last_year": 966,
              "human_commit_share": 0.78,
              "days_since_last_push": 0,
              "active_weeks_last_year": 19
            },
            "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": "19/52 weeks with commits",
                "points": 13.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 19
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "966 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 966
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "releases_count": 6,
              "latest_release_tag": "v0.7.1",
              "releases_from_tags": false,
              "days_since_latest_release": 23,
              "mean_days_between_releases": 174.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "6 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 23 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 23
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~174.2 days",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 174.2
                    }
                  }
                ],
                "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": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 67,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "forks": 291,
              "stars": 1638,
              "watchers": 30,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1,638 stars",
                "points": 52.1,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1638
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "291 forks",
                "points": 20.5,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 291
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "30 watchers",
                "points": 8.1,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 30
                    }
                  }
                ],
                "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 (BSD-3-Clause)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "BSD-3-Clause"
                    }
                  }
                ],
                "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": 60,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 42,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 20,
              "top_contributor_share": 0.592
            },
            "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 59% of commits",
                "points": 9.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 59
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "20 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "merged_prs": 23,
              "open_issues": 7,
              "closed_issues": 98,
              "issue_closed_ratio": 0.933,
              "closed_unmerged_prs": 8
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "93% of issues closed",
                "points": 43.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 93
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "23/31 decided PRs merged",
                "points": 28.4,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 23,
                      "decided": 31
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 1/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "followers": 332,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "TA-Lib",
              "public_repos": 12,
              "account_age_days": 3628
            },
            "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": "332 followers of TA-Lib",
                "points": 18.1,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 332,
                      "login": "TA-Lib"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "12 public repos, account ~9 yr old",
                "points": 20.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 12
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 9
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 68,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "6 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "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": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "ta-lib",
                "financial",
                "series-analysis",
                "technical-analysis"
              ],
              "has_wiki": false,
              "homepage": "https://ta-lib.org/",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://ta-lib.org/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "4 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "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": 34,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized. High-Risk Jurisdiction Policy applies a 50% multiplier to Security posture and gives it an At risk ceiling of 49.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "jurisdiction_posture_adjustment",
                "params": {
                  "cap": 49,
                  "pct": 50
                }
              }
            ],
            "value": 18,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 3.5,
              "high_risk_jurisdiction_cap": 49,
              "high_risk_jurisdiction_multiplier": 50,
              "security_posture_after_multiplier": 18,
              "security_posture_before_jurisdiction": 35
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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 1/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 7 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": "30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "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": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 498 resolved dependencies against OSV; 1 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 498
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 1
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 498,
              "unassessed_packages": 1,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 498,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "moderate",
            "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": 50,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": true,
              "exposures": [
                {
                  "role": "top_contributor",
                  "count": 1,
                  "country": "Russia"
                }
              ],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 14
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "Russia: top_contributor (1)",
                "points": 50,
                "status": "partial",
                "details": [
                  {
                    "code": "jurisdiction_exposure",
                    "params": {
                      "role": "top_contributor",
                      "count": 1,
                      "country": "Russia"
                    }
                  }
                ],
                "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": "good",
        "name": "AI Readiness",
        "value": 71,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "CLAUDE.md",
                "src/tools/ta_regtest/CLAUDE.md",
                "ta_codegen/generator/CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 27322
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md, src/tools/ta_regtest/CLAUDE.md, ta_codegen/generator/CLAUDE.md"
                    }
                  }
                ],
                "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": "78 of 78 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 78,
                      "sampled": 78
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock",
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.09,
              "toolchain_manifests": [
                "ta_codegen/generator/Cargo.toml",
                "ta_codegen/output/dotnet/tools/TaCodegenServe.csproj",
                "ta_codegen/output/rust/Cargo.toml",
                "ta_codegen/output/rust/library/Cargo.toml",
                "ta_codegen/output/rust/tools/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "ta_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "ta_codegen/generator/Cargo.toml, ta_codegen/output/dotnet/tools/TaCodegenServe.csproj, ta_codegen/output/rust/Cargo.toml"
                    }
                  }
                ],
                "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": "Java (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "9 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 9,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 88,
            "inputs": {
              "primary_language": "Java",
              "largest_source_bytes": 12329300,
              "source_files_sampled": 922,
              "oversized_source_files": 196
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Java (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "196/922 source files over 60KB",
                "points": 43.3,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 922,
                      "oversized": 196
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch npm package 'ta-lib.org' from its registry",
    "Could not fetch crates package 'ta-codegen' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T10:40:35.789371Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/t/TA-Lib/ta-lib.svg",
  "full_name": "TA-Lib/ta-lib",
  "license_state": "standard",
  "license_spdx": "BSD-3-Clause"
}

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

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

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