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

akpersonal4 / ailang-lang-AILang

PythonApache-2.0★ 0 estrellas⑂ 0 forksdesde jul 2026Ver en GitHub ↗

akpersonal4/ailang-lang-AILang tiene un índice de salud de 48 sobre 100, lo que lo sitúa en la banda En riesgo. Su puntuación más alta es Vitality (70/100) y la más baja, Sustainability & Governance (28/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

48
global / 100
En riesgo

Índice de salud del software

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

48
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

akpersonal4Cuenta personal
0 seguidores1 repositorio públicodesde dic 2024

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
PyPIailang-lang1.1.8-21hace 0 díasprogramming-languagecompileraibusiness-applicationsdeterministic

Métricas por categoría

Vitalidad

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

70Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
2.8/36Cadencia de commits — 4/52 semanas con commits
18/18Volumen de commits — 136 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year136
human_commit_share1
days_since_last_push0
active_weeks_last_year4
Cómo se puntúa
27/27Publica versiones — 8 versiones publicadas
36/36Recencia de las versiones — última versión hace 0 días
27/27Cadencia de publicación — una versión cada ~2,1 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count8
latest_release_tagv1.1.8
releases_from_tagsno
days_since_latest_release0
mean_days_between_releases2,1

Comunidad y Adopción

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

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

Sostenibilidad y Gobernanza

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

28Crítico · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
0/38.3Aceptación de PR — sin PR decididos o sin datos
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs0
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues, Aceptación de PR. Los pesos restantes se han renormalizado.
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
0/25Alcance del propietario — 0 seguidores de akpersonal4
5.4/25Trayectoria — 1 repos públicos, cuenta de ~1 años
Datos de entrada utilizados
followers0
owner_typeUser
is_verified
owner_loginakpersonal4
public_repos1
account_age_days583
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en pypi
35/35Recencia de publicación — última publicación hace 0 días
20/20Historial de versiones — 21 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesailang-lang
ecosystemspypi
any_deprecatedno
min_days_since_publish0

Calidad de Ingeniería

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

67Moderado · 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
6.4/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_tests
has_editorconfig
has_linter_configno
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.

Documentación

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

Seguridad

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

32En 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
0/2.5CI-Tests — sin datos
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — sin datos
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
6/7.5Vulnerabilities — 2 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate3,2
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, packaging. Los pesos restantes se han renormalizado.

Preparación para IA

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

64Moderado · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — AGENTS.md, compiler/docs/AGENTS.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 81 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,81
agent_instruction_filesAGENTS.md, compiler/docs/AGENTS.md
agent_instruction_max_bytes8537
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — compiler/py.typed
10/10Entorno reproducible — lockfile
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 100
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilespackage-lock.json
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configscompiler/py.typed
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
27/45Código verificable por tipos — Python con configuración de verificación de tipos (compiler/py.typed)
54.9/55Tamaños de archivo manejables — 1/404 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languagePython
largest_source_bytes80.378
source_files_sampled404
oversized_source_files1
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
20/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signal
api_schema_files

Datos clave

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

Advertencias de recopilación de datos

  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository
  • deps.dev does not index pypi:ailang-lang@1.1.8; advisories assessed against the repository dependency graph instead

Más detalle

OpenSSF Scorecard 3.2 / 10
3.2agregado

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-29 21:31 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/dCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
n/dPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
8Vulnerabilities2 existing vulnerabilities detected
Dependencias directas 1
RegistroPaqueteRestricción de versiónManifiesto
PyPIwatchdog>=4.0pyproject.toml
Todas las dependencias no recopilado

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

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 2237,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "HTML": 904,
        "Python": 2118989,
        "JavaScript": 27443,
        "PowerShell": 1846
      },
      "pushed_at": "2026-07-29T21:27:05Z",
      "created_at": "2026-07-14T20:09:11Z",
      "owner_type": "User",
      "updated_at": "2026-07-29T21:27:17Z",
      "description": null,
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "User",
      "login": "akpersonal4",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/192571394?v=4",
      "created_at": "2024-12-23T05:36:21Z",
      "is_verified": null,
      "public_repos": 1,
      "account_age_days": 583
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.1.8",
          "kind": "patch",
          "published_at": "2026-07-29T21:27:22Z"
        },
        {
          "tag": "v1.1.7",
          "kind": "patch",
          "published_at": "2026-07-29T21:23:42Z"
        },
        {
          "tag": "v1.1.6",
          "kind": "patch",
          "published_at": "2026-07-28T16:23:23Z"
        },
        {
          "tag": "v1.1.3",
          "kind": "patch",
          "published_at": "2026-07-23T22:56:32Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-07-20T13:56:13Z"
        },
        {
          "tag": "v1.1.0-vscode",
          "kind": "prerelease",
          "published_at": "2026-07-20T16:44:07Z"
        },
        {
          "tag": "v1.0.2",
          "kind": "patch",
          "published_at": "2026-07-14T20:36:06Z"
        },
        {
          "tag": "v1.0.1",
          "kind": "patch",
          "published_at": "2026-07-14T20:18:27Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "69b009f6f410609ebe5d65944e78bf6d54a2788b",
          "body": "Bump from v1.1.7 (RC) to v1.1.8 (final) incorporating two RC review fixes:\n- interpreter.py:285 — remove double-line-number in fallback path\n- builtins.py:243-246 — use _expect_list instead of cast in list_clear\n\nRebuilt wheel: ailang_lang-1.1.8-py3-none-any.whl",
          "is_bot": false,
          "headline": "v1.1.8 — version bump for RC review fixes",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-29T21:26:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ecfea71e2a461863361d50fd08e27b990d5b2f1e",
          "body": "- RuntimeError diagnostic format: operation, reason, expected type, actual type,\n  source location, suggestion\n- PackageError diagnostic format with structured exit codes (10-14)\n- Type guards on 30+ stdlib functions in builtins.py\n- Source map augmentation for runtime error location tracking\n- Entr\n[…]\nostic comparison\n- 29 package validation regression tests (1165 total)\n- RC Technical Review minor fixes: interpreter fallback path,\n  list_clear type guard\n- Build: ailang_lang-1.1.7-py3-none-any.whl",
          "is_bot": false,
          "headline": "v1.1.7 — Runtime Diagnostics and Package Validation (M127)",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-29T21:22:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5e41da0f59f4a22501fd44062aef341285653256",
          "body": "…al, import cleanup",
          "is_bot": false,
          "headline": "chore: post-certification maintenance — version sync, dead code remov…",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-28T16:15:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f3c9deeb638a3827c7ef4bfcde0418c74ed7868",
          "body": "…ion sync fix\n\nFixes included in this release:\n- CMP001 cascade suppression when LEX002 already reported\n- Deduplicate identical diagnostics in DiagnosticReporter\n- Graceful None return from ExpressionStatement builder\n- --help text for cmd_explain and cmd_doctor\n- PYTHONIOENCODING=utf-8 for DX tool\n[…]\nsts)\n- Fix test_ail_context.py assertion from stale 1.1.4 to 1.1.6\n- Fix test_mcp_server.py assertion from stale 1.1.4 to 1.1.6\n- Fix test_vscode_mcp_integration.py assertion from stale 1.1.4 to 1.1.6",
          "is_bot": false,
          "headline": "release: v1.1.6 - diagnostic cascade suppression, CLI help text, vers…",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-28T15:15:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ebe7afdfc77605b85ca70416880b29832ece9dde",
          "body": "…d complete diagnostics",
          "is_bot": false,
          "headline": "release: v1.1.5 - Production Ready release with security hardening an…",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-27T20:29:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1bda015a14c4e91a7ce20796c601d066949eecc5",
          "body": "Fix stdlib module resolution (MOD003) when running from outside project tree.\n\nChanges:\n- Add _find_stdlib_root() to compiler/compilation/resolution.py\n- Update _candidate_roots() to include installed stdlib as fallback\n- Add regression tests (tests/test_mod003_stdlib_resolution.py)\n- Bump version to 1.1.4\n\nVerified:\n- 1018 tests pass (1014 existing + 4 new integration tests)\n- Stdlib imports work from temp directories\n- No language changes, no breaking changes, no API changes",
          "is_bot": false,
          "headline": "release: v1.1.4 - fix MOD003 stdlib module resolution",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-24T17:14:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02bfbd56b8616b4ee3b911f164546f287fdbbd49",
          "body": "- Update pyproject.toml, compiler/_version.py, all tool versions to 1.1.3\n- Update CHANGELOG with v1.1.3 release notes\n- Update VS Code extension package.json to 1.1.3\n- Update DEVELOPMENT_STATUS.md current version\n- Update test assertions for 1.1.3",
          "is_bot": false,
          "headline": "M93: Bump version to v1.1.3",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-23T22:48:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc0fed4a405af2b79f63ba83500a430cec11f297",
          "body": "- Add comprehensive release reports (M83K-M91)\n- Add ail_doc_verify, ail_dx_audit, ail_release_verify, ail_stdlib_audit, ail_validate tools\n- Remediate examples with consistent formatting and output\n- Update development status and project memory\n- Add validation pipeline configuration",
          "is_bot": false,
          "headline": "M92: Release documentation, tools, and example remediation",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-23T22:29:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb9451c1a181ab9af9dafc5e73a3f64700d9a40f",
          "body": "- Update pyproject.toml to version 1.1.2\n- Sync compiler/_version.py via generate_version.py\n- Update all tool VERSION constants to 1.1.2\n- Update README.md badge to v1.1.2\n- Add v1.1.2 entry to CHANGELOG.md\n- Update documentation version references\n- Add sync_versions.py for comprehensive version sync\n- Add release.py for automated release verification",
          "is_bot": false,
          "headline": "M91: Version synchronization - all references now v1.1.2",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-23T20:24:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ea86dbea43173e15cce34302b04344e6ab3f99cf",
          "body": "- Replace unsupported examples with valid AILang code\n- Update CLI documentation to use supported commands\n- Simplify default project template (hello-world, --full for inventory)\n- Add README files to all 41 example projects\n- Synchronize version references to v1.1.1 across runtime, docs, and tests\n\n[…]\nemove stale documentation comments about missing stdlib features\n- Fix ail init references to use ail new\n- Update VSCode extension package version to 1.1.1\n- Add 6 deliverable reports for M83J review",
          "is_bot": false,
          "headline": "M83J: Improve first-hour onboarding experience",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-21T20:27:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7a6e663de02e3b3f8d045f34f5c898578d507173",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'develop'",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-21T19:21:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "931d515a03db9129a96576e769d433679ac33508",
          "body": "…uppression\n\nFix 7 issues from independent M83I Enterprise Validation:\n\n1. ail rename path leak: _find_stdlib().parent exposed AILang package\n   path instead of user project root. Added _find_project_root() that\n   walks CWD upward for ail.toml/.ail markers.\n\n2. Unknown flag handling: ail --invalid-\n[…]\npkg commands (install,\nadd, remove, update, list) and _run_dx_tool that used the same\n_find_stdlib().parent pattern.\n\n16 new regression tests. 1009 tests pass, 0 regressions.\nVersion bumped to v1.1.1.",
          "is_bot": false,
          "headline": "M83I: Enterprise validation fixes - path leak, diagnostics, cascade s…",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-21T19:13:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e4e5896f62857fc411d2638584ee24379fd3cde9",
          "body": null,
          "is_bot": false,
          "headline": "Release Candidate v1.1.0",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T21:41:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fea9acb1db9f0c87e4035f3fdfe44f0733e5d834",
          "body": "- Updated test counts: 1074→1079 (README, DEVELOPMENT_STATUS, ONBOARDING_CHECKLIST, TESTING)\n- Updated DEVELOPMENT_STATUS.md: milestone M82→M83C, Last Updated 2026-07-17/v1.0.11→2026-07-20/v1.1.0\n- Updated DEVELOPMENT_STATUS.md: VS Code Extension v0.3.0→v1.1.0, added M83A-C to Recently Completed\n- F\n[…]\n-ailang/README.md: VSIX 0.1.0→1.1.0, directory name, added v1.1.0 release notes, 11 settings\n- Fixed TESTING.md: test count 360+→1079+, tree diagram typo\n- Added PROJECT_MEMORY.md test count 1074→1079",
          "is_bot": false,
          "headline": "M83D: Repository Synchronization & Publication Audit",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T16:59:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8196b35b31f229e6cec32330198cf7f42dbc8530",
          "body": null,
          "is_bot": false,
          "headline": "M83C: VS Code Extension release notes and VSIX cleanup",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T16:43:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d05f2d0017ded8a505b9ad25d9f751245e5f7963",
          "body": null,
          "is_bot": false,
          "headline": "M83B: Deliver VS Code Extension MVP",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T16:39:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06153af3f3510e1ae4304c9dfb5a1c08f5c9dd41",
          "body": null,
          "is_bot": false,
          "headline": "M83A: VS Code Extension Architecture",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T16:38:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "42115f5fb41536fcc623b3c658b7faf340ad7be5",
          "body": null,
          "is_bot": false,
          "headline": "M82: Improve developer onboarding and documentation",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T16:15:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2636d5526c0fde798b765f491f5729b6f5fe27b3",
          "body": "- Format entire repo with black (248 files reformatted)\n- Auto-fix 263 ruff violations: F401, F541, I001, UP045, UP017, UP037, F811, UP015\n- Restore find_manifest re-export in ail_package_manager/manifest.py\n  (false positive: cross-package re-export consumed by commands.py, installer.py)\n- All tests pass (1074/1074)\n- black --check passes, no behavioral changes",
          "is_bot": false,
          "headline": "M81: Establish formatting and auto-fix lint baseline",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T15:25:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc6dc13f6f07d01ea513d59d1b5d6a3735c0ba85",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): make benchmark summary non-blocking (re-runs broken apps)",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T14:51:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc565a1206e0248c977817fcd715efa3104aaafe",
          "body": "… links)",
          "is_bot": false,
          "headline": "fix(ci): make doc link verification non-blocking (pre-existing broken…",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T14:44:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "031024ab389ebe231c112975a2a823d8d212d371",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): make app compile/run non-blocking (pre-existing failures)",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T14:37:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b834fca389d9032501f9801bc0d978ab41897b9",
          "body": null,
          "is_bot": false,
          "headline": "fix(tests): remove overly strict path patterns from doctor leakage check",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T14:31:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "24107954c490204e5894dfa1c04b820d3aabebb8",
          "body": "…r stdout tools",
          "is_bot": false,
          "headline": "fix(tests): update stale version strings and file-based assertions fo…",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T14:26:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7349fe77825e5c4038a775d9322af3a7df3902d1",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): make black/ruff non-blocking (pre-existing 55/445 violations)",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T14:19:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6cc1a64fdaec9b70efdff08754234a3d67f49e33",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): resolve YAML parse error in benchmark summary step",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T14:14:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5640fd74fb8f66811d8af6af244d6404cfe30d4e",
          "body": null,
          "is_bot": false,
          "headline": "M79.1: Enforce compile-time string concatenation type validation",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-20T13:50:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f67d350533a43a3dc0cc3001389e35a3c3b5f5c",
          "body": "- Create compiler/_version.py with version 1.1.0\n- Modify compiler/__init__.py to export __version__\n- Update compiler/cli/main.py to use compiler.__version__\n- Add CI version consistency validation",
          "is_bot": false,
          "headline": "M79.3: Version synchronization - Establish single source of truth",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-17T23:03:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b37f2852aa6df96bd5121b7b6d37036441009d7d",
          "body": "- Add _DEV_MODE and _DEV_ROOT_OVERRIDE controls\n- Gate upward stdlib discovery behind dev mode flag\n- Production installs never walk parent directories\n- Support --dev flag globally (before or after command)\n- Add AILANG_DEV_ROOT environment variable support\n- Regression tests for safe stdlib discovery",
          "is_bot": false,
          "headline": "M78: Explicit development mode for stdlib discovery",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-17T20:12:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa9728d64e23fd69adde11b9fc06fcd2be28720f",
          "body": "- Lock file format: [[package]], resolved_version, commit field\n- Git+ URL shorthand support in manifest parser\n- Version conflict detection with actionable diagnostics\n- Improved circular dependency detection\n- --verbose and --frozen flags for ail install\n- Package-specific exit codes (1-5)\n- 16 new tests for package management\n\nFixes: ail test crash on Diagnostic object attribute access",
          "is_bot": false,
          "headline": "Release v1.1.0 - M77.1 local package manager MVP",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-17T19:02:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a485ea3d4695993b6a77bb6cb93e0030a08c579",
          "body": null,
          "is_bot": false,
          "headline": "Release v1.0.11 - M76.3 diagnostics and explain command",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-17T16:21:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb0d2b14c26df7b844fba97ebfef3cf19ce14a07",
          "body": "M76.2A - NumericUnknownType for Unknown+Unknown arithmetic:\n- Introduced separate frozen dataclass (not a subclass of UnknownType)\n- Unknown+Unknown → NumericUnknownType (avoids silent incorrect inference)\n- Runtime validation unchanged for dynamic typing\n- Updated type checker arithmetic/comparison\n[…]\nxed session.type_check() to pre-declare user functions\n- ail check and ail build now report identical diagnostics\n- Added integration test for ail check detecting type errors\n\nVersion bumped to 1.0.10",
          "is_bot": false,
          "headline": "M76.2: NumericUnknownType + ail check semantic analysis",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-17T14:57:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "be6f11d7d74ac2aa054c5003bbf54f858f52ccba",
          "body": null,
          "is_bot": false,
          "headline": "Fix VERSION constant in CLI to 1.0.9",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-16T22:29:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f0849b178dbb6d407e17357032a9566abe4a7794",
          "body": null,
          "is_bot": false,
          "headline": "Release v1.0.9 - M76.1 arithmetic inference improvements",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-16T22:22:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65ac0fdd8b8d409749e49f249d96a1f12c5dc9d9",
          "body": "…e hardening",
          "is_bot": false,
          "headline": "Release v1.0.8 - DX workflow, workspace isolation, test infrastructur…",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-16T20:27:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fffc2e4d0f45eda17e5c1c84db8d45b1ffcf41ed",
          "body": "- Fix string + UnknownType to return STRING_TYPE (allows map.get + string)\n- Implement import alias runtime support (import x as y)\n- Fix Unicode encoding in ail docs on Windows\n- Add io.read() to stdlib documentation\n- Update README with Core Commands, Language Tour, discoverability\n- Update all ve\n[…]\n.7\n- Update DEVELOPMENT_STATUS, PROJECT_MEMORY, LANGUAGE_SPEC, STDLIB_REFERENCE\n- Add import alias and io.read to AILANG_DEVELOPMENT_PLAYBOOK\n- Add tests for string concat fix and import alias runtime",
          "is_bot": false,
          "headline": "v1.0.7: M75.3 - Type Inference & Discoverability",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-16T16:38:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "15cd4312a7063636b512613ea48587f0892215cf",
          "body": "Remove absolute filesystem paths from ail context --json output.\nReplace agents/language_spec/stdlib_reference path keys with\ndocuments list containing only filenames. Preserves embedded flags.\n\nAlso fixes ail_mcp/context_adapter.py (same issue).\n\nVersion bumped to 1.0.5.2.",
          "is_bot": false,
          "headline": "M74.1: fix documentation path leakage in ail context --json",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-15T22:48:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99765558ad3a41eeb5c66113b0553ee64917870e",
          "body": "- Add PUBLIC_BETA_ANNOUNCEMENT.md with review feedback applied\n- Fix ail context --json missing array module (15→16 stdlib modules)\n- CLI command corrected to 'ail run hello.ail'\n- Documentation links use GitHub URLs\n- Softened benchmark claims\n- Added positioning statement",
          "is_bot": false,
          "headline": "M74: Add public beta announcement, fix stdlib array module bug",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-15T22:29:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14775825bb97545763857e39dfc69c3cf5ed4829",
          "body": "- Standardize repository URL (anomalyco → akpersonal4/ailang-lang-AILang)\n- Change license from MIT to Apache 2.0\n- Bump version to v1.0.5 across all modules\n- Update VS Code extension to v0.3.0 (MCP integration, keywords)\n- Add root CONTRIBUTING.md, docs/INDEX.md, docs/COMPATIBILITY.md\n- Add reference application data files (47 files)\n- Fix broken documentation links\n- Update dependency ordering timestamps",
          "is_bot": false,
          "headline": "M74: metadata cleanup for public beta launch",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-15T21:30:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ac5e97c30493b72264fca943cebfdda8905082c",
          "body": "- Bump version to 1.0.5 across all modules\n- CHANGELOG entry for M72 (VS Code extension) and M73 (reference apps)\n- 894 tests passing, version-sensitive tests updated",
          "is_bot": false,
          "headline": "v1.0.5: VS Code extension, MCP integration, 8 reference applications",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-15T20:51:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ff19c08a10e8ae497d5a5eb479b75bb4605a67c",
          "body": "…ions\n\n- VS Code extension: LSP + MCP dual-server, 7 commands, status bar, auto-launch\n- MCP client: JSON-RPC 2.0 over NDJSON transport, server lifecycle management\n- 8 reference apps: todo, expense, inventory, employee, log_analyzer, csv_etl, json_transformer, invoice\n- Each app: main.ail, README.m\n[…]\ndapter updated with all 8 reference app patterns\n- REFERENCE_APPLICATIONS.md documentation\n- All 894 existing tests pass, 26 new VS Code MCP tests pass\n- All 8 reference apps compile and run correctly",
          "is_bot": false,
          "headline": "M72+M73: VS Code extension with MCP integration, 8 reference applicat…",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-15T20:29:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f3f47ab0685260f467c7a0c3d00ecabd53d2d948",
          "body": "- Add agents_embedded, language_spec_embedded, stdlib_reference_embedded booleans\n- Add verify_env/ to .gitignore (was accidentally committed in prior commit)",
          "is_bot": false,
          "headline": "fix: add embedded flags to context --json, clean up verify_env",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-15T19:09:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f8b0691a4e07e78b00ebdd74f108e611d54bc050",
          "body": null,
          "is_bot": false,
          "headline": "M71: Add MCP server and AI-native tooling integration (v1.0.4)",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-15T19:00:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be236299d74a335408579bbd32003961cff62e4e",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump version to 1.0.3 in pyproject.toml",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-15T18:13:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62a525da620ee4073ddfe9ced9e12ae69e0a70de",
          "body": "… passing\n\nType Checker (M69.7 completion):\n- Shared symbol table: builtins + module namespaces from semantic analysis\n- TYP013: only fire for known non-function types, not unknown callees\n- UnknownType cascade suppression: TYP003-TYP010 skip unknown operands\n- TYP012: skip when all param types are \n[…]\nound\n\nBug fixes:\n- CLI no-args: return 1 (error) instead of 0, matches convention\n- IR crash test: rewritten with valid AILang syntax + correct pattern\n\nValidation: 931 collected, 931 passed, 0 failed",
          "is_bot": false,
          "headline": "v1.0.3: type checker hardening, pre-existing bug fixes, 931/931 tests…",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-15T17:24:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5ec9d5ea8458aa1b875b081f43adbc790ee976c6",
          "body": "…ts, docs",
          "is_bot": false,
          "headline": "v1.0.3 release candidate – core, diagnostics, workspace resolver, tes…",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-14T22:19:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e915b360cd815d9bf1e02bfcac7bee9803a9fe30",
          "body": "… emit CMP001, add regression test for IR crash",
          "is_bot": false,
          "headline": "M69.7 Sprint 2: add InternalCompilerError, catch internal exceptions,…",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-14T22:02:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6397463a6c9c3245b21aa66a628d4161cb0c7533",
          "body": "…/TYP006 diagnostics, add test for type errors",
          "is_bot": false,
          "headline": "M69.7 Sprint 1: integrate type checker, add LIST type, enforce TYP005…",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-14T21:59:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e12ec2194b58f19677d3eda1ebde73cac068d940",
          "body": "Replaced MIT License with Apache License 2.0.",
          "is_bot": false,
          "headline": "Change license from MIT to Apache 2.0",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-14T20:39:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c3f68c260ce235267f963df5a19a3b737c60fb7",
          "body": null,
          "is_bot": false,
          "headline": "v1.0.2: Apache-2.0 license, REL-001 fix, metadata hardening",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-14T20:29:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "74333c2bac38a654fff86d3016d5fcb48a9660a3",
          "body": null,
          "is_bot": false,
          "headline": "v1.0.1: PyPI publication, documentation closure, M68.6 complete",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-14T20:10:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "749b5ddf3a1d66ded786d2e98fd142d3a1d3f879",
          "body": null,
          "is_bot": false,
          "headline": "Initial commit",
          "author_name": "akpersonal4",
          "author_login": "akpersonal4",
          "committed_at": "2026-07-14T20:09:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a20bbc8dbcbdaa02dda1f1f0afcc692bf98dcb85",
          "body": "- pyproject.toml: version and metadata updates\n- kanban_data.json: project tracking updates\n- reports: dependency ordering analysis refresh\n- main.ail, product.ail: root-level AILang files\n- run_benchmark.ps1: benchmark execution script",
          "is_bot": false,
          "headline": "chore: project config, root files, and dependency reports",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-13T21:45:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b164b351007423b59b9b4a045bd8513cd0ff88d9",
          "body": "- architecture: DX-015 rename tool, DX-016 watch mode, DX-017 orchestration\n- commands: rename and watch user guides\n- deployment: first deployment, user guide, operations runbook\n- releases: first-hour closure, V1 RC1 notes, known limitations, readiness\n- governance: vision and differentiation updates\n- guides: playbook updates for new tooling\n- reference: language spec and tour updates\n- research: external developer experience, first-hour experience",
          "is_bot": false,
          "headline": "docs: architecture, governance, deployment, and release documentation",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-13T21:43:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e80894fea1091d38fa65b97c9eadd9881b538ba",
          "body": "…on evidence\n\n- Engineering Olympics: AILang vs Python head-to-head comparison\n- Security benchmarks: 8 vulnerability test cases (P8 series)\n- Operational evidence: production readiness documentation\n- Adoption docs: production plan, metrics, first application report",
          "is_bot": false,
          "headline": "docs(benchmarks): engineering olympics, security benchmarks, producti…",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-13T21:42:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff59d5d172650857824e187790c1adb3b62270b6",
          "body": "- 30 collection JSON files updated (line ending normalization)\n- session.json added for runtime state tracking",
          "is_bot": false,
          "headline": "data(inventory): update collection fixtures and session state",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-13T21:41:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "396765c20f3320b9ab4b03a639aa66128451ae37",
          "body": "- login.ail: user authentication, session management, role-based guards\n- backup.ail: combined JSON backup/restore, auto-backup on write\n- validation.ail: required fields, positive numbers, email, uniqueness\n- import_csv.ail: CSV import via csv.parse_header\n- integrity.ail: JSON parse check, foreign\n[…]\n commands, command routing\n- config/users.json: default admin and staff accounts\n- 5 new test files, test_compile.py and runner.py updated\n- Python mirror benchmark, install script, level-0 test fixes",
          "is_bot": false,
          "headline": "feat(inventory): add production modules (M38)",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-13T21:41:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5d5b0516f0833419b8d0b91de6f4e321527078e5",
          "body": "- ail publish: local file:// registry support\n- ail install: download from local registry with transitive resolution\n- compiler/package/registry.py: publish_local, download_from_local_registry\n- tools/ail_package_manager/registry.py: registry client implementation\n- installer/resolver: registry source support, lib/ directory search path\n- end-to-end pipeline: ail new → ail publish → ail install → ail run",
          "is_bot": false,
          "headline": "feat(packages): add package registry and install workflow",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-13T21:40:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52f0f602e5043c94da1e3bf7a7951f60eae35580",
          "body": "- ail rename: repository-wide identifier rename with semantic awareness\n  - symbol graph scanning, dry-run, diff, string scanning\n  - rollback bundle, compiler verification, safe identifier validation\n- ail watch: automatic incremental recompilation on file changes\n  - filesystem watcher (watchdog), polling fallback\n  - SHA-256 change detection, 200ms debounce\n  - incremental compilation with dependency invalidation\n- 31 tests (19 rename + 12 watch), all passing",
          "is_bot": false,
          "headline": "feat(tooling): add ail rename and ail watch",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-13T21:39:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed5ed20d6dc89bf3f1dd084627f8e988cd7dbd4a",
          "body": "- for-in syntax: for item in collection { body }\n- IR lowering: recursive helper with parameter threading (M27)\n- capture semantics: free variable detection, return-value capture\n- 16 tests: basic iteration + capture semantics\n- architecture docs: design, capture semantics, evaluation report\n- evaluation: 5-8% LOC reduction (below 20% threshold), zero regressions",
          "is_bot": false,
          "headline": "feat(language): add experimental for-loop primitives",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-13T21:38:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45345546b3554a49e652fe4f6e5f7c941abfb43f",
          "body": "- parser: for-in syntax support (M25/M26), declaration improvements\n- IR: for-in lowering with parameter threading and capture semantics (M27)\n- semantic: experimental-loops flag guard, free variable detection\n- runtime: interpreter updates for new IR nodes\n- diagnostics: multi-error collection, source locations\n- stdlib: list.sum, list.find_by_key, string improvements\n- lexer: tokenization fixes, float literal support\n- tests: lexer, module integration, golden files updated",
          "is_bot": false,
          "headline": "feat(compiler): stabilize runtime, diagnostics, and stdlib",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-13T21:37:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "212d875547dd1f0c225ea8adc3452df8ce382cee",
          "body": "- update changelog and development status\n- synchronize roadmap and project memory\n- update package naming references (kebab → snake_case)\n- update VS Code and package manager architecture docs\n- align language evolution records with current implementation",
          "is_bot": false,
          "headline": "docs: synchronize M56 and M57 documentation",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-13T21:29:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b38cd7edc22f0b35b4ef9c08387c5d0f9eaf1f93",
          "body": "- sync extension version to 0.2.0\n- implement code action TextEdits (import stdlib, remove unused variable)\n- add for keyword to grammar and completions\n- add VS Code documentation (INSTALLATION, FEATURES)\n- add M57 completion report",
          "is_bot": false,
          "headline": "feat(vscode): complete M57 VS Code extension hardening",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-13T21:15:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7cba4ef109a5331ed59dc0e07fc38d5884bd3ed7",
          "body": "- resolve snake_case package naming deadlock (kebab accepted with deprecation warning)\n- implement ail add/remove/update/list commands\n- generate ail.toml and ail.lock via ail new\n- add kebab-to-underscore normalization in package resolver\n- add package management documentation (QUICKSTART, PACKAGES, NAMING_POLICY)\n- add 32 tests for naming, ail new, and package commands",
          "is_bot": false,
          "headline": "feat(packages): complete M56 external adoption closure",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-13T21:15:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "25f7f5d7a44394fd3b4f8ded7830220fe3917fdd",
          "body": "…tation\n\nDX Tool Refactoring:\n- ail_benchmark, ail_context, ail_doctor, ail_static_analyzer, ail_package_manager\n  refactored to use ail_platform shared library instead of duplicated local helpers\n- ail_package_manager/manifest.py: uses ail_platform.manifest.find_manifest,\n  adds tomllib fallback fo\n[…]\nstpaths for benchmarks\n- tests/generated/: cleaned up stale auto-generated test files (44 files)\n- tests/test_ail_context.py: updated test count assertion\n\nNew: apps/mini_crm/ (exploratory AILang app)",
          "is_bot": false,
          "headline": "DX-014: Repository cleanup — tooling refactoring, governance, documen…",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-10T14:26:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a23cae6b10267f88792bb80448d24af0b80c5634",
          "body": "v0.9.3 — Complete Engineering Benchmark Program (B1-B7)\n\nFramework (benchmarks/framework/):\n- Generic measurement infrastructure: runner, metrics, environment, reporting\n- Deterministic dataset scanning with SHA-256 metadata\n- Immutable historical results with timestamp-based run IDs\n- Summary aggre\n[…]\ndel comparison results\n- INVENTORY_BENCHMARK_HARNESS.md: B2-B6 execution protocol\n- ENGINEERING_BENCHMARK_PLAN.md: B1-B7 design and methodology\n- DEPENDENCY_ORDERING_ANALYSIS.md: tool design rationale",
          "is_bot": false,
          "headline": "DX-013: Engineering Benchmark Infrastructure & AI Harness",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-10T14:26:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "87d38bffdabb1ff2048455aa53352f0bf18689c4",
          "body": "v0.9.2 — Empirical AILang vs Python head-to-head comparison\n\nComplete Python 3.12 mirror of the AILang Inventory Management System:\n- Same module structure, same function names, same test logic\n- Same PASS/FAIL test format for direct comparison\n- 2,614 LOC app + 3,644 LOC tests = 6,258 LOC total\n- 3\n[…]\ne per function (recursion + unique var names)\n- Both systems exhibit identical data-bleed bugs (fixed identically)\n- AILang eliminates null-pointer, code-injection, implicit-coercion at language level",
          "is_bot": false,
          "headline": "DX-012: Python 3.12 Mirror of Inventory Management System",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-10T14:25:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3ce2f1df71428d8f1167380f82c1d4bbd48493e9",
          "body": "v0.9.1 — Full-featured Inventory Management System in AILang\n\nA comprehensive production-scale AILang application serving as the primary\nvalidation target for the Engineering Benchmark Program (B2-B7):\n\nApplication structure (4,009 LOC app + 4,506 LOC tests = 8,515 total):\n- Product/Category managem\n[…]\nsts passing, 0.219s full build, 0.173s test run\n\nThis is the largest AILang application ever built and validates the language's\nsuitability for real-world CRUD / data-processing applications at scale.",
          "is_bot": false,
          "headline": "DX-011: Inventory AILang Benchmark — 8,515 LOC Reference Application",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-10T14:25:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a8e114e8d11a3d4b711ae92824d476e01e0a6b54",
          "body": "…y_key\n\nv0.9.0 — Engineering Optimization Program (Evidence-Driven Stdlib Evolution)\n\nNew stdlib APIs added per benchmark evidence (≥2 apps requesting each):\n- list.sort(values), list.sort_by_key(values, key) — selection sort via Python native\n- list.copy(values) — shallow copy\n- list.filter_by_key(\n[…]\n2 (CSV pipeline): 3→1 iterations (67% improvement)\n- B2 total: 7→5 iterations (29% improvement)\n- AILang vs Python ratio: 1.38x→1.23x (11% closer)\n\nSee docs/HYPOTHESIS_STATUS.md for evidence tracking.",
          "is_bot": false,
          "headline": "DX-010: Stdlib Expansion — sort, join, copy, get_or_default, filter_b…",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-10T14:24:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "75d9c62737cfd7f6161f797c8a2f118433298008",
          "body": "v0.8.0 — Compiler Diagnostics Improvement Program\n\nCore diagnostics improvements:\n- file:line:col source locations in error messages (previously line number ranges)\n- Spell-check suggestions for undefined identifiers (SEM002) via difflib\n- Multi-error reporting — all lex/parse/semantic errors collec\n[…]\nStream/Parser/TypeChecker all accept source_path parameter\n- CLI extended with ail build --json and ail order subcommands\n\nSee docs/architecture/ARCHITECTURE_DECISIONS.md ADR-009 for design decisions.",
          "is_bot": false,
          "headline": "DX-009: Compiler Diagnostics Improvement",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-10T14:24:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "52694315552f0cfc75b7841ab7e06cfd1ce4b74f",
          "body": "New platform-level shared library providing:\n- diagnostics: shared diagnostic conversion utilities\n- events: event system for tool communication\n- manifest: ail.toml manifest discovery (extracted from package manager)\n- project: project root discovery and file reading utilities\n- report_schema: shar\n[…]\niguration management\n\nAll DX tools (benchmark, context, doctor, static_analyzer, package_manager)\nrefactored to use ail_platform.project.get_project_root() instead of\nduplicated local implementations.",
          "is_bot": false,
          "headline": "feat: add ail_platform shared library",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-10T14:24:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b8c76c5c2e2b0162c84984e642351bcfa5a48d82",
          "body": "- --diff mode: unified diff output for unformatted files\n- --quiet mode: suppress all output, exit code semantics only\n- Directory-wide formatting: recursive .ail discovery with skip logic\n- Comment-only file preservation (no AST children case)\n- Lexer stability: 4 infinite-loop paths fixed\n  (unrec\n[…]\nde string literals like https://)\n- 165/165 valid .ail files pass format + idempotency (0 failures)\n- 82 tests (50 formatter + 32 CLI) — all passing\n- DEVELOPMENT_STATUS.md updated to v0.5.0 milestone",
          "is_bot": false,
          "headline": "DX-008: AILang Formatter v0.5.0 — Phase 3 complete",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T17:12:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ef5bd83dceeba4abd84166ff7de01ee26a60afaf",
          "body": "…ssion tests\n\n- ARCHITECTURE: docs/architecture/FORMATTER_ARCHITECTURE.md defines the\n  canonical formatting specification, current limitations, hardening scope,\n  and stability verification as a permanent release gate.\n- BUG FIX: _parse_to_ast() error reporting filtered out 'Expected SEMICOLON'\n  d\n[…]\nandard):\n  test_error_message_no_semicolon_noise — verifies no SEMICOLON noise\n  test_error_message_includes_real_error — verifies real error is present\n- 29/29 formatter tests + 32/32 CLI tests pass.",
          "is_bot": false,
          "headline": "DX-008: AILang Formatter — SEMICOLON bug fix, architecture doc, regre…",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T16:41:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4dec326b8e7287db68a5139e2151b7cf2cdad117",
          "body": "Two tests verify that error messages from the formatter don't contain\n'Expected SEMICOLON' noise that obscures the real syntax error.\n\ntest_error_message_no_semicolon_noise:\n- Input: fn main() { let x = ; return x; }\n- Expected: error message mentions 'expression' or 'initializer',\n  NOT 'Expected S\n[…]\nctual error, not SEMICOLON\n- Current behavior: PASSES (for this specific input)\n\nBoth tests guard against regression of the formatter's _parse_to_ast()\nerror reporting path (formatter.py lines 76-89).",
          "is_bot": false,
          "headline": "Add regression tests for SEMICOLON error message pollution",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T16:39:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0024fd7b68fec43ff1f2964e092fa66bb892795f",
          "body": "…search, code actions\n\nPhase 1 — Architecture:\n- docs/architecture/LSP_ARCHITECTURE.md: JSON-RPC protocol, workspace model,\n  document lifecycle, diagnostics pipeline, feature modules, performance goals,\n  testing strategy, implementation status, architecture decisions\n\nPhase 2 — Core Infrastructure\n[…]\nchecklist\n- Documentation Ownership Matrix: Added LSP_ARCHITECTURE.md entry\n\nKey principle: No duplicate compiler logic. LSP reuses Lexer -> Parser ->\nASTBuilder -> SemanticAnalyzer pipeline directly.",
          "is_bot": false,
          "headline": "DX-007: AILang Language Server — architecture, consolidation, symbol …",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T15:08:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c4eeb497ec709cd90d3de323bf71b1a512172d1d",
          "body": "Add:\n- tools/ail_package_manager/README.md — tool documentation\n- docs/releases/v0.3.1/RELEASE_VALIDATION.md — full validation checklist\n- CHANGELOG.md — v0.3.1 entries for DX-006 and M16\n- DEVELOPMENT_STATUS.md — DX-006 implementation status table\n\nAll 8 acceptance tests pass.",
          "is_bot": false,
          "headline": "DX-006: Steps 10-11 — Documentation + release validation",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:59:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "706ab4bc7f43ea1737a892a42f93d4ae39029b08",
          "body": "Create tests/dx_tool_006_acceptance_test.py with 8 tests:\n\n- test_validate_package_name: kebab-case validation\n- test_init_creates_project: ail init creates ail.toml, main.ail, ail.lock\n- test_init_refuses_nonempty_dir: safety check\n- test_parse_valid_manifest: correct parsing\n- test_parse_invalid_m\n[…]\n_parsing: all three source types (string, path, git)\n- test_install_local_dep: end-to-end local dependency install\n- test_lock_file_content: lock file schema verification\n\nAll 8 tests pass on Windows.",
          "is_bot": false,
          "headline": "DX-006: Step 9 — Acceptance tests (8/8 pass)",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:58:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f39cdaea554744fe3ed586a7a105b7bdad4e8e39",
          "body": "Implement the package manager core pipeline:\n\n3-4. Local + Git package support (tools/ail_package_manager/cache.py):\n    - Local: resolve path, read manifest, compute checksum\n    - Git: shallow clone, checkout tag/branch/rev, read manifest\n    - Copy to lib/<name>/, clean stale packages\n\n5. Depende\n[…]\nlve → install → lock\n    - Handles --no-lock, --offline, --frozen-lockfile flags\n    - Exit codes per TOOLING_ARCHITECTURE.md conventions\n\nAlso fixed: BOM handling in manifest parser (Windows compat).",
          "is_bot": false,
          "headline": "DX-006: Step 3-8 — Installer, Resolver, Cache, Lock",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:54:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dcf6365a3d7085fbe9bd43d1bfbc1ce39f618057",
          "body": "Implement the first two layers of the AILang Package Manager:\n\n1. Manifest parser (tools/ail_package_manager/manifest.py):\n   - ail.toml parsing via tomllib with full validation\n   - Package name validation (kebab-case, max 64 chars)\n   - Semver validation (MAJOR.MINOR.PATCH)\n   - Dependency parsing\n[…]\n update, list\n   - Exit codes per TOOLING_ARCHITECTURE.md conventions\n   - Argument structure matching PACKAGE_MANAGER_DESIGN.md\n\nPer CTO direction: DX-006 build order starts from ail.toml foundation.",
          "is_bot": false,
          "headline": "DX-006: Step 1-2 — Manifest parser + ail init",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:52:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ada6a16dde2626f692360e3b3c877504f14f040d",
          "body": "- DEVELOPMENT_STATUS.md: Updated milestone to 'AILang Package Manager'\n- Added naming convention note (product names for users, DX numbers internal)\n- Added project maturity (95%)\n- Updated recently completed with DX-006 implementation start\n- PACKAGE_MANAGER_DESIGN.md: DRAFT → APPROVED",
          "is_bot": false,
          "headline": "Update status docs for DX-006 implementation start",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:50:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "edd45c7370fa58b2143fa84941dda611cd355344",
          "body": "- Add Documentation Ownership Matrix to DEVELOPMENT_STATUS.md\n  (15 document types with canonical owners)\n- Add Ownership Matrix reference to Developer Rules\n- Update AUDIT_REPORT.md summary table to reflect M16 completion status\n- Mark R6/R8/R10 as deferred or not-in-scope\n- Add Ownership Matrix to\n[…]\nd)\n- v0.1.0 sprint reports archived (21 files)\n- generated/ added to .gitignore\n- Performance data cross-referenced\n- Language docs assessed (no action needed)\n- Documentation Ownership Matrix created",
          "is_bot": false,
          "headline": "M16: Finalize — Documentation Ownership Matrix + AUDIT_REPORT.md update",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:48:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "75d0cd4fa02550e24957e7149e1e76d503dbcea2",
          "body": "Add canonical-source cross-reference in docs/runtime/optimizations.md\npointing to docs/performance/runtime_optimization_001/analysis.md\nas the authoritative profiling investigation.\n\nPart of M16 Documentation Architecture Cleanup.",
          "is_bot": false,
          "headline": "M16: R7 — Centralize performance documentation",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:46:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04bac2803e0a5df808dce52b38b30e4053276159",
          "body": "- generated/ added to .gitignore\n- 9 tracked files removed from git tracking (git rm --cached)\n- Files remain on disk, regeneratable by DX tools\n\nPart of M16 Documentation Architecture Cleanup.",
          "is_bot": false,
          "headline": "M16: R5 — Add generated/ to .gitignore",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:45:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55bbb118d083c0fc5f4be8fcc639d2adc8b78387",
          "body": "Move 21 historical sprint report files from docs/reports/v0.1.0/\nto docs/archive/v0.1.0/. Content already consolidated in\nDEVELOPMENT_STATUS.md, CHANGELOG.md, and PROJECT_MEMORY.md.\n\nPart of M16 Documentation Architecture Cleanup.",
          "is_bot": false,
          "headline": "M16: R4 — Archive v0.1.0 sprint reports",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:44:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fcdc1afecee36381cd5a56567541b0f1c3466519",
          "body": "Keep AGENTS.md as canonical AI guidance document.\nArchive MASTER_ENGINEERING_PROMPT.md and FOR_FUTURE_AI.md to docs/archive/misc/.\nUpdate AI_MODEL_GUIDE.md to reference AGENTS.md + Playbook instead of Master Prompt.\nUpdate PROJECT_MEMORY.md directory map and historical references.\n\nPart of M16 Documentation Architecture Cleanup.",
          "is_bot": false,
          "headline": "M16: R3 — Consolidate AI guidance",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:44:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9bf13acec34cf306b5cfbb26fdd8f3728676cf8c",
          "body": "Merge four overlapping status documents into one canonical source:\n\n- DEVELOPMENT_STATUS.md — now canonical; absorbs phase definition,\n  forward-looking roadmap, v0.3.1 deliverables, M16 milestone tracking\n- Moved to docs/archive/misc/: PROJECT_PHASE.md, ROADMAP.md, CURRENT_MILESTONE.md\n- Updated RE\n[…]\nreference DEVELOPMENT_STATUS.md\n- Fixed stale milestone reference (DX-005 → DX-006/M16)\n- Added Phase Definition, Forward-Looking Roadmap, M16 sections\n\nPart of M16 Documentation Architecture Cleanup.",
          "is_bot": false,
          "headline": "M16: R2 — Remove status duplication",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:43:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cd7d6ea800aa724e509e579744078c14e6d257d6",
          "body": "Rename docs/adr/ADR-001/002/003 → ADR-010/011/012 to resolve\ncollision with inline ADRs in ARCHITECTURE_DECISIONS.md (which\nuse ADR-001 through ADR-009).\n\n- Renamed files: ADR-001→ADR-010, ADR-002→ADR-011, ADR-003→ADR-012\n- Updated cross-references in RELEASE_VALIDATION.md and AUDIT_REPORT.md\n\nPart of M16 Documentation Architecture Cleanup.",
          "is_bot": false,
          "headline": "M16: R1 — Fix ADR numbering collision",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:41:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf77b187d070adcb758861a0559c2c169a8015a4",
          "body": "Architecture milestone: two design documents created before implementation.\n\nTOOLING_ARCHITECTURE.md:\n- Architecture contract for all DX tools (past, present, future)\n- CLI conventions, exit code policy, JSON/MD report conventions\n- tools/common/ responsibilities and shared utilities\n- Generated fil\n[…]\nil.lock), offline cache, checksum verification\n- Integration with benchmark runner, test generator, LSP, formatter\n- 10 open questions for review before implementation\n\nNo implementation code written.",
          "is_bot": false,
          "headline": "M15: Tooling Architecture & Package Manager Design (pre-DX-006)",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:31:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f11d31277483583c94eb45d5166ec2e3caddb862",
          "body": "…xtensions + stdlib string.find/split\n\n- Mark DX-005 (Test Generator) as Complete & Accepted in status docs\n- Update CHANGELOG.md with DX-005 and tools/common/ entries\n- Update CURRENT_MILESTONE.md to v0.3.1 (DX-006 Package Manager)\n- Update ROADMAP.md to v0.3.0 status with completed milestones\n- Up\n[…]\nto stdlib/string.ail\n- Add hashing.py, discover_apps(), list_py_files() to tools/common/\n- Move DIAGNOSTICS_IMPROVEMENT_REPORT.md to docs/reports/v0.1.0/\n- Various data file and governance doc updates",
          "is_bot": false,
          "headline": "v0.3.0 release documentation: DX-005 Test Generator + tools/common/ e…",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T14:27:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f85fa601e7637ccd151eae7a489808ce4663bc62",
          "body": "- DX-004 ail benchmark: discovery, runner, compare, reporter, CLI\n- 19 new tests (11 acceptance + 4 regression + 4 AI validation)\n- 677 total tests, all passing\n- tools/common/ shared DX tooling library (cli, filesystem, process, reporting)\n- DEVELOPMENT_STATUS.md: DX-004 completed, DX-005 next prio\n[…]\nEMORY.md: M12 (DX-004), M13 (tools/common) milestones added\n- CHANGELOG.md: v0.3.0 release section with DX-004 + quality gates\n- Release validation report at docs/releases/v0.3.0/RELEASE_VALIDATION.md",
          "is_bot": false,
          "headline": "v0.3.0 release: DX-004 Benchmark Runner + tools/common/ shared library",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-07T11:36:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b31b9fda081544620071fea5fdb4ddc9c4cb6c43",
          "body": "…ookup Cache)",
          "is_bot": false,
          "headline": "Merge feature/runtime: v0.2.0 — Runtime Optimization #001 (Variable L…",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-06T21:30:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6377971ac39e3fd3a8879f4b24c20e73c9fc313",
          "body": "Cache binding locations per Environment in _resolve_cache dict.\n~6× speedup on static analyzer benchmark (373s → 19.5s).\n52-64% hit rate across 5 benchmark apps. 102 new regression tests.\nNegative caching removed: assign can create bindings in ancestors.\n_CacheStats instrumentation for profiling. Runtime frozen.\n\n624 tests passing (522 existing + 102 new).",
          "is_bot": false,
          "headline": "feat(runtime): lexical variable lookup cache — v0.2.0",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-06T21:30:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61537178b1ac77c7adb97f1192b2be39d9999e2b",
          "body": "- Track stdlib/ (16 .ail files + __init__.py)\n- Track examples/ (18 .ail files + 10 patterns)\n- Track .github/ (CI workflow, issue/PR templates)\n- Track extensions/vscode-ailang/ (VS Code extension)\n- Track essential docs (INSTALLATION, LANGUAGE_TOUR, STDLIB_REFERENCE, etc.)\n- Track compiler/lsp/ (L\n[…]\nencies] dev\n- Clean up stale git tags (v0.7.0, v0.7.0-rc1)\n- Remove obsolete specifications/ directory (superseded by LANGUAGE_SPEC.md)\n- Remove obsolete pytest_output.txt\n- Expand .gitignore patterns",
          "is_bot": false,
          "headline": "AILang v0.1.2 packaging and distribution",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-06T16:06:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "08f846fc76a92a024dfdfdaee9b1a563cba18f6f",
          "body": "…mated regression check\n\n- Added 20 new examples: banking, student_records, salary_calc, library_mgr,\n  shopping_cart, invoice_gen, payroll, electricity_bill, income_tax, bmi_calc,\n  loan_emi, currency_converter, age_calc, attendance, voting_eligibility,\n  num_stats, password_validate, date_validate\n[…]\n\n- Integrated dynamic validation runner in tests/test_validation.py to automatically\n  compile and run all main.ail files under examples/\n- All 159 tests passed; black, ruff, and mypy checks are clean",
          "is_bot": false,
          "headline": "feat(validation-sprint-3): add 20 compiler validation examples + auto…",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-04T14:07:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bb03eaf04cf8f0d6a36f898b0417e027d002d0a3",
          "body": "Per CTO review: these programs validate compiler features (functions,\nvariables, if/else, comparisons, return, print) using hardcoded data.\nThey are NOT real applications. Real applications require a standard\nlibrary (file I/O, sockets, string ops) which does not yet exist.\n\nChanges:\n- tests/test_va\n[…]\ne on what stdlib capability is required for a real implementation\n- docs/CURRENT_MILESTONE.md: update to reflect Validation Sprint 2\n  completion, naming rationale, bug found/fixed, and next milestone",
          "is_bot": false,
          "headline": "docs: rename 'Real Applications' to 'Compiler Validation Examples'",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-04T13:49:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6630c94c05c0a8a6e84c9c75d13f98d75ac507bb",
          "body": "…LI auto-print bug\n\n- Add 10 example programs: word_counter, text_search, config_loader,\n  json_parser, csv_reader, ini_parser, markdown_parser, file_copy,\n  http_client, dir_tree\n- Fix: compiler/cli/main.py was printing the return value of main()\n  (e.g. return 0) as if it were program output; all CLI output must\n  come from print() builtins only\n- Regression test: test_regression_main_return_value_not_printed_by_cli\n- All 158 tests pass; black, ruff, mypy all clean",
          "is_bot": false,
          "headline": "feat(validation-sprint-2): add 10 real-world example programs + fix C…",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-04T13:43:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17b99fc53756025ea8b9701d342aee3f619c94c3",
          "body": null,
          "is_bot": false,
          "headline": "test(validation): add 15 real-world program validation tests",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-04T00:02:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3db2f2a3c8316b3011b461949b65c8d5966a9e1d",
          "body": null,
          "is_bot": false,
          "headline": "test(validation): add real-world program validation tests",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-03T23:52:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de0b3a8c1b25bf6eb58485b480cc4c5fc6929cd1",
          "body": null,
          "is_bot": false,
          "headline": "fix(runtime): handle callable built-ins and module function access",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-03T23:34:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b66801c8f2863983e2a87685c2420ba16609fc4",
          "body": null,
          "is_bot": false,
          "headline": "feat(module-resolution): add MOD002 duplicate import diagnostic",
          "author_name": "Alec Khan",
          "author_login": null,
          "committed_at": "2026-07-03T23:27:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 8,
      "commits_last_year": 136,
      "latest_release_at": "2026-07-29T21:27:22Z",
      "latest_release_tag": "v1.1.8",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 4,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 2.1
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": false,
      "has_contributing": true,
      "health_percentage": 85,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "ailang-lang",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [
            "programming-language",
            "compiler",
            "ai",
            "business-applications",
            "deterministic",
            "Development Status :: 4 - Beta",
            "Intended Audience :: Developers",
            "License :: OSI Approved :: Apache Software License",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.11",
            "Topic :: Software Development :: Compilers"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/ailang-lang/",
          "is_deprecated": false,
          "latest_version": "1.1.8",
          "repository_url": "https://github.com/akpersonal4/ailang-lang-AILang",
          "versions_count": 21,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-07-14T19:52:36.527697Z",
          "latest_published_at": "2026-07-29T21:27:32.453578Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 0,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_stars": 0,
        "collected_at": null
      },
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "compiler/py.typed"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 80378,
      "source_files_sampled": 404,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        "AGENTS.md",
        "compiler/docs/AGENTS.md"
      ],
      "agent_instruction_max_bytes": 8537
    },
    "dependencies": {
      "manifests": [
        "benchmarks/setup.py",
        "pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "watchdog",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 0,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "akpersonal4",
          "commits": 52,
          "avatar_url": "https://avatars.githubusercontent.com/u/192571394?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "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": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 8,
            "reason": "2 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "69b009f6f410609ebe5d65944e78bf6d54a2788b",
        "ran_at": "2026-07-29T21:31:21Z",
        "aggregate_score": 3.2,
        "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-29T21:27:03Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/akpersonal4/ailang-lang-AILang",
    "host": "github.com",
    "name": "ailang-lang-AILang",
    "owner": "akpersonal4"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 48,
      "inputs": {
        "security": 32,
        "vitality": 70,
        "community": 43,
        "governance": 28,
        "engineering": 67
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 70,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "commits_last_year": 136,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 4
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "4/52 weeks with commits",
                "points": 2.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "136 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 136
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 8,
              "latest_release_tag": "v1.1.8",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 2.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "8 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~2.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2.1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 43,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 0,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "0 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "critical",
        "name": "Sustainability & Governance",
        "value": 28,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "critical",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution",
                    "pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "no decided pull requests or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_decided_prs_or_data",
                    "params": {}
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "critical",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 19,
            "inputs": {
              "followers": 0,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "akpersonal4",
              "public_repos": 1,
              "account_age_days": 583
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of akpersonal4",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "akpersonal4"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "1 public repos, account ~1 yr old",
                "points": 5.4,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 1
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 1
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "ailang-lang"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "21 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 21
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 67,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "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": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 32,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 32,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 3.2
            },
            "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "2 existing vulnerabilities detected",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          }
        ],
        "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": 64,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.81,
              "agent_instruction_files": [
                "AGENTS.md",
                "compiler/docs/AGENTS.md"
              ],
              "agent_instruction_max_bytes": 8537
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, compiler/docs/AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, compiler/docs/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": "81 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 81,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 43,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "compiler/py.typed"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "compiler/py.typed",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "compiler/py.typed"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 80378,
              "source_files_sampled": 404,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python with type-check config (compiler/py.typed)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "compiler/py.typed",
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/404 source files over 60KB",
                "points": 54.9,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 404,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "moderate",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
    "deps.dev does not index pypi:ailang-lang@1.1.8; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-29T21:31:27.032160Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/akpersonal4/ailang-lang-AILang.svg",
  "full_name": "akpersonal4/ailang-lang-AILang",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

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

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

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