Public record
Software health reportschema 0.27.0 · metrics 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.

GoCustom license★ 10 stars⑂ 1 forksince Feb 2026View on GitHub ↗

jeduden/mdsmith holds a health index of 70 out of 100, placing it in the Good band. It scores highest on AI Readiness (92/100) and lowest on Community & Adoption (35/100). It was last updated today. A single contributor accounts for most of its recent work.

70
overall / 100
Good

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

70
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

Jan-Eric DudenPersonal account
26 followers99 public repossince Oct 2011

This repository is owned by a personal account. A single-owner project carries more continuity risk than an organization-backed one.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publishTags
Gogithub.com/jeduden/mdsmithv0.54.0-641 day ago
PyPImdsmith0.54.01,334461 day agodocsformatterlintermarkdownmdsmith

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

85Excellent · 22% of overall
How it's scored
36/36Push recency — last push 0 days ago
17.3/36Commit cadence — 25/52 weeks with commits
18/18Commit volume — 3,548 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year3,548
human_commit_share0.98
days_since_last_push0
active_weeks_last_year25
How it's scored
27/27Ships releases — 63 releases published
36/36Release recency — latest release 1 days ago
27/27Release cadence — a release every ~4.8 days
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Inputs used
releases_count63
latest_release_tagv0.54.0
releases_from_tagsno
days_since_latest_release1
mean_days_between_releases4.8

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

35At risk · 18% of overall
How it's scored
15.5/60Stars — 10 stars
0/25Forks — 1 forks
0/15Watchers — 0 watchers
Inputs used
forks1
stars10
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
16.9/22.5License — license file present, not a recognized license
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
How it's scored
41.7/80Monthly downloads — 1,334 downloads/month across go, pypi
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagesgithub.com/jeduden/mdsmith, mdsmith
dependents
ecosystemsgo, pypi
total_downloads
monthly_downloads1,334
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

61Moderate · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
4/22.5Commit distribution — top contributor authored 82% of commits
4.1/13.5Contributor breadth — 3 contributors
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Inputs used
bus_factor1
contributors_sampled3
top_contributor_share0.823
How it's scored
46.8/46.8Issue resolution — 100% of issues closed
36.7/38.3PR acceptance — 707/737 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 0/11 approved changesets -- score normalized to 0
Inputs used
merged_prs707
open_issues0
closed_issues31
issue_closed_ratio1
closed_unmerged_prs30
How it's scored
10/30Ownership backing — personal (user) account
0/20Verified domain — not applicable to user accounts
10.3/25Owner reach — 26 followers of jeduden
25/25Track record — 99 public repos, account ~14 yr old
Inputs used
followers26
owner_typeUser
is_verified
owner_loginjeduden
public_repos99
account_age_days5,403
Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.
How it's scored
25/25Published & resolvable — 2 package(s) on go, pypi
35/35Publish recency — latest publish 1 days ago
20/20Version history — 64 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagesgithub.com/jeduden/mdsmith, mdsmith
ecosystemsgo, pypi
any_deprecatedno
min_days_since_publish1

Engineering Quality

Are baseline engineering and documentation practices in place?

90Excellent · 20% of overall
How it's scored
24/24CI workflows — 15 workflow(s)
24/24Tests present
16/16Linter config — .golangci.yml
0/9.6Pre-commit hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 13 out of 13 merged PRs checked by a CI test -- score normalized to 10
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configno

Documentation

100Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://mdsmith.dev/
10/10Repository description
10/10Topics — 14 topics
10/10Wiki
Inputs used
topicsgolang, linter, markdown, ai-generated-code, ai-generated-content, formatter, go, readme, specification, style, spec-driven, spec-driven-development, extension-vscode, lsp-server
has_wikiyes
homepagehttps://mdsmith.dev/
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

76Good · 16% of overall
How it's scored
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.5License — 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
Inputs used
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate7
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
0/25Indirect dependencies free of known advisories — transitive set not separable from development and test dependencies in this scope
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories5
affected_packages4
assessed_packages405
unassessed_packages14
affected_by_severityhigh 3, unknown 1
direct_affected_packages0
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.

AI Readiness

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.

92Excellent · 0% of overall
How it's scored
45/45Agent instructions — .github/copilot-instructions.md, .github/instructions/code-review.instructions.md, AGENTS.md, CLAUDE.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 97 of 98 human commits state their intent (structured subject or explanatory body)
Inputs used
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
How it's scored
12.6/18One-command bootstrap — go.mod, tools/go.mod (toolchain convention, no task runner)
22/22Automated tests
11/11Lint / format config — .golangci.yml
11/11Static type checking — editors/obsidian/tsconfig.json, editors/vscode/tsconfig.json, npm/mdsmith/tsconfig.json
10/10Reproducible environment — lockfile
10/10Demonstrated agent practice — 66 of the last 100 commits agent-authored or agent-credited
8/8Automated maintenance — 2 of the last 100 commits are automated dependency updates
9/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 9
Inputs used
has_nixno
has_testsyes
lockfilesgo.sum, package-lock.json
has_dockerfileno
typed_languageyes
bootstrap_files
has_devcontainerno
has_linter_configyes
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
How it's scored
45/45Type-checkable code — Go (statically typed)
54.6/55Manageable file sizes — 10/1,428 source files over 60KB
Inputs used
primary_languageGo
largest_source_bytes401,894
source_files_sampled1,428
oversized_source_files10

Key facts

10GitHub stars
3contributors
3,548commits, last 12 months
0days since last push
63releases
1bus factor
0open issues
Go, PyPIpackage ecosystems

Data collection warnings

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

More detail

OpenSSF Scorecard 7.0 / 10
7.0aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).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
Direct dependencies 29
RegistryPackageVersion constraintManifest
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
All dependencies 419

Full resolved dependency set from the GitHub dependency graph: 21 direct and 398 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

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

This repository publishes no package the index resolves, so its own dependency graph was assessed — 405 packages, which also include development and test pins that never ship: 4 carry known advisories, of which 0 are direct. 14 could not be assessed — no resolved version, an unsupported ecosystem, or beyond the reported package list.

PackageVersionRelationSeverityAdvisoriesFixed in
brace-expansion1.1.15indirecthigh25.0.8
js-yaml4.2.0indirecthigh14.3.0
linkify-it5.0.1indirecthigh15.0.2
golang.org/x/textv0.38.0indirectunknown10.39.0

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "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
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsGo, PyPI.