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

reggie-db / dbx-tools

dbx-tools monorepo

TypeScriptSin licencia detectada★ 0 estrellas⑂ 0 forksdesde may 2026Ver en GitHub ↗

reggie-db/dbx-tools tiene un índice de salud de 46 sobre 100, lo que lo sitúa en la banda En riesgo. Su puntuación más alta es Engineering Quality (74/100) y la más baja, Community & Adoption (19/100). Se actualizó por última vez hace 3 días. Una sola persona concentra la mayor parte del trabajo reciente.

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

46
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

reggie-dbCuenta personal
0 seguidores21 repositorios públicosdesde jul 2025

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ón
npm@dbx-tools/projen0.1.1621hace 6 días

Métricas por categoría

Vitalidad

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

68Moderado · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 3 días
1.4/36Cadencia de commits — 2/52 semanas con commits
18/18Volumen de commits — 157 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_year157
human_commit_share1
days_since_last_push3
active_weeks_last_year2
Cómo se puntúa
16.2/27Publica versiones — 46 etiquetas de versión (sin releases de GitHub)
36/36Recencia de las versiones — última versión hace 5 días
27/27Cadencia de publicación — una versión cada ~0 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count46
latest_release_tagv0.3.20
releases_from_tags
days_since_latest_release5
mean_days_between_releases0
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

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

19Crítico · 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
0/22.5Licencia — no se detectó ningún archivo de licencia
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_licenseno
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_template
Cómo se puntúa
24/80Descargas mensuales — 62 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packages@dbx-tools/projen
dependents
ecosystemsnpm
total_downloads
monthly_downloads62
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

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

27Crí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 reggie-db
11.7/25Trayectoria — 21 repos públicos, cuenta de ~0 años
Datos de entrada utilizados
followers0
owner_typeUser
is_verified
owner_loginreggie-db
public_repos21
account_age_days360
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 npm
35/35Recencia de publicación — última publicación hace 6 días
4/20Historial de versiones — 1 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packages@dbx-tools/projen
ecosystemsnpm
any_deprecatedno
min_days_since_publish6

Calidad de Ingeniería

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

74Bueno · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 5 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — .eslintrc.json
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
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
10/10Descripción del repositorio
0/10Topics
0/10Wiki
Datos de entrada utilizados
topics
has_wikino
homepage
has_readme
has_docs_dir
has_description

Seguridad

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

38En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
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
0/2.5Licencia — license file not detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — sin datos
6/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate3,8
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, signed_releases. Los pesos restantes se han renormalizado.

Preparación para IA

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

68Moderado · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — .cursor/rules/dbx-tools-agents.mdc, AGENTS.md, CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 98 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,98
agent_instruction_files.cursor/rules/dbx-tools-agents.mdc, AGENTS.md, CLAUDE.md
agent_instruction_max_bytes44.406
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
11/11Configuración de lint / formato — .eslintrc.json
11/11Verificación estática de tipos — projen/test/tsconfig.json, projen/tsconfig.json, tsconfig.json, workspaces/cli/appkit-env/tsconfig.json, workspaces/cli/dbx-tools/test/tsconfig.json, workspaces/cli/dbx-tools/tsconfig.json, workspaces/cli/model-proxy/tsconfig.json, workspaces/node/appkit-mastra/tsconfig.json, workspaces/node/appkit-web-search/tsconfig.json, workspaces/node/appkit/tsconfig.json, workspaces/node/core/tsconfig.json, workspaces/node/databricks-zerobus/tsconfig.json, workspaces/node/databricks/tsconfig.json, workspaces/node/email/tsconfig.json, workspaces/node/genie/tsconfig.json, workspaces/node/model/tsconfig.json, workspaces/node/path/test/tsconfig.json, workspaces/node/path/tsconfig.json, workspaces/shared/core/test/tsconfig.json, workspaces/shared/core/tsconfig.json, workspaces/shared/email/tsconfig.json, workspaces/shared/genie/tsconfig.json, workspaces/shared/mastra/tsconfig.json, workspaces/shared/model/tsconfig.json, workspaces/shared/sdk-model/tsconfig.json, workspaces/ui/appkit/tsconfig.json, workspaces/ui/branding/test/tsconfig.json, workspaces/ui/branding/tsconfig.json, workspaces/ui/email/tsconfig.json, workspaces/ui/mastra/tsconfig.json
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
lockfilespnpm-lock.yaml
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configsprojen/test/tsconfig.json, projen/tsconfig.json, tsconfig.json, workspaces/cli/appkit-env/tsconfig.json, workspaces/cli/dbx-tools/test/tsconfig.json, workspaces/cli/dbx-tools/tsconfig.json, workspaces/cli/model-proxy/tsconfig.json, workspaces/node/appkit-mastra/tsconfig.json, workspaces/node/appkit-web-search/tsconfig.json, workspaces/node/appkit/tsconfig.json, workspaces/node/core/tsconfig.json, workspaces/node/databricks-zerobus/tsconfig.json, workspaces/node/databricks/tsconfig.json, workspaces/node/email/tsconfig.json, workspaces/node/genie/tsconfig.json, workspaces/node/model/tsconfig.json, workspaces/node/path/test/tsconfig.json, workspaces/node/path/tsconfig.json, workspaces/shared/core/test/tsconfig.json, workspaces/shared/core/tsconfig.json, workspaces/shared/email/tsconfig.json, workspaces/shared/genie/tsconfig.json, workspaces/shared/mastra/tsconfig.json, workspaces/shared/model/tsconfig.json, workspaces/shared/sdk-model/tsconfig.json, workspaces/ui/appkit/tsconfig.json, workspaces/ui/branding/test/tsconfig.json, workspaces/ui/branding/tsconfig.json, workspaces/ui/email/tsconfig.json, workspaces/ui/mastra/tsconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — TypeScript (tipado estático)
54.8/55Tamaños de archivo manejables — 1/220 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageTypeScript
largest_source_bytes61.159
source_files_sampled220
oversized_source_files1
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — example
Datos de entrada utilizados
example_dirsexample
has_mcp_signalno
api_schema_files

Datos clave

0estrellas de GitHub
1contribuidores
157commits en los últimos 12 meses
3días desde el último push
46versiones publicadas
1factor bus
0issues abiertas
npmecosistemas 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 npm:@dbx-tools/projen@0.1.1; advisories assessed against the repository dependency graph instead

Más detalle

OpenSSF Scorecard 3.8 / 10
3.8agregado

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-24 13:52 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
0Licenselicense file not detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
8Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Dependencias directas 17
RegistroPaqueteRestricción de versiónManifiesto
npm@clack/prompts^1.7.0projen/package.json
npm@dbx-tools/core^0.0.0projen/package.json
npm@dbx-tools/path^0.0.0projen/package.json
npm@dbx-tools/shared-core^0.0.0projen/package.json
npm@typescript-eslint/typescript-estree^8projen/package.json
npmcommander^15.0.0projen/package.json
npmconsola^3.4.2projen/package.json
npmconstructs^10.6.0projen/package.json
npmis-identifier^1projen/package.json
npmopenapi-typescript^7.13.0projen/package.json
npmoxc-parser^0.90.0projen/package.json
npmp-memoize^8.0.0projen/package.json
npmprojen^0.101.6projen/package.json
npmts-to-zod^5.1.0projen/package.json
npmtsoa^6.6.0projen/package.json
npmtsx^4.23.0projen/package.json
npmyaml^2.9.0projen/package.json
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": 3023,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "CSS": 4322,
        "Python": 4502,
        "JavaScript": 4243,
        "TypeScript": 1528807
      },
      "pushed_at": "2026-07-20T18:57:52Z",
      "created_at": "2026-05-12T06:11:33Z",
      "owner_type": "User",
      "updated_at": "2026-07-20T18:58:00Z",
      "description": "dbx-tools monorepo",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": null,
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "User",
      "login": "reggie-db",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/223471755?v=4",
      "created_at": "2025-07-29T11:56:25Z",
      "is_verified": null,
      "public_repos": 21,
      "account_age_days": 360
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.3.20",
          "kind": "patch",
          "published_at": "2026-07-19T01:17:57Z"
        },
        {
          "tag": "v0.3.19",
          "kind": "patch",
          "published_at": "2026-07-19T01:17:52Z"
        },
        {
          "tag": "v0.3.18",
          "kind": "patch",
          "published_at": "2026-07-19T00:29:04Z"
        },
        {
          "tag": "v0.3.17",
          "kind": "patch",
          "published_at": "2026-07-19T00:22:33Z"
        },
        {
          "tag": "v0.3.16",
          "kind": "patch",
          "published_at": "2026-07-19T00:07:27Z"
        },
        {
          "tag": "v0.3.15",
          "kind": "patch",
          "published_at": "2026-07-18T23:51:28Z"
        },
        {
          "tag": "v0.3.14",
          "kind": "patch",
          "published_at": "2026-07-18T23:37:46Z"
        },
        {
          "tag": "v0.3.13",
          "kind": "patch",
          "published_at": "2026-07-18T23:12:30Z"
        },
        {
          "tag": "v0.3.12",
          "kind": "patch",
          "published_at": "2026-07-18T22:47:50Z"
        },
        {
          "tag": "v0.3.11",
          "kind": "patch",
          "published_at": "2026-07-18T22:37:23Z"
        },
        {
          "tag": "v0.3.10",
          "kind": "patch",
          "published_at": "2026-07-18T22:15:53Z"
        },
        {
          "tag": "v0.3.9",
          "kind": "patch",
          "published_at": "2026-07-18T21:57:41Z"
        },
        {
          "tag": "v0.3.8",
          "kind": "patch",
          "published_at": "2026-07-18T21:35:07Z"
        },
        {
          "tag": "v0.3.7",
          "kind": "patch",
          "published_at": "2026-07-18T19:46:46Z"
        },
        {
          "tag": "v0.3.6",
          "kind": "patch",
          "published_at": "2026-07-18T19:18:16Z"
        },
        {
          "tag": "v0.3.5",
          "kind": "patch",
          "published_at": "2026-07-18T18:52:51Z"
        },
        {
          "tag": "v0.3.4",
          "kind": "patch",
          "published_at": "2026-07-18T18:25:16Z"
        },
        {
          "tag": "v0.3.3",
          "kind": "patch",
          "published_at": "2026-07-18T17:27:46Z"
        },
        {
          "tag": "v0.3.2",
          "kind": "patch",
          "published_at": "2026-07-18T17:20:45Z"
        },
        {
          "tag": "v0.3.1",
          "kind": "patch",
          "published_at": "2026-07-18T17:01:54Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-07-18T17:01:20Z"
        },
        {
          "tag": "v0.1.24",
          "kind": "patch",
          "published_at": "2026-07-18T16:40:41Z"
        },
        {
          "tag": "v0.1.23",
          "kind": "patch",
          "published_at": "2026-07-18T16:03:17Z"
        },
        {
          "tag": "v0.1.22",
          "kind": "patch",
          "published_at": "2026-07-17T22:04:12Z"
        },
        {
          "tag": "v0.1.21",
          "kind": "patch",
          "published_at": "2026-07-17T21:55:38Z"
        },
        {
          "tag": "v0.1.20",
          "kind": "patch",
          "published_at": "2026-07-17T21:49:31Z"
        },
        {
          "tag": "v0.1.19",
          "kind": "patch",
          "published_at": "2026-07-17T21:33:02Z"
        },
        {
          "tag": "v0.1.18",
          "kind": "patch",
          "published_at": "2026-07-17T17:56:10Z"
        },
        {
          "tag": "v0.1.17",
          "kind": "patch",
          "published_at": "2026-07-17T17:42:46Z"
        },
        {
          "tag": "v0.1.16",
          "kind": "patch",
          "published_at": "2026-07-17T17:42:30Z"
        },
        {
          "tag": "v0.1.15",
          "kind": "patch",
          "published_at": "2026-07-17T17:39:30Z"
        },
        {
          "tag": "v0.1.14",
          "kind": "patch",
          "published_at": "2026-07-17T17:37:32Z"
        },
        {
          "tag": "v0.1.13",
          "kind": "patch",
          "published_at": "2026-07-17T17:35:52Z"
        },
        {
          "tag": "v0.1.12",
          "kind": "patch",
          "published_at": "2026-07-17T17:34:59Z"
        },
        {
          "tag": "v0.1.11",
          "kind": "patch",
          "published_at": "2026-07-17T17:30:16Z"
        },
        {
          "tag": "v0.1.10",
          "kind": "patch",
          "published_at": "2026-07-17T17:13:38Z"
        },
        {
          "tag": "v0.1.9",
          "kind": "patch",
          "published_at": "2026-07-17T16:15:20Z"
        },
        {
          "tag": "v0.1.8",
          "kind": "patch",
          "published_at": "2026-07-17T16:12:36Z"
        },
        {
          "tag": "v0.1.7",
          "kind": "patch",
          "published_at": "2026-07-17T16:02:51Z"
        },
        {
          "tag": "v0.1.6",
          "kind": "patch",
          "published_at": "2026-07-17T15:58:36Z"
        },
        {
          "tag": "v0.1.5",
          "kind": "patch",
          "published_at": "2026-07-17T15:56:20Z"
        },
        {
          "tag": "v0.1.4",
          "kind": "patch",
          "published_at": "2026-07-17T15:54:03Z"
        },
        {
          "tag": "v0.1.3",
          "kind": "patch",
          "published_at": "2026-07-17T15:31:01Z"
        },
        {
          "tag": "v0.1.2",
          "kind": "patch",
          "published_at": "2026-07-17T15:27:05Z"
        },
        {
          "tag": "v0.1.1",
          "kind": "patch",
          "published_at": "2026-07-17T14:55:26Z"
        },
        {
          "tag": "v0.0.1",
          "kind": "patch",
          "published_at": "2026-07-13T22:13:07Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "a17f351e50027f33e6901adcb0b980154ff104a9",
          "body": "…o scrape fallback\n\nTwo failures surfaced running web_search in a workspace with no GPT/Gemini\nendpoints deployed:\n\n1. The resolver fuzzy-matched hardcoded fallback ids and returned the literal\n   id even when it wasn't in the catalogue, so the call hit \"endpoint does not\n   exist\" on every attempt.\n[…]\nesult markup. Verified: 10 real citations for the dairy-stockouts\n   query.\n\nDocs: README scrape-fallback + live-resolution notes, config env, modules;\nAGENTS.md gotcha updated.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "fix(appkit-web-search): resolve against live catalogue; add DuckDuckG…",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-20T18:57:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9eeecf4b4d3e48eeaecac3590286044abca25e82",
          "body": "…ix API-docs 404s; wire demo\n\nweb_search now uses the Databricks Model Serving NATIVE web-search tool\ninstead of scraping DuckDuckGo: the model searches server-side and returns a\nsynthesized answer plus citations. Key behavior:\n\n- Resolves its OWN web-search-capable model independently of the callin\n[…]\nion (native tool, own-model\nresolution, provider tool-spec map, citations), AGENTS.md package area +\noverlap + two gotchas (native web search, absolute docs links), root README.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "feat(appkit-web-search): back web_search on Databricks native tool; f…",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-20T16:28:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2f7ad789326aa5690a65bc746963104aa720dd6a",
          "body": "…a charts\n\nAdd @dbx-tools/appkit-web-search - a server-side web-search add-on in the\nsame shape as node-email (Mastra tools + AppKit plugin priming a shared\nruntime), since AppKit ships no web-search or page-fetch surface:\n\n- web_search: metasearch via duck-duck-scrape (the Node counterpart to the\n \n[…]\npackage table / feature list),\nappkit-mastra README \"Brand The Charts\", and AGENTS.md package areas, native\noverlap guidance, and gotchas for both the add-on and chart branding.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "feat(appkit-web-search): add web search/fetch add-on; brand the mastr…",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-20T15:53:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "66ec2bd305f0df240070a7c98dbf0e6d8f138990",
          "body": "TypeDoc --flattenOutputFiles emits dotted, mixed-case page names\n(Namespace.databricks.md, databricks.TypeAlias.ContextLike.md). Starlight\nslugifies routes to lowercase with dots stripped, so every generated\ncross-link (which kept the original name) resolved to a nonexistent route -\na sitewide 404 o\n[…]\noute. Also strip TypeDoc's\n\"## References\" section from each package index - a list of Re-exports [X]\nentries that only re-link symbols already documented under their namespace.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "fix(docs): make generated API routes resolve and drop re-export noise",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-19T01:36:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c1c4080b28b6e9f72e9381c745090bc7316df161",
          "body": "Co-authored-by: Isaac",
          "is_bot": false,
          "headline": "docs(email): document optional email branding",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-19T01:22:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fb2fc758cb6c72872fd43cd1d0fce1208713b746",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.20",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-19T01:17:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "24a1b28386d22d7cbab209c702098f5a9a121f05",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.19",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-19T01:17:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a957bffd1705e92d1a162a85c53865b5e952e5b3",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.18",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-19T00:29:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7be33a321a36e3bcc239c9bb09776381f81e7acf",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.17",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-19T00:22:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a43fba83728d97c3081ba7b91c5d1683b940b2c8",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.16",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-19T00:07:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92d364c0fffca3045ed211f210c4f4d8083de8e8",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.15",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T23:51:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0550535f93d8bc75a60f982a41b269906ccf00d6",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.14",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T23:37:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7aa5c6a9c6a34d1ea4e7723263b0872ac3ed7b57",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.13",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T23:12:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dfefc179fe0c5466ea8cb640057439294c0f63c1",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.12",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T22:47:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "095654a692a0d6c00e0b329c7b6a97b56edd69db",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.11",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T22:37:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "acb6c0601107c97e09775fd309bfb932db24c8eb",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.10",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T22:15:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c10742bfcbaf0acff9f3a253d3d953bf04a72d18",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.9",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T21:57:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a41721bf28d7687ace2ba24ac5a65327c4e4ed7",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.8",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T21:35:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1dd720d313d8d522c58fcaa918716770c0fed75",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.7",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T19:46:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8560533bb1dad0e784e23b5706522ddf7bf10025",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.6",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T19:18:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa105e19e6552724f16e92c9fb47749f9276b021",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.5",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T18:52:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb69da7b53dfcb28d4ee516909d88ca859ced85d",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.4",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T18:25:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab03b9e83c7a31959be21d3e55d16d012f2bf7eb",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.3",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T17:27:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2550b11be89b0e17410379c995ac23d074b4fdf",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.2",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T17:20:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1b4a007f1a370a770c63419826ddf4e6617244a3",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.1",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T17:01:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dbe4c2bce8eaf85e6d93df55967e01a4cd12c5af",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.3.0",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T17:01:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c759c865645a5fc00583cd44349615ee57ad2018",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.2.0",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T16:59:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "876e5013f11e7fdb047445105cfb05bcfea2bfe9",
          "body": "…lish\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "docs(agents): document export pdf/print/brand + model display-name po…",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T16:41:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52ad86be76fb839392b203ba79c16b43d9abf0e5",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.24",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T16:40:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f10e4835df2d34084785c1f9c61e9e9df695c99a",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.23",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-18T16:03:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "446520220981a0fa013b5f3c450bcc002c0d5b90",
          "body": "…iles\n\nValidated end-to-end that the demo folder can be copied to an empty dir and\nbrought up with `dbxtools sync` + a client build (`vite build` -> servable\ndist/). Fixes found along the way:\n\nCLI / bootstrap:\n- `resolvePnpmArgv`: prefer a bare `pnpm` on PATH before the corepack/npx\n  fallbacks, so\n[…]\ntsconfigs, pnpm-workspace,\n  .projen/*, vite.config.ts, .eslintrc) so the committed demo is hand-authored\n  source only; force-track the hand-authored `.npmrc` + `.env.example`.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "feat(cli): make a copied demo synth + build; untrack demo generated f…",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T22:52:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c2cbd7b48d602e2d1613e264c40de0b8b865fa33",
          "body": null,
          "is_bot": false,
          "headline": "feat(brand): add reusable brand context and assets",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T22:47:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b8154515195a3d2b0615f37c9be13f555268e59",
          "body": "…gnores generated files\n\nThree changes that together make the demo copyable-and-runnable, simulating a\nreal `dbxtools sync` consumer:\n\n- CLI: `dbxtools sync` now seeds the toolchain (engine + projen + tsx) when a\n  folder has a `.projenrc.ts` but no installed engine - not just when bootstrapping\n  f\n[…]\nore - so the committed demo\n  is hand-authored source only and a copied folder regenerates everything via\n  sync. Track the engine at `*` to follow the latest published version.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "feat(projen): sync bootstraps toolchain; engine synth via tsx; demo i…",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T22:34:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e47524ec81f79ca276c04123d55617dec165c78f",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.22",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T22:04:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c017eb5c13f7b39dedffe8d941c6490151f050d6",
          "body": "`@dbx-tools/projen` is consumed as TypeScript source (its `main`/`exports` and\nthe task scripts all point at `.ts`, run via tsx), but it shipped only the\ncompiled `lib/` - projen's generated `.npmignore` excludes `/src/`. So the\npublished `index.ts` re-exported `./src/barrels` etc. that weren't in t\n[…]\n alongside the .projenrc.ts change because this\nproject's own synth is currently blocked by an unrelated ts-node ESM error;\nthe two stay consistent on the next successful synth.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "fix(projen): publish the engine's TS source via a files allowlist",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T22:03:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "27dfacfa09eed3176fce18c98122ba3409260e16",
          "body": "Synth output after `autoDetectBin: false` (committed in the 0.1.21 release):\nthe CLI manifest drops the spurious `dbxtools.ts` bin that projen's bin\nauto-detection had added from the executable `bin/dbxtools.ts`, leaving only\nthe explicit `dbxtools` entry. Fixes `ERR_PNPM_DLX_MULTIPLE_BINS`.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "chore(projen): regenerate cli manifest without auto-detected .ts bin",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T22:00:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e320e0363eef7a6d3438e3629251ad5767f955c",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.21",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T21:55:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "658711d0d0c312a08ca61fcbf6cbeff2ea16c4d0",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.20",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T21:49:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "91afaacb9f97a3092f53ea4550079f03bc78100d",
          "body": "The bump task's local (verdaccio) publish ran `pnpm -r publish` while each\nworkspace package.json still held its projen-generated `version: 0.0.0` - only\nthe ROOT manifest was bumped - so every package published as 0.0.0 and\n`pnpm dlx @dbx-tools/x@<version>` 404'd.\n\nMirror the CI `release` workflow:\n[…]\n*` pins to it. No restore step - the next `projen` synth rewrites\nthese projen-owned manifests back to 0.0.0; the release version is carried by\nthe git tag, not the child files.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "fix(projen): stamp release version on every package before local publish",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T21:48:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3e15eec87f55e6d83925945c64f78a17f5b39b82",
          "body": "Tag defaults already carry the common `exports` surface (the `cli` tag gives\n`.` + `./package.json`; the `ui` tag gives `./react` + `./styles.css` +\n`./package.json`). A package that only ADDS a subpath had to re-declare the\nwhole map because `applyExports` replaces the field wholesale.\n\nAdd `addExp\n[…]\ng the tag defaults.\n\nui-appkit's `./vite` moves one position (grouped after the tag defaults);\nsemantically identical - exports resolution is exact-key, and no subpaths\noverlap.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "feat(projen): add addExports merge helper for additive subpaths",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T21:42:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a0f14b59a1f6c9e15c5e1290a91d9d55ba7dbee7",
          "body": "The `projen-release` workflow (publishing the standalone `@dbx-tools/projen`\nengine that lives in `projen/`, a non-workspace-member, on its own `projen-v*`\ntag) was hand-authored in .projenrc.ts. Move it into the engine's\n`DBXToolsRelease` component, gated by the same `project.github` check as the\nr\n[…]\nithubWorkflow block (and now-unused imports).\n- projen-release.yml is now a projen-tracked generated file (added to\n  files.json); its workflow body is byte-identical to before.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "feat(projen): author standalone-project release workflows in the engine",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T21:37:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "06645158aef7082784a010bad0ca0c06fc98168c",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.19",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T21:33:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ade04d6e96243ed212e76ab643a50baded4762d",
          "body": "Replace the hand-authored `mixin.create(pkg(...))` per-package rules in both\n.projenrc.ts files with the ergonomic `project.applyToProjects(root, {...},\ncb)` API, which builds one AND-ed predicate from name/scope/tag/path filters\n(globs, `!`-negatable) and applies it via `construct.with(...)`.\n\nEngi\n[…]\nteStream-typed `ctx.options.stdout`), fixing a tsc regression from the\n  consola-factory memoization.\n\nSynth output is byte-for-byte identical for all 21 workspace package.json.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "refactor(projen): applyToProjects front-end + identifier predicates",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T21:32:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "672980b8254dc37094f6923dd4ec6d0c75933145",
          "body": "The docs workflow was the only one using `--frozen-lockfile` and had never\nsucceeded: CI's frozen check rejects the committed lockfile at the first\ninstall step. release.yml and build.yml already install with\n`--no-frozen-lockfile`; align docs.yml with that established pattern so the\nbuild can proceed to generate and deploy the Pages site.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "ci(docs): install with --no-frozen-lockfile to match release/build",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T20:00:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d461f327c5772f6cb5b85fef8bb7d91c6c8380d",
          "body": "The docs deploy as a project GitHub Page under `/dbx-tools/`. Starlight\nauto-prefixes the base onto sidebar links and built assets, but NOT onto\nabsolute links written into generated markdown bodies or the llms text files,\nso those 404'd on the deployed site.\n\n- Add a `base` (matching astro.config `\n[…]\nll` so GitHub Pages serves Astro's `_astro/` asset dir\n  instead of stripping underscore-prefixed paths.\n\nLocal/dev builds (no GITHUB_REPOSITORY) keep base-less links unchanged.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "fix(docs): make generated links base-aware and disable Jekyll for Pages",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T19:55:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "775ce607738e631152b86e6cb21edb5262b145d5",
          "body": "The consola factory does the expensive work (dynamic `consola` import, env\nchecks, `createConsola` setup, import/throw fallback). Wrap it in `memoize`\nso that runs once and later calls share the resolved factory (or resolved\n`undefined`); a rejection is evicted so a later call retries. Hoist the stable\n`globalProcessStdErr` to module scope since the factory no longer takes it.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "perf(shared-core): memoize the consola logger factory",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T19:48:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a8323cf88002c3700f4e1b4f5b6fe8a4ea28d9c2",
          "body": "Extract the shared `value_from`/`valueFrom` resolve chain (warehouse id ->\nGenie space id -> Postgres endpoint/database/branch) into a single\n`resolveResourceValue` helper used by both `flattenAppYamlEnv` and\n`flattenAppEnv`, whose resource shapes match. No behavior change.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "refactor(appkit): dedupe env-resolution in config flatteners",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T19:24:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ac6084f5a8960121a64879c55bcd00c7a7f3ee58",
          "body": "Documentation:\n- Drop stale `@dbx-tools/node-*` prefix across all READMEs, root README, and\n  AGENTS.md to match the real published package names (node/* dropped the\n  `node-` prefix). Fix `appkit-email`->`email` and `shared-file-scan`->`path`.\n- Fix broken `/projen` engine links (engine lives at to\n[…]\n- Adopt object.sequence() chains for scope union (server.ts), sample-question\n  dedupe (space.ts), model fallback dedupe (resolve.ts), and approval-gated\n  tool ids (agents.ts).\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "docs: fix package-name drift; merge iterable into object; adopt sequence",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T19:22:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6b8c118e7ca4ccf4c9bc8200fd092d52b0679cfa",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.18",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T17:56:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "936557dc16b9e4dd75f86a29e202730440eb9d50",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.17",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T17:42:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01dafe038af8d359ab41c19b79924ab61b5cff16",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.16",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T17:42:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75c18e35dabfe4e7685e19520c6d7943c6e17a94",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.15",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T17:39:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6bf9ae1719a98adf9295f56b4c8f81e81abd10ed",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.14",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T17:37:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26479e20e15dd3c0ed3b3aaf4a1831c8c4f1915d",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.13",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T17:35:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bcccce247152f5c97a642da045dd3ec2921d1bc7",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.12",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T17:34:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dcc55763db52519520b902c4b4a616e9027fc378",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.11",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T17:30:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "58d7f3e0f68ff47c4f3f56e6dddd3495f29cfce6",
          "body": "isLoopbackHost is a networking predicate, so it belongs in shared-core's\nnet module alongside parseIp/ipInCidr/urlBuilder - not in core's\nproject.ts. Move it there (net.isLoopbackHost) and repoint the bump task's\n--local-registry auto-detection to it.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Move isLoopbackHost into net (its natural home)",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T17:26:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f44128a2a3414506567bd71789354875f71879d",
          "body": "Add `--local-registry <value>` to `projen bump` (false | url | auto,\ndefault auto). After the git tag is pushed (which fires the GitHub release\nfor public npm), it also publishes the just-bumped version to a LOCAL\nregistry via `pnpm -r publish --registry <url>` - so a local `pnpm run\nbump` populates\n[…]\nwd?)` (reads `npm config\nget registry` as a UrlBuilder, cached via the shared command cache) and\n`project.isLoopbackHost(url)` (localhost / 127.0.0.0/8 / ::1, via\nnet.ipInCidr).\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "bump: --local-registry to publish to a local registry after the tag push",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T17:24:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "88054332b453ab838dd9a827357075661cfc3b42",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.10",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T17:13:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f7bf28e655143338091697edfd70638aa4be57d",
          "body": "Replace the ad-hoc `join(\"\\0\")` key + separate cwd tracking with a stable\nhash.fnvHash of the full (command, args, cwd) tuple. cwd is now part of\nthe key, so a one-off lookup in another directory can't collide with the\ndefault-cwd entry - and the cache map/value shrink to a plain\nkey -> ParsedCommand.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "core: key the command cache with fnvHash(command, args, cwd)",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T16:46:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89a2ca9aee721313c84f5e67c4b4106e85b9614b",
          "body": "Extract the best-effort fs.stat helper out of project.ts into a dedicated\nfile.ts (file-specific utility, exported as file.statSync); project.ts and\nthe two consumers (databricks/cloud, appkit/config) import it from there.\n\nparseCommand now classifies stdout into { output, path, pathStats, url }\nwhe\n[…]\nhedCommand memoizes the whole ParsedCommand per\n(command,args,cwd) - a single cache; repositoryUrl reuses it and leans on\nUrlBuilder for the credential-strip + host-alias edits.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "core: move stat into file.ts; url stored as UrlBuilder in one cache",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T16:44:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e27c2b9a3073be31b567ddc68420079f6049e686",
          "body": "…s,url}\n\nReplace directoryCommand with parseCommand, which classifies a command's\nstdout into a filesystem path (+ fs.stat) and/or a URL, and cache the whole\nParsedCommand per (command, args, cwd) via cachedCommand. npmRoot/gitRoot/\nname/repositoryUrl all route through it (one cache, no per-helper c\n[…]\nlassification requires a non-blank scheme that is not `file:` AND a\nnon-blank hostname, so bare paths, scp-like `git@host:...` remotes, and\n`file:` URLs are not misread as URLs.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "core: generalize command runner to parseCommand {output,path,pathStat…",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T16:35:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "939e3abb27b0371ae2f68483ee377ae3dce382e0",
          "body": "The gh/git repo-URL resolution was reinvented in projen with its own\nad-hoc cache. Put it where the other project-root helpers live:\ncore/project.ts now exports repositoryUrl(cwd?, format?) - tries\n`gh repo view --json url` first (host-accurate, no ssh-alias parsing),\nfalls back to a normalized `git\n[…]\nository just calls coreProject.repositoryUrl(repoRoot,\n\"npm\"); its bespoke DetectedRepository/detectRepository and the\nrepositoryUrl/resolveSshHostName in workspace.ts are gone.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Move repo-URL detection into @dbx-tools/core, share its cache",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T16:31:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ad75e9d5d3f3b2d3545d10ff5c5a3a181928914e",
          "body": "Consolidate the split repository-URL logic (repositoryUrl +\nresolveSshHostName in workspace.ts, plus the detectedRepositoryUrl cache\nin project.ts) into one memoized detectRepository() in project.ts that\ncaches { cwd, path, url }.\n\nPrimary path is `gh repo view --json url` - it returns the clean\ncan\n[…]\nizing `git config remote.origin.url`\n(scp/ssh/git rewrite + `ssh -G` host-alias resolution) when gh is\nabsent/unauthenticated. Export capturedStdout from workspace.ts for reuse.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Detect repo URL via `gh repo view` first, git-config as fallback",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T16:27:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b9bdf2960feab6b2e22ffa42987e3bce2f456554",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.9",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T16:15:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41851a5d38dd6462b8b7b277e2660cf6091cd6b5",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.8",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T16:12:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "996757e66befd623f4e8b5507c878d3fe705223e",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.7",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T16:02:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5dc1b05babb9e64324112ccee78d49a3f38ebb63",
          "body": "`projen bump` now runs `projen` (synth) before computing the version, so\nthe release commit captures an up-to-date tree instead of a stale one\n(new `--synth` toggle, default on, negatable with `--no-synth`). The\ncommit step stages the full tree with `git add -A` (version bump + any\nsynth-regenerated files) and no-ops when nothing changed. Push still\ntargets the CURRENT branch via `git push origin HEAD`.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "bump: synth first, and commit the whole tree before tag/push",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T16:01:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b7ae1b15caf38180b6224af21ac6f311fa34632c",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.6",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T15:58:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3cca871827dab172d7c25f827ebf6c3b2883f7f5",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.5",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T15:56:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7030530ce5f646c45eb0ec204e6e4d7108854570",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.4",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T15:54:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c45af5363ab5d1947a8814eeaa002cba2b165f5",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.3",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T15:31:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e917c61ab1f8f008b9b1ece6673a1f7e4188d57f",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 0.1.2",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T15:27:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5545702821be503207e8c044403cb6e78b17e21",
          "body": "…eases\n\nRemove the bespoke publish machinery (packForRelease / buildFromTag /\npublish, the release:tag CI task, the release.yml retargeting in\nDBXToolsRelease, and tasks/publish.ts). Both the root and the standalone\nprojen/ project now release the same way: a hand-authored, tag-driven\nGitHub workflo\n[…]\no-publish as a --no-push alias), plus --level\npatch|minor|major.\n\nCut a release with `pnpm exec projen bump` (add --level minor, or\n--no-publish to stage a tag without pushing).\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Replace custom publish logic with a shared bump task + tag-driven rel…",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T15:25:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b94f7717204bf473451576017f553eab389a7d35",
          "body": "The workflow ran `pnpm release`, whose bump step computes the NEXT version\nfrom the last tag - so pushing projen-v1.2.3 would have published 1.2.3+1.\nMatch the root's tag-as-version model instead: strip the projen-v prefix,\nset package.json to exactly that version (unlocking the projen-readonly\nmanifest first), pack, and publish. The published version now always\nequals the pushed tag.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Make projen-release workflow tag-driven (tag == published version)",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T14:55:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "438c82e9052e0bd010cb25605619f9afee1b51f6",
          "body": "Turn on projen's built-in release machinery for the standalone engine\nproject (bump / changelog / pnpm pack via `release`, `bump`, `unbump`\ntasks) with `release: true` + `releaseToNpm: true` and a `projen-v` tag\nprefix so it never collides with the root's own `v*` release tags.\n\nKeep `github: false`\n[…]\npmfile.cjs / pnpm-workspace.yaml / projenrc\nfrom the published tarball via .npmignore (verified: they no longer ship,\nand deps resolve as normal npm ranges, not the local link).\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Enable projen-native release + npm publish for @dbx-tools/projen",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T14:45:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ee227a79a5e0ea9bd0ff54a37bd36ce34382750b",
          "body": null,
          "is_bot": false,
          "headline": "docs: avoid duplicate generated page titles",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T14:45:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8ff39a60cdedeb27fb134e809f2fbf8c49bc0f8",
          "body": null,
          "is_bot": false,
          "headline": "env export",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T14:41:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5677ced2df32c1f759b02db676996503cca0cf36",
          "body": null,
          "is_bot": false,
          "headline": "docs: switch pages site to starlight",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T14:40:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4fe2b35e95aa3c95186265664c8507ba66b2aff8",
          "body": "…kages\n\nNew DBXToolsNodeProject option `omitRelativePrefix` (OneOrMany<string>,\ndefault \"node\"): a leading path segment dropped from a discovered package's\nrelative path before its npm name is derived, so a tier folder doesn't become\na name prefix. The package's TAG still derives from the full path.\n[…]\nath, ...). Renamed all nine packages and\nupdated every import + workspace dep + the engine's own util deps and\n.pnpmfile link keys, the root pkg() predicate globs, and the demo.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Add omitRelativePrefix engine option; drop node- prefix from node pac…",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T14:32:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "72210ddb0c992f34bfa584b1efee2ef3cbb26f4a",
          "body": "The standalone engine project no longer needs the `dev-` prefix; `projen/`\nreads cleanly and doesn't collide with the npm `projen` package (which lives\nunder node_modules). Update the repo `.pnpmfile.cjs` link target, the engine's\nown link-hook comment, and the root .projenrc references.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Rename dev-projen/ to projen/",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T14:17:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49b310b276dc77d9a872de2eface5651446e6588",
          "body": "The engine (@dbx-tools/projen) was dogfooded as a workspace package, so the\nroot's own synth depended on the engine it builds - a bootstrap cycle that\nrepeatedly stripped deps mid-synth.\n\nMove it to dev-projen/: a standalone VANILLA-projen TypeScript project (it no\nlonger self-hosts on the engine it\n[…]\ngit rename.\n\nResult: root synth + full workspace compile are clean with the engine external,\nand dev-projen synths/tests on its own without touching the product packages'\nbuild.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Move projen engine out of the workspace into standalone dev-projen/",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T14:13:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4946c7984ec5a8a4e9fc0bb9b2db8878318928a6",
          "body": "Remove the throwaway example-workspaces seeds and .example.projenrc.ts;\nthe root synth now only manages workspaces/.\n\nAdd demo/ - a standalone, self-contained sample app that is its own\nprojen root and its own pnpm workspace, consuming the @dbx-tools/*\npackages from a registry (verdaccio now, npm la\n[…]\n.yaml /\ndatabricks.yml / appkit.plugins.json ship with the server package.\nREADMEs lead with how little code the app takes - a ~30-line plugin list\nand a one-line <MastraChat/>.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Replace example-workspaces with a standalone demo Databricks App",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T13:59:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "03758a2c0f391ef429ec18cc057b151e93279134",
          "body": null,
          "is_bot": false,
          "headline": "docs: add generated pages site",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T13:44:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0bfb1d33b9b62091677f3241100ced110f79bfad",
          "body": null,
          "is_bot": false,
          "headline": "docs: add reusable agent instructions",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T13:36:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03f0dcfeb6eead12a8348871b4599c01405f94a7",
          "body": null,
          "is_bot": false,
          "headline": "docs: clarify native appkit overlap",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T13:07:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0b04a1ab96f171f6864fc043181dd778db71eb3",
          "body": null,
          "is_bot": false,
          "headline": "docs: document mastra ui package",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T13:01:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc1b034bd3b3962217d84f1f7d866fd5710638eb",
          "body": "The full Mastra chat UI: the self-contained MastraChat drop-in + its\nuseMastraChat driver, the controlled ChatView shell, MastraPluginClient\nand hooks (model catalogue, history paging, suggestions, inline\nchart/statement embeds), markdown + data-grid + ECharts rendering, and\nconversation-thread mana\n[…]\nlide).\n\nThe non-React helpers live in src/support/ rather than src/lib/, since\nthe compile outDir is `lib` and projen's `**/lib/**` gitignore would\notherwise swallow the source.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Port appkit-mastra-ui to @dbx-tools/ui-mastra",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T12:54:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aa1e4391f775d7d82074cea6387d5a094b705ffa",
          "body": null,
          "is_bot": false,
          "headline": "readmes",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T03:54:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc94574f2fde4b5c4892d8725248bd805336de6b",
          "body": "The `.` + `./package.json` (cli, app) and `./react` + `./styles.css` +\n`./package.json` (ui component library) export surfaces were repeated in\neach package mixin. Move them into the tag mixins via a new applyExports\nhelper (whole-field replace, so a package that deviates still wins). The\n`app` tag \n[…]\nroot; a package with extra\nsubpaths (dbx-tools' ./pnpm, ui-appkit's ./vite) re-declares its full map.\n\nNo package.json changes - the tag defaults reproduce the existing exports.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Fold standard exports maps into the cli/ui/app tags",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T03:51:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ca5c0aa854732e5e864d252bfe0bb57daebe06f1",
          "body": "The barrel generator no longer shells out to barrelsby. We already\nenumerated src modules (find.findFiles), decided which export\n(typescript-estree hasExport), derived namespaces, hoisted unique types\n(oxc-parser), and merged exports.ts overrides ourselves - barrelsby only\nprinted a flat `export * f\n[…]\nble compose view) behind\na ./react subpath. Repoints @databricks/appkit-ui -> @dbx-tools/ui-appkit,\nappkit-email-shared -> shared-email, netUtils.parseEmails -> net.parseEmails.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Drop barrelsby; generate barrels directly, and port appkit-email-ui",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T03:47:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a01a99bba455e61fd26d8ec45da5897a00a20d6f",
          "body": "The `./react` subpath export pointed at src/react/index.ts but the file\nwas never committed. Re-add it: it re-exports @databricks/appkit-ui/react\nso the feature UI packages import primitives through one specifier.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Restore ui-appkit ./react barrel re-exporting AppKit's UI kit",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T03:29:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ea4c3f46c2bb928b104670ad5e3d0e84fb13d08",
          "body": "The `ui` tag now models a React component LIBRARY (react/react-dom +\nDOM lib + jsx, default tsc typecheck) like @databricks/appkit-ui, so\nsource-first UI packages consumed by apps no longer force `vite build`.\nA new `app` tag layers the vite toolchain (dev/build/preview +\nViteConfigFile) for full br\n[…]\n/styles.css), re-exporting AppKit's UI kit + a React/Tailwind\nvite plugin preset. Tag the two example ui apps `app` via\nworkspacePackageTagPaths so they keep building with vite.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Split ui tag into ui (component library) + app (vite browser app)",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T03:28:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9b06425302aae188045ff093bfb87aac7ce99873",
          "body": "The package is the filesystem path toolkit - glob find, ignore rules, path\nmatching, package scan, and watch - not just file matching. Move\nworkspaces/node/file-scan -> workspaces/node/path and rename\n@dbx-tools/node-file-scan -> @dbx-tools/node-path. Only the projen engine\nconsumed it, so the repoint (8 imports + the mixin selector + doc comments) is\ncontained. Barrel/exports unchanged.\n\nAll 19 packages compile; synth + barrels idempotent; engine drives synth fine.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Rename node-file-scan to @dbx-tools/node-path",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T03:12:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b4fbe7c0e0dba9f4094d2ea68f11bc337a659fa",
          "body": "The engine had its own consola-backed src/log.ts. Point it at shared-core's\n`log` instead and delete the duplicate:\n- Added `success` / `start` (consola sugar) to shared-core's `Logger` type;\n  the console fallback routes them to info-level output, the consola sink uses\n  its native methods.\n- Moved\n[…]\n peer so the\nengine's output stays pretty). All 19 packages compile; 68 tests pass; synth +\nbarrels idempotent (verified the engine drives synth + tasks through the new\nlogger).\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Make projen engine use shared-core log; delete its own log.ts",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T03:08:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9e601734c91b4fcf6c5ee4bca676939269ba8bcd",
          "body": "…de migration\n\nPort -js appkit-mastra -> @dbx-tools/node-appkit-mastra (workspaces/node/appkit-\nmastra, node-tagged): the full AppKit Mastra agent layer - 24 modules\n(plugin/server/agents/model/genie/memory/mcp/observability/chart/history/threads/\nsummarize/statement/workspaces/...). Kept as ONE pac\n[…]\ner).\n\nServer-side migration complete: every non-UI -js package is ported. Only the\nReact -ui packages remain. All 19 packages compile; 68 tests pass; synth +\nbarrels idempotent.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Port appkit-mastra as @dbx-tools/node-appkit-mastra; finish server-si…",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T03:00:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8ca913f54b946d76489abaa521d4344e4edc538f",
          "body": "Browser-safe zod wire contract + embed-marker grammar + route segments for the\nMastra add-on's clientConfig surface. Renamed protocol.ts -> wire.ts per the\nnaming rule. Repoints: GenieChatEventSchema -> shared-genie genieModel.*;\nServingEndpointSummarySchema -> shared-model model.*; genie/model types hoist\nflat. Deps: zod + shared-genie + shared-model.\n\nCompiles; synth + barrels idempotent.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Port appkit-mastra-shared as @dbx-tools/shared-mastra",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T02:40:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d05a9446eb770676c728d125fdc66456c110743",
          "body": "New @dbx-tools/node-databricks (workspaces/node/databricks, node-tagged): generic\nDatabricks/cloud infra with no AppKit requirement.\n- workspace: getWorkspaceUrl / getWorkspaceId (AppKit exec-ctx client when\n  present, else a default WorkspaceClient, else env) - ported from -js api.ts.\n- cloud: prov\n[…]\npoint) + createStream. Uses the Zerobus SDK directly + node-databricks\nfor region resolution; no AppKit dep.\n\nAll 17 packages compile; 68 tests pass; synth + barrels idempotent.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Add @dbx-tools/node-databricks; port zerobus as node-databricks-zerobus",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T02:36:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ea50dede2ac87458e5ffadd276ad557609e0f775",
          "body": "…kit-email\n\nappkit-config added no deps beyond @databricks/appkit (already in node-appkit),\nso fold its modules (create-app, lakebase-resolver, pgaddress, provision) into\nnode-appkit as the `createApp` auto-config surface. Internal cross-package\nimports become sibling imports (./config, ./databricks\n[…]\ngger. New catalog pins marked + @mastra/core. AppKit +\nMastra are runtime deps.\n\nAll 15 packages compile; 68 tests pass; synth + barrels idempotent; both bins\n(--help) verified.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Fold appkit-config into node-appkit; extract appkit-env CLI; port app…",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T02:29:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "867d4b3a165a8a31354eefb38652c7ce11314cce",
          "body": "…stem\n\nPort -js appkit-config -> @dbx-tools/node-appkit-config (workspaces/node/,\nnode-tagged; ships appkit-config-env bin). A drop-in createApp that resolves\nLakebase Postgres (env/config/Lakebase REST, with reverse-lookup / pick /\nauto-create) and grants the AppKit cache schema before delegating t\n[…]\nEnv -> databricks.isAppEnv; stringUtils -> string.\n@databricks/appkit is a runtime dep. bin --help verified.\n\nAll 14 packages compile; 68 tests pass; synth + barrels idempotent.\n\nCo-authored-by: Isaac",
          "is_bot": false,
          "headline": "Port appkit-config as @dbx-tools/node-appkit-config; add config subsy…",
          "author_name": "Reggie Pierce",
          "author_login": "reggie-db",
          "committed_at": "2026-07-17T02:16:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 46,
      "commits_last_year": 157,
      "latest_release_at": "2026-07-19T01:17:57Z",
      "latest_release_tag": "v0.3.20",
      "releases_from_tags": true,
      "days_since_last_push": 3,
      "active_weeks_last_year": 2,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 0
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@dbx-tools/projen",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": null,
          "registry_url": "https://www.npmjs.com/package/@dbx-tools/projen",
          "is_deprecated": false,
          "latest_version": "0.1.1",
          "repository_url": null,
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 2,
          "monthly_downloads": 62,
          "first_published_at": "2026-07-17T15:04:16.885000Z",
          "latest_published_at": "2026-07-17T15:04:17.224000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        }
      ]
    },
    "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": 3
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "example"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "projen/test/tsconfig.json",
        "projen/tsconfig.json",
        "tsconfig.json",
        "workspaces/cli/appkit-env/tsconfig.json",
        "workspaces/cli/dbx-tools/test/tsconfig.json",
        "workspaces/cli/dbx-tools/tsconfig.json",
        "workspaces/cli/model-proxy/tsconfig.json",
        "workspaces/node/appkit-mastra/tsconfig.json",
        "workspaces/node/appkit-web-search/tsconfig.json",
        "workspaces/node/appkit/tsconfig.json",
        "workspaces/node/core/tsconfig.json",
        "workspaces/node/databricks-zerobus/tsconfig.json",
        "workspaces/node/databricks/tsconfig.json",
        "workspaces/node/email/tsconfig.json",
        "workspaces/node/genie/tsconfig.json",
        "workspaces/node/model/tsconfig.json",
        "workspaces/node/path/test/tsconfig.json",
        "workspaces/node/path/tsconfig.json",
        "workspaces/shared/core/test/tsconfig.json",
        "workspaces/shared/core/tsconfig.json",
        "workspaces/shared/email/tsconfig.json",
        "workspaces/shared/genie/tsconfig.json",
        "workspaces/shared/mastra/tsconfig.json",
        "workspaces/shared/model/tsconfig.json",
        "workspaces/shared/sdk-model/tsconfig.json",
        "workspaces/ui/appkit/tsconfig.json",
        "workspaces/ui/branding/test/tsconfig.json",
        "workspaces/ui/branding/tsconfig.json",
        "workspaces/ui/email/tsconfig.json",
        "workspaces/ui/mastra/tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 61159,
      "source_files_sampled": 220,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        ".cursor/rules/dbx-tools-agents.mdc",
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 44406
    },
    "dependencies": {
      "manifests": [
        "package.json",
        "projen/package.json"
      ],
      "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": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@clack/prompts",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.7.0"
        },
        {
          "name": "@dbx-tools/core",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.0.0"
        },
        {
          "name": "@dbx-tools/path",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.0.0"
        },
        {
          "name": "@dbx-tools/shared-core",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.0.0"
        },
        {
          "name": "@typescript-eslint/typescript-estree",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8"
        },
        {
          "name": "commander",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^15.0.0"
        },
        {
          "name": "consola",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.4.2"
        },
        {
          "name": "constructs",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.6.0"
        },
        {
          "name": "is-identifier",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1"
        },
        {
          "name": "openapi-typescript",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.13.0"
        },
        {
          "name": "oxc-parser",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.90.0"
        },
        {
          "name": "p-memoize",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.0.0"
        },
        {
          "name": "projen",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.101.6"
        },
        {
          "name": "ts-to-zod",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.1.0"
        },
        {
          "name": "tsoa",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.6.0"
        },
        {
          "name": "tsx",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.23.0"
        },
        {
          "name": "yaml",
          "manifest": "projen/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.9.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": 3,
        "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": "reggie-db",
          "commits": 157,
          "avatar_url": "https://avatars.githubusercontent.com/u/223471755?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "build.yml",
        "docs.yml",
        "projen-release.yml",
        "pull-request-lint.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".eslintrc.json"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "pnpm-lock.yaml"
      ],
      "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": 0,
            "reason": "license file not 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": 10,
            "reason": "packaging workflow 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": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 8,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "a17f351e50027f33e6901adcb0b980154ff104a9",
        "ran_at": "2026-07-24T13:52:20Z",
        "aggregate_score": 3.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-20T19:01:58Z",
      "oldest_open_prs": [
        {
          "number": 1,
          "created_at": "2026-07-17T15:14:07Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2,
          "created_at": "2026-07-17T15:23:58Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 3,
          "created_at": "2026-07-17T15:27:05Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": null,
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/reggie-db/dbx-tools",
    "host": "github.com",
    "name": "dbx-tools",
    "owner": "reggie-db"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 46,
      "inputs": {
        "security": 38,
        "vitality": 68,
        "community": 19,
        "governance": 27,
        "engineering": 74
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 68,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "commits_last_year": 157,
              "human_commit_share": 1,
              "days_since_last_push": 3,
              "active_weeks_last_year": 2
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 3 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 3
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "2/52 weeks with commits",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 2
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "157 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 157
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "releases_count": 46,
              "latest_release_tag": "v0.3.20",
              "releases_from_tags": true,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "46 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 46
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~0 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 19,
        "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": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 32,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "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": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "at_risk",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 30,
            "inputs": {
              "packages": [
                "@dbx-tools/projen"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 62
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "62 downloads/month across npm",
                "points": 24,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 62,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "critical",
        "name": "Sustainability & Governance",
        "value": 27,
        "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": 27,
            "inputs": {
              "followers": 0,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "reggie-db",
              "public_repos": 21,
              "account_age_days": 360
            },
            "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 reggie-db",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "reggie-db"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "21 public repos, account ~0 yr old",
                "points": 11.7,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 21
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "good",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "packages": [
                "@dbx-tools/projen"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 6
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 6 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "1 published versions",
                "points": 4,
                "status": "partial",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 74,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "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": 80,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "5 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "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": ".eslintrc.json",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.json"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 38,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 38,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 3.8
            },
            "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 not detected",
                "points": 0,
                "status": "missed",
                "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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "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 not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "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": 68,
        "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.98,
              "agent_instruction_files": [
                ".cursor/rules/dbx-tools-agents.mdc",
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 44406
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".cursor/rules/dbx-tools-agents.mdc, AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".cursor/rules/dbx-tools-agents.mdc, AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "98 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 98,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "projen/test/tsconfig.json",
                "projen/tsconfig.json",
                "tsconfig.json",
                "workspaces/cli/appkit-env/tsconfig.json",
                "workspaces/cli/dbx-tools/test/tsconfig.json",
                "workspaces/cli/dbx-tools/tsconfig.json",
                "workspaces/cli/model-proxy/tsconfig.json",
                "workspaces/node/appkit-mastra/tsconfig.json",
                "workspaces/node/appkit-web-search/tsconfig.json",
                "workspaces/node/appkit/tsconfig.json",
                "workspaces/node/core/tsconfig.json",
                "workspaces/node/databricks-zerobus/tsconfig.json",
                "workspaces/node/databricks/tsconfig.json",
                "workspaces/node/email/tsconfig.json",
                "workspaces/node/genie/tsconfig.json",
                "workspaces/node/model/tsconfig.json",
                "workspaces/node/path/test/tsconfig.json",
                "workspaces/node/path/tsconfig.json",
                "workspaces/shared/core/test/tsconfig.json",
                "workspaces/shared/core/tsconfig.json",
                "workspaces/shared/email/tsconfig.json",
                "workspaces/shared/genie/tsconfig.json",
                "workspaces/shared/mastra/tsconfig.json",
                "workspaces/shared/model/tsconfig.json",
                "workspaces/shared/sdk-model/tsconfig.json",
                "workspaces/ui/appkit/tsconfig.json",
                "workspaces/ui/branding/test/tsconfig.json",
                "workspaces/ui/branding/tsconfig.json",
                "workspaces/ui/email/tsconfig.json",
                "workspaces/ui/mastra/tsconfig.json"
              ],
              "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": ".eslintrc.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "projen/test/tsconfig.json, projen/tsconfig.json, tsconfig.json, workspaces/cli/appkit-env/tsconfig.json, workspaces/cli/dbx-tools/test/tsconfig.json, workspaces/cli/dbx-tools/tsconfig.json, workspaces/cli/model-proxy/tsconfig.json, workspaces/node/appkit-mastra/tsconfig.json, workspaces/node/appkit-web-search/tsconfig.json, workspaces/node/appkit/tsconfig.json, workspaces/node/core/tsconfig.json, workspaces/node/databricks-zerobus/tsconfig.json, workspaces/node/databricks/tsconfig.json, workspaces/node/email/tsconfig.json, workspaces/node/genie/tsconfig.json, workspaces/node/model/tsconfig.json, workspaces/node/path/test/tsconfig.json, workspaces/node/path/tsconfig.json, workspaces/shared/core/test/tsconfig.json, workspaces/shared/core/tsconfig.json, workspaces/shared/email/tsconfig.json, workspaces/shared/genie/tsconfig.json, workspaces/shared/mastra/tsconfig.json, workspaces/shared/model/tsconfig.json, workspaces/shared/sdk-model/tsconfig.json, workspaces/ui/appkit/tsconfig.json, workspaces/ui/branding/test/tsconfig.json, workspaces/ui/branding/tsconfig.json, workspaces/ui/email/tsconfig.json, workspaces/ui/mastra/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "projen/test/tsconfig.json, projen/tsconfig.json, tsconfig.json, workspaces/cli/appkit-env/tsconfig.json, workspaces/cli/dbx-tools/test/tsconfig.json, workspaces/cli/dbx-tools/tsconfig.json, workspaces/cli/model-proxy/tsconfig.json, workspaces/node/appkit-mastra/tsconfig.json, workspaces/node/appkit-web-search/tsconfig.json, workspaces/node/appkit/tsconfig.json, workspaces/node/core/tsconfig.json, workspaces/node/databricks-zerobus/tsconfig.json, workspaces/node/databricks/tsconfig.json, workspaces/node/email/tsconfig.json, workspaces/node/genie/tsconfig.json, workspaces/node/model/tsconfig.json, workspaces/node/path/test/tsconfig.json, workspaces/node/path/tsconfig.json, workspaces/shared/core/test/tsconfig.json, workspaces/shared/core/tsconfig.json, workspaces/shared/email/tsconfig.json, workspaces/shared/genie/tsconfig.json, workspaces/shared/mastra/tsconfig.json, workspaces/shared/model/tsconfig.json, workspaces/shared/sdk-model/tsconfig.json, workspaces/ui/appkit/tsconfig.json, workspaces/ui/branding/test/tsconfig.json, workspaces/ui/branding/tsconfig.json, workspaces/ui/email/tsconfig.json, workspaces/ui/mastra/tsconfig.json"
                    }
                  }
                ],
                "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": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 61159,
              "source_files_sampled": 220,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/220 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 220,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "example"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "example",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "example"
                    }
                  }
                ],
                "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 npm:@dbx-tools/projen@0.1.1; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-24T13:52:25.145968Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/reggie-db/dbx-tools.svg",
  "full_name": "reggie-db/dbx-tools",
  "license_state": "absent",
  "license_spdx": null
}

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

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

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