公开记录
软件健康报告模式 0.27.0 · 指标 2.5.0 · 2026-08-01 14:58 UTC

kdave / xfstests

(x)fstests is a filesystem testing suite (mirror of kernel.org repository, synced daily)

Shell · C自定义许可证★ 163 星标⑂ 89 复刻始于 2013年3月在 GitHub 上查看 ↗

kdave/xfstests 的健康指数为 100 分中的 60 分,处于「中等」区间。 其得分最高的类别是Vitality(87/100),最低的是Security(41/100)。 最近一次更新在 11 天前。 近期的大部分工作由 7 位贡献者完成。

60
总分 / 100
中等

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均,再依据公开记录的分布进行校准,使各等级具有百分位含义;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 34(存在风险)的上限。

60
卓越93-100公开记录中的最高层级(约前 5%);基本满足所有检验标准
优秀80-92各方面均表现强劲;仅有少量不足
良好65-79健康;不足之处有限且可控
中等50-64可接受,但存在明显不足;建议进行审查
薄弱35-49多个领域存在实质性薄弱环节
存在风险20-34存在重大薄弱环节;采用时应保持审慎
危急1-19问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

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

加权总体分 57 经校准后在公布的指数量表上为 60(记录校准 2026-08-02)。

所有权

kdave个人账户
139 关注者44 个公开仓库始于 2012年5月SUSE

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

按类别列示的指标

活力

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

87优秀 · 占总体的 21%
评分方式
28.8/36推送新近度 — 最近一次推送于 11 天前
30.5/36提交节奏 — 52 周中有 44 周有提交
18/18提交量 — 最近一年 255 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year255
human_commit_share1
days_since_last_push11
active_weeks_last_year44

发布纪律

88优秀
评分方式
16.2/27有发布版本 — 100 个版本标签(无 GitHub 发布版本)
36/36发布时效 — 最近一次发布版本于 77 天前
27/27发布节奏 — 约每 23.2 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count100
latest_release_tagv2026.05.17
releases_from_tags
days_since_latest_release77
mean_days_between_releases23.2
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

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

50中等 · 占总体的 17%
评分方式
35.8/60星标 — 163 个星标
16.2/25复刻 — 89 个复刻
3.9/15关注者 — 6 位关注者
所用输入
forks89
stars163
watchers6
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

44薄弱
评分方式
22.5/22.5README
16.9/22.5许可证 — 存在许可证文件,但不是可识别的许可证
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
readme_badges
has_contributing
has_issue_template
has_code_of_conduct
readme_badge_services
has_pull_request_template

可持续性与治理

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

55中等 · 占总体的 23%
评分方式
51.3/54巴士系数 — 7 位贡献者贡献了半数提交
19.6/22.5提交分布 — 头号贡献者编写了 13% 的提交
13.5/13.5贡献者广度 — 100 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 23 contributing companies or organizations
所用输入
bus_factor7
contributors_sampled100
top_contributor_share0.128
评分方式
0/42议题解决 — 没有议题或无数据
0/30PR 接受 — 已裁定的 PR 中 0/4 已合并
0/13Newcomer PR acceptance — 30 天内没有首次贡献者的 PR 得到裁决
0/15OpenSSF Scorecard:Code-Review — Found 0/30 approved changesets -- score normalized to 0
所用输入
merged_prs0
open_issues0
closed_issues0
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio
closed_unmerged_prs4
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
已排除计分(无数据或不适用):议题解决, newcomer_pr_acceptance。 其余权重已重新归一化。
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
15.4/25所有者影响力 — kdave 有 139 位关注者
24/25既往记录 — 44 个公开仓库,账户约 14 年
所用输入
followers139
owner_typeUser
is_verified
owner_loginkdave
public_repos44
account_age_days5,195
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。

工程质量

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

48薄弱 · 占总体的 19%

工程实践

30存在风险
评分方式
0/24CI 工作流
24/24存在测试
0/16Linter 配置
0/9.6Pre-commit 钩子
0/6.4.editorconfig
0/20OpenSSF Scorecard:CI-Tests — 无数据
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config
已排除计分(无数据或不适用):OpenSSF Scorecard:CI-Tests。 其余权重已重新归一化。

文档

75良好
评分方式
30/30README
25/25文档目录
0/15文档 / 主页站点
10/10仓库描述
10/10主题标签 — 3 个主题标签
0/10Wiki
所用输入
topicsfilesystems, linux, testing
has_wiki
homepage
has_readme
has_docs_dir
has_description

安全

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

41薄弱 · 占总体的 16%

安全态势

41薄弱
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 无数据
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 23 contributing companies or organizations
0/10Dangerous-Workflow — 无数据
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — 无数据
0/5Pinned-Dependencies — 无数据
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — 无数据
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate4.1
已排除计分(无数据或不适用):ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions。 其余权重已重新归一化。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?权重刻意设小(4%):代理工具链是一项真实的维护信号,但完全不具备的仓库仍可达到 100/100。

44薄弱 · 占总体的 4%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 100 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share1
agent_instruction_files
agent_instruction_max_bytes
评分方式
18/18一条命令的引导启动 — Makefile, build/Makefile, build/rpm/Makefile, build/tar/Makefile, common/Makefile, include/Makefile, lib/Makefile, ltp/Makefile, m4/Makefile, src/Makefile, src/aio-dio-regress/Makefile, src/log-writes/Makefile, src/perf/Makefile, src/vfs/Makefile, tests/Makefile, tests/btrfs/Makefile, tests/ceph/Makefile, tests/cifs/Makefile, tests/ext4/Makefile, tests/f2fs/Makefile, tests/generic/Makefile, tests/nfs/Makefile, tests/ocfs2/Makefile, tests/overlay/Makefile, tests/perf/Makefile, tests/selftest/Makefile, tests/tmpfs/Makefile, tests/udf/Makefile, tests/xfs/Makefile, tools/Makefile
22/22自动化测试
0/11Lint / 格式化配置
0/11静态类型检查
0/10可复现环境
0/10已体现的代理实践 — 最近 100 次提交中没有代理编写的提交
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — 无数据
所用输入
has_nix
has_tests
lockfiles
has_dockerfile
typed_language
bootstrap_filesMakefile, build/Makefile, build/rpm/Makefile, build/tar/Makefile, common/Makefile, include/Makefile, lib/Makefile, ltp/Makefile, m4/Makefile, src/Makefile, src/aio-dio-regress/Makefile, src/log-writes/Makefile, src/perf/Makefile, src/vfs/Makefile, tests/Makefile, tests/btrfs/Makefile, tests/ceph/Makefile, tests/cifs/Makefile, tests/ext4/Makefile, tests/f2fs/Makefile, tests/generic/Makefile, tests/nfs/Makefile, tests/ocfs2/Makefile, tests/overlay/Makefile, tests/perf/Makefile, tests/selftest/Makefile, tests/tmpfs/Makefile, tests/udf/Makefile, tests/xfs/Makefile, tools/Makefile
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
已排除计分(无数据或不适用):OpenSSF Scorecard:Pinned-Dependencies。 其余权重已重新归一化。
评分方式
0/45可类型检查的代码 — Shell,未配置类型检查
52.8/55可控的文件大小 — 采样的 220 个源文件中有 9 个超过 60KB
所用输入
primary_languageShell
largest_source_bytes240,065
source_files_sampled220
oversized_source_files9

关键数据

163GitHub 星标
100贡献者
255最近 12 个月提交数
11距最近推送天数
100发布版本数
7巴士系数(bus factor)
0开放议题
软件包生态系统数

数据采集警告

  • 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 ★ / 89 ⇿
0Star
89Fork
100发布

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

0204060801008642015-032020-112026-07
主版本 0次版本 0修订 100

每个点涵盖 11 天。

OpenSSF Scorecard 4.1 / 10
4.1综合

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

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
不适用CI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
10Contributorsproject has 23 contributing companies or organizations
不适用Dangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
不适用Packagingpackaging workflow not detected
不适用Pinned-Dependenciesno dependencies found
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
不适用Token-PermissionsNo tokens found
10Vulnerabilities0 existing vulnerabilities detected
全部依赖 6

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

注册表软件包版本关系
PyPI-require-dm-target间接
PyPI-require-exportfs间接
PyPI-require-fio-results间接
PyPI-require-log-writes间接
PyPI-require-statx间接
PyPI-require-test间接
依赖安全公告 未评估

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

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "filesystems",
        "linux",
        "testing"
      ],
      "is_fork": false,
      "size_kb": 16405,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "C": 1926318,
        "M4": 22316,
        "Awk": 2969,
        "Perl": 85071,
        "Shell": 4657590,
        "Python": 20166,
        "Makefile": 24835
      },
      "pushed_at": "2026-07-21T11:15:18Z",
      "created_at": "2013-03-11T23:05:35Z",
      "owner_type": "User",
      "updated_at": "2026-07-23T09:46:45Z",
      "description": "(x)fstests is a filesystem testing suite (mirror of kernel.org repository, synced daily)",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "master",
      "license_spdx_raw": null,
      "primary_language": "Shell",
      "significant_languages": [
        "Shell",
        "C"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "User",
      "login": "kdave",
      "company": "SUSE",
      "location": null,
      "followers": 139,
      "avatar_url": "https://avatars.githubusercontent.com/u/1729844?v=4",
      "created_at": "2012-05-11T11:21:42Z",
      "is_verified": null,
      "public_repos": 44,
      "account_age_days": 5195
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v2026.05.17",
          "kind": "patch",
          "published_at": "2026-05-15T16:20:23Z"
        },
        {
          "tag": "v2026.04.20",
          "kind": "patch",
          "published_at": "2026-04-16T18:19:30Z"
        },
        {
          "tag": "v2026.03.20",
          "kind": "patch",
          "published_at": "2026-03-17T03:31:44Z"
        },
        {
          "tag": "v2026.02.26",
          "kind": "patch",
          "published_at": "2026-02-21T16:28:09Z"
        },
        {
          "tag": "v2026.01.27",
          "kind": "patch",
          "published_at": "2026-01-25T16:06:09Z"
        },
        {
          "tag": "v2026.01.05",
          "kind": "patch",
          "published_at": "2026-01-01T13:14:26Z"
        },
        {
          "tag": "v2025.12.09",
          "kind": "patch",
          "published_at": "2025-12-05T17:41:49Z"
        },
        {
          "tag": "v2025.11.18",
          "kind": "patch",
          "published_at": "2025-11-15T08:28:16Z"
        },
        {
          "tag": "v2025.11.04",
          "kind": "patch",
          "published_at": "2025-11-01T14:41:41Z"
        },
        {
          "tag": "v2025.10.20",
          "kind": "patch",
          "published_at": "2025-10-18T15:08:14Z"
        },
        {
          "tag": "v2025.10.05",
          "kind": "patch",
          "published_at": "2025-10-05T15:50:49Z"
        },
        {
          "tag": "v2025.09.07",
          "kind": "patch",
          "published_at": "2025-09-05T15:54:31Z"
        },
        {
          "tag": "v2025.08.17",
          "kind": "patch",
          "published_at": "2025-08-17T08:44:05Z"
        },
        {
          "tag": "v2025.08.04",
          "kind": "patch",
          "published_at": "2025-08-02T14:15:17Z"
        },
        {
          "tag": "v2025.07.13",
          "kind": "patch",
          "published_at": "2025-07-12T08:55:07Z"
        },
        {
          "tag": "v2025.06.22",
          "kind": "patch",
          "published_at": "2025-06-20T16:46:47Z"
        },
        {
          "tag": "v2025.06.08",
          "kind": "patch",
          "published_at": "2025-06-08T13:48:09Z"
        },
        {
          "tag": "v2025.05.25",
          "kind": "patch",
          "published_at": "2025-05-25T11:56:12Z"
        },
        {
          "tag": "v2025.05.11",
          "kind": "patch",
          "published_at": "2025-05-11T14:30:30Z"
        },
        {
          "tag": "v2025.04.27",
          "kind": "patch",
          "published_at": "2025-04-26T12:53:52Z"
        },
        {
          "tag": "v2025.04.13",
          "kind": "patch",
          "published_at": "2025-04-11T04:25:08Z"
        },
        {
          "tag": "v2025.03.30",
          "kind": "patch",
          "published_at": "2025-03-28T01:23:59Z"
        },
        {
          "tag": "v2025.03.17",
          "kind": "patch",
          "published_at": "2025-03-16T16:43:12Z"
        },
        {
          "tag": "v2025.03.09",
          "kind": "patch",
          "published_at": "2025-03-06T13:52:18Z"
        },
        {
          "tag": "v2025.02.23",
          "kind": "patch",
          "published_at": "2025-02-21T15:51:20Z"
        },
        {
          "tag": "v2025.02.16",
          "kind": "patch",
          "published_at": "2025-02-14T19:22:31Z"
        },
        {
          "tag": "v2025.02.02",
          "kind": "patch",
          "published_at": "2025-02-02T13:28:37Z"
        },
        {
          "tag": "v2025.01.12",
          "kind": "patch",
          "published_at": "2025-01-12T04:20:18Z"
        },
        {
          "tag": "v2024.12.22",
          "kind": "patch",
          "published_at": "2024-12-22T14:22:55Z"
        },
        {
          "tag": "v2024.12.08",
          "kind": "patch",
          "published_at": "2024-12-08T14:19:43Z"
        },
        {
          "tag": "v2024.12.01",
          "kind": "patch",
          "published_at": "2024-11-29T03:20:18Z"
        },
        {
          "tag": "v2024.11.17",
          "kind": "patch",
          "published_at": "2024-11-15T14:07:41Z"
        },
        {
          "tag": "v2024.10.28",
          "kind": "patch",
          "published_at": "2024-10-26T14:28:38Z"
        },
        {
          "tag": "v2024.10.14",
          "kind": "patch",
          "published_at": "2024-10-12T14:06:46Z"
        },
        {
          "tag": "v2024.09.29",
          "kind": "patch",
          "published_at": "2024-09-29T13:08:52Z"
        },
        {
          "tag": "v2024.09.08",
          "kind": "patch",
          "published_at": "2024-09-08T05:19:28Z"
        },
        {
          "tag": "v2024.08.25",
          "kind": "patch",
          "published_at": "2024-08-23T20:32:02Z"
        },
        {
          "tag": "v2024.08.11",
          "kind": "patch",
          "published_at": "2024-08-08T09:34:39Z"
        },
        {
          "tag": "v2024.07.28",
          "kind": "patch",
          "published_at": "2024-07-26T18:06:42Z"
        },
        {
          "tag": "v2024.07.14",
          "kind": "patch",
          "published_at": "2024-07-12T19:05:35Z"
        },
        {
          "tag": "v2024.06.27",
          "kind": "patch",
          "published_at": "2024-06-23T15:04:36Z"
        },
        {
          "tag": "v2024.06.09",
          "kind": "patch",
          "published_at": "2024-06-07T10:21:42Z"
        },
        {
          "tag": "v2024.05.26",
          "kind": "patch",
          "published_at": "2024-05-25T05:57:33Z"
        },
        {
          "tag": "v2024.05.12",
          "kind": "patch",
          "published_at": "2024-05-12T12:28:48Z"
        },
        {
          "tag": "v2024.04.28",
          "kind": "patch",
          "published_at": "2024-04-28T11:08:22Z"
        },
        {
          "tag": "v2024.04.14",
          "kind": "patch",
          "published_at": "2024-04-10T19:25:01Z"
        },
        {
          "tag": "v2024.03.31",
          "kind": "patch",
          "published_at": "2024-03-30T07:48:12Z"
        },
        {
          "tag": "v2024.03.17",
          "kind": "patch",
          "published_at": "2024-03-13T15:56:38Z"
        },
        {
          "tag": "v2024.03.03",
          "kind": "patch",
          "published_at": "2024-03-01T11:24:16Z"
        },
        {
          "tag": "v2024.02.09",
          "kind": "patch",
          "published_at": "2024-02-09T05:27:17Z"
        },
        {
          "tag": "v2024.01.14",
          "kind": "patch",
          "published_at": "2024-01-14T13:08:53Z"
        },
        {
          "tag": "v2023.12.25",
          "kind": "patch",
          "published_at": "2023-12-23T19:14:21Z"
        },
        {
          "tag": "v2023.12.10",
          "kind": "patch",
          "published_at": "2023-12-10T13:38:00Z"
        },
        {
          "tag": "v2023.11.19",
          "kind": "patch",
          "published_at": "2023-11-17T14:40:43Z"
        },
        {
          "tag": "v2023.10.29",
          "kind": "patch",
          "published_at": "2023-10-27T12:19:19Z"
        },
        {
          "tag": "v2023.10.08",
          "kind": "patch",
          "published_at": "2023-10-05T15:02:21Z"
        },
        {
          "tag": "v2023.09.24",
          "kind": "patch",
          "published_at": "2023-09-23T14:13:11Z"
        },
        {
          "tag": "v2023.09.03",
          "kind": "patch",
          "published_at": "2023-09-02T05:54:38Z"
        },
        {
          "tag": "v2023.08.27",
          "kind": "patch",
          "published_at": "2023-08-25T14:38:32Z"
        },
        {
          "tag": "v2023.08.06",
          "kind": "patch",
          "published_at": "2023-08-05T13:53:09Z"
        },
        {
          "tag": "v2023.07.23",
          "kind": "patch",
          "published_at": "2023-07-23T04:56:47Z"
        },
        {
          "tag": "v2023.07.09",
          "kind": "patch",
          "published_at": "2023-07-09T12:51:17Z"
        },
        {
          "tag": "v2023.06.18",
          "kind": "patch",
          "published_at": "2023-06-18T13:08:32Z"
        },
        {
          "tag": "v2023.05.28",
          "kind": "patch",
          "published_at": "2023-05-27T18:14:03Z"
        },
        {
          "tag": "v2023.05.14",
          "kind": "patch",
          "published_at": "2023-05-14T13:52:33Z"
        },
        {
          "tag": "v2023.05.01",
          "kind": "patch",
          "published_at": "2023-04-30T16:05:02Z"
        },
        {
          "tag": "v2023.04.09",
          "kind": "patch",
          "published_at": "2023-04-09T12:37:15Z"
        },
        {
          "tag": "v2023.03.26",
          "kind": "patch",
          "published_at": "2023-03-26T14:09:42Z"
        },
        {
          "tag": "v2023.03.19",
          "kind": "patch",
          "published_at": "2023-03-16T06:21:42Z"
        },
        {
          "tag": "v2023.03.05",
          "kind": "patch",
          "published_at": "2023-03-03T15:38:37Z"
        },
        {
          "tag": "v2023.02.26",
          "kind": "patch",
          "published_at": "2023-02-25T14:14:01Z"
        },
        {
          "tag": "v2023.02.19",
          "kind": "patch",
          "published_at": "2023-02-18T06:58:27Z"
        },
        {
          "tag": "v2023.02.12",
          "kind": "patch",
          "published_at": "2023-02-11T04:47:50Z"
        },
        {
          "tag": "v2023.02.05",
          "kind": "patch",
          "published_at": "2023-02-03T18:07:07Z"
        },
        {
          "tag": "v2023.01.22",
          "kind": "patch",
          "published_at": "2023-01-22T12:51:58Z"
        },
        {
          "tag": "v2023.01.15",
          "kind": "patch",
          "published_at": "2023-01-14T13:56:34Z"
        },
        {
          "tag": "v2023.01.01",
          "kind": "patch",
          "published_at": "2023-01-01T13:35:53Z"
        },
        {
          "tag": "v2022.12.25",
          "kind": "patch",
          "published_at": "2022-12-25T13:30:21Z"
        },
        {
          "tag": "v2022.12.18",
          "kind": "patch",
          "published_at": "2022-12-17T10:38:34Z"
        },
        {
          "tag": "v2022.12.11",
          "kind": "patch",
          "published_at": "2022-12-11T14:27:22Z"
        },
        {
          "tag": "v2022.11.27",
          "kind": "patch",
          "published_at": "2022-11-23T03:56:03Z"
        },
        {
          "tag": "v2022.11.06",
          "kind": "patch",
          "published_at": "2022-11-06T12:11:27Z"
        },
        {
          "tag": "v2022.10.30",
          "kind": "patch",
          "published_at": "2022-10-30T10:41:13Z"
        },
        {
          "tag": "v2022.10.16",
          "kind": "patch",
          "published_at": "2022-10-16T07:00:05Z"
        },
        {
          "tag": "v2022.10.09",
          "kind": "patch",
          "published_at": "2022-10-09T02:20:55Z"
        },
        {
          "tag": "v2022.09.25",
          "kind": "patch",
          "published_at": "2022-09-23T14:47:19Z"
        },
        {
          "tag": "v2022.09.04",
          "kind": "patch",
          "published_at": "2022-09-04T13:49:31Z"
        },
        {
          "tag": "v2022.08.21",
          "kind": "patch",
          "published_at": "2022-08-20T14:23:29Z"
        },
        {
          "tag": "v2022.08.07",
          "kind": "patch",
          "published_at": "2022-08-05T17:01:24Z"
        },
        {
          "tag": "v2022.07.31",
          "kind": "patch",
          "published_at": "2022-07-31T14:06:46Z"
        },
        {
          "tag": "v2022.07.24",
          "kind": "patch",
          "published_at": "2022-07-24T14:33:09Z"
        },
        {
          "tag": "v2022.07.10",
          "kind": "patch",
          "published_at": "2022-07-08T18:15:46Z"
        },
        {
          "tag": "v2022.07.03",
          "kind": "patch",
          "published_at": "2022-07-03T14:08:50Z"
        },
        {
          "tag": "v2022.06.26",
          "kind": "patch",
          "published_at": "2022-06-24T16:27:11Z"
        },
        {
          "tag": "v2022.06.12",
          "kind": "patch",
          "published_at": "2022-06-12T10:11:12Z"
        },
        {
          "tag": "v2022.06.05",
          "kind": "patch",
          "published_at": "2022-06-03T05:18:15Z"
        },
        {
          "tag": "v2022.05.29",
          "kind": "patch",
          "published_at": "2022-05-28T07:14:24Z"
        },
        {
          "tag": "v2022.05.22",
          "kind": "patch",
          "published_at": "2022-05-21T18:51:35Z"
        },
        {
          "tag": "v2022.05.15",
          "kind": "patch",
          "published_at": "2022-05-15T01:05:43Z"
        },
        {
          "tag": "v2022.05.08",
          "kind": "patch",
          "published_at": "2022-05-07T15:08:34Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "acb6d4cb84205a8e3f19ca470cfcf7bf6d93a509",
          "body": "Online defragmentation is not supported on ext4 DAX-enabled filesystems.\nThe ext4 defrag ioctl (EXT4_IOC_MOVE_EXT) returns EOPNOTSUPP when used\non DAX files.\n\nAdd an ext4-specific check in _require_defrag() to skip tests when DAX\nis enabled, avoiding false failures on ext4/301-304, ext4/308, and\ngen\n[…]\nkernel.org>\nSigned-off-by: Disha Goel <disgoel@linux.ibm.com>\nReviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "common/defrag: skip defrag tests on DAX-enabled filesystems",
          "author_name": "Disha Goel",
          "author_login": "disgoel",
          "committed_at": "2026-06-17T19:34:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "65caee6192ce5006bedbd40cc2889e0961c93b46",
          "body": "The two tests pass when a timestamp is not preserved after the remount,\nbecause \"cmp -s\" does not print to the output file, and status is set to\n0 regardless of the return value of cmp. So, use \"diff\" instead to\ncorrectly fail the test and flag the error case in the output file.\n\nAlso, as the tests \n[…]\nthe tests can still pass if only the file contents differ.\n\nSigned-off-by: Joanne Chang <joannechien@google.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/63{4,5}: Modify criteria for passing test",
          "author_name": "Joanne Chang",
          "author_login": null,
          "committed_at": "2026-06-17T19:28:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "26eb955e4243495c0df0bc2f157cda32edccf18b",
          "body": "min_dio_alignment requires the file system to be checked to be mounted,\nso move the call into the main loop.  Drop the pointless blocksize\nargument to _require_odirect, which is only tested on the test device.\n\nSigned-off-by: Christoph Hellwig <hch@lst.de>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/366: check minimum dio size correctly",
          "author_name": "Christoph Hellwig",
          "author_login": null,
          "committed_at": "2026-06-17T09:34:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "88b140d74b3e01484db5c080165d5d7240d8ce0c",
          "body": "f2fs has supported ioctl(_IOR ('X', 125, uint32_t)), so that\n\"f2fs_io shutdown\" can be completely replaced w/ _scratch_shutdown(),\nlet's clean up in f2fs/009.\n\nSuggested-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Chao Yu <chao@kernel.org>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "f2fs/009: use common _scratch_shutdown helper",
          "author_name": "Chao Yu",
          "author_login": "chaseyu",
          "committed_at": "2026-06-16T14:18:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f599bae27e4aa4a4eb743b51cf017662278c36e",
          "body": "Without commit 520760b9f915 (\"f2fs: optimize representative type determination\nin GC\"), f2fs GC will report inconsistent segment type in large section issue,\nand then it will force to shutdown filesystem.\n\n[  768.190903] F2FS-fs (loop51): Inconsistent segment (3) type [1, 0] in SIT and SSA\n\nThe reas\n[…]\nve condition to see whether f2fs kernel\nmodule can handle it correctly\n\nSigned-off-by: Chao Yu <chao@kernel.org>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "f2fs/025: test to do sanity check section type correctly in f2fs GC",
          "author_name": "Chao Yu",
          "author_login": "chaseyu",
          "committed_at": "2026-06-16T14:09:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6c5d1992fb3bcb6adf5c38eb31924d76794ae9dc",
          "body": "Commit 000813899afb (\"fstests: scale some tests for high CPU count\nsanity\") replaced \"touch\" with \"echo -n >\" to speed up file creation by\nusing a shell builtin redirection instead of forking and execing an\nexternal binary. However, this broke the ENOSPC filtering the test\nrelies on.\n\nWhen the scrat\n[…]\n\")\nSigned-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs/013: fix ENOSPC handling",
          "author_name": "Shin'ichiro Kawasaki",
          "author_login": "kawasaki",
          "committed_at": "2026-06-15T20:26:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ec6d49da5d27690f8146a5fbbea9214abaa8a4cc",
          "body": "Create a zoned realtime filesystem with a single user data open zone,\ndirty one zone worth of data, and inject a writeback error on the\nrealtime device.\n\nAfter disabling fault injection, fsync a second write.  The filesystem\nmust already be shut down so that the second fsync fails quickly instead\nof waiting for zoned allocation progress.\n\nSigned-off-by: Yao Sang <sangyao@kylinos.cn>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test zoned realtime writeback EIO shutdown",
          "author_name": "Yao Sang",
          "author_login": null,
          "committed_at": "2026-06-14T16:26:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "973512e9c24062257ec456e929232a8d6c0cb4e7",
          "body": "Test writing into a file range containing prealloc extents beyond the current\ni_size, with an unmount and mount after fallocate and the write, to verify\nthat the file data, size and extent layout were not lost.\n\nThis used to fail on btrfs when not using the no-holes feature (which is\na default since\n[…]\n= 5.15, one must run the test with:\n\n   MKFS_OPTIONS=\"-O ^no-holes\"\n\nSigned-off-by: Filipe Manana <fdmanana@suse.com>\nReviewed-by: Qu Wenruo <wqu@suse.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic: add a test case for writes with prealloc extents beyond i_size",
          "author_name": "Filipe Manana",
          "author_login": "fdmanana",
          "committed_at": "2026-06-14T15:27:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ace8d9c9dee5d6bf762cbf794f2d8d0e07fec3f0",
          "body": "[FALSE ALERT]\nIf one has specified \"-o nodatasum\" as mount options, the test case\nbtrfs/138 will fail with the following error:\n\n MOUNT_OPTIONS -- -o nodatasum /dev/mapper/test-scratch1 /mnt/scratch\n\n btrfs/138    34s ... - output mismatch (see /home/adam/xfstests/results//btrfs/138.out.bad)\n    ---\n[…]\nn the test case can be properly skipped other than causing\nfalse failure.\n\nSigned-off-by: Qu Wenruo <wqu@suse.com>\nReviewed-by: Anand Jain <asj@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "fstests: btrfs/138: add requirement for datacsum",
          "author_name": "Qu Wenruo",
          "author_login": "adam900710",
          "committed_at": "2026-06-14T09:13:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "120ff814a4c98cd303e838ac6604b5816ab1600b",
          "body": "This reproduces issues with zoned growfs.\n\nSigned-off-by: Christoph Hellwig <hch@lst.de>\nReviewed-by: Hans Holmberg <hans.holmberg@wdc.com>\nReviewed-by: \"Darrick J. Wong\" <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test that a grown RT section can be filled",
          "author_name": "Christoph Hellwig",
          "author_login": null,
          "committed_at": "2026-06-11T18:03:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1104c45b26d01d40a187ed4c9f0517bebdc12b27",
          "body": "Factor out the check for an RT device on an external section.\n\nSigned-off-by: Christoph Hellwig <hch@lst.de>\nReviewed-by: Hans Holmberg <hans.holmberg@wdc.com>\nReviewed-by: \"Darrick J. Wong\" <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "common: add a _require_external_realtime_device helper",
          "author_name": "Christoph Hellwig",
          "author_login": null,
          "committed_at": "2026-06-11T18:00:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d68212a7373f675fcff8b82082a0a64b04ae985",
          "body": "The test case xfs/170 performs file stream tests and must be skipped for\nzoned scratch devices since the filestream feature is not supported. The\ntest calls _require_xfs_scratch_non_zoned() to check if the scratch\ndevice is zoned.\n\nThis check is done after _try_scratch_mkfs_xfs() with a small dsize\n\n[…]\nbefore proceeding with the small dsize mkfs.\n\nSigned-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "common/filestreams: check zoned device before mkfs with small dsize",
          "author_name": "Shin'ichiro Kawasaki",
          "author_login": "kawasaki",
          "committed_at": "2026-06-06T19:59:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "80d250af40caf7d0db95caaf7243deefb16ef9a6",
          "body": "There is a bug report that btrfs/242 can crash very randomly.\n\nIt turns out the crash is caused by a re-appearing missing device, which\nscrewed up several checks in fstrim.\n\nThis new test case is a more reliable version, dedicated for such crash,\nwhich will:\n\n- Create a raid1 btrfs\n- Mount with a si\n[…]\n\nLink: https://lore.kernel.org/linux-btrfs/wlwir19t.fsf@damenly.org/\nReviewed-by: Filipe Manana <fdmanana@suse.com>\nSigned-off-by: Qu Wenruo <wqu@suse.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "fstests: btrfs: add a new test case for fstrim crash",
          "author_name": "Qu Wenruo",
          "author_login": "adam900710",
          "committed_at": "2026-06-06T19:58:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "26c2b701724afe41ec7e925549c883abf570b4f9",
          "body": "When using simple quotas, an extent's EXTENT_OWNER_REF can long outlive\nthe subvolume that created it, since the extent can pick up additional\nreferences that keep it alive after the owning subvolume is deleted.\n\nSeveral lifecycle bugs around the owning qgroup arise from this:\n\n  1. Freeing an exten\n[…]\n the filesystem with broken accounting or\ntrigger a transaction abort.\n\nSigned-off-by: Boris Burkov <boris@bur.io>\nReviewed-by: Anand Jain <asj@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "btrfs: test qgroup deletion races with squota writes",
          "author_name": "Boris Burkov",
          "author_login": "boryas",
          "committed_at": "2026-05-29T09:57:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d65330dd7de46410342e7b7000d7bbceb903de0d",
          "body": "The enable_quota helper in btrfs/301 takes a mode argument ('n', 's',\nor anything else) to switch between \"no quota\", \"simple quota\", and\n\"full quota\" enable.  Only the simple-quota path is ever exercised by\nthis test, so the dispatch is dead weight and the indirection just\nobscures the actual btrfs\n[…]\nes to call 'btrfs quota enable --simple'\ndirectly and drop the helper.\n\nSigned-off-by: Boris Burkov <boris@bur.io>\nReviewed-by: Anand Jain <asj@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "btrfs: inline enable_quota helper in test 301",
          "author_name": "Boris Burkov",
          "author_login": "boryas",
          "committed_at": "2026-05-29T09:52:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "239cc1d598663b849b5da29c5f9d0382ec8eb442",
          "body": "[BUG]\nTest case generic/362 and generic/365 will fail with nodatasum, but\nthat's only when TEST_DEV is newly formatted.\n\n FSTYP         -- btrfs\n PLATFORM      -- Linux/x86_64 btrfs-vm 7.1.0-rc4-custom+ #381 SMP PREEMPT_DYNAMIC Tue May 26 10:47:14 ACST 2026\n MKFS_OPTIONS  -- -O bgt -K /dev/mapper/te\n[…]\nlipe Manana <fdmanana@suse.com>\nSigned-off-by: Qu Wenruo <wqu@suse.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nReviewed-by: Anand Jain <asj@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "fstests: cleanup old files to respect mount options needing new inodes",
          "author_name": "Qu Wenruo",
          "author_login": "adam900710",
          "committed_at": "2026-05-29T09:13:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1418baaef1faa80d8f2203a2e8cbb36b86afb322",
          "body": "Although single-data-RAID56, aka 2 disks raid5 or 3 disks raid6, is\nnot recommended for btrfs, btrfs still supports it as there are cases\nlike degraded writes can still lead to such cases.\n\nBut we do not have any proper tests for such corner cases.\n\nFurthermore, RAID56 lib is going to drop the suppo\n[…]\ningle-data-RAID56 handling.\n\nSigned-off-by: Qu Wenruo <wqu@suse.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "fstests: btrfs: add a new test case for single data RAID56",
          "author_name": "Qu Wenruo",
          "author_login": "adam900710",
          "committed_at": "2026-05-29T08:54:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c1dcfe62b3f95d323224e9b8087ab0e6df69c993",
          "body": "If FANOTIFY=no in the kernel, then fs-monitor will fail to start. Fix\nfs-monitor error codes to detect and skip the test on \"Function not\nimplemented\" code.\n\nSigned-off-by: Andrey Albershteyn <aalbersh@kernel.org>\nReviewed-by: \"Darrick J. Wong\" <djwong@kernel.org>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/791: don't run if kernel misses FANOTIFY",
          "author_name": "Andrey Albershteyn",
          "author_login": "alberand",
          "committed_at": "2026-05-29T07:22:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5ddd1789ae14e1acd512f6cc2af61778ac53aa6",
          "body": "F2FS has removed the trailing \"=\" in the mount options for disabling\nuser journaled quotas. Update f2fs/021 to try the new syntax first and\nfall back to the legacy syntax if the initial mount attempt fails.\n\nSigned-off-by: Joanne Chang <joannechien@google.com>\nReviewed-by: Chao Yu <chao@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "f2fs/021: Fix mount syntax for disabling jquota",
          "author_name": "Joanne Chang",
          "author_login": null,
          "committed_at": "2026-05-20T10:42:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55d8071bc4a86895fadb5d7767ef1f016df7d010",
          "body": "F2FS has removed the trailing \"=\" in the mount options for disabling\nuser, group, and project journaled quotas. To maintain compatibility,\nupdate the test cases in f2fs/015 to try the new syntax first, and fall\nback to the legacy syntax if the initial mount attempt fails.\n\nSigned-off-by: Joanne Chang <joannechien@google.com>\nReviewed-by: Chao Yu <chao@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "f2fs/015: Fix mount syntax for disabling jquota",
          "author_name": "Joanne Chang",
          "author_login": null,
          "committed_at": "2026-05-20T10:42:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d5fb5bbbd22d836cbb256480191632b485671dbe",
          "body": "HFS hasn't any field in on-disk layout that can keep\nthe file/folder access times (atime):\n\n/* The catalog record for a file */\nstruct hfs_cat_file {\n        s8 type;                        /* The type of entry */\n        u8 reserved;\n        u8 Flags;                       /* Flags such as read-onl\n[…]\nk.fu-berlin.de>\ncc: Yangtao Li <frank.li@vivo.com>\ncc: linux-fsdevel@vger.kernel.org\ncc: fstests@vger.kernel.org\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "common/rc: exclude HFS from atime testing",
          "author_name": "Viacheslav Dubeyko",
          "author_login": "dubeyko",
          "committed_at": "2026-05-20T10:38:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d66e76fc5ab6a6f1550b09aa6904d7974da3aad8",
          "body": "F2FS is a log-structured file system that allocates new blocks even for\noverwrites. To perform allocation, it may need to read metadata blocks\n(such as the Node Address Table (NAT) or Segment Info Table (SIT)) if\nthey are not already in memory.\n\nIn scenario 3 (read -> read/write), unlike scenario 2,\n[…]\n in scenario 2.\n\nSigned-off-by: Jan Prusakowski <jprusakowski@google.com>\nReviewed-by: Chao Yu <chao@kernel.org>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/563: allow read tolerance for f2fs in scenario 3",
          "author_name": "Jan Prusakowski",
          "author_login": null,
          "committed_at": "2026-05-20T10:26:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "32b4dfffbc086df51c7a16ee59086da8e5024bc6",
          "body": "Test an i_size expanding fallocate into a range beyond current i_size that\nalready has a preallocated extent, with an unmount and mount after each\nfallocate to verify that no metadata (i_size) and extents were lost.\n\nThis used to fail on btrfs when not using the no-holes feature (which is\na default \n[…]\nS_OPTIONS=\"-O ^no-holes\"\n\nSigned-off-by: Filipe Manana <fdmanana@suse.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nReviewed-by: Qu Wenruo <wqu@suse.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic: add a test case for fallocate i_size extension",
          "author_name": "Filipe Manana",
          "author_login": "fdmanana",
          "committed_at": "2026-05-20T09:42:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ce4e96a89a2b876497006b3fcbb388ee41f7aa8a",
          "body": "The fsverity test generic/579 could be used to reproduce a regression in\nthe xfs buffer hashing.  Carlos Maiolino figured out that even removing\nthe fsverity-specific bits would reproduce the issue.  This test is\nthus a copy of generic/579 with the fsverity bits striped out, and\nrun 5 times as that seems to be the threshold at which the issue\nreproduces reliably.\n\nSigned-off-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic: add a test that stresses metadata eviction",
          "author_name": "Christoph Hellwig",
          "author_login": null,
          "committed_at": "2026-05-20T09:41:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "748ae5ab407610b1e3fa706c354016cf035e82ec",
          "body": "The test case will fail on older distros like SLE12-SP5, there are two\nproblems on the test case itself:\n\n- Requires \"--sync\" option from \"btrfs qgroup show\" subcommand\n  That option was introduecd in v4.9.1, thus there are still some older\n  distros using that very old version.\n\n- Not all kernels s\n[…]\nse by marking qgroup\n  inconsitent.\n\nReported-by: Long An <lan@suse.com>\nSigned-off-by: Qu Wenruo <wqu@suse.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "btrfs/340: add support for older kernels/progs",
          "author_name": "Qu Wenruo",
          "author_login": "adam900710",
          "committed_at": "2026-05-17T08:11:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ffc8bad17e5b2f56e48dbac43f7c5ae8ac368fe5",
          "body": "The XFS concurrency optimization breaks the log sizing check on\nsystems with non-rotational disks and high amount of CPUs. Default to\nthe old behavior with -l concurrency=0 and with -d concurrency=0.\n\nSigned-off-by: Lukas Herbolt <lukas@herbolt.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nReviewed-by: \"Darrick J. Wong\" <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs/21{6,7} Use default -l concurrency=0 on mkfs.xfs that supports it",
          "author_name": "Lukas Herbolt",
          "author_login": "lherbolt",
          "committed_at": "2026-05-15T16:20:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "393a4e58584dccbbc457aa7f16a315175bdaa474",
          "body": "…SSDs\n\nXFS will now scale by default its log size according the amount of CPUs. This\ncan significantly increase the log area and using hard-coded size of file size\nwill make the test file. Using the X percent of the free space to create the\nfile will let the test proceed.\n\nFor generic/102 we also ha\n[…]\nhis option.\n\nSigned-off-by: Lukas Herbolt <lukas@herbolt.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nReviewed-by: \"Darrick J. Wong\" <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/{102,172,347}: Adapt test for XFS on systems with 128+CPUs + …",
          "author_name": "Lukas Herbolt",
          "author_login": "lherbolt",
          "committed_at": "2026-05-15T16:20:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7f162f5bcf50fc32c7e3b432e7ff189571a3151f",
          "body": "Check if the requested flag is supported by the mkfs.xfs on scratch\ndevice.\n\nSigned-off-by: Lukas Herbolt <lukas@herbolt.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nReviewed-by: \"Darrick J. Wong\" <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "common/xfs: helper function to check if -l/-d/-r concurrecy flags.",
          "author_name": "Lukas Herbolt",
          "author_login": "lherbolt",
          "committed_at": "2026-05-15T16:20:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55f45a620c552ec77e69291f58b89c27a972ba9a",
          "body": "It calculates percentage of filesystem available space and returns it\nin MB. This helper will be used in the following test/generic fixes.\n\nSigned-off-by: Lukas Herbolt <lukas@herbolt.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nReviewed-by: \"Darrick J. Wong\" <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "common/rc: Add helper to calculate percentage of free space available",
          "author_name": "Lukas Herbolt",
          "author_login": "lherbolt",
          "committed_at": "2026-05-15T16:20:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c69a37c4f4c32f49957bc9720e11304de6fca33",
          "body": "All processes in the userns hierarchy share the same mm_struct due to\nCLONE_VM. When a child calls setresuid() in switch_ids(), the kernel\nclears the dumpable flag on the shared mm. The child immediately\nre-sets it via prctl(PR_SET_DUMPABLE, 1), but there is a window\nbetween the two where the parent\n[…]\nan clear dumpable while the parent's open() is\nin flight.\n\nSigned-off-by: Christian Brauner <brauner@kernel.org>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "vfs: fix dumpable race in create_userns_hierarchy()",
          "author_name": "Christian Brauner",
          "author_login": "brauner",
          "committed_at": "2026-05-12T17:22:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4192c9e2266c8e92b49e3f73fe505101ab36ce1b",
          "body": "If udevd isn't running then \"udevadm wait\" loops endlessly. With a\n--timeout parameter provided, udevadm (udev-254.27) prints to stderr:\n  Timed out for waiting devices being initialized.\n\nThe error message causes test failure via golden output mismatch and\nis easier to debug than an infinite loop.\n\n[…]\nd be long enough to avoid premature timeout on regular systems.\n\nSigned-off-by: David Disseldorp <ddiss@suse.de>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "common/rc: add default _udev_wait timeout",
          "author_name": "David Disseldorp",
          "author_login": "ddiss",
          "committed_at": "2026-05-12T17:22:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d6ed520323d82dbb0f9ad77a7a63e48d01a3c4e",
          "body": "Calculating size of donor file based on du output causes the following\nissue:\n\ne4compact.c:68: do_defrag_range: Assertion `donor->length >= len' failed.\n./common/rc: line 4616: 1583182 Aborted                 (core dumped)\n\nThe issue is that e4compat asserts that the stat.st_size of all files\ncombin\n[…]\nadable.\n\nReported-by: Disha Goel <disgoel@linux.ibm.com>\nTested-by: Disha Goel <disgoel@linux.ibm.com>\nSigned-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "ext4/307: Calculate donor size to avoid failures for 64k bs",
          "author_name": "Ojaswin Mujoo",
          "author_login": "OjaswinM",
          "committed_at": "2026-05-12T17:13:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3aca6733f6cd93cbf000b7dbfc8af128796e2425",
          "body": "This patch fixes two issues in btrfs/291:\n\n1. Add dynamic LOGWRITES_DEV size requirement based on SCRATCH_DEV\n   The test creates LVM snapshots at each FUA point during replay,\n   requiring significant space. Calculate the required size as 120%\n   of SCRATCH_DEV size (adding 20% overhead for LVM sna\n[…]\nTCH_DEV size.\n\nSuggested-by: Anand Jain <anajain.sg@gmail.com>\nSigned-off-by: Disha Goel <disgoel@linux.ibm.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "btrfs/291: fix state transition logic and add size requirement",
          "author_name": "Disha Goel",
          "author_login": "disgoel",
          "committed_at": "2026-05-11T16:18:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a974318c5bfa1debda2f0ce18fccb1ea336dcfbb",
          "body": "Add a new helper function _require_log_writes_sized() to check if the\nLOGWRITES_DEV meets a minimum size requirement.\n\nThis is useful for tests that use dm-log-writes with additional space\nrequirements, such as creating LVM snapshots during log replay or tests\nthat generate large amounts of logged I\n[…]\nng@kernel.org>\nSuggested-by: Anand Jain <anajain.sg@gmail.com>\nSigned-off-by: Disha Goel <disgoel@linux.ibm.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "common/dmlogwrites: add _require_log_writes_sized helper",
          "author_name": "Disha Goel",
          "author_login": "disgoel",
          "committed_at": "2026-05-11T16:18:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8413f58d843f88c5132474297e5cbfac5ba6dad5",
          "body": "[BUG]\nThe latest btrfs-progs release v7.0 breaks a lot of tests, e.g.\nbtrfs/003:\n\nbtrfs/003    55s ... [failed, exit status 1]- output mismatch (see /home/kts/kernel-test-suite/src/xfstests/results//btrfs/003.out.bad)\n    --- tests/btrfs/003.out     2026-05-09 03:07:52.952213772 +0900\n    +++ /home/\n[…]\ncom>\nLink: https://lore.kernel.org/linux-btrfs/af9EHC5b-aBdr1zn@shinmob/\nSigned-off-by: Qu Wenruo <wqu@suse.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "fstests: support new mkfs.btrfs help string",
          "author_name": "Qu Wenruo",
          "author_login": "adam900710",
          "committed_at": "2026-05-10T19:10:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b8bcadc36c3624fad6f6a2b8bdc407ae2a88b496",
          "body": "Currently, f2fs/022 and f2fs/023 only clears MKFS_OPTIONS. This causes\nthe tests to fail when leftover MOUNT_OPTIONS depend on unapplied\nMKFS_OPTIONS. So MOUNT_OPTIONS should also be cleared to ensure reliable\nmounting.\n\nSigned-off-by: Joanne Chang <joannechien@google.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nReviewed-by: Chao Yu <chao@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "f2fs/{022,023}: clear MOUNT_OPTIONS alongside MKFS_OPTIONS",
          "author_name": "Joanne Chang",
          "author_login": null,
          "committed_at": "2026-05-09T16:51:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cdd9140a2f78951f077aafeb0f337c8a93a35026",
          "body": "We're dropping this warning from xfs_scrub because the warning is\nincorrect, so let's make sure the QA system checks that it's gone.\n\nCc: gedalya@gedalya.net\nSigned-off-by: \"Darrick J. Wong\" <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/45[34]: don't warn on mixed bidirectional characters",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-05-09T16:51:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f61ba0fde3ec9cdfd7eed711aca2b28e973c2905",
          "body": "ArsTechnica recently wrote about a GitHub supply chain attack wherein\nnon-rendering unicode sequences were embedded in javascript files to\nhide payloads that could be decrypted trivially later.  While these are\nunlikely to appear in file and attribute names, xfs_scrub will warn about\nthis sort of steganography, so let's make sure it works.\n\nSigned-off-by: \"Darrick J. Wong\" <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/45[34]: add detection of confusable variation sequences",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-05-09T16:51:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "528c7ba2a275d4e4b592145acd4366158af48cbc",
          "body": "A few fixes were merged into Linus' tree, so add their commit IDs in the\nrespective test cases.\n\nSigned-off-by: Filipe Manana <fdmanana@suse.com>\nReviewed-by: Anand Jain <asj@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "fstests: add commit IDs for kernel fixes already merged",
          "author_name": "Filipe Manana",
          "author_login": "fdmanana",
          "committed_at": "2026-05-07T20:25:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "12c729c1a296dcd799a217a26c433f9bf79477fa",
          "body": "Without this, mount probes different file system type, which ended up\nexposing kernel bugs in blocksize > PAGE_SIZE bugs in tons of\nlegacy file systems.  Bypass that by forcing XFS and making the\nmount a little more efficient.\n\nSigned-off-by: Christoph Hellwig <hch@lst.de>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nReviewed-by: Andrey Albershteyn <aalbersh@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs/216: pass -t xfs to _mount",
          "author_name": "Christoph Hellwig",
          "author_login": null,
          "committed_at": "2026-05-07T18:48:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d9b1d9c6f43ee71cf16020afde63d453bf0468ac",
          "body": "Testcase generic/793 overwrites a 1GB file \"number of sequential zones\"\ntimes in order to trigger a bug in zoned BTRFS' garbage collection. But on\nscratch devices with a huge number of sequential zones (like SMR drives)\nthis can cause very long runtimes.\n\nAs the testcase also limits the filesystem s\n[…]\nviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>\nReviewed-by: Hans Holmberg <hans.holmberg@wdc.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/793: limit number of overwrites",
          "author_name": "Johannes Thumshirn",
          "author_login": "morbidrsa",
          "committed_at": "2026-05-04T02:57:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "95155ec233fad04d8701bfec74accefec691342c",
          "body": "Test that extending a file past a non-block-aligned EOF correctly\nzero-fills the gap [old_EOF, block_boundary), and that this zeroing\npersists through a filesystem shutdown+remount cycle.\n\nStale data beyond EOF can persist on disk when append write data blocks\nare flushed before the on-disk file siz\n[…]\nemory and on\ndisk.\n\nSigned-off-by: Zhang Yi <yi.zhang@huawei.com>\nReviewed-by: Brian Foster <bfoster@redhat.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic: test post-EOF gap zeroing persistence",
          "author_name": "Zhang Yi",
          "author_login": "zhangyi089",
          "committed_at": "2026-05-01T16:57:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "55e172c4c9144d2b944f0c03801b507f9e74c5ba",
          "body": "The create_data() set cmd_str to \"-c \\\"resvsp $((off * 4096)) 4096\\\".\nThat cause xfs_io can't split the command line properly, it fails as:\n\n  command \"\"resvsp\" not found\n\nFixes: aaf40fb7 (\"fstests: xfs/227 is really slow\")\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs/227: fix bad variable expansion",
          "author_name": "Zorro Lang",
          "author_login": null,
          "committed_at": "2026-05-01T15:49:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "832a6d9ac226e017b41b052b89bfa2f66ac8c039",
          "body": "Capture the kernel output after a mount failure occurs.  If the test\nitself fails, then keep the logging output for further diagnosis.  The\nxunit.xsd update adds a <mount-failure> element to the xml output, whose\noutput is the mountfail file.\n\nNote that because the .mountfail file is preserved by ./\n[…]\no check for the .mountfail file.  This is a\nlittle awkward.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "check: capture dmesg of mount failures if test fails",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-05-01T15:42:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "078f3204e049c8ffcf7819bab9afd419267d0084",
          "body": "Going to add some new log scraping functionality when mount failures\noccur, so we need everyone to use _mount instead of $MOUNT_PROG.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "treewide: convert all $MOUNT_PROG to _mount",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-05-01T15:40:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cac9fe2b8dc3e6dbc0c2383b9e3b4d3c1b9e7dd0",
          "body": "This test stresses garbage collection in zoned file systems by\nconstantly overwriting the same file. It is inspired by a reproducer\nfor a btrfs bugfix.\n\nSigned-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic: test premature ENOSPC in zoned garbage collection",
          "author_name": "Johannes Thumshirn",
          "author_login": "morbidrsa",
          "committed_at": "2026-04-16T18:19:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d59865ddf8e4dc199e8b572fe8475abb621d6725",
          "body": "Test that mounts of zoned file systems on conventional devices don't\ncreate more open zones than allowed when the last blocks in one or more\nzones have been invalidated.\n\nSigned-off-by: Christoph Hellwig <hch@lst.de>\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: add a test for number of open zones on conventional devices",
          "author_name": "Christoph Hellwig",
          "author_login": null,
          "committed_at": "2026-04-16T17:00:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dde983e4419abd83568e9c9ebb4b576848d48eb7",
          "body": "We should confirm that the directory tree was correctly copied into the\nnew filesystem, not just that the image files all have the same\nchecksum.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs/841: actually compare the new filesystem contents to the proto dir",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-04-16T16:49:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56b35283cf8e98b50c13f64912161830e6bd0a08",
          "body": "F2FS uses a checkpoint mechanism for metadata consistency rather than a\ntraditional journal. Roll-forward recovery is only needed if there are\nfsync'd files since the last checkpoint.\n\nIn this test case, files are created without fsync, so there is no\nroll-forward data to replay during mount.\n\nThere\n[…]\n Thus, it should be\ntreated as nojournal in this case.\n\nSigned-off-by: Jan Prusakowski <jprusakowski@google.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/050: handle f2fs as nojournal filesystem",
          "author_name": "Jan Prusakowski",
          "author_login": null,
          "committed_at": "2026-04-16T16:48:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c4e03688706d008211c8bb9faeef8fbab3a45615",
          "body": "Test that if we fsync a directory that became empty after removing it\nand we have a power failure, we are able to mount the filesystem and the\ndirectory does not exists anymore.\n\nThis exercises a bug found in btrfs which is fixed by the following patch:\n\n  btrfs: fix missing last_unlink_trans update when removing a directory\n\nSigned-off-by: Filipe Manana <fdmanana@suse.com>\nReviewed-by: Boris Burkov <boris@bur.io>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic: test fsync against a removed directory",
          "author_name": "Filipe Manana",
          "author_login": "fdmanana",
          "committed_at": "2026-04-13T19:41:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3e91c87aa9f1a5a4cea4270d1c22c6ba091f34a",
          "body": "The sysfs queue dir for partitions is present in their parent device's\nsysfs dir. This requires extra checks when trying to reading queue data\nfrom sysfs. Currently, fstests open codes this handling or straight up\nignores it in some places.\n\nAvoid this by converting all remaining direct sysfs queue \n[…]\nconsistent\ninterface for accessing queue attributes.\n\nSigned-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "treewide: Use _sysfs_queue_path helper in all queue access locations",
          "author_name": "Ojaswin Mujoo",
          "author_login": "OjaswinM",
          "committed_at": "2026-04-13T17:42:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "53e68c2afbb9c62de47a227dd05b4373ff85aa1c",
          "body": "We use i as the iteration variable in the main test loop as well as some\ninternal loops. Due to this clash, $i variable of main test loops was\ngetting modified by the following loop in prep_mixed_mapping().\n\n\tfor ((i=0; i<num_blocks; i++)); do\n\nIf num_blocks is less than 10 (example ext4 with blocks\n[…]\nity.\n\nReported-by: Disha Goel <disgoel@linux.ibm.com>\nSigned-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/775: Fix an infinite loop due to variable name clash",
          "author_name": "Ojaswin Mujoo",
          "author_login": "OjaswinM",
          "committed_at": "2026-04-13T17:42:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fb11f06d9026a9a449c4a5afb7e9263e88fdea22",
          "body": "This test validates atomic writes for all possible block sizes. In ext4, for\nsmaller block sizes with configurations like:\n\nexport MKFS_OPTIONS=\"-O bigalloc,quota -b 65536 -C 131072\"\n\nThe output can get corrupted with warnings like below because clustersize\nmore than 16xbs is experimental:\n\n+ 16 tim\n[…]\nnegatives.\n\nReported-by: Disha Goel <disgoel@linux.ibm.com>\nSigned-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>\nReviewed-by: Zorro Lang <zlang@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/765: Ignore mkfs warning",
          "author_name": "Ojaswin Mujoo",
          "author_login": "OjaswinM",
          "committed_at": "2026-04-13T17:42:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4dc8a079a670c0831e75dd9fc25e02f94b261807",
          "body": "This tests checks atomic write limits reported by statx() are same as\nthe ones reported by sysfs, however nvme partitions don't have the\n/sys/block/nvme0n1p1 style entry and also use the namespace's queue\nlimits for atomic writes. This causes the test to fail because it\nexpects /sys/block/nvme0n*p* \n[…]\nfull\n\nReported-by: Disha Goel <disgoel@linux.ibm.com>\nSigned-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/765: Fix sysfs queue path for nvme partitions",
          "author_name": "Ojaswin Mujoo",
          "author_login": "OjaswinM",
          "committed_at": "2026-04-13T17:42:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2c002c3a86c03155e6129fea77c1b2c29a43b18a",
          "body": "Add a generic helper function to get the sysfs queue path for block\ndevices, properly handling partitions. Partitions don't have their own\nqueue directory in sysfs - they inherit from their parent device.\n\nThis helper checks if a device is a partition and returns the parent\ndevice's queue path accor\n[…]\nueue\nattributes for both whole disks and partitions.\n\nSigned-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "common/rc: Add _sysfs_queue_path helper with partition support",
          "author_name": "Ojaswin Mujoo",
          "author_login": "OjaswinM",
          "committed_at": "2026-04-13T17:42:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ea4d04e7b6766118bbf0cbe596de2e41a325119c",
          "body": "Fix 2 issues in the tests:\n\n1. Use fs atomic write limits instead of bdev's\n\nThe tests use block device's limits instead of limits advertised\nby filesystem. This can cause failures because block device might\nadvertise a higher maximum than the FS.  Fix the tests to use\nfilesystem's limits instead.\n\n\n[…]\nect.\n\nReported-by: Disha Goel <disgoel@linux.ibm.com>\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nSigned-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "ext4/061,062: Minor fixes and refactoring",
          "author_name": "Ojaswin Mujoo",
          "author_login": "OjaswinM",
          "committed_at": "2026-04-13T17:42:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0bece2e05be1c5179654f7437519f80eeef71111",
          "body": "The generic/730 test utilizes the scsi_debug driver to create a\nsynthetic SCSI block device. Since scsi_debug does not support\nDAX capabilities, attempting to mount it with \"-o dax\" results\nin failures (specifically on ext4).\n\nSince this test is not DAX-related, exclude it when DAX is\nspecified in M\n[…]\ncsi_debug.\n\nSigned-off-by: Disha Goel <disgoel@linux.ibm.com>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nReviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/730: skip test if DAX mount option is enabled",
          "author_name": "Disha Goel",
          "author_login": "disgoel",
          "committed_at": "2026-04-01T15:07:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "29dbf07039172295ebe3ae158eb1a7e44dedcc96",
          "body": "Kernel commit d72f2084e309 (\"xfs: fix ri_total validation in\nxlog_recover_attri_commit_pass2\") fixed a bug where setting a\nzero-length attribute value would cause incorrect ri_total\nvalidation during log recovery.\n\nAdd test cases to xfs/018 to cover this scenario across attr\nfork formats: extent and\n[…]\nr_replay() by using\nattr -s -V \"\" when the value is empty.\n\nSigned-off-by: Long Li <leo.lilong@huawei.com>\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs/018: test log attr replay with zero-length attr value",
          "author_name": "Long Li",
          "author_login": null,
          "committed_at": "2026-04-01T15:07:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c34c06b9728c2b3e3dbe7666de29f0fb57f24f33",
          "body": "Several tests mention patches that are already in Linus' git tree, so add\ntheir commit IDs. For generic/762, also use \"fixed_by_fs_commit xfs\"\ninstead of \"_fixed_by_git_commit kernel\" since it's a XFS specific commit\nand it does not make sense for the test to report that commit in case it\nfails when running against a filesystem other than XFS.\n\nSigned-off-by: Filipe Manana <fdmanana@suse.com>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "fstests: add kernel commit IDs for patches already merged upstream",
          "author_name": "Filipe Manana",
          "author_login": "fdmanana",
          "committed_at": "2026-04-01T15:07:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8deafb5c487e73c9384df2fcbab523b12007875b",
          "body": "Test that writes to the sysfs attribute zone_gc_low_space triggers\ngarbage collection for rw (but not ro) file systems.\n\nSigned-off-by: Hans Holmberg <hans.holmberg@wdc.com>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test that zone_gc_low_space writes start gc for rw fses",
          "author_name": "Hans Holmberg",
          "author_login": "yhr",
          "committed_at": "2026-04-01T15:07:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7a2fe2c2f7be4982cdbbb882e1802966fef448f5",
          "body": "Turn the logic figuring out on which block device the rt data is stored on\ninto a common helper.\n\nSigned-off-by: Hans Holmberg <hans.holmberg@wdc.com>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs/647: turn rt dev block device lookup into a common helper",
          "author_name": "Hans Holmberg",
          "author_login": "yhr",
          "committed_at": "2026-04-01T15:07:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d614deaed2919f73ff9595fb0cec5ff37201aa9",
          "body": "The atoll() error check `if (offset == 0 && errno != 0)` can falsely\ntrigger because errno is not cleared before the call. Library\ninitialization code (e.g. libcap calling prctl(PR_CAPBSET_READ) which\nfails with EINVAL) can leave errno set to a non-zero value. When the\ncaller passes offset=0 (a vali\n[…]\noth\nbtrfs_encoded_read and btrfs_encoded_write helpers.\n\nSigned-off-by: Leo Martins <loemra.dev@gmail.com>\nReviewed-by: Mark Harmstone <mark@harmstone.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "btrfs: fix stale errno check in btrfs_encoded_read/write helpers",
          "author_name": "Leo Martins",
          "author_login": "loemraw",
          "committed_at": "2026-04-01T15:07:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a44a26f93b056bf4408bc4884df111ab05a973f3",
          "body": "The 2/3 fragmentation threshold was designed for XFS's cowextsize\nmechanism and is not applicable to btrfs. After commit 0dc118b3c327\n(\"btrfs: be less aggressive with metadata overcommit when we can do\nfull flushing\"), btrfs commits transactions more frequently during\nwriteback, reducing the extent \n[…]\nch remain useful.\n\nSigned-off-by: Leo Martins <loemra.dev@gmail.com>\nReviewed-by: Qu Wenruo <wqu@suse.com>\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/301: skip extent count check on btrfs",
          "author_name": "Leo Martins",
          "author_login": "loemraw",
          "committed_at": "2026-04-01T15:07:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "39b31fe6e746ada86179ecb698d7f891d633218a",
          "body": "This is a regression test to check whether the f2fs root inode\nis corrupted after the resize operation.\nDuring the resize operation, SSA data blocks are migrated and\nzeroed. This process may incorrectly zero out the main area\nblocks, leading to root inode corruption.\n\nCc: Jaegeuk Kim <jaegeuk@kernel.org>\nCc: Chao Yu <chao@kernel.org>\nSigned-off-by: Yangyang Zang <zangyangyang1@xiaomi.com>\nReviewed-by: Chao Yu <chao@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "f2fs: add testcase to check resize corrupting root inode",
          "author_name": "Yangyang Zang",
          "author_login": "zangyangyang666",
          "committed_at": "2026-03-31T19:40:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "271d7a1257f762a4fff2c8cc433b86cc6dd1320b",
          "body": "export F2FS_RESIZE_PROG w/ resize.f2fs, it can be used for resize f2fs.\n\nCc: Jaegeuk Kim <jaegeuk@kernel.org>\nCc: Chao Yu <chao@kernel.org>\nSigned-off-by: Yangyang Zang <zangyangyang1@xiaomi.com>\nReviewed-by: Chao Yu <chao@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "common/config: export F2FS_RESIZE_PROG",
          "author_name": "Yangyang Zang",
          "author_login": "zangyangyang666",
          "committed_at": "2026-03-31T19:40:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c17136d0c6c4ad6c8fd07561d4f63d5026d59401",
          "body": "Now that mkfs will set autofsck=repair for filesystems that have both\nreverse space mappings and file parent pointers enabled, let's stop\ntesting the \"no autofsck option at all\" scenario to avoid problems with\nolder mkfs.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs/805: adjust for new autofsck fsproperty defaults",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-20T10:55:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78b8a11f8c2f617f81a35cc58ee83f3ac17cdb56",
          "body": "Set the autofsck property so that xfs_healer actually runs on\nfilesystems with old feature sets.  Since these tests are looking for\nerror reports that don't require backref metadata (media errors, file IO\nerrors, shutdowns) we needn't _notrun them.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs/6{59-61}: force xfs_healer to run",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-20T10:55:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04ee3a4f0d19da31b17d2b8b3d542273af5d3916",
          "body": "If either utility doesn't support the --svcname switch, ignore the\nerror output and just return an empty string.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "common: ignore stderr for the two new svcname helpers",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-20T10:55:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57d71a884dd1b3b3c44a27d2d106b3be84ddc5fb",
          "body": "Add FALLOC_FL_WRITE_ZEROES support to both fsx and fsstress.\nFALLOC_FL_WRITE_ZEROES flag was added in the kernel as a part of Zhang\nYi's series [1].\n\nFALLOC_FL_KEEP_SIZE is not supported when FALLOC_FL_WRITE_ZEROES is\nused.\n\n[1] https://lore.kernel.org/linux-fsdevel/20250619111806.3546162-1-yi.zhang@huaweicloud.com/\n\nSigned-off-by: Pankaj Raghav <p.raghav@samsung.com>\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "ltp: add support for FALLOC_FL_WRITE_ZEROES to fsx and fsstress",
          "author_name": "Pankaj Raghav",
          "author_login": "Panky-codes",
          "committed_at": "2026-03-17T03:31:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa5b0dcf301dc167cf9c7c57622472ea3ffa958d",
          "body": "Make sure that when xfs_healer needs to reopen a filesystem to repair\nit, it can still find the filesystem even if it has been mount --move'd.\nThis requires a bunch of private namespace magic.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test xfs_healer can follow private mntns mount moves",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de37793e7b07f467d213a04250bbeb83fa41ea5a",
          "body": "Make sure that xfs_healer_start can actually start up xfs_healer service\ninstances when a filesystem is mounted.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test xfs_healer startup service",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df0f4b76c572b517068a00ac360f9622417c3778",
          "body": "Make sure that when xfs_healer can monitor and repair filesystems when it's\nrunning as a systemd service, which is the intended usage model.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test xfs_healer background service",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17fdaa0ba3f1e36fec1514f8a511898b13897a86",
          "body": "Make sure that when xfs_healer needs to reopen a filesystem to repair it, it\nwon't latch on to another xfs filesystem that has been mounted atop the same\nmountpoint.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test xfs_healer wont repair the wrong filesystem",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "309e54e83e1f64eb79cd557f2ff73dabb01bbb1a",
          "body": "Make sure that when xfs_healer needs to reopen a filesystem to repair it,\nit can still find the filesystem even if it has been mount --move'd.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test xfs_healer can follow mount moves",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20dffed104b65a84377dd5431a9ebaf31eedd7fe",
          "body": "Make sure that when xfs_healer can't perform a spot repair, it will actually\nstart up xfs_scrub to perform a full scan and repair.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test xfs_healer can initiate full filesystem repairs",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e5ed6fcef9644fba010f1e9bc82fc88df9519f8",
          "body": "Make sure that xfs_healer can actually report abnormal filesystem shutdowns.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test xfs_healer can report filesystem shutdowns",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eb1013c4f2698d8fa6ae32e9ce0a9e71e738a630",
          "body": "Make sure that xfs_healer can actually report media errors as found by the\nkernel.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test xfs_healer can report file media errors",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa3d8defe09a845cc5ecceea05d6b0da2711a09b",
          "body": "Make sure that xfs_healer can actually report file I/O errors.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test xfs_healer can report file I/O errors",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a951e61b684cfd21afde34a8930fc9666efe68b8",
          "body": "Make sure that xfs_healer can actually fix an injected metadata corruption.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test xfs_healer can fix a filesystem",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e76e776e4310b481ce4221613f33a59b3efd5ff5",
          "body": "Make sure that xfs_healer can handle every type of event that the kernel\ncan throw at it by initiating a full scrub of a test filesystem.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test xfs_healer's event handling",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "15548b5e84828c8b8a0f3aca675039ac3e245ed7",
          "body": "Add a bunch of common code so that we can test the xfs_healer daemon.\nMost of the changes here are to make it easier to manage the systemd\nservice units for xfs_healer and xfs_scrub.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: set up common code for testing xfs_healer",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1eef51a44b3f6c71916a38335fb283d96faab3a8",
          "body": "Create a new test to make sure the kernel can report IO errors via\nhealth monitoring.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test io error reporting via healthmon",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c90d3c12ffe181ff30afa1e5d2c587458da09a6f",
          "body": "Check if we can detect runtime metadata corruptions via the health\nmonitor.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test for metadata corruption error reporting via healthmon",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79f6b1c3e4d8e5e859c63779af82d57c40222dfc",
          "body": "Add some functionality tests for the new health monitoring code.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs: test health monitoring code",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "29d120e41c3d3d08b8eebe0d393cb79ef59589cc",
          "body": "Use dmerror to inject a media error for a file's storage, then run\nsome IO and make sure that fanotify reports the IO errors.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nReviewed-by: Amir Goldstein <amir73il@gmail.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic: test fsnotify filesystem error reporting",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-17T03:31:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd92924495149d3e6e3447ab85f50427c47e3a86",
          "body": "QA reports that xfs/62[3-8] fail because they didn't install\nxfsprogs-xfs_scrub package and this test requires xfs_scrub(8).\nAdd the missing _require call, and update the README so that anyone\nrunning fstests on RHEL/Fedora actually get all the necessary\ncomponents to do a full test of XFS.\n\nCc: fst\n[…]\nree corruptions\")\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs/62[3-8]: require XFS_SCRUB_PROG",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-03-14T20:02:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "66c672a2e84561353e93b7d096d5f78d2df98549",
          "body": "Test that if we create a high number of files with a name that results in\na hash collision, the filesystem is not turned to RO due to a transaction\nabort. This could be exploited by malicious users to disrupt a system.\n\nThis exercies a bug fixed by the following kernel patch:\n\n \"btrfs: fix transaction abort on file creation due to name hash collision\"\n\nSigned-off-by: Filipe Manana <fdmanana@suse.com>\nReviewed-by: Boris Burkov <boris@bur.io>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "btrfs: test create a bunch of files with name hash collision",
          "author_name": "Filipe Manana",
          "author_login": "fdmanana",
          "committed_at": "2026-03-14T20:02:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6946bc36b9f73891e2e438cb1362ae09da3550e",
          "body": "Test that we can create a large number of snapshots of a received\nsubvolume without triggering a transaction abort due to leaf item\noverflow. Also check that we are able to delete the snapshots and use\nthe last one for an incremental send/receive despite an item overflow\nwhen updating the uuid tree \n[…]\nfs: fix transaction abort when snapshotting received subvolumes\"\n\nSigned-off-by: Filipe Manana <fdmanana@suse.com>\nReviewed-by: Boris Burkov <boris@bur.io>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "btrfs: test creating a large number of snapshots of a received subvolume",
          "author_name": "Filipe Manana",
          "author_login": "fdmanana",
          "committed_at": "2026-03-14T20:02:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aad362549a8a9514335b4f266c7e68c3741c89a5",
          "body": "Test that using the received subvol ioctl to set a received UUID on a root\ndoes not trigger a transaction abort (and turn the filesystem to RO mode)\nif a user abuses by assigning the same received UUID to a large number of\nsubvolumes.\n\nThis exercises a bug fixed by the following kernel patch:\n\n \"btr\n[…]\nix transaction abort on set received ioctl due to item overflow\"\n\nSigned-off-by: Filipe Manana <fdmanana@suse.com>\nReviewed-by: Anand Jain <asj@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "btrfs: test setting the same received UUID to a lot of subvolumes",
          "author_name": "Filipe Manana",
          "author_login": "fdmanana",
          "committed_at": "2026-03-14T20:02:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8ca8c3c238bcce78a291d73372e4669b5d0bd382",
          "body": "Use the newly introduced _fixed_by_fs_commit function where appropriate.\n\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "fstests: use _fixed_by_fs_commit where appropriate",
          "author_name": "Johannes Thumshirn",
          "author_login": "morbidrsa",
          "committed_at": "2026-03-14T20:02:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02e625a5875ae42ba63ca2622bf2be7759a1f8ad",
          "body": "Add a new helper `_fixed_by_fs_commit` eliminating the\n if [ $FSTYP = fs ] && _fixed_by_kernel_commit XXXX YYYY\npattern.\n\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "fstests: add _fixed_by_fs_commit helper",
          "author_name": "Johannes Thumshirn",
          "author_login": "morbidrsa",
          "committed_at": "2026-03-04T15:58:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01d24d6b0b286b666cabc4c4790f3049f3a34ebe",
          "body": "… a file\n\nTest a scenario where we remove a directory previously persisted, create\na file with the same name and parent directory, create two directories in\nthe same parent directory, create a hard link for the new file in one of\nthe new directories, fsync the directory with the hard link and fsync \n[…]\ndentries when logging parent dir of a conflicting inode\"\n\nSigned-off-by: Filipe Manana <fdmanana@suse.com>\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic: test a directory fsync scenaro after replacing a subdir with…",
          "author_name": "Filipe Manana",
          "author_login": "fdmanana",
          "committed_at": "2026-03-04T15:58:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3ded3e13c008326d197d11ac975049ed1f8ec922",
          "body": "Several tests use fs shutdown. Without journalling the filesystem isn't\nguaranteed to be consistent after shutdown. So for tests that don't make\nsure data makes it to the disk using fsync/sync we cannot really test\nmuch. Skip such tests without journalling.\n\nSigned-off-by: Jan Kara <jack@suse.cz>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "tests: Fix failure in nojournal mode",
          "author_name": "Jan Kara",
          "author_login": "jankara",
          "committed_at": "2026-02-21T16:28:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6fe19be2ecc16dd610f1252c849d1c2493325fb2",
          "body": "diffutils updated cmp with more consistent quoting in commit:\n\n\t69ae797392bd cmp,diff,diff3,sdiff: quote more consistently\n\nThis causes generic/579 to fail from time to time due to grep not\ncatching these errors. Remove quote to work with new and old version of\ncmp.\n\nSigned-off-by: Andrey Albershteyn <aalbersh@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/579: handle quoted cmp output",
          "author_name": "Andrey Albershteyn",
          "author_login": "alberand",
          "committed_at": "2026-02-20T17:06:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75bbf15c562942d9329fb44ea3b6190509c8f748",
          "body": "Test that if we truncate a file to 0, fsync it, add a hard link to the\nfile and then fsync the parent directory, after a power failure the file\nhas a size of 0 (and the hardlink exists too).\n\nThis exercises a bug fixed by the following kernel patch for btrfs:\n\n  \"btrfs: fix zero size inode with non-\n[…]\nr log replay\"\n\nSigned-off-by: Filipe Manana <fdmanana@suse.com>\nReviewed-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic: test fsync of a file truncated to a length of zero",
          "author_name": "Filipe Manana",
          "author_login": "fdmanana",
          "committed_at": "2026-02-20T15:51:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c26276f53d58477010364a8b1b0fd209a6c943f1",
          "body": "[BUG]\nThere is a long existing behavior that if a compressed inline attempt\nfailed, the whole inode is marked incompressible.\n\nFurthermore, the default threshold for compressed inline implies a\npretty high compression ratio (2K max inline vs 4K block size, thus 50%\ncompression ratio).\n\nThis makes bt\n[…]\nCOMPRESS flag\n  * File extent at file offset 1M is being compressed\n\nReviewed-by: Filipe Manana <fdmanana@suse.com>\nSigned-off-by: Qu Wenruo <wqu@suse.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "fstests: btrfs: add a test case for failed compressed inline attempt",
          "author_name": "Qu Wenruo",
          "author_login": "adam900710",
          "committed_at": "2026-02-18T07:25:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eeb894a242c8d200b7ed4c8b7da3d54e24e02c6f",
          "body": "…ble flag\n\n[BUG]\nSince kernel commit 59615e2c1f63 (\"btrfs: reject single block sized\ncompression early\"), a single block write at file offset 0, which can\nnot be inlined due the inode size, will mark the inode incompressible.\n\n[REGRESSION TEST]\nThe new regression test will do:\n\n- Create and mount th\n[…]\nt 1M is being compressed\n\nReviewed-by: Filipe Manana <fdmanana@suse.com>\nSigned-off-by: Qu Wenruo <wqu@suse.com>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "fstests: btrfs: add a regression test for incorrect inode incompressi…",
          "author_name": "Qu Wenruo",
          "author_login": "adam900710",
          "committed_at": "2026-02-16T13:17:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "66c8f2df3f3a8803c05336fff4c3ae3048b468b1",
          "body": "generic/735 attempts to create a file with nearly 2^32 blocks. However,\nsome filesystems have a maximum file block limit below this threshold.\nFor instance, F2FS is limited to approximately 2^30 blocks due to the\ncapacity of the inode. So add _require_blocks_in_file helper to skip the\ntest in such c\n[…]\nize are not masked.\n\nSigned-off-by: Joanne Chang <joannechien@google.com>\nReviewed-by: Chao Yu <chao@kernel.org>\nReviewed-by: Zorro Lang <zlang@redhat.com>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "common/rc: add _require_max_file_range_blocks helper",
          "author_name": "Joanne Chang",
          "author_login": null,
          "committed_at": "2026-02-09T03:56:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d290a3c1b673bdb9904681c06364f678702bcd9c",
          "body": "Something went wrong with this test when testing with fuse4fs, but I\ncouldn't tell what because this test writes so much data to seqres.full\nthat it completely filled the log partition.  Most of that output was\nfrom checks that actually succeeded, so let's reduce the amount of\nlogging from _mread (w\n[…]\n tests\")\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Carlos Maiolino <cmaiolino@redhat.com>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "generic/749: don't write a ton of _mread output to seqres.full",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-02-08T17:36:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "08989d57ae35221d68d0835de6cadd7603b5e1dd",
          "body": "Now that the kernel's parent pointer update code skips the attr intent\nmechanism when the attr fork is in local/shortform format, we need to\nbloat the attr fork to force the slow path for error injection testing.\n\nSigned-off-by: Darrick J. Wong <djwong@kernel.org>\nReviewed-by: Carlos Maiolino <cmaiolino@redhat.com>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Zorro Lang <zlang@kernel.org>",
          "is_bot": false,
          "headline": "xfs/620: force xattr leaf format for this test",
          "author_name": "Darrick J. Wong",
          "author_login": null,
          "committed_at": "2026-02-08T17:31:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 255,
      "latest_release_at": "2026-05-15T16:20:23Z",
      "latest_release_tag": "v2026.05.17",
      "releases_from_tags": true,
      "days_since_last_push": 11,
      "active_weeks_last_year": 44,
      "days_since_latest_release": 77,
      "mean_days_between_releases": 23.2
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 28,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 89,
      "stars": 163,
      "watchers": 6,
      "fork_history": {
        "days": [
          {
            "date": "2015-03-30",
            "count": 1
          },
          {
            "date": "2017-01-16",
            "count": 1
          },
          {
            "date": "2017-07-20",
            "count": 1
          },
          {
            "date": "2018-02-22",
            "count": 1
          },
          {
            "date": "2018-04-04",
            "count": 1
          },
          {
            "date": "2018-11-08",
            "count": 1
          },
          {
            "date": "2019-01-15",
            "count": 1
          },
          {
            "date": "2019-03-10",
            "count": 1
          },
          {
            "date": "2019-03-21",
            "count": 1
          },
          {
            "date": "2019-04-10",
            "count": 1
          },
          {
            "date": "2019-04-16",
            "count": 1
          },
          {
            "date": "2019-07-03",
            "count": 1
          },
          {
            "date": "2019-08-01",
            "count": 1
          },
          {
            "date": "2019-10-23",
            "count": 1
          },
          {
            "date": "2019-12-11",
            "count": 1
          },
          {
            "date": "2020-01-07",
            "count": 1
          },
          {
            "date": "2020-01-24",
            "count": 1
          },
          {
            "date": "2020-02-17",
            "count": 1
          },
          {
            "date": "2020-04-24",
            "count": 1
          },
          {
            "date": "2020-06-23",
            "count": 1
          },
          {
            "date": "2020-06-26",
            "count": 1
          },
          {
            "date": "2020-07-21",
            "count": 1
          },
          {
            "date": "2020-08-06",
            "count": 1
          },
          {
            "date": "2021-06-04",
            "count": 1
          },
          {
            "date": "2021-07-15",
            "count": 1
          },
          {
            "date": "2021-07-26",
            "count": 1
          },
          {
            "date": "2021-09-02",
            "count": 1
          },
          {
            "date": "2021-09-27",
            "count": 1
          },
          {
            "date": "2021-11-17",
            "count": 1
          },
          {
            "date": "2021-12-01",
            "count": 1
          },
          {
            "date": "2022-02-01",
            "count": 1
          },
          {
            "date": "2022-02-16",
            "count": 1
          },
          {
            "date": "2022-02-28",
            "count": 1
          },
          {
            "date": "2022-03-09",
            "count": 1
          },
          {
            "date": "2022-03-28",
            "count": 1
          },
          {
            "date": "2022-04-01",
            "count": 1
          },
          {
            "date": "2022-04-07",
            "count": 1
          },
          {
            "date": "2022-05-03",
            "count": 1
          },
          {
            "date": "2022-05-10",
            "count": 1
          },
          {
            "date": "2022-07-26",
            "count": 1
          },
          {
            "date": "2022-08-19",
            "count": 1
          },
          {
            "date": "2022-09-12",
            "count": 1
          },
          {
            "date": "2022-09-14",
            "count": 1
          },
          {
            "date": "2022-09-15",
            "count": 2
          },
          {
            "date": "2022-10-25",
            "count": 1
          },
          {
            "date": "2022-11-05",
            "count": 1
          },
          {
            "date": "2022-12-09",
            "count": 1
          },
          {
            "date": "2023-02-09",
            "count": 1
          },
          {
            "date": "2023-02-27",
            "count": 1
          },
          {
            "date": "2023-03-28",
            "count": 1
          },
          {
            "date": "2023-04-07",
            "count": 1
          },
          {
            "date": "2023-06-05",
            "count": 1
          },
          {
            "date": "2023-06-08",
            "count": 1
          },
          {
            "date": "2023-06-21",
            "count": 1
          },
          {
            "date": "2023-09-17",
            "count": 1
          },
          {
            "date": "2023-09-18",
            "count": 1
          },
          {
            "date": "2024-01-24",
            "count": 1
          },
          {
            "date": "2024-03-04",
            "count": 1
          },
          {
            "date": "2024-03-19",
            "count": 1
          },
          {
            "date": "2024-04-02",
            "count": 2
          },
          {
            "date": "2024-07-26",
            "count": 1
          },
          {
            "date": "2024-09-01",
            "count": 1
          },
          {
            "date": "2024-09-09",
            "count": 1
          },
          {
            "date": "2024-09-27",
            "count": 1
          },
          {
            "date": "2024-12-27",
            "count": 1
          },
          {
            "date": "2024-12-28",
            "count": 1
          },
          {
            "date": "2025-04-28",
            "count": 1
          },
          {
            "date": "2025-06-27",
            "count": 1
          },
          {
            "date": "2025-06-30",
            "count": 1
          },
          {
            "date": "2025-09-08",
            "count": 1
          },
          {
            "date": "2025-10-10",
            "count": 1
          },
          {
            "date": "2025-12-12",
            "count": 1
          },
          {
            "date": "2025-12-20",
            "count": 1
          },
          {
            "date": "2026-02-08",
            "count": 1
          },
          {
            "date": "2026-02-16",
            "count": 1
          },
          {
            "date": "2026-03-11",
            "count": 1
          },
          {
            "date": "2026-03-20",
            "count": 1
          },
          {
            "date": "2026-03-29",
            "count": 1
          },
          {
            "date": "2026-04-18",
            "count": 1
          },
          {
            "date": "2026-05-14",
            "count": 1
          },
          {
            "date": "2026-05-16",
            "count": 1
          },
          {
            "date": "2026-05-19",
            "count": 1
          },
          {
            "date": "2026-07-11",
            "count": 1
          },
          {
            "date": "2026-07-21",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 86,
        "total_forks": 89
      },
      "star_history": null,
      "open_issues_and_prs": 2
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile",
        "build/Makefile",
        "build/rpm/Makefile",
        "build/tar/Makefile",
        "common/Makefile",
        "include/Makefile",
        "lib/Makefile",
        "ltp/Makefile",
        "m4/Makefile",
        "src/Makefile",
        "src/aio-dio-regress/Makefile",
        "src/log-writes/Makefile",
        "src/perf/Makefile",
        "src/vfs/Makefile",
        "tests/Makefile",
        "tests/btrfs/Makefile",
        "tests/ceph/Makefile",
        "tests/cifs/Makefile",
        "tests/ext4/Makefile",
        "tests/f2fs/Makefile",
        "tests/generic/Makefile",
        "tests/nfs/Makefile",
        "tests/ocfs2/Makefile",
        "tests/overlay/Makefile",
        "tests/perf/Makefile",
        "tests/selftest/Makefile",
        "tests/tmpfs/Makefile",
        "tests/udf/Makefile",
        "tests/xfs/Makefile",
        "tools/Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 240065,
      "source_files_sampled": 220,
      "oversized_source_files": 9,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [],
      "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": 6,
        "direct_affected_count": 0
      },
      "ecosystems": [],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "-require-dm-target",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "-require-exportfs",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "-require-fio-results",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "-require-log-writes",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "-require-statx",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "-require-test",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 6,
        "direct_count": 0,
        "indirect_count": 6
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 2,
        "merged_prs": 0,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 4
      },
      "bus_factor": 7,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "djwong",
          "commits": 458,
          "avatar_url": "https://avatars.githubusercontent.com/u/3425571?v=4"
        },
        {
          "type": "User",
          "login": "fdmanana",
          "commits": 394,
          "avatar_url": "https://avatars.githubusercontent.com/u/170624?v=4"
        },
        {
          "type": "User",
          "login": "natoscott",
          "commits": 260,
          "avatar_url": "https://avatars.githubusercontent.com/u/960510?v=4"
        },
        {
          "type": "User",
          "login": "dgchinner",
          "commits": 256,
          "avatar_url": "https://avatars.githubusercontent.com/u/256217447?v=4"
        },
        {
          "type": "User",
          "login": "amir73il",
          "commits": 253,
          "avatar_url": "https://avatars.githubusercontent.com/u/453028?v=4"
        },
        {
          "type": "User",
          "login": "ebiggers",
          "commits": 150,
          "avatar_url": "https://avatars.githubusercontent.com/u/2373140?v=4"
        },
        {
          "type": "User",
          "login": "sandeen",
          "commits": 147,
          "avatar_url": "https://avatars.githubusercontent.com/u/427124?v=4"
        },
        {
          "type": "User",
          "login": "adam900710",
          "commits": 135,
          "avatar_url": "https://avatars.githubusercontent.com/u/460269?v=4"
        },
        {
          "type": "User",
          "login": "asj",
          "commits": 121,
          "avatar_url": "https://avatars.githubusercontent.com/u/1481309?v=4"
        },
        {
          "type": "User",
          "login": "tytso",
          "commits": 118,
          "avatar_url": "https://avatars.githubusercontent.com/u/51416?v=4"
        }
      ],
      "contributors_sampled": 100,
      "top_contributor_share": 0.128
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 23 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "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": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 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": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "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": null,
            "reason": "No tokens found",
            "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": "acb6d4cb84205a8e3f19ca470cfcf7bf6d93a509",
        "ran_at": "2026-08-01T14:58:36Z",
        "aggregate_score": 4.1,
        "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-21T11:10:19Z",
      "oldest_open_prs": [
        {
          "number": 4,
          "created_at": "2024-03-20T01:35:53Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 5,
          "created_at": "2024-03-20T03:17:23Z",
          "last_comment_at": "2024-03-26T19:55:09Z",
          "last_comment_author": "kdave"
        }
      ],
      "last_merged_pr_at": null,
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/kdave/xfstests",
    "host": "github.com",
    "name": "xfstests",
    "owner": "kdave"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": "The weighted overall 57 is calibrated to 60 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 57,
            "calibrated": 60,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 60,
      "inputs": {
        "security": 41,
        "vitality": 87,
        "community": 50,
        "governance": 55,
        "calibration": "2026-08-02",
        "engineering": 48,
        "ai_readiness": 44,
        "weighted_overall_raw": 57
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 87,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 87,
            "inputs": {
              "commits_last_year": 255,
              "human_commit_share": 1,
              "days_since_last_push": 11,
              "active_weeks_last_year": 44
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 11 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "44/52 weeks with commits",
                "points": 30.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 44
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "255 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 255
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 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": 88,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v2026.05.17",
              "releases_from_tags": true,
              "days_since_latest_release": 77,
              "mean_days_between_releases": 23.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 77 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 77
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~23.2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 23.2
                    }
                  }
                ],
                "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": "exceptional",
            "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": 48,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 48 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 48
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 50,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 56,
            "inputs": {
              "forks": 89,
              "stars": 163,
              "watchers": 6,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "163 stars",
                "points": 35.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 163
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "89 forks",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 89
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "6 watchers",
                "points": 3.9,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "weak",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 44,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "readme_badges": null,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "readme_badge_services": [],
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 55,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "exceptional",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 94,
            "inputs": {
              "bus_factor": 7,
              "contributors_sampled": 100,
              "top_contributor_share": 0.128
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "7 contributor(s) cover half of all commits",
                "points": 51.3,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 13% of commits",
                "points": 19.6,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 13
                    }
                  }
                ],
                "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 23 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "critical",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution, Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution",
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 0,
              "closed_issues": 0,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 4,
              "first_time_authors_30d": null,
              "first_time_prs_merged_30d": null,
              "first_time_prs_decided_30d": null
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "0/4 decided PRs merged",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 0,
                      "decided": 4
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 62,
            "inputs": {
              "followers": 139,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "kdave",
              "public_repos": 44,
              "account_age_days": 5195
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "139 followers of kdave",
                "points": 15.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 139,
                      "login": "kdave"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "44 public repos, account ~14 yr old",
                "points": 24,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 44
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 14
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "weak",
        "name": "Engineering Quality",
        "value": 48,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 30,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": 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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [
                "filesystems",
                "linux",
                "testing"
              ],
              "has_wiki": false,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": 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": "3 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "weak",
        "name": "Security",
        "value": 41,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "weak",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 41,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 12,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 6,
              "scorecard_aggregate": 4.1
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 23 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 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": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "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": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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": "exceptional",
            "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"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 6
            },
            "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": "weak",
        "name": "AI Readiness",
        "value": 44,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "weak",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "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": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "weak",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 44,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [
                "Makefile",
                "build/Makefile",
                "build/rpm/Makefile",
                "build/tar/Makefile",
                "common/Makefile",
                "include/Makefile",
                "lib/Makefile",
                "ltp/Makefile",
                "m4/Makefile",
                "src/Makefile",
                "src/aio-dio-regress/Makefile",
                "src/log-writes/Makefile",
                "src/perf/Makefile",
                "src/vfs/Makefile",
                "tests/Makefile",
                "tests/btrfs/Makefile",
                "tests/ceph/Makefile",
                "tests/cifs/Makefile",
                "tests/ext4/Makefile",
                "tests/f2fs/Makefile",
                "tests/generic/Makefile",
                "tests/nfs/Makefile",
                "tests/ocfs2/Makefile",
                "tests/overlay/Makefile",
                "tests/perf/Makefile",
                "tests/selftest/Makefile",
                "tests/tmpfs/Makefile",
                "tests/udf/Makefile",
                "tests/xfs/Makefile",
                "tools/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile, build/Makefile, build/rpm/Makefile, build/tar/Makefile, common/Makefile, include/Makefile, lib/Makefile, ltp/Makefile, m4/Makefile, src/Makefile, src/aio-dio-regress/Makefile, src/log-writes/Makefile, src/perf/Makefile, src/vfs/Makefile, tests/Makefile, tests/btrfs/Makefile, tests/ceph/Makefile, tests/cifs/Makefile, tests/ext4/Makefile, tests/f2fs/Makefile, tests/generic/Makefile, tests/nfs/Makefile, tests/ocfs2/Makefile, tests/overlay/Makefile, tests/perf/Makefile, tests/selftest/Makefile, tests/tmpfs/Makefile, tests/udf/Makefile, tests/xfs/Makefile, tools/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile, build/Makefile, build/rpm/Makefile, build/tar/Makefile, common/Makefile, include/Makefile, lib/Makefile, ltp/Makefile, m4/Makefile, src/Makefile, src/aio-dio-regress/Makefile, src/log-writes/Makefile, src/perf/Makefile, src/vfs/Makefile, tests/Makefile, tests/btrfs/Makefile, tests/ceph/Makefile, tests/cifs/Makefile, tests/ext4/Makefile, tests/f2fs/Makefile, tests/generic/Makefile, tests/nfs/Makefile, tests/ocfs2/Makefile, tests/overlay/Makefile, tests/perf/Makefile, tests/selftest/Makefile, tests/tmpfs/Makefile, tests/udf/Makefile, tests/xfs/Makefile, tools/Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 53,
            "inputs": {
              "primary_language": "Shell",
              "largest_source_bytes": 240065,
              "source_files_sampled": 220,
              "oversized_source_files": 9
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Shell without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Shell"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "9/220 source files over 60KB",
                "points": 52.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 220,
                      "oversized": 9
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "top": [],
      "labels": [],
      "scores": {},
      "primary": null,
      "evidence": [],
      "artifacts": [],
      "confidence": "none",
      "host_extension": false,
      "runs_as_process": false,
      "consumed_by_code": false
    },
    "metrics_version": "2.5.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-08-01T14:58:51.921293Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/k/kdave/xfstests.svg",
  "full_name": "kdave/xfstests",
  "license_state": "custom",
  "license_spdx": null
}

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

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

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