Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 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 · CEigene Lizenz★ 163 Sterne⑂ 89 Forksseit März 2013Auf GitHub ansehen ↗

kdave/xfstests erreicht einen Gesundheitsindex von 60 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (87/100) ab, am schwächsten bei Security (41/100). Zuletzt vor 11 Tagen aktualisiert. 7 Mitwirkende tragen den Großteil der jüngsten Arbeit.

60
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer standardisierten Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr gewichtetes Mittel, kalibriert auf die Verteilung des öffentlichen Registers, sodass die Stufen Perzentilbedeutung tragen; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze Gefährdet von 34.

60
Außergewöhnlich93-100Die Spitzengruppe des Registers (≈ obere 5 %); erfüllt im Wesentlichen alle geprüften Kriterien
Exzellent80-92Durchgehend stark; geringfügige Lücken
Gut65-79Gesund; Lücken sind begrenzt und beherrschbar
Mittel50-64Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Schwach35-49Wesentliche Schwächen in mehreren Bereichen
Gefährdet20-34Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-19Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Der gewichtete Gesamtwert 57 wird auf der veröffentlichten Indexskala auf 60 kalibriert (Register-Kalibrierung 2026-08-02).

Eigentümerschaft

kdavePersönliches Konto
139 Follower44 öffentliche Reposseit Mai 2012SUSE

Dieses Repository gehört einem persönlichen Konto. Ein Projekt mit nur einem Eigentümer trägt ein höheres Kontinuitätsrisiko als ein organisationsgetragenes.

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

87Exzellent · 21 % des Gesamtindex
Wie die Bewertung erfolgt
28.8/36Push-Aktualität — letzter Push vor 11 Tagen
30.5/36Commit-Rhythmus — 44/52 Wochen mit Commits
18/18Commit-Volumen — 255 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year255
human_commit_share1
days_since_last_push11
active_weeks_last_year44
Wie die Bewertung erfolgt
16.2/27Liefert Releases aus — 100 Versions-Tags (keine GitHub-Releases)
36/36Release-Aktualität — letztes Release vor 77 Tagen
27/27Release-Rhythmus — ein Release etwa alle 23,2 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count100
latest_release_tagv2026.05.17
releases_from_tagsja
days_since_latest_release77
mean_days_between_releases23,2
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

50Mittel · 17 % des Gesamtindex
Wie die Bewertung erfolgt
35.8/60Stars — 163 Stars
16.2/25Forks — 89 Forks
3.9/15Watcher — 6 Watcher
Verwendete Eingangsdaten
forks89
stars163
watchers6
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
16.9/22.5Lizenz — Lizenzdatei vorhanden, keine anerkannte Lizenz
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licensenein
readme_badges
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
readme_badge_services
has_pull_request_templatenein

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

55Mittel · 23 % des Gesamtindex
Wie die Bewertung erfolgt
51.3/54Bus-Faktor — 7 Beitragende decken die Hälfte aller Commits ab
19.6/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 13 % der Commits
13.5/13.5Breite der Beitragenden — 100 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 23 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor7
contributors_sampled100
top_contributor_share0,128
Wie die Bewertung erfolgt
0/42Issue-Lösungsquote — keine Issues oder keine Daten
0/30PR-Annahme — 0/4 entschiedene PRs gemergt
0/13Newcomer PR acceptance — kein PR eines Erstbeitragenden in 30 Tagen entschieden
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
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
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Issue-Lösungsquote, newcomer_pr_acceptance. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
15.4/25Reichweite des Inhabers — 139 Follower von kdave
24/25Kontohistorie — 44 öffentliche Repos, Kontoalter ca. 14 Jahre
Verwendete Eingangsdaten
followers139
owner_typeUser
is_verified
owner_loginkdave
public_repos44
account_age_days5.195
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

48Schwach · 19 % des Gesamtindex
Wie die Bewertung erfolgt
0/24CI-Workflows
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — keine Daten
Verwendete Eingangsdaten
has_cinein
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: CI-Tests. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
10/10Repository-Beschreibung
10/10Topics — 3 Topics
0/10Wiki
Verwendete Eingangsdaten
topicsfilesystems, linux, testing
has_wikinein
homepage
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

41Schwach · 16 % des Gesamtindex
Wie die Bewertung erfolgt
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 — keine Daten
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 — keine Daten
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — 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 — keine Daten
0/5Pinned-Dependencies — keine Daten
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — keine Daten
0/7.5Token-Permissions — keine Daten
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate4,1
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Trägt ein bewusst kleines Gewicht (4 %): Agenten-Tooling ist ein echtes Pflegesignal, doch ein Repository ohne jedes Signal kann weiterhin 100/100 erreichen.

44Schwach · 4 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 100 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share1
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
18/18Bootstrap mit einem Befehl — 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/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
0/11Statische Typprüfung
0/10Reproduzierbare Umgebung
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — keine Daten
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfiles
has_dockerfilenein
typed_languagenein
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_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Pinned-Dependencies. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
0/45Typprüfbarer Code — Shell ohne Typprüfungs-Konfiguration
52.8/55Handhabbare Dateigrößen — 9/220 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageShell
largest_source_bytes240.065
source_files_sampled220
oversized_source_files9

Eckdaten

163GitHub-Sterne
100Mitwirkende
255Commits, letzte 12 Monate
11Tage seit letztem Push
100Releases
7Bus-Faktor
0offene Issues
Paket-Ökosysteme

Warnungen zur Datenerhebung

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

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 89 ⇿
0Sterne
89Forks
100Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

0204060801008642015-032020-112026-07
Major 0Minor 0Patch 100

Jeder Punkt umfasst 11 Tage.

OpenSSF Scorecard 4.1 / 10
4.1Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).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
k. A.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
k. A.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
k. A.Packagingpackaging workflow not detected
k. A.Pinned-Dependenciesno dependencies found
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
k. A.Token-PermissionsNo tokens found
10Vulnerabilities0 existing vulnerabilities detected
Alle Abhängigkeiten 6

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 0 direkte und 6 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

RegistryPaketVersionBeziehung
PyPI-require-dm-targetindirekt
PyPI-require-exportfsindirekt
PyPI-require-fio-resultsindirekt
PyPI-require-log-writesindirekt
PyPI-require-statxindirekt
PyPI-require-testindirekt
Abhängigkeits-Advisories nicht bewertet

Der Advisory-Abgleich konnte für diesen Bericht nicht ausgeführt werden: No resolved dependencies carried a version and a supported ecosystem

JSON-Rohbericht maschinenlesbar
{
  "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
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v2.5.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistiken.