Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-26 13:22 UTC

Fallout-build / Fallout

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

C#Licencia propia★ 100 estrellas⑂ 13 forksdesde may 2026Ver en GitHub ↗

Fallout-build/Fallout tiene un índice de salud de 63 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es AI Readiness (82/100) y la más baja, Sustainability & Governance (46/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

63
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

63
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

Fallout.buildOrganización
3 seguidores8 repositorios públicosdesde may 2026

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

74Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
9/36Cadencia de commits — 13/52 semanas con commits
18/18Volumen de commits — 336 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year336
human_commit_share0,99
days_since_last_push0
active_weeks_last_year13
Cómo se puntúa
27/27Publica versiones — 65 versiones publicadas
36/36Recencia de las versiones — última versión hace 0 días
27/27Cadencia de publicación — una versión cada ~6,7 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count65
latest_release_tagv10.4.0-rc.4
releases_from_tagsno
days_since_latest_release0
mean_days_between_releases6,7

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

64Moderado · 18% del índice global
Cómo se puntúa
32.4/60Estrellas — 100 estrellas
9/25Forks — 13 forks
3.3/15Observadores — 5 observadores
Datos de entrada utilizados
forks13
stars100
watchers5
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
16.9/22.5Licencia — archivo de licencia presente, no es una licencia reconocida
18/18Guía CONTRIBUTING
13.5/13.5Código de conducta
0/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_templateno
has_code_of_conduct
has_pull_request_template

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

46En riesgo · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
3.8/22.5Distribución de commits — el principal contribuyente firma el 83% de los commits
13.5/13.5Amplitud de contribuyentes — 99 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 24 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled99
top_contributor_share0,831
Cómo se puntúa
19.8/46.8Resolución de issues — 42% de issues cerradas
32.7/38.3Aceptación de PR — 225/263 PR decididos fusionados
10.5/15OpenSSF Scorecard: Code-Review — Found 11/14 approved changesets -- score normalized to 7
Datos de entrada utilizados
merged_prs225
open_issues154
closed_issues113
issue_closed_ratio0,423
closed_unmerged_prs38
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
4.3/25Alcance del propietario — 3 seguidores de Fallout-build
7.3/25Trayectoria — 8 repos públicos, cuenta de ~0 años
Datos de entrada utilizados
followers3
owner_typeOrganization
is_verified
owner_loginFallout-build
public_repos8
account_age_days59

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

80Bueno · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 5 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
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
Datos de entrada utilizados
has_ci
has_tests
has_editorconfig
has_linter_configno
has_precommit_configno

Documentación

90Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://fallout.build/
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepagehttps://fallout.build/
has_readme
has_docs_dir
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

54Moderado · 16% del índice global
Cómo se puntúa
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.5Licencia — 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
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate5,4
Cómo se puntúa
8.9/35Dependencias directas libres de avisos conocidos — 3 afectados: 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/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
33.3/40Sin avisos pendientes — 1 paquete(s) con avisos sin atender más allá de 90 días; el más antiguo publicado hace 438 días
Datos de entrada utilizados
sourceosv
advisories9
affected_packages3
assessed_packages311
unassessed_packages8
affected_by_severityhigh 3
direct_affected_packages3
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos. Los pesos restantes se han renormalizado. Se cotejaron 311 dependencias resueltas con OSV. 8 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido o fuera de la lista de paquetes informada. Este repositorio no publica ningún paquete que el índice resuelva, por lo que se evaluó en su lugar el grafo de dependencias del repositorio. Ese grafo mezcla fijaciones de desarrollo y prueba con las dependencias distribuidas, de modo que solo se puntúan las dependencias declaradas en tiempo de ejecución; los hallazgos transitivos se informan como contexto y quedan excluidos de la puntuación. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

82Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — AGENTS.md, CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
39.3/40Historial de commits legible — 73 de 99 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,737
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes12.008
Cómo se puntúa
12.6/18Arranque con un solo comando — build/_build.csproj, src/Fallout.Build.Shared/Fallout.Build.Shared.csproj, src/Fallout.Build/Fallout.Build.csproj (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — C# (tipado estático)
10/10Entorno reproducible — Dockerfile
10/10Práctica demostrada con agentes — 47 de los últimos 100 commits con autoría o crédito de agente
8/8Mantenimiento automatizado — 1 de los últimos 100 commits son actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfile
typed_language
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
Cómo se puntúa
45/45Código verificable por tipos — C# (tipado estático)
53.7/55Tamaños de archivo manejables — 20/865 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageC#
largest_source_bytes2.377.944
source_files_sampled865
oversized_source_files20

Datos clave

100estrellas de GitHub
99contribuidores
336commits en los últimos 12 meses
0días desde el último push
65versiones publicadas
1factor bus
154issues abiertas
NuGetecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

Historial de estrellas y forks 0 ★ / 13 ⇿
0Estrellas
13Forks
2Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

03581013151322026-062026-062026-07
Mayor 0Menor 0Parche 0
OpenSSF Scorecard 5.4 / 10
5.4agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).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
Dependencias directas 47
RegistroPaqueteRestricción de versiónManifiesto
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
Todas las dependencias 319

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 52 paquetes directos y 267 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

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

Este repositorio no publica ningún paquete que el índice resuelva, así que se evaluó su propio grafo de dependencias — 311 paquetes, que incluyen también fijaciones de desarrollo y prueba que nunca se distribuyen: 3 tienen avisos conocidos, de los cuales 3 son directas. 8 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido, o fuera de la lista de paquetes informada.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
Microsoft.Build.Tasks.Core17.11.48directaalta117.14.8
Scriban7.2.0directaalta37.2.2
System.Security.Cryptography.Xml10.0.6directaalta510.0.10

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "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
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadas.