公开记录
软件健康报告模式 0.27.0 · 指标 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.

Go自定义许可证★ 10 星标⑂ 1 复刻始于 2026年2月在 GitHub 上查看 ↗

jeduden/mdsmith 的健康指数为 100 分中的 70 分,处于「良好」区间。 其得分最高的类别是AI Readiness(92/100),最低的是Community & Adoption(35/100)。 最近一次更新在今天。 近期的大部分工作由 1 位贡献者完成。

70
总分 / 100
良好

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

70
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

Jan-Eric Duden个人账户
26 关注者99 个公开仓库始于 2011年10月

该仓库由个人账户拥有。相较于组织支持的项目,单一所有者项目的延续性风险更高。

软件包生态系统

注册表软件包版本月下载量版本数最近发布标签
Gogithub.com/jeduden/mdsmithv0.54.0-641 天前
PyPImdsmith0.54.01,334461 天前docsformatterlintermarkdownmdsmith

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

85优秀 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 0 天前
17.3/36提交节奏 — 52 周中有 25 周有提交
18/18提交量 — 最近一年 3,548 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year3,548
human_commit_share0.98
days_since_last_push0
active_weeks_last_year25

发布纪律

90优秀
评分方式
27/27有发布版本 — 已发布 63 个发布版本
36/36发布时效 — 最近一次发布版本于 1 天前
27/27发布节奏 — 约每 4.8 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — Project has not signed or included provenance with any releases.
所用输入
releases_count63
latest_release_tagv0.54.0
releases_from_tags
days_since_latest_release1
mean_days_between_releases4.8

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

35存在风险 · 占总体的 18%
评分方式
15.5/60星标 — 10 个星标
0/25复刻 — 1 个复刻
0/15关注者 — 0 位关注者
所用输入
forks1
stars10
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

44存在风险
评分方式
22.5/22.5README
16.9/22.5许可证 — 存在许可证文件,但不是可识别的许可证
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template
评分方式
41.7/80月度下载量 — go, pypi 合计每月 1,334 次下载
0/20注册表被依赖数 — 该生态系统不报告此项
所用输入
packagesgithub.com/jeduden/mdsmith, mdsmith
dependents
ecosystemsgo, pypi
total_downloads
monthly_downloads1,334
已排除计分(无数据或不适用):注册表被依赖数。 其余权重已重新归一化。

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

61中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
4/22.5提交分布 — 头号贡献者编写了 82% 的提交
4.1/13.5贡献者广度 — 3 位贡献者
3/10OpenSSF Scorecard:Contributors — project has 1 contributing companies or organizations -- score normalized to 3
所用输入
bus_factor1
contributors_sampled3
top_contributor_share0.823
评分方式
46.8/46.8议题解决 — 100% 的议题已关闭
36.7/38.3PR 接受 — 已裁定的 PR 中 707/737 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/11 approved changesets -- score normalized to 0
所用输入
merged_prs707
open_issues0
closed_issues31
issue_closed_ratio1
closed_unmerged_prs30
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
10.3/25所有者影响力 — jeduden 有 26 位关注者
25/25既往记录 — 99 个公开仓库,账户约 14 年
所用输入
followers26
owner_typeUser
is_verified
owner_loginjeduden
public_repos99
account_age_days5,403
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。
评分方式
25/25已发布且可解析 — go, pypi 上有 2 个软件包
35/35发布时效 — 最近一次发布于 1 天前
20/20版本历史 — 64 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesgithub.com/jeduden/mdsmith, mdsmith
ecosystemsgo, pypi
any_deprecated
min_days_since_publish1

工程质量

基础的工程与文档实践是否到位?

90优秀 · 占总体的 20%

工程实践

84良好
评分方式
24/24CI 工作流 — 15 个工作流
24/24存在测试
16/16Linter 配置 — .golangci.yml
0/9.6Pre-commit 钩子
0/6.4.editorconfig
20/20OpenSSF Scorecard:CI-Tests — 13 out of 13 merged PRs checked by a CI test -- score normalized to 10
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

100优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://mdsmith.dev/
10/10仓库描述
10/10主题标签 — 14 个主题标签
10/10Wiki
所用输入
topicsgolang, linter, markdown, ai-generated-code, ai-generated-content, formatter, go, readme, specification, style, spec-driven, spec-driven-development, extension-vscode, lsp-server
has_wiki
homepagehttps://mdsmith.dev/
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

76良好 · 占总体的 16%

安全态势

70良好
评分方式
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.5许可证 — 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
所用输入
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate7
评分方式
35/35直接依赖不含已知公告 — 没有直接依赖携带已知公告
0/25间接依赖不含已知公告 — 在此范围内,传递依赖集合无法与开发和测试依赖区分
0/40没有长期未处理的公告 — 没有公告带有发布日期
所用输入
sourceosv
advisories5
affected_packages4
assessed_packages405
unassessed_packages14
affected_by_severityhigh 3, unknown 1
direct_affected_packages0
已排除计分(无数据或不适用):间接依赖不含已知公告, 没有长期未处理的公告。 其余权重已重新归一化。 已将 405 个已解析依赖与 OSV 比对。 有 14 项无法评估——没有已解析的版本、生态系统不受支持,或超出所报告的软件包清单。 该仓库未发布任何索引可解析的软件包,因此改为评估仓库依赖图。该图将开发与测试版本固定同交付的依赖混在一起,因此仅对声明的运行时依赖计分;传递性发现仅作为背景信息列出,不计入评分。 未对可达性进行分析。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

92优秀 · 占总体的 0%
评分方式
45/45代理指令 — .github/copilot-instructions.md, .github/instructions/code-review.instructions.md, AGENTS.md, CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 98 次人类提交中有 97 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
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
评分方式
12.6/18一条命令的引导启动 — go.mod, tools/go.mod(工具链约定,无任务运行器)
22/22自动化测试
11/11Lint / 格式化配置 — .golangci.yml
11/11静态类型检查 — editors/obsidian/tsconfig.json, editors/vscode/tsconfig.json, npm/mdsmith/tsconfig.json
10/10可复现环境 — lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 66 次由代理编写或署名代理
8/8自动化维护 — 最近 100 次提交中有 2 次为自动依赖更新
9/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 9
所用输入
has_nix
has_tests
lockfilesgo.sum, package-lock.json
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configseditors/obsidian/tsconfig.json, editors/vscode/tsconfig.json, npm/mdsmith/tsconfig.json
agent_commit_share0.66
toolchain_manifestsgo.mod, tools/go.mod
dependency_bot_commit_share0.02
评分方式
45/45可类型检查的代码 — Go(静态类型)
54.6/55可控的文件大小 — 采样的 1,428 个源文件中有 10 个超过 60KB
所用输入
primary_languageGo
largest_source_bytes401,894
source_files_sampled1,428
oversized_source_files10

关键数据

10GitHub 星标
3贡献者
3,548最近 12 个月提交数
0距最近推送天数
63发布版本数
1巴士系数(bus factor)
0开放议题
Go, PyPI软件包生态系统数

数据采集警告

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

更多细节

OpenSSF Scorecard 7.0 / 10
7.0综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。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
直接依赖 29
注册表软件包版本约束清单文件
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
全部依赖 419

来自 GitHub 依赖图的完整解析依赖集合:21 个直接依赖与 398 个间接(传递)软件包。仓库提交锁文件时,传递闭包才是完整的。

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

该仓库未发布可被索引解析的包,因此评估的是其自身的依赖图——共 405 个包,其中也包含从不交付的开发与测试版本固定:4 个存在已知公告,0 个为直接依赖。 有 14 个无法评估——没有已解析的版本、生态系统不受支持,或不在所列包清单之内。

软件包版本关系严重程度公告数修复版本
brace-expansion1.1.15间接25.0.8
js-yaml4.2.0间接14.3.0
linkify-it5.0.1间接15.0.2
golang.org/x/textv0.38.0间接未知10.39.0

公告表示依赖图中记录的版本落入某条公告的受影响范围。可达性未经分析,且依赖图包含开发与测试的版本固定——某项发现可能只涉及工具链而非交付的软件。

原始 JSON 报告 机器可读
{
  "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
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.27.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计Go, PyPI.