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

smarty-php / smarty

Smarty is a template engine for PHP, facilitating the separation of presentation (HTML/CSS) from application logic.

PHPLicencia propia★ 2348 estrellas⑂ 708 forksdesde oct 2014Ver en GitHub ↗

smarty-php/smarty tiene un índice de salud de 68 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Community & Adoption (83/100) y la más baja, Security (44/100). Se actualizó por última vez hace 19 días. Una sola persona concentra la mayor parte del trabajo reciente.

68
global / 100
Moderado

Índice de salud del software

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

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

Perfil de puntuación

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

Titularidad

71 seguidores6 repositorios públicosdesde feb 2013

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

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
Packagistsmarty/smartyv5.8.4909.72599hace 24 díastemplating

Métricas por categoría

Vitalidad

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

78Bueno · 22% del índice global
Cómo se puntúa
28.8/36Recencia de push — último push hace 19 días
9.7/36Cadencia de commits — 14/52 semanas con commits
15.1/18Volumen de commits — 47 commits en el último año
10/10OpenSSF Scorecard: Maintained — 25 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year47
human_commit_share1
days_since_last_push19
active_weeks_last_year14
Cómo se puntúa
27/27Publica versiones — 76 versiones publicadas
36/36Recencia de las versiones — última versión hace 24 días
27/27Cadencia de publicación — una versión cada ~34,1 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count76
latest_release_tagv5.8.4
releases_from_tagsno
days_since_latest_release24
mean_days_between_releases34,1
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

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

83Bueno · 18% del índice global
Cómo se puntúa
54.7/60Estrellas — 2348 estrellas
23.7/25Forks — 708 forks
12.5/15Observadores — 180 observadores
Datos de entrada utilizados
forks708
stars2348
watchers180
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
16.9/22.5Licencia — archivo de licencia presente, no es una licencia reconocida
18/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
79.5/80Descargas mensuales — 909.725 descargas/mes en packagist
18.2/20Dependientes en el registro — 530 paquetes dependen de él
Datos de entrada utilizados
packagessmarty/smarty
dependents530
ecosystemspackagist
total_downloads42.452.813
monthly_downloads909.725

Sostenibilidad y Gobernanza

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

63Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
6/22.5Distribución de commits — el principal contribuyente firma el 74% de los commits
13.5/13.5Amplitud de contribuyentes — 69 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 10 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled69
top_contributor_share0,735
Cómo se puntúa
41.7/46.8Resolución de issues — 89% de issues cerradas
23.3/38.3Aceptación de PR — 192/315 PR decididos fusionados
1.5/15OpenSSF Scorecard: Code-Review — Found 3/30 approved changesets -- score normalized to 1
Datos de entrada utilizados
merged_prs192
open_issues85
closed_issues705
issue_closed_ratio0,892
closed_unmerged_prs123
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
13.4/25Alcance del propietario — 71 seguidores de smarty-php
18.2/25Trayectoria — 6 repos públicos, cuenta de ~13 años
Datos de entrada utilizados
followers71
owner_typeOrganization
is_verified
owner_loginsmarty-php
public_repos6
account_age_days4915
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en packagist
35/35Recencia de publicación — última publicación hace 24 días
20/20Historial de versiones — 99 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagessmarty/smarty
ecosystemspackagist
any_deprecatedno
min_days_since_publish24

Calidad de Ingeniería

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

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

Documentación

85Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
10/10Topics — 2 topics
10/10Wiki
Datos de entrada utilizados
topicssmarty, php
has_wiki
homepage
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?

44En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
1.8/2.5CI-Tests — 6 out of 8 merged PRs checked by a CI test -- score normalized to 7
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0.8/7.5Code-Review — Found 3/30 approved changesets -- score normalized to 1
2.5/2.5Contributors — project has 10 contributing companies or organizations
0/10Dangerous-Workflow — sin datos
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5Licencia — license file detected
7.5/7.5Maintained — 25 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — sin datos
0/5Pinned-Dependencies — sin datos
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
2/5Security-Policy — security policy file detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — sin datos
6.8/7.5Vulnerabilities — 1 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated13
scorecard_versionv5.5.0
checks_inconclusive5
scorecard_aggregate4,4
Excluidos de la puntuación (sin datos o no aplicable): dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Los pesos restantes se han renormalizado.

Preparación para IA

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

62Moderado · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — AGENTS.md
0/15Documentación legible por máquinas (llms.txt)
17.6/40Historial de commits legible — 33 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,33
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes4615
Cómo se puntúa
18/18Arranque con un solo comando — Makefile
22/22Pruebas automatizadas
0/11Configuración de lint / formato
0/11Verificación estática de tipos
10/10Entorno reproducible — Dockerfile
8/10Práctica demostrada con agentes — 4 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 — sin datos
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfile
typed_languageno
bootstrap_filesMakefile
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,04
toolchain_manifests
dependency_bot_commit_share0
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Pinned-Dependencies. Los pesos restantes se han renormalizado.
Cómo se puntúa
0/45Código verificable por tipos — PHP sin configuración de verificación de tipos
54.9/55Tamaños de archivo manejables — 1/373 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languagePHP
largest_source_bytes142.309
source_files_sampled373
oversized_source_files1

Datos clave

2348estrellas de GitHub
69contribuidores
47commits en los últimos 12 meses
19días desde el último push
76versiones publicadas
1factor bus
85issues abiertas
Packagist, PyPIecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • No resolved dependencies carried a version and a supported ecosystem

Más detalle

Historial de estrellas y forks 0 ★ / 708 ⇿
0Estrellas
708Forks
76Versiones

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.

0125250375500625750694162014-112020-092026-07
Mayor 2Menor 12Parche 59

Cada punto abarca 11 días.

OpenSSF Scorecard 4.4 / 10
4.4agregado

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-23 19:32 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
7CI-Tests6 out of 8 merged PRs checked by a CI test -- score normalized to 7
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
1Code-ReviewFound 3/30 approved changesets -- score normalized to 1
10Contributorsproject has 10 contributing companies or organizations
n/dDangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
10Maintained25 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
n/dPinned-Dependenciesno dependencies found
0SASTSAST tool is not run on all commits -- score normalized to 0
4Security-Policysecurity policy file detected
n/dSigned-Releasesno releases found
n/dToken-PermissionsNo tokens found
9Vulnerabilities1 existing vulnerabilities detected
Dependencias directas 1
RegistroPaqueteRestricción de versiónManifiesto
Packagistsymfony/polyfill-mbstring^1.27composer.json
Todas las dependencias 9

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

RegistroPaqueteVersiónRelación
Packagistsymfony/polyfill-mbstringdirecta
Packagistphpindirecta
Packagistphpunit/phpunitindirecta
Packagistsmarty/smarty-lexerindirecta
PyPImikeindirecta
PyPImkdocsindirecta
PyPImkdocs-materialindirecta
PyPIpygmentsindirecta
PyPIpymdown-extensionsindirecta
Avisos de dependencias sin evaluar

El cotejo de avisos no pudo ejecutarse para este informe: No resolved dependencies carried a version and a supported ecosystem

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "smarty",
        "php"
      ],
      "is_fork": false,
      "size_kb": 25506,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "PHP": 1649008,
        "Yacc": 43546,
        "Shell": 2005,
        "Smarty": 29087,
        "Makefile": 906,
        "Dockerfile": 2694,
        "Go Template": 80919
      },
      "pushed_at": "2026-07-04T11:37:14Z",
      "created_at": "2014-10-30T20:15:10Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-22T14:04:19Z",
      "description": "Smarty is a template engine for PHP, facilitating the separation of presentation (HTML/CSS) from application logic.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "master",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "PHP",
      "significant_languages": [
        "PHP"
      ]
    },
    "owner": {
      "blog": "http://www.smarty.net/",
      "name": "Smarty PHP Template Engine",
      "type": "Organization",
      "login": "smarty-php",
      "company": null,
      "location": null,
      "followers": 71,
      "avatar_url": "https://avatars.githubusercontent.com/u/3492426?v=4",
      "created_at": "2013-02-06T14:46:12Z",
      "is_verified": null,
      "public_repos": 6,
      "account_age_days": 4915
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v5.8.4",
          "kind": "patch",
          "published_at": "2026-06-29T10:47:02Z"
        },
        {
          "tag": "v4.5.7",
          "kind": "patch",
          "published_at": "2026-06-29T08:49:29Z"
        },
        {
          "tag": "v5.8.3",
          "kind": "patch",
          "published_at": "2026-06-29T07:16:59Z"
        },
        {
          "tag": "v5.8.2",
          "kind": "patch",
          "published_at": "2026-06-24T08:06:00Z"
        },
        {
          "tag": "v5.8.1",
          "kind": "patch",
          "published_at": "2026-06-23T21:05:08Z"
        },
        {
          "tag": "v5.8.0",
          "kind": "minor",
          "published_at": "2026-02-15T14:27:58Z"
        },
        {
          "tag": "v5.7.0",
          "kind": "minor",
          "published_at": "2025-11-19T21:37:24Z"
        },
        {
          "tag": "v5.6.0",
          "kind": "minor",
          "published_at": "2025-10-03T21:23:18Z"
        },
        {
          "tag": "v5.5.2",
          "kind": "patch",
          "published_at": "2025-08-26T08:42:48Z"
        },
        {
          "tag": "v4.5.6",
          "kind": "patch",
          "published_at": "2025-08-26T08:42:12Z"
        },
        {
          "tag": "v5.5.1",
          "kind": "patch",
          "published_at": "2025-05-19T09:30:30Z"
        },
        {
          "tag": "v5.5.0",
          "kind": "minor",
          "published_at": "2025-05-03T21:37:19Z"
        },
        {
          "tag": "v5.4.5",
          "kind": "patch",
          "published_at": "2025-04-15T11:20:37Z"
        },
        {
          "tag": "v5.4.4",
          "kind": "patch",
          "published_at": "2025-04-13T20:14:13Z"
        },
        {
          "tag": "v5.4.3",
          "kind": "patch",
          "published_at": "2024-12-23T00:39:56Z"
        },
        {
          "tag": "v4.5.5",
          "kind": "patch",
          "published_at": "2024-11-21T22:07:05Z"
        },
        {
          "tag": "v5.4.2",
          "kind": "patch",
          "published_at": "2024-11-21T08:34:44Z"
        },
        {
          "tag": "v5.4.1",
          "kind": "patch",
          "published_at": "2024-08-29T23:11:31Z"
        },
        {
          "tag": "v4.5.4",
          "kind": "patch",
          "published_at": "2024-08-14T20:05:13Z"
        },
        {
          "tag": "v5.4.0",
          "kind": "minor",
          "published_at": "2024-08-14T20:01:32Z"
        },
        {
          "tag": "v5.3.1",
          "kind": "patch",
          "published_at": "2024-06-16T19:52:22Z"
        },
        {
          "tag": "v5.3.0",
          "kind": "minor",
          "published_at": "2024-05-30T11:16:25Z"
        },
        {
          "tag": "v4.5.3",
          "kind": "patch",
          "published_at": "2024-05-30T11:15:52Z"
        },
        {
          "tag": "v5.2.0",
          "kind": "minor",
          "published_at": "2024-05-30T11:16:17Z"
        },
        {
          "tag": "v5.1.0",
          "kind": "minor",
          "published_at": "2024-05-30T11:16:07Z"
        },
        {
          "tag": "v4.5.2",
          "kind": "patch",
          "published_at": "2024-04-05T22:35:51Z"
        },
        {
          "tag": "v5.0.2",
          "kind": "patch",
          "published_at": "2024-03-28T10:23:55Z"
        },
        {
          "tag": "v5.0.1",
          "kind": "patch",
          "published_at": "2024-03-27T22:06:32Z"
        },
        {
          "tag": "v5.0.0",
          "kind": "major",
          "published_at": "2024-03-25T11:36:20Z"
        },
        {
          "tag": "v4.5.1",
          "kind": "patch",
          "published_at": "2024-03-18T14:20:03Z"
        },
        {
          "tag": "v4.4.1",
          "kind": "patch",
          "published_at": "2024-02-26T14:00:30Z"
        },
        {
          "tag": "v4.4.0",
          "kind": "minor",
          "published_at": "2024-02-26T14:00:18Z"
        },
        {
          "tag": "v5.0.0-rc3",
          "kind": "prerelease",
          "published_at": "2024-02-26T13:42:10Z"
        },
        {
          "tag": "v5.0.0-rc2",
          "kind": "prerelease",
          "published_at": "2023-11-11T19:29:02Z"
        },
        {
          "tag": "v4.3.4",
          "kind": "patch",
          "published_at": "2023-10-01T20:24:22Z"
        },
        {
          "tag": "v4.3.2",
          "kind": "patch",
          "published_at": "2023-07-19T12:07:29Z"
        },
        {
          "tag": "v4.3.1",
          "kind": "patch",
          "published_at": "2023-03-28T19:50:11Z"
        },
        {
          "tag": "v3.1.48",
          "kind": "patch",
          "published_at": "2023-03-28T19:49:04Z"
        },
        {
          "tag": "v4.3.0",
          "kind": "minor",
          "published_at": "2022-11-22T21:48:32Z"
        },
        {
          "tag": "v3.1.47",
          "kind": "patch",
          "published_at": "2022-09-14T11:32:14Z"
        },
        {
          "tag": "v4.2.1",
          "kind": "patch",
          "published_at": "2022-09-14T11:32:59Z"
        },
        {
          "tag": "v3.1.46",
          "kind": "patch",
          "published_at": "2022-08-01T21:59:15Z"
        },
        {
          "tag": "v4.2.0",
          "kind": "minor",
          "published_at": "2022-08-01T21:59:46Z"
        },
        {
          "tag": "v3.1.45",
          "kind": "patch",
          "published_at": "2022-05-17T12:59:25Z"
        },
        {
          "tag": "v4.1.1",
          "kind": "patch",
          "published_at": "2022-05-17T12:59:50Z"
        },
        {
          "tag": "v4.1.0",
          "kind": "minor",
          "published_at": "2022-02-06T20:35:42Z"
        },
        {
          "tag": "v4.0.4",
          "kind": "patch",
          "published_at": "2022-01-17T23:18:55Z"
        },
        {
          "tag": "v3.1.44",
          "kind": "patch",
          "published_at": "2022-01-17T23:18:39Z"
        },
        {
          "tag": "v3.1.43",
          "kind": "patch",
          "published_at": "2022-01-10T09:53:33Z"
        },
        {
          "tag": "v4.0.3",
          "kind": "patch",
          "published_at": "2022-01-10T09:53:49Z"
        },
        {
          "tag": "v4.0.2",
          "kind": "patch",
          "published_at": "2022-01-09T23:09:59Z"
        },
        {
          "tag": "v3.1.42",
          "kind": "patch",
          "published_at": "2022-01-09T23:10:13Z"
        },
        {
          "tag": "v3.1.41",
          "kind": "patch",
          "published_at": "2022-01-09T22:23:29Z"
        },
        {
          "tag": "v4.0.1",
          "kind": "patch",
          "published_at": "2022-01-09T22:24:45Z"
        },
        {
          "tag": "v4.0.0",
          "kind": "major",
          "published_at": "2021-11-25T21:27:37Z"
        },
        {
          "tag": "v2.6.32",
          "kind": "patch",
          "published_at": "2021-10-22T14:43:54Z"
        },
        {
          "tag": "v4.0.0-rc.0",
          "kind": "prerelease",
          "published_at": "2021-10-13T10:18:30Z"
        },
        {
          "tag": "v3.1.40",
          "kind": "patch",
          "published_at": "2021-10-13T10:08:58Z"
        },
        {
          "tag": "v3.1.39",
          "kind": "patch",
          "published_at": "2021-02-17T22:00:31Z"
        },
        {
          "tag": "v3.1.38",
          "kind": "patch",
          "published_at": "2021-01-08T14:06:37Z"
        },
        {
          "tag": "v3.1.37",
          "kind": "patch",
          "published_at": "2021-01-06T23:31:54Z"
        },
        {
          "tag": "v3.1.36",
          "kind": "patch",
          "published_at": "2020-08-22T09:41:59Z"
        },
        {
          "tag": "v3.1.35",
          "kind": "patch",
          "published_at": "2020-04-13T22:05:02Z"
        },
        {
          "tag": "v3.1.34",
          "kind": "patch",
          "published_at": "2019-11-05T21:02:28Z"
        },
        {
          "tag": "v3.1.33",
          "kind": "patch",
          "published_at": "2018-09-12T21:00:28Z"
        },
        {
          "tag": "v3.1.32",
          "kind": "patch",
          "published_at": "2018-04-24T15:49:28Z"
        },
        {
          "tag": "v2.6.31",
          "kind": "patch",
          "published_at": "2017-11-22T02:48:52Z"
        },
        {
          "tag": "v3.1.31",
          "kind": "patch",
          "published_at": "2016-12-14T22:00:01Z"
        },
        {
          "tag": "v3.1.30",
          "kind": "patch",
          "published_at": "2016-08-07T18:49:20Z"
        },
        {
          "tag": "v2.6.30",
          "kind": "patch",
          "published_at": "2016-07-20T18:36:59Z"
        },
        {
          "tag": "v3.1.29",
          "kind": "patch",
          "published_at": "2015-12-21T01:59:02Z"
        },
        {
          "tag": "v3.1.28",
          "kind": "patch",
          "published_at": "2015-12-13T14:26:25Z"
        },
        {
          "tag": "v3.1.27",
          "kind": "patch",
          "published_at": "2015-06-18T00:56:38Z"
        },
        {
          "tag": "v3.1.26",
          "kind": "patch",
          "published_at": "2015-06-18T00:09:23Z"
        },
        {
          "tag": "v3.1.25",
          "kind": "patch",
          "published_at": "2015-06-15T22:25:18Z"
        },
        {
          "tag": "v3.1.24",
          "kind": "patch",
          "published_at": "2015-05-23T17:23:30Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "1f9eef51c7e5582218abf5e832494bcb57f595d9",
          "body": null,
          "is_bot": false,
          "headline": "Fix double semicolon in getRightDelimiter method (#1202)",
          "author_name": "colemanw",
          "author_login": "colemanw",
          "committed_at": "2026-07-04T11:37:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "94a27cbbc7820198d7adc17a2be8d457fb267753",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.8.4'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-29T10:46:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "badc5ef3a010a4425a5ad6ccf610c38faba3f347",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-29T10:46:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ae0f9a65f29c6d67cd792b0d19b437a493a803b",
          "body": null,
          "is_bot": false,
          "headline": "Fix TypeError for non-array static_classes in Security policy (#1198)",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-29T10:45:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b668745acf68bdb81629c31492a66dfe79807b24",
          "body": null,
          "is_bot": false,
          "headline": "drop unused version attribute from docker-compose.yml",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-29T10:40:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c9f77a2e06ce319ae0092496af32cc8f3adc52e",
          "body": "… (#1195)\n\nThe built-in stream: resource type let a template bypass Security stream\nrestrictions. BasePlugin::load() matches the 'stream' sysplugin before the\nstream_get_wrappers()/isTrustedStream() check, so a resource such as\nstream:php://filter/read=convert.base64-encode/resource=/path was opened\n[…]\nck the direct wrapper path already receives.\n\nAdds regression tests covering the disabled-streams bypass, the\nnot-on-allowlist case, and a positive test that an explicitly allowed wrapper\nstill works.",
          "is_bot": false,
          "headline": "Security: validate nested stream wrapper in stream: resource (CWE-22)…",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-29T09:47:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "042dff64a912c272e7692a442590880a3388c4b9",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.8.3'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-28T22:15:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1830aa7a12e1426d8cf6ef760aaaf63b2a15c560",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-28T22:15:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b83ffdd2d6184cd8929d7d1c16583f6bf96540f2",
          "body": "…basic docker compose",
          "is_bot": false,
          "headline": "requirements for building docs, switched test-runner from mutagen to …",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-28T22:14:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ac27e1e5b66e89fd003056c5ee701d254dce26c0",
          "body": "… no longer applied to a template {include}d by the parent\n\nFixes #1192",
          "is_bot": false,
          "headline": "fixed a regression from #1189 where a child template's block override…",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-28T22:12:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17fae11a381782835c35da12d8751212ddf5b085",
          "body": "…t tests for windows",
          "is_bot": false,
          "headline": "update documentation for building and previewing with mkdocs, fix uni…",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-24T08:33:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06594a114931ab6fea76b12f0207c5903cf01f8c",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.8.2'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-24T08:04:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75a738ad446eb7cabf55b147b0ba2ec4629bab0e",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-24T08:04:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "11e69eca688e8dbd230c7c0d38cefc27bf2114ba",
          "body": "…ate (CWE-79)\n\n{html_image} already escaped alt and pass-through attributes, but emitted\nfile, path_prefix, href/link, width and height raw, letting an untrusted\nvalue break out of the generated tag. Escape these at output time; the\nunescaped values are still used for getimagesize()/DPI math. Escapi\n[…]\ns themselves.\n\nAdds tests for html_image escaping (incl. benign-value/no-double-encode\nchecks) and the html_select_date size cast.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Security: escape value-context attributes in html_image/html_select_d…",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-23T22:48:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "31e06fc087a8b5a9b236c1e5dacc1c2850a2c115",
          "body": "…-918)\n\n{fetch} validates the requested URL with Security::isTrustedUri(), but\nfor non-http schemes (e.g. https) it reads the resource via\nfile_get_contents(), which follows redirects by default. An open redirect\non an otherwise trusted host could therefore be used to reach a\nnon-trusted, internal t\n[…]\napper that captures the\ncontext {fetch} passes to file_get_contents, plus a backwards-compat test\nfor the no-security-policy case.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Security: stop {fetch} from following redirects past trusted_uri (CWE…",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-23T22:21:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "99c048ce7a590c519b79fbd38ad0143a08183a1f",
          "body": "Security::_checkDir() validated file access using Smarty::_realpath(),\nwhich only normalizes paths as strings and never follows symlinks. A\nsymlink placed inside a trusted secure_dir/template directory therefore\npassed the trust check while file_get_contents() followed it to an\narbitrary file (e.g. \n[…]\non tests covering both the rejected escape and an allowed\nin-sandbox symlink, and documents the changelog convention in AGENTS.md.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Security: prevent symlink path traversal out of secure_dir (CWE-22)",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-23T22:15:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1c9b2ce1d369f1e95c4dcb0f190d65ea11e5b9eb",
          "body": "… #1036 (#1071)\n\n* fix for Error: Attempt to assign property \"step\" on null in extended templates + added tests closes issue #1036",
          "is_bot": false,
          "headline": "fix for Error: Attempt to assign property \"step\" on null closes issue…",
          "author_name": "Antonio Norman",
          "author_login": "antman3351",
          "committed_at": "2026-06-23T21:50:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "29a77ded2faca55cba488857add3355d7a7a85e9",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.8.1'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-23T21:04:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d06c5e61f28bf14d8d69d9e4e7a6285784df564",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-23T21:04:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba745f5b91bc784c472705dd42c2c81f325f8acc",
          "body": null,
          "is_bot": false,
          "headline": "Added changelog for the fix for issue #1189",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-23T21:03:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0775fa84d100482fc3a20d6d2287fe57a1de6af1",
          "body": null,
          "is_bot": false,
          "headline": "Agents instructions",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-23T20:52:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56ab75df2c2997ae8ac970f916bdb7ea3004c5cb",
          "body": "* Reproduce block override leakage in template inheritance\n* Fixes #1189",
          "is_bot": false,
          "headline": "Bugfix/issue 1189 inheritance state leak (#1190)",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-06-23T20:50:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "383e20e6b43a8c7e367af505f19a230c632a5e36",
          "body": null,
          "is_bot": false,
          "headline": "fix: return type (#1180)",
          "author_name": "Masatoshi Ogiwara",
          "author_login": "zigzagdev",
          "committed_at": "2026-05-15T22:34:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c139883770b12f92c9b21f69c35ad600d34f39e8",
          "body": null,
          "is_bot": false,
          "headline": "update todos",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-05-03T20:19:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e648ed80922ff38fd9175c7cde2771034cf77cd",
          "body": null,
          "is_bot": false,
          "headline": "Remove incomplete test cases for usesCompiler across multiple test files",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-05-03T20:19:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3577fc7091f1beab0dddd881cb08fc24a2a3f741",
          "body": null,
          "is_bot": false,
          "headline": "Re-activate unit tests for user literals.",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-04-13T20:31:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff2ef3b0cb07fd584946254f145f0509a7685f58",
          "body": "* Redirect test temp dirs to system temp directory. Fixes #1178\n\nMove all test-generated output (compiled templates, cache files, and\ntemporary template sources) from per-test-directory folders inside the\nworking tree to a parallel structure under sys_get_temp_dir()/smarty-tests/.\n\nThis removes 215 \n[…]\netting of static properties in tearDownAfterClass\n\n* changed an incorrect doc and formatted some code.\n\n* add changelog\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Redirect test temp dirs to system temp directory",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-04-13T19:36:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aa2dcd82cf6a5caac9b1ed51e4bd0283f4dcced7",
          "body": null,
          "is_bot": false,
          "headline": "Added AGENTS.md for improved vibe coding experience",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-04-10T20:57:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78d259d3b971c59a0cd719c270cc5cbb740c36a7",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.8.0'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-02-15T14:27:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ed569c674872c9502715b01edef86d5fd4d5996",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-02-15T14:27:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a46478d0cb6a5d479dcf54fa155fce862e850ae0",
          "body": null,
          "is_bot": false,
          "headline": "changelogs",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-02-15T14:26:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5487e31c4b3fcf7edc4e0da716ac24c9333ae3ba",
          "body": "* Add support for Backed Enums\nFixes #1012\n\nAlso added docs (and docs for matches operator)",
          "is_bot": false,
          "headline": "Add support for Backed Enums (#1171)",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-02-15T14:23:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "12ce28e26562c680bf2ae631c8c6135370222bbb",
          "body": "* Regex matches operator support",
          "is_bot": false,
          "headline": "Regex matches operator (#1169)",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-02-15T13:44:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "139797a1652538e9220859ab68720aa19a4beefa",
          "body": "* Support for Laravel Collections style object chaining for objects return from function calls implemented as modifiers\nFixes #1151\n\n* explain publishing docs",
          "is_bot": false,
          "headline": "Support for Laravel Collections style object chaining (#1168)",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2026-02-10T23:02:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6709d000cd08e4e1fdba4944c7d18275d2a0a2f1",
          "body": "…pport (#1164)\n\n* Fix static analysis warnings for isDot()\n* Remove deprecated APC support\n* Remove redundant isDot() check and fix static analysis warnings",
          "is_bot": false,
          "headline": "Fix static analysis warnings for isDot() and remove deprecated APC su…",
          "author_name": "hirosan",
          "author_login": "h-marumoto",
          "committed_at": "2026-01-08T10:21:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa6edc3c0bf8fc77cda9a06320021328c924cd68",
          "body": null,
          "is_bot": false,
          "headline": "Document missing inline implementation. Fixed #1152 (#1156)",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-12-21T21:58:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73da7e90f302175a570662fcb0ba41f57b7a92ab",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.7.0'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-11-19T21:36:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0d7a36124ac93f7c81512a55fe02f66fba8947e",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-11-19T21:36:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8cc9a75964b37c9a58251d2747118297582cd673",
          "body": "* PHP 8.5 support (using RC docker image for php 8.5 unit tests)",
          "is_bot": false,
          "headline": "Php8.5 support (#1138)",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-11-19T21:33:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "21d7fbb67e8c6098084d9ba49d5cef07c8de49be",
          "body": null,
          "is_bot": false,
          "headline": "Non-canonical cast (boolean) fix (#1145)",
          "author_name": "Wim Wisselink",
          "author_login": "Visualq",
          "committed_at": "2025-10-17T12:45:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1fc41e385da8a27a87bec5914392ab662a7bb8ec",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.6.0'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-10-03T21:22:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe325daec034e361daee0f70da2d71babc3fceb9",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-10-03T21:22:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f0f308a7b87670ffecedeaa20ccb798550efbd9",
          "body": null,
          "is_bot": false,
          "headline": "added changelog",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-10-03T21:19:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b390e509747c42e940008b042fb0d3137dbbf5df",
          "body": "* Add support for shorttags in functions\n\nCo-authored-by: Anne Zijlstra <a.zijlstra@iwink.nl>\nCo-authored-by: Simon Wisselink <s.wisselink@iwink.nl>",
          "is_bot": false,
          "headline": "Add support for shorttags in functions (#1142)",
          "author_name": "pharixces",
          "author_login": "pharixces",
          "committed_at": "2025-10-03T21:17:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e46ae3add2c6213612951464b4edc44828fbc01",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.5.2'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-08-26T08:38:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d793ee04c41a5353cd92324ebc644cff99013da",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-08-26T08:38:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7677b84058c88a2ea0276a1162063c25e4160d01",
          "body": null,
          "is_bot": false,
          "headline": "Fixed escaping of array/object keys in debug_print_var",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-08-26T08:32:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7457d78cb5691fcae0d4be4e07f79dec551df5b",
          "body": null,
          "is_bot": false,
          "headline": "Add iWink and Temma logos",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-05-27T20:39:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cbcd66e1de017ae3bcbf8b5fa2a34858f5e2adbc",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.5.1'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-05-19T09:29:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46cd224efb75cb0b3fcefbd8a6af1b075606ccc4",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-05-19T09:29:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3b716a0b9e552a487a66fb66d2e4c1383ca74ea",
          "body": null,
          "is_bot": false,
          "headline": "changelog",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-05-19T09:29:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "693502c341c8384eb87252bb1944e26a19caf3a3",
          "body": "* Add support for modifiercompiler in the BCPluginsAdapter class.\n\n---------\n\nCo-authored-by: Anne Zijlstra <a.zijlstra@iwink.nl>",
          "is_bot": false,
          "headline": "Bugfix/bcpluginsadapter support modifiercompiler (#1132)",
          "author_name": "pharixces",
          "author_login": "pharixces",
          "committed_at": "2025-05-19T09:28:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb968469fa38d2360a265616757dc38a941d0e28",
          "body": null,
          "is_bot": false,
          "headline": "add empty and in_array modifier doc (#1113)",
          "author_name": "Shad",
          "author_login": "shadowwa",
          "committed_at": "2025-05-06T12:23:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "372f7cf41a6e2a9ca2e7253bc5f5c4f38df25a63",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.5.0'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-05-03T21:36:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f659193c946a41cb02a2c9820a29d079875166d0",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-05-03T21:36:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b6166482af835fb26aec1e02795969fdb7b65bc",
          "body": null,
          "is_bot": false,
          "headline": "changelog",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-05-03T21:36:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ff25bbe59b605bd928d2bd865a1f5ca32509e09",
          "body": null,
          "is_bot": false,
          "headline": "Support trailing comma in array (#1128)",
          "author_name": "hirosan",
          "author_login": "h-marumoto",
          "committed_at": "2025-05-03T21:34:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afbd71b868c7f5a1b2e55b1074b6758cac2f362f",
          "body": "Indicate support for php8.4 in docs.",
          "is_bot": false,
          "headline": "Update getting-started.md (#1111)",
          "author_name": "hirosan",
          "author_login": "h-marumoto",
          "committed_at": "2025-04-16T06:11:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e26f82d02c4d18fc82094c28fbc65f711e39ed5d",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.4.5'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-04-15T11:20:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6ad6a35824ab9494b16a08aaa500f8b71d5fff3c",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-04-15T11:20:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "baa53399f550bf85a5177d0912a2c65d9536f3af",
          "body": null,
          "is_bot": false,
          "headline": "changelog",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-04-15T11:19:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "37bea77ea7636a64af3e62fb963003378de5c64f",
          "body": "Fix: Implicitly marking parameter $_template as nullable is deprecated, the explicit nullable type must be used instead",
          "is_bot": false,
          "headline": "Update StringEval.php (#1126)",
          "author_name": "gherosh",
          "author_login": "gherosh",
          "committed_at": "2025-04-15T11:19:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d33f3acde1e3c4748c92a44757683d86242e411",
          "body": null,
          "is_bot": false,
          "headline": "Added sponsor",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-04-13T20:34:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "05adbf45f3046d3e1cc325eed86129465b7f1c0d",
          "body": "Fixes #1125",
          "is_bot": false,
          "headline": "Drop jit runs from CI unit tests.",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-04-13T20:20:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df4795b803df99645abaebca57db65442754246d",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.4.4'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-04-13T20:12:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "54014182581c6f7220598758c837abc8ea5febc9",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-04-13T20:12:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a5bbba3f05b37b2c98c3d58fa151aa225131d8b7",
          "body": "…ds with the string 'close' (#1124)\n\nFixes #1122",
          "is_bot": false,
          "headline": "Fix syntax error occurring when registering a function plugin that en…",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-04-10T21:47:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0664a4ab2e64848684a0fe5f3ed5e71eb920020",
          "body": null,
          "is_bot": false,
          "headline": "Added funding options",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-04-10T20:39:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4b8466205416fd32199fcf6753f108cd5e5c9ed",
          "body": "… in v4",
          "is_bot": false,
          "headline": "Added unit tests to prevent regressions of issue #1100 that was fixed…",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2025-02-13T22:20:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d1ea5806a10071fdb6af0fa945c8e3f58e033c4",
          "body": "Fixes #1073",
          "is_bot": false,
          "headline": "change SMARTY_VERSION to $smarty.version.",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-12-28T16:40:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab247c723b58743f3ba9fe95dc13e91e11d9fc97",
          "body": "Fixes #979",
          "is_bot": false,
          "headline": "Add upgrading remarks on magic APi methods.",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-12-27T22:37:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fb997111f46c069ee140829a220bb3b69b34969b",
          "body": null,
          "is_bot": false,
          "headline": "Add note to docs about plugins that expect parameters by reference",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-12-27T22:08:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6bff5795081ca5e60aabda59fb87daa511acd1e",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.4.3'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-12-23T00:38:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07faafe4da4b71489e0f9472242f0cc01e09250a",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-12-23T00:38:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "295b7fb5825f1e4472d757523564bb686da5353d",
          "body": null,
          "is_bot": false,
          "headline": "move to official php8.4 image for unit testing in CI",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-12-23T00:34:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf9de567c10b76a33475e0e59aadd48001d996a7",
          "body": "…063 (#1093)\n\n* Restore special handling of isset and empty as it was in v4. Fixes #1063",
          "is_bot": false,
          "headline": "Restore special handling of isset and empty as it was in v4. Fixes #1…",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-12-23T00:29:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f47ac761af7a64922da7992711e83d612e25000c",
          "body": "Fixes #1074",
          "is_bot": false,
          "headline": "replace/qualify call_user_func_array. (#1083)",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-11-20T22:05:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "642a97adcc2bf6c1b2458d6afeeb36ae001c1c2f",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.4.2'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-11-20T21:18:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3bba3ff5e93c34d9f326b6f45d1e6e578e73adec",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-11-20T21:18:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b3b43af816c5f81f952edc66f8c4cf2dae4927e9",
          "body": null,
          "is_bot": false,
          "headline": "Add to changelog",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-11-20T21:18:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1b06b37db2a1523d6855024f089d0327b4f69d48",
          "body": null,
          "is_bot": false,
          "headline": "Add PHP 8.4 support to Smarty (#1043)",
          "author_name": "Wim Wisselink",
          "author_login": "Visualq",
          "committed_at": "2024-11-20T14:59:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1b4c9c551d01ff63220f053966c7aaa9053f89d",
          "body": "…and template function calls.",
          "is_bot": false,
          "headline": "Add unit tests for short hand template function definition and shorth…",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-10-06T20:06:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd58df7a2603b7d925e5db5c9d50f10987695fd3",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.4.1'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-08-29T23:10:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70ed68ff5b4cdf7a4313c2eb093733871ffc3ca3",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-08-29T23:10:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "598ccde435dfc67d356fb34fa951a073bcf380d8",
          "body": null,
          "is_bot": false,
          "headline": "Changelog",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-08-28T22:09:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb09fda90d39e3f387719eed68c34a5c434d8b2e",
          "body": null,
          "is_bot": false,
          "headline": "Update a workflow file for GitHub Actions to test on Windows (#1046)",
          "author_name": "Atsushi Matsuo",
          "author_login": "matsuo",
          "committed_at": "2024-08-28T21:56:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8f1853bfe09b608acf57936a0fe4c98b49c6379",
          "body": "…lure on Windows (#1059)",
          "is_bot": false,
          "headline": "Modify NullCoalescingTest.php and TernaryTest.php to prevent test fai…",
          "author_name": "Atsushi Matsuo",
          "author_login": "matsuo",
          "committed_at": "2024-08-28T21:16:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f781e2e655f1ccbc866f51974361f04e18d3005",
          "body": "…(#1055)",
          "is_bot": false,
          "headline": "Fix unit tests to enable to run CacheResourceFileTest.php on Windows …",
          "author_name": "Atsushi Matsuo",
          "author_login": "matsuo",
          "committed_at": "2024-08-28T21:15:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30c6ee64ab80154539c25ff8b8285aa5d568babf",
          "body": "…ritance tree on Windows (#1056)",
          "is_bot": false,
          "headline": "Fix an issue that preventing the use of \"extends:\" to define the inhe…",
          "author_name": "Atsushi Matsuo",
          "author_login": "matsuo",
          "committed_at": "2024-08-28T21:09:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd90f7eac969d998736edbf12dadf04c64471b0a",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.4.0'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-08-14T20:00:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77b91a072bfdc9d4fe0c621e47564c95e73fda73",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-08-14T20:00:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ede0e40fa7f1f8bfeb645652adb7e5e27743207",
          "body": null,
          "is_bot": false,
          "headline": "changelog",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-08-14T20:00:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ccfca17d64d6a6b257408fb45776c4cb3547260",
          "body": "…s resulting in fast raising wasted OpCache memory #1007 (#1047)\n\n* Fixing forced OpCache Invalidation on every call, which is resulting in fast raising wasted memory\r\n* Fix undefined $path variable warning\r\n---------\r\n\r\nCo-authored-by: Daniel Metzner <daniel.metzner@niceshops.com>",
          "is_bot": false,
          "headline": "Fixing forced OpCache invalidation on every template include, which i…",
          "author_name": "Stephan Lueckl",
          "author_login": "stephanlueckl",
          "committed_at": "2024-08-14T19:58:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6153d4d4da7a9df4c2965d1b491044328d331ad",
          "body": null,
          "is_bot": false,
          "headline": "add missing closing tr tag (#1039)",
          "author_name": "Shad",
          "author_login": "shadowwa",
          "committed_at": "2024-07-01T14:38:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2289fa69f1b5b9be48bf6f821265f1fef79cca40",
          "body": "* Evolution of auto-escaping: no double-escaping when using the 'escape' modifier; add the 'force' mode to the 'escape' modifier; add the 'raw' modifier.\r\n* Add 'raw' modifier's documentation\r\n---------\r\n\r\nCo-authored-by: Simon Wisselink <s.wisselink@iwink.nl>",
          "is_bot": false,
          "headline": "Improvement of auto-escaping (#1030)",
          "author_name": "Amaury Bouchard",
          "author_login": "Amaury",
          "committed_at": "2024-06-30T11:25:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3cb35854326a94120cd415b81db28c53d95d0d5d",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.3.1'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-06-16T19:51:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2193eb4cfecb49147996874bf5aef362591c6b1",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-06-16T19:51:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ecde472033468efe0149eee53043cfb4fdc6121",
          "body": "Fixes #1034",
          "is_bot": false,
          "headline": "fixed error when using section with nocache.",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-06-16T19:48:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b978cb348ee556943bfb252e016059aefd1f4071",
          "body": null,
          "is_bot": false,
          "headline": "add smarty logo svg for future use",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-06-16T19:36:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "353ca06d076da46964b0c709d8e4dd87677195b8",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'release/5.3.0'",
          "author_name": "Simon Wisselink",
          "author_login": "wisskid",
          "committed_at": "2024-05-30T11:14:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 76,
      "commits_last_year": 47,
      "latest_release_at": "2026-06-29T10:47:02Z",
      "latest_release_tag": "v5.8.4",
      "releases_from_tags": false,
      "days_since_last_push": 19,
      "active_weeks_last_year": 14,
      "days_since_latest_release": 24,
      "mean_days_between_releases": 34.1
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "smarty/smarty",
          "exists": true,
          "license": "LGPL-3.0",
          "keywords": [
            "templating"
          ],
          "ecosystem": "packagist",
          "matches_repo": true,
          "registry_url": "https://packagist.org/packages/smarty/smarty",
          "is_deprecated": false,
          "latest_version": "v5.8.4",
          "repository_url": "https://github.com/smarty-php/smarty",
          "versions_count": 99,
          "total_downloads": 42452813,
          "dependents_count": 530,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 909725,
          "first_published_at": null,
          "latest_published_at": "2026-06-29T10:46:32Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 24
        }
      ]
    },
    "popularity": {
      "forks": 708,
      "stars": 2348,
      "watchers": 180,
      "fork_history": {
        "days": [
          {
            "date": "2014-11-26",
            "count": 1
          },
          {
            "date": "2014-12-04",
            "count": 1
          },
          {
            "date": "2014-12-17",
            "count": 2
          },
          {
            "date": "2015-01-05",
            "count": 1
          },
          {
            "date": "2015-01-08",
            "count": 1
          },
          {
            "date": "2015-01-17",
            "count": 1
          },
          {
            "date": "2015-02-01",
            "count": 1
          },
          {
            "date": "2015-02-06",
            "count": 1
          },
          {
            "date": "2015-02-07",
            "count": 1
          },
          {
            "date": "2015-03-20",
            "count": 1
          },
          {
            "date": "2015-03-29",
            "count": 1
          },
          {
            "date": "2015-03-31",
            "count": 1
          },
          {
            "date": "2015-04-02",
            "count": 2
          },
          {
            "date": "2015-04-08",
            "count": 1
          },
          {
            "date": "2015-04-11",
            "count": 1
          },
          {
            "date": "2015-05-09",
            "count": 1
          },
          {
            "date": "2015-05-16",
            "count": 1
          },
          {
            "date": "2015-05-17",
            "count": 1
          },
          {
            "date": "2015-05-19",
            "count": 2
          },
          {
            "date": "2015-05-24",
            "count": 1
          },
          {
            "date": "2015-05-26",
            "count": 1
          },
          {
            "date": "2015-06-04",
            "count": 2
          },
          {
            "date": "2015-06-06",
            "count": 1
          },
          {
            "date": "2015-06-07",
            "count": 1
          },
          {
            "date": "2015-06-09",
            "count": 1
          },
          {
            "date": "2015-06-12",
            "count": 1
          },
          {
            "date": "2015-06-21",
            "count": 1
          },
          {
            "date": "2015-06-26",
            "count": 1
          },
          {
            "date": "2015-07-01",
            "count": 1
          },
          {
            "date": "2015-07-02",
            "count": 2
          },
          {
            "date": "2015-07-08",
            "count": 2
          },
          {
            "date": "2015-07-15",
            "count": 1
          },
          {
            "date": "2015-07-17",
            "count": 1
          },
          {
            "date": "2015-07-20",
            "count": 1
          },
          {
            "date": "2015-07-26",
            "count": 1
          },
          {
            "date": "2015-07-27",
            "count": 1
          },
          {
            "date": "2015-07-28",
            "count": 1
          },
          {
            "date": "2015-08-04",
            "count": 1
          },
          {
            "date": "2015-08-06",
            "count": 5
          },
          {
            "date": "2015-08-09",
            "count": 2
          },
          {
            "date": "2015-08-11",
            "count": 1
          },
          {
            "date": "2015-08-15",
            "count": 1
          },
          {
            "date": "2015-08-18",
            "count": 2
          },
          {
            "date": "2015-08-21",
            "count": 1
          },
          {
            "date": "2015-08-25",
            "count": 1
          },
          {
            "date": "2015-08-27",
            "count": 2
          },
          {
            "date": "2015-08-31",
            "count": 2
          },
          {
            "date": "2015-09-02",
            "count": 1
          },
          {
            "date": "2015-09-03",
            "count": 1
          },
          {
            "date": "2015-09-04",
            "count": 1
          },
          {
            "date": "2015-09-15",
            "count": 1
          },
          {
            "date": "2015-09-23",
            "count": 2
          },
          {
            "date": "2015-09-25",
            "count": 3
          },
          {
            "date": "2015-10-01",
            "count": 1
          },
          {
            "date": "2015-10-08",
            "count": 1
          },
          {
            "date": "2015-10-12",
            "count": 1
          },
          {
            "date": "2015-10-13",
            "count": 1
          },
          {
            "date": "2015-10-17",
            "count": 1
          },
          {
            "date": "2015-10-18",
            "count": 1
          },
          {
            "date": "2015-10-19",
            "count": 1
          },
          {
            "date": "2015-10-24",
            "count": 1
          },
          {
            "date": "2015-10-25",
            "count": 1
          },
          {
            "date": "2015-10-28",
            "count": 1
          },
          {
            "date": "2015-10-31",
            "count": 1
          },
          {
            "date": "2015-11-01",
            "count": 1
          },
          {
            "date": "2015-11-03",
            "count": 1
          },
          {
            "date": "2015-11-05",
            "count": 2
          },
          {
            "date": "2015-11-07",
            "count": 1
          },
          {
            "date": "2015-11-13",
            "count": 15
          },
          {
            "date": "2015-11-17",
            "count": 1
          },
          {
            "date": "2015-11-25",
            "count": 1
          },
          {
            "date": "2015-11-27",
            "count": 1
          },
          {
            "date": "2015-11-29",
            "count": 1
          },
          {
            "date": "2015-12-01",
            "count": 1
          },
          {
            "date": "2015-12-02",
            "count": 1
          },
          {
            "date": "2015-12-04",
            "count": 1
          },
          {
            "date": "2015-12-09",
            "count": 1
          },
          {
            "date": "2015-12-13",
            "count": 1
          },
          {
            "date": "2015-12-14",
            "count": 1
          },
          {
            "date": "2015-12-15",
            "count": 4
          },
          {
            "date": "2015-12-16",
            "count": 1
          },
          {
            "date": "2015-12-17",
            "count": 1
          },
          {
            "date": "2015-12-19",
            "count": 1
          },
          {
            "date": "2015-12-21",
            "count": 1
          },
          {
            "date": "2015-12-28",
            "count": 1
          },
          {
            "date": "2016-01-05",
            "count": 1
          },
          {
            "date": "2016-01-06",
            "count": 1
          },
          {
            "date": "2016-01-07",
            "count": 1
          },
          {
            "date": "2016-01-10",
            "count": 1
          },
          {
            "date": "2016-01-12",
            "count": 1
          },
          {
            "date": "2016-01-14",
            "count": 1
          },
          {
            "date": "2016-01-22",
            "count": 1
          },
          {
            "date": "2016-01-25",
            "count": 1
          },
          {
            "date": "2016-01-28",
            "count": 1
          },
          {
            "date": "2016-01-30",
            "count": 1
          },
          {
            "date": "2016-02-02",
            "count": 1
          },
          {
            "date": "2016-02-11",
            "count": 2
          },
          {
            "date": "2016-02-16",
            "count": 1
          },
          {
            "date": "2016-02-18",
            "count": 2
          },
          {
            "date": "2016-02-19",
            "count": 2
          },
          {
            "date": "2016-02-23",
            "count": 1
          },
          {
            "date": "2016-02-27",
            "count": 1
          },
          {
            "date": "2016-02-29",
            "count": 1
          },
          {
            "date": "2016-03-04",
            "count": 1
          },
          {
            "date": "2016-03-06",
            "count": 1
          },
          {
            "date": "2016-03-16",
            "count": 1
          },
          {
            "date": "2016-03-20",
            "count": 1
          },
          {
            "date": "2016-03-21",
            "count": 1
          },
          {
            "date": "2016-03-24",
            "count": 2
          },
          {
            "date": "2016-04-03",
            "count": 2
          },
          {
            "date": "2016-04-14",
            "count": 1
          },
          {
            "date": "2016-04-21",
            "count": 1
          },
          {
            "date": "2016-04-26",
            "count": 1
          },
          {
            "date": "2016-04-27",
            "count": 2
          },
          {
            "date": "2016-05-03",
            "count": 2
          },
          {
            "date": "2016-05-06",
            "count": 2
          },
          {
            "date": "2016-05-11",
            "count": 1
          },
          {
            "date": "2016-05-13",
            "count": 2
          },
          {
            "date": "2016-05-15",
            "count": 1
          },
          {
            "date": "2016-05-18",
            "count": 1
          },
          {
            "date": "2016-05-19",
            "count": 1
          },
          {
            "date": "2016-05-20",
            "count": 1
          },
          {
            "date": "2016-05-21",
            "count": 1
          },
          {
            "date": "2016-05-23",
            "count": 3
          },
          {
            "date": "2016-05-26",
            "count": 3
          },
          {
            "date": "2016-05-30",
            "count": 1
          },
          {
            "date": "2016-06-12",
            "count": 1
          },
          {
            "date": "2016-06-14",
            "count": 1
          },
          {
            "date": "2016-06-15",
            "count": 1
          },
          {
            "date": "2016-06-17",
            "count": 1
          },
          {
            "date": "2016-06-27",
            "count": 2
          },
          {
            "date": "2016-06-28",
            "count": 1
          },
          {
            "date": "2016-07-04",
            "count": 2
          },
          {
            "date": "2016-07-06",
            "count": 1
          },
          {
            "date": "2016-07-13",
            "count": 1
          },
          {
            "date": "2016-07-16",
            "count": 1
          },
          {
            "date": "2016-07-19",
            "count": 1
          },
          {
            "date": "2016-07-24",
            "count": 1
          },
          {
            "date": "2016-07-27",
            "count": 1
          },
          {
            "date": "2016-08-08",
            "count": 1
          },
          {
            "date": "2016-08-11",
            "count": 1
          },
          {
            "date": "2016-08-12",
            "count": 1
          },
          {
            "date": "2016-08-15",
            "count": 1
          },
          {
            "date": "2016-08-17",
            "count": 1
          },
          {
            "date": "2016-08-19",
            "count": 1
          },
          {
            "date": "2016-08-25",
            "count": 1
          },
          {
            "date": "2016-08-30",
            "count": 1
          },
          {
            "date": "2016-08-31",
            "count": 1
          },
          {
            "date": "2016-09-02",
            "count": 1
          },
          {
            "date": "2016-09-03",
            "count": 2
          },
          {
            "date": "2016-09-04",
            "count": 1
          },
          {
            "date": "2016-09-07",
            "count": 1
          },
          {
            "date": "2016-09-13",
            "count": 1
          },
          {
            "date": "2016-09-22",
            "count": 1
          },
          {
            "date": "2016-09-26",
            "count": 1
          },
          {
            "date": "2016-10-03",
            "count": 1
          },
          {
            "date": "2016-10-10",
            "count": 1
          },
          {
            "date": "2016-10-17",
            "count": 1
          },
          {
            "date": "2016-10-18",
            "count": 1
          },
          {
            "date": "2016-10-21",
            "count": 1
          },
          {
            "date": "2016-10-22",
            "count": 1
          },
          {
            "date": "2016-10-29",
            "count": 1
          },
          {
            "date": "2016-11-01",
            "count": 2
          },
          {
            "date": "2016-11-04",
            "count": 1
          },
          {
            "date": "2016-11-06",
            "count": 1
          },
          {
            "date": "2016-11-07",
            "count": 1
          },
          {
            "date": "2016-11-08",
            "count": 1
          },
          {
            "date": "2016-11-10",
            "count": 1
          },
          {
            "date": "2016-11-22",
            "count": 1
          },
          {
            "date": "2016-11-24",
            "count": 1
          },
          {
            "date": "2016-11-25",
            "count": 1
          },
          {
            "date": "2016-11-27",
            "count": 1
          },
          {
            "date": "2016-11-28",
            "count": 1
          },
          {
            "date": "2016-11-29",
            "count": 1
          },
          {
            "date": "2016-11-30",
            "count": 1
          },
          {
            "date": "2016-12-06",
            "count": 2
          },
          {
            "date": "2016-12-07",
            "count": 1
          },
          {
            "date": "2016-12-09",
            "count": 1
          },
          {
            "date": "2016-12-11",
            "count": 1
          },
          {
            "date": "2016-12-14",
            "count": 1
          },
          {
            "date": "2016-12-27",
            "count": 1
          },
          {
            "date": "2017-01-03",
            "count": 1
          },
          {
            "date": "2017-01-07",
            "count": 1
          },
          {
            "date": "2017-01-16",
            "count": 2
          },
          {
            "date": "2017-01-17",
            "count": 1
          },
          {
            "date": "2017-01-18",
            "count": 1
          },
          {
            "date": "2017-01-19",
            "count": 1
          },
          {
            "date": "2017-01-21",
            "count": 1
          },
          {
            "date": "2017-01-22",
            "count": 1
          },
          {
            "date": "2017-02-14",
            "count": 1
          },
          {
            "date": "2017-02-20",
            "count": 1
          },
          {
            "date": "2017-02-22",
            "count": 1
          },
          {
            "date": "2017-03-01",
            "count": 3
          },
          {
            "date": "2017-03-02",
            "count": 1
          },
          {
            "date": "2017-03-07",
            "count": 1
          },
          {
            "date": "2017-03-09",
            "count": 1
          },
          {
            "date": "2017-03-10",
            "count": 1
          },
          {
            "date": "2017-03-13",
            "count": 2
          },
          {
            "date": "2017-03-15",
            "count": 1
          },
          {
            "date": "2017-03-16",
            "count": 2
          },
          {
            "date": "2017-03-23",
            "count": 1
          },
          {
            "date": "2017-03-31",
            "count": 1
          },
          {
            "date": "2017-04-03",
            "count": 1
          },
          {
            "date": "2017-04-08",
            "count": 2
          },
          {
            "date": "2017-04-12",
            "count": 1
          },
          {
            "date": "2017-04-17",
            "count": 1
          },
          {
            "date": "2017-04-21",
            "count": 1
          },
          {
            "date": "2017-04-29",
            "count": 1
          },
          {
            "date": "2017-05-05",
            "count": 1
          },
          {
            "date": "2017-05-06",
            "count": 1
          },
          {
            "date": "2017-05-10",
            "count": 1
          },
          {
            "date": "2017-05-11",
            "count": 1
          },
          {
            "date": "2017-05-14",
            "count": 1
          },
          {
            "date": "2017-05-20",
            "count": 1
          },
          {
            "date": "2017-05-31",
            "count": 1
          },
          {
            "date": "2017-06-05",
            "count": 1
          },
          {
            "date": "2017-06-06",
            "count": 1
          },
          {
            "date": "2017-06-09",
            "count": 1
          },
          {
            "date": "2017-06-10",
            "count": 1
          },
          {
            "date": "2017-06-11",
            "count": 1
          },
          {
            "date": "2017-06-12",
            "count": 1
          },
          {
            "date": "2017-06-15",
            "count": 1
          },
          {
            "date": "2017-06-22",
            "count": 1
          },
          {
            "date": "2017-07-04",
            "count": 1
          },
          {
            "date": "2017-07-05",
            "count": 1
          },
          {
            "date": "2017-07-13",
            "count": 3
          },
          {
            "date": "2017-07-24",
            "count": 1
          },
          {
            "date": "2017-08-09",
            "count": 1
          },
          {
            "date": "2017-08-16",
            "count": 1
          },
          {
            "date": "2017-08-18",
            "count": 1
          },
          {
            "date": "2017-08-22",
            "count": 1
          },
          {
            "date": "2017-08-31",
            "count": 1
          },
          {
            "date": "2017-09-03",
            "count": 1
          },
          {
            "date": "2017-09-04",
            "count": 2
          },
          {
            "date": "2017-09-11",
            "count": 1
          },
          {
            "date": "2017-09-24",
            "count": 1
          },
          {
            "date": "2017-09-26",
            "count": 1
          },
          {
            "date": "2017-10-03",
            "count": 1
          },
          {
            "date": "2017-10-08",
            "count": 1
          },
          {
            "date": "2017-10-17",
            "count": 1
          },
          {
            "date": "2017-10-22",
            "count": 1
          },
          {
            "date": "2017-10-25",
            "count": 1
          },
          {
            "date": "2017-10-27",
            "count": 1
          },
          {
            "date": "2017-11-13",
            "count": 2
          },
          {
            "date": "2017-11-15",
            "count": 1
          },
          {
            "date": "2017-11-24",
            "count": 1
          },
          {
            "date": "2017-11-25",
            "count": 1
          },
          {
            "date": "2017-12-04",
            "count": 1
          },
          {
            "date": "2017-12-06",
            "count": 1
          },
          {
            "date": "2017-12-11",
            "count": 1
          },
          {
            "date": "2017-12-21",
            "count": 2
          },
          {
            "date": "2017-12-24",
            "count": 1
          },
          {
            "date": "2017-12-27",
            "count": 1
          },
          {
            "date": "2017-12-29",
            "count": 1
          },
          {
            "date": "2018-01-02",
            "count": 1
          },
          {
            "date": "2018-01-10",
            "count": 1
          },
          {
            "date": "2018-01-16",
            "count": 1
          },
          {
            "date": "2018-01-29",
            "count": 1
          },
          {
            "date": "2018-02-02",
            "count": 1
          },
          {
            "date": "2018-02-05",
            "count": 1
          },
          {
            "date": "2018-02-07",
            "count": 1
          },
          {
            "date": "2018-02-08",
            "count": 2
          },
          {
            "date": "2018-02-15",
            "count": 1
          },
          {
            "date": "2018-02-22",
            "count": 1
          },
          {
            "date": "2018-03-01",
            "count": 1
          },
          {
            "date": "2018-03-07",
            "count": 1
          },
          {
            "date": "2018-03-08",
            "count": 1
          },
          {
            "date": "2018-03-16",
            "count": 1
          },
          {
            "date": "2018-03-26",
            "count": 1
          },
          {
            "date": "2018-04-08",
            "count": 1
          },
          {
            "date": "2018-04-10",
            "count": 2
          },
          {
            "date": "2018-04-12",
            "count": 1
          },
          {
            "date": "2018-04-16",
            "count": 1
          },
          {
            "date": "2018-04-17",
            "count": 1
          },
          {
            "date": "2018-04-18",
            "count": 1
          },
          {
            "date": "2018-04-26",
            "count": 2
          },
          {
            "date": "2018-05-09",
            "count": 1
          },
          {
            "date": "2018-05-29",
            "count": 1
          },
          {
            "date": "2018-05-30",
            "count": 2
          },
          {
            "date": "2018-06-11",
            "count": 1
          },
          {
            "date": "2018-06-14",
            "count": 1
          },
          {
            "date": "2018-06-26",
            "count": 1
          },
          {
            "date": "2018-07-02",
            "count": 1
          },
          {
            "date": "2018-07-13",
            "count": 1
          },
          {
            "date": "2018-07-16",
            "count": 1
          },
          {
            "date": "2018-07-31",
            "count": 1
          },
          {
            "date": "2018-08-08",
            "count": 1
          },
          {
            "date": "2018-08-12",
            "count": 1
          },
          {
            "date": "2018-08-20",
            "count": 1
          },
          {
            "date": "2018-08-24",
            "count": 1
          },
          {
            "date": "2018-08-28",
            "count": 1
          },
          {
            "date": "2018-08-30",
            "count": 1
          },
          {
            "date": "2018-08-31",
            "count": 1
          },
          {
            "date": "2018-09-04",
            "count": 1
          },
          {
            "date": "2018-09-11",
            "count": 1
          },
          {
            "date": "2018-09-19",
            "count": 1
          },
          {
            "date": "2018-09-20",
            "count": 1
          },
          {
            "date": "2018-09-23",
            "count": 1
          },
          {
            "date": "2018-10-01",
            "count": 1
          },
          {
            "date": "2018-10-05",
            "count": 1
          },
          {
            "date": "2018-10-16",
            "count": 1
          },
          {
            "date": "2018-10-18",
            "count": 1
          },
          {
            "date": "2018-10-19",
            "count": 1
          },
          {
            "date": "2018-10-22",
            "count": 1
          },
          {
            "date": "2018-10-27",
            "count": 1
          },
          {
            "date": "2018-10-29",
            "count": 2
          },
          {
            "date": "2018-10-31",
            "count": 2
          },
          {
            "date": "2018-11-01",
            "count": 1
          },
          {
            "date": "2018-11-02",
            "count": 1
          },
          {
            "date": "2018-11-06",
            "count": 1
          },
          {
            "date": "2018-11-07",
            "count": 1
          },
          {
            "date": "2018-11-11",
            "count": 1
          },
          {
            "date": "2018-11-12",
            "count": 1
          },
          {
            "date": "2018-11-16",
            "count": 1
          },
          {
            "date": "2018-11-18",
            "count": 1
          },
          {
            "date": "2018-11-26",
            "count": 1
          },
          {
            "date": "2018-12-05",
            "count": 1
          },
          {
            "date": "2018-12-11",
            "count": 1
          },
          {
            "date": "2018-12-14",
            "count": 1
          },
          {
            "date": "2018-12-28",
            "count": 1
          },
          {
            "date": "2019-01-05",
            "count": 1
          },
          {
            "date": "2019-01-09",
            "count": 1
          },
          {
            "date": "2019-01-12",
            "count": 1
          },
          {
            "date": "2019-01-23",
            "count": 1
          },
          {
            "date": "2019-01-25",
            "count": 1
          },
          {
            "date": "2019-02-18",
            "count": 2
          },
          {
            "date": "2019-02-19",
            "count": 1
          },
          {
            "date": "2019-02-27",
            "count": 1
          },
          {
            "date": "2019-03-01",
            "count": 1
          },
          {
            "date": "2019-03-22",
            "count": 1
          },
          {
            "date": "2019-03-29",
            "count": 1
          },
          {
            "date": "2019-04-04",
            "count": 1
          },
          {
            "date": "2019-04-19",
            "count": 1
          },
          {
            "date": "2019-04-25",
            "count": 1
          },
          {
            "date": "2019-05-05",
            "count": 1
          },
          {
            "date": "2019-05-13",
            "count": 1
          },
          {
            "date": "2019-05-14",
            "count": 1
          },
          {
            "date": "2019-05-15",
            "count": 1
          },
          {
            "date": "2019-05-24",
            "count": 1
          },
          {
            "date": "2019-05-31",
            "count": 1
          },
          {
            "date": "2019-06-10",
            "count": 1
          },
          {
            "date": "2019-06-27",
            "count": 1
          },
          {
            "date": "2019-07-06",
            "count": 1
          },
          {
            "date": "2019-07-11",
            "count": 1
          },
          {
            "date": "2019-07-22",
            "count": 1
          },
          {
            "date": "2019-07-27",
            "count": 1
          },
          {
            "date": "2019-07-28",
            "count": 1
          },
          {
            "date": "2019-07-29",
            "count": 1
          },
          {
            "date": "2019-07-31",
            "count": 1
          },
          {
            "date": "2019-08-12",
            "count": 1
          },
          {
            "date": "2019-08-13",
            "count": 1
          },
          {
            "date": "2019-08-14",
            "count": 3
          },
          {
            "date": "2019-08-23",
            "count": 1
          },
          {
            "date": "2019-08-25",
            "count": 1
          },
          {
            "date": "2019-08-26",
            "count": 1
          },
          {
            "date": "2019-08-27",
            "count": 2
          },
          {
            "date": "2019-08-31",
            "count": 1
          },
          {
            "date": "2019-09-08",
            "count": 1
          },
          {
            "date": "2019-09-10",
            "count": 1
          },
          {
            "date": "2019-09-16",
            "count": 1
          },
          {
            "date": "2019-09-30",
            "count": 2
          },
          {
            "date": "2019-10-05",
            "count": 1
          },
          {
            "date": "2019-10-07",
            "count": 1
          },
          {
            "date": "2019-10-08",
            "count": 2
          },
          {
            "date": "2019-10-14",
            "count": 1
          },
          {
            "date": "2019-10-16",
            "count": 1
          },
          {
            "date": "2019-10-27",
            "count": 1
          },
          {
            "date": "2019-11-21",
            "count": 1
          },
          {
            "date": "2019-12-02",
            "count": 1
          },
          {
            "date": "2019-12-16",
            "count": 1
          },
          {
            "date": "2019-12-20",
            "count": 1
          },
          {
            "date": "2019-12-23",
            "count": 1
          },
          {
            "date": "2019-12-26",
            "count": 1
          },
          {
            "date": "2019-12-28",
            "count": 1
          },
          {
            "date": "2019-12-30",
            "count": 1
          },
          {
            "date": "2020-01-21",
            "count": 1
          },
          {
            "date": "2020-01-24",
            "count": 1
          },
          {
            "date": "2020-01-28",
            "count": 1
          },
          {
            "date": "2020-02-03",
            "count": 3
          },
          {
            "date": "2020-02-11",
            "count": 1
          },
          {
            "date": "2020-02-12",
            "count": 1
          },
          {
            "date": "2020-02-18",
            "count": 1
          },
          {
            "date": "2020-03-11",
            "count": 1
          },
          {
            "date": "2020-03-30",
            "count": 1
          },
          {
            "date": "2020-04-13",
            "count": 1
          },
          {
            "date": "2020-04-14",
            "count": 2
          },
          {
            "date": "2020-04-22",
            "count": 1
          },
          {
            "date": "2020-04-26",
            "count": 1
          },
          {
            "date": "2020-05-07",
            "count": 1
          },
          {
            "date": "2020-05-11",
            "count": 1
          },
          {
            "date": "2020-05-13",
            "count": 1
          },
          {
            "date": "2020-05-15",
            "count": 1
          },
          {
            "date": "2020-05-18",
            "count": 1
          },
          {
            "date": "2020-05-19",
            "count": 1
          },
          {
            "date": "2020-06-10",
            "count": 1
          },
          {
            "date": "2020-06-12",
            "count": 1
          },
          {
            "date": "2020-06-19",
            "count": 1
          },
          {
            "date": "2020-06-23",
            "count": 1
          },
          {
            "date": "2020-07-06",
            "count": 1
          },
          {
            "date": "2020-07-17",
            "count": 1
          },
          {
            "date": "2020-07-29",
            "count": 1
          },
          {
            "date": "2020-07-30",
            "count": 1
          },
          {
            "date": "2020-08-03",
            "count": 1
          },
          {
            "date": "2020-08-21",
            "count": 1
          },
          {
            "date": "2020-08-23",
            "count": 1
          },
          {
            "date": "2020-08-29",
            "count": 1
          },
          {
            "date": "2020-09-08",
            "count": 1
          },
          {
            "date": "2020-09-09",
            "count": 1
          },
          {
            "date": "2020-09-26",
            "count": 1
          },
          {
            "date": "2020-10-29",
            "count": 1
          },
          {
            "date": "2020-11-06",
            "count": 1
          },
          {
            "date": "2020-11-20",
            "count": 2
          },
          {
            "date": "2020-12-09",
            "count": 1
          },
          {
            "date": "2020-12-28",
            "count": 1
          },
          {
            "date": "2020-12-31",
            "count": 1
          },
          {
            "date": "2021-01-06",
            "count": 1
          },
          {
            "date": "2021-01-08",
            "count": 1
          },
          {
            "date": "2021-01-13",
            "count": 1
          },
          {
            "date": "2021-01-19",
            "count": 2
          },
          {
            "date": "2021-01-27",
            "count": 1
          },
          {
            "date": "2021-02-05",
            "count": 1
          },
          {
            "date": "2021-02-15",
            "count": 1
          },
          {
            "date": "2021-02-17",
            "count": 1
          },
          {
            "date": "2021-02-23",
            "count": 1
          },
          {
            "date": "2021-03-08",
            "count": 1
          },
          {
            "date": "2021-03-12",
            "count": 1
          },
          {
            "date": "2021-03-25",
            "count": 1
          },
          {
            "date": "2021-03-28",
            "count": 1
          },
          {
            "date": "2021-03-31",
            "count": 1
          },
          {
            "date": "2021-04-01",
            "count": 1
          },
          {
            "date": "2021-04-08",
            "count": 1
          },
          {
            "date": "2021-04-22",
            "count": 1
          },
          {
            "date": "2021-05-10",
            "count": 1
          },
          {
            "date": "2021-05-14",
            "count": 1
          },
          {
            "date": "2021-05-19",
            "count": 1
          },
          {
            "date": "2021-05-28",
            "count": 1
          },
          {
            "date": "2021-06-16",
            "count": 1
          },
          {
            "date": "2021-06-25",
            "count": 1
          },
          {
            "date": "2021-06-26",
            "count": 1
          },
          {
            "date": "2021-07-22",
            "count": 2
          },
          {
            "date": "2021-07-28",
            "count": 1
          },
          {
            "date": "2021-07-29",
            "count": 1
          },
          {
            "date": "2021-08-09",
            "count": 1
          },
          {
            "date": "2021-08-18",
            "count": 1
          },
          {
            "date": "2021-08-20",
            "count": 1
          },
          {
            "date": "2021-08-25",
            "count": 1
          },
          {
            "date": "2021-08-30",
            "count": 1
          },
          {
            "date": "2021-09-01",
            "count": 1
          },
          {
            "date": "2021-09-05",
            "count": 1
          },
          {
            "date": "2021-10-01",
            "count": 1
          },
          {
            "date": "2021-10-05",
            "count": 1
          },
          {
            "date": "2021-10-06",
            "count": 1
          },
          {
            "date": "2021-10-12",
            "count": 1
          },
          {
            "date": "2021-10-20",
            "count": 1
          },
          {
            "date": "2021-11-10",
            "count": 1
          },
          {
            "date": "2021-11-17",
            "count": 1
          },
          {
            "date": "2021-11-19",
            "count": 1
          },
          {
            "date": "2021-11-21",
            "count": 2
          },
          {
            "date": "2021-11-25",
            "count": 1
          },
          {
            "date": "2021-12-13",
            "count": 1
          },
          {
            "date": "2021-12-15",
            "count": 1
          },
          {
            "date": "2021-12-21",
            "count": 1
          },
          {
            "date": "2021-12-24",
            "count": 2
          },
          {
            "date": "2021-12-27",
            "count": 1
          },
          {
            "date": "2021-12-30",
            "count": 1
          },
          {
            "date": "2022-01-06",
            "count": 1
          },
          {
            "date": "2022-01-13",
            "count": 1
          },
          {
            "date": "2022-01-14",
            "count": 1
          },
          {
            "date": "2022-01-15",
            "count": 1
          },
          {
            "date": "2022-01-21",
            "count": 2
          },
          {
            "date": "2022-02-03",
            "count": 2
          },
          {
            "date": "2022-02-04",
            "count": 2
          },
          {
            "date": "2022-02-07",
            "count": 1
          },
          {
            "date": "2022-02-08",
            "count": 2
          },
          {
            "date": "2022-02-12",
            "count": 1
          },
          {
            "date": "2022-02-18",
            "count": 1
          },
          {
            "date": "2022-03-04",
            "count": 1
          },
          {
            "date": "2022-03-13",
            "count": 1
          },
          {
            "date": "2022-03-14",
            "count": 1
          },
          {
            "date": "2022-03-20",
            "count": 1
          },
          {
            "date": "2022-03-25",
            "count": 1
          },
          {
            "date": "2022-03-26",
            "count": 1
          },
          {
            "date": "2022-04-06",
            "count": 1
          },
          {
            "date": "2022-05-03",
            "count": 1
          },
          {
            "date": "2022-05-09",
            "count": 1
          },
          {
            "date": "2022-05-13",
            "count": 1
          },
          {
            "date": "2022-06-13",
            "count": 1
          },
          {
            "date": "2022-06-28",
            "count": 2
          },
          {
            "date": "2022-07-18",
            "count": 1
          },
          {
            "date": "2022-07-21",
            "count": 1
          },
          {
            "date": "2022-07-22",
            "count": 1
          },
          {
            "date": "2022-07-25",
            "count": 1
          },
          {
            "date": "2022-07-27",
            "count": 1
          },
          {
            "date": "2022-08-05",
            "count": 1
          },
          {
            "date": "2022-08-06",
            "count": 1
          },
          {
            "date": "2022-08-10",
            "count": 1
          },
          {
            "date": "2022-08-16",
            "count": 1
          },
          {
            "date": "2022-08-23",
            "count": 1
          },
          {
            "date": "2022-08-29",
            "count": 1
          },
          {
            "date": "2022-09-16",
            "count": 1
          },
          {
            "date": "2022-09-18",
            "count": 1
          },
          {
            "date": "2022-09-19",
            "count": 1
          },
          {
            "date": "2022-09-24",
            "count": 1
          },
          {
            "date": "2022-10-03",
            "count": 2
          },
          {
            "date": "2022-10-11",
            "count": 1
          },
          {
            "date": "2022-10-17",
            "count": 1
          },
          {
            "date": "2022-11-08",
            "count": 1
          },
          {
            "date": "2022-11-09",
            "count": 1
          },
          {
            "date": "2022-11-23",
            "count": 1
          },
          {
            "date": "2022-11-24",
            "count": 1
          },
          {
            "date": "2022-11-25",
            "count": 1
          },
          {
            "date": "2022-11-30",
            "count": 1
          },
          {
            "date": "2022-12-15",
            "count": 1
          },
          {
            "date": "2022-12-21",
            "count": 1
          },
          {
            "date": "2022-12-28",
            "count": 1
          },
          {
            "date": "2023-01-11",
            "count": 1
          },
          {
            "date": "2023-01-16",
            "count": 1
          },
          {
            "date": "2023-01-19",
            "count": 1
          },
          {
            "date": "2023-01-27",
            "count": 1
          },
          {
            "date": "2023-02-02",
            "count": 1
          },
          {
            "date": "2023-02-08",
            "count": 1
          },
          {
            "date": "2023-02-09",
            "count": 1
          },
          {
            "date": "2023-02-10",
            "count": 1
          },
          {
            "date": "2023-02-19",
            "count": 1
          },
          {
            "date": "2023-03-15",
            "count": 1
          },
          {
            "date": "2023-03-25",
            "count": 1
          },
          {
            "date": "2023-04-04",
            "count": 1
          },
          {
            "date": "2023-05-03",
            "count": 1
          },
          {
            "date": "2023-05-07",
            "count": 1
          },
          {
            "date": "2023-08-04",
            "count": 1
          },
          {
            "date": "2023-08-28",
            "count": 1
          },
          {
            "date": "2023-09-11",
            "count": 1
          },
          {
            "date": "2023-09-12",
            "count": 2
          },
          {
            "date": "2023-09-13",
            "count": 1
          },
          {
            "date": "2023-09-19",
            "count": 1
          },
          {
            "date": "2023-10-01",
            "count": 1
          },
          {
            "date": "2023-10-14",
            "count": 1
          },
          {
            "date": "2023-10-26",
            "count": 1
          },
          {
            "date": "2023-10-27",
            "count": 1
          },
          {
            "date": "2023-11-01",
            "count": 2
          },
          {
            "date": "2023-11-10",
            "count": 1
          },
          {
            "date": "2023-11-15",
            "count": 1
          },
          {
            "date": "2023-12-01",
            "count": 1
          },
          {
            "date": "2023-12-21",
            "count": 1
          },
          {
            "date": "2024-01-30",
            "count": 1
          },
          {
            "date": "2024-02-20",
            "count": 1
          },
          {
            "date": "2024-03-05",
            "count": 1
          },
          {
            "date": "2024-03-27",
            "count": 1
          },
          {
            "date": "2024-03-28",
            "count": 1
          },
          {
            "date": "2024-04-06",
            "count": 1
          },
          {
            "date": "2024-04-08",
            "count": 1
          },
          {
            "date": "2024-04-11",
            "count": 1
          },
          {
            "date": "2024-04-25",
            "count": 1
          },
          {
            "date": "2024-04-26",
            "count": 1
          },
          {
            "date": "2024-05-14",
            "count": 2
          },
          {
            "date": "2024-05-17",
            "count": 1
          },
          {
            "date": "2024-06-14",
            "count": 1
          },
          {
            "date": "2024-06-17",
            "count": 1
          },
          {
            "date": "2024-07-12",
            "count": 1
          },
          {
            "date": "2024-07-26",
            "count": 1
          },
          {
            "date": "2024-07-30",
            "count": 1
          },
          {
            "date": "2024-08-06",
            "count": 1
          },
          {
            "date": "2024-08-20",
            "count": 1
          },
          {
            "date": "2024-09-03",
            "count": 1
          },
          {
            "date": "2024-10-04",
            "count": 1
          },
          {
            "date": "2024-10-08",
            "count": 1
          },
          {
            "date": "2024-11-07",
            "count": 1
          },
          {
            "date": "2024-11-15",
            "count": 1
          },
          {
            "date": "2024-11-20",
            "count": 1
          },
          {
            "date": "2024-11-21",
            "count": 1
          },
          {
            "date": "2024-12-02",
            "count": 1
          },
          {
            "date": "2024-12-03",
            "count": 1
          },
          {
            "date": "2024-12-20",
            "count": 1
          },
          {
            "date": "2025-01-25",
            "count": 1
          },
          {
            "date": "2025-02-10",
            "count": 1
          },
          {
            "date": "2025-02-19",
            "count": 1
          },
          {
            "date": "2025-03-12",
            "count": 1
          },
          {
            "date": "2025-04-01",
            "count": 1
          },
          {
            "date": "2025-04-09",
            "count": 1
          },
          {
            "date": "2025-04-15",
            "count": 1
          },
          {
            "date": "2025-05-04",
            "count": 1
          },
          {
            "date": "2025-05-19",
            "count": 1
          },
          {
            "date": "2025-06-05",
            "count": 1
          },
          {
            "date": "2025-06-12",
            "count": 1
          },
          {
            "date": "2025-07-02",
            "count": 1
          },
          {
            "date": "2025-08-22",
            "count": 1
          },
          {
            "date": "2025-08-28",
            "count": 1
          },
          {
            "date": "2025-09-01",
            "count": 1
          },
          {
            "date": "2025-09-28",
            "count": 1
          },
          {
            "date": "2025-10-19",
            "count": 1
          },
          {
            "date": "2025-11-11",
            "count": 1
          },
          {
            "date": "2025-12-15",
            "count": 1
          },
          {
            "date": "2026-01-15",
            "count": 1
          },
          {
            "date": "2026-02-05",
            "count": 1
          },
          {
            "date": "2026-02-07",
            "count": 1
          },
          {
            "date": "2026-02-19",
            "count": 1
          },
          {
            "date": "2026-03-05",
            "count": 1
          },
          {
            "date": "2026-03-10",
            "count": 1
          },
          {
            "date": "2026-05-28",
            "count": 1
          },
          {
            "date": "2026-06-02",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 694,
        "total_forks": 708
      },
      "star_history": null,
      "open_issues_and_prs": 118
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 142309,
      "source_files_sampled": 373,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 4615
    },
    "dependencies": {
      "manifests": [
        "composer.json",
        "docs/requirements.txt"
      ],
      "advisories": {
        "error": "No resolved dependencies carried a version and a supported ecosystem",
        "scope": "repository_graph",
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 9,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "packagist",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "symfony/polyfill-mbstring",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "^1.27"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "symfony/polyfill-mbstring",
            "direct": true,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "php",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "phpunit/phpunit",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "smarty/smarty-lexer",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "mike",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-material",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pygments",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pymdown-extensions",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 9,
        "direct_count": 1,
        "indirect_count": 8
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 33,
        "merged_prs": 192,
        "open_issues": 85,
        "closed_ratio": 0.892,
        "closed_issues": 705,
        "closed_unmerged_prs": 123
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "uwetews",
          "commits": 1243,
          "avatar_url": "https://avatars.githubusercontent.com/u/1246127?v=4"
        },
        {
          "type": "User",
          "login": "wisskid",
          "commits": 325,
          "avatar_url": "https://avatars.githubusercontent.com/u/9041348?v=4"
        },
        {
          "type": "User",
          "login": "glensc",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/199095?v=4"
        },
        {
          "type": "User",
          "login": "mohrt",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/1020204?v=4"
        },
        {
          "type": "User",
          "login": "AnrDaemon",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/6532485?v=4"
        },
        {
          "type": "User",
          "login": "thirsch",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/1055937?v=4"
        },
        {
          "type": "User",
          "login": "shadowwa",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/3328149?v=4"
        },
        {
          "type": "User",
          "login": "matsuo",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/141021?v=4"
        },
        {
          "type": "User",
          "login": "Visualq",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/464429?v=4"
        },
        {
          "type": "User",
          "login": "dusta",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/9001348?v=4"
        }
      ],
      "contributors_sampled": 69,
      "top_contributor_share": 0.735
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 7,
            "reason": "6 out of 8 merged PRs checked by a CI test -- score normalized to 7",
            "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": 1,
            "reason": "Found 3/30 approved changesets -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 10 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "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": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "25 commit(s) and 6 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": null,
            "reason": "no dependencies found",
            "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": 4,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 9,
            "reason": "1 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "1f9eef51c7e5582218abf5e832494bcb57f595d9",
        "ran_at": "2026-07-23T19:32:24Z",
        "aggregate_score": 4.4,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-04T11:39:36Z",
      "oldest_open_prs": [
        {
          "number": 569,
          "created_at": "2020-01-28T14:14:13Z",
          "last_comment_at": "2020-05-04T23:10:28Z",
          "last_comment_author": "AnrDaemon"
        },
        {
          "number": 585,
          "created_at": "2020-04-14T20:16:20Z",
          "last_comment_at": "2020-05-10T18:49:16Z",
          "last_comment_author": "artcs"
        },
        {
          "number": 627,
          "created_at": "2021-01-06T08:05:58Z",
          "last_comment_at": "2022-10-31T11:22:19Z",
          "last_comment_author": "blaaat"
        },
        {
          "number": 651,
          "created_at": "2021-03-22T09:28:30Z",
          "last_comment_at": "2021-03-23T16:36:34Z",
          "last_comment_author": "AnrDaemon"
        },
        {
          "number": 652,
          "created_at": "2021-03-22T19:46:59Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 730,
          "created_at": "2022-02-15T22:22:03Z",
          "last_comment_at": "2022-07-17T13:48:57Z",
          "last_comment_author": "SlowFox71"
        },
        {
          "number": 835,
          "created_at": "2022-12-15T22:17:49Z",
          "last_comment_at": "2023-02-06T14:47:53Z",
          "last_comment_author": "wisskid"
        },
        {
          "number": 857,
          "created_at": "2023-02-02T06:48:42Z",
          "last_comment_at": "2023-06-22T06:37:35Z",
          "last_comment_author": "gries"
        },
        {
          "number": 860,
          "created_at": "2023-02-08T21:48:06Z",
          "last_comment_at": "2024-08-19T19:55:02Z",
          "last_comment_author": "j-applese3d"
        },
        {
          "number": 982,
          "created_at": "2024-04-03T07:43:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 986,
          "created_at": "2024-04-06T03:45:36Z",
          "last_comment_at": "2024-06-08T14:10:00Z",
          "last_comment_author": "ssigwart"
        },
        {
          "number": 1016,
          "created_at": "2024-05-14T13:28:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1040,
          "created_at": "2024-07-05T21:36:19Z",
          "last_comment_at": "2026-05-31T17:52:22Z",
          "last_comment_author": "humpfhumpf"
        },
        {
          "number": 1049,
          "created_at": "2024-07-31T09:42:17Z",
          "last_comment_at": "2026-05-15T21:48:27Z",
          "last_comment_author": "wisskid"
        },
        {
          "number": 1060,
          "created_at": "2024-08-30T00:13:07Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1088,
          "created_at": "2024-11-29T08:18:29Z",
          "last_comment_at": "2025-09-12T11:07:24Z",
          "last_comment_author": "niemela"
        },
        {
          "number": 1115,
          "created_at": "2025-03-16T14:49:17Z",
          "last_comment_at": "2025-03-17T09:23:57Z",
          "last_comment_author": "wisskid"
        },
        {
          "number": 1127,
          "created_at": "2025-04-15T19:02:19Z",
          "last_comment_at": "2025-04-18T09:24:44Z",
          "last_comment_author": "krpisz"
        },
        {
          "number": 1130,
          "created_at": "2025-05-04T11:43:20Z",
          "last_comment_at": "2025-05-04T22:38:52Z",
          "last_comment_author": "wisskid"
        },
        {
          "number": 1135,
          "created_at": "2025-06-19T12:13:18Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-04T11:37:14Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 165,
          "created_at": "2016-01-15T15:58:10Z",
          "last_comment_at": "2024-04-29T08:00:23Z",
          "last_comment_author": "wisskid"
        },
        {
          "number": 502,
          "created_at": "2018-10-22T14:02:50Z",
          "last_comment_at": "2018-10-23T16:27:21Z",
          "last_comment_author": "juangacovas"
        },
        {
          "number": 530,
          "created_at": "2019-01-15T09:04:59Z",
          "last_comment_at": "2021-03-21T23:27:38Z",
          "last_comment_author": "wisskid"
        },
        {
          "number": 534,
          "created_at": "2019-02-23T09:05:35Z",
          "last_comment_at": "2020-02-23T20:45:42Z",
          "last_comment_author": "AnrDaemon"
        },
        {
          "number": 554,
          "created_at": "2019-10-11T04:54:58Z",
          "last_comment_at": "2020-02-21T16:37:09Z",
          "last_comment_author": "AnrDaemon"
        },
        {
          "number": 630,
          "created_at": "2021-01-13T10:30:25Z",
          "last_comment_at": "2021-02-11T05:29:11Z",
          "last_comment_author": "dphadtare"
        },
        {
          "number": 633,
          "created_at": "2021-01-14T12:58:09Z",
          "last_comment_at": "2024-05-15T06:54:51Z",
          "last_comment_author": "SlowFox71"
        },
        {
          "number": 639,
          "created_at": "2021-01-31T16:09:36Z",
          "last_comment_at": "2021-02-02T08:30:25Z",
          "last_comment_author": "AnrDaemon"
        },
        {
          "number": 666,
          "created_at": "2021-05-28T14:28:04Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 673,
          "created_at": "2021-08-16T00:07:08Z",
          "last_comment_at": "2021-11-21T09:03:28Z",
          "last_comment_author": null
        },
        {
          "number": 677,
          "created_at": "2021-10-01T16:54:33Z",
          "last_comment_at": "2021-10-15T08:33:25Z",
          "last_comment_author": "oschonrock"
        },
        {
          "number": 698,
          "created_at": "2021-12-31T11:51:10Z",
          "last_comment_at": "2022-08-25T16:04:43Z",
          "last_comment_author": "danihuge"
        },
        {
          "number": 703,
          "created_at": "2022-01-10T14:06:38Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 705,
          "created_at": "2022-01-11T10:06:02Z",
          "last_comment_at": "2022-04-29T14:39:30Z",
          "last_comment_author": "Culprit-CZ"
        },
        {
          "number": 732,
          "created_at": "2022-02-18T01:21:57Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 786,
          "created_at": "2022-08-24T11:38:45Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 806,
          "created_at": "2022-09-20T09:26:44Z",
          "last_comment_at": "2023-03-14T14:03:17Z",
          "last_comment_author": null
        },
        {
          "number": 810,
          "created_at": "2022-09-22T11:13:56Z",
          "last_comment_at": "2024-11-18T20:09:58Z",
          "last_comment_author": null
        },
        {
          "number": 839,
          "created_at": "2023-01-05T19:39:00Z",
          "last_comment_at": "2023-01-05T20:00:14Z",
          "last_comment_author": "rudiedirkx"
        },
        {
          "number": 846,
          "created_at": "2023-01-10T08:23:35Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/smarty-php/smarty",
    "host": "github.com",
    "name": "smarty",
    "owner": "smarty-php"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 68,
      "inputs": {
        "security": 44,
        "vitality": 78,
        "community": 83,
        "governance": 63,
        "engineering": 71
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 78,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "commits_last_year": 47,
              "human_commit_share": 1,
              "days_since_last_push": 19,
              "active_weeks_last_year": 14
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 19 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 19
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "14/52 weeks with commits",
                "points": 9.7,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 14
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "47 commits in the last year",
                "points": 15.1,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 47
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "25 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 76,
              "latest_release_tag": "v5.8.4",
              "releases_from_tags": false,
              "days_since_latest_release": 24,
              "mean_days_between_releases": 34.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "76 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 76
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 24 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 24
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~34.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 34.1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "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": 19,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 19 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 19
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 83,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "excellent",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 91,
            "inputs": {
              "forks": 708,
              "stars": 2348,
              "watchers": 180,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "2,348 stars",
                "points": 54.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 2348
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "708 forks",
                "points": 23.7,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 708
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "180 watchers",
                "points": 12.5,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 180
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "excellent",
            "name": "Ecosystem adoption (downloads)",
            "note": null,
            "notes": [],
            "value": 98,
            "inputs": {
              "packages": [
                "smarty/smarty"
              ],
              "dependents": 530,
              "ecosystems": "packagist",
              "total_downloads": 42452813,
              "monthly_downloads": 909725
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "909,725 downloads/month across packagist",
                "points": 79.5,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 909725,
                      "ecosystems": "packagist"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "530 packages depend on it",
                "points": 18.2,
                "status": "partial",
                "details": [
                  {
                    "code": "registry_dependents",
                    "params": {
                      "count": 530
                    }
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 63,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 38,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 69,
              "top_contributor_share": 0.735
            },
            "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 74% of commits",
                "points": 6,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 74
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "69 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 69
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 10 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "merged_prs": 192,
              "open_issues": 85,
              "closed_issues": 705,
              "issue_closed_ratio": 0.892,
              "closed_unmerged_prs": 123
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "89% of issues closed",
                "points": 41.7,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 89
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "192/315 decided PRs merged",
                "points": 23.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 192,
                      "decided": 315
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 3/30 approved changesets -- score normalized to 1",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "followers": 71,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "smarty-php",
              "public_repos": 6,
              "account_age_days": 4915
            },
            "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": "71 followers of smarty-php",
                "points": 13.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 71,
                      "login": "smarty-php"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "6 public repos, account ~13 yr old",
                "points": 18.2,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 6
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "smarty/smarty"
              ],
              "ecosystems": "packagist",
              "any_deprecated": false,
              "min_days_since_publish": 24
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on packagist",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "packagist"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 24 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 24
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "99 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 99
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 71,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "6 out of 8 merged PRs checked by a CI test -- score normalized to 7",
                "points": 14,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "topics": [
                "smarty",
                "php"
              ],
              "has_wiki": true,
              "homepage": null,
              "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": null,
                "points": 0,
                "status": "missed",
                "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": "2 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 44,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 44,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 13,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 5,
              "scorecard_aggregate": 4.4
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "6 out of 8 merged PRs checked by a CI test -- score normalized to 7",
                "points": 1.8,
                "status": "partial",
                "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 3/30 approved changesets -- score normalized to 1",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 10 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "25 commit(s) and 6 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": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 detected",
                "points": 2,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "1 existing vulnerabilities detected",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 10
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 62,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "moderate",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 63,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.33,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 4615
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.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": "33 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 17.6,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 33,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 64,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [
                "Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.04,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "4 of the last 100 commits agent-authored or agent-credited",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 4,
                      "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": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "PHP",
              "largest_source_bytes": 142309,
              "source_files_sampled": 373,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "PHP without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "PHP"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/373 source files over 60KB",
                "points": 54.9,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 373,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "No resolved dependencies carried a version and a supported ecosystem"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T19:32:44.841201Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/smarty-php/smarty.svg",
  "full_name": "smarty-php/smarty",
  "license_state": "custom",
  "license_spdx": null
}

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