Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-26 13:22 UTC

Fallout-build / Fallout

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

C#Custom license★ 100 stars⑂ 13 forkssince May 2026View on GitHub ↗

Fallout-build/Fallout holds a health index of 63 out of 100, placing it in the Moderate band. It scores highest on AI Readiness (82/100) and lowest on Sustainability & Governance (46/100). It was last updated today. A single contributor accounts for most of its recent work.

63
overall / 100
Moderate

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

63
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

Fallout.buildOrganization
3 followers8 public repossince May 2026

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

74Good · 22% of overall
How it's scored
36/36Push recency — last push 0 days ago
9/36Commit cadence — 13/52 weeks with commits
18/18Commit volume — 336 commits in the last year
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Inputs used
commits_last_year336
human_commit_share0.99
days_since_last_push0
active_weeks_last_year13
How it's scored
27/27Ships releases — 65 releases published
36/36Release recency — latest release 0 days ago
27/27Release cadence — a release every ~6.7 days
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Inputs used
releases_count65
latest_release_tagv10.4.0-rc.4
releases_from_tagsno
days_since_latest_release0
mean_days_between_releases6.7

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

64Moderate · 18% of overall
How it's scored
32.4/60Stars — 100 stars
9/25Forks — 13 forks
3.3/15Watchers — 5 watchers
Inputs used
forks13
stars100
watchers5
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

Community health

86Excellent
How it's scored
22.5/22.5README
16.9/22.5License — license file present, not a recognized license
18/18CONTRIBUTING guide
13.5/13.5Code of conduct
0/7.2Issue template
6.3/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingyes
has_issue_templateno
has_code_of_conductyes
has_pull_request_templateyes

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

46At risk · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
3.8/22.5Commit distribution — top contributor authored 83% of commits
13.5/13.5Contributor breadth — 99 contributors
10/10OpenSSF Scorecard: Contributors — project has 24 contributing companies or organizations
Inputs used
bus_factor1
contributors_sampled99
top_contributor_share0.831
How it's scored
19.8/46.8Issue resolution — 42% of issues closed
32.7/38.3PR acceptance — 225/263 decided PRs merged
10.5/15OpenSSF Scorecard: Code-Review — Found 11/14 approved changesets -- score normalized to 7
Inputs used
merged_prs225
open_issues154
closed_issues113
issue_closed_ratio0.423
closed_unmerged_prs38
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
4.3/25Owner reach — 3 followers of Fallout-build
7.3/25Track record — 8 public repos, account ~0 yr old
Inputs used
followers3
owner_typeOrganization
is_verified
owner_loginFallout-build
public_repos8
account_age_days59

Engineering Quality

Are baseline engineering and documentation practices in place?

80Good · 20% of overall
How it's scored
24/24CI workflows — 5 workflow(s)
24/24Tests present
0/16Linter config
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
Inputs used
has_ciyes
has_testsyes
has_editorconfigyes
has_linter_configno
has_precommit_configno

Documentation

90Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://fallout.build/
10/10Repository description
0/10Topics
10/10Wiki
Inputs used
topics
has_wikiyes
homepagehttps://fallout.build/
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

54Moderate · 16% of overall
How it's scored
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.5License — 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
Inputs used
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate5.4
How it's scored
8.9/35Direct dependencies free of known advisories — 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)
0/25Indirect dependencies free of known advisories — transitive set not separable from development and test dependencies in this scope
33.3/40No advisories left outstanding — 1 advisory-carrying package(s) unaddressed past 90 days; oldest published 438 days ago
Inputs used
sourceosv
advisories9
affected_packages3
assessed_packages311
unassessed_packages8
affected_by_severityhigh 3
direct_affected_packages3
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.

AI Readiness

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.

82Good · 0% of overall
How it's scored
45/45Agent instructions — AGENTS.md, CLAUDE.md
0/15Machine-readable docs (llms.txt)
39.3/40Legible commit history — 73 of 99 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.737
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes12,008
How it's scored
12.6/18One-command bootstrap — build/_build.csproj, src/Fallout.Build.Shared/Fallout.Build.Shared.csproj, src/Fallout.Build/Fallout.Build.csproj (toolchain convention, no task runner)
22/22Automated tests
0/11Lint / format config
11/11Static type checking — C# (statically typed)
10/10Reproducible environment — Dockerfile
10/10Demonstrated agent practice — 47 of the last 100 commits agent-authored or agent-credited
8/8Automated maintenance — 1 of the last 100 commits are automated dependency updates
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfiles
has_dockerfileyes
typed_languageyes
bootstrap_files
has_devcontainerno
has_linter_configno
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
How it's scored
45/45Type-checkable code — C# (statically typed)
53.7/55Manageable file sizes — 20/865 source files over 60KB
Inputs used
primary_languageC#
largest_source_bytes2,377,944
source_files_sampled865
oversized_source_files20

Key facts

100GitHub stars
99contributors
336commits, last 12 months
0days since last push
65releases
1bus factor
154open issues
NuGetpackage ecosystems

Data collection warnings

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

More detail

Star and fork history 0 ★ / 13 ⇿
0Stars
13Forks
2Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

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

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).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
Direct dependencies 47
RegistryPackageVersion constraintManifest
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
All dependencies 319

Full resolved dependency set from the GitHub dependency graph: 52 direct and 267 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

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

This repository publishes no package the index resolves, so its own dependency graph was assessed — 311 packages, which also include development and test pins that never ship: 3 carry known advisories, of which 3 are direct. 8 could not be assessed — no resolved version, an unsupported ecosystem, or beyond the reported package list.

PackageVersionRelationSeverityAdvisoriesFixed in
Microsoft.Build.Tasks.Core17.11.48directhigh117.14.8
Scriban7.2.0directhigh37.2.2
System.Security.Cryptography.Xml10.0.6directhigh510.0.10

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "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
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statistics.