Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-26 13:22 UTC

Fallout-build / Fallout

☢️ Fallout — The C#/.NET Build System

C#Eigene Lizenz★ 100 Sterne⑂ 13 Forksseit Mai 2026Auf GitHub ansehen ↗

Fallout-build/Fallout erreicht einen Gesundheitsindex von 63 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei AI Readiness (82/100) ab, am schwächsten bei Sustainability & Governance (46/100). Zuletzt heute aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

63
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

63
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende 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.

Eigentümerschaft

Fallout.buildOrganisation
3 Follower8 öffentliche Reposseit Mai 2026

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Metriken nach Kategorie

Vitalität

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

74Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
9/36Commit-Rhythmus — 13/52 Wochen mit Commits
18/18Commit-Volumen — 336 Commits im letzten Jahr
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Verwendete Eingangsdaten
commits_last_year336
human_commit_share0,99
days_since_last_push0
active_weeks_last_year13
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 65 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 0 Tagen
27/27Release-Rhythmus — ein Release etwa alle 6,7 Tage
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Verwendete Eingangsdaten
releases_count65
latest_release_tagv10.4.0-rc.4
releases_from_tagsnein
days_since_latest_release0
mean_days_between_releases6,7

Community & Verbreitung

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

64Mittel · 18 % des Gesamtindex
Wie die Bewertung erfolgt
32.4/60Stars — 100 Stars
9/25Forks — 13 Forks
3.3/15Watcher — 5 Watcher
Verwendete Eingangsdaten
forks13
stars100
watchers5
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
18/18CONTRIBUTING-Leitfaden
13.5/13.5Verhaltenskodex
0/7.2Issue-Vorlage
6.3/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingja
has_issue_templatenein
has_code_of_conductja
has_pull_request_templateja

Nachhaltigkeit & Governance

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

46Gefährdet · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
3.8/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 83 % der Commits
13.5/13.5Breite der Beitragenden — 99 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 24 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor1
contributors_sampled99
top_contributor_share0,831
Wie die Bewertung erfolgt
19.8/46.8Issue-Lösungsquote — 42 % der Issues geschlossen
32.7/38.3PR-Annahme — 225/263 entschiedene PRs gemergt
10.5/15OpenSSF Scorecard: Code-Review — Found 11/14 approved changesets -- score normalized to 7
Verwendete Eingangsdaten
merged_prs225
open_issues154
closed_issues113
issue_closed_ratio0,423
closed_unmerged_prs38
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
4.3/25Reichweite des Inhabers — 3 Follower von Fallout-build
7.3/25Kontohistorie — 8 öffentliche Repos, Kontoalter ca. 0 Jahre
Verwendete Eingangsdaten
followers3
owner_typeOrganization
is_verified
owner_loginFallout-build
public_repos8
account_age_days59

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

80Gut · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 5 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 14 out of 14 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfigja
has_linter_confignein
has_precommit_confignein

Dokumentation

90Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://fallout.build/
10/10Repository-Beschreibung
0/10Topics
10/10Wiki
Verwendete Eingangsdaten
topics
has_wikija
homepagehttps://fallout.build/
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

54Mittel · 16 % des Gesamtindex
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 14 out of 14 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
5.2/7.5Code-Review — Found 11/14 approved changesets -- score normalized to 7
2.5/2.5Contributors — project has 24 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5Lizenz — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
1.5/5SAST — SAST tool is not run on all commits -- score normalized to 3
4.5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate5,4
Wie die Bewertung erfolgt
8.9/35Direkte Abhängigkeiten ohne bekannte Advisories — 3 betroffen: Microsoft.Build.Tasks.Core 17.11.48 (high 8.0), Scriban 7.2.0 (high 7.5), System.Security.Cryptography.Xml 10.0.6 (high 8.1)
0/25Indirekte Abhängigkeiten ohne bekannte Advisories — transitive Menge in diesem Bereich nicht von Entwicklungs- und Test-Abhängigkeiten trennbar
33.3/40Keine offenen Advisories — 1 Paket(e) mit Advisory seit über 90 Tagen unbehandelt; ältestes vor 438 Tagen veröffentlicht
Verwendete Eingangsdaten
sourceosv
advisories9
affected_packages3
assessed_packages311
unassessed_packages8
affected_by_severityhigh 3
direct_affected_packages3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Indirekte Abhängigkeiten ohne bekannte Advisories. Die verbleibenden Gewichte wurden renormalisiert. 311 aufgelöste Abhängigkeiten wurden mit OSV abgeglichen. 8 konnten nicht bewertet werden — keine aufgelöste Version, ein nicht unterstütztes Ökosystem oder außerhalb der ausgewiesenen Paketliste. Dieses Repository veröffentlicht kein Paket, das der Index auflöst; bewertet wurde daher der Abhängigkeitsgraph des Repositorys. Dieser Graph vermischt Entwicklungs- und Test-Pins mit ausgelieferten Abhängigkeiten, daher werden nur die deklarierten Laufzeit-Abhängigkeiten bewertet; transitive Befunde werden als Kontext ausgewiesen und fließen nicht in die Bewertung ein. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

82Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — AGENTS.md, CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
39.3/40Lesbare Commit-Historie — 73 von 99 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,737
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes12.008
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — build/_build.csproj, src/Fallout.Build.Shared/Fallout.Build.Shared.csproj, src/Fallout.Build/Fallout.Build.csproj (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — C# (statisch typisiert)
10/10Reproduzierbare Umgebung — Dockerfile
10/10Belegte Agentenpraxis — 47 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
8/8Automatisierte Wartung — 1 der letzten 100 Commits sind automatisierte Abhängigkeits-Updates
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfiles
has_dockerfileja
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0,47
toolchain_manifestsbuild/_build.csproj, src/Fallout.Build.Shared/Fallout.Build.Shared.csproj, src/Fallout.Build/Fallout.Build.csproj, src/Fallout.Cli/Fallout.Cli.csproj, src/Fallout.Cli/templates/_build.csproj, src/Fallout.Common/CI/TeamCity/Configuration/pom.xml, src/Fallout.Common/Fallout.Common.csproj, src/Fallout.Components/Fallout.Components.csproj, src/Fallout.Core/Fallout.Core.csproj, src/Fallout.MSBuildTasks/Fallout.MSBuildTasks.csproj, src/Fallout.Migrate.Analyzers/Fallout.Migrate.Analyzers.csproj, src/Fallout.Migrate/Fallout.Migrate.csproj, src/Fallout.ProjectModel/Fallout.ProjectModel.csproj, src/Fallout.SourceGenerators/Fallout.SourceGenerators.csproj, src/Fallout.Tooling.Generator/Fallout.Tooling.Generator.csproj, src/Fallout.Tooling/Fallout.Tooling.csproj, src/Fallout.Utilities.IO.Compression/Fallout.Utilities.IO.Compression.csproj, src/Fallout.Utilities.IO.Globbing/Fallout.Utilities.IO.Globbing.csproj, src/Fallout.Utilities.Net/Fallout.Utilities.Net.csproj, src/Fallout.Utilities.Text.Json/Fallout.Utilities.Text.Json.csproj, src/Fallout.Utilities.Text.Yaml/Fallout.Utilities.Text.Yaml.csproj, src/Fallout.Utilities/Fallout.Utilities.csproj, src/Persistence/Fallout.Persistence.Solution/Fallout.Persistence.Solution.csproj, src/Persistence/Fallout.Solution/Fallout.Solution.csproj, src/Shims/Nuke.Build/Nuke.Build.csproj, src/Shims/Nuke.Common/Nuke.Common.csproj, src/Shims/Nuke.Components/Nuke.Components.csproj, tests/Benchmarks/Fallout.Persistence.Solution.Benchmarks/Fallout.Persistence.Solution.Benchmarks.csproj, tests/Consumers/Fallout.Consumer.Local/Fallout.Consumer.Local.csproj, tests/Consumers/Fallout.Consumer.NuGet/Fallout.Consumer.NuGet.csproj, tests/Consumers/Nuke.Consumer/Nuke.Consumer.csproj, tests/Fallout.Build.Specs/Fallout.Build.Specs.csproj, tests/Fallout.Cli.Specs/Fallout.Cli.Specs.csproj, tests/Fallout.Common.Specs/Fallout.Common.Specs.csproj, tests/Fallout.Components.Specs/Fallout.Components.Specs.csproj, tests/Fallout.Core.Specs/Fallout.Core.Specs.csproj, tests/Fallout.Migrate.Analyzers.Specs/Fallout.Migrate.Analyzers.Specs.csproj, tests/Fallout.Migrate.Specs/Fallout.Migrate.Specs.csproj, tests/Fallout.ProjectModel.Specs/Fallout.ProjectModel.Specs.csproj, tests/Fallout.Solution.Specs/Fallout.Solution.Specs.csproj, tests/Fallout.SourceGenerators.Specs/Fallout.SourceGenerators.Specs.csproj, tests/Fallout.Tooling.Specs/Fallout.Tooling.Specs.csproj, tests/Fallout.Utilities.Specs/Fallout.Utilities.Specs.csproj, tests/Nuke.Common.Shim.Specs/Nuke.Common.Shim.Specs.csproj, tests/Nuke.Components.Shim.Specs/Nuke.Components.Shim.Specs.csproj
dependency_bot_commit_share0,01
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — C# (statisch typisiert)
53.7/55Handhabbare Dateigrößen — 20/865 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageC#
largest_source_bytes2.377.944
source_files_sampled865
oversized_source_files20

Eckdaten

100GitHub-Sterne
99Mitwirkende
336Commits, letzte 12 Monate
0Tage seit letztem Push
65Releases
1Bus-Faktor
154offene Issues
NuGetPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch nuget package 'Fallout.GlobalTools' from its registry

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 13 ⇿
0Sterne
13Forks
2Releases

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.

03581013151322026-062026-062026-07
Major 0Minor 0Patch 0
OpenSSF Scorecard 5.4 / 10
5.4Gesamtwert

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-07-26 13:21 UTC

10Binary-Artifactsno binaries found in the repo
1Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests14 out of 14 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
7Code-ReviewFound 11/14 approved changesets -- score normalized to 7
10Contributorsproject has 24 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
3SASTSAST tool is not run on all commits -- score normalized to 3
9Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Direkte Abhängigkeiten 47
RegistryPaketVersionsvorgabeManifest
NuGetSystem.Security.Cryptography.Xml10.0.10build/_build.csproj
NuGetNerdbank.GitVersioning3.7.115build/_build.csproj
NuGetSystem.Text.Jsonsrc/Fallout.Build.Shared/Fallout.Build.Shared.csproj
NuGetMicrosoft.Extensions.DependencyModelsrc/Fallout.Build/Fallout.Build.csproj
NuGetSerilog.Formatting.Compactsrc/Fallout.Build/Fallout.Build.csproj
NuGetSerilog.Formatting.Compact.Readersrc/Fallout.Build/Fallout.Build.csproj
NuGetSerilog.Sinks.Consolesrc/Fallout.Build/Fallout.Build.csproj
NuGetSerilog.Sinks.Filesrc/Fallout.Build/Fallout.Build.csproj
NuGetMicrosoft.Extensions.DependencyInjectionsrc/Fallout.Cli/Fallout.Cli.csproj
NuGetSpectre.Consolesrc/Fallout.Cli/Fallout.Cli.csproj
NuGetMicrosoft.CodeAnalysis.CSharpsrc/Fallout.Cli/Fallout.Cli.csproj
NuGetMicrosoft.CodeAnalysis.Workspaces.MSBuildsrc/Fallout.Cli/Fallout.Cli.csproj
NuGetMicrosoft.CodeAnalysis.Workspaces.Commonsrc/Fallout.Cli/Fallout.Cli.csproj
NuGetAzure.Identitysrc/Fallout.Common/Fallout.Common.csproj
NuGetAzure.Security.KeyVault.Certificatessrc/Fallout.Common/Fallout.Common.csproj
NuGetAzure.Security.KeyVault.Keyssrc/Fallout.Common/Fallout.Common.csproj
NuGetAzure.Security.KeyVault.Secretssrc/Fallout.Common/Fallout.Common.csproj
NuGetOctokitsrc/Fallout.Common/Fallout.Common.csproj
NuGetNuGet.Packagingsrc/Fallout.MSBuildTasks/Fallout.MSBuildTasks.csproj
NuGetMicrosoft.Build.Utilities.Coresrc/Fallout.MSBuildTasks/Fallout.MSBuildTasks.csproj
NuGetMicrosoft.Build.Frameworksrc/Fallout.MSBuildTasks/Fallout.MSBuildTasks.csproj
NuGetMicrosoft.CodeAnalysis.CSharpsrc/Fallout.Migrate.Analyzers/Fallout.Migrate.Analyzers.csproj
NuGetMicrosoft.CodeAnalysis.CSharp.Workspacessrc/Fallout.Migrate.Analyzers/Fallout.Migrate.Analyzers.csproj
NuGetMicrosoft.CodeAnalysis.Analyzerssrc/Fallout.Migrate.Analyzers/Fallout.Migrate.Analyzers.csproj
NuGetJetBrains.Annotationssrc/Fallout.Migrate/Fallout.Migrate.csproj
NuGetSpectre.Console.Clisrc/Fallout.Migrate/Fallout.Migrate.csproj
NuGetMicrosoft.Build.Locatorsrc/Fallout.ProjectModel/Fallout.ProjectModel.csproj
NuGetMicrosoft.Buildsrc/Fallout.ProjectModel/Fallout.ProjectModel.csproj
NuGetMicrosoft.Build.Frameworksrc/Fallout.ProjectModel/Fallout.ProjectModel.csproj
NuGetMicrosoft.Build.Tasks.Coresrc/Fallout.ProjectModel/Fallout.ProjectModel.csproj
NuGetMicrosoft.Build.Utilities.Coresrc/Fallout.ProjectModel/Fallout.ProjectModel.csproj
NuGetMicrosoft.CodeAnalysis.CSharpsrc/Fallout.SourceGenerators/Fallout.SourceGenerators.csproj
NuGetMicrosoft.CodeAnalysis.Analyzerssrc/Fallout.SourceGenerators/Fallout.SourceGenerators.csproj
NuGetScribansrc/Fallout.SourceGenerators/Fallout.SourceGenerators.csproj
NuGetHtmlAgilityPacksrc/Fallout.Tooling.Generator/Fallout.Tooling.Generator.csproj
NuGetHumanizersrc/Fallout.Tooling.Generator/Fallout.Tooling.Generator.csproj
NuGetSystem.Text.Jsonsrc/Fallout.Tooling.Generator/Fallout.Tooling.Generator.csproj
NuGetSerilogsrc/Fallout.Tooling.Generator/Fallout.Tooling.Generator.csproj
NuGetSystem.ComponentModel.Annotationssrc/Fallout.Tooling.Generator/Fallout.Tooling.Generator.csproj
NuGetNuGet.Packagingsrc/Fallout.Tooling/Fallout.Tooling.csproj
NuGetSerilogsrc/Fallout.Tooling/Fallout.Tooling.csproj
NuGetSharpZipLibsrc/Fallout.Utilities.IO.Compression/Fallout.Utilities.IO.Compression.csproj
NuGetGlobsrc/Fallout.Utilities.IO.Globbing/Fallout.Utilities.IO.Globbing.csproj
NuGetSystem.Net.Httpsrc/Fallout.Utilities.Net/Fallout.Utilities.Net.csproj
NuGetSystem.Text.Jsonsrc/Fallout.Utilities.Net/Fallout.Utilities.Net.csproj
NuGetSystem.Text.Jsonsrc/Fallout.Utilities.Text.Json/Fallout.Utilities.Text.Json.csproj
NuGetYamlDotNetsrc/Fallout.Utilities.Text.Yaml/Fallout.Utilities.Text.Yaml.csproj
Alle Abhängigkeiten 319

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

RegistryPaketVersionBeziehung
NuGetAzure.Identity1.17.1direkt
NuGetAzure.Security.KeyVault.Certificates4.8.0direkt
NuGetAzure.Security.KeyVault.Keys4.8.0direkt
NuGetAzure.Security.KeyVault.Secrets4.8.0direkt
NuGetGlob1.1.9direkt
NuGetHtmlAgilityPack1.11.71direkt
NuGetHumanizer3.0.1direkt
NuGetJetBrains.Annotations2026.2.0direkt
NuGetMicrosoft.Build17.11.48direkt
NuGetMicrosoft.Build17.14.28direkt
NuGetMicrosoft.Build18.0.2direkt
NuGetMicrosoft.Build.Frameworkdirekt
NuGetMicrosoft.Build.Framework17.11.48direkt
NuGetMicrosoft.Build.Framework17.14.28direkt
NuGetMicrosoft.Build.Framework18.0.2direkt
NuGetMicrosoft.Build.Locator1.7.8direkt
NuGetMicrosoft.Build.Tasks.Core17.11.48direkt
NuGetMicrosoft.Build.Tasks.Core17.14.28direkt
NuGetMicrosoft.Build.Tasks.Core18.0.2direkt
NuGetMicrosoft.Build.Utilities.Coredirekt
NuGetMicrosoft.Build.Utilities.Core17.11.48direkt
NuGetMicrosoft.Build.Utilities.Core17.14.28direkt
NuGetMicrosoft.Build.Utilities.Core18.0.2direkt
NuGetMicrosoft.CodeAnalysis.Analyzers3.11.0direkt
NuGetMicrosoft.CodeAnalysis.CSharp4.12.0direkt
NuGetMicrosoft.CodeAnalysis.CSharp4.7.0direkt
NuGetMicrosoft.CodeAnalysis.CSharp.Workspaces4.12.0direkt
NuGetMicrosoft.CodeAnalysis.Workspaces.Common4.12.0direkt
NuGetMicrosoft.CodeAnalysis.Workspaces.MSBuild4.12.0direkt
NuGetMicrosoft.Extensions.DependencyInjection10.0.0direkt
NuGetMicrosoft.Extensions.DependencyModel10.0.0direkt
NuGetNerdbank.GitVersioning3.7.115direkt
NuGetNuGet.Packagingdirekt
NuGetNuGet.Packaging6.14.3direkt
NuGetOctokit14.0.0direkt
NuGetScriban7.2.0direkt
NuGetSerilog4.3.0direkt
NuGetSerilog.Formatting.Compact3.0.0direkt
NuGetSerilog.Formatting.Compact.Reader4.0.0direkt
NuGetSerilog.Sinks.Console6.1.1direkt
NuGetSerilog.Sinks.File7.0.0direkt
NuGetSharpZipLib1.4.2direkt
NuGetSpectre.Console0.49.1direkt
NuGetSpectre.Console.Cli0.49.1direkt
NuGetSystem.ComponentModel.Annotations5.0.0direkt
NuGetSystem.Net.Http4.3.4direkt
NuGetSystem.Security.Cryptography.Xml10.0.10direkt
NuGetSystem.Security.Cryptography.Xml10.0.6direkt
NuGetSystem.Security.Cryptography.Xml8.0.4direkt
NuGetSystem.Security.Cryptography.Xml9.0.18direkt
NuGetSystem.Text.Json10.0.8direkt
NuGetYamlDotNet16.3.0direkt
Mavenorg.jetbrains.kotlin:kotlin-maven-pluginindirekt
Mavenorg.jetbrains.kotlin:kotlin-script-runtimeindirekt
Mavenorg.jetbrains.kotlin:kotlin-stdlib-jdk8indirekt
Mavenorg.jetbrains.teamcity:configs-dsl-kotlinindirekt
Mavenorg.jetbrains.teamcity:configs-dsl-kotlin-plugins1.0-SNAPSHOTindirekt
Mavenorg.jetbrains.teamcity:teamcity-configs-maven-pluginindirekt
NuGetArgon0.33.0indirekt
NuGetAzure.Core1.50.0indirekt
NuGetBasic.Reference.Assemblies.NetStandard201.7.9indirekt
NuGetBenchmarkDotNet0.14.0indirekt
NuGetBenchmarkDotNet.Annotations0.14.0indirekt
NuGetCommandLineParser2.9.1indirekt
NuGetcoverlet.msbuild6.0.4indirekt
NuGetDiffEngine17.0.0indirekt
NuGetDiffPlex1.7.2indirekt
NuGetEmptyFiles8.17.0indirekt
NuGetFallout.Build11.0.8indirekt
NuGetFallout.Build.Shared11.0.8indirekt
NuGetFallout.Common11.0.8indirekt
NuGetFallout.Common_FALLOUT_VERSION_indirekt
NuGetFallout.Components11.0.8indirekt
NuGetFallout.ProjectModel11.0.8indirekt
NuGetFallout.SolutionModel11.0.8indirekt
NuGetFallout.Tooling11.0.8indirekt
NuGetFallout.Utilities11.0.8indirekt
NuGetFallout.Utilities.IO.Compression11.0.8indirekt
NuGetFallout.Utilities.IO.Globbing11.0.8indirekt
NuGetFallout.Utilities.Net11.0.8indirekt
NuGetFallout.Utilities.Text.Json11.0.8indirekt
NuGetFallout.Utilities.Text.Yaml11.0.8indirekt
NuGetFallout.VisualStudio.SolutionPersistence11.0.8indirekt
NuGetFluentAssertions8.10.0indirekt
NuGetGee.External.Capstone2.3.0indirekt
NuGetGitHubActionsTestLogger2.4.1indirekt
NuGetHumanizer.Core2.14.1indirekt
NuGetHumanizer.Core3.0.1indirekt
NuGetHumanizer.Core.af3.0.1indirekt
NuGetHumanizer.Core.ar3.0.1indirekt
NuGetHumanizer.Core.az3.0.1indirekt
NuGetHumanizer.Core.bg3.0.1indirekt
NuGetHumanizer.Core.bn3.0.1indirekt
NuGetHumanizer.Core.ca3.0.1indirekt
NuGetHumanizer.Core.cs3.0.1indirekt
NuGetHumanizer.Core.da3.0.1indirekt
NuGetHumanizer.Core.de3.0.1indirekt
NuGetHumanizer.Core.el3.0.1indirekt
NuGetHumanizer.Core.es3.0.1indirekt
NuGetHumanizer.Core.fa3.0.1indirekt
NuGetHumanizer.Core.fi3.0.1indirekt
NuGetHumanizer.Core.fil3.0.1indirekt
NuGetHumanizer.Core.fr3.0.1indirekt
NuGetHumanizer.Core.he3.0.1indirekt
NuGetHumanizer.Core.hr3.0.1indirekt
NuGetHumanizer.Core.hu3.0.1indirekt
NuGetHumanizer.Core.hy3.0.1indirekt
NuGetHumanizer.Core.id3.0.1indirekt
NuGetHumanizer.Core.is3.0.1indirekt
NuGetHumanizer.Core.it3.0.1indirekt
NuGetHumanizer.Core.ja3.0.1indirekt
NuGetHumanizer.Core.ko3.0.1indirekt
NuGetHumanizer.Core.ku3.0.1indirekt
NuGetHumanizer.Core.lb3.0.1indirekt
NuGetHumanizer.Core.lt3.0.1indirekt
NuGetHumanizer.Core.lv3.0.1indirekt
NuGetHumanizer.Core.ms3.0.1indirekt
NuGetHumanizer.Core.mt3.0.1indirekt
NuGetHumanizer.Core.nb3.0.1indirekt
NuGetHumanizer.Core.nl3.0.1indirekt
NuGetHumanizer.Core.pl3.0.1indirekt
NuGetHumanizer.Core.pt3.0.1indirekt
NuGetHumanizer.Core.pt-BR3.0.1indirekt
NuGetHumanizer.Core.ro3.0.1indirekt
NuGetHumanizer.Core.ru3.0.1indirekt
NuGetHumanizer.Core.sk3.0.1indirekt
NuGetHumanizer.Core.sl3.0.1indirekt
NuGetHumanizer.Core.sr3.0.1indirekt
NuGetHumanizer.Core.sr-Latn3.0.1indirekt
NuGetHumanizer.Core.sv3.0.1indirekt
NuGetHumanizer.Core.th3.0.1indirekt
NuGetHumanizer.Core.tr3.0.1indirekt
NuGetHumanizer.Core.uk3.0.1indirekt
NuGetHumanizer.Core.uz-Cyrl-UZ3.0.1indirekt
NuGetHumanizer.Core.uz-Latn-UZ3.0.1indirekt
NuGetHumanizer.Core.vi3.0.1indirekt
NuGetHumanizer.Core.zh-CN3.0.1indirekt
NuGetHumanizer.Core.zh-Hans3.0.1indirekt
NuGetHumanizer.Core.zh-Hant3.0.1indirekt
NuGetIced1.17.0indirekt
NuGetIsExternalInit1.0.3indirekt
NuGetMicrosoft.Bcl.AsyncInterfaces1.1.0indirekt
NuGetMicrosoft.Bcl.AsyncInterfaces10.0.8indirekt
NuGetMicrosoft.Bcl.AsyncInterfaces8.0.0indirekt
NuGetMicrosoft.Build.Tasks.Git8.0.0indirekt
NuGetMicrosoft.CodeAnalysis.Analyzer.Testing1.1.2indirekt
NuGetMicrosoft.CodeAnalysis.CodeFix.Testing1.1.2indirekt
NuGetMicrosoft.CodeAnalysis.Common4.12.0indirekt
NuGetMicrosoft.CodeAnalysis.Common4.7.0indirekt
NuGetMicrosoft.CodeAnalysis.CSharp.Analyzer.Testing1.1.2indirekt
NuGetMicrosoft.CodeAnalysis.CSharp.Analyzer.Testing.XUnit1.1.2indirekt
NuGetMicrosoft.CodeAnalysis.CSharp.CodeFix.Testing1.1.2indirekt
NuGetMicrosoft.CodeAnalysis.CSharp.CodeFix.Testing.XUnit1.1.2indirekt
NuGetMicrosoft.CodeAnalysis.Testing.Verifiers.XUnit1.1.2indirekt
NuGetMicrosoft.CodeCoverage18.0.1indirekt
NuGetMicrosoft.CSharp4.7.0indirekt
NuGetMicrosoft.Diagnostics.NETCore.Client0.2.251802indirekt
NuGetMicrosoft.Diagnostics.Runtime2.2.332302indirekt
NuGetMicrosoft.Diagnostics.Tracing.TraceEvent3.1.8indirekt
NuGetMicrosoft.DotNet.PlatformAbstractions3.1.6indirekt
NuGetMicrosoft.Extensions.Configuration2.1.1indirekt
NuGetMicrosoft.Extensions.Configuration.Abstractions2.1.1indirekt
NuGetMicrosoft.Extensions.Configuration.Binder2.1.1indirekt
NuGetMicrosoft.Extensions.DependencyInjection.Abstractions10.0.0indirekt
NuGetMicrosoft.Extensions.DependencyInjection.Abstractions2.1.1indirekt
NuGetMicrosoft.Extensions.DependencyInjection.Abstractions8.0.2indirekt
NuGetMicrosoft.Extensions.Logging2.1.1indirekt
NuGetMicrosoft.Extensions.Logging8.0.0indirekt
NuGetMicrosoft.Extensions.Logging.Abstractions2.1.1indirekt
NuGetMicrosoft.Extensions.Logging.Abstractions8.0.3indirekt
NuGetMicrosoft.Extensions.Options2.1.1indirekt
NuGetMicrosoft.Extensions.Options8.0.0indirekt
NuGetMicrosoft.Extensions.Primitives2.1.1indirekt
NuGetMicrosoft.Extensions.Primitives8.0.0indirekt
NuGetMicrosoft.Identity.Client4.78.0indirekt
NuGetMicrosoft.Identity.Client.Extensions.Msal4.78.0indirekt
NuGetMicrosoft.IdentityModel.Abstractions8.14.0indirekt
NuGetMicrosoft.NET.StringTools17.11.48indirekt
NuGetMicrosoft.NET.StringTools17.14.28indirekt
NuGetMicrosoft.NET.StringTools18.0.2indirekt
NuGetMicrosoft.NET.Test.Sdk18.0.1indirekt
NuGetMicrosoft.NETCore.Platforms1.1.0indirekt
NuGetMicrosoft.NETCore.Platforms1.1.1indirekt
NuGetMicrosoft.NETCore.Platforms5.0.0indirekt
NuGetMicrosoft.NETCore.Targets1.1.0indirekt
NuGetMicrosoft.SourceLink.Common8.0.0indirekt
NuGetMicrosoft.SourceLink.GitHub8.0.0indirekt
NuGetMicrosoft.TestPlatform.ObjectModel18.0.1indirekt
NuGetMicrosoft.TestPlatform.TestHost18.0.1indirekt
NuGetMicrosoft.VisualStudio.Composition16.1.8indirekt
NuGetMicrosoft.VisualStudio.Composition.NetFxAttributes16.1.8indirekt
NuGetMicrosoft.VisualStudio.Validation15.0.82indirekt
NuGetMono.Cecil0.11.3indirekt
NuGetNetArchTest.Rules1.3.2indirekt
NuGetNETStandard.Library2.0.3indirekt
NuGetNewtonsoft.Json13.0.3indirekt
NuGetNuGet.Common6.14.3indirekt
NuGetNuGet.Configuration6.14.3indirekt
NuGetNuGet.Frameworks6.14.3indirekt
NuGetNuGet.Protocol6.3.4indirekt
NuGetNuGet.Resolver6.3.4indirekt
NuGetNuGet.Versioning6.14.3indirekt
NuGetPerfolizer0.3.17indirekt
NuGetPolySharp1.15.0indirekt
NuGetReportGenerator5.2.0indirekt
NuGetruntime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl4.3.2indirekt
NuGetruntime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl4.3.2indirekt
NuGetruntime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl4.3.2indirekt
NuGetruntime.native.System4.3.0indirekt
NuGetruntime.native.System.Net.Http4.3.0indirekt
NuGetruntime.native.System.Security.Cryptography.Apple4.3.0indirekt
NuGetruntime.native.System.Security.Cryptography.OpenSsl4.3.2indirekt
NuGetruntime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl4.3.2indirekt
NuGetruntime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl4.3.2indirekt
NuGetruntime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple4.3.0indirekt
NuGetruntime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl4.3.2indirekt
NuGetruntime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl4.3.2indirekt
NuGetruntime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl4.3.2indirekt
NuGetruntime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl4.3.2indirekt
NuGetruntime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl4.3.2indirekt
NuGetSimpleInfoName3.1.2indirekt
NuGetSystem.Buffers4.6.1indirekt
NuGetSystem.ClientModel1.8.0indirekt
NuGetSystem.CodeDom5.0.0indirekt
NuGetSystem.CodeDom8.0.0indirekt
NuGetSystem.CodeDom9.0.0indirekt
NuGetSystem.Collections4.3.0indirekt
NuGetSystem.Collections.Concurrent4.3.0indirekt
NuGetSystem.Collections.Immutable7.0.0indirekt
NuGetSystem.Collections.Immutable8.0.0indirekt
NuGetSystem.Collections.Immutable9.0.10indirekt
NuGetSystem.ComponentModel.Composition4.5.0indirekt
NuGetSystem.Composition8.0.0indirekt
NuGetSystem.Composition.AttributedModel8.0.0indirekt
NuGetSystem.Composition.Convention8.0.0indirekt
NuGetSystem.Composition.Hosting8.0.0indirekt
NuGetSystem.Composition.Runtime8.0.0indirekt
NuGetSystem.Composition.TypedParts8.0.0indirekt
NuGetSystem.Configuration.ConfigurationManager8.0.0indirekt
NuGetSystem.Configuration.ConfigurationManager9.0.0indirekt
NuGetSystem.Diagnostics.Debug4.3.0indirekt
NuGetSystem.Diagnostics.DiagnosticSource4.3.0indirekt
NuGetSystem.Diagnostics.DiagnosticSource8.0.1indirekt
NuGetSystem.Diagnostics.EventLog8.0.0indirekt
NuGetSystem.Diagnostics.EventLog9.0.0indirekt
NuGetSystem.Diagnostics.Tracing4.3.0indirekt
NuGetSystem.Formats.Asn18.0.1indirekt
NuGetSystem.Formats.Nrbf9.0.0indirekt
NuGetSystem.Globalization4.3.0indirekt
NuGetSystem.Globalization.Calendars4.3.0indirekt
NuGetSystem.Globalization.Extensions4.3.0indirekt
NuGetSystem.IO4.3.0indirekt
NuGetSystem.IO.FileSystem4.3.0indirekt
NuGetSystem.IO.FileSystem.Primitives4.3.0indirekt
NuGetSystem.IO.Pipelines10.0.8indirekt
NuGetSystem.IO.Pipelines8.0.0indirekt
NuGetSystem.Linq4.3.0indirekt
NuGetSystem.Management5.0.0indirekt
NuGetSystem.Management8.0.0indirekt
NuGetSystem.Memory4.6.3indirekt
NuGetSystem.Memory.Data8.0.1indirekt
NuGetSystem.Net.Primitives4.3.0indirekt
NuGetSystem.Numerics.Vectors4.6.1indirekt
NuGetSystem.Reflection4.3.0indirekt
NuGetSystem.Reflection.Metadata7.0.0indirekt
NuGetSystem.Reflection.Metadata8.0.0indirekt
NuGetSystem.Reflection.MetadataLoadContext8.0.0indirekt
NuGetSystem.Reflection.MetadataLoadContext9.0.0indirekt
NuGetSystem.Reflection.Primitives4.3.0indirekt
NuGetSystem.Resources.Extensions8.0.0indirekt
NuGetSystem.Resources.Extensions9.0.0indirekt
NuGetSystem.Resources.ResourceManager4.3.0indirekt
NuGetSystem.Runtime4.3.0indirekt
NuGetSystem.Runtime.CompilerServices.Unsafe6.1.2indirekt
NuGetSystem.Runtime.Extensions4.3.0indirekt
NuGetSystem.Runtime.Handles4.3.0indirekt
NuGetSystem.Runtime.InteropServices4.3.0indirekt
NuGetSystem.Runtime.Numerics4.3.0indirekt
NuGetSystem.Security.Cryptography.Algorithms4.3.0indirekt
NuGetSystem.Security.Cryptography.Cng4.3.0indirekt
NuGetSystem.Security.Cryptography.Cng5.0.0indirekt
NuGetSystem.Security.Cryptography.Csp4.3.0indirekt
NuGetSystem.Security.Cryptography.Encoding4.3.0indirekt
NuGetSystem.Security.Cryptography.OpenSsl4.3.0indirekt
NuGetSystem.Security.Cryptography.Pkcs10.0.10indirekt
NuGetSystem.Security.Cryptography.Pkcs10.0.6indirekt
NuGetSystem.Security.Cryptography.Pkcs6.0.4indirekt
NuGetSystem.Security.Cryptography.Pkcs8.0.1indirekt
NuGetSystem.Security.Cryptography.Pkcs9.0.18indirekt
NuGetSystem.Security.Cryptography.Primitives4.3.0indirekt
NuGetSystem.Security.Cryptography.ProtectedData4.4.0indirekt
NuGetSystem.Security.Cryptography.ProtectedData8.0.0indirekt
NuGetSystem.Security.Cryptography.ProtectedData9.0.0indirekt
NuGetSystem.Security.Cryptography.ProtectedData9.0.6indirekt
NuGetSystem.Security.Cryptography.X509Certificates4.3.0indirekt
NuGetSystem.Security.Permissions4.5.0indirekt
NuGetSystem.Security.Permissions8.0.0indirekt
NuGetSystem.Text.Encoding4.3.0indirekt
NuGetSystem.Text.Encoding.CodePages7.0.0indirekt
NuGetSystem.Text.Encodings.Web10.0.8indirekt
NuGetSystem.Threading4.3.0indirekt
NuGetSystem.Threading.Channels7.0.0indirekt
NuGetSystem.Threading.Channels8.0.0indirekt
NuGetSystem.Threading.Tasks4.3.0indirekt
NuGetSystem.Threading.Tasks.Extensions4.6.3indirekt
NuGetSystem.Windows.Extensions8.0.0indirekt
NuGetVerify31.7.1indirekt
NuGetVerify.DiffPlex3.1.2indirekt
NuGetVerify.SourceGenerators2.5.0indirekt
NuGetVerify.Xunit31.7.1indirekt
NuGetxunit2.9.3indirekt
NuGetxunit.abstractions2.0.3indirekt
NuGetxunit.analyzers1.18.0indirekt
NuGetxunit.assert2.9.3indirekt
NuGetxunit.core2.9.3indirekt
NuGetxunit.extensibility.core2.9.3indirekt
NuGetxunit.extensibility.execution2.9.3indirekt
NuGetxunit.runner.console2.9.3indirekt
NuGetxunit.runner.visualstudio3.1.5indirekt
Abhängigkeits-Advisories 3

Dieses Repository veröffentlicht kein vom Index auflösbares Paket, daher wurde sein eigener Abhängigkeitsgraph bewertet – 311 Pakete, darunter auch Entwicklungs- und Test-Pins, die nie ausgeliefert werden: 3 tragen bekannte Advisories, davon 3 direkte. 8 konnten nicht bewertet werden – keine aufgelöste Version, ein nicht unterstütztes Ökosystem, oder außerhalb der ausgewiesenen Paketliste.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
Microsoft.Build.Tasks.Core17.11.48direkthoch117.14.8
Scriban7.2.0direkthoch37.2.2
System.Security.Cryptography.Xml10.0.6direkthoch510.0.10

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 44494,
      "has_wiki": true,
      "homepage": "https://fallout.build/",
      "languages": {
        "C#": 12187624,
        "HTML": 1124648,
        "Shell": 3991,
        "PowerShell": 9736
      },
      "pushed_at": "2026-07-26T13:10:21Z",
      "created_at": "2026-05-18T01:28:39Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-26T11:48:01Z",
      "description": "☢️ Fallout — The C#/.NET Build System",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "C#",
      "significant_languages": [
        "C#"
      ]
    },
    "owner": {
      "blog": "https://fallout.build",
      "name": "Fallout.build",
      "type": "Organization",
      "login": "Fallout-build",
      "company": null,
      "location": null,
      "followers": 3,
      "avatar_url": "https://avatars.githubusercontent.com/u/288474845?v=4",
      "created_at": "2026-05-27T23:44:46Z",
      "is_verified": null,
      "public_repos": 8,
      "account_age_days": 59
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v10.4.0-rc.4",
          "kind": "prerelease",
          "published_at": "2026-07-26T12:43:22Z"
        },
        {
          "tag": "v10.4.0-rc.3",
          "kind": "prerelease",
          "published_at": "2026-07-21T01:20:39Z"
        },
        {
          "tag": "v10.4.0-rc.1",
          "kind": "prerelease",
          "published_at": "2026-07-21T00:27:44Z"
        },
        {
          "tag": "10.3.47",
          "kind": "patch",
          "published_at": "2026-05-27T09:07:17Z"
        },
        {
          "tag": "10.3.45",
          "kind": "patch",
          "published_at": "2026-05-27T05:53:02Z"
        },
        {
          "tag": "10.3.44",
          "kind": "patch",
          "published_at": "2026-05-27T05:41:30Z"
        },
        {
          "tag": "10.3.42",
          "kind": "patch",
          "published_at": "2026-05-27T01:35:25Z"
        },
        {
          "tag": "10.3.41",
          "kind": "patch",
          "published_at": "2026-05-27T00:51:29Z"
        },
        {
          "tag": "10.3.40",
          "kind": "patch",
          "published_at": "2026-05-27T00:38:01Z"
        },
        {
          "tag": "10.3.38",
          "kind": "patch",
          "published_at": "2026-05-26T23:16:49Z"
        },
        {
          "tag": "10.3.37",
          "kind": "patch",
          "published_at": "2026-05-26T21:03:32Z"
        },
        {
          "tag": "10.3.36",
          "kind": "patch",
          "published_at": "2026-05-26T21:03:05Z"
        },
        {
          "tag": "10.3.29",
          "kind": "patch",
          "published_at": "2026-05-25T08:43:28Z"
        },
        {
          "tag": "10.3.28",
          "kind": "patch",
          "published_at": "2026-05-25T08:12:17Z"
        },
        {
          "tag": "10.3.27",
          "kind": "patch",
          "published_at": "2026-05-25T05:02:34Z"
        },
        {
          "tag": "10.3.26",
          "kind": "patch",
          "published_at": "2026-05-25T04:16:00Z"
        },
        {
          "tag": "10.3.25",
          "kind": "patch",
          "published_at": "2026-05-25T02:06:54Z"
        },
        {
          "tag": "10.3.24",
          "kind": "patch",
          "published_at": "2026-05-25T00:47:23Z"
        },
        {
          "tag": "10.3.23",
          "kind": "patch",
          "published_at": "2026-05-24T23:12:27Z"
        },
        {
          "tag": "10.3.22",
          "kind": "patch",
          "published_at": "2026-05-24T10:45:17Z"
        },
        {
          "tag": "10.3.21",
          "kind": "patch",
          "published_at": "2026-05-24T10:20:21Z"
        },
        {
          "tag": "10.3.20",
          "kind": "patch",
          "published_at": "2026-05-24T09:47:21Z"
        },
        {
          "tag": "10.3.19",
          "kind": "patch",
          "published_at": "2026-05-24T08:37:35Z"
        },
        {
          "tag": "10.3.18",
          "kind": "patch",
          "published_at": "2026-05-24T08:11:38Z"
        },
        {
          "tag": "10.3.17",
          "kind": "patch",
          "published_at": "2026-05-24T07:48:24Z"
        },
        {
          "tag": "10.3.16",
          "kind": "patch",
          "published_at": "2026-05-24T07:28:41Z"
        },
        {
          "tag": "10.3.15",
          "kind": "patch",
          "published_at": "2026-05-24T06:46:40Z"
        },
        {
          "tag": "10.3.14",
          "kind": "patch",
          "published_at": "2026-05-24T03:20:56Z"
        },
        {
          "tag": "10.3.13",
          "kind": "patch",
          "published_at": "2026-05-24T02:01:22Z"
        },
        {
          "tag": "10.3.12",
          "kind": "patch",
          "published_at": "2026-05-24T00:18:38Z"
        },
        {
          "tag": "10.3.10",
          "kind": "patch",
          "published_at": "2026-05-22T12:22:18Z"
        },
        {
          "tag": "10.3.9",
          "kind": "patch",
          "published_at": "2026-05-22T12:19:41Z"
        },
        {
          "tag": "10.3.7",
          "kind": "patch",
          "published_at": "2026-05-22T09:04:12Z"
        },
        {
          "tag": "10.1.31",
          "kind": "patch",
          "published_at": "2026-05-22T08:55:59Z"
        },
        {
          "tag": "10.1.30",
          "kind": "patch",
          "published_at": "2026-05-22T08:49:11Z"
        },
        {
          "tag": "10.1.29",
          "kind": "patch",
          "published_at": "2026-05-22T07:58:35Z"
        },
        {
          "tag": "10.1.28",
          "kind": "patch",
          "published_at": "2026-05-22T07:43:19Z"
        },
        {
          "tag": "10.1.27",
          "kind": "patch",
          "published_at": "2026-05-22T04:36:31Z"
        },
        {
          "tag": "10.1.26",
          "kind": "patch",
          "published_at": "2026-05-22T04:04:09Z"
        },
        {
          "tag": "10.1.25",
          "kind": "patch",
          "published_at": "2026-05-21T23:22:02Z"
        },
        {
          "tag": "10.1.24",
          "kind": "patch",
          "published_at": "2026-05-21T11:28:39Z"
        },
        {
          "tag": "10.1.23",
          "kind": "patch",
          "published_at": "2026-05-21T11:22:27Z"
        },
        {
          "tag": "10.1.22",
          "kind": "patch",
          "published_at": "2026-05-21T09:57:51Z"
        },
        {
          "tag": "10.1.21",
          "kind": "patch",
          "published_at": "2026-05-21T09:03:01Z"
        },
        {
          "tag": "10.1.20",
          "kind": "patch",
          "published_at": "2026-05-21T08:23:19Z"
        },
        {
          "tag": "10.1.19",
          "kind": "patch",
          "published_at": "2026-05-21T05:58:46Z"
        },
        {
          "tag": "10.1.18",
          "kind": "patch",
          "published_at": "2026-05-21T02:23:09Z"
        },
        {
          "tag": "10.1.17",
          "kind": "patch",
          "published_at": "2026-05-21T01:28:54Z"
        },
        {
          "tag": "10.1.16",
          "kind": "patch",
          "published_at": "2026-05-21T01:08:42Z"
        },
        {
          "tag": "10.1.15",
          "kind": "patch",
          "published_at": "2026-05-21T00:38:07Z"
        },
        {
          "tag": "10.1.14",
          "kind": "patch",
          "published_at": "2026-05-21T00:01:23Z"
        },
        {
          "tag": "10.1.13",
          "kind": "patch",
          "published_at": "2026-05-20T23:34:00Z"
        },
        {
          "tag": "10.1.12",
          "kind": "patch",
          "published_at": "2026-05-20T22:52:02Z"
        },
        {
          "tag": "10.1.11",
          "kind": "patch",
          "published_at": "2026-05-20T21:59:35Z"
        },
        {
          "tag": "10.1.10",
          "kind": "patch",
          "published_at": "2026-05-20T21:45:25Z"
        },
        {
          "tag": "10.1.9",
          "kind": "patch",
          "published_at": "2026-05-20T21:38:23Z"
        },
        {
          "tag": "10.1.8",
          "kind": "patch",
          "published_at": "2026-05-20T01:55:58Z"
        },
        {
          "tag": "10.1.7",
          "kind": "patch",
          "published_at": "2026-05-19T23:43:19Z"
        },
        {
          "tag": "10.1.6",
          "kind": "patch",
          "published_at": "2026-05-19T05:33:00Z"
        },
        {
          "tag": "10.1.5",
          "kind": "patch",
          "published_at": "2026-05-19T05:15:06Z"
        },
        {
          "tag": "10.1.4",
          "kind": "patch",
          "published_at": "2026-05-19T04:35:27Z"
        },
        {
          "tag": "10.1.3",
          "kind": "patch",
          "published_at": "2026-05-19T03:59:40Z"
        },
        {
          "tag": "10.1.2",
          "kind": "patch",
          "published_at": "2026-05-18T08:28:04Z"
        },
        {
          "tag": "10.1.1",
          "kind": "patch",
          "published_at": "2026-05-18T08:06:03Z"
        },
        {
          "tag": "10.1.0",
          "kind": "minor",
          "published_at": "2026-05-18T07:49:03Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "0f5d2f0bbda75c74c88813b9e89309bd40762464",
          "body": "Bumps the github-actions-dependencies group with 2 updates: [actions/upload-artifact](https://github.com/actions/upload-artifact) and [actions/download-artifact](https://github.com/actions/download-artifact).\n\n\nUpdates `actions/upload-artifact` from 4 to 7\n- [Release notes](https://github.com/action\n[…]\ncy-version: '8'\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-actions-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump the github-actions-dependencies group with 2 updates",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-26T11:47:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4da31f446ea0834bcfa8a110793e6a744f794444",
          "body": "Terms like shim, sentinel, and canonical type show up often in PRs and\nissues but are never defined anywhere, making descriptions hard to\nfollow for non-native English readers. Add a short glossary and link\nto it from issue-and-pr-style.md's non-native-English guidance.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add a glossary of repo jargon to conventions.md",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-26T11:07:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "56733afaeee02083c8d435c9f66ac0e74f014c9b",
          "body": "The existing rule was one abstract line and easy to ignore in\npractice (see PR #528's description). Break it into checkable rules\n-- one idea per sentence, no idioms, define jargon on first use,\ngloss cross-references -- and add two anti-pattern examples pulled\nfrom a real PR description.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Make the non-native-English PR/issue guidance concrete",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-26T11:07:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b7e772f9911210263df5b7dd5dceb81b373dce52",
          "body": null,
          "is_bot": false,
          "headline": "Configure Dependabot for GitHub Actions updates",
          "author_name": "Yousif Salah",
          "author_login": "YousifSala7",
          "committed_at": "2026-07-26T10:39:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8849a55420a384bd5ccbf0120c19cff2509156a",
          "body": "Covers the new surface: the Current lifecycle, the identity guard that stops a\nsuperseded context both from clobbering a newer Current and from running the\nprocess-wide resets, the cancellation-handler facade's no-op outside a run, and\nthe per-run teardown across the in-memory sink, the tool-path re\n[…]\nate process-wide singletons and xUnit runs test classes\nin parallel, so they share a collection with the other specs over the same\nstatics — otherwise one class's reset lands inside another's arrange.",
          "is_bot": false,
          "headline": "Cover the BuildContext scope with specs",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-26T10:08:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "404b5f1056a32bbe8dc50ee94a7b17c3ea83cf19",
          "body": "Adds BuildContext — an internal, per-run, AsyncLocal-ambient scope activated at\nthe top of BuildManager.Execute and disposed at method exit, so the process-\nglobal statics a build touches are owned by a scope rather than leaking across\ninvocations. It takes over the Console.CancelKeyPress / ToolOpti\n[…]\nis\nstill Current, so a superseded scope disposing out of order cannot tear down\nstate belonging to a newer run.\n\nInternal-only — not a public contract until the SDK lands (milestone #7).\n\nFT-2 / #307.",
          "is_bot": false,
          "headline": "Introduce the per-run BuildContext foundation (FT-2)",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-26T10:08:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "336bcfc03634a754305be58aa08879e968cddffd",
          "body": "… names\n\nThe telemetry opt-out strip is line-based, so it handles bash `export`,\nPowerShell `$env:`, and cmd `set` alike — but only `export` was specced.\nTurn that spec into a theory over all three bootstrap-script spellings.\n\nAlso renames both touched spec files to the AV1600 behaviour-focused naming\nthe repo is migrating to (docs/agents/conventions.md).",
          "is_bot": false,
          "headline": "Cover all opt-out spellings and rename the migrate specs to behaviour…",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-26T09:27:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d879e11ae306ddb7070cb2367199229d00e53e01",
          "body": "Review feedback: the ADR was verbose and the conventions bullet was\nunnecessary — an AI agent isn't going to reintroduce telemetry by accident,\nand the stale \"opt-out is set in test runs\" bullet it replaced is now wrong\neither way. ADR-0010 stays the single record.\n\nThe ADR loses the \"Removed surface\" recap (duplicated the PR body), and its\ncontext/alternatives are condensed; every decision it carried is intact. Its\nheader also moves to the house `## Status` shape used by ADR-0007/0008.",
          "is_bot": false,
          "headline": "Trim ADR-0010 and drop the redundant no-telemetry convention bullet",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-26T09:27:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9cf97fad38825529d526cb9d562b203953791db",
          "body": "Records the decision that Fallout collects no telemetry — reversing the prior\n\"kept dormant, wire up a Fallout endpoint later\" stance — and its rationale,\nnon-breaking impact, and the alternatives (keep dormant / opt-in / local-only)\nthat were rejected. Adds a \"No telemetry\" convention, drops the no\n[…]\ntion guide to show the telemetry knobs are stripped, and rewords\nthe build-events example that used telemetry as its illustration.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Document the no-telemetry decision (ADR-0010)",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-26T09:27:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1dd17fabcfff5b37af51ff397b3284b702c1a06b",
          "body": "The migrate tool rewrote NUKE's telemetry knobs to Fallout-branded equivalents:\nNukeTelemetryVersion → FalloutTelemetryVersion and NUKE_TELEMETRY_OPTOUT →\nFALLOUT_TELEMETRY_OPTOUT. With telemetry removed (ADR-0010) those targets no\nlonger exist, so renaming would plant dead, telemetry-branded cruft \n[…]\nLLOUT)_TELEMETRY_OPTOUT assignment line (bash/pwsh/cmd spellings).\nSpecs updated to assert the knobs are gone rather than renamed.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Strip telemetry knobs on migration instead of renaming them",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-26T09:27:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3fb29a1de1f310541ecaa6c1d5441324426d746b",
          "body": "The telemetry feature carried over from NUKE has been inert since the fork:\nits Application Insights endpoint was the original maintainer's and can't be\nreused, the client dependency was dropped (#79), and TrackEvent was a stub.\nIt was kept dormant on the intent of wiring up a Fallout-owned backend \n[…]\never gated a no-op, and an\nunset/unknown one is silently ignored. The .NET SDK's own DOTNET_CLI_TELEMETRY_OPTOUT\nis left in place.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Remove the inherited NUKE telemetry subsystem",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-26T09:27:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "469531941fb045f3b456934fdededb1f405d637d",
          "body": "The generator hard-coded the four actions it emits, so a consumer who wanted a\nnewer major — or a SHA pin — had to subclass GitHubActionsAttribute and\nreimplement step emission. Two repos migrating off NUKE carried custom step\nclasses for exactly that (#533).\n\nEach emitting step now carries a normal\n[…]\nembers and\nwould have exposed an empty class.\n\nCloses #534\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Vn8JQZRwdoovPuctD21Wjx",
          "is_bot": false,
          "headline": "Make the generated action references configurable",
          "author_name": "Marko Lahma",
          "author_login": "lahma",
          "committed_at": "2026-07-26T07:40:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "94fa5fcba1722295e939234b24306c918411c432",
          "body": "The generator's cache pin sat at v4 while #533 moved checkout, setup-dotnet,\nand upload-artifact to their current majors — cache was never in that PR's\nscope. v6.1.0 is current; v4 is two majors behind.\n\n- v5.0.0 moved to the node24 runtime and requires a self-hosted runner\n  >= 2.327.1\n- v6.0.0 upd\n[…]\n4 Verify snapshots with a cache step, and the docs sample.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Vn8JQZRwdoovPuctD21Wjx",
          "is_bot": false,
          "headline": "Bump the generated cache step to actions/cache@v6",
          "author_name": "Marko Lahma",
          "author_login": "lahma",
          "committed_at": "2026-07-26T07:40:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fcd2be0b45b0435a6baa94f0e639680aa365b288",
          "body": null,
          "is_bot": false,
          "headline": "Configure Dependabot for weekly dependency updates (#6)",
          "author_name": "Yousif Salah",
          "author_login": "YousifSala7",
          "committed_at": "2026-07-24T00:43:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "394a6a23347090b2cf93004210cb507ef6cdd607",
          "body": null,
          "is_bot": false,
          "headline": "Use Microsoft.Windows.SDK.BuildTools package to get signtool binary",
          "author_name": "Lukas Gasselsberger",
          "author_login": "IT-VBFK",
          "committed_at": "2026-07-23T12:34:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bd6471b6c6d21c9420311204b7d0b813a931e726",
          "body": "10.0.6, 9.0.15 and 8.0.3 are all inside the affected ranges of five high-severity\nadvisories (GHSA-23rf-6693-g89p, GHSA-8q5v-6pqq-x66h, GHSA-cvvh-rhrc-wg4q,\nGHSA-g8r8-53c2-pm3f, GHSA-mmjf-rqrv-855v) — uncontrolled resource consumption in\nXML decryption. Move each line to its first patched release: 1\n[…]\non list and build/_build.csproj are bumped; the build\nproject turns off central package management, so its inline pin is separate.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Bump System.Security.Cryptography.Xml to the advisory-patched versions",
          "author_name": "Marko Lahma",
          "author_login": "lahma",
          "committed_at": "2026-07-23T11:51:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8bb241fe6b54c43db1a6769944552b70fa9068b5",
          "body": "Extends the setup-dotnet bump to the other two actions the generator pins, and\ncarries setup-dotnet to v6 — v5 was already superseded while this PR sat open.\n\n  setup-dotnet     v4 -> v6   (v6.0.0, 2026-07-16)\n  checkout         v6 -> v7   (v7.0.0, 2026-06-18)\n  upload-artifact  v5 -> v7   (v7.0.0, \n[…]\nthat today —\nit carries custom step classes purely to reach checkout@v7 and\nupload-artifact@v7, which the generator can just emit.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Track the current majors for checkout and upload-artifact too",
          "author_name": "Marko Lahma",
          "author_login": "lahma",
          "committed_at": "2026-07-23T11:50:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0f008cb0d104f9b193d04b763fb00cfeb5bb847d",
          "body": "actions/setup-dotnet@v4 runs on the node20 runtime, which GitHub has scheduled\nfor removal; v5 moves to node24 and is otherwise input-compatible, so the\ngenerated global-json-file step is unchanged apart from the tag.\n\nEvery consumer inherits the pin from the generator, so a stale tag can only be\nwo\n[…]\nemitted YAML, the\nCI-docs sample, and this repo's own workflows (the generated ones would change\non the next regeneration anyway).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Bump the generated setup-dotnet step to v5",
          "author_name": "Marko Lahma",
          "author_login": "lahma",
          "committed_at": "2026-07-23T11:50:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3595f0ff892aebf0ad0fd91d48170bf294711f7b",
          "body": null,
          "is_bot": false,
          "headline": "Fix `Stryker` tool XML summaries",
          "author_name": "Lukas Gasselsberger | alu-one",
          "author_login": "ITaluone",
          "committed_at": "2026-07-23T08:45:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf3b517f103d7ea035a43a7ae6c6bc83d7ba075f",
          "body": "The release pipeline was built around CalVer release/YYYY + legacy\nsupport/* lines, so a legacy-style minor release line (release/v10.4)\ncut from main is rejected at two gates:\n\n- validate-ref in publish-packages-release.yml only matched\n  release/[0-9]{4} and support/*, so a v* tag on release/v10.4\n[…]\nng a clean -rc.N.\n\nTeach both the release/v\\d+\\.\\d+ shape so tag pushes on a release/v10.x\nline validate and publish on their own.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Recognize release/vMAJOR.MINOR branches in the release pipeline",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-21T01:18:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a7375825868617cb21323638b23397eea8201ecf",
          "body": "A tag-triggered release build checks out a detached HEAD, where\nGitRepository.Branch is null. Two specs assumed the ambient checkout\nwas on a named branch and broke the release pack:\n\n- GitRepositoryWorktreeSpecs derived the worktree base ref from\n  .Branch (null → empty), producing 'git worktree ad\n[…]\nss on a branch (unchanged) and no longer fail on a detached\nHEAD. Surfaced by the first real tag-triggered release (v10.4.0-rc.1).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Make git-repository specs robust to a detached HEAD",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-21T01:17:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "70f30dd53d1eaf7de0aa035bb893c7844685db65",
          "body": "Add agent rule against pinging the former NUKE maintainer; move security contact to security@fallout.build\n\n- AGENTS.md critical rule #9 + conventions.md \"what not to do\": never @-mention,\n  assign, request review from, or co-author-trailer the former NUKE maintainer.\n- Strip the leading @ from his README attribution (plain profile link kept).\n- Point SECURITY.md at security@fallout.build instead of a personal address.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n@",
          "is_bot": false,
          "headline": "@",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-20T22:56:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "161ca5f8bf2c24c6ae99d78c25db58824ded96c7",
          "body": "…equests\n\nReorder the private methods to match the order they're invoked from\nExecuteAsync (assembly, then major, then NuGet), and add a User-Agent\nheader to the NuGet flat-container HttpClient so requests aren't sent\nas anonymous script traffic.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Reorder ResolveFalloutVersionStep by invocation order and tag NuGet r…",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-20T18:59:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "965f44bda8f7c771b3e010fb6139a3efa3db53f4",
          "body": "Extract the modern-moniker regex and IsOlderThanMinimumSupported logic\nduplicated between BumpDotNetVersionStep and VerifyBuildTargetFrameworkStep\ninto a shared TargetFrameworkMonikers helper. VerifyBuildTargetFrameworkStep\nnow reads BumpDotNetVersionStep.MinimumSupportedMajor instead of\nmaintaining its own separate constant.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Deduplicate the TFM-minimum check shared by two migration steps",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-20T18:59:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3578f3713e04b924fa2178a05693ab93bc50a5b3",
          "body": "Replace the blocking GetAsync(...).GetAwaiter().GetResult() in\nResolveFalloutVersionStep with a proper await. IMigrationStep.Execute\nis now Task ExecuteAsync; Migration.Run is Migration.RunAsync;\nMigrateCommand is now an AsyncCommand<MigrateSettings>; Program.Main\nawaits CommandApp.RunAsync. Confirm\n[…]\nmationPrompt.ShowAsync instead of the blocking AnsiConsole.Confirm.\nSteps with no async work simply return Task.CompletedTask.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Make IMigrationStep and the migration pipeline asynchronous",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-20T18:59:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "22dedd44fd8080f77645e6bbb65d96f5bddec422",
          "body": "Add BumpDotNetVersionStep: rewrites _build.csproj's TargetFramework and\nglobal.json's sdk.version to net10.0 / 10.0.100 during migration, matching\nthe versions Fallout's own tooling targets — but only when what's there is\nbehind those minimums, so an already up-to-date or newer build project is\nleft\n[…]\najor is parsed from\nTargetFramework itself rather than duplicated as a separate constant, so\nthere's a single source of truth.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Bump build project to net10.0 and global.json SDK to 10.0.100",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-20T18:59:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aef6c073f61451ebc8ee6aa4622ae3aefb78c9a0",
          "body": "CsprojRewriter.Rewrite had a single caller (RewriteCsprojsStep). Move its\nregex fields and Rewrite method directly into the step and delete the\nnow-empty class. Rename the spec file/class to match.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fold CsprojRewriter into RewriteCsprojsStep",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-20T18:59:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f667a655e0dcc6ef13bde1562a6597876ac59b4a",
          "body": "ConfirmMigrationStep runs immediately before RewriteCsprojsStep, the\nfirst step that mutates files, and prompts via AnsiConsole.Confirm\nbefore letting the migration proceed. Declining sets the new\nSummary.Cancelled flag, which Migration.Run checks to stop executing\nfurther steps, and MigrateCommand \n[…]\ning would be written) and\nwhen stdin is redirected (CI, piped input, automated tests) since\nthere's nothing to prompt against.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Ask for confirmation before the migration writes any files",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-20T18:59:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2c7e902c34cea6fc7770b36a6591d79540384adc",
          "body": "Fallout's tooling is built and tested against .NET 10; a build project\nstill on an older TFM can hit tool incompatibilities that this\nmigration's other, purely textual rewrites won't catch.\n\nVerifyBuildTargetFrameworkStep reads _build.csproj's TargetFramework(s)\nand adds a warning for any moniker that isn't a modern net10.0+ (catching\nnet8.0, net48, netstandard2.0, netcoreapp3.1, etc.).\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Warn when the build project targets an older TFM than .NET 10",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-20T18:59:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "eec1fea6acfc81bb09130d30149a1faff3c925b9",
          "body": "…ajor\n\nResolveFalloutVersionStep now queries NuGet's flat-container index for the\nlatest non-prerelease Fallout.Common release matching the running tool's\nown major (calendar year), instead of only reading the tool's own\nAssemblyInformationalVersion. This keeps a migration pinned to what's\nactually \n[…]\nching-major stable release yet, and logs via AnsiConsole which path\nwas taken so the resolved version is never a silent guess.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Resolve Fallout.Common version from NuGet, scoped to the tool's own m…",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-20T18:59:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ba41665bcf751ab822bb262430c4c48965d018d8",
          "body": "Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Bump Fallout.Migrate to the 10.x version line",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-20T18:59:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cf270157282207805901f8278761dd22072a0246",
          "body": "Fixing nasty build errors due to the .editorconfig rule\n`UnusedParameter.Local`'s severity `error`\n\nThis only applies to the private `Execute` methods; the\n`IFalloutCommand` contract is not touched.\n\nWhen needed, we can re-add them..\n\n<!-- Keep it terse: one-line summary, then short \"what changed\" b\n[…]\nilot draft one, then trim it. -->\n\n<!-- This repo merges via rebase only (linear history). Curate your\ncommits into a -->\n<!-- clean sequence before final approval — see CONTRIBUTING.md →\nMerging. -->",
          "is_bot": false,
          "headline": "Remove unused `buildScript` and `args` parameters from commands (#515)",
          "author_name": "ITaluone",
          "author_login": "ITaluone",
          "committed_at": "2026-07-20T18:20:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f2fa83246da5e0b88a4568ae3ba691433df03aaf",
          "body": "<!-- Keep it terse: one-line summary, then short \"what changed\" bullets.\n-->\n<!-- Link the issue and summarize it — don't recite it. See\ndocs/agents/issue-and-pr-style.md. -->\n<!-- Or let Copilot draft one, then trim it. -->\n\nSince docs build config only includes `/docs` `../AGENTS.md` is not\nresolv\n[…]\n\nUsing the absolute URLs instead.\n\n<!-- This repo merges via rebase only (linear history). Curate your\ncommits into a -->\n<!-- clean sequence before final approval — see CONTRIBUTING.md →\nMerging. -->",
          "is_bot": false,
          "headline": "Fix broken links in compiled docs assets (#521)",
          "author_name": "ITaluone",
          "author_login": "ITaluone",
          "committed_at": "2026-07-20T18:15:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "32e0cca1cf5ad5299bb41a63d3efcb67350009f9",
          "body": null,
          "is_bot": false,
          "headline": "Rename legacy prefixed private fields to camelCase (#481)",
          "author_name": "Yousif Salah",
          "author_login": "YousifSala7",
          "committed_at": "2026-07-20T11:44:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49590233f58a31acd6a5678b664012b05f800943",
          "body": null,
          "is_bot": false,
          "headline": "Add tool wrapper definition for `Stryker` (#503)",
          "author_name": "IT-VBFK",
          "author_login": "IT-VBFK",
          "committed_at": "2026-07-20T05:24:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c87ede641a05849d2d0211fff5fdc38289571ac8",
          "body": null,
          "is_bot": false,
          "headline": "Add SetBinaryLog support to DotNetPackSettings",
          "author_name": "Lukas Gasselsberger",
          "author_login": "IT-VBFK",
          "committed_at": "2026-07-20T05:23:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b63ab1e1e0eb7aea1da4039b49aefa0dbb23899",
          "body": null,
          "is_bot": false,
          "headline": "Add missing options",
          "author_name": "Lukas Gasselsberger | alu-one",
          "author_login": "ITaluone",
          "committed_at": "2026-07-19T18:11:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b97d48c3851453ede95f2825513c80ffec1f88f5",
          "body": null,
          "is_bot": false,
          "headline": "Add tool definition for `cmake`",
          "author_name": "Lukas Gasselsberger",
          "author_login": "IT-VBFK",
          "committed_at": "2026-07-19T18:11:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f833149812fc777bdbb5ba1b77854585f91d0b7a",
          "body": null,
          "is_bot": false,
          "headline": "Add missing ArtifactsPath property to `dotnet restore`",
          "author_name": "Lukas Gasselsberger",
          "author_login": "IT-VBFK",
          "committed_at": "2026-07-19T18:10:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "caeeacba9384857915da1fc329e420ef9b2823e6",
          "body": "Fixes a crash in `GitRepository.GetRemoteNameAndBranch` when the git\nbranch config section contains a duplicate key.\n\n## Problem\nVS Code's Git extension appends a `vscode-merge-base` entry to `[branch\n\"...\"]` instead of updating it in place, sometimes leaving it\nduplicated. Parsing that section buil\n[…]\nee limitation fails, confirmed to fail\nidentically on `main`).\n\n---------\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCo-authored-by: Chrison Simtian <csimon@chrison.dev>",
          "is_bot": false,
          "headline": "Fix crash when git branch config has a duplicate key (#511)",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-19T15:45:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "04de9b859a99e59d95c021918f3cb7ea263c4313",
          "body": "Replace the plain Console.WriteLine calls in MigrateCommand's banner\nand summary printing with Spectre.Console's AnsiConsole: bold banner,\nyellow dry-run notice and warnings, green completion messages, dimmed\nguide link. Interpolated values (paths, warning text) go through\nMarkupLineInterpolated so \n[…]\ntouched --\nthat log stays plain text so MigrationIntegrationSpecs can keep\ncapturing it via TextWriter.Null without a console.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Style fallout-migrate's banner and summary output with AnsiConsole",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-19T15:28:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a41f6dd8fd60b6343c0c9c81e5140a1d19e97add",
          "body": "… specs\n\nAdd VerifyGeneratedTools to CI so that editing a tool wrapper's .json spec\nwithout regenerating and committing its .Generated.cs output fails the\nbuild. Make the generated header's source URL independent of the local\ngit remote so the check doesn't fail depending on who runs it, and\nregener\n[…]\nventions.md, and CONTRIBUTING.md to\nreflect that generated tool wrapper output must now be committed\nalongside its .json spec.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fail CI when generated tool wrappers are out of sync with their .json…",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-19T15:14:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cb205038c464331d7e1e057294051009a5b2414b",
          "body": "Migration.Run() hard-coded four migration actions as private methods\nsharing private helpers, making it awkward to add the steps planned\nnext. Split into:\n\n- Common/ -- MigrationContext (plain data), Summary, RewriteResult,\n  IMigrationStep, and MigrationFileOperations (shared EnumerateFiles /\n  App\n[…]\nding a future step is one new class plus\none line in that list.\n\nNo behavior change; MigrationIntegrationSpecs pass unchanged.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Decompose Fallout.Migrate into an IMigrationStep pipeline",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-19T15:08:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ce2c8bae9a7859286125091d59cfa6d1641dd4ad",
          "body": "When working from a personal fork (origin) alongside the core repo\n(upstream), branch from a stale origin/main instead of upstream/main and\nopen the PR against the wrong repo — both happened in practice and produced\na large, spurious merge conflict.\n\nAdd a step 0 to the PR-creation flow in release-a\n[…]\nTS.md\nrule #1 points to at PR-creation time and the flag was dropped once already.\n\nPoint AGENTS.md rule #1 at both additions.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Document fork/upstream branching workflow and reinforce draft-PR default",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-19T12:17:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c99b2384e04ccaad7fe90a02dea920616bbeb393",
          "body": "The net8.0 bug slipped through because the build-project update path had no\nspec. Add one: parse a project pinned to an old TargetFramework, run the\nretarget, assert it lands on net10.0. Guards the literal from drifting again.\n\nUpdateTargetFramework is now internal (Fallout.Cli.Specs already has IVT) and\nCli.Specs gets the ProjectModel MSBuild-resolver ModuleInit so a test can hold\na Microsoft.Build.Evaluation.Project local.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Cover the update command's target-framework retarget",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-18T12:11:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "777e17bf71cf89d9406c7fa6085e111ebc9090a2",
          "body": "The :update command's build-project step reset TargetFramework to net8.0,\nwhich can't restore Fallout.Common or resolve its namespaces — the framework\ntargets net10.0. SetupCommand already scaffolds new projects at net10.0\n(TARGET_FRAMEWORK), so update now matches.\n\nCentralizing the target-framework literal (SetupCommand + UpdateCommand share\n\"net10.0\") is deferred to a dedicated cleanup PR.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix update command writing net8.0 as the build project target framework",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-18T12:11:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f0f123c92a46f523c2347ca2f6d9c0e5c04a6e19",
          "body": "The build-project update logic lived in a separate static ProjectUpdater\nhelper, splitting the update command's behaviour across two files for no\nreason. Move it into UpdateCommand as private methods so the command owns\nits own logic, and delete ProjectUpdater.\n\nAlso drops the stale \"Nuke\" name (UpdateNukeCommonPackage ->\nUpdateFalloutCommonPackage). No behaviour change.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fold ProjectUpdater into UpdateCommand",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-18T12:11:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c5a5a4e2f3e029048be48697f4d1c2ff9c7b9b03",
          "body": "The migrated commands are all `internal sealed`, but three types were\nstill `public` with no consumer outside the assembly and no PublicAPI\ntracking: RunCommand (the lone public command), ProjectUpdater, and\nProgram (the tool entry point). None are part of a public surface —\nthere is no public comma\n[…]\nallout.Cli.Specs\nalready has InternalsVisibleTo, so the specs are unaffected; DI registration\nworks unchanged with internal types.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Internalize Fallout.Cli types that aren't external contracts",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-18T12:11:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "68a5b0500183e590dd805b27abfc649fd08211a2",
          "body": "The last sync-over-async in the command layer sat in ProjectUpdater,\nreached from UpdateCommand via the synchronous ConfirmExecution(Action)\nprompt boundary. ConfirmExecution is a hand-rolled helper (not a Spectre\nprimitive), so add a Func<Task> overload alongside the Action one and\nflow async throu\n[…]\n, config file, global.json)\nstay on the sync ConfirmExecution overload. No .GetAwaiter().GetResult()\nremains in the command layer.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Thread async through the update command's build-project step",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-18T12:11:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aa64bae91ad9f7c277b7d4096b5b7a4bee792489",
          "body": "The new command specs used Method_State_Result names; the repo\nconvention (docs/agents/conventions.md, AV1600) is short present-tense\ndescriptions of observable behavior. Rename all command spec methods to\nmatch.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Rename Cli command specs to AV1600 behavior-focused style",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-18T12:11:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9bc2401f0d966401647fbad3e90c80dc8c5da84e",
          "body": "AddPackage, CakeConvert and Setup did real async work (NuGet version\nresolution, nested command invocation) but blocked on it via\n.GetAwaiter().GetResult() inside a synchronous Execute wrapped in\nTask.FromResult. Fold the private Execute into an async ExecuteAsync\nand await the work directly, removing the sync-over-async anti-pattern.\n\nPurely-sync commands keep Task.FromResult(Execute(...)) — they have no\nasync work to await.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Make async commands genuinely async instead of blocking",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-18T12:11:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "be009a8b169c4b95965a089dd87c5540da693143",
          "body": "Add async specs for the converted commands (Fallout.Cli.Specs/Commands, *Specs naming) plus a\nFakeConsolePrompts double and ConfigurationReader specs, and repoint the existing CakeConversion /\nUpdateSolutionFileContent specs at their new service homes (CakeConverter, PackageManager,\nBuildScaffolder).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Re-home Cli command specs to Fallout.Cli.Specs (#392)",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-18T12:11:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "15da3354f248610cd911500171996021e04fd85a",
          "body": "…m (#392)\n\nConvert complete, get-configuration, add-package, update, secrets, cake-convert, cake-clean,\nsetup, and the navigation cluster into real IFalloutCommand types (async ExecuteAsync, DI-injected\nservices), register them directly, and delete the DelegateCommand shims + every Program.X.cs\npart\n[…]\ndation. Derived from main's current handlers, so\nthe .slnx setup support, net10.0 target, and nuke->fallout rebrand are preserved.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Convert remaining Cli commands to IFalloutCommand and collapse Progra…",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-18T12:11:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "953a99bed2011278c44a4d8a48f91417da75ae85",
          "body": "Extract the shared logic the converted commands depend on into injectable services:\nConfigurationReader (build-script config parsing), PackageManager (package add/replace),\nBuildScaffolder (build scripts/solution wiring, incl. the .slnx writer), CakeConverter\n(Cake script conversion), and CliConventions/ToolBanner (banner + script-name helpers).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add Fallout.Cli command-scaffolding services (#392)",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-18T12:11:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3325dc4cc1991db47202591ba9078d0b7f6de3ae",
          "body": "Extract Program.Trigger into a real IFalloutCommand (async ExecuteAsync per the merged\nfoundation contract), register the type directly, and drop the DelegateCommand shim + the\nProgram.Trigger.cs partial. Test re-homed to Fallout.Cli.Specs.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Convert :trigger to TriggerCommand (#392)",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-18T12:11:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f29288f5622f6e10ff29a3e988de013da3e10027",
          "body": null,
          "is_bot": false,
          "headline": "Fix small typo in parameters docs sample",
          "author_name": "Lukas Gasselsberger",
          "author_login": "IT-VBFK",
          "committed_at": "2026-07-18T07:17:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67b792f179a0831c8ed027765950e6aae3d68c17",
          "body": "build-docs read as if it builds documentation; it doesn't — it's the no-op that\nreports the required `ubuntu-latest` check on docs-only PRs so branch protection\nisn't blocked. build-skip names what it does. Updated the echo message and the\nREADME/CONTRIBUTING/architecture/conventions/release-and-versioning references.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Rename docs-PR shim workflow build-docs.yml → build-skip.yml",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-17T10:29:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7a08956e8c8418aff5fd65ee2e83823261510a31",
          "body": "The build-status badges have been broken for a while: they pointed at the old\nper-OS workflow files and used `?branch=main` on `pull_request`-only workflows,\nwhich renders \"no status\" (badges track push/branch runs, not PR runs).\n\n- Headline CI badge now tracks publish-packages-preview (runs on ever\n[…]\nys Fallout-build/Fallout (consistent with the other badges); these\nresolve once this change is on upstream and a run has happened.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix README build-status badges",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-17T10:29:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "661e79d534a4b11c6c91719458f8ca6c93f69643",
          "body": "Collapse the three per-OS build workflows and rename the hand-written ones\nfor clarity. Behaviour is unchanged — same triggers, same required check.\n\n- build.yml (generated): Linux PR gate for PRs to main/release/support. Its\n  job is still named `ubuntu-latest`, so the required status check and bra\n[…]\nntions, and release-and-versioning docs (also fixing\nsome already-stale trigger descriptions). ADRs left as point-in-time records.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Consolidate and rename CI workflows",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-17T10:29:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "818162de408997688229e42a54045269acd0b9d3",
          "body": "Small one😀",
          "is_bot": false,
          "headline": "Fix typo in tool installation command (#494)",
          "author_name": "Georg Dangl",
          "author_login": "GeorgDangl",
          "committed_at": "2026-07-16T19:42:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5038929b1730c4335f8ba7e32776173bb5c94e1",
          "body": null,
          "is_bot": false,
          "headline": "Extract shared Verify helper for configuration specs",
          "author_name": "Yousif Salah",
          "author_login": "YousifSala7",
          "committed_at": "2026-07-15T13:44:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7acb39fdff70fbe769e29a730bf4461b93bfeef2",
          "body": null,
          "is_bot": false,
          "headline": "Rename test names to generic examples per review",
          "author_name": "Yousif Salah",
          "author_login": "YousifSala7",
          "committed_at": "2026-07-15T13:44:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9ce4203bcb1d05c52ad652f53c385509e5a05bd",
          "body": null,
          "is_bot": false,
          "headline": "Escape single quotes correctly in YAML CI writers",
          "author_name": "Yousif Salah",
          "author_login": "YousifSala7",
          "committed_at": "2026-07-15T13:44:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "91695e2b734047653972d18676b9a151d7ba3187",
          "body": null,
          "is_bot": false,
          "headline": "Refactor the `ConsoleUtility` class so the console can be overridden",
          "author_name": "Lukas Gasselsberger | alu-one",
          "author_login": "ITaluone",
          "committed_at": "2026-07-15T12:45:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f80b3103f3e195cb49399b491c1883f718ea486d",
          "body": null,
          "is_bot": false,
          "headline": "Rewrite fallout-migrate argument parsing and path handling",
          "author_name": "Dennis Doomen",
          "author_login": "dennisdoomen",
          "committed_at": "2026-07-15T05:31:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c2771894caf182f66033365a6ce54b7f62b69d91",
          "body": null,
          "is_bot": false,
          "headline": "Using serializer option `Indent`, instead of manually adding indentation",
          "author_name": "Lukas Gasselsberger | alu-one",
          "author_login": "ITaluone",
          "committed_at": "2026-07-14T05:46:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a15b2f385e5616603c7d7898ba9210e40a0ca350",
          "body": "# Conflicts:\n#\ttests/Fallout.Common.Specs/XmlTasksSpecs.cs",
          "is_bot": false,
          "headline": "Add `XmlTasks` with `XmlAdd` functionality",
          "author_name": "Lukas Gasselsberger | alu-one",
          "author_login": "ITaluone",
          "committed_at": "2026-07-14T05:46:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f072c9ded6c41bbbd3a4694122d7aef5500f7296",
          "body": "Switch GitHubActionsCustomStepSpecs from hand-authored expected strings + a\nline-ending-normalizing helper to Verify, matching the generator testing\nstrategy used elsewhere. Verify normalizes line endings on compare, and the new\n'*.verified.* text eol=lf' gitattribute keeps the snapshots LF in the repo, so\nthe exact-output assertions are platform-independent without bespoke scaffolding.",
          "is_bot": false,
          "headline": "Snapshot custom-step rendering with Verify instead of manual literals",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-13T11:00:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "475d19ed1c90f782871524f7c433283505c219be",
          "body": "Move the YAML-correct single-quote (doubling embedded quotes) out of the custom\nstep and into StringExtensions.SingleQuoteYaml, next to SingleQuote/DoubleQuote,\nwith its own unit test. This is the primitive the built-in CI writers should\nadopt to replace SingleQuote() in YAML contexts (a separate follow-up).",
          "is_bot": false,
          "headline": "Promote YAML single-quoting to a shared StringExtensions helper",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-13T11:00:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4dff363f28983a9930f19672a9e63f0393882ae",
          "body": "The shared SingleQuote() helper escapes an embedded quote with a backslash,\nwhich is invalid inside a YAML single-quoted scalar, so a name like \"Bob's\nstep\" emitted 'Bob\\'s step'. Quote the name locally with YAML doubling ('')\ninstead; output is identical for names without a quote. Left the shared h\n[…]\n shell/log output across 26 call sites where the\ndoubling form would be wrong.\n\nAlso guard the multi-insert ordering test so a dropped first insert fails\ninstead of passing vacuously on IndexOf == -1.",
          "is_bot": false,
          "headline": "Escape custom-step names as valid YAML and guard a vacuous test",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-13T11:00:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cc43ca425ae244fe32ace672291affe6ce1a8302",
          "body": "- Quote custom-step names via SingleQuote(), matching the built-in steps, so a\n  name containing a colon stays valid YAML (the structural validation didn't\n  cover value safety).\n- Render with:/env: in ordinal key order for deterministic output; Dictionary\n  enumeration order isn't guaranteed.\n- Gua\n[…]\nwith the clean ArgumentException the\n  design promises rather than a NullReferenceException.\n- Add specs: colon-in-name quoting, multi-entry ordinal ordering, null-step\n  insert, and null collections.",
          "is_bot": false,
          "headline": "Harden custom-step rendering and injection against review feedback",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-13T11:00:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6fe48adce7b34837352dc92e711543131646102b",
          "body": null,
          "is_bot": false,
          "headline": "Trim the GitHubActionsCustomStepSpecs class comment",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-13T11:00:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "068ce4db34eae0b41b25df29002f23445d219b62",
          "body": null,
          "is_bot": false,
          "headline": "Trim the ShouldRenderAs comment to the why",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-13T11:00:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f4efdd0a6c4300f1bbb8df0418474b4f1690c88",
          "body": "Use raw string literals for the multi-line expected YAML (more readable than\nline concatenation) and normalize line endings on both sides. The renderer\nemits Environment.NewLine, so normalizing keeps these exact-output assertions\npassing on the cross-platform post-merge jobs, not just the ubuntu PR gate.",
          "is_bot": false,
          "headline": "Assert custom-step rendering with raw string literals",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-13T11:00:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1396a83a5a8ee59e726a727e543fad3fae2e734c",
          "body": "Read the Write flow top-down; the Scalar/MapBlock local functions that close\nover the list-marker flag now sit at the end. Behaviour is unchanged.",
          "is_bot": false,
          "headline": "Move custom-step render helpers below the emit sequence",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-13T11:00:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d3cb9b07e2d2bd3a49f1eb0121f96f354096d8b",
          "body": "Refactor GitHubActionsAttribute.GetSteps to assemble the base step sequence,\nhand it to a per-job GitHubActionsStepPipeline as read-only BuiltInSteps, query\nBuild for IConfigureGitHubActions, validate the collected inserts, then splice\nthem in at their anchor positions (call order preserved). Valida\n[…]\nls the\nbuild on an invalid step: exactly one of Uses/Run, With requires Uses, Shell\nonly on a run step. A build not implementing the interface, or one that inserts\nnothing, yields byte-identical YAML.",
          "is_bot": false,
          "headline": "Inject custom steps into generated GitHub Actions jobs",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-13T11:00:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bfc4bc630fe6ae125788822271b50ace34719db1",
          "body": "Introduce the public surface a build uses to inject custom workflow steps:\nGitHubActionsCustomStep (uses:/run: with fixed-order YAML rendering),\nGitHubActionsStepPosition (PostCheckout/PreRun/PostRun/JobEnd), the\nIConfigureGitHubActions hook interface, and GitHubActionsStepPipeline (per-job\ncontext + Insert + read-only BuiltInSteps view). Expose Fallout.Common internals\nto Fallout.Common.Specs so the pipeline's generator-only surface stays internal\nbut testable.",
          "is_bot": false,
          "headline": "Add typed step-injection types for the GitHub Actions generator",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-13T11:00:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61e04d84e9a1a03e5f7b164c9f77d1f6ae42947a",
          "body": null,
          "is_bot": false,
          "headline": "Fix bug, where a string stated as content is handled like a path",
          "author_name": "Lukas Gasselsberger | alu-one",
          "author_login": "ITaluone",
          "committed_at": "2026-07-13T09:07:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f407c7fd911b9ab3bf50915478bd1925138c5c95",
          "body": "Move the target-graph projection and JSON serialization out of\nSerializeBuildGraphAttribute into a pure BuildGraphUtility, so the\nbuild-graph.json contract the VS Code extension consumes can be\nsnapshot-tested without driving a full build. The attribute keeps only\nthe build-lifecycle hook and the fi\n[…]\nation.\n\nAddress review feedback: rename ResolveFalloutVersion -> FindFalloutVersion\n(it can return null) and brace the null guard.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Extract build-graph projection into testable BuildGraphUtility",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-13T08:08:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5c53a3925a4a82dc978d16e165384780675be1cf",
          "body": "Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Potential fix for pull request finding",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-13T08:08:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a29b6a96a1d3715edbf503796f2d26b2270a13f5",
          "body": "Co-authored-by: ITaluone <44049228+ITaluone@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Update SerializeBuildGraphAttribute.cs",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-13T08:08:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "19362d63fedaa54b429502ee79eead4cb1d2e28b",
          "body": "Co-authored-by: ITaluone <44049228+ITaluone@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Update SerializeBuildGraphAttribute.cs",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-13T08:08:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f11f0787bf3081b819f0e7f8a3323fdb0e3bf728",
          "body": "Add SerializeBuildGraphAttribute, which writes a machine-readable\nprojection of the target graph to <temp>/build-graph.json on every build\ninit: target names, descriptions, declaring type, default/listed flags,\nand the four relation kinds (dependsOn/after/triggeredBy/triggers).\n\nReuses the same grap\n[…]\n wrapped so a\nserialization failure can never fail a build. Consumed by the VS Code\nextension's targets view and dependency graph.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Emit build-graph.json on build initialization for editor tooling",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-13T08:08:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6583d78d2cc058cff4519f964ebedd0036a94d71",
          "body": "AGENTS.md and the versioning docs prescribed year-based target/YYYY\nlabels (per ADR-0004), but the repo actually standardised on evergreen\ntarget/vCurrent / target/vNext. Reconcile the docs to the real labels:\n\n- AGENTS.md rule #1, CONTRIBUTING.md, release-and-versioning.md\n  (targeting section + PR\n[…]\n rather\n  than rewritten, preserving the decision record.\n\nLegacy maintenance work still uses target/v10. Docs-only, non-breaking.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Align docs on evergreen target/vCurrent + target/vNext labels",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-13T02:02:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d4adc39d17d61c41b807a4d33a2cc3b144667498",
          "body": "The marketing site moved out of this repo into its own repo\n(Fallout-build/fallout.build), served via GitHub Pages from main. The\ngh-pages branch ADR-0008 listed as a steady-state branch no longer\nexists here; steady state is now just main + support/*.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Drop gh-pages from ADR-0008 steady-state branches",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-13T01:43:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bfb5163e940fff6a88b106eeb68651b570662c52",
          "body": null,
          "is_bot": false,
          "headline": "Support git worktrees",
          "author_name": "Lukas Gasselsberger | alu-one",
          "author_login": "ITaluone",
          "committed_at": "2026-07-12T13:41:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3969db057d84bcb7e7613f2098361ea7cbff5728",
          "body": "Co-authored-by: IT-VBFK <49762557+IT-VBFK@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Apply suggestions from code review",
          "author_name": "ITaluone",
          "author_login": "ITaluone",
          "committed_at": "2026-07-12T11:53:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "13cc97cedfdf227d626cb18aade45e6c641390dd",
          "body": null,
          "is_bot": false,
          "headline": "Bump projects xunit.runner.console version",
          "author_name": "ITaluone",
          "author_login": "ITaluone",
          "committed_at": "2026-07-12T11:53:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "504fdb7bda05977e06e291e4d49e4619e8eec5af",
          "body": "… higher version",
          "is_bot": false,
          "headline": "Fix local run tests, when xunit.runner.console version is globally on…",
          "author_name": "Lukas Gasselsberger | alu-one",
          "author_login": "ITaluone",
          "committed_at": "2026-07-12T11:53:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2249a5d0f40f4248a8ebda85d50b0c31bb54fee5",
          "body": "…t creation\n\nContributors weren't consistently labelling PRs, so release notes fell through to 'Other Changes'.\n\n- .github/release.yml: document the label taxonomy inline (header + per-label blurbs on what\n  each is for). It already drives auto-generated release notes; now it's also the canonical\n  \n[…]\n label + points at release.yml.\n\nSo AI applies the matching changelog-category label whenever it raises a PR on the user's behalf.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Make release.yml the label source of truth and require PR labelling a…",
          "author_name": "Chrison Simtian",
          "author_login": "ChrisonSimtian",
          "committed_at": "2026-07-12T05:26:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "344de856a13f4a7290ab27687c4df895c4179345",
          "body": "Give the four obsolete workflow_dispatch input arrays a DiagnosticId and\nUrlFormat so consumers building with TreatWarningsAsErrors can NoWarn this one\ndeprecation instead of blanket-disabling CS0618.\n\nA custom DiagnosticId replaces CS0618, so the internal bridge and test\nsuppressions are flipped to disable FALLOUTOBS001. Generated YAML is unchanged\n(compile-time consumer diagnostic only), so no snapshots move.\n\nRegister FALLOUTOBS001 in the docs/obsolete_apis.md registry.",
          "is_bot": false,
          "headline": "Report legacy workflow_dispatch input obsoletions under FALLOUTOBS001",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-10T09:11:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08fc24b233d4506ae14dddda7c655543a45cf18a",
          "body": "Trim the new inline comments to explain why (the test-injection seam, the\nbackward-compatible legacy fold, the spaced-name normalization) rather than\nrestating the code, matching the repo's concise comment style.",
          "is_bot": false,
          "headline": "Tighten dispatch-input comments to rationale-only",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-10T09:11:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc716db5cfdc245dfec03599a3554bf4f30f08be",
          "body": "Direct trigger-layer tests for the restored obsolete OptionalInputs/RequiredInputs\narrays (the attribute path only ever sets Inputs), plus equivalence guards proving\nthe obsolete and new APIs emit byte-identical YAML, and a regression test for\nspaced-workflow scoping.",
          "is_bot": false,
          "headline": "Cover obsolete and new workflow_dispatch input APIs",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-10T09:11:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5586d98c8834c6e9ba057c2c1737214f5443beec",
          "body": "Workflow names are spaces-to-underscores normalized in the ctor, so an input's\nWorkflows scope must be normalized the same way. Without this, scoping to a\nworkflow declared with a space (e.g. \"My Workflow\") silently dropped the input\nand validation threw \"unknown workflow\" for a correctly-spelled name.",
          "is_bot": false,
          "headline": "Normalize workflow_dispatch input scoping for spaced workflow names",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-10T09:11:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71ccfa6c66a2e1e25d1f65a4fc6fd47692092211",
          "body": "Three Verify cases: every input kind (dispatch-typed-inputs), Workflows scoping\n(dispatch-input-scoping), and legacy + typed coexistence (dispatch-legacy-plus-typed).\nTestGitHubActionsAttribute gains a named-workflow ctor and Inputs/WorkflowNames\nseams so cases vary inputs without static class-level attributes.",
          "is_bot": false,
          "headline": "Add snapshot coverage for typed workflow_dispatch inputs",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-10T09:11:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "11f58d053d341297ddc567e9cbd43ddc92bbb315",
          "body": "Covers every loud check: choice without options, default outside options,\noptions on a non-choice, non-numeric/non-boolean defaults, unknown workflow\nname, duplicate names, and blank names.",
          "is_bot": false,
          "headline": "Add validation tests for typed workflow_dispatch inputs",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-10T09:11:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99f4163cce273a171f8c5c1a628582dd2c6b2d9a",
          "body": "Collect [GitHubActionsInput] off the build class, scope by workflow name, and\nfold the legacy OnWorkflowDispatch*Inputs arrays into one model. The trigger\nwriter emits type:/default:/options: (string omits type:, keeping existing\noutput byte-identical). Misconfiguration fails generation loudly via\nA\n[…]\nithout options, default outside options/non-numeric/\nnon-boolean, unknown workflow name, options on a non-choice, duplicate or blank\nnames). The legacy arrays are marked [Obsolete] (removal 2027.x.x).",
          "is_bot": false,
          "headline": "Emit typed workflow_dispatch inputs from the GitHub Actions generator",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-10T09:11:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "433433b47b52dbb3720c5b99335b21866104f1df",
          "body": "Typed, compile-checked declaration surface for workflow_dispatch inputs\n(string/boolean/number/choice/environment), repeatable on the build class\nand scoped by workflow. Pure data carriers; not yet consumed.",
          "is_bot": false,
          "headline": "Add GitHubActionsInputType enum and [GitHubActionsInput] attribute",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-10T09:11:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "742261f7f8f072cb3e09caff4c4d3340815e45f5",
          "body": "Introduce docs/obsolete_apis.md as the canonical registry of FALLOUTOBS0xx\ndiagnostic IDs for [Obsolete] deprecations, so TreatWarningsAsErrors consumers\ncan NoWarn a single deprecation instead of blanket-disabling CS0618. Mirrors the\n[Experimental] FALLOUT0xx registry but uses a separate, never-col\n[…]\n from AGENTS.md rule #2. Scaffold only: the registry starts\nempty; the first ID (FALLOUTOBS001, legacy workflow_dispatch input arrays) is\nallocated by the typed-dispatch-inputs work that builds on it.",
          "is_bot": false,
          "headline": "Add obsolete-APIs diagnostic-ID registry and convention",
          "author_name": "Anže Videnič",
          "author_login": "avidenic",
          "committed_at": "2026-07-10T08:32:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "32a59f612715f1d0de79d20994b2ba71b2ebeb50",
          "body": null,
          "is_bot": false,
          "headline": "Add support for .slnx files in global tool's setup",
          "author_name": "Lukas Gasselsberger | alu-one",
          "author_login": "ITaluone",
          "committed_at": "2026-07-07T10:40:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 65,
      "commits_last_year": 336,
      "latest_release_at": "2026-07-26T12:43:22Z",
      "latest_release_tag": "v10.4.0-rc.4",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 13,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 6.7
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 87,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 13,
      "stars": 100,
      "watchers": 5,
      "fork_history": {
        "days": [
          {
            "date": "2026-06-06",
            "count": 1
          },
          {
            "date": "2026-06-07",
            "count": 1
          },
          {
            "date": "2026-06-09",
            "count": 2
          },
          {
            "date": "2026-06-16",
            "count": 1
          },
          {
            "date": "2026-06-20",
            "count": 1
          },
          {
            "date": "2026-07-03",
            "count": 1
          },
          {
            "date": "2026-07-05",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 1
          },
          {
            "date": "2026-07-16",
            "count": 1
          },
          {
            "date": "2026-07-17",
            "count": 1
          },
          {
            "date": "2026-07-23",
            "count": 1
          },
          {
            "date": "2026-07-25",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 13,
        "total_forks": 13
      },
      "star_history": null,
      "open_issues_and_prs": 183
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "build/_build.csproj",
        "src/Fallout.Build.Shared/Fallout.Build.Shared.csproj",
        "src/Fallout.Build/Fallout.Build.csproj",
        "src/Fallout.Cli/Fallout.Cli.csproj",
        "src/Fallout.Cli/templates/_build.csproj",
        "src/Fallout.Common/CI/TeamCity/Configuration/pom.xml",
        "src/Fallout.Common/Fallout.Common.csproj",
        "src/Fallout.Components/Fallout.Components.csproj",
        "src/Fallout.Core/Fallout.Core.csproj",
        "src/Fallout.MSBuildTasks/Fallout.MSBuildTasks.csproj",
        "src/Fallout.Migrate.Analyzers/Fallout.Migrate.Analyzers.csproj",
        "src/Fallout.Migrate/Fallout.Migrate.csproj",
        "src/Fallout.ProjectModel/Fallout.ProjectModel.csproj",
        "src/Fallout.SourceGenerators/Fallout.SourceGenerators.csproj",
        "src/Fallout.Tooling.Generator/Fallout.Tooling.Generator.csproj",
        "src/Fallout.Tooling/Fallout.Tooling.csproj",
        "src/Fallout.Utilities.IO.Compression/Fallout.Utilities.IO.Compression.csproj",
        "src/Fallout.Utilities.IO.Globbing/Fallout.Utilities.IO.Globbing.csproj",
        "src/Fallout.Utilities.Net/Fallout.Utilities.Net.csproj",
        "src/Fallout.Utilities.Text.Json/Fallout.Utilities.Text.Json.csproj",
        "src/Fallout.Utilities.Text.Yaml/Fallout.Utilities.Text.Yaml.csproj",
        "src/Fallout.Utilities/Fallout.Utilities.csproj",
        "src/Persistence/Fallout.Persistence.Solution/Fallout.Persistence.Solution.csproj",
        "src/Persistence/Fallout.Solution/Fallout.Solution.csproj",
        "src/Shims/Nuke.Build/Nuke.Build.csproj",
        "src/Shims/Nuke.Common/Nuke.Common.csproj",
        "src/Shims/Nuke.Components/Nuke.Components.csproj",
        "tests/Benchmarks/Fallout.Persistence.Solution.Benchmarks/Fallout.Persistence.Solution.Benchmarks.csproj",
        "tests/Consumers/Fallout.Consumer.Local/Fallout.Consumer.Local.csproj",
        "tests/Consumers/Fallout.Consumer.NuGet/Fallout.Consumer.NuGet.csproj",
        "tests/Consumers/Nuke.Consumer/Nuke.Consumer.csproj",
        "tests/Fallout.Build.Specs/Fallout.Build.Specs.csproj",
        "tests/Fallout.Cli.Specs/Fallout.Cli.Specs.csproj",
        "tests/Fallout.Common.Specs/Fallout.Common.Specs.csproj",
        "tests/Fallout.Components.Specs/Fallout.Components.Specs.csproj",
        "tests/Fallout.Core.Specs/Fallout.Core.Specs.csproj",
        "tests/Fallout.Migrate.Analyzers.Specs/Fallout.Migrate.Analyzers.Specs.csproj",
        "tests/Fallout.Migrate.Specs/Fallout.Migrate.Specs.csproj",
        "tests/Fallout.ProjectModel.Specs/Fallout.ProjectModel.Specs.csproj",
        "tests/Fallout.Solution.Specs/Fallout.Solution.Specs.csproj",
        "tests/Fallout.SourceGenerators.Specs/Fallout.SourceGenerators.Specs.csproj",
        "tests/Fallout.Tooling.Specs/Fallout.Tooling.Specs.csproj",
        "tests/Fallout.Utilities.Specs/Fallout.Utilities.Specs.csproj",
        "tests/Nuke.Common.Shim.Specs/Nuke.Common.Shim.Specs.csproj",
        "tests/Nuke.Components.Shim.Specs/Nuke.Components.Shim.Specs.csproj"
      ],
      "largest_source_bytes": 2377944,
      "source_files_sampled": 865,
      "oversized_source_files": 20,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 12008
    },
    "dependencies": {
      "manifests": [
        "build/_build.csproj"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "Microsoft.Build.Tasks.Core",
            "direct": true,
            "version": "17.11.48",
            "severity": "high",
            "ecosystem": "nuget",
            "cvss_score": 8,
            "advisory_ids": [
              "GHSA-h4j7-5rxr-p4wc"
            ],
            "fixed_version": "17.14.8",
            "advisory_count": 1,
            "oldest_advisory_days": 438
          },
          {
            "name": "Scriban",
            "direct": true,
            "version": "7.2.0",
            "severity": "high",
            "ecosystem": "nuget",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-6q7j-xr26-3h2c",
              "GHSA-7jvp-hj45-2f2m",
              "GHSA-q6rr-fm2g-g5x8"
            ],
            "fixed_version": "7.2.2",
            "advisory_count": 3,
            "oldest_advisory_days": 29
          },
          {
            "name": "System.Security.Cryptography.Xml",
            "direct": true,
            "version": "10.0.6",
            "severity": "high",
            "ecosystem": "nuget",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-23rf-6693-g89p",
              "GHSA-8q5v-6pqq-x66h",
              "GHSA-cvvh-rhrc-wg4q",
              "GHSA-g8r8-53c2-pm3f",
              "GHSA-mmjf-rqrv-855v"
            ],
            "fixed_version": "10.0.10",
            "advisory_count": 5,
            "oldest_advisory_days": 5
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 3
        },
        "advisory_count": 9,
        "affected_count": 3,
        "assessed_count": 311,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 8,
        "direct_affected_count": 3
      },
      "ecosystems": [
        "nuget"
      ],
      "dependencies": [
        {
          "name": "System.Security.Cryptography.Xml",
          "manifest": "build/_build.csproj",
          "ecosystem": "nuget",
          "version_constraint": "10.0.10"
        },
        {
          "name": "Nerdbank.GitVersioning",
          "manifest": "build/_build.csproj",
          "ecosystem": "nuget",
          "version_constraint": "3.7.115"
        },
        {
          "name": "System.Text.Json",
          "manifest": "src/Fallout.Build.Shared/Fallout.Build.Shared.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Extensions.DependencyModel",
          "manifest": "src/Fallout.Build/Fallout.Build.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Serilog.Formatting.Compact",
          "manifest": "src/Fallout.Build/Fallout.Build.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Serilog.Formatting.Compact.Reader",
          "manifest": "src/Fallout.Build/Fallout.Build.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Serilog.Sinks.Console",
          "manifest": "src/Fallout.Build/Fallout.Build.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Serilog.Sinks.File",
          "manifest": "src/Fallout.Build/Fallout.Build.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Extensions.DependencyInjection",
          "manifest": "src/Fallout.Cli/Fallout.Cli.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Spectre.Console",
          "manifest": "src/Fallout.Cli/Fallout.Cli.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.CodeAnalysis.CSharp",
          "manifest": "src/Fallout.Cli/Fallout.Cli.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.CodeAnalysis.Workspaces.MSBuild",
          "manifest": "src/Fallout.Cli/Fallout.Cli.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.CodeAnalysis.Workspaces.Common",
          "manifest": "src/Fallout.Cli/Fallout.Cli.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Azure.Identity",
          "manifest": "src/Fallout.Common/Fallout.Common.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Azure.Security.KeyVault.Certificates",
          "manifest": "src/Fallout.Common/Fallout.Common.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Azure.Security.KeyVault.Keys",
          "manifest": "src/Fallout.Common/Fallout.Common.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Azure.Security.KeyVault.Secrets",
          "manifest": "src/Fallout.Common/Fallout.Common.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Octokit",
          "manifest": "src/Fallout.Common/Fallout.Common.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "NuGet.Packaging",
          "manifest": "src/Fallout.MSBuildTasks/Fallout.MSBuildTasks.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Build.Utilities.Core",
          "manifest": "src/Fallout.MSBuildTasks/Fallout.MSBuildTasks.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Build.Framework",
          "manifest": "src/Fallout.MSBuildTasks/Fallout.MSBuildTasks.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.CodeAnalysis.CSharp",
          "manifest": "src/Fallout.Migrate.Analyzers/Fallout.Migrate.Analyzers.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.CodeAnalysis.CSharp.Workspaces",
          "manifest": "src/Fallout.Migrate.Analyzers/Fallout.Migrate.Analyzers.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.CodeAnalysis.Analyzers",
          "manifest": "src/Fallout.Migrate.Analyzers/Fallout.Migrate.Analyzers.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "JetBrains.Annotations",
          "manifest": "src/Fallout.Migrate/Fallout.Migrate.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Spectre.Console.Cli",
          "manifest": "src/Fallout.Migrate/Fallout.Migrate.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Build.Locator",
          "manifest": "src/Fallout.ProjectModel/Fallout.ProjectModel.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Build",
          "manifest": "src/Fallout.ProjectModel/Fallout.ProjectModel.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Build.Framework",
          "manifest": "src/Fallout.ProjectModel/Fallout.ProjectModel.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Build.Tasks.Core",
          "manifest": "src/Fallout.ProjectModel/Fallout.ProjectModel.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Build.Utilities.Core",
          "manifest": "src/Fallout.ProjectModel/Fallout.ProjectModel.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.CodeAnalysis.CSharp",
          "manifest": "src/Fallout.SourceGenerators/Fallout.SourceGenerators.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.CodeAnalysis.Analyzers",
          "manifest": "src/Fallout.SourceGenerators/Fallout.SourceGenerators.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Scriban",
          "manifest": "src/Fallout.SourceGenerators/Fallout.SourceGenerators.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "HtmlAgilityPack",
          "manifest": "src/Fallout.Tooling.Generator/Fallout.Tooling.Generator.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Humanizer",
          "manifest": "src/Fallout.Tooling.Generator/Fallout.Tooling.Generator.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "System.Text.Json",
          "manifest": "src/Fallout.Tooling.Generator/Fallout.Tooling.Generator.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Serilog",
          "manifest": "src/Fallout.Tooling.Generator/Fallout.Tooling.Generator.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "System.ComponentModel.Annotations",
          "manifest": "src/Fallout.Tooling.Generator/Fallout.Tooling.Generator.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "NuGet.Packaging",
          "manifest": "src/Fallout.Tooling/Fallout.Tooling.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Serilog",
          "manifest": "src/Fallout.Tooling/Fallout.Tooling.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "SharpZipLib",
          "manifest": "src/Fallout.Utilities.IO.Compression/Fallout.Utilities.IO.Compression.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Glob",
          "manifest": "src/Fallout.Utilities.IO.Globbing/Fallout.Utilities.IO.Globbing.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "System.Net.Http",
          "manifest": "src/Fallout.Utilities.Net/Fallout.Utilities.Net.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "System.Text.Json",
          "manifest": "src/Fallout.Utilities.Net/Fallout.Utilities.Net.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "System.Text.Json",
          "manifest": "src/Fallout.Utilities.Text.Json/Fallout.Utilities.Text.Json.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "YamlDotNet",
          "manifest": "src/Fallout.Utilities.Text.Yaml/Fallout.Utilities.Text.Yaml.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "Azure.Identity",
            "direct": true,
            "version": "1.17.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Azure.Security.KeyVault.Certificates",
            "direct": true,
            "version": "4.8.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Azure.Security.KeyVault.Keys",
            "direct": true,
            "version": "4.8.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Azure.Security.KeyVault.Secrets",
            "direct": true,
            "version": "4.8.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Glob",
            "direct": true,
            "version": "1.1.9",
            "ecosystem": "nuget"
          },
          {
            "name": "HtmlAgilityPack",
            "direct": true,
            "version": "1.11.71",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer",
            "direct": true,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "JetBrains.Annotations",
            "direct": true,
            "version": "2026.2.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build",
            "direct": true,
            "version": "17.11.48",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build",
            "direct": true,
            "version": "17.14.28",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build",
            "direct": true,
            "version": "18.0.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build.Framework",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build.Framework",
            "direct": true,
            "version": "17.11.48",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build.Framework",
            "direct": true,
            "version": "17.14.28",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build.Framework",
            "direct": true,
            "version": "18.0.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build.Locator",
            "direct": true,
            "version": "1.7.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build.Tasks.Core",
            "direct": true,
            "version": "17.11.48",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build.Tasks.Core",
            "direct": true,
            "version": "17.14.28",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build.Tasks.Core",
            "direct": true,
            "version": "18.0.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build.Utilities.Core",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build.Utilities.Core",
            "direct": true,
            "version": "17.11.48",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build.Utilities.Core",
            "direct": true,
            "version": "17.14.28",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build.Utilities.Core",
            "direct": true,
            "version": "18.0.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.Analyzers",
            "direct": true,
            "version": "3.11.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.CSharp",
            "direct": true,
            "version": "4.12.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.CSharp",
            "direct": true,
            "version": "4.7.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.CSharp.Workspaces",
            "direct": true,
            "version": "4.12.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.Workspaces.Common",
            "direct": true,
            "version": "4.12.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.Workspaces.MSBuild",
            "direct": true,
            "version": "4.12.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.DependencyInjection",
            "direct": true,
            "version": "10.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.DependencyModel",
            "direct": true,
            "version": "10.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Nerdbank.GitVersioning",
            "direct": true,
            "version": "3.7.115",
            "ecosystem": "nuget"
          },
          {
            "name": "NuGet.Packaging",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "NuGet.Packaging",
            "direct": true,
            "version": "6.14.3",
            "ecosystem": "nuget"
          },
          {
            "name": "Octokit",
            "direct": true,
            "version": "14.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Scriban",
            "direct": true,
            "version": "7.2.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Serilog",
            "direct": true,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Serilog.Formatting.Compact",
            "direct": true,
            "version": "3.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Serilog.Formatting.Compact.Reader",
            "direct": true,
            "version": "4.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Serilog.Sinks.Console",
            "direct": true,
            "version": "6.1.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Serilog.Sinks.File",
            "direct": true,
            "version": "7.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "SharpZipLib",
            "direct": true,
            "version": "1.4.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Spectre.Console",
            "direct": true,
            "version": "0.49.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Spectre.Console.Cli",
            "direct": true,
            "version": "0.49.1",
            "ecosystem": "nuget"
          },
          {
            "name": "System.ComponentModel.Annotations",
            "direct": true,
            "version": "5.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Net.Http",
            "direct": true,
            "version": "4.3.4",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Xml",
            "direct": true,
            "version": "10.0.10",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Xml",
            "direct": true,
            "version": "10.0.6",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Xml",
            "direct": true,
            "version": "8.0.4",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Xml",
            "direct": true,
            "version": "9.0.18",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Text.Json",
            "direct": true,
            "version": "10.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "YamlDotNet",
            "direct": true,
            "version": "16.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "org.jetbrains.kotlin:kotlin-maven-plugin",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.kotlin:kotlin-script-runtime",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.kotlin:kotlin-stdlib-jdk8",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.teamcity:configs-dsl-kotlin",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.teamcity:configs-dsl-kotlin-plugins",
            "direct": false,
            "version": "1.0-SNAPSHOT",
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.teamcity:teamcity-configs-maven-plugin",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "Argon",
            "direct": false,
            "version": "0.33.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Azure.Core",
            "direct": false,
            "version": "1.50.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Basic.Reference.Assemblies.NetStandard20",
            "direct": false,
            "version": "1.7.9",
            "ecosystem": "nuget"
          },
          {
            "name": "BenchmarkDotNet",
            "direct": false,
            "version": "0.14.0",
            "ecosystem": "nuget"
          },
          {
            "name": "BenchmarkDotNet.Annotations",
            "direct": false,
            "version": "0.14.0",
            "ecosystem": "nuget"
          },
          {
            "name": "CommandLineParser",
            "direct": false,
            "version": "2.9.1",
            "ecosystem": "nuget"
          },
          {
            "name": "coverlet.msbuild",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "nuget"
          },
          {
            "name": "DiffEngine",
            "direct": false,
            "version": "17.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "DiffPlex",
            "direct": false,
            "version": "1.7.2",
            "ecosystem": "nuget"
          },
          {
            "name": "EmptyFiles",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.Build",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.Build.Shared",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.Common",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.Common",
            "direct": false,
            "version": "_FALLOUT_VERSION_",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.Components",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.ProjectModel",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.SolutionModel",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.Tooling",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.Utilities",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.Utilities.IO.Compression",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.Utilities.IO.Globbing",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.Utilities.Net",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.Utilities.Text.Json",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.Utilities.Text.Yaml",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Fallout.VisualStudio.SolutionPersistence",
            "direct": false,
            "version": "11.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "FluentAssertions",
            "direct": false,
            "version": "8.10.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Gee.External.Capstone",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "GitHubActionsTestLogger",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core",
            "direct": false,
            "version": "2.14.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.af",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.ar",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.az",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.bg",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.bn",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.ca",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.cs",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.da",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.de",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.el",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.es",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.fa",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.fi",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.fil",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.fr",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.he",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.hr",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.hu",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.hy",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.id",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.is",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.it",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.ja",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.ko",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.ku",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.lb",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.lt",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.lv",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.ms",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.mt",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.nb",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.nl",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.pl",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.pt",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.pt-BR",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.ro",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.ru",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.sk",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.sl",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.sr",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.sr-Latn",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.sv",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.th",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.tr",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.uk",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.uz-Cyrl-UZ",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.uz-Latn-UZ",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.vi",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.zh-CN",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.zh-Hans",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core.zh-Hant",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Iced",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "nuget"
          },
          {
            "name": "IsExternalInit",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Bcl.AsyncInterfaces",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Bcl.AsyncInterfaces",
            "direct": false,
            "version": "10.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Bcl.AsyncInterfaces",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Build.Tasks.Git",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.Analyzer.Testing",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.CodeFix.Testing",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.Common",
            "direct": false,
            "version": "4.12.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.Common",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.CSharp.Analyzer.Testing",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.CSharp.Analyzer.Testing.XUnit",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.CSharp.CodeFix.Testing",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.CSharp.CodeFix.Testing.XUnit",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.Testing.Verifiers.XUnit",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeCoverage",
            "direct": false,
            "version": "18.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CSharp",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Diagnostics.NETCore.Client",
            "direct": false,
            "version": "0.2.251802",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Diagnostics.Runtime",
            "direct": false,
            "version": "2.2.332302",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Diagnostics.Tracing.TraceEvent",
            "direct": false,
            "version": "3.1.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.DotNet.PlatformAbstractions",
            "direct": false,
            "version": "3.1.6",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Configuration",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Configuration.Abstractions",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Configuration.Binder",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.DependencyInjection.Abstractions",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.DependencyInjection.Abstractions",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.DependencyInjection.Abstractions",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Logging",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Logging",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Logging.Abstractions",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Logging.Abstractions",
            "direct": false,
            "version": "8.0.3",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Options",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Options",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Primitives",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Primitives",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Identity.Client",
            "direct": false,
            "version": "4.78.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Identity.Client.Extensions.Msal",
            "direct": false,
            "version": "4.78.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.IdentityModel.Abstractions",
            "direct": false,
            "version": "8.14.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NET.StringTools",
            "direct": false,
            "version": "17.11.48",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NET.StringTools",
            "direct": false,
            "version": "17.14.28",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NET.StringTools",
            "direct": false,
            "version": "18.0.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NET.Test.Sdk",
            "direct": false,
            "version": "18.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NETCore.Platforms",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NETCore.Platforms",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NETCore.Platforms",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NETCore.Targets",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.SourceLink.Common",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.SourceLink.GitHub",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.TestPlatform.ObjectModel",
            "direct": false,
            "version": "18.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.TestPlatform.TestHost",
            "direct": false,
            "version": "18.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.VisualStudio.Composition",
            "direct": false,
            "version": "16.1.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.VisualStudio.Composition.NetFxAttributes",
            "direct": false,
            "version": "16.1.8",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.VisualStudio.Validation",
            "direct": false,
            "version": "15.0.82",
            "ecosystem": "nuget"
          },
          {
            "name": "Mono.Cecil",
            "direct": false,
            "version": "0.11.3",
            "ecosystem": "nuget"
          },
          {
            "name": "NetArchTest.Rules",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "nuget"
          },
          {
            "name": "NETStandard.Library",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "nuget"
          },
          {
            "name": "Newtonsoft.Json",
            "direct": false,
            "version": "13.0.3",
            "ecosystem": "nuget"
          },
          {
            "name": "NuGet.Common",
            "direct": false,
            "version": "6.14.3",
            "ecosystem": "nuget"
          },
          {
            "name": "NuGet.Configuration",
            "direct": false,
            "version": "6.14.3",
            "ecosystem": "nuget"
          },
          {
            "name": "NuGet.Frameworks",
            "direct": false,
            "version": "6.14.3",
            "ecosystem": "nuget"
          },
          {
            "name": "NuGet.Protocol",
            "direct": false,
            "version": "6.3.4",
            "ecosystem": "nuget"
          },
          {
            "name": "NuGet.Resolver",
            "direct": false,
            "version": "6.3.4",
            "ecosystem": "nuget"
          },
          {
            "name": "NuGet.Versioning",
            "direct": false,
            "version": "6.14.3",
            "ecosystem": "nuget"
          },
          {
            "name": "Perfolizer",
            "direct": false,
            "version": "0.3.17",
            "ecosystem": "nuget"
          },
          {
            "name": "PolySharp",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "nuget"
          },
          {
            "name": "ReportGenerator",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.native.System",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.native.System.Net.Http",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.native.System.Security.Cryptography.Apple",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.native.System.Security.Cryptography.OpenSsl",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "nuget"
          },
          {
            "name": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "nuget"
          },
          {
            "name": "SimpleInfoName",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Buffers",
            "direct": false,
            "version": "4.6.1",
            "ecosystem": "nuget"
          },
          {
            "name": "System.ClientModel",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.CodeDom",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.CodeDom",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.CodeDom",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Collections",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Collections.Concurrent",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Collections.Immutable",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Collections.Immutable",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Collections.Immutable",
            "direct": false,
            "version": "9.0.10",
            "ecosystem": "nuget"
          },
          {
            "name": "System.ComponentModel.Composition",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Composition",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Composition.AttributedModel",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Composition.Convention",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Composition.Hosting",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Composition.Runtime",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Composition.TypedParts",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Configuration.ConfigurationManager",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Configuration.ConfigurationManager",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Diagnostics.Debug",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Diagnostics.DiagnosticSource",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Diagnostics.DiagnosticSource",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Diagnostics.EventLog",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Diagnostics.EventLog",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Diagnostics.Tracing",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Formats.Asn1",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Formats.Nrbf",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Globalization",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Globalization.Calendars",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Globalization.Extensions",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.IO",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.IO.FileSystem",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.IO.FileSystem.Primitives",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.IO.Pipelines",
            "direct": false,
            "version": "10.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "System.IO.Pipelines",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Linq",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Management",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Management",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Memory",
            "direct": false,
            "version": "4.6.3",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Memory.Data",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Net.Primitives",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Numerics.Vectors",
            "direct": false,
            "version": "4.6.1",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Reflection",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Reflection.Metadata",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Reflection.Metadata",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Reflection.MetadataLoadContext",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Reflection.MetadataLoadContext",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Reflection.Primitives",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Resources.Extensions",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Resources.Extensions",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Resources.ResourceManager",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Runtime",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Runtime.CompilerServices.Unsafe",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Runtime.Extensions",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Runtime.Handles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Runtime.InteropServices",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Runtime.Numerics",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Algorithms",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Cng",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Cng",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Csp",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Encoding",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.OpenSsl",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Pkcs",
            "direct": false,
            "version": "10.0.10",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Pkcs",
            "direct": false,
            "version": "10.0.6",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Pkcs",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Pkcs",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Pkcs",
            "direct": false,
            "version": "9.0.18",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.Primitives",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.ProtectedData",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.ProtectedData",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.ProtectedData",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.ProtectedData",
            "direct": false,
            "version": "9.0.6",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Cryptography.X509Certificates",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Permissions",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Security.Permissions",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Text.Encoding",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Text.Encoding.CodePages",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Text.Encodings.Web",
            "direct": false,
            "version": "10.0.8",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Threading",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Threading.Channels",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Threading.Channels",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Threading.Tasks",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Threading.Tasks.Extensions",
            "direct": false,
            "version": "4.6.3",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Windows.Extensions",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Verify",
            "direct": false,
            "version": "31.7.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Verify.DiffPlex",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "nuget"
          },
          {
            "name": "Verify.SourceGenerators",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Verify.Xunit",
            "direct": false,
            "version": "31.7.1",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit",
            "direct": false,
            "version": "2.9.3",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit.abstractions",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit.analyzers",
            "direct": false,
            "version": "1.18.0",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit.assert",
            "direct": false,
            "version": "2.9.3",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit.core",
            "direct": false,
            "version": "2.9.3",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit.extensibility.core",
            "direct": false,
            "version": "2.9.3",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit.extensibility.execution",
            "direct": false,
            "version": "2.9.3",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit.runner.console",
            "direct": false,
            "version": "2.9.3",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit.runner.visualstudio",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "nuget"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 319,
        "direct_count": 52,
        "indirect_count": 267
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 29,
        "merged_prs": 225,
        "open_issues": 154,
        "closed_ratio": 0.423,
        "closed_issues": 113,
        "closed_unmerged_prs": 38
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "matkoch",
          "commits": 3080,
          "avatar_url": "https://avatars.githubusercontent.com/u/5005566?v=4"
        },
        {
          "type": "User",
          "login": "ChrisonSimtian",
          "commits": 211,
          "avatar_url": "https://avatars.githubusercontent.com/u/2966166?v=4"
        },
        {
          "type": "User",
          "login": "arodus",
          "commits": 66,
          "avatar_url": "https://avatars.githubusercontent.com/u/18667020?v=4"
        },
        {
          "type": "User",
          "login": "ITaluone",
          "commits": 36,
          "avatar_url": "https://avatars.githubusercontent.com/u/44049228?v=4"
        },
        {
          "type": "User",
          "login": "dennisdoomen",
          "commits": 34,
          "avatar_url": "https://avatars.githubusercontent.com/u/572734?v=4"
        },
        {
          "type": "User",
          "login": "avidenic",
          "commits": 29,
          "avatar_url": "https://avatars.githubusercontent.com/u/6639357?v=4"
        },
        {
          "type": "User",
          "login": "lahma",
          "commits": 22,
          "avatar_url": "https://avatars.githubusercontent.com/u/171892?v=4"
        },
        {
          "type": "User",
          "login": "GeorgDangl",
          "commits": 8,
          "avatar_url": "https://avatars.githubusercontent.com/u/10274404?v=4"
        },
        {
          "type": "User",
          "login": "matt-richardson",
          "commits": 8,
          "avatar_url": "https://avatars.githubusercontent.com/u/373389?v=4"
        },
        {
          "type": "User",
          "login": "macsux",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/1102552?v=4"
        }
      ],
      "contributors_sampled": 99,
      "top_contributor_share": 0.831
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "build-cross-platform.yml",
        "build-skip.yml",
        "build.yml",
        "publish-packages-preview.yml",
        "publish-packages-release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "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": 1,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "14 out of 14 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 7,
            "reason": "Found 11/14 approved changesets -- score normalized to 7",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 24 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 3,
            "reason": "SAST tool is not run on all commits -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 9,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "0f5d2f0bbda75c74c88813b9e89309bd40762464",
        "ran_at": "2026-07-26T13:21:47Z",
        "aggregate_score": 5.4,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-26T11:49:02Z",
      "oldest_open_prs": [
        {
          "number": 423,
          "created_at": "2026-06-25T01:36:49Z",
          "last_comment_at": "2026-06-26T23:48:44Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 442,
          "created_at": "2026-06-29T11:17:57Z",
          "last_comment_at": "2026-07-04T22:55:37Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 447,
          "created_at": "2026-06-30T08:48:14Z",
          "last_comment_at": "2026-07-04T22:53:58Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 452,
          "created_at": "2026-06-30T10:14:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 453,
          "created_at": "2026-06-30T10:19:30Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 454,
          "created_at": "2026-06-30T10:35:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 474,
          "created_at": "2026-07-09T18:48:39Z",
          "last_comment_at": "2026-07-11T08:56:31Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 478,
          "created_at": "2026-07-11T18:53:09Z",
          "last_comment_at": "2026-07-25T11:31:14Z",
          "last_comment_author": "IT-VBFK"
        },
        {
          "number": 498,
          "created_at": "2026-07-17T02:55:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 517,
          "created_at": "2026-07-20T08:35:06Z",
          "last_comment_at": "2026-07-20T10:45:22Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 519,
          "created_at": "2026-07-20T11:04:45Z",
          "last_comment_at": "2026-07-20T19:45:56Z",
          "last_comment_author": "ITaluone"
        },
        {
          "number": 526,
          "created_at": "2026-07-21T01:17:57Z",
          "last_comment_at": "2026-07-21T05:58:34Z",
          "last_comment_author": "ITaluone"
        },
        {
          "number": 528,
          "created_at": "2026-07-21T02:18:02Z",
          "last_comment_at": "2026-07-26T08:00:00Z",
          "last_comment_author": "dennisdoomen"
        },
        {
          "number": 529,
          "created_at": "2026-07-21T03:36:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 530,
          "created_at": "2026-07-21T05:21:05Z",
          "last_comment_at": "2026-07-21T07:12:23Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 536,
          "created_at": "2026-07-24T00:44:30Z",
          "last_comment_at": "2026-07-25T07:26:02Z",
          "last_comment_author": "dennisdoomen"
        },
        {
          "number": 540,
          "created_at": "2026-07-24T03:42:48Z",
          "last_comment_at": "2026-07-24T22:27:17Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 541,
          "created_at": "2026-07-24T04:06:53Z",
          "last_comment_at": "2026-07-24T22:36:07Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 542,
          "created_at": "2026-07-26T02:41:06Z",
          "last_comment_at": "2026-07-26T03:01:32Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 549,
          "created_at": "2026-07-26T11:40:54Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-26T13:10:21Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 6,
          "created_at": "2026-05-18T03:20:39Z",
          "last_comment_at": "2026-07-23T00:12:44Z",
          "last_comment_author": "YousifSala7"
        },
        {
          "number": 7,
          "created_at": "2026-05-18T03:20:45Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 8,
          "created_at": "2026-05-18T03:20:49Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 17,
          "created_at": "2026-05-18T04:19:31Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 18,
          "created_at": "2026-05-18T04:19:36Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 19,
          "created_at": "2026-05-18T04:19:41Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 45,
          "created_at": "2026-05-18T08:41:23Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 72,
          "created_at": "2026-05-21T08:59:34Z",
          "last_comment_at": "2026-05-21T09:02:54Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 73,
          "created_at": "2026-05-21T09:02:12Z",
          "last_comment_at": "2026-05-21T09:02:56Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 74,
          "created_at": "2026-05-21T09:02:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 97,
          "created_at": "2026-05-21T22:39:37Z",
          "last_comment_at": "2026-05-25T10:12:17Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 98,
          "created_at": "2026-05-21T22:39:39Z",
          "last_comment_at": "2026-05-25T10:12:21Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 99,
          "created_at": "2026-05-21T22:39:42Z",
          "last_comment_at": "2026-05-25T10:12:26Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 100,
          "created_at": "2026-05-21T22:39:44Z",
          "last_comment_at": "2026-05-25T10:12:30Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 101,
          "created_at": "2026-05-21T22:39:46Z",
          "last_comment_at": "2026-05-25T10:12:35Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 104,
          "created_at": "2026-05-22T07:39:55Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 105,
          "created_at": "2026-05-22T07:40:10Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 106,
          "created_at": "2026-05-22T07:40:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 113,
          "created_at": "2026-05-22T12:15:29Z",
          "last_comment_at": "2026-05-27T12:20:49Z",
          "last_comment_author": "ChrisonSimtian"
        },
        {
          "number": 121,
          "created_at": "2026-05-24T01:07:24Z",
          "last_comment_at": "2026-05-24T01:08:07Z",
          "last_comment_author": "ChrisonSimtian"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/Fallout-build/Fallout",
    "host": "github.com",
    "name": "Fallout",
    "owner": "Fallout-build"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 63,
      "inputs": {
        "security": 54,
        "vitality": 74,
        "community": 64,
        "governance": 46,
        "engineering": 80
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 74,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 63,
            "inputs": {
              "commits_last_year": 336,
              "human_commit_share": 0.99,
              "days_since_last_push": 0,
              "active_weeks_last_year": 13
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "13/52 weeks with commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 13
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "336 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 336
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 65,
              "latest_release_tag": "v10.4.0-rc.4",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 6.7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "65 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 65
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~6.7 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 6.7
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 64,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 45,
            "inputs": {
              "forks": 13,
              "stars": 100,
              "watchers": 5,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "100 stars",
                "points": 32.4,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "13 forks",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 13
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "5 watchers",
                "points": 3.3,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 86,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "has_pull_request_template": true
            },
            "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": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 46,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 36,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 99,
              "top_contributor_share": 0.831
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 83% of commits",
                "points": 3.8,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 83
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "99 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 99
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 24 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 63,
            "inputs": {
              "merged_prs": 225,
              "open_issues": 154,
              "closed_issues": 113,
              "issue_closed_ratio": 0.423,
              "closed_unmerged_prs": 38
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "42% of issues closed",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 42
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "225/263 decided PRs merged",
                "points": 32.7,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 225,
                      "decided": 263
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 11/14 approved changesets -- score normalized to 7",
                "points": 10.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 42,
            "inputs": {
              "followers": 3,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "Fallout-build",
              "public_repos": 8,
              "account_age_days": 59
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "3 followers of Fallout-build",
                "points": 4.3,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 3,
                      "login": "Fallout-build"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "8 public repos, account ~0 yr old",
                "points": 7.3,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 8
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 80,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "5 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "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": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "14 out of 14 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": "https://fallout.build/",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://fallout.build/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 54,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 5.4
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "14 out of 14 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 11/14 approved changesets -- score normalized to 7",
                "points": 5.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 24 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 3",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "moderate",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 311 resolved dependencies against OSV; 8 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 311
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 8
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 56,
            "inputs": {
              "source": "osv",
              "advisories": 9,
              "affected_packages": 3,
              "assessed_packages": 311,
              "unassessed_packages": 8,
              "affected_by_severity": "high 3",
              "direct_affected_packages": 3
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "3 affected: Microsoft.Build.Tasks.Core 17.11.48 (high 8.0), Scriban 7.2.0 (high 7.5), System.Security.Cryptography.Xml 10.0.6 (high 8.1)",
                "points": 8.9,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 3,
                      "packages": "Microsoft.Build.Tasks.Core 17.11.48 (high 8.0), Scriban 7.2.0 (high 7.5), System.Security.Cryptography.Xml 10.0.6 (high 8.1)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "1 advisory-carrying package(s) unaddressed past 90 days; oldest published 438 days ago",
                "points": 33.3,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 1,
                      "oldest": 438
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 311,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 15
            },
            "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": "good",
        "name": "AI Readiness",
        "value": 82,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "good",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.737,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 12008
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "73 of 99 human commits state their intent (structured subject or explanatory body)",
                "points": 39.3,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 73,
                      "sampled": 99
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.47,
              "toolchain_manifests": [
                "build/_build.csproj",
                "src/Fallout.Build.Shared/Fallout.Build.Shared.csproj",
                "src/Fallout.Build/Fallout.Build.csproj",
                "src/Fallout.Cli/Fallout.Cli.csproj",
                "src/Fallout.Cli/templates/_build.csproj",
                "src/Fallout.Common/CI/TeamCity/Configuration/pom.xml",
                "src/Fallout.Common/Fallout.Common.csproj",
                "src/Fallout.Components/Fallout.Components.csproj",
                "src/Fallout.Core/Fallout.Core.csproj",
                "src/Fallout.MSBuildTasks/Fallout.MSBuildTasks.csproj",
                "src/Fallout.Migrate.Analyzers/Fallout.Migrate.Analyzers.csproj",
                "src/Fallout.Migrate/Fallout.Migrate.csproj",
                "src/Fallout.ProjectModel/Fallout.ProjectModel.csproj",
                "src/Fallout.SourceGenerators/Fallout.SourceGenerators.csproj",
                "src/Fallout.Tooling.Generator/Fallout.Tooling.Generator.csproj",
                "src/Fallout.Tooling/Fallout.Tooling.csproj",
                "src/Fallout.Utilities.IO.Compression/Fallout.Utilities.IO.Compression.csproj",
                "src/Fallout.Utilities.IO.Globbing/Fallout.Utilities.IO.Globbing.csproj",
                "src/Fallout.Utilities.Net/Fallout.Utilities.Net.csproj",
                "src/Fallout.Utilities.Text.Json/Fallout.Utilities.Text.Json.csproj",
                "src/Fallout.Utilities.Text.Yaml/Fallout.Utilities.Text.Yaml.csproj",
                "src/Fallout.Utilities/Fallout.Utilities.csproj",
                "src/Persistence/Fallout.Persistence.Solution/Fallout.Persistence.Solution.csproj",
                "src/Persistence/Fallout.Solution/Fallout.Solution.csproj",
                "src/Shims/Nuke.Build/Nuke.Build.csproj",
                "src/Shims/Nuke.Common/Nuke.Common.csproj",
                "src/Shims/Nuke.Components/Nuke.Components.csproj",
                "tests/Benchmarks/Fallout.Persistence.Solution.Benchmarks/Fallout.Persistence.Solution.Benchmarks.csproj",
                "tests/Consumers/Fallout.Consumer.Local/Fallout.Consumer.Local.csproj",
                "tests/Consumers/Fallout.Consumer.NuGet/Fallout.Consumer.NuGet.csproj",
                "tests/Consumers/Nuke.Consumer/Nuke.Consumer.csproj",
                "tests/Fallout.Build.Specs/Fallout.Build.Specs.csproj",
                "tests/Fallout.Cli.Specs/Fallout.Cli.Specs.csproj",
                "tests/Fallout.Common.Specs/Fallout.Common.Specs.csproj",
                "tests/Fallout.Components.Specs/Fallout.Components.Specs.csproj",
                "tests/Fallout.Core.Specs/Fallout.Core.Specs.csproj",
                "tests/Fallout.Migrate.Analyzers.Specs/Fallout.Migrate.Analyzers.Specs.csproj",
                "tests/Fallout.Migrate.Specs/Fallout.Migrate.Specs.csproj",
                "tests/Fallout.ProjectModel.Specs/Fallout.ProjectModel.Specs.csproj",
                "tests/Fallout.Solution.Specs/Fallout.Solution.Specs.csproj",
                "tests/Fallout.SourceGenerators.Specs/Fallout.SourceGenerators.Specs.csproj",
                "tests/Fallout.Tooling.Specs/Fallout.Tooling.Specs.csproj",
                "tests/Fallout.Utilities.Specs/Fallout.Utilities.Specs.csproj",
                "tests/Nuke.Common.Shim.Specs/Nuke.Common.Shim.Specs.csproj",
                "tests/Nuke.Components.Shim.Specs/Nuke.Components.Shim.Specs.csproj"
              ],
              "dependency_bot_commit_share": 0.01
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "build/_build.csproj, src/Fallout.Build.Shared/Fallout.Build.Shared.csproj, src/Fallout.Build/Fallout.Build.csproj (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "build/_build.csproj, src/Fallout.Build.Shared/Fallout.Build.Shared.csproj, src/Fallout.Build/Fallout.Build.csproj"
                    }
                  }
                ],
                "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": "C# (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C#"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "47 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 47,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "1 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 1,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "primary_language": "C#",
              "largest_source_bytes": 2377944,
              "source_files_sampled": 865,
              "oversized_source_files": 20
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "C# (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C#"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "20/865 source files over 60KB",
                "points": 53.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 865,
                      "oversized": 20
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch nuget package 'Fallout.GlobalTools' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T13:22:14.798677Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/Fallout-build/Fallout.svg",
  "full_name": "Fallout-build/Fallout",
  "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 v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistiken.