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

jeduden / mdsmith

fast, auto-fixing Markdown linter and formatter. Checks style, readability, structure, and cross-file integrity.

GoLicencia propia★ 10 estrellas⑂ 1 forkdesde feb 2026Ver en GitHub ↗

jeduden/mdsmith tiene un índice de salud de 70 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es AI Readiness (92/100) y la más baja, Community & Adoption (35/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

70
global / 100
Bueno

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

70
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

Jan-Eric DudenCuenta personal
26 seguidores99 repositorios públicosdesde oct 2011

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

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
Gogithub.com/jeduden/mdsmithv0.54.0-64hace 1 día
PyPImdsmith0.54.0133446hace 1 díadocsformatterlintermarkdownmdsmith

Métricas por categoría

Vitalidad

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

85Excelente · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
17.3/36Cadencia de commits — 25/52 semanas con commits
18/18Volumen de commits — 3548 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year3548
human_commit_share0,98
days_since_last_push0
active_weeks_last_year25
Cómo se puntúa
27/27Publica versiones — 63 versiones publicadas
36/36Recencia de las versiones — última versión hace 1 días
27/27Cadencia de publicación — una versión cada ~4,8 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count63
latest_release_tagv0.54.0
releases_from_tagsno
days_since_latest_release1
mean_days_between_releases4,8

Comunidad y Adopción

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

35En riesgo · 18% del índice global
Cómo se puntúa
15.5/60Estrellas — 10 estrellas
0/25Forks — 1 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks1
stars10
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
16.9/22.5Licencia — archivo de licencia presente, no es una licencia reconocida
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
41.7/80Descargas mensuales — 1334 descargas/mes en go, pypi
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesgithub.com/jeduden/mdsmith, mdsmith
dependents
ecosystemsgo, pypi
total_downloads
monthly_downloads1334
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?

61Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
4/22.5Distribución de commits — el principal contribuyente firma el 82% de los commits
4.1/13.5Amplitud de contribuyentes — 3 contribuyentes
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Datos de entrada utilizados
bus_factor1
contributors_sampled3
top_contributor_share0,823
Cómo se puntúa
46.8/46.8Resolución de issues — 100% de issues cerradas
36.7/38.3Aceptación de PR — 707/737 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/11 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs707
open_issues0
closed_issues31
issue_closed_ratio1
closed_unmerged_prs30
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
10.3/25Alcance del propietario — 26 seguidores de jeduden
25/25Trayectoria — 99 repos públicos, cuenta de ~14 años
Datos de entrada utilizados
followers26
owner_typeUser
is_verified
owner_loginjeduden
public_repos99
account_age_days5403
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 — 2 paquete(s) en go, pypi
35/35Recencia de publicación — última publicación hace 1 días
20/20Historial de versiones — 64 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesgithub.com/jeduden/mdsmith, mdsmith
ecosystemsgo, pypi
any_deprecatedno
min_days_since_publish1

Calidad de Ingeniería

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

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

Documentación

100Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://mdsmith.dev/
10/10Descripción del repositorio
10/10Topics — 14 topics
10/10Wiki
Datos de entrada utilizados
topicsgolang, linter, markdown, ai-generated-code, ai-generated-content, formatter, go, readme, specification, style, spec-driven, spec-driven-development, extension-vscode, lsp-server
has_wiki
homepagehttps://mdsmith.dev/
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?

76Bueno · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
3.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 13 out of 13 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/11 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
5/5Fuzzing — project is fuzzed
2.2/2.5Licencia — license file detected
7.5/7.5Maintained — 30 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
4.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 9
5/5SAST — SAST tool is run on all commits
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
0/7.5Vulnerabilities — 14 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate7
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
0/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories5
affected_packages4
assessed_packages405
unassessed_packages14
affected_by_severityhigh 3, unknown 1
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos, Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejaron 405 dependencias resueltas con OSV. 14 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido o fuera de la lista de paquetes informada. Este repositorio no publica ningún paquete que el índice resuelva, por lo que se evaluó en su lugar el grafo de dependencias del repositorio. Ese grafo mezcla fijaciones de desarrollo y prueba con las dependencias distribuidas, de modo que solo se puntúan las dependencias declaradas en tiempo de ejecución; los hallazgos transitivos se informan como contexto y quedan excluidos de la puntuación. No se analiza la alcanzabilidad.

Preparación para IA

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

92Excelente · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — .github/copilot-instructions.md, .github/instructions/code-review.instructions.md, AGENTS.md, CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 97 de 98 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,99
agent_instruction_files.github/copilot-instructions.md, .github/instructions/code-review.instructions.md, AGENTS.md, CLAUDE.md
agent_instruction_max_bytes32.785
Cómo se puntúa
12.6/18Arranque con un solo comando — go.mod, tools/go.mod (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
11/11Configuración de lint / formato — .golangci.yml
11/11Verificación estática de tipos — editors/obsidian/tsconfig.json, editors/vscode/tsconfig.json, npm/mdsmith/tsconfig.json
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 66 de los últimos 100 commits con autoría o crédito de agente
8/8Mantenimiento automatizado — 2 de los últimos 100 commits son actualizaciones automáticas de dependencias
9/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 9
Datos de entrada utilizados
has_nixno
has_tests
lockfilesgo.sum, package-lock.json
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configseditors/obsidian/tsconfig.json, editors/vscode/tsconfig.json, npm/mdsmith/tsconfig.json
agent_commit_share0,66
toolchain_manifestsgo.mod, tools/go.mod
dependency_bot_commit_share0,02
Cómo se puntúa
45/45Código verificable por tipos — Go (tipado estático)
54.6/55Tamaños de archivo manejables — 10/1428 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageGo
largest_source_bytes401.894
source_files_sampled1428
oversized_source_files10

Datos clave

10estrellas de GitHub
3contribuidores
3548commits en los últimos 12 meses
0días desde el último push
63versiones publicadas
1factor bus
0issues abiertas
Go, PyPIecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Más detalle

OpenSSF Scorecard 7.0 / 10
7.0agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-27 15:45 UTC

10Binary-Artifactsno binaries found in the repo
5Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests13 out of 13 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/11 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
10Fuzzingproject is fuzzed
9Licenselicense file detected
10Maintained30 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
9Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 9
10SASTSAST tool is run on all commits
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
0Vulnerabilities14 existing vulnerabilities detected
Dependencias directas 29
RegistroPaqueteRestricción de versiónManifiesto
Gogithub.com/bmatcuk/doublestar/v4v4.10.0go.mod
Gogithub.com/hexops/gotextdiffv1.0.3go.mod
Gogithub.com/mattn/go-runewidthv0.0.24go.mod
Gogithub.com/neurosnap/sentencesv1.1.2go.mod
Gogithub.com/pelletier/go-tomlv1.9.5go.mod
Gogithub.com/spf13/pflagv1.0.10go.mod
Gogithub.com/stretchr/testifyv1.11.1go.mod
Gogithub.com/tetratelabs/wazerov1.12.0go.mod
Gogithub.com/vmihailenco/msgpack/v5v5.4.1go.mod
Gogolang.org/x/modv0.38.0go.mod
Gogolang.org/x/netv0.57.0go.mod
Gogolang.org/x/syncv0.22.0go.mod
Gogolang.org/x/sysv0.47.0go.mod
Gogolang.org/x/toolsv0.48.0go.mod
Gogopkg.in/yaml.v3v3.0.1go.mod
Gogithub.com/bmatcuk/doublestar/v4v4.10.0tools/go.mod
Gogithub.com/hexops/gotextdiffv1.0.3tools/go.mod
Gogithub.com/mattn/go-runewidthv0.0.24tools/go.mod
Gogithub.com/neurosnap/sentencesv1.1.2tools/go.mod
Gogithub.com/pelletier/go-tomlv1.9.5tools/go.mod
Gogithub.com/spf13/pflagv1.0.10tools/go.mod
Gogithub.com/stretchr/testifyv1.11.1tools/go.mod
Gogithub.com/tetratelabs/wazerov1.11.0tools/go.mod
Gogithub.com/vmihailenco/msgpack/v5v5.4.1tools/go.mod
Gogolang.org/x/modv0.36.0tools/go.mod
Gogolang.org/x/netv0.56.0tools/go.mod
Gogolang.org/x/sysv0.46.0tools/go.mod
Gogolang.org/x/toolsv0.45.0tools/go.mod
Gogopkg.in/yaml.v3v3.0.1tools/go.mod
Todas las dependencias 419

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

RegistroPaqueteVersiónRelación
Gogithub.com/bmatcuk/doublestar/v4v4.10.0directa
Gogithub.com/hexops/gotextdiffv1.0.3directa
Gogithub.com/mattn/go-runewidthv0.0.24directa
Gogithub.com/neurosnap/sentencesv1.1.2directa
Gogithub.com/pelletier/go-tomlv1.9.5directa
Gogithub.com/spf13/pflagv1.0.10directa
Gogithub.com/stretchr/testifyv1.11.1directa
Gogithub.com/tetratelabs/wazerov1.11.0directa
Gogithub.com/tetratelabs/wazerov1.12.0directa
Gogithub.com/vmihailenco/msgpack/v5v5.4.1directa
Gogolang.org/x/modv0.36.0directa
Gogolang.org/x/modv0.38.0directa
Gogolang.org/x/netv0.56.0directa
Gogolang.org/x/netv0.57.0directa
Gogolang.org/x/syncv0.21.0directa
Gogolang.org/x/syncv0.22.0directa
Gogolang.org/x/sysv0.46.0directa
Gogolang.org/x/sysv0.47.0directa
Gogolang.org/x/toolsv0.45.0directa
Gogolang.org/x/toolsv0.48.0directa
Gogopkg.in/yaml.v3v3.0.1directa
Go4d63.com/gocheckcompilerdirectivesv1.3.0indirecta
Go4d63.com/gochecknoglobalsv0.2.2indirecta
Gocodeberg.org/chavacava/garifv0.2.0indirecta
Gocodeberg.org/polyfloyd/go-errorlintv1.9.0indirecta
Godev.gaijin.team/go/exhaustruct/v4v4.0.0indirecta
Godev.gaijin.team/go/golibv0.6.0indirecta
Gogithub.com/4meepo/tagalignv1.4.3indirecta
Gogithub.com/abirdcfly/dupwordv0.1.7indirecta
Gogithub.com/adminbenni/iota-mixingv1.0.0indirecta
Gogithub.com/alecthomas/chroma/v2v2.21.1indirecta
Gogithub.com/alecthomas/go-check-sumtypev0.3.1indirecta
Gogithub.com/alexkohler/nakedret/v2v2.0.6indirecta
Gogithub.com/alexkohler/preallocv1.0.1indirecta
Gogithub.com/alfatraining/structtagv1.0.0indirecta
Gogithub.com/alingse/asasalintv0.0.11indirecta
Gogithub.com/alingse/nilnesserrv0.2.0indirecta
Gogithub.com/alwxsin/noinlineerrv1.0.5indirecta
Gogithub.com/antonboom/errnamev1.1.1indirecta
Gogithub.com/antonboom/nilnilv1.1.1indirecta
Gogithub.com/antonboom/testifylintv1.6.4indirecta
Gogithub.com/ashanbrown/forbidigo/v2v2.3.0indirecta
Gogithub.com/ashanbrown/makezero/v2v2.1.0indirecta
Gogithub.com/aymanbagabas/go-osc52/v2v2.0.1indirecta
Gogithub.com/beorn7/perksv1.0.1indirecta
Gogithub.com/bkielbasa/cyclopv1.2.3indirecta
Gogithub.com/blizzy78/varnamelenv0.8.0indirecta
Gogithub.com/bombsimon/wsl/v4v4.7.0indirecta
Gogithub.com/bombsimon/wsl/v5v5.3.0indirecta
Gogithub.com/breml/bidichkv0.3.3indirecta
Gogithub.com/breml/errchkjsonv0.4.1indirecta
Gogithub.com/burntsushi/tomlv1.6.0indirecta
Gogithub.com/butuzov/ireturnv0.4.0indirecta
Gogithub.com/butuzov/mirrorv1.3.0indirecta
Gogithub.com/catenacyber/perfsprintv0.10.1indirecta
Gogithub.com/ccojocar/zxcvbn-gov1.0.4indirecta
Gogithub.com/cespare/xxhash/v2v2.3.0indirecta
Gogithub.com/charithe/durationcheckv0.0.11indirecta
Gogithub.com/charmbracelet/colorprofilev0.2.3-0.20250311203215-f60798e515dcindirecta
Gogithub.com/charmbracelet/lipglossv1.1.1-0.20250404203927-76690c660834indirecta
Gogithub.com/charmbracelet/x/ansiv0.10.2indirecta
Gogithub.com/charmbracelet/x/cellbufv0.0.13indirecta
Gogithub.com/charmbracelet/x/termv0.2.1indirecta
Gogithub.com/ckaznocha/intrangev0.3.1indirecta
Gogithub.com/clipperhouse/uax29/v2v2.2.0indirecta
Gogithub.com/curioswitch/go-reassignv0.3.0indirecta
Gogithub.com/daixiang0/gciv0.13.7indirecta
Gogithub.com/dave/dstv0.27.3indirecta
Gogithub.com/davecgh/go-spewv1.1.1indirecta
Gogithub.com/denis-tingaikin/go-headerv0.5.0indirecta
Gogithub.com/djarvur/go-err113v0.1.1indirecta
Gogithub.com/dlclark/regexp2v1.11.5indirecta
Gogithub.com/ettle/strcasev0.2.0indirecta
Gogithub.com/fatih/colorv1.18.0indirecta
Gogithub.com/fatih/structtagv1.2.0indirecta
Gogithub.com/firefart/nonamedreturnsv1.0.6indirecta
Gogithub.com/fsnotify/fsnotifyv1.5.4indirecta
Gogithub.com/fzipp/gocyclov0.6.0indirecta
Gogithub.com/ghostiam/protogetterv0.3.18indirecta
Gogithub.com/go-critic/go-criticv0.14.3indirecta
Gogithub.com/go-toolsmith/astcastv1.1.0indirecta
Gogithub.com/go-toolsmith/astcopyv1.1.0indirecta
Gogithub.com/go-toolsmith/astequalv1.2.0indirecta
Gogithub.com/go-toolsmith/astfmtv1.1.0indirecta
Gogithub.com/go-toolsmith/astpv1.1.0indirecta
Gogithub.com/go-toolsmith/strparsev1.1.0indirecta
Gogithub.com/go-toolsmith/typepv1.1.0indirecta
Gogithub.com/go-viper/mapstructure/v2v2.4.0indirecta
Gogithub.com/go-xmlfmt/xmlfmtv1.1.3indirecta
Gogithub.com/gobwas/globv0.2.3indirecta
Gogithub.com/godoc-lint/godoc-lintv0.11.1indirecta
Gogithub.com/gofrs/flockv0.13.0indirecta
Gogithub.com/golang/protobufv1.5.3indirecta
Gogithub.com/golangci/asciicheckv0.5.0indirecta
Gogithub.com/golangci/duplv0.0.0-20250308024227-f665c8d69b32indirecta
Gogithub.com/golangci/go-printf-func-namev0.1.1indirecta
Gogithub.com/golangci/gofmtv0.0.0-20250106114630-d62b90e6713dindirecta
Gogithub.com/golangci/golangci-lint/v2v2.8.0indirecta
Gogithub.com/golangci/golinesv0.14.0indirecta
Gogithub.com/golangci/misspellv0.7.0indirecta
Gogithub.com/golangci/plugin-module-registerv0.1.2indirecta
Gogithub.com/golangci/revgrepv0.8.0indirecta
Gogithub.com/golangci/swaggoswagv0.0.0-20250504205917-77f2aca3143eindirecta
Gogithub.com/golangci/unconvertv0.0.0-20250410112200-a129a6e6413eindirecta
Gogithub.com/google/go-cmpv0.7.0indirecta
Gogithub.com/gordonklaus/ineffassignv0.2.0indirecta
Gogithub.com/gostaticanalysis/analysisutilv0.7.1indirecta
Gogithub.com/gostaticanalysis/commentv1.5.0indirecta
Gogithub.com/gostaticanalysis/forcetypeassertv0.2.0indirecta
Gogithub.com/gostaticanalysis/nilerrv0.1.2indirecta
Gogithub.com/hashicorp/go-immutable-radix/v2v2.1.0indirecta
Gogithub.com/hashicorp/go-versionv1.8.0indirecta
Gogithub.com/hashicorp/golang-lru/v2v2.0.7indirecta
Gogithub.com/hashicorp/hclv1.0.0indirecta
Gogithub.com/inconshreveable/mousetrapv1.1.0indirecta
Gogithub.com/jgautheron/goconstv1.8.2indirecta
Gogithub.com/jingyugao/rowserrcheckv1.1.1indirecta
Gogithub.com/jjti/go-spancheckv0.6.5indirecta
Gogithub.com/julz/importasv0.2.0indirecta
Gogithub.com/karamaru-alpha/copyloopvarv1.2.2indirecta
Gogithub.com/kisielk/errcheckv1.9.0indirecta
Gogithub.com/kkhaike/contextcheckv1.1.6indirecta
Gogithub.com/kr/prettyv0.3.1indirecta
Gogithub.com/kulti/thelperv0.7.1indirecta
Gogithub.com/kunwardeep/paralleltestv1.0.15indirecta
Gogithub.com/lasiar/canonicalheaderv1.1.2indirecta
Gogithub.com/ldez/exptostdv0.4.5indirecta
Gogithub.com/ldez/gomoddirectivesv0.8.0indirecta
Gogithub.com/ldez/grignotinv0.10.1indirecta
Gogithub.com/ldez/structtagsv0.6.1indirecta
Gogithub.com/ldez/tagliatellev0.7.2indirecta
Gogithub.com/ldez/usetestingv0.5.0indirecta
Gogithub.com/leonklingele/grouperv1.1.2indirecta
Gogithub.com/lucasb-eyer/go-colorfulv1.3.0indirecta
Gogithub.com/macabu/inamedparamv0.2.0indirecta
Gogithub.com/magiconair/propertiesv1.8.6indirecta
Gogithub.com/manuelarte/embeddedstructfieldcheckv0.4.0indirecta
Gogithub.com/manuelarte/funcorderv0.5.0indirecta
Gogithub.com/maratori/testableexamplesv1.0.1indirecta
Gogithub.com/maratori/testpackagev1.1.2indirecta
Gogithub.com/masterminds/semver/v3v3.4.0indirecta
Gogithub.com/matoous/godoxv1.1.0indirecta
Gogithub.com/matryer/isv1.4.1indirecta
Gogithub.com/mattn/go-colorablev0.1.14indirecta
Gogithub.com/mattn/go-isattyv0.0.20indirecta
Gogithub.com/matttproud/golang_protobuf_extensionsv1.0.1indirecta
Gogithub.com/mgechev/revivev1.13.0indirecta
Gogithub.com/mirrexone/unqueryvetv1.4.0indirecta
Gogithub.com/mitchellh/go-homedirv1.1.0indirecta
Gogithub.com/mitchellh/mapstructurev1.5.0indirecta
Gogithub.com/moricho/tparallelv0.3.2indirecta
Gogithub.com/muesli/termenvv0.16.0indirecta
Gogithub.com/nakabonne/nestifv0.3.1indirecta
Gogithub.com/nishanths/exhaustivev0.12.0indirecta
Gogithub.com/nishanths/predeclaredv0.2.2indirecta
Gogithub.com/nunnatsa/ginkgolinterv0.21.2indirecta
Gogithub.com/openpeedeep/depguard/v2v2.2.1indirecta
Gogithub.com/pelletier/go-toml/v2v2.2.4indirecta
Gogithub.com/pmezard/go-difflibv1.0.0indirecta
Gogithub.com/prometheus/client_golangv1.12.1indirecta
Gogithub.com/prometheus/client_modelv0.2.0indirecta
Gogithub.com/prometheus/commonv0.32.1indirecta
Gogithub.com/prometheus/procfsv0.7.3indirecta
Gogithub.com/quasilyte/go-ruleguardv0.4.5indirecta
Gogithub.com/quasilyte/go-ruleguard/dslv0.3.23indirecta
Gogithub.com/quasilyte/gogrepv0.5.0indirecta
Gogithub.com/quasilyte/regex/syntaxv0.0.0-20210819130434-b3f0c404a727indirecta
Gogithub.com/quasilyte/stdinfov0.0.0-20220114132959-f7386bf02567indirecta
Gogithub.com/raeperd/recvcheckv0.2.0indirecta
Gogithub.com/rillig/gobcov1.3.4indirecta
Gogithub.com/rivo/unisegv0.4.7indirecta
Gogithub.com/rogpeppe/go-internalv1.14.1indirecta
Gogithub.com/ryancurrah/gomodguardv1.4.1indirecta
Gogithub.com/ryanrolds/sqlclosecheckv0.5.1indirecta
Gogithub.com/sanposhiho/wastedassign/v2v2.1.0indirecta
Gogithub.com/santhosh-tekuri/jsonschema/v6v6.0.2indirecta
Gogithub.com/sashamelentyev/interfacebloatv1.1.0indirecta
Gogithub.com/sashamelentyev/usestdlibvarsv1.29.0indirecta
Gogithub.com/securego/gosec/v2v2.22.11indirecta
Gogithub.com/sergi/go-diffv1.3.2-0.20230802210424-5b0b94c5c0d3indirecta
Gogithub.com/sirupsen/logrusv1.9.3indirecta
Gogithub.com/sivchari/containedctxv1.0.3indirecta
Gogithub.com/sonatard/noctxv0.4.0indirecta
Gogithub.com/sourcegraph/go-diffv0.7.0indirecta
Gogithub.com/spf13/aferov1.15.0indirecta
Gogithub.com/spf13/castv1.5.0indirecta
Gogithub.com/spf13/cobrav1.10.2indirecta
Gogithub.com/spf13/jwalterweathermanv1.1.0indirecta
Gogithub.com/spf13/viperv1.12.0indirecta
Gogithub.com/ssgreg/nlreturn/v2v2.2.1indirecta
Gogithub.com/stbenjam/no-sprintf-host-portv0.3.1indirecta
Gogithub.com/stretchr/objxv0.5.2indirecta
Gogithub.com/subosito/gotenvv1.4.1indirecta
Gogithub.com/tetafro/godotv1.5.4indirecta
Gogithub.com/timakin/bodyclosev0.0.0-20241222091800-1db5c5ca4d67indirecta
Gogithub.com/timonwong/loggercheckv0.11.0indirecta
Gogithub.com/tomarrell/wrapcheck/v2v2.12.0indirecta
Gogithub.com/tommy-muehle/go-mnd/v2v2.5.1indirecta
Gogithub.com/ultraware/funlenv0.2.0indirecta
Gogithub.com/ultraware/whitespacev0.2.0indirecta
Gogithub.com/uudashr/gocognitv1.2.0indirecta
Gogithub.com/uudashr/ifacev1.4.1indirecta
Gogithub.com/vmihailenco/tagparser/v2v2.0.0indirecta
Gogithub.com/xen0n/gosmopolitanv1.3.0indirecta
Gogithub.com/xo/terminfov0.0.0-20220910002029-abceb7e1c41eindirecta
Gogithub.com/yagipy/maintidxv1.0.0indirecta
Gogithub.com/yeya24/promlinterv0.3.0indirecta
Gogithub.com/ykadowak/zerologlintv0.1.5indirecta
Gogitlab.com/bosi/decorderv0.4.2indirecta
Gogo-simpler.org/musttagv0.14.0indirecta
Gogo-simpler.org/sloglintv0.11.1indirecta
Gogo.augendre.info/arangolintv0.3.1indirecta
Gogo.augendre.info/fatcontextv0.9.0indirecta
Gogo.uber.org/automaxprocsv1.6.0indirecta
Gogo.uber.org/multierrv1.10.0indirecta
Gogo.uber.org/zapv1.27.0indirecta
Gogo.yaml.in/yaml/v3v3.0.4indirecta
Gogolang.org/x/exp/typeparamsv0.0.0-20251023183803-a4bb9ffd2546indirecta
Gogolang.org/x/textv0.38.0indirecta
Gogoogle.golang.org/protobufv1.36.8indirecta
Gogopkg.in/check.v1v1.0.0-20201130134442-10cb98267c6cindirecta
Gogopkg.in/ini.v1v1.67.0indirecta
Gogopkg.in/yaml.v2v2.4.0indirecta
Gohonnef.co/go/toolsv0.6.1indirecta
Gomvdan.cc/gofumptv0.9.2indirecta
Gomvdan.cc/unparamv0.0.0-20251027182757-5beb8c8f8f15indirecta
npm@codemirror/state^6.5.0indirecta
npm@codemirror/view^6.34.0indirecta
npm@mdsmith/cli0.0.0-devindirecta
npm@mdsmith/darwin-arm640.0.0-devindirecta
npm@mdsmith/darwin-x640.0.0-devindirecta
npm@mdsmith/linux-arm640.0.0-devindirecta
npm@mdsmith/linux-x640.0.0-devindirecta
npm@mdsmith/win32-x640.0.0-devindirecta
npm@nodelib/fs.scandir2.1.5indirecta
npm@nodelib/fs.stat2.0.5indirecta
npm@nodelib/fs.walk1.2.8indirecta
npm@playwright/test1.56.1indirecta
npm@sindresorhus/merge-streams4.0.0indirecta
npm@types/bun^1.1.0indirecta
npm@types/debug4.1.13indirecta
npm@types/katex0.16.8indirecta
npm@types/mocha^10.0.10indirecta
npm@types/ms2.1.0indirecta
npm@types/node^20.11.0indirecta
npm@types/unist2.0.11indirecta
npm@types/vscode^1.85.0indirecta
npm@vscode/test-electron^2.5.2indirecta
npm@vscode/vsce^3.0.0indirecta
npm@zeit/schemas2.36.0indirecta
npmajv8.18.0indirecta
npmansi-align3.0.1indirecta
npmansi-regex5.0.1indirecta
npmansi-regex6.2.2indirecta
npmansi-styles4.3.0indirecta
npmansi-styles6.2.3indirecta
npmarch2.2.0indirecta
npmarg5.0.2indirecta
npmargparse2.0.1indirecta
npmbalanced-match1.0.2indirecta
npmboxen7.0.0indirecta
npmbrace-expansion1.1.15indirecta
npmbraces3.0.3indirecta
npmbytes3.0.0indirecta
npmbytes3.1.2indirecta
npmcamelcase7.0.1indirecta
npmchalk4.1.2indirecta
npmchalk5.0.1indirecta
npmchalk-template0.4.0indirecta
npmcharacter-entities2.0.2indirecta
npmcharacter-entities-legacy3.0.0indirecta
npmcharacter-reference-invalid2.0.1indirecta
npmcli-boxes3.0.0indirecta
npmclipboardy3.0.0indirecta
npmcolor-convert2.0.1indirecta
npmcolor-name1.1.4indirecta
npmcommander8.3.0indirecta
npmcompressible2.0.18indirecta
npmcompression1.8.1indirecta
npmconcat-map0.0.1indirecta
npmcontent-disposition0.5.2indirecta
npmcross-spawn7.0.6indirecta
npmdebug2.6.9indirecta
npmdebug4.4.3indirecta
npmdecode-named-character-reference1.3.0indirecta
npmdeep-extend0.6.0indirecta
npmdequal2.0.3indirecta
npmdevlop1.1.0indirecta
npmeastasianwidth0.2.0indirecta
npmemoji-regex8.0.0indirecta
npmemoji-regex9.2.2indirecta
npmentities4.5.0indirecta
npmexeca5.1.1indirecta
npmfast-deep-equal3.1.3indirecta
npmfast-glob3.3.3indirecta
npmfast-uri3.1.4indirecta
npmfastq1.20.1indirecta
npmfill-range7.1.1indirecta
npmfsevents2.3.2indirecta
npmget-east-asian-width1.6.0indirecta
npmget-stream6.0.1indirecta
npmglob^13.0.6indirecta
npmglob-parent5.1.2indirecta
npmglobby16.2.1indirecta
npmhas-flag4.0.0indirecta
npmhuman-signals2.1.0indirecta
npmignore7.0.6indirecta
npmini1.3.8indirecta
npmis-alphabetical2.0.1indirecta
npmis-alphanumerical2.0.1indirecta
npmis-decimal2.0.1indirecta
npmis-docker2.2.1indirecta
npmis-extglob2.1.1indirecta
npmis-fullwidth-code-point3.0.0indirecta
npmis-glob4.0.3indirecta
npmis-hexadecimal2.0.1indirecta
npmis-number7.0.0indirecta
npmis-path-inside4.0.0indirecta
npmis-port-reachable4.0.0indirecta
npmis-stream2.0.1indirecta
npmis-wsl2.2.0indirecta
npmisexe2.0.0indirecta
npmjs-yaml4.2.0indirecta
npmjson-schema-traverse1.0.0indirecta
npmjsonc-parser3.3.1indirecta
npmjsonpointer5.0.1indirecta
npmkatex0.16.47indirecta
npmlinkify-it5.0.1indirecta
npmmarkdown-it14.2.0indirecta
npmmarkdownlint0.41.1indirecta
npmmarkdownlint-cli20.23.1indirecta
npmmarkdownlint-cli2-formatter-default0.0.6indirecta
npmmdurl2.0.0indirecta
npmmerge-stream2.0.0indirecta
npmmerge21.4.1indirecta
npmmicromark4.0.2indirecta
npmmicromark-core-commonmark2.0.3indirecta
npmmicromark-extension-directive4.0.0indirecta
npmmicromark-extension-gfm-autolink-literal2.1.0indirecta
npmmicromark-extension-gfm-footnote2.1.0indirecta
npmmicromark-extension-gfm-table2.1.1indirecta
npmmicromark-extension-math3.1.0indirecta
npmmicromark-factory-destination2.0.1indirecta
npmmicromark-factory-label2.0.1indirecta
npmmicromark-factory-space2.0.1indirecta
npmmicromark-factory-title2.0.1indirecta
npmmicromark-factory-whitespace2.0.1indirecta
npmmicromark-util-character2.1.1indirecta
npmmicromark-util-chunked2.0.1indirecta
npmmicromark-util-classify-character2.0.1indirecta
npmmicromark-util-combine-extensions2.0.1indirecta
npmmicromark-util-decode-numeric-character-reference2.0.2indirecta
npmmicromark-util-encode2.0.1indirecta
npmmicromark-util-html-tag-name2.0.1indirecta
npmmicromark-util-normalize-identifier2.0.1indirecta
npmmicromark-util-resolve-all2.0.1indirecta
npmmicromark-util-sanitize-uri2.0.1indirecta
npmmicromark-util-subtokenize2.1.0indirecta
npmmicromark-util-symbol2.0.1indirecta
npmmicromark-util-types2.0.2indirecta
npmmicromatch4.0.8indirecta
npmmime-db1.33.0indirecta
npmmime-db1.54.0indirecta
npmmime-types2.1.18indirecta
npmmimic-fn2.1.0indirecta
npmminimatch3.1.5indirecta
npmminimist1.2.8indirecta
npmmocha^11.7.6indirecta
npmms2.0.0indirecta
npmms2.1.3indirecta
npmnegotiator0.6.4indirecta
npmnpm-run-path4.0.1indirecta
npmobsidian^1.7.0indirecta
npmon-headers1.1.0indirecta
npmonetime5.1.2indirecta
npmparse-entities4.0.2indirecta
npmpath-is-inside1.0.2indirecta
npmpath-key3.1.1indirecta
npmpath-to-regexp3.3.0indirecta
npmpicomatch2.3.2indirecta
npmplaywright1.56.1indirecta
npmplaywright-core1.56.1indirecta
npmpunycode.js2.3.1indirecta
npmqueue-microtask1.2.3indirecta
npmrange-parser1.2.0indirecta
npmrc1.2.8indirecta
npmregistry-auth-token3.3.2indirecta
npmregistry-url3.1.0indirecta
npmrequire-from-string2.0.2indirecta
npmreusify1.1.0indirecta
npmrun-parallel1.2.0indirecta
npmsafe-buffer5.2.1indirecta
npmserve14.2.6indirecta
npmserve-handler6.1.7indirecta
npmshebang-command2.0.0indirecta
npmshebang-regex3.0.0indirecta
npmsignal-exit3.0.7indirecta
npmslash5.1.0indirecta
npmsmol-toml1.7.0indirecta
npmstring-width4.2.3indirecta
npmstring-width5.1.2indirecta
npmstring-width8.2.1indirecta
npmstrip-ansi6.0.1indirecta
npmstrip-ansi7.2.0indirecta
npmstrip-final-newline2.0.0indirecta
npmstrip-json-comments2.0.1indirecta
npmsupports-color7.2.0indirecta
npmto-regex-range5.0.1indirecta
npmtype-fest2.19.0indirecta
npmtypescript^5.4.0indirecta
npmuc.micro2.1.0indirecta
npmunicorn-magic0.4.0indirecta
npmupdate-check1.5.4indirecta
npmvary1.1.2indirecta
npmvscode-languageclient^9.0.1indirecta
npmvscode-uri^3.1.0indirecta
npmwhich2.0.2indirecta
npmwidest-line4.0.1indirecta
npmwrap-ansi8.1.0indirecta
Avisos de dependencias 4

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

PaqueteVersiónRelaciónGravedadAvisosCorregido en
brace-expansion1.1.15indirectaalta25.0.8
js-yaml4.2.0indirectaalta14.3.0
linkify-it5.0.1indirectaalta15.0.2
golang.org/x/textv0.38.0indirectadesconocida10.39.0

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

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "golang",
        "linter",
        "markdown",
        "ai-generated-code",
        "ai-generated-content",
        "formatter",
        "go",
        "readme",
        "specification",
        "style",
        "spec-driven",
        "spec-driven-development",
        "extension-vscode",
        "lsp-server"
      ],
      "is_fork": false,
      "size_kb": 1162056,
      "has_wiki": true,
      "homepage": "https://mdsmith.dev/",
      "languages": {
        "Go": 11635074,
        "CSS": 77572,
        "CUE": 4893,
        "HTML": 67693,
        "Shell": 6490,
        "Python": 2415,
        "JavaScript": 15876,
        "TypeScript": 376390
      },
      "pushed_at": "2026-07-26T20:29:39Z",
      "created_at": "2026-02-08T21:03:38Z",
      "owner_type": "User",
      "updated_at": "2026-07-25T19:27:22Z",
      "description": "fast, auto-fixing Markdown linter and formatter. Checks style, readability, structure, and cross-file integrity.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Jan-Eric Duden",
      "type": "User",
      "login": "jeduden",
      "company": null,
      "location": null,
      "followers": 26,
      "avatar_url": "https://avatars.githubusercontent.com/u/1117699?v=4",
      "created_at": "2011-10-10T21:21:52Z",
      "is_verified": null,
      "public_repos": 99,
      "account_age_days": 5403
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.54.0",
          "kind": "minor",
          "published_at": "2026-07-25T19:38:15Z"
        },
        {
          "tag": "v0.53.0",
          "kind": "minor",
          "published_at": "2026-07-19T21:50:17Z"
        },
        {
          "tag": "v0.52.0",
          "kind": "minor",
          "published_at": "2026-06-22T19:59:44Z"
        },
        {
          "tag": "v0.51.0",
          "kind": "minor",
          "published_at": "2026-06-20T19:50:02Z"
        },
        {
          "tag": "v0.50.0",
          "kind": "minor",
          "published_at": "2026-06-17T11:08:44Z"
        },
        {
          "tag": "v0.49.0-marketplace",
          "kind": "prerelease",
          "published_at": "2026-06-15T06:31:02Z"
        },
        {
          "tag": "v0.49.0",
          "kind": "minor",
          "published_at": "2026-06-15T06:23:59Z"
        },
        {
          "tag": "v0.48.0",
          "kind": "minor",
          "published_at": "2026-06-14T16:42:30Z"
        },
        {
          "tag": "v0.47.0",
          "kind": "minor",
          "published_at": "2026-06-14T13:48:46Z"
        },
        {
          "tag": "v0.46.0",
          "kind": "minor",
          "published_at": "2026-06-12T23:54:25Z"
        },
        {
          "tag": "v0.45.0",
          "kind": "minor",
          "published_at": "2026-06-12T09:15:15Z"
        },
        {
          "tag": "v0.43.0",
          "kind": "minor",
          "published_at": "2026-06-12T07:00:35Z"
        },
        {
          "tag": "v0.42.0",
          "kind": "minor",
          "published_at": "2026-06-11T19:54:04Z"
        },
        {
          "tag": "v0.41.0",
          "kind": "minor",
          "published_at": "2026-06-11T05:05:48Z"
        },
        {
          "tag": "v0.40.0",
          "kind": "minor",
          "published_at": "2026-06-10T18:51:29Z"
        },
        {
          "tag": "v0.39.0",
          "kind": "minor",
          "published_at": "2026-06-10T06:06:02Z"
        },
        {
          "tag": "v0.38.0",
          "kind": "minor",
          "published_at": "2026-06-07T08:12:53Z"
        },
        {
          "tag": "v0.37.0",
          "kind": "minor",
          "published_at": "2026-06-07T07:55:05Z"
        },
        {
          "tag": "v0.36.0",
          "kind": "minor",
          "published_at": "2026-06-06T10:16:38Z"
        },
        {
          "tag": "v0.35.0",
          "kind": "minor",
          "published_at": "2026-06-06T01:11:39Z"
        },
        {
          "tag": "v0.34.0",
          "kind": "minor",
          "published_at": "2026-06-05T16:49:38Z"
        },
        {
          "tag": "v0.33.0",
          "kind": "minor",
          "published_at": "2026-06-05T13:05:40Z"
        },
        {
          "tag": "v0.32.0",
          "kind": "minor",
          "published_at": "2026-06-03T21:48:52Z"
        },
        {
          "tag": "v0.31.0",
          "kind": "minor",
          "published_at": "2026-06-02T18:02:10Z"
        },
        {
          "tag": "v0.30.0",
          "kind": "minor",
          "published_at": "2026-06-02T06:56:41Z"
        },
        {
          "tag": "v0.29.0",
          "kind": "minor",
          "published_at": "2026-06-01T22:05:31Z"
        },
        {
          "tag": "v0.28.0",
          "kind": "minor",
          "published_at": "2026-06-01T20:01:36Z"
        },
        {
          "tag": "v0.27.0",
          "kind": "minor",
          "published_at": "2026-05-30T10:55:38Z"
        },
        {
          "tag": "v0.26.0",
          "kind": "minor",
          "published_at": "2026-05-30T07:55:52Z"
        },
        {
          "tag": "v0.25.0",
          "kind": "minor",
          "published_at": "2026-05-24T20:20:33Z"
        },
        {
          "tag": "v0.24.0",
          "kind": "minor",
          "published_at": "2026-05-24T10:31:20Z"
        },
        {
          "tag": "v0.23.0",
          "kind": "minor",
          "published_at": "2026-05-21T23:23:31Z"
        },
        {
          "tag": "v0.21.0",
          "kind": "minor",
          "published_at": "2026-05-19T17:57:28Z"
        },
        {
          "tag": "v0.20.0",
          "kind": "minor",
          "published_at": "2026-05-18T06:03:49Z"
        },
        {
          "tag": "v0.19.0",
          "kind": "minor",
          "published_at": "2026-05-17T18:40:01Z"
        },
        {
          "tag": "v0.18.0",
          "kind": "minor",
          "published_at": "2026-05-17T15:36:30Z"
        },
        {
          "tag": "v0.17.1",
          "kind": "patch",
          "published_at": "2026-05-16T15:59:50Z"
        },
        {
          "tag": "v0.17.0",
          "kind": "minor",
          "published_at": "2026-05-16T11:39:08Z"
        },
        {
          "tag": "v0.16.2",
          "kind": "patch",
          "published_at": "2026-05-15T23:15:39Z"
        },
        {
          "tag": "v0.16.0",
          "kind": "minor",
          "published_at": "2026-05-15T12:18:01Z"
        },
        {
          "tag": "v0.15.0",
          "kind": "minor",
          "published_at": "2026-05-14T13:04:38Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-05-13T22:16:02Z"
        },
        {
          "tag": "v0.13.6",
          "kind": "patch",
          "published_at": "2026-05-09T19:18:45Z"
        },
        {
          "tag": "v0.13.5",
          "kind": "patch",
          "published_at": "2026-05-09T10:54:22Z"
        },
        {
          "tag": "v0.13.4",
          "kind": "patch",
          "published_at": "2026-05-09T10:21:50Z"
        },
        {
          "tag": "v0.13.3",
          "kind": "patch",
          "published_at": "2026-05-09T00:07:36Z"
        },
        {
          "tag": "v0.13.2",
          "kind": "patch",
          "published_at": "2026-05-08T23:46:22Z"
        },
        {
          "tag": "v0.13.1",
          "kind": "patch",
          "published_at": "2026-05-08T18:18:46Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-05-08T13:44:33Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-05-03T20:47:26Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-05-03T19:59:25Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-05-02T18:41:24Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-05-02T06:20:40Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-04-30T22:31:06Z"
        },
        {
          "tag": "v0.7.1",
          "kind": "patch",
          "published_at": "2026-04-27T12:37:21Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-04-27T10:29:44Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2026-04-26T17:48:40Z"
        },
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-04-05T21:42:11Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-03-16T21:09:59Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-03-05T17:35:13Z"
        },
        {
          "tag": "v0.2.1",
          "kind": "patch",
          "published_at": "2026-03-01T13:15:10Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-03-01T11:52:12Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2026-02-09T07:49:01Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "2ab4b2949e9420b2eb73f4239091fd647c4b5e80",
          "body": "…irmed hot paths",
          "is_bot": false,
          "headline": "Merge PR #767: perf: audit against high-performance-go.md, fix 3 conf…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-25T19:22:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8948a7cdaac0c8b0225e3593985ca2f923c83407",
          "body": "…tural validation",
          "is_bot": false,
          "headline": "Merge PR #757: feat(rules): add MDS073 slide-structure — Slidev struc…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-25T19:21:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e8d7647e2ca2b252b045f9ffdd7cd09fc543a34f",
          "body": "driftParts computed githooks.ResolveHooksDir(repoRoot) twice on a cache\nmiss: once inside peekHookSource and again inside\npreMergeCommitHookDrift. Each call spawns a `git rev-parse --git-path\nhooks` subprocess, exactly the \"never exec a subprocess per item (git\nrev-parse once did)\" anti-pattern docs\n[…]\nge var and asserts it is called exactly\nonce per driftParts cache miss.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_016wWQmrtb8EMbn1hDgkESqE",
          "is_bot": false,
          "headline": "perf(git-hook-sync): resolve the hooks directory once per drift check",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-25T19:17:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "26fc6623c9e7e0610c32ecbe59a88964e6ffe053",
          "body": "hasReservedDeviceName called strings.ToUpper on every path segment\nbefore the reservedDeviceNames set lookup. strings.ToUpper is a no-op\ncopy only when the input already matches the target case, so a typical\n(lowercase) segment always paid the allocation. Every reserved name is\n3-4 bytes (CON, PRN, \n[…]\ncation ceiling,\nconfirmed red against the pre-fix code and green after.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_016wWQmrtb8EMbn1hDgkESqE",
          "is_bot": false,
          "headline": "perf(build): gate reserved-device-name check's ToUpper by segment length",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-25T19:17:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "682f8b0ef06fd26422ed13037469df649c0febca",
          "body": "checkFootnotes ran footnoteRefRE and footnoteDefRE over the full source\non every Check call, even on files with no footnote syntax at all. Per\ndocs/development/high-performance-go.md (\"Gate expensive analyzers\nbehind a cheap pre-check... byte-needles gate regex paths\"), add a\nbytes.Contains(f.Source\n[…]\n on overshoot), confirmed red against the\npre-fix code and green after.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_016wWQmrtb8EMbn1hDgkESqE",
          "is_bot": false,
          "headline": "perf(no-reference-style): gate footnote regex scans behind a byte needle",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-25T19:17:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "94af5401979acae57c4a641621a302489eaee3b6",
          "body": "…S072 SSRF",
          "is_bot": false,
          "headline": "Merge PR #766: docs(security): 2026-07-24 post-audit diff review — MD…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-25T19:13:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dba714d1637b4332a37105473ebd4d1bb52e06c5",
          "body": "…uct layout + byte scans)",
          "is_bot": false,
          "headline": "Merge PR #765: perf: fix top 5 high-performance-go.md violations (str…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-25T19:13:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f86dc1aba7eac97ee1000fcc95cd68e5d25549dc",
          "body": "…3.1 in /docs/research/benchmarks/npm",
          "is_bot": false,
          "headline": "Merge PR #763: chore(deps): bump markdownlint-cli2 from 0.23.0 to 0.2…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-25T19:12:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02fc9f8ebb8a8b2b0e27e6efedf63dd2b5074fd9",
          "body": "…check/fix",
          "is_bot": false,
          "headline": "Merge PR #760: fix(cli): skip non-Markdown files named explicitly on …",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-25T19:12:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6ed778cbca34eb2c5880db424d578c9578154ce",
          "body": "Skipping a directly named non-Markdown path (issue #759) was correct but\nsilent: `mdsmith check .gitattributes` / `mdsmith fix .gitattributes`\nresolved to zero files and exited 0 with no output, so an explicit\nargument that did nothing looked like a clean pass.\n\nAdd ResolveOpts.OnSkipNonMarkdown, a \n[…]\n being\npresent in text mode and absent under --quiet and --format json.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_011giDUosuDeqRDVWgmWyaj5",
          "is_bot": false,
          "headline": "feat(cli): warn when an explicitly named non-Markdown file is skipped",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-25T19:08:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "47ace276a7e86406831f87662468566f01861f3d",
          "body": "…d by codebase audit",
          "is_bot": false,
          "headline": "Merge PR #764: perf: fix top 5 high-performance-go.md violations foun…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-25T19:05:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a08e800838ca06053a4d59be7bca93ebe2db325c",
          "body": "…d by codebase audit",
          "is_bot": false,
          "headline": "Merge PR #762: perf: fix top 5 high-performance-go.md violations foun…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-25T19:04:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6138b7b6e3fb5d44eeb903e68fb701cb2c28052a",
          "body": null,
          "is_bot": false,
          "headline": "Merge PR #758: feat(rules): add MDS060 occurrence rule (plan 2607022118)",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-25T19:04:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "777a68f2c87bc5d01b0cc0112e3a9b555db3324e",
          "body": "…hema.IsClaimed (plan 2607191918)",
          "is_bot": false,
          "headline": "Merge PR #756: refactor(schema): deduplicate isClaimed — export as sc…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-25T19:04:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8716f5478b986fb8514e915f60665e02b116446d",
          "body": "…tInitUsage (plan 2607191917)",
          "is_bot": false,
          "headline": "Merge PR #754: test(init): add unit tests for printInitCatalog and se…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-25T19:03:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d84f3ec2ed5aa4faf6ddba68db2adc86829df2bb",
          "body": "…/website/e2e in the npm_and_yarn group across 1 directory",
          "is_bot": false,
          "headline": "Merge PR #768: chore(deps-dev): bump fast-uri from 3.1.2 to 3.1.4 in …",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-25T18:57:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ce49c77b9ffd26d6e880615d1bce773fd46e538e",
          "body": "…ed exclusions (#761)\n\n* fix(merge-driver): emit merge=text for ignore-derived exclusions\n\nThe .gitattributes managed block wrote ignore-derived Markdown\nexclusions as `-merge`, which unsets git's merge attribute. Per\ngit-attributes, an unset merge declares a file binary with no\nwell-defined merge s\n[…]\ne\" to match.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01W8S3VduddQAbq8FPduzFyf\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(merge-driver): emit merge=text instead of -merge for ignore-deriv…",
          "author_name": "Jan-Eric Duden",
          "author_login": "jeduden",
          "committed_at": "2026-07-25T18:56:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f8b4d8618fe0d86eeb48131d116bc5f270ee1d8c",
          "body": "Bumps the npm_and_yarn group with 1 update in the /website/e2e directory: [fast-uri](https://github.com/fastify/fast-uri).\n\n\nUpdates `fast-uri` from 3.1.2 to 3.1.4\n- [Release notes](https://github.com/fastify/fast-uri/releases)\n- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.2...v3.1.4)\n[…]\n\n---\nupdated-dependencies:\n- dependency-name: fast-uri\n  dependency-version: 3.1.4\n  dependency-type: indirect\n  dependency-group: npm_and_yarn\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): bump fast-uri",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T09:24:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fe9bbae4480f16b36bec5ef10d218740c500b586",
          "body": "Diff review of the 110 files merged since the 2026-07-17 review\n(base d496596..d4af5d5). The window's whole security story is the\nnew MDS072 external-link-check rule — mdsmith's first rule that makes\noutbound HTTP at lint time.\n\nFindings (all confirmed):\n- S001 (Medium, CWE-918): MDS072 probes docum\n[…]\n07242010 (SSRF/egress\nhardening) and 2607242011 (docs hardening batch).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01NT4Fth7C1skiUkriawFk5c",
          "is_bot": false,
          "headline": "docs(security): 2026-07-24 post-audit diff review — MDS072 SSRF",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-24T20:12:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fbc7cd5b3b47c58e74fdec1e6b7a897c63d14a3c",
          "body": "The struct-layout fix in internal/output.jsonDiagnostic (previous\ncommit) reordered Go struct fields to group pointer-containing fields\nbefore scalars, which changes encoding/json's emitted key order. This\nreference page's --format json example still showed the pre-fix\norder. Verified against actual\n[…]\nn` output.\n\nFound by an independent adversarial review pass on PR #765.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01SNiF3CVZG2NCizbsTgur4V",
          "is_bot": false,
          "headline": "docs(cli): update --format json example to match the new field order",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-23T20:36:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "24c91c0b39099984fbc573fa9c750cf6584617f2",
          "body": "… before scalars\n\ninternal/output.jsonDiagnostic interleaved Line/Column/\nSourceStartLine/Deprecated (scalars) among its string/slice/pointer\nfields; jsonRelatedLocation interleaved Line/Column before Message.\nSame defect and same fix as internal/lint.Diagnostic and\npkg/mdsmith.Diagnostic: Go's GC p\n[…]\ns own e2e\nJSON tests parse into a map rather than asserting exact text.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01SNiF3CVZG2NCizbsTgur4V",
          "is_bot": false,
          "headline": "perf(output): order jsonDiagnostic/jsonRelatedLocation pointer fields…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-23T20:28:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "efb2d1774ec8ca6b2fd7b7dd76052887452f33fc",
          "body": "… scalars\n\npkg/mdsmith.Diagnostic interleaved Line/Column/SourceStartLine/\nDeprecated (scalars) among its string/slice/pointer fields; its\nsibling RelatedLocation interleaved Line/Column before Message.\nNeither got the pointer-fields-first fix that internal/lint.Diagnostic\nand internal/lint.RelatedL\n[…]\n-format json / LSP / WASM host) is\nunaffected by the in-memory reorder.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01SNiF3CVZG2NCizbsTgur4V",
          "is_bot": false,
          "headline": "perf(mdsmith): order Diagnostic/RelatedLocation pointer fields before…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-23T20:25:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a99f872c92090172146f707b09e09d668993458d",
          "body": "internal/lsp.Diagnostic placed Range (a scalar struct) and Severity\n(an int) before Code/Source/Message/Data/RelatedInformation/\nCodeDescription. Go's GC ptrdata for a struct spans from offset 0\nthrough the end of the last pointer-containing field, so those two\nscalars sat inside the scanned span fo\n[…]\nattern already used for lint.Diagnostic, schema.ScopeMatch, and\nothers.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01SNiF3CVZG2NCizbsTgur4V",
          "is_bot": false,
          "headline": "perf(lsp): order Diagnostic's pointer fields before its scalars",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-23T20:24:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b2a460b14177f68cad49f1079bed2ae3c929d162",
          "body": "… loop\n\ndocumentEndPosition's trailing-newline branch counted '\\n' with a\nscalar per-byte Go for-range loop. bytes.Count uses the same\nSIMD-accelerated scan bytes.IndexByte relies on, and this function\nruns on every LSP \"fix all\" whole-document code action (fullFileEdit)\nover the complete document b\n[…]\ntEndPosition, pinning the zero-alloc property so\na regression fails CI.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01SNiF3CVZG2NCizbsTgur4V",
          "is_bot": false,
          "headline": "perf(lsp): use bytes.Count in documentEndPosition instead of a manual…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-23T20:23:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "509693fd6f7e7cb6cf4f2d1260a434bb7f01ec6f",
          "body": "SplitLines built its result via append in a byte-by-byte scan for\n'\\n', growing the slice through several capacity doublings and never\nvectorizing the scan. bytes.Split uses the same SIMD-accelerated\nIndexByte the rest of the codebase already relies on and pre-sizes\nthe result in one pass. On a 50-l\n[…]\nenchmarkSplitLines pinning the\n1-alloc budget so a regression fails CI.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01SNiF3CVZG2NCizbsTgur4V",
          "is_bot": false,
          "headline": "perf(gensection): replace hand-rolled SplitLines loop with bytes.Split",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-23T20:21:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "daae490441289da67f35b4fc5cb7101563c4e8cc",
          "body": "The binary-search rewrite only clamped the upper bound (offset >\nlen(Source)); a negative offset now echoed back out unclamped\n(ColumnOfOffset(-5) == -4) instead of the pre-refactor behavior of\nalways returning 1 for any negative offset. No shipped rule call site\ncan currently trigger this (all pass\n[…]\nffset's and the\nprior implementation's handling of out-of-domain input.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01UCh2j2oeSw6UgNsmpjRonL",
          "is_bot": false,
          "headline": "fix(lint): clamp negative offsets in ColumnOfOffset",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-22T21:11:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1aba2d9398d9fa0a09743dbbaf539de5a8ddeac0",
          "body": "Review found the stat-based size pre-check protected only the common\ncase: a file that grows past the cap between the Stat and the\nsubsequent bytelimit.ReadFileLimited call still returned a hard error,\nreintroducing the exact whole-build-abort bug the pre-check was meant\nto fix, just for a narrower \n[…]\n-lookup helpers could otherwise only be\ncaught by their own unit tests.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01UCh2j2oeSw6UgNsmpjRonL",
          "is_bot": false,
          "headline": "fix(corpus): also skip (not abort) on stat failure and TOCTOU read races",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-22T21:03:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7f6d8efb2cab0a95d128c5d7420f00a185cc23c1",
          "body": "Review found that returning bytelimit's error straight from collectFile\nmade it fatal: collectFromRoot's WalkDir callback treats any error as\nabort-the-walk, and Collect returns on the first source error, so one\nbig file discarded every record already collected from every source in\nthe run. Stat the\n[…]\nendored spec) without that being reason to fail the whole corpus\nbuild.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01UCh2j2oeSw6UgNsmpjRonL",
          "is_bot": false,
          "headline": "fix(corpus): skip oversized files instead of aborting the whole build",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-22T20:47:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4d2c56ef2c9a551cc6e1fb49f258d8a6f7251a88",
          "body": "The comment described an earlier bytes.LastIndexByte approach that was\nabandoned (benchmarking showed no SIMD assembly backs LastIndexByte on\nany platform) in favor of the binary-search fix actually shipped.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01UCh2j2oeSw6UgNsmpjRonL",
          "is_bot": false,
          "headline": "fix(lint): correct stale benchmark comment about the ColumnOfOffset fix",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-22T20:39:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "306d4582184245ec5b39e83dd9dfb46f5bf270b8",
          "body": "collectFile used a bare os.ReadFile while walking cloned third-party\nrepositories for the training corpus — the one file-ingestion loop\nin the codebase reading genuinely untrusted external content without\nthe byte-cap every other read site already applies (bytelimit,\ninternal/rules/githooksync, inte\n[…]\nce-go.md (\"os.ReadFile on huge\ninputs: one giant alloc, all resident\").\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01UCh2j2oeSw6UgNsmpjRonL",
          "is_bot": false,
          "headline": "fix(corpus): cap collectFile's read at bytelimit.DefaultMaxInputBytes",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-22T20:37:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f5842c2f6c3eafd91fcd7ca13511a7595188fc0f",
          "body": "The type-6/type-7 HTML block openers called\nstrings.ToLower(string(tagBytes)) on every trigger candidate line\n(any line starting with '<'), allocating a new string each time.\ninternal/lint/layer0_html.go already solved the identical problem\nwith a stack-buffer lowering (tagBuf.lowerInto); this mirro\n[…]\npers.\n\nRef: docs/development/high-performance-go.md (\"Stay in []byte\").\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01UCh2j2oeSw6UgNsmpjRonL",
          "is_bot": false,
          "headline": "perf(goldmark): zero-alloc tag lowering in the HTML block parser",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-22T20:37:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d33659b4abc26b33cbee8ca3bf1ed71816d7bbf4",
          "body": "rawLines and rows grew via plain append with no capacity hint, so a\nmulti-row table paid several slice-growth reallocs during parsing.\ncountDataRows mirrors the data-row loop's stopping condition without\nallocating, so both slices can be pre-sized once up front. Measured\n174 -> 162 allocs/op parsing\n[…]\nix).\n\nRef: docs/development/high-performance-go.md (\"Pre-size slices\").\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01UCh2j2oeSw6UgNsmpjRonL",
          "is_bot": false,
          "headline": "perf(MDS025): pre-size table row slices in tryParseTable",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-22T20:37:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "357f0d55f012b5033046cdb23c251d09ddba9e52",
          "body": "matchVariant converted every paragraph line to a string before\nregexp matching, in both the Check and Fix paths. regexp.Match\naccepts []byte directly and bytes.TrimRight covers the same\ntrimming strings.TrimRight did, so the conversion was pure overhead\non every scanned line. Drops the alloc-budget \n[…]\natch.\n\nRef: docs/development/high-performance-go.md (\"Stay in []byte\").\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01UCh2j2oeSw6UgNsmpjRonL",
          "is_bot": false,
          "headline": "perf(MDS035): match TOC directive lines as []byte, not string",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-22T20:37:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "965cad159951761c4b118d2189f53d87a3f377cd",
          "body": "ColumnOfOffset hand-rolled a backward byte scan to find the start of\nthe current line. LineOfOffset already binary-searches a memoized\nnewline index for the same purpose; extract that search into\nnewlineSearch and reuse it from both, so a diagnostic on a very long\nline (a minified table, a long URL \n[…]\n/development/high-performance-go.md (\"Memoize per-input\ncomputations\").\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01UCh2j2oeSw6UgNsmpjRonL",
          "is_bot": false,
          "headline": "perf(lint): make ColumnOfOffset O(log n) instead of O(line length)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-22T20:37:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "32de0102919b2262bf4153f4b41cdbd7276eab25",
          "body": "Bumps [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2) from 0.23.0 to 0.23.1.\n- [Changelog](https://github.com/DavidAnson/markdownlint-cli2/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.23.0...v0.23.1)\n\n---\nupdated-dependencies:\n- dependency-name: markdownlint-cli2\n  dependency-version: 0.23.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump markdownlint-cli2 in /docs/research/benchmarks/npm",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-22T06:24:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d67a63332923acd1dfea08918b9ae4fd928be119",
          "body": "TestCheck_NoIncludeDirectiveAllocatesNothing asserts a zero-alloc\ndelta, but the race detector's instrumentation adds its own\nallocations, so the test fails under `go test -race` even though the\ngate itself is correct — CI does not run -race, so this only bites a\ndeveloper running it locally. Add the raceEnabled build-tag const\npattern already used by internal/rules/nobareurls and\ninternal/rules/crossfilereferenceintegrity, and skip the gate under\nit. Noted in round 2 of code review.",
          "is_bot": false,
          "headline": "test(MDS021): skip the no-include alloc gate under -race",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-21T21:06:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f21c6205d603e0f64ed35edbe4b52fd9b534430d",
          "body": "The needle gate added in c2db2fae only checked for \"<?include\", which\ndoes not match a dangling \"<?/include?>\" end marker with no opening\nstart marker (\"/\" sits where the needle expects \"i\"). Such a file\nwould false-negative past the gate, silently dropping the engine's\n\"unexpected generated section\n[…]\nting an\nopening <?include ... ?> block but leaving the closing marker behind.\n\nCheck for both \"<?include\" and \"<?/include\" via\nmayContainIncludeDirective. Caught by round 1 of adversarial code\nreview.",
          "is_bot": false,
          "headline": "fix(MDS021): gate on both include start and end marker needles",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-21T20:55:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "568ac8de9783bc5d938a8ac03daf0b454d2f62df",
          "body": "TestCheck_NoFS and TestCheck_NoIncludeDirectiveAllocatesNothing pinned\nthese branches for Check, but Fix shares the same compound early-return\ncondition and had no equivalent coverage — Codecov flagged the gate\nadded in c2db2fae as only 50% patch-covered. Add the mirroring Fix\ntests.",
          "is_bot": false,
          "headline": "test(MDS021): cover Fix's no-FS and no-include-directive gate branches",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-21T20:48:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1296a3ee4ef4bfe596763f4bfe143c81e1aeae9",
          "body": "Scan called scanOne once per declared foreign-region marker pair, and\neach call re-walked the entire f.Lines slice, converting every line\nvia strings.TrimSpace(string(line)) — an O(regions x lines) cost with\none string allocation per line per region, even though every region's\nmarkers can be checked\n[…]\nsons. A test pins\nthat 5 regions costs close to what 1 region costs (a small per-region\nconstant), not 5x.\n\nRef: docs/development/high-performance-go.md (\"Stay in []byte\",\n\"Skip work you don't need\").",
          "is_bot": false,
          "headline": "perf(foreignregion): scan all declared regions in a single pass",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-21T20:43:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8002c52571e13fa5518d13ccc839c1a2324422f6",
          "body": "checkFootnotes ran two full-file regex passes (footnoteRefRE and\nfootnoteDefRE, each a FindAllSubmatchIndex over the whole source) on\nevery Check call, even for files with no footnote-style syntax at\nall. Benchmarked at ~585µs/op on a 28KB prose file with no footnotes,\nversus ~0.8µs/op once gated — \n[…]\nop, two\norders of magnitude above the gated cost) pins the regression so CI\ncatches a dropped gate.\n\nRef: docs/development/high-performance-go.md (\"Gate expensive\nanalyzers behind a cheap pre-check\").",
          "is_bot": false,
          "headline": "perf(MDS043): gate footnote regex scans behind a cheap byte needle",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-21T20:43:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e9e8430addc2b11006378c259d4b59c58994e2db",
          "body": "…er file\n\nCheck called validateGlobSettings() on every file — re-running\ndoublestar validation over the rule's Include/Exclude glob lists\neven though ApplySettings already validated the identical, static\nlist once when config was applied. MDS027 is default-enabled, so\nevery host file in a workspace \n[…]\nBool); the\nlayout test's expected size is updated accordingly with the packing\nmath for why 144 (not more) is optimal.\n\nRef: docs/development/high-performance-go.md (\"Memoize per-input\ncomputations\").",
          "is_bot": false,
          "headline": "perf(MDS027): cache glob-settings validation instead of re-checking p…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-21T20:42:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c2db2fae70c2d3539c126f991d4861a90c32dc39",
          "body": "Check/Fix unconditionally allocated a fresh visited map and chain\nslice, and took the rule-wide mutex serialising this default-enabled\nrule's Check calls across the engine's per-file parallel fan-out,\nbefore ever checking whether the file could contain an <?include?>\ndirective. MDS021 runs on every \n[…]\n allocating or\nlocking, matching the \"gate expensive analyzers behind a cheap\npre-check\" pattern already used elsewhere (e.g. nobareurls'\nmayContainURL).\n\nRef: docs/development/high-performance-go.md.",
          "is_bot": false,
          "headline": "perf(MDS021): gate include-directive alloc+lock behind a cheap needle",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-21T20:42:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f190821dcbb8b1c5f747795d1502cfda5fd301bc",
          "body": "File.Memo/MemoFile and RunCache's shared load() helper both paid two\nallocations on every cache-hit call: LoadOrStore's second argument\n(a throwaway &memoEntry{}/&runCacheEntry{}) is constructed before the\ncall and discarded whenever the key already exists, and\nsync.Once.Do(func(){ e.val = build() }\n[…]\nble-checked-lock pattern (no wrapping closure),\nbringing the warm path to zero allocations.\n\nRef: docs/development/high-performance-go.md (\"Reuse loop-local\nbuffers\", \"sync.Pool for transient state\").",
          "is_bot": false,
          "headline": "perf(lint): avoid closure-box allocation on RunCache/Memo warm path",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-21T20:42:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "313a354354b32ebf1047ab32ff2423e852212224",
          "body": "The directory walk and glob expansion both gate on isMarkdown, so a\nnon-Markdown file like .gitattributes is skipped when discovered. An\nexplicitly named path bypassed that gate: resolveArg added the file\nunconditionally after the symlink/regular-file checks.\n\nThe result was that `mdsmith check .git\n[…]\nck exits clean; a mixed run still lints the Markdown file).\n\nFixes #759\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_011giDUosuDeqRDVWgmWyaj5",
          "is_bot": false,
          "headline": "fix(cli): skip non-Markdown files named explicitly on check/fix",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T07:10:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8f5e5c456bd31a50af084c29a495f01e58e27da7",
          "body": "…en test\n\ncountPattern is only called when r.Pattern != nil (all callers guard it),\nso the nil check was dead code per the project's defensive-code rule\n(branches must be driveable red/green). Remove it and add a test for\nthe empty-token path in countToken to reach 100% statement coverage.",
          "is_bot": false,
          "headline": "fix(occurrence): remove dead nil guard in countPattern; add empty-tok…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T04:59:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9748dc52fd16557a457ff06e5785f367774419b0",
          "body": "…ng test coverage\n\nExtract per-setting helper methods from ApplySettings to satisfy the\ngocognit <= 30 limit. Also add tests for file-scope each mode,\nsection-scope combined and pattern modes, type-error paths in\nApplySettings helpers, and multi-section range-skip branches,\nraising unit coverage from 79% to 99%.",
          "is_bot": false,
          "headline": "fix(occurrence): reduce ApplySettings cognitive complexity; add missi…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T04:54:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e4b5f6253e5515c1212dea1b77d802e569380d7",
          "body": "Counts each configured token or regex pattern within a scope unit\n(paragraph, heading-bounded section, or file) and flags when the count\nfalls below `min` or exceeds `max`. Prose only — fenced and indented\ncode blocks are excluded via CollectSectionParagraphsWithText.\n\nFixes found during code review\n[…]\nlySettings (negative min silently made the\n  lower bound unreachable)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01FgvajK8jHk49ncLChABAq2",
          "is_bot": false,
          "headline": "feat(rules): add MDS060 occurrence rule (plan 2607022118)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T04:47:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "17d105c2f409de279819b9e2a3eecaa4a78dacd0",
          "body": "…erage\n\ncheckSlide had cognitive complexity 43 (limit 30 per gocognit). Extracted\nfive focused helpers — checkUnknownLayout, checkMissingSlots,\ncheckOrphanedSlots, checkRequiredField, checkUnknownFMKeys — and a\nslideAnchor helper, bringing each under the 30 threshold.\n\nAlso: wrapped three function s\n[…]\nm layouts, editDistance long-string fast path). Coverage is now 100%.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01XuZxrLeEEvhipjbH6Uueuk",
          "is_bot": false,
          "headline": "refactor(MDS073): extract checkSlide helpers to fix gocognit, add cov…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T04:01:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "40dfc230d0b43c31e3827e48c19b8a82ad69ba5b",
          "body": "…s; drop min3; use slices.Contains\n\nRound-3 code review fixes for the slide-structure rule:\n\n- hasFrontmatterAfter now continues past blank lines when a key has\n  already been seen (YAML 1.2 §8.1.2 allows blank lines in mappings),\n  preventing frontmatter blocks like `layout: cover\\n\\nbackground: /b\n[…]\n missing\nfield still flagged, and YAML comment inside frontmatter OK.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01XuZxrLeEEvhipjbH6Uueuk",
          "is_bot": false,
          "headline": "fix(MDS073): hasFrontmatterAfter accepts blank lines and YAML comment…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T03:51:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "91557dd1c930e5e575e19369719c3287207d3f36",
          "body": "- hasFrontmatterAfter: replace isYAMLIdent with space-in-key check\n  so dotted pass-through data keys (v1.url, x.data) no longer cause\n  the entire mid-deck frontmatter block to be silently dropped; delete\n  the now-dead isYAMLIdent helper\n- parseSlides: clamp cur.startLine when a leading headmatter\n[…]\ng to cover\n  the frontmatter-dropped regression introduced in Round 1\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01XuZxrLeEEvhipjbH6Uueuk",
          "is_bot": false,
          "headline": "fix(MDS073): address 5 findings from code-review Round 2",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T03:20:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "25fd2de86a4b696c1cb34898c8a34c68e72ecc8a",
          "body": "- editDistance: use [65]int stack arrays; no heap allocations for\n  strings ≤ 64 bytes (keeps rule under 10 allocs/op budget)\n- init(): build sortedBuiltinLayouts and sortedKnownFMKeys once so\n  layoutCandidates() and checkSlide() iterate deterministically\n- hasFrontmatterAfter: add isYAMLIdent guar\n[…]\nrop the trailing '?'\n- Fix builtinLayouts comment: 19 layouts, not 18\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01XuZxrLeEEvhipjbH6Uueuk",
          "is_bot": false,
          "headline": "fix(MDS073): address 9 code-review findings from Round 1",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T02:32:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "66fa6e0318e512e00daa1e5323e34fd2bdc78606",
          "body": "…le fully implemented\n\nAll nine tasks and all acceptance criteria verified green: rule package,\nslide parser, five checks, registration, configurable custom-layouts,\nslidev convention wiring, fixtures, README, and conventions.md docs.\ngo test ./..., go vet ./..., and mdsmith check . all pass.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01XuZxrLeEEvhipjbH6Uueuk",
          "is_bot": false,
          "headline": "docs(plan): mark plan 2607171900 complete — MDS073 slide-structure ru…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T02:08:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9d61ee492b9725e1088f39f0e04ef29038f6d28c",
          "body": "Follows the project conventions established by setutil.TestContains_Nil,\nTestContains_Empty, and TestScopeRunIndicesAcceptsStructSet: nil and\nempty-map inputs must return false, and a compile-time assertion pins\nthe claimed parameter to map[int]struct{} so a silent drift to bool\nwould fail to compile.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01SZhZLDQbbu9MyHzgL1Sfjs",
          "is_bot": false,
          "headline": "test(schema): add nil/empty and type-pin tests for IsClaimed",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T00:25:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "07422ca5f4d4d5c0ba68982bf6af0a75845a737c",
          "body": "…deletion\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01SZhZLDQbbu9MyHzgL1Sfjs",
          "is_bot": false,
          "headline": "style(requiredstructure): remove double blank line left by isClaimed …",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T00:19:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a22f034415066233bab3a4dd67f7abcb30ff0519",
          "body": "Removes the comment's refactor history and internal caller list, both\nof which violate CLAUDE.md's \"don't reference callers\" rule. Regenerates\nthe PLAN.md catalog which was out of date.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01SZhZLDQbbu9MyHzgL1Sfjs",
          "is_bot": false,
          "headline": "refactor(schema): trim IsClaimed doc to one line; fix PLAN.md catalog",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T00:16:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1c080e605e5e35d070ce83ed23fe4fdd88732ade",
          "body": "Removes the unnecessary wrapper (IsClaimed → isClaimed) by renaming\nthe private isClaimed to IsClaimed throughout the schema package\n(validate.go, matchtree.go, validate_content.go) and deleting the\nforwarding stub. Adds TestIsClaimed covering the present/absent\nbranches per the project's Red/Green TDD convention.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01SZhZLDQbbu9MyHzgL1Sfjs",
          "is_bot": false,
          "headline": "refactor(schema): simplify IsClaimed to single exported definition",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T00:11:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2568ac13a7fadabf0c1946a3d106bd3d8b3b1282",
          "body": "…ructure\n\nExports schema.IsClaimed from internal/schema/validate.go and removes\nthe byte-for-byte copy in requiredstructure/rule.go, which already\nimported internal/schema. Closes plan 2607191918.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01SZhZLDQbbu9MyHzgL1Sfjs",
          "is_bot": false,
          "headline": "refactor(schema): export IsClaimed and remove duplicate in requiredst…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-20T00:05:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cd3bb671c975bcde44f8b1f66f4b7208efe11898",
          "body": "golangci-lint's errcheck flagged the unchecked return value of\nfmt.Fprintf(w, ...) inside the setInitUsage closure. Add the\nstandard _, _ = discard prefix to match the rest of the file.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(lint): suppress errcheck on fmt.Fprintf in setInitUsage",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T22:28:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "70d1a817958e80f1216b9aeb2731c85af56b749d",
          "body": "… description columns\n\nTestSetInitUsage now registers --force with the actual production description\n(\"Overwrite an existing .mdsmith.yml instead of leaving it unchanged\") so\nthe PrintDefaults pin matches what a real user sees, not an arbitrary stub.\n\nTestPrintInitCatalog adds description/summary as\n[…]\non column from printInitCatalog's format string would break the test.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_013KgrSLVGA3ioVKvpNkK9ar",
          "is_bot": false,
          "headline": "review(round3): use production flag description; pin printInitCatalog…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T22:23:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8cb19346f5f412383673cc7764d7032e30571c96",
          "body": "…r in setInitUsage\n\nsetInitUsage now calls fs.SetOutput(w) so both the header (fmt.Fprintf)\nand the flag list (fs.PrintDefaults) flow to the same writer without\ncallers having to align them independently. TestSetInitUsage asserts\n\"overwrite existing .mdsmith.yml\" — a string that only PrintDefaults c\n[…]\ne / BoolVar(&force) for BoolVar(new(bool)) to drop the dead\nvariable.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_013KgrSLVGA3ioVKvpNkK9ar",
          "is_bot": false,
          "headline": "review(round2): pin PrintDefaults via description assert; unify write…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T22:17:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d4af5d522286e45b5b614bd99a4e9b5254302139",
          "body": "…coped .gitattributes",
          "is_bot": false,
          "headline": "Merge PR #753: chore(ci): bump pinned baseline to v0.53.0 and adopt s…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-19T22:17:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f13752986a90245449d0d152c56dcf56d27b4e6f",
          "body": "…aults in test\n\nsetInitUsage now accepts io.Writer (matching printInitCatalog) so the test\ncan pass a bytes.Buffer directly instead of redirecting the global os.Stderr\nthrough captureStderr. TestSetInitUsage registers --force on the FlagSet and\ncalls fs.SetOutput(&buf) so fs.PrintDefaults() output a\n[…]\nws into the\nbuffer, covering the path that was silently empty before.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_013KgrSLVGA3ioVKvpNkK9ar",
          "is_bot": false,
          "headline": "review(round1): inject io.Writer into setInitUsage; exercise PrintDef…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T22:12:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ee610452af327047cee31c5b6a08d58728d8a5c5",
          "body": "…butes\n\nv0.53.0 ships the markdown-scoped merge-driver excludes (#750). Bump the\npinned compatibility baseline in setup-mdsmith-pinned-version to it, then\nadopt the format the repository deferred while the pin predated it:\n\n- Regenerate .gitattributes to the markdown-scoped managed block (the\n  exac\n[…]\nheck .` lints the repo clean (so the mdsmith-fixed-version job passes).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01NK7yWgvWUN5xD1NTuGVZvZ",
          "is_bot": false,
          "headline": "chore(ci): bump pinned baseline to v0.53.0 and adopt scoped .gitattri…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T22:06:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0edff6e87aef9cbe953c1f26ad46680a588e95b7",
          "body": "Direct unit tests for printInitCatalog (bytes.Buffer, no subprocess)\nand setInitUsage (pflag.FlagSet + captureStderr, no subprocess), as\nrequired by tests.md's per-function rule. Closes plan 2607191917.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_013KgrSLVGA3ioVKvpNkK9ar",
          "is_bot": false,
          "headline": "test(init): add TestPrintInitCatalog and TestSetInitUsage unit tests",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T22:05:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bfd0deb3447c66c80e648629744bc0bcdf173830",
          "body": "… 2606270013)",
          "is_bot": false,
          "headline": "Merge PR #706: feat(convention): add built-in slidev convention (plan…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-19T21:47:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db173e6357382152b1d65b43b16704a65ae68716",
          "body": "Adds unit tests for the parsing edge cases the fixtures did not exercise\n(leading headmatter fence, plain separators, code-fence skipping, prose\nafter a separator, keys-to-EOF, empty layout value, editDistance empty\nstrings) and the trivial accessors, bringing slidevstructure to 100%\nstatement cover\n[…]\nnreachable empty-slot-name branch (len>=5 guarantees a non-empty name).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_012teDVC4T7vuxdaTBSBQ4nJ",
          "is_bot": false,
          "headline": "test(rules): cover MDS073 edge branches; drop dead slotName check",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T21:45:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8a25339fbe00a045ef7ef0164d6fdf9242791541",
          "body": "…-53wfw2\n\n# Conflicts:\n#\tPLAN.md",
          "is_bot": false,
          "headline": "Merge remote-tracking branch 'origin/main' into claude/youthful-knuth…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T21:40:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73afaf43bf6fe73bd16c67d9a648c03164032406",
          "body": "…-53wfw2\n\n# Conflicts:\n#\tPLAN.md\n#\tinternal/integration/perrule_bench_test.go\n#\tinternal/integration/testdata/rule_walk_audit.json\n#\tinternal/rulelayer/rule_walk_audit.json\n#\tinternal/rules/index.md",
          "is_bot": false,
          "headline": "Merge remote-tracking branch 'origin/main' into claude/youthful-knuth…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T21:38:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7e4925a813266dbd74dddfec79f8170e4c185119",
          "body": "main merged an MDS072 (external-link-check) rule while this work was in\nflight, so slide-structure takes the next free ID, MDS073. Renames the\nfixture directory, the rule ID, the README, the convention/bench\nreferences, and regenerates the walk-audit manifests, rules index, and\ncoverage matrix.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_012teDVC4T7vuxdaTBSBQ4nJ",
          "is_bot": false,
          "headline": "refactor(rules): renumber slide-structure MDS072 -> MDS073",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T21:31:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4b77cd38520dc2d79c4c0e86bf66b8d99dbfc4c7",
          "body": null,
          "is_bot": false,
          "headline": "Merge PR #751: Split init-subcommand logic out of cmd/mdsmith/main.go",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-19T21:27:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5569107a6d6e87bd03ae850a8ce490bfbab5bb7a",
          "body": null,
          "is_bot": false,
          "headline": "Merge PR #749: feat: foreign managed-region protection for `mdsmith fix`",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-19T21:27:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "431316a7b794cf1570853a5cb34efe2c71e2a9e9",
          "body": "…o Markdown (#750)",
          "is_bot": false,
          "headline": "Merge PR #752: fix(merge-driver): scope ignore-derived -merge lines t…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-19T21:20:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "298434e76c3638c385864e6b29a142a90e012428",
          "body": "…n test and doc updates",
          "is_bot": false,
          "headline": "Merge PR #748: docs(wordlists): complete plan 2606251522 — integratio…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-19T21:19:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "15af26c6561f5eed0efe5e92781f1d6a8bf56b89",
          "body": "… for the pinned queue\n\nThe merge queue validates .gitattributes with `merge-driver ci-install`\nrun by the *pinned* release baseline (setup-mdsmith-pinned-version,\ncurrently v0.41.0), which predates the markdown-scoping change and\nexpects the bare `demo/** -merge` render. Regenerating the repository\n[…]\nto GlobsFromConfig. See\ndocs/development/adopt-new-directive-syntax.md.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01NK7yWgvWUN5xD1NTuGVZvZ",
          "is_bot": false,
          "headline": "fix(merge-driver): keep committed .gitattributes on the legacy format…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T21:13:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "01acd73ee311b8c75b92ba44178b82445857cfcc",
          "body": "Match the repository's established pattern for returning a fresh copy of\na package-level slice (internal/testcorpus/abbr.go, cue/cuelite/path.go)\ninstead of the append-to-nil form. No behavior change.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01NK7yWgvWUN5xD1NTuGVZvZ",
          "is_bot": false,
          "headline": "refactor(mdpath): use slices.Clone in Extensions",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T20:20:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8cee6ede4e26c8e73426010e931141063cfa70b6",
          "body": "…truth\n\nThe set of file extensions mdsmith treats as Markdown (.md, .markdown)\nwas duplicated across ~8 packages: config file-discovery globs, the CLI\ndirectory walk, the merge-driver include set and discovery walk, the LSP\ndocument selector and file watcher, wikilink resolution, and the\nlink-style \n[…]\nth like the rest, so an uppercase README.MD is\ndiscovered consistently.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01NK7yWgvWUN5xD1NTuGVZvZ",
          "is_bot": false,
          "headline": "refactor(mdpath): make the markdown extension set a single source of …",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T20:07:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "db0b98d974b797b29a8b628c82c024b12bda835f",
          "body": "…coping\n\nCode-review follow-up to the markdown-scoped exclude change.\n\nA gitignore-style trailing-slash ignore pattern (e.g. `build/` or\n`node_modules/`) has an empty final path segment, which fell into\nscopeExcludeToMarkdown's default branch and produced a malformed\n`build//**/*.md` double slash. F\n[…]\nextensions\nvia filepath.Ext rather than trimming a leading `*` by hand.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01NK7yWgvWUN5xD1NTuGVZvZ",
          "is_bot": false,
          "headline": "fix(merge-driver): handle trailing-slash ignore patterns in exclude s…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T19:50:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "81c5208010e5532794d87e986a1a95a0b2d7894b",
          "body": "`mdsmith merge-driver install` derived one `-merge` line per\n`.mdsmith.yml` `ignore:` pattern and wrote it verbatim into\n`.gitattributes`. But `ignore:` is a markdown-lint scoping list, while a\nbare `demo/** -merge` attribute is not extension-scoped: it disabled\ngit's 3-way merge for every file in t\n[…]\nhe repository's\nown committed `.gitattributes` is regenerated to match.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01NK7yWgvWUN5xD1NTuGVZvZ",
          "is_bot": false,
          "headline": "fix(merge-driver): scope ignore-derived -merge lines to Markdown (#750)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T19:43:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f601240de0043090c12c4d801a9b9402274470dc",
          "body": "Round-3 review caught it: sarif_test.go has 16 top-level Test\nfunctions, not 12.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017Req4a3SADus6KRYrmYqKg",
          "is_bot": false,
          "headline": "Fix test-count claim in audit log's sarif.go finding",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T19:42:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "26c7ac5ddd60ce9cbcc219331cbfad911eb037be",
          "body": "Round-2 code review found the task offered a dead alternative:\nsetInitUsage's closure hardcodes os.Stderr with no writer parameter,\nso \"redirecting the closure's writer\" was never actually an option.\nPoint at captureStderr directly.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017Req4a3SADus6KRYrmYqKg",
          "is_bot": false,
          "headline": "Tighten plan/2607191917's TestSetInitUsage task wording",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T19:37:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5d670e230dd270f64f39bb06d4b71b0cb25d5167",
          "body": "- Normalize os.WriteFile's mode literal to 0o644 in writeInitConfig,\n  matching the sibling call in writeScaffolds in the same file.\n- Document the archive-sharding convention this cycle improvised\n  (split into a numbered shard, never bump max-file-length without\n  consent) in the audit-checklist s\n[…]\nginal audit sweep) into plan/2607191917\n  alongside printInitCatalog's.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017Req4a3SADus6KRYrmYqKg",
          "is_bot": false,
          "headline": "Address code-review findings on the init.go split",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T19:33:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ad1d31edee5f49b98e1f85b631ca68929aa73d82",
          "body": "The 2026-07-19 architecture audit found that main.go crossed the\nproject's documented ~1000-line threshold, almost entirely from the\nnew `mdsmith init --add` pack-scaffolding machinery. Move that logic\ninto cmd/mdsmith/init.go, matching the existing per-subcommand file\npattern (check.go, fix.go, dep\n[…]\ninto a second shard\nnow that the first exceeded the file-length budget.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017Req4a3SADus6KRYrmYqKg",
          "is_bot": false,
          "headline": "Split init-subcommand logic out of cmd/mdsmith/main.go",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T19:24:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f0a7c3140a263de5a96ddabdfd5d6b88ffdece1c",
          "body": "…tart span\n\nRound-3 review of the foreign-regions feature:\n\n- config: dedup foreign-region marker pairs by their *trimmed* markers,\n  matching the scanner's whole-line-after-TrimSpace comparison. A raw\n  `==` let two pairs that differ only in surrounding whitespace (e.g.\n  \"<!-- x -->\" vs \" <!-- x -\n[…]\n paths (Scan and Restore), and add a whitespace-variant dedup\n  test.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EwKxDxhjkTQPPkBrNhsrNG",
          "is_bot": false,
          "headline": "review(round3): trim-aware pair dedup, doc accuracy, lock duplicate-s…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T18:58:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b3280ef0cd1b83a442820d24b4ef27a4854baf9b",
          "body": "Two adversarial-review fixes for the foreign-regions feature:\n\n- EffectiveForeignRegions now dedups identical marker pairs. A pair\n  declared both top-level and on a matching override (or repeated in a\n  list) previously produced duplicate protected ranges and duplicate\n  MDS073 diagnostics, because\n[…]\ngn-regions[j] instead\n  of an ambiguous top-level foreign-regions[j].\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EwKxDxhjkTQPPkBrNhsrNG",
          "is_bot": false,
          "headline": "review(round2): dedup foreign-region pairs and name override in errors",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T18:49:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "162105b438341ad7bce0c103f09f0f4f7e66e6df",
          "body": "Code-review round 1 fixes for the foreign-regions feature (PR #749).\n\nCorrectness: no bugs found. Scan (line ranges) and matchedRegionSpans\n(byte spans) agree on the matched-pair state machine, GeneratedRanges\nare produced and consumed in consistent post-front-matter coordinates,\nand the parse-time \n[…]\njection, and\ncopyForeignRegions. All three flagged files now at 100%.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EwKxDxhjkTQPPkBrNhsrNG",
          "is_bot": false,
          "headline": "review(round1): single-pass foreign-region restore + coverage",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T18:42:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3d55f0294ed488660dc43f5dff27243b61819f2e",
          "body": "Document the foreign-regions: config key, its override scoping, the\nopacity contract, and the MDS073 malformed-region diagnostic. Regenerate\nthe CLAUDE.md, reference-index, AGENTS.md, and copilot-instructions\ncatalogs/includes, and mark plan 2607082049 done.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EwKxDxhjkTQPPkBrNhsrNG",
          "is_bot": false,
          "headline": "docs: add foreign-regions reference and mark plan complete",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T18:33:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "334a10628ff5e0e6d910a96e9ad824754e4ba5c9",
          "body": "…d convention-files\n\n- Split the single YAML code block in placeholder-grammar.md into two\n  separate blocks with distinct file headers; the previous block put\n  `rules:` inside the wordlist file, which strict decoding rejects as\n  an unknown key\n- Add \"is separate\" to the lists: sentence in convent\n[…]\ntly, per CLAUDE.md writing\n  guideline to avoid vague mechanism verbs\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Qk4dXhBDW1BF3ecCRA64gP",
          "is_bot": false,
          "headline": "code-review R3: fix split YAML block, clarify lists: vs allow:, rewor…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T18:31:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "754bb11b48414662a8e2d25e6b7dab4487c49079",
          "body": "Fold the config validation calls into validateConfigSemantics and the\nrunner's foreign-region check into checkWithForeignRegions so\nloadFromBytes and lintFile stay under the funlen budget.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EwKxDxhjkTQPPkBrNhsrNG",
          "is_bot": false,
          "headline": "refactor: extract foreign-region helpers to satisfy funlen",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T18:29:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1a24c4f8602697f73306682cd8cf9793bf4af7b4",
          "body": "…ntions wording\n\n- Use assert.True (not require.True) in word loop so all three\n  assertions run even when one fails\n- Return .mdsmith.yml path from wordlistFileContractFixture, consistent\n  with the three sibling contract fixtures; callers use filepath.Dir\n- Update plan task 9 to explain that fixtu\n[…]\ny\n  that preset entries must be re-enumerated, not merely appended to\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Qk4dXhBDW1BF3ecCRA64gP",
          "is_bot": false,
          "headline": "code-review R2: assert.True, fixture return value, plan task 9, conve…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T18:21:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f913d78e3c1fdf07d0e27fddf05e2498ee11bb34",
          "body": "Append foreign-region spans to GeneratedRanges so style rules skip\ndiagnostics inside a declared marker pair, and restore the original\nin-region bytes after fixing so no fixer rewrites them. Whole-file rules\n(MDS022, MDS028) read raw source, so they keep counting the bytes.\nMalformed pairs surface as MDS073 on both the check and fix paths.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EwKxDxhjkTQPPkBrNhsrNG",
          "is_bot": false,
          "headline": "feat(fix,engine): protect foreign regions in check and fix pipelines",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T18:18:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2588c3db5c2266d7268616d143732b2102b63306",
          "body": "Scan returns inclusive line ranges for matched {start,end} marker pairs\nand a diagnostic (MDS073) for each malformed region: unmatched start,\norphaned end, or duplicate start.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EwKxDxhjkTQPPkBrNhsrNG",
          "is_bot": false,
          "headline": "feat(foreignregion): add marker-pair region scanner",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T18:12:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "00b104e491e31ebdc64677757a7d9d534d969662",
          "body": "Parse a top-level foreign-regions: list of {start, end} pairs, glob-\nscopable via overrides through EffectiveForeignRegions. Reject blank or\nidentical markers.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EwKxDxhjkTQPPkBrNhsrNG",
          "is_bot": false,
          "headline": "feat(config): add foreign-regions marker-pair config key",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T18:10:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "819a7c2bffc5c4d24638a333a41d26c12b406b61",
          "body": "- Rename wordlist_files_test.go -> wordlist_file_contract_test.go to\n  match the established *_file_contract_test.go pattern (D2)\n- Extract wordlistFileContractFixture helper to DRY up workspace setup\n  and mirror kind/schema/convention contract test structure (D1)\n- Expand integration test: add \"ci\n[…]\nlists:-appends (B1, B2)\n- Check off all plan acceptance criteria (H3)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Qk4dXhBDW1BF3ecCRA64gP",
          "is_bot": false,
          "headline": "fix(review-r1): address round-1 code review findings",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T18:01:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3f9fd79dc9ae2c7d51f6a2ba16785653152499a3",
          "body": "…doc updates\n\n- Add integration test TestWordlistFiles_ExtendsChainResolvesAndDiagnosticFires\n  that verifies extends-chain resolution fires MDS056 on an inherited word\n- Document `lists:` on placeholder rules in placeholder-grammar.md\n- Document `lists:` in convention files in convention-files.md\n-\n[…]\ns-appends behaviour in conventions.md\n- Mark plan 2606251522 complete\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Qk4dXhBDW1BF3ecCRA64gP",
          "is_bot": false,
          "headline": "docs(wordlists): complete plan 2606251522 — add integration test and …",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-19T17:36:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7ea13e046c18f9c5e0b0c4d6218aeb8def6eab21",
          "body": "…607171900) (#745)\n\n* feat(rules): add MDS072 slide-structure for Slidev decks\n\nAn opt-in per-slide structural rule that catches Slidev's silent\nfailure modes — unmatched ::slot::, unknown layout, missing\nlayout-required field, and typo'd frontmatter keys — none of which\nSlidev itself reports. The r\n[…]\nde markers).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_012teDVC4T7vuxdaTBSBQ4nJ\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(rules): add MDS072 slide-structure — real Slidev linting (plan 2…",
          "author_name": "Jan-Eric Duden",
          "author_login": "jeduden",
          "committed_at": "2026-07-19T16:42:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6680ff53d440337d780e62d19d6eb65a4e1b6e2c",
          "body": null,
          "is_bot": false,
          "headline": "Merge PR #707: feat(MDS072): add external-link-check rule (issue #47)",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-19T14:39:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "37511e4be58f4be8a48bb425ea8d975235979f3d",
          "body": "…bility metrics",
          "is_bot": false,
          "headline": "Merge PR #747: feat(metrics): add `metrics get` subcommand with reada…",
          "author_name": "merge-queue-bot",
          "author_login": null,
          "committed_at": "2026-07-19T14:33:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90b78bde43537f5fb5009346fd9defa58eeb5470",
          "body": "- extract executeMetricsGet(w io.Writer, format, path) int from\n  runMetricsGet, matching the executeMetricsRank pattern, so the\n  writeGetOutput error path is testable with an injected writer\n- add TestExecuteMetricsGet_WriteError_ExitsTwo to exercise the new\n  function's write-error branch\n- add T\n[…]\nhe existing PlainTextError test only hits\n  the WordCount error path)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BjaGA7w2gqtcdgMbGjgsh9",
          "is_bot": false,
          "headline": "fix(coverage): cover three uncovered diff paths to pass patch gate",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-18T10:02:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7143b692871b99ff93372b05326a5211270b4aa5",
          "body": "- refactor(metrics/get): replace collectGetItem with metricspkg.Collect,\n  eliminating duplicated file-read and per-metric compute logic\n- fix(metrics/get): add SetEscapeHTML(false) to JSON encoder so <, >, &\n  in file paths are never mangled to Unicode escapes\n- fix(metrics/get): replace type switc\n[…]\nosures in metrics_unit_test.go so test stops at root cause on failure\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BjaGA7w2gqtcdgMbGjgsh9",
          "is_bot": false,
          "headline": "fix(metrics): apply Round 3 code-review fixes",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-18T09:52:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "92581a202b6c5b4317e1a0588b27678f9827046d",
          "body": "…re.Error preconditions\n\ntabwriter.Writer buffers all cell data to an internal byte slice and only\nwrites to the underlying io.Writer at Flush() time.  The intermediate\nif _, err := fmt.Fprintln(tw, ...); err != nil checks could never fire,\nmaking them dead code that Codecov flagged as uncovered pat\n[…]\n fails the test cleanly\nrather than panicking inside assert.Contains.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BjaGA7w2gqtcdgMbGjgsh9",
          "is_bot": false,
          "headline": "fix(coverage): remove dead code in writeMetricsGetText; restore requi…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-18T09:23:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 63,
      "commits_last_year": 3548,
      "latest_release_at": "2026-07-25T19:38:15Z",
      "latest_release_tag": "v0.54.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 25,
      "days_since_latest_release": 1,
      "mean_days_between_releases": 4.8
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 57,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/jeduden/mdsmith",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/jeduden/mdsmith",
          "is_deprecated": false,
          "latest_version": "v0.54.0",
          "repository_url": "https://github.com/jeduden/mdsmith",
          "versions_count": 64,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-25T19:22:07Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 1
        },
        {
          "name": "mdsmith",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "docs",
            "formatter",
            "linter",
            "markdown",
            "mdsmith",
            "Development Status :: 4 - Beta",
            "Environment :: Console",
            "Intended Audience :: Developers",
            "License :: OSI Approved :: MIT License",
            "Operating System :: MacOS",
            "Operating System :: Microsoft :: Windows",
            "Operating System :: POSIX :: Linux",
            "Programming Language :: Go",
            "Programming Language :: Python :: 3",
            "Topic :: Software Development :: Documentation",
            "Topic :: Software Development :: Quality Assurance",
            "Topic :: Text Processing :: Markup :: Markdown"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/mdsmith/",
          "is_deprecated": false,
          "latest_version": "0.54.0",
          "repository_url": "https://github.com/jeduden/mdsmith",
          "versions_count": 46,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 1334,
          "first_published_at": "2026-05-09T00:09:33.077866Z",
          "latest_published_at": "2026-07-25T19:37:06.330168Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 1
        }
      ]
    },
    "popularity": {
      "forks": 1,
      "stars": 10,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-06-14",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 1,
        "total_forks": 1
      },
      "star_history": null,
      "open_issues_and_prs": 6
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "editors/obsidian/tsconfig.json",
        "editors/vscode/tsconfig.json",
        "npm/mdsmith/tsconfig.json"
      ],
      "toolchain_manifests": [
        "go.mod",
        "tools/go.mod"
      ],
      "largest_source_bytes": 401894,
      "source_files_sampled": 1428,
      "oversized_source_files": 10,
      "agent_instruction_files": [
        ".github/copilot-instructions.md",
        ".github/instructions/code-review.instructions.md",
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 32785
    },
    "dependencies": {
      "manifests": [
        "go.mod",
        "python/pyproject.toml",
        "tools/go.mod"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.15",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-mh99-v99m-4gvg"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 2,
            "oldest_advisory_days": 6
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.2.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 1,
            "oldest_advisory_days": 6
          },
          {
            "name": "linkify-it",
            "direct": false,
            "version": "5.0.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-v245-v573-v5vm"
            ],
            "fixed_version": "5.0.2",
            "advisory_count": 1,
            "oldest_advisory_days": 5
          },
          {
            "name": "golang.org/x/text",
            "direct": false,
            "version": "v0.38.0",
            "severity": "unknown",
            "ecosystem": "go",
            "cvss_score": null,
            "advisory_ids": [
              "GO-2026-5970"
            ],
            "fixed_version": "0.39.0",
            "advisory_count": 1,
            "oldest_advisory_days": 12
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 3,
          "unknown": 1
        },
        "advisory_count": 5,
        "affected_count": 4,
        "assessed_count": 405,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 14,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "go",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "github.com/bmatcuk/doublestar/v4",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v4.10.0"
        },
        {
          "name": "github.com/hexops/gotextdiff",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.0.3"
        },
        {
          "name": "github.com/mattn/go-runewidth",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.24"
        },
        {
          "name": "github.com/neurosnap/sentences",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.1.2"
        },
        {
          "name": "github.com/pelletier/go-toml",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.9.5"
        },
        {
          "name": "github.com/spf13/pflag",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.0.10"
        },
        {
          "name": "github.com/stretchr/testify",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.11.1"
        },
        {
          "name": "github.com/tetratelabs/wazero",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.12.0"
        },
        {
          "name": "github.com/vmihailenco/msgpack/v5",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v5.4.1"
        },
        {
          "name": "golang.org/x/mod",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.38.0"
        },
        {
          "name": "golang.org/x/net",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.57.0"
        },
        {
          "name": "golang.org/x/sync",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.22.0"
        },
        {
          "name": "golang.org/x/sys",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.47.0"
        },
        {
          "name": "golang.org/x/tools",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.48.0"
        },
        {
          "name": "gopkg.in/yaml.v3",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.0.1"
        },
        {
          "name": "github.com/bmatcuk/doublestar/v4",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v4.10.0"
        },
        {
          "name": "github.com/hexops/gotextdiff",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.0.3"
        },
        {
          "name": "github.com/mattn/go-runewidth",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.24"
        },
        {
          "name": "github.com/neurosnap/sentences",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.1.2"
        },
        {
          "name": "github.com/pelletier/go-toml",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.9.5"
        },
        {
          "name": "github.com/spf13/pflag",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.0.10"
        },
        {
          "name": "github.com/stretchr/testify",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.11.1"
        },
        {
          "name": "github.com/tetratelabs/wazero",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.11.0"
        },
        {
          "name": "github.com/vmihailenco/msgpack/v5",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v5.4.1"
        },
        {
          "name": "golang.org/x/mod",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.36.0"
        },
        {
          "name": "golang.org/x/net",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.56.0"
        },
        {
          "name": "golang.org/x/sys",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.46.0"
        },
        {
          "name": "golang.org/x/tools",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.45.0"
        },
        {
          "name": "gopkg.in/yaml.v3",
          "manifest": "tools/go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.0.1"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "github.com/bmatcuk/doublestar/v4",
            "direct": true,
            "version": "v4.10.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/hexops/gotextdiff",
            "direct": true,
            "version": "v1.0.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/mattn/go-runewidth",
            "direct": true,
            "version": "v0.0.24",
            "ecosystem": "go"
          },
          {
            "name": "github.com/neurosnap/sentences",
            "direct": true,
            "version": "v1.1.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pelletier/go-toml",
            "direct": true,
            "version": "v1.9.5",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/pflag",
            "direct": true,
            "version": "v1.0.10",
            "ecosystem": "go"
          },
          {
            "name": "github.com/stretchr/testify",
            "direct": true,
            "version": "v1.11.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/tetratelabs/wazero",
            "direct": true,
            "version": "v1.11.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/tetratelabs/wazero",
            "direct": true,
            "version": "v1.12.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/vmihailenco/msgpack/v5",
            "direct": true,
            "version": "v5.4.1",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/mod",
            "direct": true,
            "version": "v0.36.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/mod",
            "direct": true,
            "version": "v0.38.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/net",
            "direct": true,
            "version": "v0.56.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/net",
            "direct": true,
            "version": "v0.57.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/sync",
            "direct": true,
            "version": "v0.21.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/sync",
            "direct": true,
            "version": "v0.22.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/sys",
            "direct": true,
            "version": "v0.46.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/sys",
            "direct": true,
            "version": "v0.47.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/tools",
            "direct": true,
            "version": "v0.45.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/tools",
            "direct": true,
            "version": "v0.48.0",
            "ecosystem": "go"
          },
          {
            "name": "gopkg.in/yaml.v3",
            "direct": true,
            "version": "v3.0.1",
            "ecosystem": "go"
          },
          {
            "name": "4d63.com/gocheckcompilerdirectives",
            "direct": false,
            "version": "v1.3.0",
            "ecosystem": "go"
          },
          {
            "name": "4d63.com/gochecknoglobals",
            "direct": false,
            "version": "v0.2.2",
            "ecosystem": "go"
          },
          {
            "name": "codeberg.org/chavacava/garif",
            "direct": false,
            "version": "v0.2.0",
            "ecosystem": "go"
          },
          {
            "name": "codeberg.org/polyfloyd/go-errorlint",
            "direct": false,
            "version": "v1.9.0",
            "ecosystem": "go"
          },
          {
            "name": "dev.gaijin.team/go/exhaustruct/v4",
            "direct": false,
            "version": "v4.0.0",
            "ecosystem": "go"
          },
          {
            "name": "dev.gaijin.team/go/golib",
            "direct": false,
            "version": "v0.6.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/4meepo/tagalign",
            "direct": false,
            "version": "v1.4.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/abirdcfly/dupword",
            "direct": false,
            "version": "v0.1.7",
            "ecosystem": "go"
          },
          {
            "name": "github.com/adminbenni/iota-mixing",
            "direct": false,
            "version": "v1.0.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/alecthomas/chroma/v2",
            "direct": false,
            "version": "v2.21.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/alecthomas/go-check-sumtype",
            "direct": false,
            "version": "v0.3.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/alexkohler/nakedret/v2",
            "direct": false,
            "version": "v2.0.6",
            "ecosystem": "go"
          },
          {
            "name": "github.com/alexkohler/prealloc",
            "direct": false,
            "version": "v1.0.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/alfatraining/structtag",
            "direct": false,
            "version": "v1.0.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/alingse/asasalint",
            "direct": false,
            "version": "v0.0.11",
            "ecosystem": "go"
          },
          {
            "name": "github.com/alingse/nilnesserr",
            "direct": false,
            "version": "v0.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/alwxsin/noinlineerr",
            "direct": false,
            "version": "v1.0.5",
            "ecosystem": "go"
          },
          {
            "name": "github.com/antonboom/errname",
            "direct": false,
            "version": "v1.1.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/antonboom/nilnil",
            "direct": false,
            "version": "v1.1.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/antonboom/testifylint",
            "direct": false,
            "version": "v1.6.4",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ashanbrown/forbidigo/v2",
            "direct": false,
            "version": "v2.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ashanbrown/makezero/v2",
            "direct": false,
            "version": "v2.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/aymanbagabas/go-osc52/v2",
            "direct": false,
            "version": "v2.0.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/beorn7/perks",
            "direct": false,
            "version": "v1.0.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/bkielbasa/cyclop",
            "direct": false,
            "version": "v1.2.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/blizzy78/varnamelen",
            "direct": false,
            "version": "v0.8.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/bombsimon/wsl/v4",
            "direct": false,
            "version": "v4.7.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/bombsimon/wsl/v5",
            "direct": false,
            "version": "v5.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/breml/bidichk",
            "direct": false,
            "version": "v0.3.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/breml/errchkjson",
            "direct": false,
            "version": "v0.4.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/burntsushi/toml",
            "direct": false,
            "version": "v1.6.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/butuzov/ireturn",
            "direct": false,
            "version": "v0.4.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/butuzov/mirror",
            "direct": false,
            "version": "v1.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/catenacyber/perfsprint",
            "direct": false,
            "version": "v0.10.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ccojocar/zxcvbn-go",
            "direct": false,
            "version": "v1.0.4",
            "ecosystem": "go"
          },
          {
            "name": "github.com/cespare/xxhash/v2",
            "direct": false,
            "version": "v2.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/charithe/durationcheck",
            "direct": false,
            "version": "v0.0.11",
            "ecosystem": "go"
          },
          {
            "name": "github.com/charmbracelet/colorprofile",
            "direct": false,
            "version": "v0.2.3-0.20250311203215-f60798e515dc",
            "ecosystem": "go"
          },
          {
            "name": "github.com/charmbracelet/lipgloss",
            "direct": false,
            "version": "v1.1.1-0.20250404203927-76690c660834",
            "ecosystem": "go"
          },
          {
            "name": "github.com/charmbracelet/x/ansi",
            "direct": false,
            "version": "v0.10.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/charmbracelet/x/cellbuf",
            "direct": false,
            "version": "v0.0.13",
            "ecosystem": "go"
          },
          {
            "name": "github.com/charmbracelet/x/term",
            "direct": false,
            "version": "v0.2.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ckaznocha/intrange",
            "direct": false,
            "version": "v0.3.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/clipperhouse/uax29/v2",
            "direct": false,
            "version": "v2.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/curioswitch/go-reassign",
            "direct": false,
            "version": "v0.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/daixiang0/gci",
            "direct": false,
            "version": "v0.13.7",
            "ecosystem": "go"
          },
          {
            "name": "github.com/dave/dst",
            "direct": false,
            "version": "v0.27.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/davecgh/go-spew",
            "direct": false,
            "version": "v1.1.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/denis-tingaikin/go-header",
            "direct": false,
            "version": "v0.5.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/djarvur/go-err113",
            "direct": false,
            "version": "v0.1.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/dlclark/regexp2",
            "direct": false,
            "version": "v1.11.5",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ettle/strcase",
            "direct": false,
            "version": "v0.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/fatih/color",
            "direct": false,
            "version": "v1.18.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/fatih/structtag",
            "direct": false,
            "version": "v1.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/firefart/nonamedreturns",
            "direct": false,
            "version": "v1.0.6",
            "ecosystem": "go"
          },
          {
            "name": "github.com/fsnotify/fsnotify",
            "direct": false,
            "version": "v1.5.4",
            "ecosystem": "go"
          },
          {
            "name": "github.com/fzipp/gocyclo",
            "direct": false,
            "version": "v0.6.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ghostiam/protogetter",
            "direct": false,
            "version": "v0.3.18",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-critic/go-critic",
            "direct": false,
            "version": "v0.14.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-toolsmith/astcast",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-toolsmith/astcopy",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-toolsmith/astequal",
            "direct": false,
            "version": "v1.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-toolsmith/astfmt",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-toolsmith/astp",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-toolsmith/strparse",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-toolsmith/typep",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-viper/mapstructure/v2",
            "direct": false,
            "version": "v2.4.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-xmlfmt/xmlfmt",
            "direct": false,
            "version": "v1.1.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/gobwas/glob",
            "direct": false,
            "version": "v0.2.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/godoc-lint/godoc-lint",
            "direct": false,
            "version": "v0.11.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/gofrs/flock",
            "direct": false,
            "version": "v0.13.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/golang/protobuf",
            "direct": false,
            "version": "v1.5.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/golangci/asciicheck",
            "direct": false,
            "version": "v0.5.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/golangci/dupl",
            "direct": false,
            "version": "v0.0.0-20250308024227-f665c8d69b32",
            "ecosystem": "go"
          },
          {
            "name": "github.com/golangci/go-printf-func-name",
            "direct": false,
            "version": "v0.1.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/golangci/gofmt",
            "direct": false,
            "version": "v0.0.0-20250106114630-d62b90e6713d",
            "ecosystem": "go"
          },
          {
            "name": "github.com/golangci/golangci-lint/v2",
            "direct": false,
            "version": "v2.8.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/golangci/golines",
            "direct": false,
            "version": "v0.14.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/golangci/misspell",
            "direct": false,
            "version": "v0.7.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/golangci/plugin-module-register",
            "direct": false,
            "version": "v0.1.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/golangci/revgrep",
            "direct": false,
            "version": "v0.8.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/golangci/swaggoswag",
            "direct": false,
            "version": "v0.0.0-20250504205917-77f2aca3143e",
            "ecosystem": "go"
          },
          {
            "name": "github.com/golangci/unconvert",
            "direct": false,
            "version": "v0.0.0-20250410112200-a129a6e6413e",
            "ecosystem": "go"
          },
          {
            "name": "github.com/google/go-cmp",
            "direct": false,
            "version": "v0.7.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/gordonklaus/ineffassign",
            "direct": false,
            "version": "v0.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/gostaticanalysis/analysisutil",
            "direct": false,
            "version": "v0.7.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/gostaticanalysis/comment",
            "direct": false,
            "version": "v1.5.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/gostaticanalysis/forcetypeassert",
            "direct": false,
            "version": "v0.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/gostaticanalysis/nilerr",
            "direct": false,
            "version": "v0.1.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/hashicorp/go-immutable-radix/v2",
            "direct": false,
            "version": "v2.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/hashicorp/go-version",
            "direct": false,
            "version": "v1.8.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/hashicorp/golang-lru/v2",
            "direct": false,
            "version": "v2.0.7",
            "ecosystem": "go"
          },
          {
            "name": "github.com/hashicorp/hcl",
            "direct": false,
            "version": "v1.0.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/inconshreveable/mousetrap",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/jgautheron/goconst",
            "direct": false,
            "version": "v1.8.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/jingyugao/rowserrcheck",
            "direct": false,
            "version": "v1.1.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/jjti/go-spancheck",
            "direct": false,
            "version": "v0.6.5",
            "ecosystem": "go"
          },
          {
            "name": "github.com/julz/importas",
            "direct": false,
            "version": "v0.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/karamaru-alpha/copyloopvar",
            "direct": false,
            "version": "v1.2.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/kisielk/errcheck",
            "direct": false,
            "version": "v1.9.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/kkhaike/contextcheck",
            "direct": false,
            "version": "v1.1.6",
            "ecosystem": "go"
          },
          {
            "name": "github.com/kr/pretty",
            "direct": false,
            "version": "v0.3.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/kulti/thelper",
            "direct": false,
            "version": "v0.7.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/kunwardeep/paralleltest",
            "direct": false,
            "version": "v1.0.15",
            "ecosystem": "go"
          },
          {
            "name": "github.com/lasiar/canonicalheader",
            "direct": false,
            "version": "v1.1.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ldez/exptostd",
            "direct": false,
            "version": "v0.4.5",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ldez/gomoddirectives",
            "direct": false,
            "version": "v0.8.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ldez/grignotin",
            "direct": false,
            "version": "v0.10.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ldez/structtags",
            "direct": false,
            "version": "v0.6.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ldez/tagliatelle",
            "direct": false,
            "version": "v0.7.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ldez/usetesting",
            "direct": false,
            "version": "v0.5.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/leonklingele/grouper",
            "direct": false,
            "version": "v1.1.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/lucasb-eyer/go-colorful",
            "direct": false,
            "version": "v1.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/macabu/inamedparam",
            "direct": false,
            "version": "v0.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/magiconair/properties",
            "direct": false,
            "version": "v1.8.6",
            "ecosystem": "go"
          },
          {
            "name": "github.com/manuelarte/embeddedstructfieldcheck",
            "direct": false,
            "version": "v0.4.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/manuelarte/funcorder",
            "direct": false,
            "version": "v0.5.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/maratori/testableexamples",
            "direct": false,
            "version": "v1.0.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/maratori/testpackage",
            "direct": false,
            "version": "v1.1.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/masterminds/semver/v3",
            "direct": false,
            "version": "v3.4.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/matoous/godox",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/matryer/is",
            "direct": false,
            "version": "v1.4.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/mattn/go-colorable",
            "direct": false,
            "version": "v0.1.14",
            "ecosystem": "go"
          },
          {
            "name": "github.com/mattn/go-isatty",
            "direct": false,
            "version": "v0.0.20",
            "ecosystem": "go"
          },
          {
            "name": "github.com/matttproud/golang_protobuf_extensions",
            "direct": false,
            "version": "v1.0.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/mgechev/revive",
            "direct": false,
            "version": "v1.13.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/mirrexone/unqueryvet",
            "direct": false,
            "version": "v1.4.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/mitchellh/go-homedir",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/mitchellh/mapstructure",
            "direct": false,
            "version": "v1.5.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/moricho/tparallel",
            "direct": false,
            "version": "v0.3.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/muesli/termenv",
            "direct": false,
            "version": "v0.16.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/nakabonne/nestif",
            "direct": false,
            "version": "v0.3.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/nishanths/exhaustive",
            "direct": false,
            "version": "v0.12.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/nishanths/predeclared",
            "direct": false,
            "version": "v0.2.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/nunnatsa/ginkgolinter",
            "direct": false,
            "version": "v0.21.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/openpeedeep/depguard/v2",
            "direct": false,
            "version": "v2.2.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pelletier/go-toml/v2",
            "direct": false,
            "version": "v2.2.4",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pmezard/go-difflib",
            "direct": false,
            "version": "v1.0.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/prometheus/client_golang",
            "direct": false,
            "version": "v1.12.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/prometheus/client_model",
            "direct": false,
            "version": "v0.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/prometheus/common",
            "direct": false,
            "version": "v0.32.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/prometheus/procfs",
            "direct": false,
            "version": "v0.7.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/quasilyte/go-ruleguard",
            "direct": false,
            "version": "v0.4.5",
            "ecosystem": "go"
          },
          {
            "name": "github.com/quasilyte/go-ruleguard/dsl",
            "direct": false,
            "version": "v0.3.23",
            "ecosystem": "go"
          },
          {
            "name": "github.com/quasilyte/gogrep",
            "direct": false,
            "version": "v0.5.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/quasilyte/regex/syntax",
            "direct": false,
            "version": "v0.0.0-20210819130434-b3f0c404a727",
            "ecosystem": "go"
          },
          {
            "name": "github.com/quasilyte/stdinfo",
            "direct": false,
            "version": "v0.0.0-20220114132959-f7386bf02567",
            "ecosystem": "go"
          },
          {
            "name": "github.com/raeperd/recvcheck",
            "direct": false,
            "version": "v0.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/rillig/gobco",
            "direct": false,
            "version": "v1.3.4",
            "ecosystem": "go"
          },
          {
            "name": "github.com/rivo/uniseg",
            "direct": false,
            "version": "v0.4.7",
            "ecosystem": "go"
          },
          {
            "name": "github.com/rogpeppe/go-internal",
            "direct": false,
            "version": "v1.14.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ryancurrah/gomodguard",
            "direct": false,
            "version": "v1.4.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ryanrolds/sqlclosecheck",
            "direct": false,
            "version": "v0.5.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/sanposhiho/wastedassign/v2",
            "direct": false,
            "version": "v2.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/santhosh-tekuri/jsonschema/v6",
            "direct": false,
            "version": "v6.0.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/sashamelentyev/interfacebloat",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/sashamelentyev/usestdlibvars",
            "direct": false,
            "version": "v1.29.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/securego/gosec/v2",
            "direct": false,
            "version": "v2.22.11",
            "ecosystem": "go"
          },
          {
            "name": "github.com/sergi/go-diff",
            "direct": false,
            "version": "v1.3.2-0.20230802210424-5b0b94c5c0d3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/sirupsen/logrus",
            "direct": false,
            "version": "v1.9.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/sivchari/containedctx",
            "direct": false,
            "version": "v1.0.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/sonatard/noctx",
            "direct": false,
            "version": "v0.4.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/sourcegraph/go-diff",
            "direct": false,
            "version": "v0.7.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/afero",
            "direct": false,
            "version": "v1.15.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/cast",
            "direct": false,
            "version": "v1.5.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/cobra",
            "direct": false,
            "version": "v1.10.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/jwalterweatherman",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/viper",
            "direct": false,
            "version": "v1.12.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ssgreg/nlreturn/v2",
            "direct": false,
            "version": "v2.2.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/stbenjam/no-sprintf-host-port",
            "direct": false,
            "version": "v0.3.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/stretchr/objx",
            "direct": false,
            "version": "v0.5.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/subosito/gotenv",
            "direct": false,
            "version": "v1.4.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/tetafro/godot",
            "direct": false,
            "version": "v1.5.4",
            "ecosystem": "go"
          },
          {
            "name": "github.com/timakin/bodyclose",
            "direct": false,
            "version": "v0.0.0-20241222091800-1db5c5ca4d67",
            "ecosystem": "go"
          },
          {
            "name": "github.com/timonwong/loggercheck",
            "direct": false,
            "version": "v0.11.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/tomarrell/wrapcheck/v2",
            "direct": false,
            "version": "v2.12.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/tommy-muehle/go-mnd/v2",
            "direct": false,
            "version": "v2.5.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ultraware/funlen",
            "direct": false,
            "version": "v0.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ultraware/whitespace",
            "direct": false,
            "version": "v0.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/uudashr/gocognit",
            "direct": false,
            "version": "v1.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/uudashr/iface",
            "direct": false,
            "version": "v1.4.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/vmihailenco/tagparser/v2",
            "direct": false,
            "version": "v2.0.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/xen0n/gosmopolitan",
            "direct": false,
            "version": "v1.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/xo/terminfo",
            "direct": false,
            "version": "v0.0.0-20220910002029-abceb7e1c41e",
            "ecosystem": "go"
          },
          {
            "name": "github.com/yagipy/maintidx",
            "direct": false,
            "version": "v1.0.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/yeya24/promlinter",
            "direct": false,
            "version": "v0.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/ykadowak/zerologlint",
            "direct": false,
            "version": "v0.1.5",
            "ecosystem": "go"
          },
          {
            "name": "gitlab.com/bosi/decorder",
            "direct": false,
            "version": "v0.4.2",
            "ecosystem": "go"
          },
          {
            "name": "go-simpler.org/musttag",
            "direct": false,
            "version": "v0.14.0",
            "ecosystem": "go"
          },
          {
            "name": "go-simpler.org/sloglint",
            "direct": false,
            "version": "v0.11.1",
            "ecosystem": "go"
          },
          {
            "name": "go.augendre.info/arangolint",
            "direct": false,
            "version": "v0.3.1",
            "ecosystem": "go"
          },
          {
            "name": "go.augendre.info/fatcontext",
            "direct": false,
            "version": "v0.9.0",
            "ecosystem": "go"
          },
          {
            "name": "go.uber.org/automaxprocs",
            "direct": false,
            "version": "v1.6.0",
            "ecosystem": "go"
          },
          {
            "name": "go.uber.org/multierr",
            "direct": false,
            "version": "v1.10.0",
            "ecosystem": "go"
          },
          {
            "name": "go.uber.org/zap",
            "direct": false,
            "version": "v1.27.0",
            "ecosystem": "go"
          },
          {
            "name": "go.yaml.in/yaml/v3",
            "direct": false,
            "version": "v3.0.4",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/exp/typeparams",
            "direct": false,
            "version": "v0.0.0-20251023183803-a4bb9ffd2546",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/text",
            "direct": false,
            "version": "v0.38.0",
            "ecosystem": "go"
          },
          {
            "name": "google.golang.org/protobuf",
            "direct": false,
            "version": "v1.36.8",
            "ecosystem": "go"
          },
          {
            "name": "gopkg.in/check.v1",
            "direct": false,
            "version": "v1.0.0-20201130134442-10cb98267c6c",
            "ecosystem": "go"
          },
          {
            "name": "gopkg.in/ini.v1",
            "direct": false,
            "version": "v1.67.0",
            "ecosystem": "go"
          },
          {
            "name": "gopkg.in/yaml.v2",
            "direct": false,
            "version": "v2.4.0",
            "ecosystem": "go"
          },
          {
            "name": "honnef.co/go/tools",
            "direct": false,
            "version": "v0.6.1",
            "ecosystem": "go"
          },
          {
            "name": "mvdan.cc/gofumpt",
            "direct": false,
            "version": "v0.9.2",
            "ecosystem": "go"
          },
          {
            "name": "mvdan.cc/unparam",
            "direct": false,
            "version": "v0.0.0-20251027182757-5beb8c8f8f15",
            "ecosystem": "go"
          },
          {
            "name": "@codemirror/state",
            "direct": false,
            "version": "^6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@codemirror/view",
            "direct": false,
            "version": "^6.34.0",
            "ecosystem": "npm"
          },
          {
            "name": "@mdsmith/cli",
            "direct": false,
            "version": "0.0.0-dev",
            "ecosystem": "npm"
          },
          {
            "name": "@mdsmith/darwin-arm64",
            "direct": false,
            "version": "0.0.0-dev",
            "ecosystem": "npm"
          },
          {
            "name": "@mdsmith/darwin-x64",
            "direct": false,
            "version": "0.0.0-dev",
            "ecosystem": "npm"
          },
          {
            "name": "@mdsmith/linux-arm64",
            "direct": false,
            "version": "0.0.0-dev",
            "ecosystem": "npm"
          },
          {
            "name": "@mdsmith/linux-x64",
            "direct": false,
            "version": "0.0.0-dev",
            "ecosystem": "npm"
          },
          {
            "name": "@mdsmith/win32-x64",
            "direct": false,
            "version": "0.0.0-dev",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.scandir",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.stat",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.walk",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@playwright/test",
            "direct": false,
            "version": "1.56.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/merge-streams",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/bun",
            "direct": false,
            "version": "^1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/debug",
            "direct": false,
            "version": "4.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/katex",
            "direct": false,
            "version": "0.16.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mocha",
            "direct": false,
            "version": "^10.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ms",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "^20.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@types/vscode",
            "direct": false,
            "version": "^1.85.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vscode/test-electron",
            "direct": false,
            "version": "^2.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vscode/vsce",
            "direct": false,
            "version": "^3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@zeit/schemas",
            "direct": false,
            "version": "2.36.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-align",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "arch",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "arg",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "boxen",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chalk-template",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-reference-invalid",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "cli-boxes",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "clipboardy",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "compressible",
            "direct": false,
            "version": "2.0.18",
            "ecosystem": "npm"
          },
          {
            "name": "compression",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "2.6.9",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decode-named-character-reference",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-extend",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "eastasianwidth",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "9.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.20.1",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-east-asian-width",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "^13.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "16.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphabetical",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphanumerical",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-decimal",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-docker",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-hexadecimal",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-port-reachable",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-wsl",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsonc-parser",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonpointer",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "katex",
            "direct": false,
            "version": "0.16.47",
            "ecosystem": "npm"
          },
          {
            "name": "linkify-it",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it",
            "direct": false,
            "version": "14.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdownlint",
            "direct": false,
            "version": "0.41.1",
            "ecosystem": "npm"
          },
          {
            "name": "markdownlint-cli2",
            "direct": false,
            "version": "0.23.1",
            "ecosystem": "npm"
          },
          {
            "name": "markdownlint-cli2-formatter-default",
            "direct": false,
            "version": "0.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-core-commonmark",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-directive",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-autolink-literal",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-footnote",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-table",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-math",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-destination",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-label",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-space",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-title",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-whitespace",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-character",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-chunked",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-classify-character",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-combine-extensions",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-decode-numeric-character-reference",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-encode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-html-tag-name",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-normalize-identifier",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-resolve-all",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-sanitize-uri",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-subtokenize",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-symbol",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-types",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.54.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.18",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "mocha",
            "direct": false,
            "version": "^11.7.6",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "0.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "obsidian",
            "direct": false,
            "version": "^1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "on-headers",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "parse-entities",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-inside",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "playwright",
            "direct": false,
            "version": "1.56.1",
            "ecosystem": "npm"
          },
          {
            "name": "playwright-core",
            "direct": false,
            "version": "1.56.1",
            "ecosystem": "npm"
          },
          {
            "name": "punycode.js",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "range-parser",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "rc",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "registry-auth-token",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "registry-url",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "serve",
            "direct": false,
            "version": "14.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "serve-handler",
            "direct": false,
            "version": "6.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "smol-toml",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "8.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "2.19.0",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "^5.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "uc.micro",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unicorn-magic",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "update-check",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-languageclient",
            "direct": false,
            "version": "^9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-uri",
            "direct": false,
            "version": "^3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "widest-line",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 419,
        "direct_count": 21,
        "indirect_count": 398
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 6,
        "merged_prs": 707,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 31,
        "closed_unmerged_prs": 30
      },
      "bus_factor": 1,
      "bot_contributors": 3,
      "top_contributors": [
        {
          "type": "User",
          "login": "claude",
          "commits": 2582,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        },
        {
          "type": "User",
          "login": "jeduden",
          "commits": 556,
          "avatar_url": "https://avatars.githubusercontent.com/u/1117699?v=4"
        },
        {
          "type": "User",
          "login": "LIghtJUNction",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/106986785?v=4"
        }
      ],
      "contributors_sampled": 3,
      "top_contributor_share": 0.823
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "action-smoke.yml",
        "benchmark.yml",
        "ci.yml",
        "cuelite-fuzz.yml",
        "demo.yml",
        "e2e.yml",
        "mdsmith-check.yml",
        "merge-queue.yml",
        "pages.yml",
        "record-demo.yml",
        "record-secret-rotation.yml",
        "release.yml",
        "secret-rotation-reminder.yml",
        "security-audit-sarif.yml",
        "skill-eval.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".golangci.yml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum",
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 5,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "13 out of 13 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/11 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "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": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 10,
            "reason": "project is fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 9,
            "reason": "dependency not pinned by hash detected -- score normalized to 9",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 10,
            "reason": "SAST tool is run on all commits",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "14 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "2ab4b2949e9420b2eb73f4239091fd647c4b5e80",
        "ran_at": "2026-07-27T15:45:47Z",
        "aggregate_score": 7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-25T19:45:33Z",
      "oldest_open_prs": [
        {
          "number": 769,
          "created_at": "2026-07-25T20:25:07Z",
          "last_comment_at": "2026-07-25T20:25:33Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 770,
          "created_at": "2026-07-25T20:51:41Z",
          "last_comment_at": "2026-07-25T20:52:06Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 771,
          "created_at": "2026-07-25T22:11:47Z",
          "last_comment_at": "2026-07-25T22:12:16Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 772,
          "created_at": "2026-07-26T02:48:50Z",
          "last_comment_at": "2026-07-26T02:49:18Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 773,
          "created_at": "2026-07-26T19:20:37Z",
          "last_comment_at": "2026-07-26T19:21:38Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 774,
          "created_at": "2026-07-26T20:30:07Z",
          "last_comment_at": "2026-07-26T20:30:36Z",
          "last_comment_author": "codecov"
        }
      ],
      "last_merged_pr_at": "2026-07-25T19:27:19Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/jeduden/mdsmith",
    "host": "github.com",
    "name": "mdsmith",
    "owner": "jeduden"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 70,
      "inputs": {
        "security": 76,
        "vitality": 85,
        "community": 35,
        "governance": 61,
        "engineering": 90
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 85,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "commits_last_year": 3548,
              "human_commit_share": 0.98,
              "days_since_last_push": 0,
              "active_weeks_last_year": 25
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "25/52 weeks with commits",
                "points": 17.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 25
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "3548 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 3548
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 63,
              "latest_release_tag": "v0.54.0",
              "releases_from_tags": false,
              "days_since_latest_release": 1,
              "mean_days_between_releases": 4.8
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "63 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 63
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~4.8 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 4.8
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 35,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 16,
            "inputs": {
              "forks": 1,
              "stars": 10,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "10 stars",
                "points": 15.5,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "1 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": 44,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "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": 52,
            "inputs": {
              "packages": [
                "github.com/jeduden/mdsmith",
                "mdsmith"
              ],
              "dependents": null,
              "ecosystems": "go, pypi",
              "total_downloads": null,
              "monthly_downloads": 1334
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "1,334 downloads/month across go, pypi",
                "points": 41.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 1334,
                      "ecosystems": "go, pypi"
                    }
                  }
                ],
                "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": "moderate",
        "name": "Sustainability & Governance",
        "value": 61,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 3,
              "top_contributor_share": 0.823
            },
            "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 82% of commits",
                "points": 4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 82
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "3 contributors",
                "points": 4.1,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "merged_prs": 707,
              "open_issues": 0,
              "closed_issues": 31,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 30
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "707/737 decided PRs merged",
                "points": 36.7,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 707,
                      "decided": 737
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/11 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "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": 57,
            "inputs": {
              "followers": 26,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "jeduden",
              "public_repos": 99,
              "account_age_days": 5403
            },
            "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": "26 followers of jeduden",
                "points": 10.3,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 26,
                      "login": "jeduden"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "99 public repos, account ~14 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 99
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 14
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/jeduden/mdsmith",
                "mdsmith"
              ],
              "ecosystems": "go, pypi",
              "any_deprecated": false,
              "min_days_since_publish": 1
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on go, pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "go, pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 1 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "64 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 64
                    }
                  }
                ],
                "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": "excellent",
        "name": "Engineering Quality",
        "value": 90,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "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": "15 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "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": ".golangci.yml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "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": "13 out of 13 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "golang",
                "linter",
                "markdown",
                "ai-generated-code",
                "ai-generated-content",
                "formatter",
                "go",
                "readme",
                "specification",
                "style",
                "spec-driven",
                "spec-driven-development",
                "extension-vscode",
                "lsp-server"
              ],
              "has_wiki": true,
              "homepage": "https://mdsmith.dev/",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://mdsmith.dev/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "14 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "good",
        "name": "Security",
        "value": 76,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "good",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 7
            },
            "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 is not maximal on development and all release branches",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "13 out of 13 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/11 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "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": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is fuzzed",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow 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 9",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is run on all commits",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "14 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 405 resolved dependencies against OSV; 14 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 405
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 14
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 5,
              "affected_packages": 4,
              "assessed_packages": 405,
              "unassessed_packages": 14,
              "affected_by_severity": "high 3, unknown 1",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 405,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 1
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "excellent",
        "name": "AI Readiness",
        "value": 92,
        "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.99,
              "agent_instruction_files": [
                ".github/copilot-instructions.md",
                ".github/instructions/code-review.instructions.md",
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 32785
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".github/copilot-instructions.md, .github/instructions/code-review.instructions.md, AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".github/copilot-instructions.md, .github/instructions/code-review.instructions.md, 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": "97 of 98 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 97,
                      "sampled": 98
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "excellent",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 94,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum",
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "editors/obsidian/tsconfig.json",
                "editors/vscode/tsconfig.json",
                "npm/mdsmith/tsconfig.json"
              ],
              "agent_commit_share": 0.66,
              "toolchain_manifests": [
                "go.mod",
                "tools/go.mod"
              ],
              "dependency_bot_commit_share": 0.02
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "go.mod, tools/go.mod (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "go.mod, tools/go.mod"
                    }
                  }
                ],
                "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": ".golangci.yml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "editors/obsidian/tsconfig.json, editors/vscode/tsconfig.json, npm/mdsmith/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "editors/obsidian/tsconfig.json, editors/vscode/tsconfig.json, npm/mdsmith/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": "66 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 66,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "2 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 2,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 9",
                "points": 9,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 401894,
              "source_files_sampled": 1428,
              "oversized_source_files": 10
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Go (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "10/1428 source files over 60KB",
                "points": 54.6,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1428,
                      "oversized": 10
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T15:46:08.045652Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/jeduden/mdsmith.svg",
  "full_name": "jeduden/mdsmith",
  "license_state": "custom",
  "license_spdx": null
}

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

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

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