公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-26 16:38 UTC

servo / stylo

CSS engine that powers Servo and Firefox

Rust未检测到许可证★ 304 星标⑂ 94 复刻始于 2024年2月在 GitHub 上查看 ↗

servo/stylo 的健康指数为 100 分中的 70 分,处于「良好」区间。 其得分最高的类别是Vitality(100/100),最低的是Engineering Quality(46/100)。 最近一次更新在今天。 近期的大部分工作由 8 位贡献者完成。

70
总分 / 100
良好

软件健康指数

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

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

评分画像

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

所有权

Servo组织
1,251 关注者193 个公开仓库始于 2012年10月

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

软件包生态系统

注册表软件包版本月下载量版本数最近发布标签
crates.iostylo0.19.046,3612223 天前
crates.ioto_shmem0.5.046,732623 天前
crates.ioselectors0.39.06,604,0216123 天前cssselectors
crates.ioservo_arc0.4.36,194,8027256 天前
crates.iostylo_dom0.19.046,4052023 天前cssstyle
crates.iostylo_atoms0.19.046,4272023 天前
crates.iostylo_derive0.19.045,8052023 天前
crates.iostylo_traits0.19.046,3992023 天前

按类别列示的指标

活力

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

100优秀 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 0 天前
36/36提交节奏 — 52 周中有 52 周有提交
18/18提交量 — 最近一年 1,063 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 17 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year1,063
human_commit_share1
days_since_last_push0
active_weeks_last_year52

发布纪律

100优秀
评分方式
27/27有发布版本 — 已发布 18 个发布版本
36/36发布时效 — 最近一次发布版本于 25 天前
27/27发布节奏 — 约每 19.5 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count18
latest_release_tagv0.19.0
releases_from_tags
days_since_latest_release25
mean_days_between_releases19.5
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

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

59中等 · 占总体的 18%
评分方式
40.3/60星标 — 304 个星标
16.4/25复刻 — 94 个复刻
5/15关注者 — 9 位关注者
所用输入
forks94
stars304
watchers9
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

25危急
评分方式
22.5/22.5README
0/22.5许可证 — 未检测到许可证文件
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template
评分方式
80/80月度下载量 — crates 合计每月 13,076,952 次下载
0/20注册表被依赖数 — 该生态系统不报告此项
所用输入
packagesstylo, to_shmem, selectors, servo_arc, stylo_dom, stylo_atoms, stylo_derive, stylo_traits
dependents
ecosystemscrates
total_downloads114,753,542
monthly_downloads13,076,952
已排除计分(无数据或不适用):注册表被依赖数。 其余权重已重新归一化。

可持续性与治理

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

85优秀 · 占总体的 24%
评分方式
54/54巴士系数 — 8 位贡献者贡献了半数提交
16.6/22.5提交分布 — 头号贡献者编写了 26% 的提交
13.5/13.5贡献者广度 — 100 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 46 contributing companies or organizations
所用输入
bus_factor8
contributors_sampled100
top_contributor_share0.264
评分方式
30.6/46.8议题解决 — 66% 的议题已关闭
32.2/38.3PR 接受 — 已裁定的 PR 中 276/328 已合并
9/15OpenSSF Scorecard:Code-Review — Found 18/30 approved changesets -- score normalized to 6
所用输入
merged_prs276
open_issues29
closed_issues55
issue_closed_ratio0.655
closed_unmerged_prs52
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
22.3/25所有者影响力 — servo 有 1,251 位关注者
25/25既往记录 — 193 个公开仓库,账户约 13 年
所用输入
followers1,251
owner_typeOrganization
is_verified
owner_loginservo
public_repos193
account_age_days5,031
评分方式
25/25已发布且可解析 — crates 上有 8 个软件包
35/35发布时效 — 最近一次发布于 23 天前
20/20版本历史 — 61 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesstylo, to_shmem, selectors, servo_arc, stylo_dom, stylo_atoms, stylo_derive, stylo_traits
ecosystemscrates
any_deprecated
min_days_since_publish23

工程质量

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

46存在风险 · 占总体的 20%

工程实践

44存在风险
评分方式
24/24CI 工作流 — 3 个工作流
0/24存在测试
0/16Linter 配置
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

文档

50中等
评分方式
30/30README
0/25文档目录
0/15文档 / 主页站点
10/10仓库描述
0/10主题标签
10/10Wiki
所用输入
topics
has_wiki
homepage
has_readme
has_docs_dir
has_description

安全

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

48存在风险 · 占总体的 16%

安全态势

48存在风险
评分方式
6/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — 无数据
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
4.5/7.5Code-Review — Found 18/30 approved changesets -- score normalized to 6
2.5/2.5Contributors — project has 46 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
0/2.5许可证 — license file not detected
7.5/7.5Maintained — 30 commit(s) and 17 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — 无数据
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate4.8
已排除计分(无数据或不适用):branch_protection, packaging, signed_releases。 其余权重已重新归一化。

AI 就绪度

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

47存在风险 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 87 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.87
agent_instruction_files
agent_instruction_max_bytes
评分方式
12.6/18一条命令的引导启动 — Cargo.toml, malloc_size_of/Cargo.toml, selectors/Cargo.toml(工具链约定,无任务运行器)
0/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — Rust(静态类型)
10/10可复现环境 — Nix
0/10已体现的代理实践 — 最近 100 次提交中没有代理编写的提交
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfiles
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0
toolchain_manifestsCargo.toml, malloc_size_of/Cargo.toml, selectors/Cargo.toml, servo_arc/Cargo.toml, style/Cargo.toml, style_derive/Cargo.toml, style_traits/Cargo.toml, stylo_atoms/Cargo.toml, stylo_dom/Cargo.toml, stylo_static_prefs/Cargo.toml, to_shmem/Cargo.toml, to_shmem_derive/Cargo.toml
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — Rust(静态类型)
52.1/55可控的文件大小 — 采样的 347 个源文件中有 18 个超过 60KB
所用输入
primary_languageRust
largest_source_bytes187,207
source_files_sampled347
oversized_source_files18

关键数据

304GitHub 星标
100贡献者
1,063最近 12 个月提交数
0距最近推送天数
18发布版本数
8巴士系数(bus factor)
29开放议题
crates.io软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • No resolved dependencies carried a version and a supported ecosystem

更多细节

Star 与 Fork 历史 0 ★ / 94 ⇿
0Star
94Fork
18发布

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

0204060801009232024-032025-052026-07
主版本 0次版本 18修订 0

每个点涵盖 3 天。

OpenSSF Scorecard 4.8 / 10
4.8综合

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

8Binary-Artifactsbinaries present in source code
不适用Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
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
6Code-ReviewFound 18/30 approved changesets -- score normalized to 6
10Contributorsproject has 46 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
0Licenselicense file not detected
10Maintained30 commit(s) and 17 issue activity found in the last 90 days -- score normalized to 10
不适用Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
直接依赖 105
注册表软件包版本约束清单文件
crates.ioapp_units0.7malloc_size_of/Cargo.toml
crates.iocssparser0.37malloc_size_of/Cargo.toml
crates.ioeuclid0.22malloc_size_of/Cargo.toml
crates.ioselectorsmalloc_size_of/Cargo.toml
crates.ioservo_arcmalloc_size_of/Cargo.toml
crates.iosmallbitvec2.3.0malloc_size_of/Cargo.toml
crates.iosmallvec1.13malloc_size_of/Cargo.toml
crates.iostring_cache0.9malloc_size_of/Cargo.toml
crates.iothin-vec0.2.13malloc_size_of/Cargo.toml
crates.iovoid1.0.2malloc_size_of/Cargo.toml
crates.iobitflags2selectors/Cargo.toml
crates.iocssparser0.37selectors/Cargo.toml
crates.ioderive_more2selectors/Cargo.toml
crates.iorustc-hash2.1.1selectors/Cargo.toml
crates.iolog0.4selectors/Cargo.toml
crates.iophf0.13selectors/Cargo.toml
crates.ioprecomputed-hash0.1selectors/Cargo.toml
crates.ioservo_arcselectors/Cargo.toml
crates.iosmallvec1.0selectors/Cargo.toml
crates.ioto_shmemselectors/Cargo.toml
crates.ioto_shmem_deriveselectors/Cargo.toml
crates.ionew_debug_unreachable1selectors/Cargo.toml
crates.ioserde1.0servo_arc/Cargo.toml
crates.iostable_deref_trait1.0.0servo_arc/Cargo.toml
crates.ioapp_units0.7.8style/Cargo.toml
crates.ioarrayvec0.7style/Cargo.toml
crates.ioatomic_refcell0.1style/Cargo.toml
crates.iobitflags2style/Cargo.toml
crates.iobyteorder1.0style/Cargo.toml
crates.iocssparser0.37style/Cargo.toml
crates.ioderive_more2style/Cargo.toml
crates.iodomstyle/Cargo.toml
crates.ionew_debug_unreachable1.0style/Cargo.toml
crates.ioencoding_rs0.8style/Cargo.toml
crates.ioeuclid0.22style/Cargo.toml
crates.iorustc-hash2.1.1style/Cargo.toml
crates.ioicu_segmenter>= 1.5, <= 2.*style/Cargo.toml
crates.ioindexmap2style/Cargo.toml
crates.ioitertools0.14style/Cargo.toml
crates.ioitoa1.0style/Cargo.toml
crates.iolog0.4style/Cargo.toml
crates.iomalloc_size_ofstyle/Cargo.toml
crates.iomalloc_size_of_derive0.1style/Cargo.toml
crates.ioweb_atoms0.2.0style/Cargo.toml
crates.iomime0.3.13style/Cargo.toml
crates.ionum_cpus1.1.0style/Cargo.toml
crates.ionum-integer0.1style/Cargo.toml
crates.ionum-traits0.2style/Cargo.toml
crates.ionum-derive0.4style/Cargo.toml
crates.ioparking_lot0.12style/Cargo.toml
crates.ioprecomputed-hash0.1.1style/Cargo.toml
crates.iorayon1style/Cargo.toml
crates.iorayon-core1style/Cargo.toml
crates.ioselectorsstyle/Cargo.toml
crates.ioserde1.0style/Cargo.toml
crates.ioservo_arcstyle/Cargo.toml
crates.iostylo_atomsstyle/Cargo.toml
crates.iosmallbitvec2.3.0style/Cargo.toml
crates.iosmallvec1.0style/Cargo.toml
crates.iostatic_assertions1.1style/Cargo.toml
crates.iostatic_prefsstyle/Cargo.toml
crates.iostring_cache0.9style/Cargo.toml
crates.iostrum0.28style/Cargo.toml
crates.iostrum_macros0.28style/Cargo.toml
crates.iostyle_derivestyle/Cargo.toml
crates.iostyle_traitsstyle/Cargo.toml
crates.ioto_shmemstyle/Cargo.toml
crates.ioto_shmem_derivestyle/Cargo.toml
crates.iothin-vec0.2.1style/Cargo.toml
crates.iouluru3.0style/Cargo.toml
crates.iovoid1.0.2style/Cargo.toml
crates.iourl2.5style/Cargo.toml
crates.iodarling0.20style_derive/Cargo.toml
crates.ioproc-macro21style_derive/Cargo.toml
crates.ioquote1style_derive/Cargo.toml
crates.iosyn2style_derive/Cargo.toml
crates.iosynstructure0.13style_derive/Cargo.toml
crates.ioapp_units0.7style_traits/Cargo.toml
crates.iobitflags2style_traits/Cargo.toml
crates.iocssparser0.37style_traits/Cargo.toml
crates.ioeuclid0.22style_traits/Cargo.toml
crates.iomalloc_size_ofstyle_traits/Cargo.toml
crates.iomalloc_size_of_derive0.1style_traits/Cargo.toml
crates.ioselectorsstyle_traits/Cargo.toml
crates.ioserde1.0style_traits/Cargo.toml
crates.ioservo_arcstyle_traits/Cargo.toml
crates.iostylo_atomsstyle_traits/Cargo.toml
crates.iothin-vec0.2style_traits/Cargo.toml
crates.ioto_shmemstyle_traits/Cargo.toml
crates.ioto_shmem_derivestyle_traits/Cargo.toml
crates.iourl2.5style_traits/Cargo.toml
crates.iostring_cache0.9stylo_atoms/Cargo.toml
crates.iobitflags2stylo_dom/Cargo.toml
crates.iomalloc_size_ofstylo_dom/Cargo.toml
crates.iocssparser0.37to_shmem/Cargo.toml
crates.ioservo_arcto_shmem/Cargo.toml
crates.iosmallbitvec2.3.0to_shmem/Cargo.toml
crates.iosmallvec1.13to_shmem/Cargo.toml
crates.iostring_cache0.9to_shmem/Cargo.toml
crates.iothin-vec0.2.1to_shmem/Cargo.toml
crates.iodarling0.20to_shmem_derive/Cargo.toml
crates.ioproc-macro21to_shmem_derive/Cargo.toml
crates.ioquote1to_shmem_derive/Cargo.toml
crates.iosyn2to_shmem_derive/Cargo.toml
crates.iosynstructure0.13to_shmem_derive/Cargo.toml
全部依赖 52

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

注册表软件包版本关系
crates.ioapp_units直接
crates.ioarrayvec直接
crates.ioatomic_refcell直接
crates.iobitflags直接
crates.iobyteorder直接
crates.iocssparser直接
crates.iodarling直接
crates.ioderive_more直接
crates.ioencoding_rs直接
crates.ioeuclid直接
crates.ioicu_segmenter直接
crates.ioindexmap直接
crates.ioitertools直接
crates.ioitoa直接
crates.iolog直接
crates.iomalloc_size_of_derive直接
crates.iomime直接
crates.ionew_debug_unreachable直接
crates.ionum-derive直接
crates.ionum-integer直接
crates.ionum-traits直接
crates.ionum_cpus直接
crates.ioparking_lot直接
crates.iophf直接
crates.ioprecomputed-hash直接
crates.ioproc-macro2直接
crates.ioquote直接
crates.iorayon直接
crates.iorayon-core直接
crates.iorustc-hash直接
crates.ioserde直接
crates.iosmallbitvec直接
crates.iosmallvec直接
crates.iostable_deref_trait直接
crates.iostatic_assertions直接
crates.iostring_cache直接
crates.iostrum直接
crates.iostrum_macros直接
crates.iosyn直接
crates.iosynstructure直接
crates.iothin-vec直接
crates.iouluru直接
crates.iourl直接
crates.iovoid直接
crates.ioweb_atoms直接
crates.iobindgen间接
crates.iomozbuild间接
crates.iophf_codegen间接
crates.ioregex间接
crates.iostring_cache_codegen间接
crates.iotoml间接
crates.iowalkdir间接
依赖安全公告 未评估

本报告未能完成公告比对:No resolved dependencies carried a version and a supported ecosystem

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 42994,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Nix": 201,
        "Mako": 1006,
        "Rust": 5316501,
        "Shell": 2707,
        "Python": 79464
      },
      "pushed_at": "2026-07-26T13:44:40Z",
      "created_at": "2024-02-07T05:11:50Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-23T20:50:11Z",
      "description": "CSS engine that powers Servo and Firefox",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": null,
      "primary_language": "Rust",
      "significant_languages": [
        "Rust"
      ]
    },
    "owner": {
      "blog": "https://servo.org",
      "name": "Servo",
      "type": "Organization",
      "login": "servo",
      "company": null,
      "location": null,
      "followers": 1251,
      "avatar_url": "https://avatars.githubusercontent.com/u/2566135?v=4",
      "created_at": "2012-10-15T17:38:39Z",
      "is_verified": null,
      "public_repos": 193,
      "account_age_days": 5031
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.19.0",
          "kind": "minor",
          "published_at": "2026-07-01T12:43:26Z"
        },
        {
          "tag": "v0.18.0",
          "kind": "minor",
          "published_at": "2026-06-03T09:31:31Z"
        },
        {
          "tag": "v0.17.0",
          "kind": "minor",
          "published_at": "2026-05-05T01:05:54Z"
        },
        {
          "tag": "v0.16.0",
          "kind": "minor",
          "published_at": "2026-04-03T06:22:33Z"
        },
        {
          "tag": "v0.15.0",
          "kind": "minor",
          "published_at": "2026-04-01T18:32:28Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-03-19T13:57:45Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-03-06T23:06:39Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-02-09T12:19:26Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-01-15T10:55:38Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-01-06T19:51:40Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2025-11-12T15:18:55Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2025-10-04T12:39:11Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2025-09-04T20:50:25Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2025-08-02T21:20:45Z"
        },
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2025-07-02T16:06:58Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2025-06-19T12:08:04Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2025-05-05T14:35:47Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2025-03-31T12:15:29Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "2d289c14fdf46952d52cabce63b1f0dc55b2ccde",
          "body": "… Blitz (#426)\n\nEnables `text-decoration-thickness`, `text-decoration-inset`,\n`text-underline-offset`, and `text-underline-position` for Servo builds\nof Stylo, behind the `layout.unimplemented` feature flag.\n\nThe shorthand `text-decoration` is updated to account for\n`text-decoration-thickness` being enabled (this aligns Servo's\nimplementation with Gecko's for this property).\n\nServo PR:\n\n- https://github.com/servo/servo/pull/46592\n\n---------\n\nSigned-off-by: Nico Burns <nico@nicoburns.com>",
          "is_bot": false,
          "headline": "Enable text-decoration-thickness; more text decoration properties for…",
          "author_name": "Nico Burns",
          "author_login": "nicoburns",
          "committed_at": "2026-07-23T20:47:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6c757e5c0b851f8d6aabd5c68e5d167962a9c815",
          "body": "…` if delay changes (#422)\n\nIf the delay in an animation changes, we still might need to update the\n`Paused` state if the animation is moving from `Playing` to `Paused`.\n\nServo PR: servo/servo#46689\n\nSigned-off-by: Martin Robinson <mrobinson@igalia.com>",
          "is_bot": false,
          "headline": "Also update `AnimationState::Paused` in `Animation::update_from_other…",
          "author_name": "Martin Robinson",
          "author_login": "mrobinson",
          "committed_at": "2026-07-22T20:24:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "394aea737f0c9f85ee442898c29053de8abf68d8",
          "body": "Oddly enough the longhand itself was already enabled. Its not yet\nsupported in servo though.\n\nServo PR: https://github.com/servo/servo/pull/46618\n\nSigned-off-by: Simon Wülker <simon.wuelker@arcor.de>",
          "is_bot": false,
          "headline": "Enable font-language-override for servo (#429)",
          "author_name": "Simon Wülker",
          "author_login": "simonwuelker",
          "committed_at": "2026-07-19T15:11:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3de91cbac7bba38e159239b3c0a360783fce2ee",
          "body": "…o (#377)\n\nServo PR: https://github.com/servo/servo/pull/45308\n\n---------\n\nSigned-off-by: Simon Wülker <simon.wuelker@arcor.de>",
          "is_bot": false,
          "headline": "Support `font-variant-alternates` and `@font-feature-values` for serv…",
          "author_name": "Simon Wülker",
          "author_login": "simonwuelker",
          "committed_at": "2026-07-16T18:37:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5173fcd4455b99cc42777f81715a1bd68ed5b32c",
          "body": "Removes `engine = \"gecko\"` from 8 SVG-geometric properties to be enabled\nfor servo:\n\n- `x`\n- `y`\n- `cx`\n- `cy`\n- `rx`\n- `ry`\n- `r`\n- `d`\n\nServo [PR](https://github.com/servo/servo/pull/46558)\n\nSigned-off-by: Mohamed Mostafa <mu.mostafa98@gmail.com>",
          "is_bot": false,
          "headline": "Enable SVG geometric properties for Servo (#427)",
          "author_name": "Mohamed Mostafa",
          "author_login": "mu-mostafa98",
          "committed_at": "2026-07-16T11:55:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "219f722e8be7feceacd7a870e93b39f6c6d22b7c",
          "body": "Already landed upstream:\nhttps://phabricator.services.mozilla.com/D311004\n(71a8a43642f62f946fcd147e7ac01658e366113e)\n\nImporting it here early to prevent other PRs from adding new\nServo-specific derives due to copy-pasting.\n\nSigned-off-by: Oriol Brufau <obrufau@igalia.com>",
          "is_bot": false,
          "headline": "Share Stylo's Servo-specific derives with Gecko (#423)",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-07-11T08:23:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "116ab95e7332c3d44f3d3f2e134f5c90909ff446",
          "body": "This is a partial revert of #340. Waiting for an available macOS runner\nfrequently takes very long, which makes it annoying when trying to land\nmultiple patches, since they need to also be coordinated with the\ncompanion patches in Servo.\n\nSo I think it's better to not wait for the macOS job after all. We will\nstill wait for the Linux and Windows ones.\n\nSigned-off-by: Oriol Brufau <obrufau@igalia.com>",
          "is_bot": false,
          "headline": "Stop requiring CI jobs to pass on Mac (#424)",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-07-11T00:41:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a64923b5d5c67313c81c5056f5e30ec0babb04d6",
          "body": "Removes `engine = \"gecko\"` from 11 SVG-specific CSS properties to be\nenabled for servo:\n\n- **Fill (3):** `fill`, `fill-opacity`, `fill-rule`\n- **Stroke (8):** `stroke`, `stroke-width`, `stroke-linecap`,\n`stroke-linejoin`, `stroke-dasharray`, `stroke-dashoffset`,\n`stroke-miterlimit`, `stroke-opacity`\n[…]\n2) for the new\nfields.\n\nServo [PR](https://github.com/servo/servo/pull/45405)\n\n---------\n\nSigned-off-by: Mohamed Mostafa mu-mostafa98@gmail.com\nCo-authored-by: Mohamed Mostafa <mu-mostafa98@gmail.com>",
          "is_bot": false,
          "headline": "Enable basic SVG-related CSS properties for Servo (#383)",
          "author_name": "Mohamed Mostafa",
          "author_login": "mu-mostafa98",
          "committed_at": "2026-07-10T11:56:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f591fc2d6d6e5f1b1da510efcb38d6bfb22e9563",
          "body": "Corresponding servo PR is at https://github.com/servo/servo/pull/45492\n\nSigned-off-by: Psychpsyo (Cameron) <60073468+Psychpsyo@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Enable box-decoration-break for Servo (#386)",
          "author_name": "Psychpsyo (Cameron)",
          "author_login": "Psychpsyo",
          "committed_at": "2026-07-10T09:37:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e90bb16403de93f469ae71665e0f047ddb00f9ed",
          "body": "Servo PR: https://github.com/servo/servo/pull/46118\n\nSigned-off-by: Simon Wülker <simon.wuelker@arcor.de>",
          "is_bot": false,
          "headline": "style: Implement iterator over all known non-custom properties (#406)",
          "author_name": "Simon Wülker",
          "author_login": "simonwuelker",
          "committed_at": "2026-07-08T10:19:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0151ab3bf0183dd2f802d32e4f7fb2140ccb3475",
          "body": "A couple more keyword/bitflag properties that I'm implementing in Blitz,\nand would like to enable behind the `layout.unimplemented` pref.\n\nSigned-off-by: Nico Burns <nico@nicoburns.com>",
          "is_bot": false,
          "headline": "Enable `scroll-behavior` and `overscroll-behavior` properties (#420)",
          "author_name": "Nico Burns",
          "author_login": "nicoburns",
          "committed_at": "2026-07-08T08:39:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0381f1838deeee0b0b7ad6b7f45cd1c2536c473",
          "body": "Signed-off-by: Oriol Brufau <obrufau@igalia.com>",
          "is_bot": false,
          "headline": "Fixup for https://phabricator.services.mozilla.com/D308885",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-07-07T19:09:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14e1a7972ecf6180b2a686d65b811509f89a4da1",
          "body": "Signed-off-by: Oriol Brufau <obrufau@igalia.com>",
          "is_bot": false,
          "headline": "Fixup for https://phabricator.services.mozilla.com/D308495",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-07-07T19:09:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "acc35ea89ccfd8147b7f7bb87d5e689b2912246e",
          "body": "Signed-off-by: Oriol Brufau <obrufau@igalia.com>",
          "is_bot": false,
          "headline": "Fixup for https://phabricator.services.mozilla.com/D308250",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-07-07T00:08:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d646106e3ef21ab62cb6af2d14dbb3cff58b5571",
          "body": "Signed-off-by: Oriol Brufau <obrufau@igalia.com>",
          "is_bot": false,
          "headline": "Fixup for https://phabricator.services.mozilla.com/D306324",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-07-07T00:08:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d957b9281018113774dc883ab62265ba55221ac7",
          "body": "Signed-off-by: Oriol Brufau <obrufau@igalia.com>",
          "is_bot": false,
          "headline": "Fixup for https://phabricator.services.mozilla.com/D305186",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-07-07T00:08:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04ccd589ae351f38152225df9282f1e9136eed47",
          "body": "Signed-off-by: Oriol Brufau <obrufau@igalia.com>",
          "is_bot": false,
          "headline": "Fixup for https://phabricator.services.mozilla.com/D306635",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-07-07T00:08:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62a5138f68b6c45aa3bd63c19d8f7345520ebe98",
          "body": "Signed-off-by: Oriol Brufau <obrufau@igalia.com>",
          "is_bot": false,
          "headline": "Fixup for https://phabricator.services.mozilla.com/D302020",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-07-07T00:08:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "23d00e56c01b7c2cb98c01914f55a4fb1ad5001d",
          "body": "Signed-off-by: Oriol Brufau <obrufau@igalia.com>",
          "is_bot": false,
          "headline": "Fixup for https://phabricator.services.mozilla.com/D304960",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-07-07T00:08:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bd33772dbc0ff7ebe521241fd2c166405f477f5b",
          "body": "Signed-off-by: Oriol Brufau <obrufau@igalia.com>",
          "is_bot": false,
          "headline": "Fixup for https://phabricator.services.mozilla.com/D302701",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-07-07T00:08:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2872fb8b6a1faef1eb2ea6e62b134cfb50c0a067",
          "body": "Signed-off-by: Oriol Brufau <obrufau@igalia.com>",
          "is_bot": false,
          "headline": "Fixup for https://phabricator.services.mozilla.com/D287695",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-07-07T00:08:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "929ddefe0ecf06a6f9efdf92f2d01d0a293f06e7",
          "body": "This is a rebase of 5685b276c8f2a1a3cf57439d7d70d9c2e3f84f3f\n\nSigned-off-by: Oriol Brufau <obrufau@igalia.com>",
          "is_bot": false,
          "headline": "Commit our changes on top of upstream Stylo",
          "author_name": "Delan Azabani",
          "author_login": "delan",
          "committed_at": "2026-07-07T00:08:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b328f200d5a3b6d48af022c50bc2954fe095b5ef",
          "body": "Any ancestors of this commit are from upstream mozilla-central, with\nsome filtering and renaming. Our patches and sync tooling start here.\n\nThe sync tooling has all been squashed into this commit, based on:\nhttps://github.com/servo/stylo/commits/64731e10dc8ef87ef52aa2fb9f988c3b2530f3a7",
          "is_bot": false,
          "headline": "Servo initial downstream commit",
          "author_name": "Delan Azabani",
          "author_login": "delan",
          "committed_at": "2026-07-01T23:39:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6958c7c5504493c4d0c858b137c80183dd7fa86",
          "body": "…-system-reviewers,dshin\n\nImplement the \"multiply two types\" algorithm.\n\nThis will be used by CSSNumericValue.type() and also allows the CSSMathProduct\nconstructor to validate the types of its values as the first consumer of this\nnew functionality.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D309307",
          "is_bot": false,
          "headline": "Bug 2051216 - Implement multiplying two NumericTypes; r=firefox-style…",
          "author_name": "Jan Varga",
          "author_login": "janvarga",
          "committed_at": "2026-07-01T11:20:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "449644a6f97cefa5ce193133ebf466ab3a2e949c",
          "body": "…158. r=firefox-style-system-reviewers,emilio\n\nThe logic in cascade.rs assumes the presence of various properties that\nwere only compiled for Gecko. So compile them also for Servo, disabled\nbehind a runtime flag.\nThis allows removing a few `#[cfg(feature = \"gecko\")]`.\nOn the other hand, various `#[cfg(feature = \"gecko\")]` have to be added.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D309737",
          "is_bot": false,
          "headline": "Bug 2051770 - Let Stylo compile for Servo after the changes from D308…",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-07-01T10:15:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50ae4a76250e160c8e1b4de06496bc88e1effcc1",
          "body": "…system-reviewers,emilio\n\nExcept for `get_attr()`, all methods have a definition that just needs\n`TElement`, nothing else is Gecko-specific.\n\nSo add a `get_attr()` into `TElement` with different definitions for\nGecko and Servo, and also add `get_tree_counting_result()` with a shared\ndefault implemen\n[…]\nation.\n\nThen the implementation of `ElementContext` for objects that also\nimplement `TElement` can just redirect to `TElement`.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D309633",
          "is_bot": false,
          "headline": "Bug 2051667 - Share ElementContext logic with Servo. r=firefox-style-…",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-06-30T20:24:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d84dd982fc40b5cc500f703306e5880bc018e26a",
          "body": "The test is rather tricky but I think fair enough.\n\nI wanted to make the \"decoding\" attribute map to this property, but we'd\nstill need the existing machinery for the src-animation stuff:\n\nhttps://searchfox.org/firefox-main/rev/6a252a86c5bb0fdd7a197d1c244f8a28e0827b3a/dom/base/nsImageLoadingContent.cpp#613-624\n\nSo for now left as is. I removed some redundant flag checks that are\nincluded already by the DL builder stuff.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D309119",
          "is_bot": false,
          "headline": "Bug 2050819 - -moz-image-decoding property. r=tnikkel,layout-reviewers",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-30T17:46:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7e7a42a4bbbcae53188327701483701bb0e6b79",
          "body": "…rse(); r=emilio,firefox-style-system-reviewers\n\nExtend CSSNumericValue.parse() to support simple numbers, percentages, angles,\nand times in addition to the already-supported length values.\n\nAlso parse the whole input so strings with trailing tokens are rejected, and\nupdate WPT expectations for tests that now pass with the additional numeric\nvalue support.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D309251",
          "is_bot": false,
          "headline": "Bug 2051120 - Support additional numeric values in CSSNumericValue.pa…",
          "author_name": "Jan Varga",
          "author_login": "janvarga",
          "committed_at": "2026-06-30T11:03:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e35bb42a670923e032dbab9b735410338f455f98",
          "body": "…rts of Stylo shared with Servo. r=firefox-style-system-reviewers,dshin\n\nDifferential Revision: https://phabricator.services.mozilla.com/D309431",
          "is_bot": false,
          "headline": "Bug 2051394 - Don't use Gecko-specific code for link parameters in pa…",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-06-29T23:02:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d661814f1d81c966272a6f667f3c824e0e53e102",
          "body": "…rs,firefox-style-system-reviewers,firefox-svg-reviewers,dshin\n\nIt's unnecessary since bug 2031757.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D309401",
          "is_bot": false,
          "headline": "Bug 2051345 - Remove line-height: -moz-block-height. r=layout-reviewe…",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-29T17:11:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb5f9a40b914bfa66169e0682a753699b9fcb6b0",
          "body": "… r=emilio,firefox-style-system-reviewers\n\nAdd an unchecked MathSum constructor for sequences of numeric values whose\ntypes have already been validated as addable.\n\nUse it in `SumValue::to_units`, which is now guaranteed to be called only with\naddable units.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D309022",
          "is_bot": false,
          "headline": "Bug 2046802 - Add unchecked MathSum constructor for validated values;…",
          "author_name": "Jan Varga",
          "author_login": "janvarga",
          "committed_at": "2026-06-27T11:45:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab9a7649c7512128b0c5a93935bff36d8fd80043",
          "body": "…firefox-style-system-reviewers,layout-reviewers,emilio\n\nWe add an extra preference,\nlayout.css.text-decoration-inset-percentage.enabled, for the support of\npercentage. This patch only implements the syntax and parsing. We still\nhave to resolve the percentage part in the following patches.\n\nAlso, add the missing parsing tests in WPT.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D308885",
          "is_bot": false,
          "headline": "Bug 2044602 - Parse <lenght-percentage> for text-decoration-inset. r=…",
          "author_name": "Boris Chiou",
          "author_login": "BorisChiou",
          "committed_at": "2026-06-27T00:11:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f33a69143ecf705f92a4ae7aa799773bd82256c",
          "body": "…tem-reviewers,emilio\n\nSigned-off-by: Oriol Brufau <obrufau@igalia.com>\n\nDifferential Revision: https://phabricator.services.mozilla.com/D309031",
          "is_bot": false,
          "headline": "Bug 2050808 - Use property-counts in more places. r=firefox-style-sys…",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-06-26T21:28:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1844beaf91f18f31dae3985aedd984f66ebe0e0",
          "body": "…system-reviewers\n\nMake `MathSum` a struct again and add a `NumericType` field, populating it when\nconstructing math sums.\n\nThis preserves the numeric type alongside the list of numeric values so\n`CSSNumericValue.type()` can report the expected type for reified `CSSMathSum`\nobjects.\n\nWPT coverage is added in a follow-up patch to avoid introducing many temporary\ntest failures.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D309019",
          "is_bot": false,
          "headline": "Bug 2046802 - Store numeric types in MathSum; r=emilio,firefox-style-…",
          "author_name": "Jan Varga",
          "author_login": "janvarga",
          "committed_at": "2026-06-26T15:50:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9950fbfa6722701259b354f55cb0cb8aeac7bc5f",
          "body": "Apply cargo fmt to existing code to reduce unrelated formatting changes in\nfollow-up patches.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D309018",
          "is_bot": false,
          "headline": "Bug 2046802 - Apply cargo fmt; r=emilio,firefox-style-system-reviewers",
          "author_name": "Jan Varga",
          "author_login": "janvarga",
          "committed_at": "2026-06-26T11:01:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "94b41d548b424e4a76331616ae1db702b77890da",
          "body": "…smatches. r=firefox-style-system-reviewers,emilio\n\nDifferential Revision: https://phabricator.services.mozilla.com/D308700",
          "is_bot": false,
          "headline": "Bug 2050171 - Return 1 for sibling-index/sibling-count tree-scoped mi…",
          "author_name": "Sajid Anwar",
          "author_login": "kbhomes",
          "committed_at": "2026-06-25T12:30:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5bdfdb802a42b76a9a7a46172c0c744331b0d38",
          "body": "…rioritary properties. r=firefox-style-system-reviewers,dshin\n\nStore the dependencies between them in a PrioritaryPropertyIdSet (a u32,\neffectively), and document them better / reduce them as well.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D308517",
          "is_bot": false,
          "headline": "Bug 2050047 - Improve the representation of the dependency graph of p…",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-24T13:33:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4bddd9a3965a850162443cb311ff92c4a7e1f003",
          "body": "…x-style-system-reviewers,dshin\n\nI wanted to reuse some of the iteration stuff without re-writing it.\n\nRust's const support is not amazing, otherwise could be even\nneater... But I think this is good enough.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D308516",
          "is_bot": false,
          "headline": "Bug 2050047 - Generalize LonghandIdSet into a generic IdSet. r=firefo…",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-24T13:33:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d07aa3592d065b509a63b969221ff1adc8f5a9c1",
          "body": "…yle-system-reviewers,dshin\n\nSome of the complexity in this code seems kind of gratuitious. We no\nlonger are avoiding the VarInfo clone (since we introduced the NonCustom\nstuff), so simplify this a little bit.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D308497",
          "is_bot": false,
          "headline": "Bug 2050047 - Make loop handling easier to reason about. r=firefox-st…",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-24T13:33:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "decb5be6fbbc5d21a055dabec78d1cd97aa007e6",
          "body": "…rebase / review comment fix-up.\n\nIt got caught by the \"Should've been handled earlier\" debug assertions.",
          "is_bot": false,
          "headline": "Bug 2021155 - Restore fast path that accidentally got removed during …",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-24T12:24:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d0097cde41ea128f319977767de81a1930a38c9",
          "body": "…ont-face. r=firefox-style-system-reviewers,emilio\n\n- Renames `font_face::FontStyle` to `FontStyleRange`, for consistency\n  with `FontWeightRange` and `FontStretchRange`, and to disambiguate it\n  from `values::computed::font::FontStyle`.\n- Renames `ComputedFontStyleDescriptor` to `ComputedFontStyleR\n[…]\nm `FontStyleRange::compute()`, but it's no longer necessary,\n  since `FontStyle::oblique()` already clamps the angle as needed.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D308495",
          "is_bot": false,
          "headline": "Bug 2050001 - Simplify logic for computed font-style descriptor of @f…",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-06-24T11:35:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b5734d3c257a4ece80e57270dc0583862304aee8",
          "body": "…tution. r=firefox-style-system-reviewers,dshin\n\nWe don't need to do this anymore. Also avoid some registration lookups.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D308238",
          "is_bot": false,
          "headline": "Bug 2021155 - Don't move around the custom property map during substi…",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-24T11:33:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a0590d10dc3711f37a662cdc746e0f2bae8ade5",
          "body": "…ox-style-system-reviewers,dshin\n\nThis reuses some storage during property substitution. It still isn't a\nmerge between cycle detection and substitution but it addresses some of\nthe performance regressions seen from the previous patch and is fairly\nstraight-forward.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D308225",
          "is_bot": false,
          "headline": "Bug 2021155 - Save some work in custom property substitution. r=firef…",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-24T11:33:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ab9c6f5422da9f74711eca3d85041ebcc58288e",
          "body": "…rties. r=dshin,firefox-style-system-reviewers\n\nThis removes CustomPropertiesBuilder and moves custom property handling\ndirectly to cascade, so that we can deal with the interactions between\ncustom properties and non-custom properties in one place.\n\nThe keyframe stuff is still kinda gross (ugh, Anim\n[…]\n't).\n\n * It uses a SmallVec<&Atom> for cycles because that's generally pretty\n   cheap and it grows with custom property depth.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D308158",
          "is_bot": false,
          "headline": "Bug 2021155 - Introduce a more proper property graph for custom prope…",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-24T11:33:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1c045d30e75119b1e79bc43e3be453f3d406ff18",
          "body": "…nt when appearance:base r=firefox-style-system-reviewers,emilio\" for causing failures at contain-size-select-elem-003.html.\n\nThis reverts commit 7fd8b2d4bd0d08fa1924920da941ff74dbc7c2f4.",
          "is_bot": false,
          "headline": "Revert \"Bug 2044275 - Wire up ::picker, showing instead of SelectPare…",
          "author_name": "Atila Butkovits",
          "author_login": null,
          "committed_at": "2026-06-24T10:54:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7fd8b2d4bd0d08fa1924920da941ff74dbc7c2f4",
          "body": "…appearance:base r=firefox-style-system-reviewers,emilio\n\nThis implements the styles & machinery for ::picker to be shown as a\nanchor-pos popover, instead of the SelectParent - when in appearance base.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D305622",
          "is_bot": false,
          "headline": "Bug 2044275 - Wire up ::picker, showing instead of SelectParent when …",
          "author_name": "Keith Cirkel",
          "author_login": "keithamus",
          "committed_at": "2026-06-24T09:30:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4d6cf70caf3734cdfbe1585d6b020faa73e4fe5",
          "body": "…r text-decoration-inset. r=firefox-style-system-reviewers,layout-reviewers,dshin\n\nDifferential Revision: https://phabricator.services.mozilla.com/D308250",
          "is_bot": false,
          "headline": "Bug 1997043 - Enable animating between 'auto' and explicit lengths fo…",
          "author_name": "Jonathan Kew",
          "author_login": "jfkthame",
          "committed_at": "2026-06-23T13:26:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79af21c3f8589a07816242fe81a68a87e55c76d8",
          "body": "…nt when appearance:base r=firefox-style-system-reviewers,emilio\" for causing wpt failures at accessibility-minimum-target-size.html\n\nThis reverts commit 3796944a181dfe299eabd8be1002d396effd77d9.",
          "is_bot": false,
          "headline": "Revert \"Bug 2044275 - Wire up ::picker, showing instead of SelectPare…",
          "author_name": "Silaghi",
          "author_login": null,
          "committed_at": "2026-06-23T10:11:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bd18fa8095838525b01ec20e921c0b0cf55a666f",
          "body": "…ween color spaces. r=layout-reviewers,firefox-style-system-reviewers,emilio,nchevobbe\n\nPer spec, missing components used directly should be treated as 0. We\nalready keep track of none components during mixing using the flags,\nso NaN placeholders are not needed.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306997",
          "is_bot": false,
          "headline": "Bug 2045815 - Treat missing color components as 0 when converting bet…",
          "author_name": "Tiaan Louw",
          "author_login": "tiaanl",
          "committed_at": "2026-06-23T08:52:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3796944a181dfe299eabd8be1002d396effd77d9",
          "body": "…appearance:base r=firefox-style-system-reviewers,emilio\n\nThis implements the styles & machinery for ::picker to be shown as a\nanchor-pos popover, instead of the SelectParent - when in appearance base.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D305622",
          "is_bot": false,
          "headline": "Bug 2044275 - Wire up ::picker, showing instead of SelectParent when …",
          "author_name": "Keith Cirkel",
          "author_login": "keithamus",
          "committed_at": "2026-06-23T08:37:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b4f6b7bb61cbd9e47f947c7231d13b29c2d2b28",
          "body": "…x-style-system-reviewers,emilio,dshin\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306324",
          "is_bot": false,
          "headline": "Bug 2047015 - Implement CSS progress() function behind pref. r=firefo…",
          "author_name": "Sajid Anwar",
          "author_login": "kbhomes",
          "committed_at": "2026-06-22T14:55:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "102d587b935e6fc17fc56f306d7c3a9aec757835",
          "body": "…ax. r=layout-reviewers,firefox-style-system-reviewers,dshin\n\nUse the modern `color(srgb ...)` storage path when any component is\n`none`, since legacy sRGB cannot represent `none` anyway.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D307020",
          "is_bot": false,
          "headline": "Bug 1901991 - Preserve `none` components when parsing modern rgb synt…",
          "author_name": "Tiaan Louw",
          "author_login": "tiaanl",
          "committed_at": "2026-06-22T12:05:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3fc15a6d6585356defcd6373cfe46bbb6567af1",
          "body": "…ior with large arrays. r=firefox-style-system-reviewers,emilio\n\nDifferential Revision: https://phabricator.services.mozilla.com/D307914",
          "is_bot": false,
          "headline": "Bug 2040731 - Optimize dedup_font_settings() to avoid quadratic behav…",
          "author_name": "Jonathan Kew",
          "author_login": "jfkthame",
          "committed_at": "2026-06-21T12:59:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52c120a20b1599fd092f69fd751111aa12e99853",
          "body": "…ection. r=dshin,sukil,firefox-style-system-reviewers\n\nThis fixes attr-cycle failures with my patch for bug 2048926.\n\nThere are two tweaks:\n\n * Change update_attributes_map to not look at type-less attributes\n   eagerly, since they don't introduce extra references.\n\n * Change the cycle code to look \n[…]\nituted.\n\nAdd a test that fails without this change even without that patch\n(basically the same but with the variables swapped).\n\nDifferential Revision: https://phabricator.services.mozilla.com/D307865",
          "is_bot": false,
          "headline": "Bug 2049009 - Fix hash iteration order dependency in attr() cycle det…",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-19T21:37:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6fff926a7967d28a1b59777fe17790b8b28ea997",
          "body": "…FixedPoint instead of f32. r=firefox-style-system-reviewers,emilio\n\nf32 prevents Servo from deriving Hash, and it ended up being converted anyway.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D307743",
          "is_bot": false,
          "headline": "Bug 2048889 - Change ComputedFontStyleDescriptor to contain FontStyle…",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-06-19T14:11:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08f1a1b064d4bbd6e1d082d84d312a4bf38ed099",
          "body": "…stead of f32. r=firefox-style-system-reviewers,dshin\n\nIt's simpler this way, and will allow Servo to derive Hash.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D307599",
          "is_bot": false,
          "headline": "Bug 2048690 - Change ComputedFontWeightRange to contain FontWeight in…",
          "author_name": "Oriol Brufau",
          "author_login": "Loirooriol",
          "committed_at": "2026-06-18T18:13:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f05cb187c22395ba8b6e6928fa45a23486f7b3e8",
          "body": "…llipse() behind a nightly-only. r=Oriol,firefox-style-system-reviewers\n\nDifferential Revision: https://phabricator.services.mozilla.com/D305186",
          "is_bot": false,
          "headline": "Bug 2045278 - Put farthest-corner and closest-corner parameters for e…",
          "author_name": "Diego Escalante",
          "author_login": "dcrescalante",
          "committed_at": "2026-06-18T18:07:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "373a4a9feeabe13b320553560d3182284d5fbdb9",
          "body": "… r=firefox-style-system-reviewers,dshin\n\nWe need to compute lengths / sibling-index() / origin colors, even if we\ndon't end up being able to turn the color into absolute, and preserve\nthat result if so.\n\nThe diff looks big but it's mostly moving code around.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D307451",
          "is_bot": false,
          "headline": "Bug 1985452 - Split color computation from relative color resolution.…",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-18T14:28:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1a42c945904165122e4a74edc4054a89b601f75",
          "body": "…dom\" floating-point sizes don't overwhelm our caches. r=perftest-reviewers,firefox-style-system-reviewers,layout-reviewers,dshin,sparky\n\nWe do this by reducing precision proportionately to the value, rather than simply\nrounding to a certain number of decimals or similar, so that small sizes maintai\n[…]\n added, based on the\ntestcase in the report.\n\n(A few existing tests get minor adjustments to allow for the modified precision.)\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306131",
          "is_bot": false,
          "headline": "Bug 2042294 - Quantize font-size at computed-value time, so that \"ran…",
          "author_name": "Jonathan Kew",
          "author_login": "jfkthame",
          "committed_at": "2026-06-18T12:59:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f46ce138de16c0401523a2fba075501402f9cfd2",
          "body": "…hat \"random\" floating-point sizes don't overwhelm our caches. r=perftest-reviewers,firefox-style-system-reviewers,layout-reviewers,dshin,sparky\" for causing wr failures at rule_cache.rs\n\nThis reverts commit e3087c7f29b2329989d439b734fbc2a83c75b05d.",
          "is_bot": false,
          "headline": "Revert \"Bug 2042294 - Quantize font-size at computed-value time, so t…",
          "author_name": "rperta",
          "author_login": "rperta",
          "committed_at": "2026-06-18T11:03:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3087c7f29b2329989d439b734fbc2a83c75b05d",
          "body": "…dom\" floating-point sizes don't overwhelm our caches. r=perftest-reviewers,firefox-style-system-reviewers,layout-reviewers,dshin,sparky\n\nWe do this by reducing precision proportionately to the value, rather than simply\nrounding to a certain number of decimals or similar, so that small sizes maintai\n[…]\n added, based on the\ntestcase in the report.\n\n(A few existing tests get minor adjustments to allow for the modified precision.)\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306131",
          "is_bot": false,
          "headline": "Bug 2042294 - Quantize font-size at computed-value time, so that \"ran…",
          "author_name": "Jonathan Kew",
          "author_login": "jfkthame",
          "committed_at": "2026-06-18T10:36:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2286d9578bf13a402af2066dd6f562b2ba9cafc4",
          "body": "…tyle-system-reviewers\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306457",
          "is_bot": false,
          "headline": "Bug 2047198 - Make attr deferring less aggressive. r=emilio,firefox-s…",
          "author_name": "Swarup Ukil",
          "author_login": null,
          "committed_at": "2026-06-18T02:24:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "59fbe024ca647c346ae234e4ee390dec344335e4",
          "body": "Differential Revision: https://phabricator.services.mozilla.com/D307310",
          "is_bot": false,
          "headline": "Bug 2048174 - Fix alpha serialization of relative colors. r=sajidanwar",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-17T21:56:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3974492d792d2d050c94762b8ac97e88c240c69",
          "body": "…nt when appearance:base r=firefox-style-system-reviewers,emilio\" for causin wr test failures at /css/css-contain/contain-size-select-elem-003.html\n\nThis reverts commit 3080c3904536b760cb0355e960df56b5431785a7.",
          "is_bot": false,
          "headline": "Revert \"Bug 2044275 - Wire up ::picker, showing instead of SelectPare…",
          "author_name": "Silaghi",
          "author_login": null,
          "committed_at": "2026-06-17T19:38:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3080c3904536b760cb0355e960df56b5431785a7",
          "body": "…appearance:base r=firefox-style-system-reviewers,emilio\n\nThis implements the styles & machinery for ::picker to be shown as a\nanchor-pos popover, instead of the SelectParent - when in appearance base.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D305622",
          "is_bot": false,
          "headline": "Bug 2044275 - Wire up ::picker, showing instead of SelectParent when …",
          "author_name": "Keith Cirkel",
          "author_login": "keithamus",
          "committed_at": "2026-06-17T18:03:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9efbbe9a062294cd3401b93bfeddaa0d0ae3d6d0",
          "body": "…hat \"random\" floating-point sizes don't overwhelm our caches. r=perftest-reviewers,firefox-style-system-reviewers,layout-reviewers,dshin,sparky\" for causing wr failures @rule_cache.rs.\n\nThis reverts commit b9ec8814664f0524530b13796b69b960c9bf5992.",
          "is_bot": false,
          "headline": "Revert \"Bug 2042294 - Quantize font-size at computed-value time, so t…",
          "author_name": "agoloman",
          "author_login": "agoloman",
          "committed_at": "2026-06-17T16:06:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "59d7e5a81250f099e5e26791c4c1b2eb299949b8",
          "body": null,
          "is_bot": false,
          "headline": "Bug 2048212 - remove file-whitespace.",
          "author_name": "agoloman",
          "author_login": "agoloman",
          "committed_at": "2026-06-17T15:47:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38f691e97992477a3e28dc0103b4fad3bcc1ff67",
          "body": "…style-system-reviewers,dshin\n\nAnd use them for SimpleFilter as well. Inspired by a claudometer patch.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D307250",
          "is_bot": false,
          "headline": "Bug 2048212 - Include local names in subtree bloom filter. r=firefox-…",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-17T15:38:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b9ec8814664f0524530b13796b69b960c9bf5992",
          "body": "…dom\" floating-point sizes don't overwhelm our caches. r=perftest-reviewers,firefox-style-system-reviewers,layout-reviewers,dshin,sparky\n\nWe do this by reducing precision proportionately to the value, rather than simply\nrounding to a certain number of decimals or similar, so that small sizes maintai\n[…]\n added, based on the\ntestcase in the report.\n\n(A few existing tests get minor adjustments to allow for the modified precision.)\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306131",
          "is_bot": false,
          "headline": "Bug 2042294 - Quantize font-size at computed-value time, so that \"ran…",
          "author_name": "Jonathan Kew",
          "author_login": "jfkthame",
          "committed_at": "2026-06-17T14:54:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3a6b99d98aef92554c668bdc3a6b3ba62fb90e37",
          "body": "…le,arai,necko-reviewers,media-playback-reviewers,profiler-reviewers,alwu,canova,jesup,places-reviewers,Standard8\n\nHashing char by char is unnecessarily expensive, this hashes four bytes\nat a time for those.\n\nI did that rather than keeping size_t because HashBytes(uint64_t) ends\nup in two AddUint32T\n[…]\nd we rely on\nit matching:\n\n * HashUTF8AsUTF16()\n * JS atoms\n * xpcom atoms.\n\nUse constexpr to simplify the static atoms set up.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306312",
          "is_bot": false,
          "headline": "Bug 2046953 - Use HashBytes for hashing thin strings. r=sergesanspail…",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-17T14:01:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d0d7e093011ad61c1e5980658e07a984d39ce563",
          "body": "…em-reviewers,dshin\n\nImplement the \"add two types\" algorithm, including the \"apply the percent hint\"\nalgorithm.\n\nThis will be used by CSSNumericValue.type() and also allows the CSSMathSum\nconstructor to validate the types of its values as the first consumer of this\nnew functionality.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306211",
          "is_bot": false,
          "headline": "Bug 2046802 - Implement adding two NumericTypes. r=firefox-style-syst…",
          "author_name": "Jan Varga",
          "author_login": "janvarga",
          "committed_at": "2026-06-17T13:53:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96dd170a74da968b7a89a88e3202e2fdba156c9b",
          "body": "…m-reviewers,dshin\n\nAdd cached non-zero exponent counts and helper methods for reading, setting,\nand updating NumericType exponents.\n\nThese helpers are needed for implementing the \"add two types\" algorithm\nefficiently, and will also be useful for future numeric type matching checks\nsuch as \"A type matches <length>\".\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306209",
          "is_bot": false,
          "headline": "Bug 2046802 - Add NumericType exponent helpers. r=firefox-style-syste…",
          "author_name": "Jan Varga",
          "author_login": "janvarga",
          "committed_at": "2026-06-17T13:53:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6da0348ac3fe40f25b34a2ef9afaec0a725edbd",
          "body": "They compute to a keyword. The spec is clear that the values should be\ncomputed, not resolved and currentColor computes to a keyword, see\nhttps://issues.chromium.org/issues/40137692 for the Chromium issue.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D307058",
          "is_bot": false,
          "headline": "Bug 2047996 - Make computed currentcolor reify properly. r=janv",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-17T08:07:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7a67401d2206fe757b60bfae8ebe1e10b3356e68",
          "body": "…nv\" for causing wpt failures in properties/logical.html\n\nThis reverts commit fa6f8cebce6e7ad445195829e686bf37bfab4a9b.",
          "is_bot": false,
          "headline": "Revert \"Bug 2047996 - Make computed currentcolor reify properly. r=ja…",
          "author_name": "Cristian Tuns",
          "author_login": null,
          "committed_at": "2026-06-17T01:17:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6b1b7cf58d16b1257ff6b556dd5063222b3493a",
          "body": "…ting between color spaces. r=layout-reviewers,firefox-style-system-reviewers,emilio\" for causing failures at test_color_to.html.\n\nThis reverts commit f413a6f06adc25c95b3f1f2169cb0172316b98dd.",
          "is_bot": false,
          "headline": "Revert \"Bug 2045815 - Treat missing color components as 0 when conver…",
          "author_name": "Atila Butkovits",
          "author_login": null,
          "committed_at": "2026-06-17T00:41:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f413a6f06adc25c95b3f1f2169cb0172316b98dd",
          "body": "…ween color spaces. r=layout-reviewers,firefox-style-system-reviewers,emilio\n\nPer spec, missing components used directly should be treated as 0. We\nalready keep track of none components during mixing using the flags,\nso NaN placeholders are not needed.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306997",
          "is_bot": false,
          "headline": "Bug 2045815 - Treat missing color components as 0 when converting bet…",
          "author_name": "Tiaan Louw",
          "author_login": "tiaanl",
          "committed_at": "2026-06-16T23:01:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3fe26763f7fb99d8ce067896debee7a76f8ccd4",
          "body": "…hat \"random\" floating-point sizes don't overwhelm our caches. r=perftest-reviewers,firefox-style-system-reviewers,layout-reviewers,dshin,sparky\" for causing reftest failures in /color-1-ref.html\n\nThis reverts commit ae957f26de5b1fc4385826bd6ad7fd2c5ddc1c27.",
          "is_bot": false,
          "headline": "Revert \"Bug 2042294 - Quantize font-size at computed-value time, so t…",
          "author_name": "Cristian Tuns",
          "author_login": null,
          "committed_at": "2026-06-16T22:52:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4adf21bcb3a0fceed4cb3a2a68398074c2f83296",
          "body": "…sanspaille,arai,necko-reviewers,media-playback-reviewers,profiler-reviewers,alwu,canova,jesup\" for causing mochitest failures in test_beaconContentPolicy.html\n\nThis reverts commit dc4ec0bb8ca6362f9115a063483f14fb3eb083f8.",
          "is_bot": false,
          "headline": "Revert \"Bug 2046953 - Use HashBytes for hashing thin strings. r=serge…",
          "author_name": "Cristian Tuns",
          "author_login": null,
          "committed_at": "2026-06-16T21:21:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa6f8cebce6e7ad445195829e686bf37bfab4a9b",
          "body": "They compute to a keyword. The spec is clear that the values should be\ncomputed, not resolved and currentColor computes to a keyword, see\nhttps://issues.chromium.org/issues/40137692 for the Chromium issue.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D307058",
          "is_bot": false,
          "headline": "Bug 2047996 - Make computed currentcolor reify properly. r=janv",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-16T19:09:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ae957f26de5b1fc4385826bd6ad7fd2c5ddc1c27",
          "body": "…dom\" floating-point sizes don't overwhelm our caches. r=perftest-reviewers,firefox-style-system-reviewers,layout-reviewers,dshin,sparky\n\nWe do this by reducing precision proportionately to the value, rather than simply\nrounding to a certain number of decimals or similar, so that small sizes maintai\n[…]\n added, based on the\ntestcase in the report.\n\n(A few existing tests get minor adjustments to allow for the modified precision.)\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306131",
          "is_bot": false,
          "headline": "Bug 2042294 - Quantize font-size at computed-value time, so that \"ran…",
          "author_name": "Jonathan Kew",
          "author_login": "jfkthame",
          "committed_at": "2026-06-16T19:08:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "19a6f29d36713b1c3158640974f102ac914d947b",
          "body": "…rgb syntax. r=layout-reviewers,firefox-style-system-reviewers,dshin\" for causing failures at color-computed-rgb.html.\n\nThis reverts commit 1d5df57765e69f1de8199b7047f16f716eab18a8.",
          "is_bot": false,
          "headline": "Revert \"Bug 1901991 - Preserve `none` components when parsing modern …",
          "author_name": "Atila Butkovits",
          "author_login": null,
          "committed_at": "2026-06-16T18:48:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1d5df57765e69f1de8199b7047f16f716eab18a8",
          "body": "…ax. r=layout-reviewers,firefox-style-system-reviewers,dshin\n\nUse the modern `color(srgb ...)` storage path when any component is\n`none`, since legacy sRGB cannot represent `none` anyway.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D307020",
          "is_bot": false,
          "headline": "Bug 1901991 - Preserve `none` components when parsing modern rgb synt…",
          "author_name": "Tiaan Louw",
          "author_login": "tiaanl",
          "committed_at": "2026-06-16T17:17:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc4ec0bb8ca6362f9115a063483f14fb3eb083f8",
          "body": "…le,arai,necko-reviewers,media-playback-reviewers,profiler-reviewers,alwu,canova,jesup\n\nHashing char by char is unnecessarily expensive, this hashes four bytes\nat a time for those.\n\nI did that rather than keeping size_t because HashBytes(uint64_t) ends\nup in two AddUint32ToHash() anyways, and that w\n[…]\nd we rely on\nit matching:\n\n * HashUTF8AsUTF16()\n * JS atoms\n * xpcom atoms.\n\nUse constexpr to simplify the static atoms set up.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306312",
          "is_bot": false,
          "headline": "Bug 2046953 - Use HashBytes for hashing thin strings. r=sergesanspail…",
          "author_name": "Emilio Cobos Álvarez",
          "author_login": "emilio",
          "committed_at": "2026-06-16T14:51:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e4bda1500d3a0ae9f7f0a42f22701f0c7d2ed35b",
          "body": "…pectorUtils.getComputationStepsSupportedCSSFunctions. r=layout-reviewers,firefox-style-system-reviewers,emilio.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306691",
          "is_bot": false,
          "headline": "Bug 2047495 - Properly serialize SiblingCount and SiblingIndex in Ins…",
          "author_name": "Nicolas Chevobbe",
          "author_login": "nchevobbe",
          "committed_at": "2026-06-16T06:46:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02148c2da04dbdf6a303bca2e17fac79a059db3a",
          "body": "…e-system-reviewers\n\nAdd a NumericType field to UnitValue and populate it when constructing unit\nvalues.\n\nThis preserves the numeric type alongside the value and unit string so\nCSSNumericValue.type() can report the expected type for reified CSSUnitValue\nobjects.\n\nWPT coverage is added in a follow-up patch to avoid introducing many temporary\ntest failures.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D305909",
          "is_bot": false,
          "headline": "Bug 2045434 - Store numeric types in UnitValue. r=emilio,firefox-styl…",
          "author_name": "Jan Varga",
          "author_login": "janvarga",
          "committed_at": "2026-06-15T16:44:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c431426426070c31874359c4378f769d1991e4ed",
          "body": "…irefox-style-system-reviewers\n\nRefactor NumericType::try_from_unit() to use dedicated constructors for the\nindividual base types.\n\nThese constructors can be used when the numeric type is already known from\ncontext, avoiding the need to derive it from a unit string. A follow-up patch\nwill use them when constructing UnitValue objects during reification.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D305908",
          "is_bot": false,
          "headline": "Bug 2045434 - Add NumericType constructors for base types. r=emilio,f…",
          "author_name": "Jan Varga",
          "author_login": "janvarga",
          "committed_at": "2026-06-15T16:44:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71503193fa98621ba058edefd79e5dc2d5c2dd77",
          "body": "…refox-style-system-reviewers\n\nStore a NumericType on CSSNumericValue and use it to expose the CSSNumericType\ndictionary from CSSNumericValue::Type().\n\nThe numeric type is initially empty for all numeric values. A follow-up patch\nwill initialize it when constructing CSSUnitValue.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D305631",
          "is_bot": false,
          "headline": "Bug 2045434 - Add initial CSSNumericValue.type() support. r=emilio,fi…",
          "author_name": "Jan Varga",
          "author_login": "janvarga",
          "committed_at": "2026-06-15T10:40:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52b2b0b970e41ba2a6868484e1c979e5e8e81454",
          "body": "…-style-system-reviewers,emilio\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306635",
          "is_bot": false,
          "headline": "Bug 2047437 - Implement alpha() color function behind pref. r=firefox…",
          "author_name": "Sajid Anwar",
          "author_login": "kbhomes",
          "committed_at": "2026-06-15T08:42:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "598e3f7f088e343de6ee2b701595a182b6e60dc9",
          "body": "…elative colors. r=firefox-style-system-reviewers,tlouw,emilio\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306373",
          "is_bot": false,
          "headline": "Bug 1925572 - Improve parsing and validation of channel keywords in r…",
          "author_name": "Sajid Anwar",
          "author_login": "kbhomes",
          "committed_at": "2026-06-14T21:07:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c6eeef4b228c86274667c52cd2a07260253b6f7",
          "body": "…irefox-style-system-reviewers,emilio)\" for causing build bustages\n\nThis reverts commit bc066288cd32b7285dc1a29c6bc8368b05f23c2a.\n\nRevert \"Bug 2042048: Make selectors dependency on cssparser default features optional (r=firefox-style-system-reviewers,emilio)\"\n\nThis reverts commit ae0e054a14222cfa22400fc1ae60b463f56d2482.\n\nRevert \"Bug 2042048: Eliminate derive_more dependency from selectors (r=firefox-style-system-reviewers,emilio)\"\n\nThis reverts commit a6a9fa253c9070f4e406f47a47447d45096cc49c.",
          "is_bot": false,
          "headline": "Revert \"Bug 2042048: Make selectors's dependency on phf optional (r=f…",
          "author_name": "Sandor Molnar",
          "author_login": "smolnar-sheriff",
          "committed_at": "2026-06-14T20:31:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "59d2fb5aa1518c761596e69e2dae905b10ce7cf3",
          "body": null,
          "is_bot": false,
          "headline": "Merge mozilla-central to autoland",
          "author_name": "Lando",
          "author_login": null,
          "committed_at": "2026-06-14T20:21:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b76c3f4f56623300280e5838b87d997df624fdc",
          "body": "…ilio,firefox-style-system-reviewers\" for causing failures @ CSSNumericValue.cpp\n\nThis reverts commit c88ace4b856625e2308dcf8116a3994ff9633182.\n\nRevert \"Bug 2045434 - Validate units in CSSNumericValue.to(). r=emilio,firefox-style-system-reviewers\"\n\nThis reverts commit bfe4621a5bee360d6c6ba48ea2a4492\n[…]\nda2a774f1c0f3228c680cca97cb5.\n\nRevert \"Bug 2045434 - Add initial CSSNumericValue.type() support. r=emilio,firefox-style-system-reviewers\"\n\nThis reverts commit 6114a592d4f7c945e07e0b81c46b709caf2f1b75.",
          "is_bot": false,
          "headline": "Revert \"Bug 2045434 - Validate units in CSSNumericValue.toSum(). r=em…",
          "author_name": "Sandor Molnar",
          "author_login": "smolnar-sheriff",
          "committed_at": "2026-06-14T20:18:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ddd525528964781e24796b0bac51e3a70bb52e5a",
          "body": "…rds in relative colors. r=firefox-style-system-reviewers,tlouw,emilio\" for causing flag related failures.\n\nThis reverts commit ba966310fe2135005b6c8a2ecc1c273d490243aa.",
          "is_bot": false,
          "headline": "Revert \"Bug 1925572 - Improve parsing and validation of channel keywo…",
          "author_name": "Cosmin Sabou",
          "author_login": "CosminSabou",
          "committed_at": "2026-06-14T20:08:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc066288cd32b7285dc1a29c6bc8368b05f23c2a",
          "body": "…tyle-system-reviewers,emilio)\n\nSigned-off-by: Nico Burns <nico@nicoburns.com>\n\nDifferential Revision: https://phabricator.services.mozilla.com/D302243",
          "is_bot": false,
          "headline": "Bug 2042048: Make selectors's dependency on phf optional (r=firefox-s…",
          "author_name": "Nico Burns",
          "author_login": "nicoburns",
          "committed_at": "2026-06-14T20:02:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ae0e054a14222cfa22400fc1ae60b463f56d2482",
          "body": "…optional (r=firefox-style-system-reviewers,emilio)\n\nSigned-off-by: Nico Burns <nico@nicoburns.com>\n\nDifferential Revision: https://phabricator.services.mozilla.com/D302242",
          "is_bot": false,
          "headline": "Bug 2042048: Make selectors dependency on cssparser default features …",
          "author_name": "Nico Burns",
          "author_login": "nicoburns",
          "committed_at": "2026-06-14T20:02:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6a9fa253c9070f4e406f47a47447d45096cc49c",
          "body": "…ox-style-system-reviewers,emilio)\n\nThis was only being used for 2 impls which are now hand-written.\n\nSigned-off-by: Nico Burns <nico@nicoburns.com>\n\nDifferential Revision: https://phabricator.services.mozilla.com/D302241",
          "is_bot": false,
          "headline": "Bug 2042048: Eliminate derive_more dependency from selectors (r=firef…",
          "author_name": "Nico Burns",
          "author_login": "nicoburns",
          "committed_at": "2026-06-14T20:02:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba966310fe2135005b6c8a2ecc1c273d490243aa",
          "body": "…elative colors. r=firefox-style-system-reviewers,tlouw,emilio\n\nDifferential Revision: https://phabricator.services.mozilla.com/D306373",
          "is_bot": false,
          "headline": "Bug 1925572 - Improve parsing and validation of channel keywords in r…",
          "author_name": "Sajid Anwar",
          "author_login": "kbhomes",
          "committed_at": "2026-06-14T19:54:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f2ddf462289a8abd22f5bfbcdb25cc53ef01267",
          "body": "…ilio,firefox-style-system-reviewers\" for causing failures @ CSSNumericValue.cpp\n\nThis reverts commit c88ace4b856625e2308dcf8116a3994ff9633182.\n\nRevert \"Bug 2045434 - Validate units in CSSNumericValue.to(). r=emilio,firefox-style-system-reviewers\"\n\nThis reverts commit bfe4621a5bee360d6c6ba48ea2a4492\n[…]\nda2a774f1c0f3228c680cca97cb5.\n\nRevert \"Bug 2045434 - Add initial CSSNumericValue.type() support. r=emilio,firefox-style-system-reviewers\"\n\nThis reverts commit 6114a592d4f7c945e07e0b81c46b709caf2f1b75.",
          "is_bot": false,
          "headline": "Revert \"Bug 2045434 - Validate units in CSSNumericValue.toSum(). r=em…",
          "author_name": "Sandor Molnar",
          "author_login": "smolnar-sheriff",
          "committed_at": "2026-06-14T18:23:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6114a592d4f7c945e07e0b81c46b709caf2f1b75",
          "body": "…refox-style-system-reviewers\n\nStore a NumericType on CSSNumericValue and use it to expose the CSSNumericType\ndictionary from CSSNumericValue::Type().\n\nThe numeric type is initially empty for all numeric values. A follow-up patch\nwill initialize it when constructing CSSUnitValue.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D305631",
          "is_bot": false,
          "headline": "Bug 2045434 - Add initial CSSNumericValue.type() support. r=emilio,fi…",
          "author_name": "Jan Varga",
          "author_login": "janvarga",
          "committed_at": "2026-06-14T07:44:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d4d2cc00ec53fe9315951cf5ca4e6d54b5eb6e7",
          "body": "…emilio,firefox-style-system-reviewers\n\nAdd the initial infrastructure for Numeric Value Typing and implement the\nalgorithm for creating a type from a string unit.\n\nThis will be used by CSSNumericValue.type() and also allows the CSSUnitValue\nconstructor to validate its unit argument.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D305100",
          "is_bot": false,
          "headline": "Bug 2045434 - Implement creating a NumericType from a unit string. r=…",
          "author_name": "Jan Varga",
          "author_login": "janvarga",
          "committed_at": "2026-06-13T16:17:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 18,
      "commits_last_year": 1063,
      "latest_release_at": "2026-07-01T12:43:26Z",
      "latest_release_tag": "v0.19.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 52,
      "days_since_latest_release": 25,
      "mean_days_between_releases": 19.5
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 25,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "stylo",
          "exists": true,
          "license": "MPL-2.0",
          "keywords": [],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/stylo",
          "is_deprecated": false,
          "latest_version": "0.19.0",
          "repository_url": "https://github.com/servo/stylo",
          "versions_count": 22,
          "total_downloads": 239417,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 46361,
          "first_published_at": "2024-04-29T22:57:24.925088Z",
          "latest_published_at": "2026-07-03T16:30:13.751128Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 23
        },
        {
          "name": "to_shmem",
          "exists": true,
          "license": "MPL-2.0",
          "keywords": [],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/to_shmem",
          "is_deprecated": false,
          "latest_version": "0.5.0",
          "repository_url": "https://github.com/servo/stylo",
          "versions_count": 6,
          "total_downloads": 239123,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 46732,
          "first_published_at": "2023-02-15T08:05:37.470645Z",
          "latest_published_at": "2026-07-03T16:26:05.455090Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 23
        },
        {
          "name": "selectors",
          "exists": true,
          "license": "MPL-2.0",
          "keywords": [
            "css",
            "selectors"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/selectors",
          "is_deprecated": false,
          "latest_version": "0.39.0",
          "repository_url": "https://github.com/servo/stylo",
          "versions_count": 61,
          "total_downloads": 57870974,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 6604021,
          "first_published_at": "2014-12-29T15:42:13.431991Z",
          "latest_published_at": "2026-07-03T16:26:14.622378Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 23
        },
        {
          "name": "servo_arc",
          "exists": true,
          "license": "MIT OR Apache-2.0",
          "keywords": [],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/servo_arc",
          "is_deprecated": false,
          "latest_version": "0.4.3",
          "repository_url": "https://github.com/servo/stylo",
          "versions_count": 7,
          "total_downloads": 55457147,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 6194802,
          "first_published_at": "2018-01-12T23:13:18.094655Z",
          "latest_published_at": "2025-11-12T14:54:32.018040Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 256
        },
        {
          "name": "stylo_dom",
          "exists": true,
          "license": "MPL-2.0",
          "keywords": [
            "css",
            "style"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/stylo_dom",
          "is_deprecated": false,
          "latest_version": "0.19.0",
          "repository_url": "https://github.com/servo/stylo",
          "versions_count": 20,
          "total_downloads": 237169,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 46405,
          "first_published_at": "2024-10-12T13:25:25.286253Z",
          "latest_published_at": "2026-07-03T16:29:08.284433Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 23
        },
        {
          "name": "stylo_atoms",
          "exists": true,
          "license": "MPL-2.0",
          "keywords": [],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/stylo_atoms",
          "is_deprecated": false,
          "latest_version": "0.19.0",
          "repository_url": "https://github.com/servo/stylo",
          "versions_count": 20,
          "total_downloads": 237396,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 46427,
          "first_published_at": "2024-10-12T13:48:28.432740Z",
          "latest_published_at": "2026-07-03T16:28:45.290302Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 23
        },
        {
          "name": "stylo_derive",
          "exists": true,
          "license": "MPL-2.0",
          "keywords": [],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/stylo_derive",
          "is_deprecated": false,
          "latest_version": "0.19.0",
          "repository_url": "https://github.com/servo/stylo",
          "versions_count": 20,
          "total_downloads": 235295,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 45805,
          "first_published_at": "2024-10-12T14:51:41.683793Z",
          "latest_published_at": "2026-07-03T16:29:24.609425Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 23
        },
        {
          "name": "stylo_traits",
          "exists": true,
          "license": "MPL-2.0",
          "keywords": [],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/stylo_traits",
          "is_deprecated": false,
          "latest_version": "0.19.0",
          "repository_url": "https://github.com/servo/stylo",
          "versions_count": 20,
          "total_downloads": 237021,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 46399,
          "first_published_at": "2024-10-12T14:48:41.830394Z",
          "latest_published_at": "2026-07-03T16:29:41.554119Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 23
        }
      ]
    },
    "popularity": {
      "forks": 94,
      "stars": 304,
      "watchers": 9,
      "fork_history": {
        "days": [
          {
            "date": "2024-03-01",
            "count": 1
          },
          {
            "date": "2024-03-10",
            "count": 1
          },
          {
            "date": "2024-03-18",
            "count": 3
          },
          {
            "date": "2024-03-21",
            "count": 1
          },
          {
            "date": "2024-03-26",
            "count": 1
          },
          {
            "date": "2024-05-05",
            "count": 1
          },
          {
            "date": "2024-06-02",
            "count": 1
          },
          {
            "date": "2024-07-17",
            "count": 1
          },
          {
            "date": "2024-08-29",
            "count": 1
          },
          {
            "date": "2024-09-06",
            "count": 1
          },
          {
            "date": "2024-10-05",
            "count": 1
          },
          {
            "date": "2024-10-27",
            "count": 1
          },
          {
            "date": "2024-11-11",
            "count": 1
          },
          {
            "date": "2024-11-20",
            "count": 1
          },
          {
            "date": "2024-12-10",
            "count": 1
          },
          {
            "date": "2024-12-26",
            "count": 1
          },
          {
            "date": "2025-01-10",
            "count": 1
          },
          {
            "date": "2025-01-13",
            "count": 1
          },
          {
            "date": "2025-01-24",
            "count": 2
          },
          {
            "date": "2025-02-02",
            "count": 1
          },
          {
            "date": "2025-02-03",
            "count": 1
          },
          {
            "date": "2025-02-07",
            "count": 1
          },
          {
            "date": "2025-02-10",
            "count": 1
          },
          {
            "date": "2025-02-18",
            "count": 1
          },
          {
            "date": "2025-02-20",
            "count": 1
          },
          {
            "date": "2025-03-01",
            "count": 1
          },
          {
            "date": "2025-03-10",
            "count": 1
          },
          {
            "date": "2025-03-13",
            "count": 2
          },
          {
            "date": "2025-03-20",
            "count": 1
          },
          {
            "date": "2025-03-23",
            "count": 1
          },
          {
            "date": "2025-04-06",
            "count": 1
          },
          {
            "date": "2025-04-11",
            "count": 1
          },
          {
            "date": "2025-04-23",
            "count": 1
          },
          {
            "date": "2025-05-16",
            "count": 1
          },
          {
            "date": "2025-05-25",
            "count": 1
          },
          {
            "date": "2025-07-19",
            "count": 1
          },
          {
            "date": "2025-07-22",
            "count": 1
          },
          {
            "date": "2025-07-31",
            "count": 1
          },
          {
            "date": "2025-09-01",
            "count": 1
          },
          {
            "date": "2025-09-08",
            "count": 1
          },
          {
            "date": "2025-09-11",
            "count": 1
          },
          {
            "date": "2025-09-29",
            "count": 1
          },
          {
            "date": "2025-10-06",
            "count": 1
          },
          {
            "date": "2025-10-20",
            "count": 1
          },
          {
            "date": "2025-10-28",
            "count": 1
          },
          {
            "date": "2025-10-30",
            "count": 1
          },
          {
            "date": "2025-11-13",
            "count": 1
          },
          {
            "date": "2025-11-15",
            "count": 1
          },
          {
            "date": "2025-11-23",
            "count": 2
          },
          {
            "date": "2025-11-26",
            "count": 1
          },
          {
            "date": "2025-12-08",
            "count": 1
          },
          {
            "date": "2025-12-15",
            "count": 1
          },
          {
            "date": "2025-12-20",
            "count": 1
          },
          {
            "date": "2026-01-01",
            "count": 1
          },
          {
            "date": "2026-01-06",
            "count": 1
          },
          {
            "date": "2026-01-14",
            "count": 1
          },
          {
            "date": "2026-01-24",
            "count": 1
          },
          {
            "date": "2026-02-20",
            "count": 1
          },
          {
            "date": "2026-03-03",
            "count": 1
          },
          {
            "date": "2026-03-08",
            "count": 1
          },
          {
            "date": "2026-03-11",
            "count": 1
          },
          {
            "date": "2026-03-15",
            "count": 1
          },
          {
            "date": "2026-03-23",
            "count": 1
          },
          {
            "date": "2026-03-27",
            "count": 1
          },
          {
            "date": "2026-03-31",
            "count": 1
          },
          {
            "date": "2026-04-01",
            "count": 1
          },
          {
            "date": "2026-04-03",
            "count": 1
          },
          {
            "date": "2026-04-04",
            "count": 1
          },
          {
            "date": "2026-04-07",
            "count": 1
          },
          {
            "date": "2026-05-01",
            "count": 1
          },
          {
            "date": "2026-05-03",
            "count": 2
          },
          {
            "date": "2026-05-12",
            "count": 1
          },
          {
            "date": "2026-05-15",
            "count": 1
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-20",
            "count": 1
          },
          {
            "date": "2026-05-26",
            "count": 1
          },
          {
            "date": "2026-06-02",
            "count": 1
          },
          {
            "date": "2026-06-13",
            "count": 2
          },
          {
            "date": "2026-06-18",
            "count": 1
          },
          {
            "date": "2026-06-22",
            "count": 1
          },
          {
            "date": "2026-06-25",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 1
          },
          {
            "date": "2026-07-08",
            "count": 1
          },
          {
            "date": "2026-07-10",
            "count": 1
          },
          {
            "date": "2026-07-19",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 92,
        "total_forks": 94
      },
      "star_history": null,
      "open_issues_and_prs": 46
    },
    "ai_readiness": {
      "has_nix": true,
      "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": [
        "Cargo.toml",
        "malloc_size_of/Cargo.toml",
        "selectors/Cargo.toml",
        "servo_arc/Cargo.toml",
        "style/Cargo.toml",
        "style_derive/Cargo.toml",
        "style_traits/Cargo.toml",
        "stylo_atoms/Cargo.toml",
        "stylo_dom/Cargo.toml",
        "stylo_static_prefs/Cargo.toml",
        "to_shmem/Cargo.toml",
        "to_shmem_derive/Cargo.toml"
      ],
      "largest_source_bytes": 187207,
      "source_files_sampled": 347,
      "oversized_source_files": 18,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "Cargo.toml",
        "malloc_size_of/Cargo.toml",
        "selectors/Cargo.toml",
        "servo_arc/Cargo.toml",
        "style/Cargo.toml",
        "style_derive/Cargo.toml",
        "style_traits/Cargo.toml",
        "stylo_atoms/Cargo.toml",
        "stylo_dom/Cargo.toml",
        "stylo_static_prefs/Cargo.toml",
        "to_shmem/Cargo.toml",
        "to_shmem_derive/Cargo.toml"
      ],
      "advisories": {
        "error": "No resolved dependencies carried a version and a supported ecosystem",
        "scope": "repository_graph",
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 52,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "crates"
      ],
      "dependencies": [
        {
          "name": "app_units",
          "manifest": "malloc_size_of/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.7"
        },
        {
          "name": "cssparser",
          "manifest": "malloc_size_of/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.37"
        },
        {
          "name": "euclid",
          "manifest": "malloc_size_of/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.22"
        },
        {
          "name": "selectors",
          "manifest": "malloc_size_of/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "servo_arc",
          "manifest": "malloc_size_of/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "smallbitvec",
          "manifest": "malloc_size_of/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.3.0"
        },
        {
          "name": "smallvec",
          "manifest": "malloc_size_of/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.13"
        },
        {
          "name": "string_cache",
          "manifest": "malloc_size_of/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.9"
        },
        {
          "name": "thin-vec",
          "manifest": "malloc_size_of/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2.13"
        },
        {
          "name": "void",
          "manifest": "malloc_size_of/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0.2"
        },
        {
          "name": "bitflags",
          "manifest": "selectors/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "cssparser",
          "manifest": "selectors/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.37"
        },
        {
          "name": "derive_more",
          "manifest": "selectors/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "rustc-hash",
          "manifest": "selectors/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.1.1"
        },
        {
          "name": "log",
          "manifest": "selectors/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "phf",
          "manifest": "selectors/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.13"
        },
        {
          "name": "precomputed-hash",
          "manifest": "selectors/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "servo_arc",
          "manifest": "selectors/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "smallvec",
          "manifest": "selectors/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "to_shmem",
          "manifest": "selectors/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "to_shmem_derive",
          "manifest": "selectors/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "new_debug_unreachable",
          "manifest": "selectors/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde",
          "manifest": "servo_arc/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "stable_deref_trait",
          "manifest": "servo_arc/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0.0"
        },
        {
          "name": "app_units",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.7.8"
        },
        {
          "name": "arrayvec",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.7"
        },
        {
          "name": "atomic_refcell",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "bitflags",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "byteorder",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "cssparser",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.37"
        },
        {
          "name": "derive_more",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "dom",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "new_debug_unreachable",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "encoding_rs",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.8"
        },
        {
          "name": "euclid",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.22"
        },
        {
          "name": "rustc-hash",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.1.1"
        },
        {
          "name": "icu_segmenter",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": ">= 1.5, <= 2.*"
        },
        {
          "name": "indexmap",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "itertools",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.14"
        },
        {
          "name": "itoa",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "log",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "malloc_size_of",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "malloc_size_of_derive",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "web_atoms",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2.0"
        },
        {
          "name": "mime",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3.13"
        },
        {
          "name": "num_cpus",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.1.0"
        },
        {
          "name": "num-integer",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "num-traits",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2"
        },
        {
          "name": "num-derive",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "parking_lot",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.12"
        },
        {
          "name": "precomputed-hash",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.1"
        },
        {
          "name": "rayon",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "rayon-core",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "selectors",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "servo_arc",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "stylo_atoms",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "smallbitvec",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.3.0"
        },
        {
          "name": "smallvec",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "static_assertions",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.1"
        },
        {
          "name": "static_prefs",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "string_cache",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.9"
        },
        {
          "name": "strum",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.28"
        },
        {
          "name": "strum_macros",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.28"
        },
        {
          "name": "style_derive",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "style_traits",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "to_shmem",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "to_shmem_derive",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "thin-vec",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2.1"
        },
        {
          "name": "uluru",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "3.0"
        },
        {
          "name": "void",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0.2"
        },
        {
          "name": "url",
          "manifest": "style/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.5"
        },
        {
          "name": "darling",
          "manifest": "style_derive/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.20"
        },
        {
          "name": "proc-macro2",
          "manifest": "style_derive/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "quote",
          "manifest": "style_derive/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "syn",
          "manifest": "style_derive/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "synstructure",
          "manifest": "style_derive/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.13"
        },
        {
          "name": "app_units",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.7"
        },
        {
          "name": "bitflags",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "cssparser",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.37"
        },
        {
          "name": "euclid",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.22"
        },
        {
          "name": "malloc_size_of",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "malloc_size_of_derive",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "selectors",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "serde",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "servo_arc",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "stylo_atoms",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "thin-vec",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2"
        },
        {
          "name": "to_shmem",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "to_shmem_derive",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "url",
          "manifest": "style_traits/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.5"
        },
        {
          "name": "string_cache",
          "manifest": "stylo_atoms/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.9"
        },
        {
          "name": "bitflags",
          "manifest": "stylo_dom/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "malloc_size_of",
          "manifest": "stylo_dom/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "cssparser",
          "manifest": "to_shmem/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.37"
        },
        {
          "name": "servo_arc",
          "manifest": "to_shmem/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "smallbitvec",
          "manifest": "to_shmem/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.3.0"
        },
        {
          "name": "smallvec",
          "manifest": "to_shmem/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.13"
        },
        {
          "name": "string_cache",
          "manifest": "to_shmem/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.9"
        },
        {
          "name": "thin-vec",
          "manifest": "to_shmem/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2.1"
        },
        {
          "name": "darling",
          "manifest": "to_shmem_derive/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.20"
        },
        {
          "name": "proc-macro2",
          "manifest": "to_shmem_derive/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "quote",
          "manifest": "to_shmem_derive/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "syn",
          "manifest": "to_shmem_derive/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "synstructure",
          "manifest": "to_shmem_derive/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.13"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "app_units",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "arrayvec",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "atomic_refcell",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "bitflags",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "byteorder",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "cssparser",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "darling",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "derive_more",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "encoding_rs",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "euclid",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "icu_segmenter",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "indexmap",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "itertools",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "itoa",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "log",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "malloc_size_of_derive",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "mime",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "new_debug_unreachable",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "num-derive",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "num-integer",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "num-traits",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "num_cpus",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "parking_lot",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "phf",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "precomputed-hash",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "rayon",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "rayon-core",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "rustc-hash",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "serde",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "smallbitvec",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "smallvec",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "stable_deref_trait",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "static_assertions",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "string_cache",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "strum",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "strum_macros",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "synstructure",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "thin-vec",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "uluru",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "url",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "void",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "web_atoms",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "bindgen",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "mozbuild",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "phf_codegen",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "regex",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "string_cache_codegen",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "toml",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "walkdir",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 52,
        "direct_count": 45,
        "indirect_count": 7
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 17,
        "merged_prs": 276,
        "open_issues": 29,
        "closed_ratio": 0.655,
        "closed_issues": 55,
        "closed_unmerged_prs": 52
      },
      "bus_factor": 8,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "emilio",
          "commits": 2714,
          "avatar_url": "https://avatars.githubusercontent.com/u/1323194?v=4"
        },
        {
          "type": "User",
          "login": "Ms2ger",
          "commits": 724,
          "avatar_url": "https://avatars.githubusercontent.com/u/111161?v=4"
        },
        {
          "type": "User",
          "login": "nox",
          "commits": 476,
          "avatar_url": "https://avatars.githubusercontent.com/u/123095?v=4"
        },
        {
          "type": "User",
          "login": "pcwalton",
          "commits": 324,
          "avatar_url": "https://avatars.githubusercontent.com/u/157897?v=4"
        },
        {
          "type": "User",
          "login": "gw3583",
          "commits": 305,
          "avatar_url": "https://avatars.githubusercontent.com/u/39062770?v=4"
        },
        {
          "type": "User",
          "login": "BorisChiou",
          "commits": 281,
          "avatar_url": "https://avatars.githubusercontent.com/u/1914903?v=4"
        },
        {
          "type": "User",
          "login": "SimonSapin",
          "commits": 265,
          "avatar_url": "https://avatars.githubusercontent.com/u/291359?v=4"
        },
        {
          "type": "User",
          "login": "upsuper",
          "commits": 255,
          "avatar_url": "https://avatars.githubusercontent.com/u/333750?v=4"
        },
        {
          "type": "User",
          "login": "Manishearth",
          "commits": 251,
          "avatar_url": "https://avatars.githubusercontent.com/u/1617736?v=4"
        },
        {
          "type": "User",
          "login": "dshin-moz",
          "commits": 249,
          "avatar_url": "https://avatars.githubusercontent.com/u/102040459?v=4"
        }
      ],
      "contributors_sampled": 100,
      "top_contributor_share": 0.264
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": false,
      "ci_workflows": [
        "main.yml",
        "mirror-to-release-branch.yml",
        "sync-upstream.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 8,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "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": 6,
            "reason": "Found 18/30 approved changesets -- score normalized to 6",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 46 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": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 0,
            "reason": "license file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 17 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": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "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": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "2d289c14fdf46952d52cabce63b1f0dc55b2ccde",
        "ran_at": "2026-07-26T16:37:42Z",
        "aggregate_score": 4.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-26T13:44:54Z",
      "oldest_open_prs": [
        {
          "number": 213,
          "created_at": "2025-07-03T04:18:46Z",
          "last_comment_at": "2025-07-03T09:15:10Z",
          "last_comment_author": "yezhizhen"
        },
        {
          "number": 224,
          "created_at": "2025-08-05T14:28:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 225,
          "created_at": "2025-08-07T13:10:07Z",
          "last_comment_at": "2025-10-10T15:57:23Z",
          "last_comment_author": "nicoburns"
        },
        {
          "number": 241,
          "created_at": "2025-09-14T00:43:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 253,
          "created_at": "2025-10-10T15:45:49Z",
          "last_comment_at": "2025-10-10T18:19:49Z",
          "last_comment_author": "Loirooriol"
        },
        {
          "number": 270,
          "created_at": "2025-11-18T08:52:16Z",
          "last_comment_at": "2025-11-26T12:38:40Z",
          "last_comment_author": "RichardTjokroutomo"
        },
        {
          "number": 276,
          "created_at": "2025-12-03T02:54:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 288,
          "created_at": "2026-01-19T14:31:30Z",
          "last_comment_at": "2026-06-16T15:35:28Z",
          "last_comment_author": "lukewarlow"
        },
        {
          "number": 290,
          "created_at": "2026-01-23T02:03:15Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 296,
          "created_at": "2026-01-27T13:13:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 351,
          "created_at": "2026-04-10T07:35:49Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 363,
          "created_at": "2026-05-13T07:43:05Z",
          "last_comment_at": "2026-05-13T12:58:59Z",
          "last_comment_author": "nicoburns"
        },
        {
          "number": 396,
          "created_at": "2026-06-16T13:52:24Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 405,
          "created_at": "2026-06-28T19:16:43Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 411,
          "created_at": "2026-07-02T13:52:34Z",
          "last_comment_at": "2026-07-02T14:55:45Z",
          "last_comment_author": "Loirooriol"
        },
        {
          "number": 412,
          "created_at": "2026-07-02T13:57:57Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 430,
          "created_at": "2026-07-22T23:03:55Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-23T20:50:06Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 206,
          "created_at": "2017-03-03T03:59:40Z",
          "last_comment_at": "2017-06-27T12:09:59Z",
          "last_comment_author": "nox"
        },
        {
          "number": 204,
          "created_at": "2017-05-20T12:12:05Z",
          "last_comment_at": "2017-05-20T12:12:06Z",
          "last_comment_author": "highfive"
        },
        {
          "number": 205,
          "created_at": "2017-08-26T12:48:37Z",
          "last_comment_at": "2017-08-28T22:50:24Z",
          "last_comment_author": "nox"
        },
        {
          "number": 210,
          "created_at": "2020-04-30T00:00:58Z",
          "last_comment_at": "2025-06-30T07:30:56Z",
          "last_comment_author": "nicoburns"
        },
        {
          "number": 299,
          "created_at": "2024-01-13T16:03:27Z",
          "last_comment_at": "2026-05-12T08:00:16Z",
          "last_comment_author": "yilin0518"
        },
        {
          "number": 5,
          "created_at": "2024-02-28T04:18:20Z",
          "last_comment_at": "2024-03-14T15:03:33Z",
          "last_comment_author": "mrobinson"
        },
        {
          "number": 17,
          "created_at": "2024-03-08T00:20:01Z",
          "last_comment_at": "2024-05-25T11:50:05Z",
          "last_comment_author": "mrobinson"
        },
        {
          "number": 30,
          "created_at": "2024-04-11T03:28:07Z",
          "last_comment_at": "2024-04-11T08:54:54Z",
          "last_comment_author": "nicoburns"
        },
        {
          "number": 101,
          "created_at": "2024-12-22T00:55:33Z",
          "last_comment_at": "2026-07-13T00:13:48Z",
          "last_comment_author": "nicoburns"
        },
        {
          "number": 118,
          "created_at": "2025-02-04T12:40:05Z",
          "last_comment_at": "2025-02-08T07:41:58Z",
          "last_comment_author": "Loirooriol"
        },
        {
          "number": 132,
          "created_at": "2025-03-09T23:49:41Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 176,
          "created_at": "2025-05-03T10:31:34Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 177,
          "created_at": "2025-05-03T10:33:45Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 234,
          "created_at": "2025-08-20T14:14:44Z",
          "last_comment_at": "2025-08-20T14:29:00Z",
          "last_comment_author": "nicoburns"
        },
        {
          "number": 235,
          "created_at": "2025-08-20T14:17:02Z",
          "last_comment_at": "2025-08-20T14:20:47Z",
          "last_comment_author": "mrobinson"
        },
        {
          "number": 240,
          "created_at": "2025-09-13T23:24:56Z",
          "last_comment_at": "2025-09-16T19:52:27Z",
          "last_comment_author": "nicoburns"
        },
        {
          "number": 308,
          "created_at": "2026-02-09T15:56:31Z",
          "last_comment_at": "2026-02-09T19:27:10Z",
          "last_comment_author": "jdm"
        },
        {
          "number": 315,
          "created_at": "2026-02-21T19:19:38Z",
          "last_comment_at": "2026-02-24T23:41:29Z",
          "last_comment_author": "Loirooriol"
        },
        {
          "number": 317,
          "created_at": "2026-03-02T23:49:17Z",
          "last_comment_at": "2026-03-16T22:31:53Z",
          "last_comment_author": "Conan-Kudo"
        },
        {
          "number": 318,
          "created_at": "2026-03-03T18:55:22Z",
          "last_comment_at": "2026-07-18T05:46:50Z",
          "last_comment_author": "mrobinson"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/servo/stylo",
    "host": "github.com",
    "name": "stylo",
    "owner": "servo"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 70,
      "inputs": {
        "security": 48,
        "vitality": 100,
        "community": 59,
        "governance": 85,
        "engineering": 46
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 100,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "commits_last_year": 1063,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 52
            },
            "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": "52/52 weeks with commits",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 52
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "1063 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 1063
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 17 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": 100,
            "inputs": {
              "releases_count": 18,
              "latest_release_tag": "v0.19.0",
              "releases_from_tags": false,
              "days_since_latest_release": 25,
              "mean_days_between_releases": 19.5
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "18 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 18
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 25 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 25
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~19.5 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 19.5
                    }
                  }
                ],
                "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": 2,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 2 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 59,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "forks": 94,
              "stars": 304,
              "watchers": 9,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "304 stars",
                "points": 40.3,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 304
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "94 forks",
                "points": 16.4,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 94
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "9 watchers",
                "points": 5,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "critical",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "excellent",
            "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": 100,
            "inputs": {
              "packages": [
                "stylo",
                "to_shmem",
                "selectors",
                "servo_arc",
                "stylo_dom",
                "stylo_atoms",
                "stylo_derive",
                "stylo_traits"
              ],
              "dependents": null,
              "ecosystems": "crates",
              "total_downloads": 114753542,
              "monthly_downloads": 13076952
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "13,076,952 downloads/month across crates",
                "points": 80,
                "status": "met",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 13076952,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "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": "excellent",
        "name": "Sustainability & Governance",
        "value": 85,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "excellent",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 94,
            "inputs": {
              "bus_factor": 8,
              "contributors_sampled": 100,
              "top_contributor_share": 0.264
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "8 contributor(s) cover half of all commits",
                "points": 54,
                "status": "met",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 26% of commits",
                "points": 16.6,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 26
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "100 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 46 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "merged_prs": 276,
              "open_issues": 29,
              "closed_issues": 55,
              "issue_closed_ratio": 0.655,
              "closed_unmerged_prs": 52
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "66% of issues closed",
                "points": 30.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 66
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "276/328 decided PRs merged",
                "points": 32.2,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 276,
                      "decided": 328
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 18/30 approved changesets -- score normalized to 6",
                "points": 9,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "followers": 1251,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "servo",
              "public_repos": 193,
              "account_age_days": 5031
            },
            "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": "1,251 followers of servo",
                "points": 22.3,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1251,
                      "login": "servo"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "193 public repos, account ~13 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 193
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "stylo",
                "to_shmem",
                "selectors",
                "servo_arc",
                "stylo_dom",
                "stylo_atoms",
                "stylo_derive",
                "stylo_traits"
              ],
              "ecosystems": "crates",
              "any_deprecated": false,
              "min_days_since_publish": 23
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "8 package(s) on crates",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 8,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 23 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 23
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "61 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 61
                    }
                  }
                ],
                "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": "at_risk",
        "name": "Engineering Quality",
        "value": 46,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 44,
            "inputs": {
              "has_ci": true,
              "has_tests": false,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": 50,
            "inputs": {
              "topics": [],
              "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "at_risk",
        "name": "Security",
        "value": 48,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 48,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 4.8
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 18/30 approved changesets -- score normalized to 6",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 46 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": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 17 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 not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "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": 16
            },
            "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": "at_risk",
        "name": "AI Readiness",
        "value": 47,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.87,
              "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": "87 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 87,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 34,
            "inputs": {
              "has_nix": true,
              "has_tests": false,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "Cargo.toml",
                "malloc_size_of/Cargo.toml",
                "selectors/Cargo.toml",
                "servo_arc/Cargo.toml",
                "style/Cargo.toml",
                "style_derive/Cargo.toml",
                "style_traits/Cargo.toml",
                "stylo_atoms/Cargo.toml",
                "stylo_dom/Cargo.toml",
                "stylo_static_prefs/Cargo.toml",
                "to_shmem/Cargo.toml",
                "to_shmem_derive/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Cargo.toml, malloc_size_of/Cargo.toml, selectors/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "Cargo.toml, malloc_size_of/Cargo.toml, selectors/Cargo.toml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Rust (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Nix",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Nix"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 97,
            "inputs": {
              "primary_language": "Rust",
              "largest_source_bytes": 187207,
              "source_files_sampled": 347,
              "oversized_source_files": 18
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Rust (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "18/347 source files over 60KB",
                "points": 52.1,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 347,
                      "oversized": 18
                    }
                  }
                ],
                "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",
    "No resolved dependencies carried a version and a supported ecosystem"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T16:38:04.371643Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/servo/stylo.svg",
  "full_name": "servo/stylo",
  "license_state": "absent",
  "license_spdx": null
}

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

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

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