公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-27 18:22 UTC

pgharts / trusty-cms

TrustyCMS is a modern, Ruby on Rails-driven CMS that can be extended for any business needs.

JavaScript · RubyMIT★ 23 星标⑂ 36 复刻始于 2014年4月在 GitHub 上查看 ↗

pgharts/trusty-cms 的健康指数为 100 分中的 74 分,处于「良好」区间。 其得分最高的类别是Vitality(89/100),最低的是AI Readiness(50/100)。 最近一次更新在今天。 近期的大部分工作由 4 位贡献者完成。

74
总分 / 100
良好

软件健康指数

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

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

评分画像

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

所有权

8 关注者17 个公开仓库始于 2010年1月

该仓库由组织支持——共同承担、可问责的托管责任,可延续于任何单一维护者之后。

软件包生态系统

注册表软件包版本月下载量版本数最近发布
RubyGemstrusty-cms7.1.3-2480 天前

按类别列示的指标

活力

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

89优秀 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 0 天前
22.8/36提交节奏 — 52 周中有 33 周有提交
18/18提交量 — 最近一年 227 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year227
human_commit_share0.79
days_since_last_push0
active_weeks_last_year33

发布纪律

92优秀
评分方式
27/27有发布版本 — 已发布 25 个发布版本
36/36发布时效 — 最近一次发布版本于 0 天前
19.8/27发布节奏 — 约每 62.8 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count25
latest_release_tagv7.1.3
releases_from_tags
days_since_latest_release0
mean_days_between_releases62.8
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

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

57中等 · 占总体的 18%

流行度与采用

39存在风险
评分方式
21.8/60星标 — 23 个星标
12.9/25复刻 — 36 个复刻
4.3/15关注者 — 7 位关注者
所用输入
forks36
stars23
watchers7
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

65中等
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
0/18CONTRIBUTING 指南
13.5/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
评分方式
58.7/80累计下载量 — rubygems 合计历史 446,672 次下载
0/20注册表被依赖数 — 该生态系统不报告此项
所用输入
packagestrusty-cms
dependents
ecosystemsrubygems
total_downloads446,672
monthly_downloads
已排除计分(无数据或不适用):注册表被依赖数。 其余权重已重新归一化。

可持续性与治理

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

77良好 · 占总体的 24%
评分方式
43.2/54巴士系数 — 4 位贡献者贡献了半数提交
18.1/22.5提交分布 — 头号贡献者编写了 20% 的提交
13.5/13.5贡献者广度 — 77 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 31 contributing companies or organizations
所用输入
bus_factor4
contributors_sampled77
top_contributor_share0.197
评分方式
38.8/46.8议题解决 — 83% 的议题已关闭
30/38.3PR 接受 — 已裁定的 PR 中 640/816 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/6 approved changesets -- score normalized to 0
所用输入
merged_prs640
open_issues39
closed_issues192
issue_closed_ratio0.831
closed_unmerged_prs176
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
6.9/25所有者影响力 — pgharts 有 8 位关注者
21.1/25既往记录 — 17 个公开仓库,账户约 16 年
所用输入
followers8
owner_typeOrganization
is_verified
owner_loginpgharts
public_repos17
account_age_days6,046
评分方式
25/25已发布且可解析 — rubygems 上有 1 个软件包
35/35发布时效 — 最近一次发布于 0 天前
20/20版本历史 — 248 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagestrusty-cms
ecosystemsrubygems
any_deprecated
min_days_since_publish0

工程质量

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

74良好 · 占总体的 20%

工程实践

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

文档

60中等
评分方式
30/30README
0/25文档目录
0/15文档 / 主页站点
10/10仓库描述
10/10主题标签 — 5 个主题标签
10/10Wiki
所用输入
topicscms, cms-framework, rails, ruby, hacktoberfest
has_wiki
homepage
has_readme
has_docs_dir
has_description

安全

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

66中等 · 占总体的 16%

安全态势

58中等
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 11 out of 11 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/6 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 31 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
5/5SAST — SAST tool is run on all commits
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 无数据
6/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 24 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate5.8
已排除计分(无数据或不适用):signed_releases。 其余权重已重新归一化。
评分方式
35/35直接依赖不含已知公告 — 没有直接依赖携带已知公告
0/25间接依赖不含已知公告 — 在此范围内,传递依赖集合无法与开发和测试依赖区分
0/40没有长期未处理的公告 — 没有公告带有发布日期
所用输入
sourceosv
advisories24
affected_packages10
assessed_packages641
unassessed_packages37
affected_by_severitycritical 1, high 5, moderate 3, low 1
direct_affected_packages0
已排除计分(无数据或不适用):间接依赖不含已知公告, 没有长期未处理的公告。 其余权重已重新归一化。 已将 641 个已解析依赖与 OSV 比对。 有 37 项无法评估——没有已解析的版本、生态系统不受支持,或超出所报告的软件包清单。 该仓库未发布任何索引可解析的软件包,因此改为评估仓库依赖图。该图将开发与测试版本固定同交付的依赖混在一起,因此仅对声明的运行时依赖计分;传递性发现仅作为背景信息列出,不计入评分。 未对可达性进行分析。

AI 就绪度

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

50中等 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
34.4/40可读的提交历史 — 79 次人类提交中有 51 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.646
agent_instruction_files
agent_instruction_max_bytes
评分方式
0/18一条命令的引导启动
22/22自动化测试
11/11Lint / 格式化配置 — .eslintrc.js, .rubocop.yml
0/11静态类型检查
10/10可复现环境 — lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 18 次由代理编写或署名代理
8/8自动化维护 — 最近 100 次提交中有 21 次为自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfilesGemfile.lock, yarn.lock
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0.18
toolchain_manifests
dependency_bot_commit_share0.21
评分方式
0/45可类型检查的代码 — JavaScript,未配置类型检查
54.8/55可控的文件大小 — 采样的 323 个源文件中有 1 个超过 60KB
所用输入
primary_languageJavaScript
largest_source_bytes3,815,127
source_files_sampled323
oversized_source_files1

关键数据

23GitHub 星标
77贡献者
227最近 12 个月提交数
0距最近推送天数
25发布版本数
4巴士系数(bus factor)
39开放议题
npm, RubyGems软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch npm package 'trusty-cms' from its registry

更多细节

Star 与 Fork 历史 0 ★ / 36 ⇿
0Star
36Fork
20发布

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

01325383672014-052020-032026-01
主版本 2次版本 2修订 12

每个点涵盖 11 天。

OpenSSF Scorecard 5.8 / 10
5.8综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-27 18:22 UTC

10Binary-Artifactsno binaries found in the repo
1Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests11 out of 11 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/6 approved changesets -- score normalized to 0
10Contributorsproject has 31 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
10SASTSAST tool is run on all commits
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
8Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities24 existing vulnerabilities detected
直接依赖 11
注册表软件包版本约束清单文件
RubyGemstrustygems~> 0.2.0Gemfile
npm@fortawesome/fontawesome-free^5.15.4package.json
npmblueimp-file-upload^10.32.0package.json
npmckeditor548.1.0package.json
npmjquery^3.6.1package.json
npmjquery-treetable^3.2.0-1package.json
npmjquery-ui^1.13.2package.json
npmjquery-ujs^1.2.2package.json
npmjquery-validation^1.20.0package.json
npmjs-cookie^3.0.7package.json
npmtablesaw^3.1.2package.json
全部依赖 678

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

注册表软件包版本关系
npm@fortawesome/fontawesome-free5.15.4直接
npmblueimp-file-upload10.32.0直接
npmckeditor548.1.0直接
npmjquery3.5.0直接
npmjquery3.6.0直接
npmjquery3.6.1直接
npmjquery3.7.1直接
npmjquery-treetable3.2.0-1直接
npmjquery-ui1.13.2直接
npmjquery-ui1.14.1直接
npmjquery-ujs1.2.3直接
npmjquery-validation1.21.0直接
npmjs-cookie3.0.7直接
npmtablesaw3.1.2直接
RubyGemstrustygems0.2.1直接
npm@babel/code-frame7.27.1间接
npm@babel/code-frame7.29.7间接
npm@babel/compat-data7.29.7间接
npm@babel/core7.29.7间接
npm@babel/generator7.29.7间接
npm@babel/helper-compilation-targets7.29.7间接
npm@babel/helper-globals7.29.7间接
npm@babel/helper-module-imports7.29.7间接
npm@babel/helper-module-transforms7.29.7间接
npm@babel/helper-string-parser7.29.7间接
npm@babel/helper-validator-identifier7.27.1间接
npm@babel/helper-validator-identifier7.29.7间接
npm@babel/helper-validator-option7.29.7间接
npm@babel/helpers7.29.7间接
npm@babel/parser7.29.7间接
npm@babel/template7.29.7间接
npm@babel/traverse7.29.7间接
npm@babel/types7.29.7间接
npm@ckeditor/ckeditor5-adapter-ckfinder48.1.0间接
npm@ckeditor/ckeditor5-alignment48.1.0间接
npm@ckeditor/ckeditor5-autoformat48.1.0间接
npm@ckeditor/ckeditor5-autosave48.1.0间接
npm@ckeditor/ckeditor5-basic-styles48.1.0间接
npm@ckeditor/ckeditor5-block-quote48.1.0间接
npm@ckeditor/ckeditor5-bookmark48.1.0间接
npm@ckeditor/ckeditor5-ckbox48.1.0间接
npm@ckeditor/ckeditor5-ckfinder48.1.0间接
npm@ckeditor/ckeditor5-clipboard48.1.0间接
npm@ckeditor/ckeditor5-cloud-services48.1.0间接
npm@ckeditor/ckeditor5-code-block48.1.0间接
npm@ckeditor/ckeditor5-core48.1.0间接
npm@ckeditor/ckeditor5-easy-image48.1.0间接
npm@ckeditor/ckeditor5-editor-balloon48.1.0间接
npm@ckeditor/ckeditor5-editor-classic48.1.0间接
npm@ckeditor/ckeditor5-editor-decoupled48.1.0间接
npm@ckeditor/ckeditor5-editor-inline48.1.0间接
npm@ckeditor/ckeditor5-editor-multi-root48.1.0间接
npm@ckeditor/ckeditor5-emoji48.1.0间接
npm@ckeditor/ckeditor5-engine48.1.0间接
npm@ckeditor/ckeditor5-enter48.1.0间接
npm@ckeditor/ckeditor5-essentials48.1.0间接
npm@ckeditor/ckeditor5-find-and-replace48.1.0间接
npm@ckeditor/ckeditor5-font48.1.0间接
npm@ckeditor/ckeditor5-fullscreen48.1.0间接
npm@ckeditor/ckeditor5-heading48.1.0间接
npm@ckeditor/ckeditor5-highlight48.1.0间接
npm@ckeditor/ckeditor5-horizontal-line48.1.0间接
npm@ckeditor/ckeditor5-html-embed48.1.0间接
npm@ckeditor/ckeditor5-html-support48.1.0间接
npm@ckeditor/ckeditor5-icons48.1.0间接
npm@ckeditor/ckeditor5-image48.1.0间接
npm@ckeditor/ckeditor5-indent48.1.0间接
npm@ckeditor/ckeditor5-language48.1.0间接
npm@ckeditor/ckeditor5-link48.1.0间接
npm@ckeditor/ckeditor5-list48.1.0间接
npm@ckeditor/ckeditor5-markdown-gfm48.1.0间接
npm@ckeditor/ckeditor5-media-embed48.1.0间接
npm@ckeditor/ckeditor5-mention48.1.0间接
npm@ckeditor/ckeditor5-minimap48.1.0间接
npm@ckeditor/ckeditor5-page-break48.1.0间接
npm@ckeditor/ckeditor5-paragraph48.1.0间接
npm@ckeditor/ckeditor5-paste-from-office48.1.0间接
npm@ckeditor/ckeditor5-remove-format48.1.0间接
npm@ckeditor/ckeditor5-restricted-editing48.1.0间接
npm@ckeditor/ckeditor5-select-all48.1.0间接
npm@ckeditor/ckeditor5-show-blocks48.1.0间接
npm@ckeditor/ckeditor5-source-editing48.1.0间接
npm@ckeditor/ckeditor5-special-characters48.1.0间接
npm@ckeditor/ckeditor5-style48.1.0间接
npm@ckeditor/ckeditor5-table48.1.0间接
npm@ckeditor/ckeditor5-typing48.1.0间接
npm@ckeditor/ckeditor5-ui48.1.0间接
npm@ckeditor/ckeditor5-undo48.1.0间接
npm@ckeditor/ckeditor5-upload48.1.0间接
npm@ckeditor/ckeditor5-utils48.1.0间接
npm@ckeditor/ckeditor5-watchdog48.1.0间接
npm@ckeditor/ckeditor5-widget48.1.0间接
npm@ckeditor/ckeditor5-word-count48.1.0间接
npm@esbuild/aix-ppc640.28.1间接
npm@esbuild/android-arm0.28.1间接
npm@esbuild/android-arm640.28.1间接
npm@esbuild/android-x640.28.1间接
npm@esbuild/darwin-arm640.28.1间接
npm@esbuild/darwin-x640.28.1间接
npm@esbuild/freebsd-arm640.28.1间接
npm@esbuild/freebsd-x640.28.1间接
npm@esbuild/linux-arm0.28.1间接
npm@esbuild/linux-arm640.28.1间接
npm@esbuild/linux-ia320.28.1间接
npm@esbuild/linux-loong640.28.1间接
npm@esbuild/linux-mips64el0.28.1间接
npm@esbuild/linux-ppc640.28.1间接
npm@esbuild/linux-riscv640.28.1间接
npm@esbuild/linux-s390x0.28.1间接
npm@esbuild/linux-x640.28.1间接
npm@esbuild/netbsd-arm640.28.1间接
npm@esbuild/netbsd-x640.28.1间接
npm@esbuild/openbsd-arm640.28.1间接
npm@esbuild/openbsd-x640.28.1间接
npm@esbuild/openharmony-arm640.28.1间接
npm@esbuild/sunos-x640.28.1间接
npm@esbuild/win32-arm640.28.1间接
npm@esbuild/win32-ia320.28.1间接
npm@esbuild/win32-x640.28.1间接
npm@jridgewell/gen-mapping0.3.13间接
npm@jridgewell/remapping2.3.5间接
npm@jridgewell/resolve-uri3.1.2间接
npm@jridgewell/sourcemap-codec1.5.5间接
npm@jridgewell/trace-mapping0.3.31间接
npm@nodelib/fs.scandir2.1.5间接
npm@nodelib/fs.stat2.0.5间接
npm@nodelib/fs.walk1.2.8间接
npm@stylelint/postcss-css-in-js0.37.3间接
npm@stylelint/postcss-markdown0.36.2间接
npm@types/color-convert2.0.4间接
npm@types/color-name1.1.5间接
npm@types/debug4.1.12间接
npm@types/hast3.0.4间接
npm@types/mdast3.0.15间接
npm@types/mdast4.0.4间接
npm@types/minimist1.2.5间接
npm@types/ms2.1.0间接
npm@types/normalize-package-data2.4.4间接
npm@types/parse-json4.0.2间接
npm@types/unist2.0.11间接
npm@types/unist3.0.3间接
npm@ungap/structured-clone1.3.0间接
npmajv8.17.1间接
npmansi-regex5.0.1间接
npmansi-styles4.3.0间接
npmarray-union2.1.0间接
npmarrify1.0.1间接
npmastral-regex2.0.0间接
npmautoprefixer9.8.8间接
npmbail1.0.5间接
npmbail2.0.2间接
npmbalanced-match1.0.2间接
npmbalanced-match2.0.0间接
npmbaseline-browser-mapping2.8.6间接
npmblueimp-canvas-to-blob3.29.0间接
npmblueimp-load-image5.16.0间接
npmblueimp-tmpl3.20.0间接
npmblurhash2.0.5间接
npmbrace-expansion1.1.12间接
npmbraces3.0.3间接
npmbrowserslist4.26.2间接
npmcallsites3.1.0间接
npmcamelcase5.3.1间接
npmcamelcase-keys6.2.2间接
npmcaniuse-lite1.0.30001745间接
npmccount2.0.1间接
npmchalk4.1.2间接
npmcharacter-entities1.2.4间接
npmcharacter-entities2.0.2间接
npmcharacter-entities-html42.1.0间接
npmcharacter-entities-legacy1.1.4间接
npmcharacter-entities-legacy3.0.0间接
npmcharacter-reference-invalid1.1.4间接
npmclone-regexp2.2.0间接
npmcolor-convert2.0.1间接
npmcolor-convert3.1.0间接
npmcolor-name1.1.4间接
npmcolor-name2.0.2间接
npmcolor-parse2.0.2间接
npmcomma-separated-tokens2.0.3间接
npmconcat-map0.0.1间接
npmconvert-source-map2.0.0间接
npmcosmiconfig7.1.0间接
npmcssesc3.0.0间接
npmdebug4.4.3间接
npmdecamelize1.2.0间接
npmdecamelize-keys1.1.1间接
npmdecode-named-character-reference1.2.0间接
npmdequal2.0.3间接
npmdevlop1.1.0间接
npmdir-glob3.0.1间接
npmdom-serializer0.2.2间接
npmdomelementtype1.3.1间接
npmdomelementtype2.3.0间接
npmdomhandler2.4.2间接
npmdomutils1.7.0间接
npmelectron-to-chromium1.5.223间接
npmemoji-regex8.0.0间接
npmentities1.1.2间接
npmentities2.2.0间接
npmerror-ex1.3.4间接
npmes-toolkit1.45.1间接
npmesbuild0.28.1间接
npmescalade3.2.0间接
npmescape-string-regexp5.0.0间接
npmexecall2.0.0间接
npmextend3.0.2间接
npmfast-deep-equal3.1.3间接
npmfast-glob3.3.3间接
npmfast-uri3.1.4间接
npmfastest-levenshtein1.0.16间接
npmfastq1.19.1间接
npmfile-entry-cache6.0.1间接
npmfill-range7.1.1间接
npmfind-up4.1.0间接
npmflat-cache3.2.0间接
npmflatted3.4.2间接
npmfs.realpath1.0.0间接
npmfunction-bind1.1.2间接
npmfuzzysort3.1.0间接
npmgensync1.0.0-beta.2间接
npmget-stdin8.0.0间接
npmglob7.2.3间接
npmglob-parent5.1.2间接
npmglobal-modules2.0.0间接
npmglobal-prefix3.0.0间接
npmglobby11.1.0间接
npmglobjoin0.1.4间接
npmgonzales-pe4.3.0间接
npmhard-rejection2.1.0间接
npmhas-flag4.0.0间接
npmhasown2.0.2间接
npmhast-util-embedded3.0.0间接
npmhast-util-from-dom5.0.1间接
npmhast-util-has-property3.0.0间接
npmhast-util-is-body-ok-link3.0.1间接
npmhast-util-is-element3.0.0间接
npmhast-util-minify-whitespace1.0.1间接
npmhast-util-parse-selector4.0.0间接
npmhast-util-phrasing3.0.1间接
npmhast-util-to-dom4.0.1间接
npmhast-util-to-html9.0.5间接
npmhast-util-to-mdast10.1.2间接
npmhast-util-to-text4.0.2间接
npmhast-util-whitespace3.0.0间接
npmhastscript9.0.1间接
npmhosted-git-info2.8.9间接
npmhosted-git-info4.1.0间接
npmhtml-tags3.3.1间接
npmhtml-void-elements3.0.0间接
npmhtmlparser23.10.1间接
npmignore5.3.2间接
npmimport-fresh3.3.1间接
npmimport-lazy4.0.0间接
npmimurmurhash0.1.4间接
npmindent-string4.0.0间接
npminflight1.0.6间接
npminherits2.0.4间接
npmini1.3.8间接
npmis-alphabetical1.0.4间接
npmis-alphanumerical1.0.4间接
npmis-arrayish0.2.1间接
npmis-buffer2.0.5间接
npmis-core-module2.16.1间接
npmis-decimal1.0.4间接
npmis-extglob2.1.1间接
npmis-fullwidth-code-point3.0.0间接
npmis-glob4.0.3间接
npmis-hexadecimal1.0.4间接
npmis-number7.0.0间接
npmis-plain-obj1.1.0间接
npmis-plain-obj2.1.0间接
npmis-plain-obj4.1.0间接
npmis-regexp2.1.0间接
npmis-typedarray1.0.0间接
npmis-unicode-supported0.1.0间接
npmisexe2.0.0间接
npmjavascript-natural-sort0.7.1间接
npmjs-tokens4.0.0间接
npmjsesc3.1.0间接
npmjson-buffer3.0.1间接
npmjson-parse-even-better-errors2.3.1间接
npmjson-schema-traverse1.0.0间接
npmjson52.2.3间接
npmkeyv4.5.4间接
npmkind-of6.0.3间接
npmknown-css-properties0.21.0间接
npmlines-and-columns1.2.4间接
npmlocate-path5.0.0间接
npmlodash4.18.1间接
npmlodash.truncate4.4.2间接
npmlog-symbols4.1.0间接
npmlongest-streak2.0.4间接
npmlongest-streak3.1.0间接
npmlru-cache5.1.1间接
npmlru-cache6.0.0间接
npmmap-obj1.0.1间接
npmmap-obj4.3.0间接
npmmarkdown-table3.0.4间接
npmmathml-tag-names2.1.3间接
npmmdast-util-find-and-replace3.0.2间接
npmmdast-util-from-markdown0.8.5间接
npmmdast-util-from-markdown2.0.2间接
npmmdast-util-gfm3.1.0间接
npmmdast-util-gfm-autolink-literal2.0.1间接
npmmdast-util-gfm-footnote2.1.0间接
npmmdast-util-gfm-strikethrough2.0.0间接
npmmdast-util-gfm-table2.0.0间接
npmmdast-util-gfm-task-list-item2.0.0间接
npmmdast-util-newline-to-break2.0.0间接
npmmdast-util-phrasing4.1.0间接
npmmdast-util-to-hast13.2.1间接
npmmdast-util-to-markdown0.6.5间接
npmmdast-util-to-markdown2.1.2间接
npmmdast-util-to-string2.0.0间接
npmmdast-util-to-string4.0.0间接
npmmeow9.0.0间接
npmmerge21.4.1间接
npmmicromark2.11.4间接
npmmicromark4.0.2间接
npmmicromark-core-commonmark2.0.3间接
npmmicromark-extension-gfm3.0.0间接
npmmicromark-extension-gfm-autolink-literal2.1.0间接
npmmicromark-extension-gfm-footnote2.1.0间接
npmmicromark-extension-gfm-strikethrough2.1.0间接
npmmicromark-extension-gfm-table2.1.1间接
npmmicromark-extension-gfm-tagfilter2.0.0间接
npmmicromark-extension-gfm-task-list-item2.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-decode-string2.0.1间接
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间接
npmmin-indent1.0.1间接
npmminimatch3.1.2间接
npmminimist1.2.8间接
npmminimist-options4.1.0间接
npmms2.1.3间接
npmnode-releases2.0.21间接
npmnormalize-package-data2.5.0间接
npmnormalize-package-data3.0.3间接
npmnormalize-range0.1.2间接
npmnormalize-selector0.2.0间接
npmnum2fraction1.2.2间接
npmonce1.4.0间接
npmp-limit2.3.0间接
npmp-locate4.1.0间接
npmp-try2.2.0间接
npmparent-module1.0.1间接
npmparse-entities2.0.0间接
npmparse-json5.2.0间接
npmpath-exists4.0.0间接
npmpath-is-absolute1.0.1间接
npmpath-parse1.0.7间接
npmpath-type4.0.0间接
npmpicocolors0.2.1间接
npmpicocolors1.1.1间接
npmpicomatch2.3.2间接
npmpostcss7.0.39间接
npmpostcss-html0.36.0间接
npmpostcss-less3.1.4间接
npmpostcss-media-query-parser0.2.3间接
npmpostcss-resolve-nested-selector0.1.6间接
npmpostcss-safe-parser4.0.2间接
npmpostcss-sass0.4.4间接
npmpostcss-scss2.1.1间接
npmpostcss-selector-parser6.1.2间接
npmpostcss-sorting5.0.1间接
npmpostcss-syntax0.36.2间接
npmpostcss-value-parser4.2.0间接
npmproperty-information7.1.0间接
npmqueue-microtask1.2.3间接
npmquick-lru4.0.1间接
npmread-pkg5.2.0间接
npmread-pkg-up7.0.1间接
npmreadable-stream3.6.2间接
npmredent3.0.0间接
npmrehype-dom-parse5.0.2间接
npmrehype-dom-stringify4.0.2间接
npmrehype-minify-whitespace6.0.2间接
npmrehype-remark10.0.1间接
npmremark13.0.0间接
npmremark-breaks4.0.0间接
npmremark-gfm4.0.1间接
npmremark-parse11.0.0间接
npmremark-parse9.0.0间接
npmremark-rehype11.1.2间接
npmremark-stringify11.0.0间接
npmremark-stringify9.0.1间接
npmrepeat-string1.6.1间接
npmrequire-from-string2.0.2间接
npmresolve1.22.10间接
npmresolve-from4.0.0间接
npmresolve-from5.0.0间接
npmreusify1.1.0间接
npmrimraf3.0.2间接
npmrun-parallel1.2.0间接
npmsafe-buffer5.2.1间接
npmsemver5.7.2间接
npmsemver6.3.1间接
npmsemver7.7.2间接
npmshoestring2.0.1间接
npmsignal-exit3.0.7间接
npmslash3.0.0间接
npmslice-ansi4.0.0间接
npmsource-map0.6.1间接
npmspace-separated-tokens2.0.2间接
npmspdx-correct3.2.0间接
npmspdx-exceptions2.5.0间接
npmspdx-expression-parse3.0.1间接
npmspdx-license-ids3.0.22间接
npmspecificity0.4.1间接
npmstring-width4.2.3间接
npmstring_decoder1.3.0间接
npmstringify-entities4.0.4间接
npmstrip-ansi6.0.1间接
npmstrip-indent3.0.0间接
npmstyle-search0.1.0间接
npmstylelint13.13.1间接
npmstylelint-config-recommended3.0.0间接
npmstylelint-order4.1.0间接
npmstylelint-scss3.21.0间接
npmsugarss2.0.0间接
npmsupports-color7.2.0间接
npmsupports-preserve-symlinks-flag1.0.0间接
npmsvg-tags1.0.0间接
npmtable6.9.0间接
npmto-regex-range5.0.1间接
npmtrim-lines3.0.1间接
npmtrim-newlines3.0.1间接
npmtrim-trailing-lines2.1.0间接
npmtrough1.0.5间接
npmtrough2.2.0间接
npmtype-fest0.18.1间接
npmtype-fest0.6.0间接
npmtype-fest0.8.1间接
npmtypedarray-to-buffer3.1.5间接
npmunified11.0.5间接
npmunified9.2.2间接
npmunist-util-find-after5.0.0间接
npmunist-util-find-all-after3.0.2间接
npmunist-util-is4.1.0间接
npmunist-util-is6.0.0间接
npmunist-util-position5.0.0间接
npmunist-util-stringify-position2.0.3间接
npmunist-util-stringify-position4.0.0间接
npmunist-util-visit5.0.0间接
npmunist-util-visit-parents6.0.1间接
npmupdate-browserslist-db1.1.3间接
npmutil-deprecate1.0.2间接
npmv8-compile-cache2.4.0间接
npmvalidate-npm-package-license3.0.4间接
npmvanilla-colorful0.7.2间接
npmvfile4.2.1间接
npmvfile6.0.3间接
npmvfile-message2.0.4间接
npmvfile-message4.0.3间接
npmweb-namespaces2.0.1间接
npmwhich1.3.1间接
npmwrappy1.0.2间接
npmwrite-file-atomic3.0.3间接
npmyallist3.1.1间接
npmyallist4.0.0间接
npmyaml1.10.2间接
npmyargs-parser20.2.9间接
npmzwitch1.0.5间接
npmzwitch2.0.4间接
RubyGemsactioncable7.2.2.1间接
RubyGemsactionmailbox7.2.2.1间接
RubyGemsactionmailer7.2.2.1间接
RubyGemsactionpack7.2.2.1间接
RubyGemsactiontext7.2.2.1间接
RubyGemsactionview7.2.2.1间接
RubyGemsactivejob7.2.2.1间接
RubyGemsactivemodel7.2.2.1间接
RubyGemsactiverecord7.2.2.1间接
RubyGemsactivestorage7.2.2.1间接
RubyGemsactivestorage-validator间接
RubyGemsactivestorage-validator0.4.0间接
RubyGemsactivesupport7.2.2.1间接
RubyGemsacts_as_list间接
RubyGemsacts_as_list1.2.6间接
RubyGemsacts_as_tree间接
RubyGemsacts_as_tree2.9.1间接
RubyGemsaddressable2.9.0间接
RubyGemsbase64间接
RubyGemsbase640.3.0间接
RubyGemsbcrypt3.1.22间接
RubyGemsbenchmark0.5.0间接
RubyGemsbigdecimal间接
RubyGemsbigdecimal4.1.2间接
RubyGemsbuilder3.3.0间接
RubyGemsbyebug13.0.0间接
RubyGemscapybara3.40.0间接
RubyGemschildprocess5.1.0间接
RubyGemschunky_png1.4.0间接
RubyGemscliver0.3.2间接
RubyGemscoderay1.1.3间接
RubyGemsconcurrent-ruby1.3.7间接
RubyGemsconnection_pool3.0.2间接
RubyGemscrass1.0.7间接
RubyGemscss_parser3.0.0间接
RubyGemscsso-rails间接
RubyGemscsso-rails0.9.0间接
RubyGemscsv3.3.0间接
RubyGemsdatabase_cleaner2.1.0间接
RubyGemsdatabase_cleaner-active_record2.2.0间接
RubyGemsdatabase_cleaner-core2.0.1间接
RubyGemsdate3.5.1间接
RubyGemsdelocalize间接
RubyGemsdelocalize1.2.0间接
RubyGemsdevise间接
RubyGemsdevise5.0.4间接
RubyGemsdevise-two-factor间接
RubyGemsdevise-two-factor6.4.0间接
RubyGemsdiff-lcs1.6.2间接
RubyGemsdiffy间接
RubyGemsdiffy3.4.4间接
RubyGemsdocile1.4.1间接
RubyGemsdrb间接
RubyGemsdrb2.2.3间接
RubyGemserb6.0.4间接
RubyGemserubi1.13.1间接
RubyGemsexecjs间接
RubyGemsexecjs2.10.0间接
RubyGemsfactory_bot6.6.0间接
RubyGemsfactory_bot_rails6.5.1间接
RubyGemsffi1.17.0间接
RubyGemsfile_validators3.0.0间接
RubyGemsglobalid1.2.1间接
RubyGemshaml间接
RubyGemshaml6.3.0间接
RubyGemshaml-rails间接
RubyGemshaml-rails2.1.0间接
RubyGemshighline间接
RubyGemshighline3.1.2间接
RubyGemshttparty0.22.0间接
RubyGemsi18n1.15.2间接
RubyGemsimage_processing间接
RubyGemsimage_processing1.13.0间接
RubyGemsio-console0.8.2间接
RubyGemsirb1.18.0间接
RubyGemsjsbundling-rails1.3.1间接
RubyGemsjson2.8.1间接
RubyGemskraken-io间接
RubyGemskraken-io0.1.3间接
RubyGemslaunchy3.0.1间接
RubyGemslibv8-node18.19.0.0间接
RubyGemslogger1.7.0间接
RubyGemsloofah2.25.2间接
RubyGemsmail2.8.1间接
RubyGemsmarcel1.0.4间接
RubyGemsmatrix0.4.2间接
RubyGemsmethod_source1.1.0间接
RubyGemsmime-types3.6.0间接
RubyGemsmime-types-data3.2024.1105间接
RubyGemsmini_magick4.13.2间接
RubyGemsmini_mime1.1.5间接
RubyGemsmini_portile22.8.9间接
RubyGemsmini_racer间接
RubyGemsmini_racer0.16.0间接
RubyGemsminitest6.0.6间接
RubyGemsmulti_xml0.9.1间接
RubyGemsmultipart-post2.4.1间接
RubyGemsmutex_m间接
RubyGemsmutex_m0.3.0间接
RubyGemsmysql2间接
RubyGemsmysql20.5.6间接
RubyGemsnet-imap0.5.15间接
RubyGemsnet-pop0.1.2间接
RubyGemsnet-protocol0.2.2间接
RubyGemsnet-smtp0.5.1间接
RubyGemsnio4r2.7.4间接
RubyGemsnokogiri1.19.4间接
RubyGemsorm_adapter0.5.0间接
RubyGemspaper_trail间接
RubyGemspaper_trail16.0.0间接
RubyGemspaper_trail-association_tracking间接
RubyGemspaper_trail-association_tracking2.3.0间接
RubyGemspoltergeist1.18.1间接
RubyGemspp0.6.4间接
RubyGemsprettyprint0.2.0间接
RubyGemsprism1.9.0间接
RubyGemspry0.16.0间接
RubyGemspry-byebug3.12.0间接
RubyGemspsych5.4.0间接
RubyGemspublic_suffix7.0.5间接
RubyGemsracc1.8.1间接
RubyGemsrack间接
RubyGemsrack3.1.21间接
RubyGemsrack-cache间接
RubyGemsrack-cache1.17.0间接
RubyGemsrack-session2.1.2间接
RubyGemsrack-test2.2.0间接
RubyGemsrackup2.3.1间接
RubyGemsradius间接
RubyGemsradius0.8.0间接
RubyGemsrails间接
RubyGemsrails7.2.2.1间接
RubyGemsrails-dom-testing2.3.0间接
RubyGemsrails-html-sanitizer1.7.1间接
RubyGemsrails-observers0.1.5间接
RubyGemsrailties7.2.2.1间接
RubyGemsrake间接
RubyGemsrake13.4.2间接
RubyGemsransack间接
RubyGemsransack4.2.1间接
RubyGemsrbs4.0.3间接
RubyGemsrdoc间接
RubyGemsrdoc8.0.0间接
RubyGemsRedCloth4.3.4间接
RubyGemsregexp_parser2.9.2间接
RubyGemsreline0.6.3间接
RubyGemsrequest_store1.7.0间接
RubyGemsresponders3.2.0间接
RubyGemsroadie5.3.1间接
RubyGemsroadie-rails间接
RubyGemsroadie-rails3.4.0间接
RubyGemsrotp6.3.0间接
RubyGemsrqrcode间接
RubyGemsrqrcode3.2.0间接
RubyGemsrqrcode_core2.1.0间接
RubyGemsrspec-core3.13.4间接
RubyGemsrspec-expectations3.13.5间接
RubyGemsrspec-mocks3.13.5间接
RubyGemsrspec-rails7.1.1间接
RubyGemsrspec-support3.13.4间接
RubyGemsrspec_junit_formatter0.6.0间接
RubyGemsruby-vips2.2.2间接
RubyGemssass-rails间接
RubyGemssass-rails6.0.0间接
RubyGemssassc2.4.0间接
RubyGemssassc-rails2.1.2间接
RubyGemssecurerandom0.4.1间接
RubyGemssimplecov0.22.0间接
RubyGemssimplecov-html0.13.1间接
RubyGemssimplecov-lcov0.8.0间接
RubyGemssimplecov_json_formatter0.1.4间接
RubyGemssprockets4.2.1间接
RubyGemssprockets-rails3.5.2间接
RubyGemsssrf_filter1.5.0间接
RubyGemsstringex间接
RubyGemsstringex2.8.6间接
RubyGemsstringio3.2.0间接
RubyGemstemple0.10.3间接
RubyGemsthor1.5.0间接
RubyGemstilt2.4.0间接
RubyGemstimeout0.6.1间接
RubyGemstsort0.2.0间接
RubyGemstzinfo间接
RubyGemstzinfo2.0.6间接
RubyGemsuglifier间接
RubyGemsuglifier4.2.1间接
RubyGemsuri间接
RubyGemsuri1.0.4间接
RubyGemsuseragent0.16.11间接
RubyGemswarden1.2.9间接
RubyGemswebsocket-driver0.8.2间接
RubyGemswebsocket-extensions0.1.5间接
RubyGemswill_paginate间接
RubyGemswill_paginate4.0.1间接
RubyGemsxpath3.2.0间接
RubyGemszeitwerk2.8.2间接
依赖安全公告 10

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

软件包版本关系严重程度公告数修复版本
activestorage7.2.2.1间接严重68.1.2.1
activesupport7.2.2.1间接38.1.2.1
brace-expansion1.1.12间接35.0.8
httparty0.22.0间接10.24.0
minimatch3.1.2间接310.2.3
postcss7.0.39间接48.5.18
activerecord7.2.2.1间接18.0.2.1
ajv8.17.1间接18.18.0
yaml1.10.2间接12.8.3
actionview7.2.2.1间接18.1.2.1

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

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "cms",
        "cms-framework",
        "rails",
        "ruby",
        "hacktoberfest"
      ],
      "is_fork": false,
      "size_kb": 32078,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "CSS": 235352,
        "HTML": 18406,
        "Haml": 69397,
        "Ruby": 540297,
        "SCSS": 57886,
        "JavaScript": 3877018
      },
      "pushed_at": "2026-07-27T18:18:30Z",
      "created_at": "2014-04-24T01:26:41Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-27T18:19:23Z",
      "description": "TrustyCMS is a modern, Ruby on Rails-driven CMS that can be extended for any business needs.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript",
        "Ruby"
      ]
    },
    "owner": {
      "blog": "https://trustarts.org",
      "name": "The Pittsburgh Cultural Trust",
      "type": "Organization",
      "login": "pgharts",
      "company": null,
      "location": "Pittsburgh, PA",
      "followers": 8,
      "avatar_url": "https://avatars.githubusercontent.com/u/177398?v=4",
      "created_at": "2010-01-06T14:24:47Z",
      "is_verified": null,
      "public_repos": 17,
      "account_age_days": 6046
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v7.1.3",
          "kind": "patch",
          "published_at": "2026-07-27T17:56:16Z"
        },
        {
          "tag": "v7.1.2",
          "kind": "patch",
          "published_at": "2026-06-22T14:18:33Z"
        },
        {
          "tag": "v7.1.1",
          "kind": "patch",
          "published_at": "2026-05-12T14:53:58Z"
        },
        {
          "tag": "v7.1.0",
          "kind": "minor",
          "published_at": "2026-04-16T13:56:50Z"
        },
        {
          "tag": "v7.0.49",
          "kind": "patch",
          "published_at": "2026-04-16T13:55:35Z"
        },
        {
          "tag": "v-7.0.24",
          "kind": "other",
          "published_at": "2025-03-31T18:39:55Z"
        },
        {
          "tag": "v7.0.8",
          "kind": "patch",
          "published_at": "2025-01-16T15:23:53Z"
        },
        {
          "tag": "v-7.0.9",
          "kind": "other",
          "published_at": "2025-01-16T15:24:33Z"
        },
        {
          "tag": "v7.0.7",
          "kind": "patch",
          "published_at": "2025-01-08T19:04:51Z"
        },
        {
          "tag": "v7.0.6",
          "kind": "patch",
          "published_at": "2025-01-08T15:01:07Z"
        },
        {
          "tag": "v7.0.4",
          "kind": "patch",
          "published_at": "2025-01-02T15:43:07Z"
        },
        {
          "tag": "6.3.1",
          "kind": "patch",
          "published_at": "2024-11-01T13:20:01Z"
        },
        {
          "tag": "trusty-cms-v7.0.0",
          "kind": "other",
          "published_at": "2024-10-29T17:54:50Z"
        },
        {
          "tag": "v6.2.1",
          "kind": "patch",
          "published_at": "2024-09-16T19:21:06Z"
        },
        {
          "tag": "v6.1.2",
          "kind": "patch",
          "published_at": "2023-12-19T17:36:29Z"
        },
        {
          "tag": "v6.1.1",
          "kind": "patch",
          "published_at": "2023-12-13T18:28:32Z"
        },
        {
          "tag": "v6.1.0",
          "kind": "minor",
          "published_at": "2023-11-21T14:30:56Z"
        },
        {
          "tag": "v6.0.5",
          "kind": "patch",
          "published_at": "2023-11-20T15:57:14Z"
        },
        {
          "tag": "v6.0.4",
          "kind": "patch",
          "published_at": "2023-11-01T19:36:02Z"
        },
        {
          "tag": "v6.0.0",
          "kind": "major",
          "published_at": "2023-10-20T13:06:00Z"
        },
        {
          "tag": "5.6.0",
          "kind": "minor",
          "published_at": "2023-10-19T20:22:10Z"
        },
        {
          "tag": "4.3.5",
          "kind": "patch",
          "published_at": "2021-10-05T15:45:32Z"
        },
        {
          "tag": "5.0.0",
          "kind": "major",
          "published_at": "2021-10-05T15:39:38Z"
        },
        {
          "tag": "4.3.1",
          "kind": "patch",
          "published_at": "2021-07-06T17:49:03Z"
        },
        {
          "tag": "4.3",
          "kind": "other",
          "published_at": "2021-06-15T15:41:08Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "f5652ff4f32dd7775238957fea9a4fc12d6e63c9",
          "body": "Version bump - 7.1.2 --> 7.1.3",
          "is_bot": false,
          "headline": "Merge pull request #1050 from pgharts/version/7.1.3",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T18:18:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8efa3fdf68f391c739ebfaf2c9d67c85c7191440",
          "body": null,
          "is_bot": false,
          "headline": "Fix failing spec by adding nil operator to asset types",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T18:15:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a492200b33e226cad912d89857ddc81fa953234c",
          "body": null,
          "is_bot": false,
          "headline": "bump lockfile",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:55:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5045b6b2e10e4d17461407137c1b424e64b3896e",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:54:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c2572c17a3d49119d51c4cd781c470288da01987",
          "body": "Bump uri from 1.0.2 to 1.0.4",
          "is_bot": false,
          "headline": "Merge pull request #1047 from pgharts/dependabot/bundler/uri-1.0.4",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:49:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc3e6f7bfac9a5d7796754760c8191ccbeaa52ef",
          "body": "Telemetry: instrument CMS site-scope auth failures (diagnostic for #1040)",
          "is_bot": false,
          "headline": "Merge pull request #1046 from pgharts/telemetry/multi-site-logout",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:44:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d5f1f433c762e55f0046fa93ac766c1e36ad603",
          "body": "Bumps [uri](https://github.com/ruby/uri) from 1.0.2 to 1.0.4.\n- [Release notes](https://github.com/ruby/uri/releases)\n- [Commits](https://github.com/ruby/uri/compare/v1.0.2...v1.0.4)\n\n---\nupdated-dependencies:\n- dependency-name: uri\n  dependency-version: 1.0.4\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump uri from 1.0.2 to 1.0.4",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-27T17:11:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53029e8ef72b817cc7166291c787b2ad056ee7ef",
          "body": "…i-3.1.4\n\nBump fast-uri from 3.1.2 to 3.1.4",
          "is_bot": false,
          "headline": "Merge pull request #1044 from pgharts/dependabot/npm_and_yarn/fast-ur…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:10:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a30111e78e3ae0bbb06678ce665130251a49a0ab",
          "body": "…anitizer-1.7.1\n\nBump rails-html-sanitizer from 1.7.0 to 1.7.1",
          "is_bot": false,
          "headline": "Merge pull request #1043 from pgharts/dependabot/bundler/rails-html-s…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:10:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2782ecbd58d2c4b6ad128b57a7de6590f2bfa48",
          "body": "…iver-0.8.2\n\nBump websocket-driver from 0.8.1 to 0.8.2",
          "is_bot": false,
          "headline": "Merge pull request #1037 from pgharts/dependabot/bundler/websocket-dr…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:10:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78cbf98c2a68f9d6661e0af019c07bc1ec9e5955",
          "body": "Bump loofah from 2.25.1 to 2.25.2",
          "is_bot": false,
          "headline": "Merge pull request #1036 from pgharts/dependabot/bundler/loofah-2.25.2",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:10:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c4041b71b6894a38d6d3e15efd2e4f338663fd9",
          "body": "- ApplicationController: use a prepended around_action with ensure to\n  clear Thread.current[:trusty_request_host], so it can't leak into the\n  next request on the same thread if the request raises.\n- SiteScopeAuthReporter#expected_site_for: a blank domain compiles to a\n  regexp that matches every h\n[…]\nalse in\n  ensure) so the un-undoable `extend` can't leave telemetry enabled for\n  unrelated specs. Add a host_unmatched classification example.\n\nFull suite: 398 examples, 0 failures.\n\nRefs #1040 #1046",
          "is_bot": false,
          "headline": "Address Copilot review on #1046",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T15:30:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "86172d61c610afee82b6f79aa2916309ffb4ab59",
          "body": "The intermittent logout is hard to reproduce as a user, so before shipping\nthe behavior-change fix (PR #1041) we want production evidence that the\nfailures really are the current_site race vs. genuine cross-site access or\na Site.default fallback. This adds telemetry with ZERO behavior change.\n\n- Use\n[…]\nl) while the correct telemetry + classification\nfire, plus that a reporter error is swallowed. Full suite green (397).\n\nRefs #1040\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add observe-only telemetry for CMS site-scope logouts (#1040 diagnostic)",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T15:07:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "068edcad131dbc30f9e796aefce68582b4453ad5",
          "body": "Bumps [fast-uri](https://github.com/fastify/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---\nupdated-dependencies:\n- dependency-name: fast-uri\n  dependency-version: 3.1.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump fast-uri from 3.1.2 to 3.1.4",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T13:09:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "39974bc1bc7a609feb9ba0e5451dba02c744d94d",
          "body": "Bumps [rails-html-sanitizer](https://github.com/rails/rails-html-sanitizer) from 1.7.0 to 1.7.1.\n- [Release notes](https://github.com/rails/rails-html-sanitizer/releases)\n- [Changelog](https://github.com/rails/rails-html-sanitizer/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/rails/rails-ht\n[…]\nare/v1.7.0...v1.7.1)\n\n---\nupdated-dependencies:\n- dependency-name: rails-html-sanitizer\n  dependency-version: 1.7.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump rails-html-sanitizer from 1.7.0 to 1.7.1",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-24T23:47:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "96b468124d0a5380c9d5266600535b64bc94882a",
          "body": "Replace :deleted with :ok and update the spec",
          "is_bot": false,
          "headline": "Merge pull request #1039 from pgharts/bugfix/1033",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-24T15:01:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7e3790bc92fc6ef64a68f12cd4deccb3185bd61",
          "body": null,
          "is_bot": false,
          "headline": "Replace :deleted with :ok and update the spec",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-24T13:53:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "684b0ae6cd67081bb2cbcfd98e6ad03ed83b7f1e",
          "body": "Bumps [websocket-driver](https://github.com/faye/websocket-driver-ruby) from 0.8.1 to 0.8.2.\n- [Changelog](https://github.com/faye/websocket-driver-ruby/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/faye/websocket-driver-ruby/compare/0.8.1...0.8.2)\n\n---\nupdated-dependencies:\n- dependency-name: websocket-driver\n  dependency-version: 0.8.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump websocket-driver from 0.8.1 to 0.8.2",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-24T09:45:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e0135996a2284b8e4393c0b06ff1fc912b6a252",
          "body": "Fix Asset.thumbnail_options TypeError on hash-style styles",
          "is_bot": false,
          "headline": "Merge pull request #1035 from pgharts/bugfix/asset-thumbnail-options",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-23T18:43:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9284545b21e33b0623cbb4a253bc029a8a06f82",
          "body": "thumbnail_sizes (AssetType standard styles) includes original: {}, which\ndescribe_style rendered as a blank \"original: \" option alongside the\nexplicit \"Original (as uploaded)\" entry prepended afterward. Skip the\n:original style when mapping so the picker has a single original option.\n\nTighten the spec: assert original appears exactly once (as the explicit\n'original' entry, not the blank :original one).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "address Copilot review on #1035: drop duplicate \"original\" picker option",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-23T18:40:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "149c50a2f46dc881dec59e5b6c2abae3d55bab74",
          "body": "Bumps [loofah](https://github.com/flavorjones/loofah) from 2.25.1 to 2.25.2.\n- [Release notes](https://github.com/flavorjones/loofah/releases)\n- [Changelog](https://github.com/flavorjones/loofah/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/flavorjones/loofah/compare/v2.25.1...v2.25.2)\n\n---\nupdated-dependencies:\n- dependency-name: loofah\n  dependency-version: 2.25.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump loofah from 2.25.1 to 2.25.2",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-23T14:36:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "844e69c8b2d72ece980a013b0c87e546743e134e",
          "body": "Upgrade specs for core monkeypatches, config caching, and auth",
          "is_bot": false,
          "headline": "Merge pull request #1034 from pgharts/specs/continued",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-23T13:47:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0e222bb5e94eb1ab0ff84662be7feaf946beed7",
          "body": "Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Apply suggestions from code review",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-23T13:43:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2cb9e138d73808b64e3d826c34a91b7cb665f934",
          "body": "- rails_helper: enable Warden.test_mode! before feature specs so login_as\n  works (Warden::Test::Helpers requires it).\n- snippets request spec: assert redirect against new_user_session_path\n  instead of the hard-coded /users/sign_in.\n- config cache spec: seed and clean up a known probe key so the re\n[…]\nuild, and to_hash assertions can't pass vacuously on an empty\n  config table (cleanup keeps the truncation-exempt table pristine).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "address Copilot review on #1034",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T19:49:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "52b10d821447f1f052a244e8204e0edbb2064101",
          "body": "ActiveStorage styles are hashes (e.g. {geometry: '100x100#', format:\n:png}), but thumbnail_options appended the style value directly to a\nString, which only worked for the old array/string style definitions\nand raised TypeError otherwise. This surfaced when a 'thumbnail' option\nwas passed through fr\n[…]\nker\ndescription. Replace the spec that documented the bug with tests for the\nfixed behavior and direct coverage of describe_style.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix Asset.thumbnail_options TypeError on hash-style styles",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T19:14:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "db0b7160ea85a36bd30b7ce5c07fea368a0ef217",
          "body": "Harness (spec/rails_helper.rb):\n- Drop the poltergeist/PhantomJS driver (unmaintained; does not run on\n  modern Ruby/Rails). Use selenium_chrome_headless as the JS driver,\n  registered lazily so it doesn't require selenium-webdriver at load.\n- Wire up Devise/Warden test helpers (sign_in for request \n[…]\ntroy removes the record but the JSON/XML\nresponder calls `head :deleted`, an invalid Rack status symbol, so the\nresponse is a 500.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Tier 3: migrate test harness off poltergeist + add request smoke specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T18:54:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "69b69643214146dd302d23babe7bf3f3aa1c2502",
          "body": "LoginSystem: pin the role-based access rules (only_allow_access_to /\nuser_has_access_to_action?) for the :when-roles, :if-predicate,\ndefault-allow, and anonymous-user cases. Documents that .login_required?\nis dead code referencing the removed filter_chain API.\n\nAdmin::SnippetsController: exercise th\n[…]\nvia rescue_from\n(only PagesController does), so an invalid create raises RecordInvalid\nunhandled instead of re-rendering the form.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Tier 2 upgrade specs: LoginSystem authorization + resource CRUD cycle",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T18:41:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6c782a561379bb34385e67ce6294e57f7cbbf714",
          "body": "Pin the behaviour of code most coupled to Ruby/Rails internals, so a\nversion bump surfaces as a targeted failure rather than a mystery.\n\n- string_extensions: symbolize, titlecase, to_name, parameterize + slug\n  aliases\n- symbol_extensions: symbolize (explicitly required; not autoloaded in\n  the app \n[…]\n round-trip, stale_cache?\n  detection, and the []-rebuilds-when-stale path (read-only w.r.t. the\n  truncation-exempt config table)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "upgrade tripwire specs for core monkeypatches and Config cache",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T18:41:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e184c3948e0adc14bee5672b53242de4bd8ae878",
          "body": "Helper Specs",
          "is_bot": false,
          "headline": "Merge pull request #1030 from pgharts/specs/helpers",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T18:38:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b54da4ecc55789840f7e26af3751b41fa8f4b7c",
          "body": "Cover the site-scoped title/subtitle: the current-site value when\npresent, the configured admin.title/admin.subtitle fallback when the\nsite value is blank, and the hardcoded default when both are blank.\nScopedHelper is mixed into a small host class with a stubbed\ncurrent_site to avoid colliding with ApplicationHelper's own\ntitle/subtitle on the shared helper object.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "helper specs for ScopedHelper",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T18:08:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bb4870650b1c006a7de953b173f83069e65e2fd7",
          "body": "…esHelper\n\nAdmin::UrlHelper: format_path segment handling, extract_base_url\n(including the localhost port case), default_route?/lookup_page_path\nwith no configured routes, and build_url/generate_page_url.\n\nApplicationHelper: title/subtitle/default_page_title config fallbacks,\nlogged_in?/admin?/desig\n[…]\nge, filter lookup by name (forcing\nthe descendant to autoload), filter_reference messages, and\n_display_name for tags and filters.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "helper specs for Admin::UrlHelper, ApplicationHelper, Admin::Referenc…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T18:04:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "229f44e5a22e491fff01de9ebe907eb5fcb2e9dc",
          "body": "…iver-0.8.1\n\nBump websocket-driver from 0.8.0 to 0.8.1",
          "is_bot": false,
          "headline": "Merge pull request #1029 from pgharts/dependabot/bundler/websocket-dr…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-16T19:50:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99373495f42235ad3846d74a9b19dacf5f290142",
          "body": "Bumps [websocket-driver](https://github.com/faye/websocket-driver-ruby) from 0.8.0 to 0.8.1.\n- [Changelog](https://github.com/faye/websocket-driver-ruby/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/faye/websocket-driver-ruby/compare/0.8.0...0.8.1)\n\n---\nupdated-dependencies:\n- dependency-name: websocket-driver\n  dependency-version: 0.8.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump websocket-driver from 0.8.0 to 0.8.1",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-16T01:00:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96a9aa001e53c6945c0fbc0bf020d723e67e630f",
          "body": "Models Specs",
          "is_bot": false,
          "headline": "Merge pull request #1028 from pgharts/specs/models",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T19:41:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "556ccba07bf51a3682b72b702e3b0f1387683b05",
          "body": "user_action_observer_spec: restore the original Thread.current\n[:current_user] via an around hook instead of clobbering it with nil,\nso a pre-existing value survives and the spec is order-independent.\n\nsnippet_tags_spec: extend SnippetTags onto a single page instance (as\nMenuRenderer is used) instead of Page.include in before(:all), so the\nglobal Page class is no longer mutated for the rest of the suite.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "address Copilot review: isolate observer and snippet-tag specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T19:35:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "43214902fd868c2270cbc146e8bd56ff888d2e62",
          "body": "Add specs for the previously-uncovered surface: geometry methods\n(width/height/aspect/orientation/square?/vertical?/horizontal?/\ndimensions_known?) and the StyleError path, the unattached fallback\naccessors (filename/content_type/byte_size/basename/extension), the\nprivate active_storage_transformati\n[…]\nn << v` where\nv is the style Hash, which is a latent bug with the standard hash-style\nstyles. Documented rather than papered over.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "beef up Asset model coverage (~58% -> ~87%)",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T19:01:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eecfd0f8495ac6b5e3c3616e21b976b27d82056f",
          "body": "Passing value: to Config.new routes through the custom #value= setter,\nwhich calls save!. Since the config table is exempt from truncation,\nthe saved row persisted and later examples collided on the unique key\nindex under randomized order. Assign the raw attribute with self[:value]=\n(write_attribute) on an unsaved instance instead, so the spec never\nwrites to the config table.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix TrustyCms::Config spec leaking rows via the value= setter",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T18:13:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "abcae804f9310c401b43b1d4d1d99f9bbbb9e790",
          "body": "SnippetTags is mixed into Page (as the snippets extension does) and\ndriven through Page#parse: snippet rendering, double-tag <r:yield/>\nsubstitution, missing-name and missing-snippet errors, per-render\ncaching, and bare <r:yield/>. TrustyCms::Config covers the\nboolean?/checked?/value logic and the s\n[…]\n).\nPageResponseCacheDirector covers the cacheable/non-cacheable branches\nand page-vs-class timeout selection via listener doubles.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "model specs for SnippetTags and the trusty_cms/ models",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T18:04:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b047ecd694c5712ea0637adb19e172d5654435b3",
          "body": "PageContext is exercised both directly (page global, tag definitions,\nindependent dup) and through Page#parse: a standard tag renders, a\nraising tag propagates in test/dev, and is wrapped in an error div when\nraise_errors? is stubbed off (production-like). HamlFilter covers the\nderived filter_name, Haml-to-HTML rendering, and the radius-tag\nun-escaping gsub.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "model specs for PageContext and HamlFilter",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T17:58:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "372216843a9b86b08277f9d786cc1b5906b3f3e7",
          "body": "…Finder\n\nTextFilter covers the identity filter, class-level delegation, and the\ninherited/descendants registry via a load-time sample subclass.\nMenuRenderer is exercised through a Page extended with the module, with\nits module-level exclusion ivar isolated per example so the .exclude\ntest can't leak across run order. UserActionObserver covers its\nthread-local current_user; SnippetFinder covers find/find_by_name.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "model specs for TextFilter, MenuRenderer, UserActionObserver, Snippet…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T17:50:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0a98dd0591e4ce3af432fd651d71b8bdda63183c",
          "body": null,
          "is_bot": false,
          "headline": "model specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T17:43:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f322215eb5d67d4c897bead41bc28ad8c9a70dd5",
          "body": "Specs/page",
          "is_bot": false,
          "headline": "Merge pull request #1027 from pgharts/specs/page",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T20:00:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d30d8b679ed7298e461c801ad5f91761ac8b4593",
          "body": null,
          "is_bot": false,
          "headline": "site controller specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T17:49:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "220af182396ccb2405826f2d4a53e033122b5dc9",
          "body": null,
          "is_bot": false,
          "headline": "add site specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T17:37:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c438f464b59ab82dbb9c5a4325f084e5ed0dcd4",
          "body": null,
          "is_bot": false,
          "headline": "Add page specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T17:24:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "21f2533d728ad4512b53c10b7bfb9f0a218e160b",
          "body": "Standard tags spec",
          "is_bot": false,
          "headline": "Merge pull request #1026 from pgharts/specs/standard_tags",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T16:11:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "196f4f59815ebde806be1cf3fc4f367059bc1368",
          "body": null,
          "is_bot": false,
          "headline": "Add meta, children specs to standard specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T15:56:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a21677589f3394703e70051e2eeb962612f080cf",
          "body": null,
          "is_bot": false,
          "headline": "add content tags",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T13:51:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3153dacd97e711e79dad7107326b1fbe3bd7feb8",
          "body": "…rails-6.5.1\n\nBump factory_bot_rails from 6.4.4 to 6.5.1",
          "is_bot": false,
          "headline": "Merge pull request #1022 from pgharts/dependabot/bundler/factory_bot_…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T19:16:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "683e9cc55e5ca2992818a88945a512d99a0a4f71",
          "body": "Bump rqrcode from 3.1.0 to 3.2.0",
          "is_bot": false,
          "headline": "Merge pull request #1021 from pgharts/dependabot/bundler/rqrcode-3.2.0",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T19:16:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "86a8bad7bd82e7905f8f470251ec61b31aa10084",
          "body": "Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 6.4.4 to 6.5.1.\n- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)\n- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/main/NEWS.md)\n- [Commits](https://github.com/thoughtbot/facto\n[…]\ndependency-name: factory_bot_rails\n  dependency-version: 6.5.1\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump factory_bot_rails from 6.4.4 to 6.5.1",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T18:52:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a8d645a38e321d70f52bb9657441c45b2c48b09c",
          "body": "Bumps [rqrcode](https://github.com/whomwah/rqrcode) from 3.1.0 to 3.2.0.\n- [Release notes](https://github.com/whomwah/rqrcode/releases)\n- [Changelog](https://github.com/whomwah/rqrcode/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/whomwah/rqrcode/compare/v3.1.0...v3.2.0)\n\n---\nupdated-dependencies:\n- dependency-name: rqrcode\n  dependency-version: 3.2.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump rqrcode from 3.1.0 to 3.2.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T18:52:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d925474cacd969fc4c9f023f60f5bdf903984f94",
          "body": "…-1.2.6\n\nBump acts_as_list from 1.2.4 to 1.2.6",
          "is_bot": false,
          "headline": "Merge pull request #1020 from pgharts/dependabot/bundler/acts_as_list…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:51:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "337272ad3aa92db64ce5031577f8d0490d20560a",
          "body": "….12.0\n\nBump pry-byebug from 3.10.1 to 3.12.0",
          "is_bot": false,
          "headline": "Merge pull request #1019 from pgharts/dependabot/bundler/pry-byebug-3…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:50:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1a6559104db90e3c79b799a229164a23fa774ee",
          "body": "…-3.4.0\n\nBump roadie-rails from 3.3.0 to 3.4.0",
          "is_bot": false,
          "headline": "Merge pull request #1018 from pgharts/dependabot/bundler/roadie-rails…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:50:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e2511060bcec6f9815aeabdc6b6663ef81711d8",
          "body": "…association_tracking-2.3.0\n\nUpdate paper_trail-association_tracking requirement from ~> 2.2.1 to >= 2.2.1, < 2.4.0",
          "is_bot": false,
          "headline": "Merge pull request #1017 from pgharts/dependabot/bundler/paper_trail-…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:49:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c952031e1b1ac4f6990577de51bc8d8afcd2ae48",
          "body": "Bumps [roadie-rails](https://github.com/Mange/roadie-rails) from 3.3.0 to 3.4.0.\n- [Changelog](https://github.com/Mange/roadie-rails/blob/master/Changelog.md)\n- [Commits](https://github.com/Mange/roadie-rails/compare/v3.3.0...v3.4.0)\n\n---\nupdated-dependencies:\n- dependency-name: roadie-rails\n  dependency-version: 3.4.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump roadie-rails from 3.3.0 to 3.4.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T18:41:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7a6250a9f97f178711fefc29b7a79f743a1f4cd",
          "body": "Update rdoc requirement from >= 5.1, < 7.0 to >= 5.1, < 9.0",
          "is_bot": false,
          "headline": "Merge pull request #1016 from pgharts/dependabot/bundler/rdoc-8.0.0",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:39:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98606ab1d13c20e922f5f5fa847d3133a36cbec8",
          "body": "Bumps [pry-byebug](https://github.com/deivid-rodriguez/pry-byebug) from 3.10.1 to 3.12.0.\n- [Release notes](https://github.com/deivid-rodriguez/pry-byebug/releases)\n- [Changelog](https://github.com/deivid-rodriguez/pry-byebug/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/deivid-rodriguez/\n[…]\nes:\n- dependency-name: pry-byebug\n  dependency-version: 3.12.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump pry-byebug from 3.10.1 to 3.12.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T18:26:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c01a556d399aa16421e7436749ffbd57d1d76c38",
          "body": "…>= 2.2.1, < 2.4.0\n\nUpdates the requirements on [paper_trail-association_tracking](https://github.com/westonganger/paper_trail-association_tracking) to permit the latest version.\n- [Release notes](https://github.com/westonganger/paper_trail-association_tracking/releases)\n- [Changelog](https://github\n[…]\ne: paper_trail-association_tracking\n  dependency-version: 2.3.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Update paper_trail-association_tracking requirement from ~> 2.2.1 to …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T18:26:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1802aeb7af5bbc8042bde4e9cdbe86ed96ebe0d8",
          "body": "Update psych requirement from = 5.2.2 to = 5.4.0",
          "is_bot": false,
          "headline": "Merge pull request #1015 from pgharts/dependabot/bundler/psych-5.4.0",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:24:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27d4911cef9c9c6bbead80c8df734d502036349a",
          "body": "…ore-7.29.7\n\nBump @babel/core from 7.28.4 to 7.29.7",
          "is_bot": false,
          "headline": "Merge pull request #1013 from pgharts/dependabot/npm_and_yarn/babel/c…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:12:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "887fb8a53b37841311729245800efbfe0229c2cf",
          "body": "Bump nokogiri from 1.19.3 to 1.19.4",
          "is_bot": false,
          "headline": "Merge pull request #1012 from pgharts/dependabot/bundler/nokogiri-1.19.4",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:12:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "951adc5fcec377e572583461ec22fd4d0e62b9c9",
          "body": "…uby-1.3.7\n\nBump concurrent-ruby from 1.3.6 to 1.3.7",
          "is_bot": false,
          "headline": "Merge pull request #1011 from pgharts/dependabot/bundler/concurrent-r…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:11:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1895fac722c94b1fbb8d386253cc9acc63b2bba",
          "body": "…-0.28.1\n\nBump esbuild from 0.25.11 to 0.28.1",
          "is_bot": false,
          "headline": "Merge pull request #1009 from pgharts/dependabot/npm_and_yarn/esbuild…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:11:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c0eefe3eda01704201bd02b8e068e530f0ef2d1",
          "body": null,
          "is_bot": false,
          "headline": "Standard tags spec",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T17:54:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3fcdf0e79e7b1844ae0d8076af384f2bc76e2421",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T15:20:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9279b792578e06c0a97eb873b45b8fc6d0ce8a81",
          "body": "Updates the requirements on [psych](https://github.com/ruby/psych) to permit the latest version.\n- [Release notes](https://github.com/ruby/psych/releases)\n- [Commits](https://github.com/ruby/psych/compare/v5.2.2...v5.4.0)\n\n---\nupdated-dependencies:\n- dependency-name: psych\n  dependency-version: 5.4.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Update psych requirement from = 5.2.2 to = 5.4.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T15:05:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c9294d13b2ffc90ba83adf3db4342dfdf975331f",
          "body": "Update spec coverage report for accuracy",
          "is_bot": false,
          "headline": "Merge pull request #1023 from pgharts/specs/coverage",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T15:03:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ab7457226aea9bf97104789e31d4c4265321928",
          "body": null,
          "is_bot": false,
          "headline": "add coverage.json file",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T14:54:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "caad9bdc70eae2c9dd0205ce2f0da295d95fa52a",
          "body": null,
          "is_bot": false,
          "headline": "fix file",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T14:39:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "628fd6c4831ba989682fbe2ed4f978b37f68a7a0",
          "body": null,
          "is_bot": false,
          "headline": "update qlty coverage",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T14:37:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ceb9ec0bc501cb58812f4c91ba5362444af0fd4",
          "body": null,
          "is_bot": false,
          "headline": "Alphabetize gemfile",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T13:06:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af4bf0f986c2545cdae9e3e17cdcc6702100635b",
          "body": null,
          "is_bot": false,
          "headline": "Add rspec html",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-10T16:25:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fb8d8f256aa748839d4f516e16375e8157c4851f",
          "body": null,
          "is_bot": false,
          "headline": "Fix circle coverage report",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-10T16:17:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9450be529bcae27fc3fe1293fc47aa25b35468f2",
          "body": null,
          "is_bot": false,
          "headline": "ignore generators, setup, etc",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-10T15:03:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07849ba1851e7be1e2ca6053b0644e6cfa0e2923",
          "body": null,
          "is_bot": false,
          "headline": "Update spec coverage report for accuracy",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-10T14:33:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d8adfcd4dfc446fef0590d19010de3299f4ed3c",
          "body": "Bumps [acts_as_list](https://github.com/brendon/acts_as_list) from 1.2.4 to 1.2.6.\n- [Changelog](https://github.com/brendon/acts_as_list/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/brendon/acts_as_list/compare/v1.2.4...v1.2.6)\n\n---\nupdated-dependencies:\n- dependency-name: acts_as_list\n  dependency-version: 1.2.6\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": "Bump acts_as_list from 1.2.4 to 1.2.6",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-01T10:03:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0058e422320b7d1a65c79eac03c9b52cf7963e1a",
          "body": "Updates the requirements on [rdoc](https://github.com/ruby/rdoc) to permit the latest version.\n- [Release notes](https://github.com/ruby/rdoc/releases)\n- [Changelog](https://github.com/ruby/rdoc/blob/master/History.rdoc)\n- [Commits](https://github.com/ruby/rdoc/compare/v6.17.0...v8.0.0)\n\n---\nupdated\n[…]\npendencies:\n- dependency-name: rdoc\n  dependency-version: 8.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Update rdoc requirement from >= 5.1, < 7.0 to >= 5.1, < 9.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-01T10:02:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4916f433d8893cf65186fb2b3093d6aafc8098fb",
          "body": "Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix gem-push workflow to build gem before capturing filename",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:29:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "644745384a908e4c129d6fdbc639d7b6453d126b",
          "body": null,
          "is_bot": false,
          "headline": "shake gh actions tree",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:26:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f2ea5bf1bfeb138d5b5de52ac5ca4eee4bf46e5",
          "body": "update gem-push workflow actions to Node.js 24 compatible versions",
          "is_bot": false,
          "headline": "Merge pull request #1014 from pgharts/release/7.1.2",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:24:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55981925298b7b55fd3c99a7dba87c0037a952c3",
          "body": "Bumps [esbuild](https://github.com/evanw/esbuild) from 0.25.11 to 0.28.1.\n- [Release notes](https://github.com/evanw/esbuild/releases)\n- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2025.md)\n- [Commits](https://github.com/evanw/esbuild/compare/v0.25.11...v0.28.1)\n\n---\nupdated-dependencies:\n- dependency-name: esbuild\n  dependency-version: 0.28.1\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump esbuild from 0.25.11 to 0.28.1",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-22T14:21:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4347c6f6221c3f0bc98f1aaf4628568a1375ccc",
          "body": "Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "update gem-push workflow actions to Node.js 24 compatible versions",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:21:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "808d4950a80e1bdaa06a9fdc959a2863ee53bc1c",
          "body": "Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.28.4 to 7.29.7.\n- [Release notes](https://github.com/babel/babel/releases)\n- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/babel/babel/commits/v7.29.7/packages/babel-core)\n\n---\nupdated-dependencies:\n- dependency-name: \"@babel/core\"\n  dependency-version: 7.29.7\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump @babel/core from 7.28.4 to 7.29.7",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-22T14:20:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "66aad0e3a332a7b2dbd67488294627cf914198e4",
          "body": "Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.19.3 to 1.19.4.\n- [Release notes](https://github.com/sparklemotion/nokogiri/releases)\n- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.19.3...v1.19.4)\n\n---\nupdated-dependencies:\n- dependency-name: nokogiri\n  dependency-version: 1.19.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump nokogiri from 1.19.3 to 1.19.4",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-22T14:20:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9d826e3f94887d1a9c048f5b82c6f97dd2ad3d2",
          "body": "Bumps [concurrent-ruby](https://github.com/ruby-concurrency/concurrent-ruby) from 1.3.6 to 1.3.7.\n- [Release notes](https://github.com/ruby-concurrency/concurrent-ruby/releases)\n- [Changelog](https://github.com/ruby-concurrency/concurrent-ruby/blob/master/CHANGELOG.md)\n- [Commits](https://github.com\n[…]\n/compare/v1.3.6...v1.3.7)\n\n---\nupdated-dependencies:\n- dependency-name: concurrent-ruby\n  dependency-version: 1.3.7\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump concurrent-ruby from 1.3.6 to 1.3.7",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-22T14:20:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "301f5d00e4631bcd4b3fa7283d439f4c29148aeb",
          "body": "TrustyCMS v7.1.2 Release",
          "is_bot": false,
          "headline": "Merge pull request #1010 from pgharts/release/7.1.2",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:19:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e604633a79652148ccbffa3e50f72edcfd3f640c",
          "body": null,
          "is_bot": false,
          "headline": "update workflow settings for github",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:15:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "196675e5c9a14b8f7004f0410f2ac3f3e87386fa",
          "body": null,
          "is_bot": false,
          "headline": "update trusty version",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:09:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da24a6f09873a3d046c2da548f225b8ae26fd431",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'master' into release/7.1.2",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:06:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "58b9f83a9a13e30f4b21f3ca443254b3ad06daff",
          "body": "Add asset insert fix, fix asset:link, fix pdf icon bug",
          "is_bot": false,
          "headline": "Merge pull request #1007 from pgharts/bugfix/asset-insertion",
          "author_name": "Greg Suehr",
          "author_login": "greg-suehr",
          "committed_at": "2026-06-15T18:05:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f972726f15c00ac4de393fd70dcef0d810c3a8c7",
          "body": "Bump net-imap from 0.5.9 to 0.5.15",
          "is_bot": false,
          "headline": "Merge pull request #1008 from pgharts/dependabot/bundler/net-imap-0.5.15",
          "author_name": "Greg Suehr",
          "author_login": "greg-suehr",
          "committed_at": "2026-06-12T18:00:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90ea619f73b137e6872d30ae14093f25175555fd",
          "body": "…i-3.1.2\n\nBump fast-uri from 3.1.0 to 3.1.2",
          "is_bot": false,
          "headline": "Merge pull request #1006 from pgharts/dependabot/npm_and_yarn/fast-ur…",
          "author_name": "Greg Suehr",
          "author_login": "greg-suehr",
          "committed_at": "2026-06-12T17:59:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77956dc3ec8d8241d05e3bea4261317f6e73362f",
          "body": "…22.0\n\nBump css_parser from 1.19.1 to 1.22.0",
          "is_bot": false,
          "headline": "Merge pull request #996 from pgharts/dependabot/bundler/css_parser-1.…",
          "author_name": "Greg Suehr",
          "author_login": "greg-suehr",
          "committed_at": "2026-06-12T17:59:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e4c42522a82bbfde0b969aa7936b9a4250a2585",
          "body": "Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.0 to 3.1.2.\n- [Release notes](https://github.com/fastify/fast-uri/releases)\n- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.2)\n\n---\nupdated-dependencies:\n- dependency-name: fast-uri\n  dependency-version: 3.1.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump fast-uri from 3.1.0 to 3.1.2",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-10T13:45:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1b1b68259eed42600fa0ca6b776993e7add01b4",
          "body": "Bumps [net-imap](https://github.com/ruby/net-imap) from 0.5.9 to 0.5.15.\n- [Release notes](https://github.com/ruby/net-imap/releases)\n- [Commits](https://github.com/ruby/net-imap/compare/v0.5.9...v0.5.15)\n\n---\nupdated-dependencies:\n- dependency-name: net-imap\n  dependency-version: 0.5.15\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump net-imap from 0.5.9 to 0.5.15",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-10T13:45:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fca75df57481c138b693b2a8fab9b1593d98b1c2",
          "body": "Bumps [css_parser](https://github.com/premailer/css_parser) from 1.19.1 to 1.22.0.\n- [Changelog](https://github.com/premailer/css_parser/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/premailer/css_parser/compare/v1.19.1...v1.22.0)\n\n---\nupdated-dependencies:\n- dependency-name: css_parser\n  dependency-version: 1.22.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump css_parser from 1.19.1 to 1.22.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-10T13:39:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9ba4404478560c2b5c49dd3954b0759edd108ce",
          "body": null,
          "is_bot": false,
          "headline": "Update to ckeditor 48.1.0",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-03T18:42:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "570f3f7c7530f9c6ad1d4147e959e357bbd20838",
          "body": null,
          "is_bot": false,
          "headline": "Update asset tag plugin to handle r:assets",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-03T18:30:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 25,
      "commits_last_year": 227,
      "latest_release_at": "2026-07-27T17:56:16Z",
      "latest_release_tag": "v7.1.3",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 33,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 62.8
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "trusty-cms",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "rubygems",
          "matches_repo": true,
          "registry_url": "https://rubygems.org/gems/trusty-cms",
          "is_deprecated": false,
          "latest_version": "7.1.3",
          "repository_url": "https://github.com/pgharts/trusty-cms",
          "versions_count": 248,
          "total_downloads": 446672,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2014-05-31T23:15:15.977000Z",
          "latest_published_at": "2026-07-27T18:18:47.452000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 36,
      "stars": 23,
      "watchers": 7,
      "fork_history": {
        "days": [
          {
            "date": "2014-05-23",
            "count": 1
          },
          {
            "date": "2014-06-01",
            "count": 1
          },
          {
            "date": "2014-06-05",
            "count": 4
          },
          {
            "date": "2014-06-06",
            "count": 3
          },
          {
            "date": "2015-06-24",
            "count": 1
          },
          {
            "date": "2015-07-28",
            "count": 1
          },
          {
            "date": "2015-08-02",
            "count": 1
          },
          {
            "date": "2016-04-11",
            "count": 1
          },
          {
            "date": "2017-12-28",
            "count": 1
          },
          {
            "date": "2018-04-24",
            "count": 1
          },
          {
            "date": "2018-05-04",
            "count": 1
          },
          {
            "date": "2018-07-08",
            "count": 1
          },
          {
            "date": "2018-09-01",
            "count": 1
          },
          {
            "date": "2018-09-16",
            "count": 1
          },
          {
            "date": "2018-09-26",
            "count": 1
          },
          {
            "date": "2018-10-15",
            "count": 1
          },
          {
            "date": "2018-11-13",
            "count": 1
          },
          {
            "date": "2018-11-15",
            "count": 1
          },
          {
            "date": "2018-11-28",
            "count": 1
          },
          {
            "date": "2019-04-18",
            "count": 1
          },
          {
            "date": "2019-06-16",
            "count": 1
          },
          {
            "date": "2019-08-02",
            "count": 1
          },
          {
            "date": "2019-08-07",
            "count": 1
          },
          {
            "date": "2019-11-10",
            "count": 1
          },
          {
            "date": "2019-12-02",
            "count": 1
          },
          {
            "date": "2021-01-06",
            "count": 1
          },
          {
            "date": "2021-01-08",
            "count": 1
          },
          {
            "date": "2021-05-13",
            "count": 1
          },
          {
            "date": "2021-08-06",
            "count": 1
          },
          {
            "date": "2023-09-09",
            "count": 1
          },
          {
            "date": "2026-02-05",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 36,
        "total_forks": 36
      },
      "star_history": null,
      "open_issues_and_prs": 41
    },
    "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": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 3815127,
      "source_files_sampled": 323,
      "oversized_source_files": 1,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "Gemfile",
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "activestorage",
            "direct": false,
            "version": "7.2.2.1",
            "severity": "critical",
            "ecosystem": "rubygems",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-73f9-jhhh-hr5m",
              "GHSA-9xrj-h377-fr87",
              "GHSA-p9fm-f462-ggrg",
              "GHSA-qcfx-2mfw-w4cg",
              "GHSA-r46p-8f7g-vvvg",
              "GHSA-r4mg-4433-c7g3"
            ],
            "fixed_version": "8.1.2.1",
            "advisory_count": 6,
            "oldest_advisory_days": 347
          },
          {
            "name": "activesupport",
            "direct": false,
            "version": "7.2.2.1",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2j26-frm8-cmj9",
              "GHSA-89vf-4333-qx8v",
              "GHSA-cg4j-q9v8-6v38"
            ],
            "fixed_version": "8.1.2.1",
            "advisory_count": 3,
            "oldest_advisory_days": 125
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.12",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-mh99-v99m-4gvg"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 3,
            "oldest_advisory_days": 122
          },
          {
            "name": "httparty",
            "direct": false,
            "version": "0.22.0",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 8.2,
            "advisory_ids": [
              "GHSA-hm5p-x4rq-38w4"
            ],
            "fixed_version": "0.24.0",
            "advisory_count": 1,
            "oldest_advisory_days": 215
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-23c5-xmqv-rm74",
              "GHSA-3ppc-4f35-3m26",
              "GHSA-7r86-cg39-jmmj"
            ],
            "fixed_version": "10.2.3",
            "advisory_count": 3,
            "oldest_advisory_days": 158
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "7.0.39",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-6g55-p6wh-862q",
              "GHSA-7fh5-64p2-3v2j",
              "GHSA-qx2v-qp2m-jg93",
              "GHSA-r28c-9q8g-f849"
            ],
            "fixed_version": "8.5.18",
            "advisory_count": 4,
            "oldest_advisory_days": 1031
          },
          {
            "name": "activerecord",
            "direct": false,
            "version": "7.2.2.1",
            "severity": "moderate",
            "ecosystem": "rubygems",
            "cvss_score": null,
            "advisory_ids": [
              "GHSA-76r7-hhxj-r776"
            ],
            "fixed_version": "8.0.2.1",
            "advisory_count": 1,
            "oldest_advisory_days": 347
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.17.1",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-2g4f-4pwh-qvx6"
            ],
            "fixed_version": "8.18.0",
            "advisory_count": 1,
            "oldest_advisory_days": 165
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "1.10.2",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 4.3,
            "advisory_ids": [
              "GHSA-48c2-rrv3-qjmp"
            ],
            "fixed_version": "2.8.3",
            "advisory_count": 1,
            "oldest_advisory_days": 123
          },
          {
            "name": "actionview",
            "direct": false,
            "version": "7.2.2.1",
            "severity": "low",
            "ecosystem": "rubygems",
            "cvss_score": null,
            "advisory_ids": [
              "GHSA-v55j-83pf-r9cq"
            ],
            "fixed_version": "8.1.2.1",
            "advisory_count": 1,
            "oldest_advisory_days": 125
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 1,
          "high": 5,
          "critical": 1,
          "moderate": 3
        },
        "advisory_count": 24,
        "affected_count": 10,
        "assessed_count": 641,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 37,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm",
        "rubygems"
      ],
      "dependencies": [
        {
          "name": "trustygems",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "~> 0.2.0"
        },
        {
          "name": "@fortawesome/fontawesome-free",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.15.4"
        },
        {
          "name": "blueimp-file-upload",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.32.0"
        },
        {
          "name": "ckeditor5",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "48.1.0"
        },
        {
          "name": "jquery",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.6.1"
        },
        {
          "name": "jquery-treetable",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.2.0-1"
        },
        {
          "name": "jquery-ui",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.13.2"
        },
        {
          "name": "jquery-ujs",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.2"
        },
        {
          "name": "jquery-validation",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.20.0"
        },
        {
          "name": "js-cookie",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.7"
        },
        {
          "name": "tablesaw",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.2"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@fortawesome/fontawesome-free",
            "direct": true,
            "version": "5.15.4",
            "ecosystem": "npm"
          },
          {
            "name": "blueimp-file-upload",
            "direct": true,
            "version": "10.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "ckeditor5",
            "direct": true,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": true,
            "version": "3.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": true,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": true,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": true,
            "version": "3.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-treetable",
            "direct": true,
            "version": "3.2.0-1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-ui",
            "direct": true,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-ui",
            "direct": true,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-ujs",
            "direct": true,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-validation",
            "direct": true,
            "version": "1.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-cookie",
            "direct": true,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "tablesaw",
            "direct": true,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "trustygems",
            "direct": true,
            "version": "0.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-adapter-ckfinder",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-alignment",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-autoformat",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-autosave",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-basic-styles",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-block-quote",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-bookmark",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-ckbox",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-ckfinder",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-clipboard",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-cloud-services",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-code-block",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-core",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-easy-image",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-editor-balloon",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-editor-classic",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-editor-decoupled",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-editor-inline",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-editor-multi-root",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-emoji",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-engine",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-enter",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-essentials",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-find-and-replace",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-font",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-fullscreen",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-heading",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-highlight",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-horizontal-line",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-html-embed",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-html-support",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-icons",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-image",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-indent",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-language",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-link",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-list",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-markdown-gfm",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-media-embed",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-mention",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-minimap",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-page-break",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-paragraph",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-paste-from-office",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-remove-format",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-restricted-editing",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-select-all",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-show-blocks",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-source-editing",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-special-characters",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-style",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-table",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-typing",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-ui",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-undo",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-upload",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-utils",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-watchdog",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-widget",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-word-count",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "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": "@stylelint/postcss-css-in-js",
            "direct": false,
            "version": "0.37.3",
            "ecosystem": "npm"
          },
          {
            "name": "@stylelint/postcss-markdown",
            "direct": false,
            "version": "0.36.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/color-convert",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/color-name",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/debug",
            "direct": false,
            "version": "4.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hast",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "3.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/minimist",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ms",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/normalize-package-data",
            "direct": false,
            "version": "2.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/parse-json",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.17.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "arrify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "astral-regex",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "autoprefixer",
            "direct": false,
            "version": "9.8.8",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.8.6",
            "ecosystem": "npm"
          },
          {
            "name": "blueimp-canvas-to-blob",
            "direct": false,
            "version": "3.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "blueimp-load-image",
            "direct": false,
            "version": "5.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "blueimp-tmpl",
            "direct": false,
            "version": "3.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "blurhash",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase-keys",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001745",
            "ecosystem": "npm"
          },
          {
            "name": "ccount",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-html4",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-reference-invalid",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "clone-regexp",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "color-parse",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "comma-separated-tokens",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cssesc",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize-keys",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "decode-named-character-reference",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.223",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "es-toolkit",
            "direct": false,
            "version": "1.45.1",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "execall",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "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": "fastest-levenshtein",
            "direct": false,
            "version": "1.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "fuzzysort",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-stdin",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "global-modules",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "global-prefix",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "globjoin",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "gonzales-pe",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "hard-rejection",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-embedded",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-dom",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-has-property",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-is-body-ok-link",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-is-element",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-minify-whitespace",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-parse-selector",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-phrasing",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-dom",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-html",
            "direct": false,
            "version": "9.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-mdast",
            "direct": false,
            "version": "10.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-text",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-whitespace",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hastscript",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "2.8.9",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-tags",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "html-void-elements",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "3.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-lazy",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "indent-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphabetical",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphanumerical",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-buffer",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-decimal",
            "direct": false,
            "version": "1.0.4",
            "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": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-regexp",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-typedarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "javascript-natural-sort",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "known-css-properties",
            "direct": false,
            "version": "0.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.truncate",
            "direct": false,
            "version": "4.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "longest-streak",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "longest-streak",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "map-obj",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "map-obj",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-table",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "mathml-tag-names",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-find-and-replace",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-from-markdown",
            "direct": false,
            "version": "0.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-from-markdown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-autolink-literal",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-footnote",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-strikethrough",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-table",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-task-list-item",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-newline-to-break",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-phrasing",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-hast",
            "direct": false,
            "version": "13.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-markdown",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-markdown",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-string",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "meow",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark",
            "direct": false,
            "version": "2.11.4",
            "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-gfm",
            "direct": false,
            "version": "3.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-strikethrough",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-table",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-tagfilter",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-task-list-item",
            "direct": false,
            "version": "2.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-decode-string",
            "direct": false,
            "version": "2.0.1",
            "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": "min-indent",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minimist-options",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.21",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-package-data",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-package-data",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-range",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-selector",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "num2fraction",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-entities",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "7.0.39",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-html",
            "direct": false,
            "version": "0.36.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-less",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-media-query-parser",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-resolve-nested-selector",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-safe-parser",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-sass",
            "direct": false,
            "version": "0.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-scss",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-sorting",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-syntax",
            "direct": false,
            "version": "0.36.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-value-parser",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "property-information",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "quick-lru",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg-up",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "redent",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-dom-parse",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-dom-stringify",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-minify-whitespace",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-remark",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark",
            "direct": false,
            "version": "13.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-breaks",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-gfm",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark-parse",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-parse",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-rehype",
            "direct": false,
            "version": "11.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "remark-stringify",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-stringify",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "repeat-string",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.10",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "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": "semver",
            "direct": false,
            "version": "5.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "shoestring",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "slice-ansi",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "space-separated-tokens",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-correct",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-exceptions",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-expression-parse",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-license-ids",
            "direct": false,
            "version": "3.0.22",
            "ecosystem": "npm"
          },
          {
            "name": "specificity",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "stringify-entities",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-indent",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "style-search",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint",
            "direct": false,
            "version": "13.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-recommended",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-order",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-scss",
            "direct": false,
            "version": "3.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "sugarss",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "svg-tags",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "table",
            "direct": false,
            "version": "6.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trim-lines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trim-newlines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trim-trailing-lines",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "typedarray-to-buffer",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "11.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "9.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-find-after",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-find-all-after",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-position",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-parents",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "v8-compile-cache",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "validate-npm-package-license",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "vanilla-colorful",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "web-namespaces",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "1.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "20.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "actioncable",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionmailbox",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionmailer",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionpack",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "actiontext",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionview",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "activejob",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "activemodel",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "activerecord",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "activestorage",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "activestorage-validator",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "activestorage-validator",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "activesupport",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "acts_as_list",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "acts_as_list",
            "direct": false,
            "version": "1.2.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "acts_as_tree",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "acts_as_tree",
            "direct": false,
            "version": "2.9.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "addressable",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "base64",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "base64",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "bcrypt",
            "direct": false,
            "version": "3.1.22",
            "ecosystem": "rubygems"
          },
          {
            "name": "benchmark",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "bigdecimal",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "bigdecimal",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "builder",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "byebug",
            "direct": false,
            "version": "13.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "capybara",
            "direct": false,
            "version": "3.40.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "childprocess",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "chunky_png",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "cliver",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "coderay",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "concurrent-ruby",
            "direct": false,
            "version": "1.3.7",
            "ecosystem": "rubygems"
          },
          {
            "name": "connection_pool",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "crass",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "rubygems"
          },
          {
            "name": "css_parser",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "csso-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "csso-rails",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "csv",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "database_cleaner",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "database_cleaner-active_record",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "database_cleaner-core",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "date",
            "direct": false,
            "version": "3.5.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "delocalize",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "delocalize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "devise",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "devise",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "devise-two-factor",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "devise-two-factor",
            "direct": false,
            "version": "6.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "diff-lcs",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "diffy",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "diffy",
            "direct": false,
            "version": "3.4.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "docile",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "drb",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "drb",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "erb",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "erubi",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "execjs",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "execjs",
            "direct": false,
            "version": "2.10.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "factory_bot",
            "direct": false,
            "version": "6.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "factory_bot_rails",
            "direct": false,
            "version": "6.5.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "ffi",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "file_validators",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "globalid",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "haml",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "haml",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "haml-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "haml-rails",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "highline",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "highline",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "httparty",
            "direct": false,
            "version": "0.22.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "i18n",
            "direct": false,
            "version": "1.15.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "image_processing",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "image_processing",
            "direct": false,
            "version": "1.13.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "io-console",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "irb",
            "direct": false,
            "version": "1.18.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "jsbundling-rails",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "json",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "kraken-io",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "kraken-io",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "launchy",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "libv8-node",
            "direct": false,
            "version": "18.19.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "logger",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "loofah",
            "direct": false,
            "version": "2.25.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "mail",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "marcel",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "matrix",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "method_source",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "mime-types-data",
            "direct": false,
            "version": "3.2024.1105",
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_magick",
            "direct": false,
            "version": "4.13.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_mime",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_portile2",
            "direct": false,
            "version": "2.8.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_racer",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_racer",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "minitest",
            "direct": false,
            "version": "6.0.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "multi_xml",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "multipart-post",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "mutex_m",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "mutex_m",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "mysql2",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "mysql2",
            "direct": false,
            "version": "0.5.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-imap",
            "direct": false,
            "version": "0.5.15",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-pop",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-protocol",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-smtp",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "nio4r",
            "direct": false,
            "version": "2.7.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "nokogiri",
            "direct": false,
            "version": "1.19.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "orm_adapter",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "paper_trail",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "paper_trail",
            "direct": false,
            "version": "16.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "paper_trail-association_tracking",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "paper_trail-association_tracking",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "poltergeist",
            "direct": false,
            "version": "1.18.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "pp",
            "direct": false,
            "version": "0.6.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "prettyprint",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "prism",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "pry",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "pry-byebug",
            "direct": false,
            "version": "3.12.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "psych",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "public_suffix",
            "direct": false,
            "version": "7.0.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "racc",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rack",
            "direct": false,
            "version": "3.1.21",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-cache",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-cache",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-session",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-test",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rackup",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "radius",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "radius",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rails",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-dom-testing",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-html-sanitizer",
            "direct": false,
            "version": "1.7.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-observers",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "railties",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rake",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rake",
            "direct": false,
            "version": "13.4.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "ransack",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "ransack",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rbs",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "rdoc",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rdoc",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "RedCloth",
            "direct": false,
            "version": "4.3.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "regexp_parser",
            "direct": false,
            "version": "2.9.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "reline",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "request_store",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "responders",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "roadie",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "roadie-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "roadie-rails",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rotp",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rqrcode",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rqrcode",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rqrcode_core",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-core",
            "direct": false,
            "version": "3.13.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-expectations",
            "direct": false,
            "version": "3.13.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-mocks",
            "direct": false,
            "version": "3.13.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-rails",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-support",
            "direct": false,
            "version": "3.13.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec_junit_formatter",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "ruby-vips",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "sass-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "sass-rails",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "sassc",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "sassc-rails",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "securerandom",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov",
            "direct": false,
            "version": "0.22.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov-html",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov-lcov",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov_json_formatter",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "sprockets",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "sprockets-rails",
            "direct": false,
            "version": "3.5.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "ssrf_filter",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "stringex",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "stringex",
            "direct": false,
            "version": "2.8.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "stringio",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "temple",
            "direct": false,
            "version": "0.10.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "thor",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "tilt",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "timeout",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "tsort",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "tzinfo",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "tzinfo",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "uglifier",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "uglifier",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "uri",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "uri",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "useragent",
            "direct": false,
            "version": "0.16.11",
            "ecosystem": "rubygems"
          },
          {
            "name": "warden",
            "direct": false,
            "version": "1.2.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "websocket-driver",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "websocket-extensions",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "will_paginate",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "will_paginate",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "xpath",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "zeitwerk",
            "direct": false,
            "version": "2.8.2",
            "ecosystem": "rubygems"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 678,
        "direct_count": 15,
        "indirect_count": 663
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 2,
        "merged_prs": 640,
        "open_issues": 39,
        "closed_ratio": 0.831,
        "closed_issues": 192,
        "closed_unmerged_prs": 176
      },
      "bus_factor": 4,
      "bot_contributors": 3,
      "top_contributors": [
        {
          "type": "User",
          "login": "saturnflyer",
          "commits": 697,
          "avatar_url": "https://avatars.githubusercontent.com/u/4271?v=4"
        },
        {
          "type": "User",
          "login": "danigirl329",
          "commits": 558,
          "avatar_url": "https://avatars.githubusercontent.com/u/10598969?v=4"
        },
        {
          "type": "User",
          "login": "sipple",
          "commits": 314,
          "avatar_url": "https://avatars.githubusercontent.com/u/70801?v=4"
        },
        {
          "type": "User",
          "login": "seancribbs",
          "commits": 279,
          "avatar_url": "https://avatars.githubusercontent.com/u/1772?v=4"
        },
        {
          "type": "User",
          "login": "jaredblumer",
          "commits": 235,
          "avatar_url": "https://avatars.githubusercontent.com/u/15972944?v=4"
        },
        {
          "type": "User",
          "login": "brittanyjspringer",
          "commits": 193,
          "avatar_url": "https://avatars.githubusercontent.com/u/2446523?v=4"
        },
        {
          "type": "User",
          "login": "will-r",
          "commits": 182,
          "avatar_url": "https://avatars.githubusercontent.com/u/872859?v=4"
        },
        {
          "type": "User",
          "login": "carols10cents",
          "commits": 144,
          "avatar_url": "https://avatars.githubusercontent.com/u/193874?v=4"
        },
        {
          "type": "User",
          "login": "Crankums",
          "commits": 137,
          "avatar_url": "https://avatars.githubusercontent.com/u/44502373?v=4"
        },
        {
          "type": "User",
          "login": "jlong",
          "commits": 108,
          "avatar_url": "https://avatars.githubusercontent.com/u/4173?v=4"
        }
      ],
      "contributors_sampled": 77,
      "top_contributor_share": 0.197
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "brakeman-analysis.yml",
        "gem-push.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        ".eslintrc.js",
        ".rubocop.yml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Gemfile.lock",
        "yarn.lock"
      ],
      "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": 1,
            "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": "11 out of 11 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/6 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 31 contributing companies or organizations",
            "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": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 9 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": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 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": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 8,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "24 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "f5652ff4f32dd7775238957fea9a4fc12d6e63c9",
        "ran_at": "2026-07-27T18:22:21Z",
        "aggregate_score": 5.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-27T18:19:31Z",
      "oldest_open_prs": [
        {
          "number": 1041,
          "created_at": "2026-07-24T16:28:00Z",
          "last_comment_at": "2026-07-27T15:08:49Z",
          "last_comment_author": "danigirl329"
        },
        {
          "number": 1049,
          "created_at": "2026-07-27T17:11:11Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-27T18:18:30Z",
      "ci_last_conclusion": "FAILURE",
      "oldest_open_issues": [
        {
          "number": 735,
          "created_at": "2023-11-07T14:14:10Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 791,
          "created_at": "2024-05-01T14:45:54Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 856,
          "created_at": "2024-12-13T19:36:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 857,
          "created_at": "2024-12-13T19:47:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 859,
          "created_at": "2024-12-13T19:54:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 873,
          "created_at": "2025-01-09T21:06:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 876,
          "created_at": "2025-01-17T18:23:39Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 878,
          "created_at": "2025-01-20T13:43:06Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 879,
          "created_at": "2025-01-20T14:36:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 880,
          "created_at": "2025-01-20T14:37:39Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 881,
          "created_at": "2025-01-20T14:40:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 882,
          "created_at": "2025-01-20T14:43:24Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 883,
          "created_at": "2025-01-20T14:44:35Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 884,
          "created_at": "2025-01-20T14:47:16Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 885,
          "created_at": "2025-01-20T14:47:54Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 886,
          "created_at": "2025-01-20T14:49:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 887,
          "created_at": "2025-01-20T14:54:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 888,
          "created_at": "2025-01-20T14:55:29Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 889,
          "created_at": "2025-01-20T15:00:46Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 890,
          "created_at": "2025-01-20T15:01:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/pgharts/trusty-cms",
    "host": "github.com",
    "name": "trusty-cms",
    "owner": "pgharts"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 74,
      "inputs": {
        "security": 66,
        "vitality": 89,
        "community": 57,
        "governance": 77,
        "engineering": 74
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 89,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 87,
            "inputs": {
              "commits_last_year": 227,
              "human_commit_share": 0.79,
              "days_since_last_push": 0,
              "active_weeks_last_year": 33
            },
            "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": "33/52 weeks with commits",
                "points": 22.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 33
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "227 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 227
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 9 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": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 92,
            "inputs": {
              "releases_count": 25,
              "latest_release_tag": "v7.1.3",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 62.8
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "25 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 25
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~62.8 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 62.8
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 57,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 39,
            "inputs": {
              "forks": 36,
              "stars": 23,
              "watchers": 7,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "23 stars",
                "points": 21.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 23
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "36 forks",
                "points": 12.9,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 36
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "7 watchers",
                "points": 4.3,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "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": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "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": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "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": 73,
            "inputs": {
              "packages": [
                "trusty-cms"
              ],
              "dependents": null,
              "ecosystems": "rubygems",
              "total_downloads": 446672,
              "monthly_downloads": null
            },
            "components": [
              {
                "key": "total_downloads",
                "name": "Total downloads",
                "detail": "446,672 downloads all-time across rubygems",
                "points": 58.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_total",
                    "params": {
                      "count": 446672,
                      "ecosystems": "rubygems"
                    }
                  }
                ],
                "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": "good",
        "name": "Sustainability & Governance",
        "value": 77,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "excellent",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "bus_factor": 4,
              "contributors_sampled": 77,
              "top_contributor_share": 0.197
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "4 contributor(s) cover half of all commits",
                "points": 43.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 20% of commits",
                "points": 18.1,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 20
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "77 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 77
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 31 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "merged_prs": 640,
              "open_issues": 39,
              "closed_issues": 192,
              "issue_closed_ratio": 0.831,
              "closed_unmerged_prs": 176
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "83% of issues closed",
                "points": 38.8,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 83
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "640/816 decided PRs merged",
                "points": 30,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 640,
                      "decided": 816
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/6 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 58,
            "inputs": {
              "followers": 8,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "pgharts",
              "public_repos": 17,
              "account_age_days": 6046
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "8 followers of pgharts",
                "points": 6.9,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 8,
                      "login": "pgharts"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "17 public repos, account ~16 yr old",
                "points": 21.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 17
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 16
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "trusty-cms"
              ],
              "ecosystems": "rubygems",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on rubygems",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "rubygems"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "248 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 248
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 74,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": 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": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": ".eslintrc.js, .rubocop.yml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js, .rubocop.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": "11 out of 11 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "topics": [
                "cms",
                "cms-framework",
                "rails",
                "ruby",
                "hacktoberfest"
              ],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "5 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "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": "moderate",
        "name": "Security",
        "value": 66,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 58,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 5.8
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "11 out of 11 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/6 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 31 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "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 not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 9 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 0",
                "points": 0,
                "status": "missed",
                "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 not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "24 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 641 resolved dependencies against OSV; 37 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": 641
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 37
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 24,
              "affected_packages": 10,
              "assessed_packages": 641,
              "unassessed_packages": 37,
              "affected_by_severity": "critical 1, high 5, moderate 3, low 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": 641,
              "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": 20
            },
            "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": "moderate",
        "name": "AI Readiness",
        "value": 50,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 34,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.646,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "51 of 79 human commits state their intent (structured subject or explanatory body)",
                "points": 34.4,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 51,
                      "sampled": 79
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 61,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Gemfile.lock",
                "yarn.lock"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.18,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.21
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".eslintrc.js, .rubocop.yml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js, .rubocop.yml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "18 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 18,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "21 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 21,
                      "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 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 3815127,
              "source_files_sampled": 323,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/323 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 323,
                      "oversized": 1
                    }
                  }
                ],
                "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",
    "Could not fetch npm package 'trusty-cms' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T18:22:50.806504Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/p/pgharts/trusty-cms.svg",
  "full_name": "pgharts/trusty-cms",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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