Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-26 11:08 UTC

SuperJMN / RetroSharp

Language, compiler and other build tools for 8-bit systems. Inspired by C#.

C#Keine Lizenz erkannt★ 8 Sterne⑂ 0 Forksseit Juli 2022Auf GitHub ansehen ↗

SuperJMN/RetroSharp erreicht einen Gesundheitsindex von 49 von 100 und liegt damit im Bereich Gefährdet. Am stärksten schneidet es bei AI Readiness (71/100) ab, am schwächsten bei Security (38/100). Zuletzt heute aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

49
gesamt / 100
Gefährdet

Software-Gesundheitsindex

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

49
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

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

Eigentümerschaft

José Manuel NietoPersönliches Konto
219 Follower160 öffentliche Reposseit Dez. 2012Freelance

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

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
NuGetRetroSharp.Tool0.0.363-254vor 0 Tagencompiler8bitgameboynesretrocsharplanguage

Metriken nach Kategorie

Vitalität

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

44Gefährdet · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
7.6/36Commit-Rhythmus — 11/52 Wochen mit Commits
18/18Commit-Volumen — 374 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year374
human_commit_share1
days_since_last_push0
active_weeks_last_year11
Wie die Bewertung erfolgt
0/27Liefert Releases aus — keine Releases veröffentlicht
0/36Release-Aktualität — keine Releases
0/27Release-Rhythmus — keine Releases
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

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

38Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
13.7/60Stars — 8 Stars
0/25Forks — 0 Forks
0/15Watcher — 1 Watcher
Verwendete Eingangsdaten
forks0
stars8
watchers1
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
0/22.5Lizenz — keine Lizenzdatei erkannt
18/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
6.3/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licensenein
has_contributingja
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templateja
Wie die Bewertung erfolgt
45.7/80Downloads gesamt — 25.105 Downloads insgesamt über nuget
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packagesRetroSharp.Tool
dependents
ecosystemsnuget
total_downloads25.105
monthly_downloads
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

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

62Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
0/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 100 % der Commits
1.4/13.5Breite der Beitragenden — 1 Beitragende
6/10OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6
Verwendete Eingangsdaten
bus_factor1
contributors_sampled1
top_contributor_share1
Wie die Bewertung erfolgt
45.9/46.8Issue-Lösungsquote — 98 % der Issues geschlossen
38.1/38.3PR-Annahme — 215/216 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs215
open_issues4
closed_issues221
issue_closed_ratio0,982
closed_unmerged_prs1
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
16.8/25Reichweite des Inhabers — 219 Follower von SuperJMN
25/25Kontohistorie — 160 öffentliche Repos, Kontoalter ca. 13 Jahre
Verwendete Eingangsdaten
followers219
owner_typeUser
is_verified
owner_loginSuperJMN
public_repos160
account_age_days4.962
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf nuget
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 0 Tagen
20/20Versionshistorie — 254 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesRetroSharp.Tool
ecosystemsnuget
any_deprecatednein
min_days_since_publish0

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

60Mittel · 20 % des Gesamtindex
Wie die Bewertung erfolgt
0/24CI-Workflows
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cinein
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein

Dokumentation

85Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
10/10Repository-Beschreibung
10/10Topics — 8 Topics
10/10Wiki
Verwendete Eingangsdaten
topicscompiler, language, z80, 8bit, csharp, retro, gameboy, nes
has_wikija
homepage
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

38Gefährdet · 16 % des Gesamtindex

Sicherheitslage

38Gefährdet
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 30 out of 30 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
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
1.5/2.5Contributors — project has 2 contributing companies or organizations -- score normalized to 6
0/10Dangerous-Workflow — keine Daten
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
0/2.5Lizenz — license file not detected
7.5/7.5Maintained — 30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — keine Daten
0/5Pinned-Dependencies — keine Daten
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — keine Daten
0/7.5Token-Permissions — keine Daten
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated13
scorecard_versionv5.5.0
checks_inconclusive5
scorecard_aggregate3,8
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

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

71Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — AGENTS.md
15/15Maschinenlesbare Doku (llms.txt) — llms.txt vorhanden
40/40Lesbare Commit-Historie — 98 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtja
legible_history_share0,98
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes10.764
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — src/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj, src/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj, src/RetroSharp.Cli/RetroSharp.Cli.csproj (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — C# (statisch typisiert)
0/10Reproduzierbare Umgebung
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — keine Daten
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfiles
has_dockerfilenein
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0
toolchain_manifestssrc/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj, src/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj, src/RetroSharp.Cli/RetroSharp.Cli.csproj, src/RetroSharp.Core.Tests/RetroSharp.Core.Tests.csproj, src/RetroSharp.Core/RetroSharp.Core.csproj, src/RetroSharp.FunctionalAcceptance.Tests/RetroSharp.FunctionalAcceptance.Tests.csproj, src/RetroSharp.FunctionalAcceptance/RetroSharp.FunctionalAcceptance.csproj, src/RetroSharp.GameBoy.Tests/RetroSharp.GameBoy.Tests.csproj, src/RetroSharp.GameBoy/RetroSharp.GameBoy.csproj, src/RetroSharp.NES.Tests/RetroSharp.NES.Tests.csproj, src/RetroSharp.NES/RetroSharp.NES.csproj, src/RetroSharp.Parser.Model/RetroSharp.Parser.Model.csproj, src/RetroSharp.Parser.Tests/RetroSharp.Parser.Tests.csproj, src/RetroSharp.Parser/RetroSharp.Parser.csproj, src/RetroSharp.Sdk.Frontend/RetroSharp.Sdk.Frontend.csproj, src/RetroSharp.Sdk.Plugins.Platformer2D/RetroSharp.Sdk.Plugins.Platformer2D.csproj, src/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj, src/RetroSharp.SemanticAnalysis/RetroSharp.SemanticAnalysis.csproj
dependency_bot_commit_share0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Pinned-Dependencies. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — C# (statisch typisiert)
53.6/55Handhabbare Dateigrößen — 14/539 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageC#
largest_source_bytes255.622
source_files_sampled539
oversized_source_files14
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — samples
Verwendete Eingangsdaten
example_dirssamples
has_mcp_signalnein
api_schema_files

Eckdaten

8GitHub-Sterne
1Mitwirkende
374Commits, letzte 12 Monate
0Tage seit letztem Push
0Releases
1Bus-Faktor
4offene Issues
Paket-Ökosysteme

Warnungen zur Datenerhebung

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

Weitere Details

OpenSSF Scorecard 3.8 / 10
3.8Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-26 11:08 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
6Contributorsproject has 2 contributing companies or organizations -- score normalized to 6
k. A.Dangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
0Licenselicense file not detected
10Maintained30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10
k. A.Packagingpackaging workflow not detected
k. A.Pinned-Dependenciesno dependencies found
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
k. A.Token-PermissionsNo tokens found
10Vulnerabilities0 existing vulnerabilities detected
Direkte Abhängigkeiten 41
RegistryPaketVersionsvorgabeManifest
NuGetMicrosoft.NET.Test.Sdksrc/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj
NuGetxunitsrc/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj
NuGetxunit.runner.visualstudiosrc/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj
NuGetcoverlet.collectorsrc/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj
NuGetMicrosoft.NET.Test.Sdksrc/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj
NuGetxunitsrc/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj
NuGetxunit.runner.visualstudiosrc/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj
NuGetcoverlet.collectorsrc/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj
NuGetMicrosoft.NET.Test.Sdksrc/RetroSharp.Core.Tests/RetroSharp.Core.Tests.csproj
NuGetxunitsrc/RetroSharp.Core.Tests/RetroSharp.Core.Tests.csproj
NuGetxunit.runner.visualstudiosrc/RetroSharp.Core.Tests/RetroSharp.Core.Tests.csproj
NuGetcoverlet.collectorsrc/RetroSharp.Core.Tests/RetroSharp.Core.Tests.csproj
NuGetMicrosoft.NET.Test.Sdksrc/RetroSharp.FunctionalAcceptance.Tests/RetroSharp.FunctionalAcceptance.Tests.csproj
NuGetxunitsrc/RetroSharp.FunctionalAcceptance.Tests/RetroSharp.FunctionalAcceptance.Tests.csproj
NuGetxunit.runner.visualstudiosrc/RetroSharp.FunctionalAcceptance.Tests/RetroSharp.FunctionalAcceptance.Tests.csproj
NuGetcoverlet.collectorsrc/RetroSharp.FunctionalAcceptance.Tests/RetroSharp.FunctionalAcceptance.Tests.csproj
NuGetMicrosoft.NET.Test.Sdksrc/RetroSharp.GameBoy.Tests/RetroSharp.GameBoy.Tests.csproj
NuGetxunitsrc/RetroSharp.GameBoy.Tests/RetroSharp.GameBoy.Tests.csproj
NuGetxunit.runner.visualstudiosrc/RetroSharp.GameBoy.Tests/RetroSharp.GameBoy.Tests.csproj
NuGetcoverlet.collectorsrc/RetroSharp.GameBoy.Tests/RetroSharp.GameBoy.Tests.csproj
NuGetMicrosoft.NET.Test.Sdksrc/RetroSharp.NES.Tests/RetroSharp.NES.Tests.csproj
NuGetxunitsrc/RetroSharp.NES.Tests/RetroSharp.NES.Tests.csproj
NuGetxunit.runner.visualstudiosrc/RetroSharp.NES.Tests/RetroSharp.NES.Tests.csproj
NuGetcoverlet.collectorsrc/RetroSharp.NES.Tests/RetroSharp.NES.Tests.csproj
NuGetZafiro.Coresrc/RetroSharp.Parser.Model/RetroSharp.Parser.Model.csproj
NuGetMicrosoft.NET.Test.Sdksrc/RetroSharp.Parser.Tests/RetroSharp.Parser.Tests.csproj
NuGetxunitsrc/RetroSharp.Parser.Tests/RetroSharp.Parser.Tests.csproj
NuGetCSharpFunctionalExtensions.FluentAssertionssrc/RetroSharp.Parser.Tests/RetroSharp.Parser.Tests.csproj
NuGetxunit.runner.visualstudiosrc/RetroSharp.Parser.Tests/RetroSharp.Parser.Tests.csproj
NuGetcoverlet.collectorsrc/RetroSharp.Parser.Tests/RetroSharp.Parser.Tests.csproj
NuGetAntlr4.Runtime.Standardsrc/RetroSharp.Parser/RetroSharp.Parser.csproj
NuGetAntlr4BuildTaskssrc/RetroSharp.Parser/RetroSharp.Parser.csproj
NuGetCSharpFunctionalExtensionssrc/RetroSharp.Parser/RetroSharp.Parser.csproj
NuGetZafiro.Coresrc/RetroSharp.Parser/RetroSharp.Parser.csproj
NuGetCSharpFunctionalExtensions.FluentAssertionssrc/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj
NuGetMicrosoft.NET.Test.Sdksrc/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj
NuGetxunitsrc/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj
NuGetVerify.Xunitsrc/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj
NuGetxunit.runner.visualstudiosrc/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj
NuGetcoverlet.collectorsrc/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj
NuGetZafiro.Coresrc/RetroSharp.SemanticAnalysis/RetroSharp.SemanticAnalysis.csproj
Alle Abhängigkeiten 10

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

RegistryPaketVersionBeziehung
NuGetAntlr4.Runtime.Standarddirekt
NuGetAntlr4BuildTasksdirekt
NuGetcoverlet.collectordirekt
NuGetCSharpFunctionalExtensionsdirekt
NuGetCSharpFunctionalExtensions.FluentAssertionsdirekt
NuGetMicrosoft.NET.Test.Sdkdirekt
NuGetVerify.Xunitdirekt
NuGetxunitdirekt
NuGetxunit.runner.visualstudiodirekt
NuGetZafiro.Coredirekt
Abhängigkeits-Advisories nicht bewertet

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

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "compiler",
        "language",
        "z80",
        "8bit",
        "csharp",
        "retro",
        "gameboy",
        "nes"
      ],
      "is_fork": false,
      "size_kb": 6053,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "C": 711,
        "C#": 5022586,
        "Rust": 9102,
        "ANTLR": 8531,
        "Python": 336898,
        "RenderScript": 815
      },
      "pushed_at": "2026-07-26T10:57:20Z",
      "created_at": "2022-07-01T13:32:03Z",
      "owner_type": "User",
      "updated_at": "2026-07-26T10:57:22Z",
      "description": "Language, compiler and other build tools for 8-bit systems. Inspired by C#.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "master",
      "license_spdx_raw": null,
      "primary_language": "C#",
      "significant_languages": [
        "C#"
      ]
    },
    "owner": {
      "blog": null,
      "name": "José Manuel Nieto",
      "type": "User",
      "login": "SuperJMN",
      "company": "Freelance",
      "location": "Spain",
      "followers": 219,
      "avatar_url": "https://avatars.githubusercontent.com/u/3109851?v=4",
      "created_at": "2012-12-23T13:43:11Z",
      "is_verified": null,
      "public_repos": 160,
      "account_age_days": 4962
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [],
      "recent_commits": [
        {
          "oid": "fc60725384f291b2dc79c2f1b63eda1cd18fe01d",
          "body": "The packed diagonal camera held the visible camera mid-tile (no pending edge,\nno publish) then jumped at tile boundaries, freezing SCX/SCY for several frames\nper tile. Replace the serialized one-axis-per-frame preparation scheduler with:\n\n- a mid-tile column-edge prefetch (fine-X >= 2) gated on real\n[…]\n32 KiB) instead of banked because removing the scheduler\nshrank the diagonal-capable program below the banking threshold; audio order\nand gameplay cadence are identical. Docs and tracked ROMs updated.",
          "is_bot": false,
          "headline": "Fix Game Boy diagonal camera scroll stutter with column prefetch (#442)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-26T10:57:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7b70ad9b8e483da23f941015980cf9dd2008df2c",
          "body": "…xact gates (#441)\n\nStates the in-game experience goal in the AGENTS.md Acceptance Policy, reconciles docs that still mandated byte-exact or cycle-exact output, and removes five missed hardcoded ROM SHA gates (uppercase Fingerprint literals). Full solution green.",
          "is_bot": false,
          "headline": "docs and tests: finish fluidity acceptance sync, remove missed byte-e…",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-20T10:45:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b707c756cf9086a7c1bee0735c50cb139b21ab70",
          "body": "…ld fall (#440)\n\nStaged fall recovery returns the camera to the authored spawn one axis at a time instead of resetting at a scrolled position. Removes fragile one-way-platform hack tests (follow-up #439) and a missed byte-exact runner.nes SHA gate. Tracked runner.nes regenerated. Full solution green. Closes #409.",
          "is_bot": false,
          "headline": "RPH-7: return the runner to a safe authored spawn after an out-of-wor…",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-20T10:10:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "058ab0be38288da4bc672c9211bd54c0b37aa453",
          "body": "…(#438)\n\nBehavioral in-process simulation on freshly compiled ROMs is the acceptance gate. Byte-exact ROM identity, SHA, exact bytes/cycles, and multi-emulator parity become diagnostics. Physical-VBlank write timing is a non-blocking diagnostic. Full solution green.",
          "is_bot": false,
          "headline": "Reorient runner acceptance to gameplay fluidity over byte-exact ROMs …",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-20T09:00:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83526c28d11f5c3e6f88cee38910d1f4f1514258",
          "body": null,
          "is_bot": false,
          "headline": "NFS-2.1: make stale-to-fresh publication atomic (#423)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-19T13:37:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd94ce202452b53ed7ec1b96579a067741f9bc05",
          "body": null,
          "is_bot": false,
          "headline": "NFS-1.3: harden the NES physical runner gate (#422)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-19T13:04:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "21c2c471b23ac2c7b913189bffc5c5bbb8afc4e8",
          "body": null,
          "is_bot": false,
          "headline": "NFS-1.2: unify retained OAM emission and cost (#421)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-19T12:17:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a376525faa7b67dbd33caffa5c49d35030edf4de",
          "body": null,
          "is_bot": false,
          "headline": "NFS-1.1: correct NES validation timing (#420)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-19T11:53:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f60e86309519a52694e97872ce6ed5a9f5caa2c5",
          "body": null,
          "is_bot": false,
          "headline": "NFS-0: define NES frame scheduling roadmap (#412)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-19T11:14:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d8eb37f19b59e517deddbc4a604b2a37d076693",
          "body": "* Add bounded functional observation modes\n\n* Add physical windows to CPU work reports\n\n* Centralize target physical frame planning\n\n* Bound architecture work and document frame plans\n\n* Centralize NES physical frame-boundary execution\n\n* Route NES video-safe staging through the scheduler\n\n* Document the NES scheduler ownership boundary\n\n* Close NES scheduler ownership gaps",
          "is_bot": false,
          "headline": "Deepen the NES physical frame scheduler (#411)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-18T19:39:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f612a7e4ea02d8c4a2e3861ee6789baed7dcd23f",
          "body": null,
          "is_bot": false,
          "headline": "RPH-5: restore tracked GB runner B-speed cadence (#407)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-18T01:48:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "599d2aff1fe065f890664e0477fc45eaa982fb6c",
          "body": null,
          "is_bot": false,
          "headline": "GCP-3.2: prove joint GB/NES cadence acceptance (#405)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-17T21:16:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "117a48ba207935e5068d6f3cbf41b73b3db9e3ce",
          "body": null,
          "is_bot": false,
          "headline": "GCP-3.1: report initial CPU work diagnostics",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-17T20:33:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ccfb12b552f363b42f3dd7264d0c4a7855933a4",
          "body": null,
          "is_bot": false,
          "headline": "GCP-2.3: bound NES struct-array addressing (#401)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-17T18:49:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7065ff6a7b4b11b9e2f214cf700403ce1d903a3b",
          "body": null,
          "is_bot": false,
          "headline": "GCP-2.1: record retained OAM phase contract (#400)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-17T18:36:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5730cc56c2226d60b6250f22239aa8514e22ba98",
          "body": null,
          "is_bot": false,
          "headline": "AF-5.10: index wide spawn activation by camera (#398)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-17T18:23:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2baa440f66616cba6d10c8c8158fb5e64e894687",
          "body": null,
          "is_bot": false,
          "headline": "GCP-2.2: bound Game Boy struct-array addressing (#397)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-17T17:47:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99c4b2c209564bb8fc6f19459839b0c91e79dc7c",
          "body": "* GCP-1.1: emit constant-cost ROM spawn record lookups\n\n* Keep generated spawn tables internal to frontend preparation\n\n* Clarify pre- and post-GCP-1.1 calibration snapshots\n\n* GCP-1.1: address spawn ROM table review",
          "is_bot": false,
          "headline": "GCP-1.1: emit constant-cost ROM spawn record lookups (#396)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-17T17:26:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "efd715348fb6eb599ec782d14c8c44c84b70038a",
          "body": null,
          "is_bot": false,
          "headline": "GCP-0.2: accept target CPU-work contract (#393)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-17T14:27:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f5d0f992a3aebbdcab3206e1ce7cae50d0280cb",
          "body": null,
          "is_bot": false,
          "headline": "GCP-0.1: freeze generated-code performance baseline (#392)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-17T12:37:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe7513a7b9ea8906faa0944ab32f56555db12b41",
          "body": null,
          "is_bot": false,
          "headline": "docs: link generated code performance issue graph (#391)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-17T11:31:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a705a7545dc2896f0b3d4da05472b7ade40550cb",
          "body": null,
          "is_bot": false,
          "headline": "docs: add generated code performance roadmap (#386)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-17T11:23:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0669147ab7e3600dbb2763e67734b40b2d6bb880",
          "body": null,
          "is_bot": false,
          "headline": "CSL-5: add mixed-load audio acceptance canary (#385)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-17T10:22:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22b861bd40d5dc9dc12b9ad42a78104c99a181bb",
          "body": "Closes #342.",
          "is_bot": false,
          "headline": "CSL-7: add focused cross-target platformer mechanics rung (#384)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-16T23:47:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba19dc5b18f4565e3dab39689b0f65a05d9def35",
          "body": null,
          "is_bot": false,
          "headline": "Remove retired Z80 compiler path (#383)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-16T23:35:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1fba42e1aaa1dd8ec7df8ce2a0eeda96b07a1428",
          "body": "* CSL-6: gate actor and projectile sprite integrity\n\n* CSL-6: close acceptance review findings\n\n* CSL-6: preserve frontend preparation ownership",
          "is_bot": false,
          "headline": "CSL-6: gate actor and projectile sprite integrity (#382)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-16T21:49:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99c048a6a640851f8e48da0c25b38049f314eef6",
          "body": null,
          "is_bot": false,
          "headline": "docs: finalize AI-navigability epic closeout (#381)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-16T18:24:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a55c5305ed3432c6b796b1764480bdf09822c6dd",
          "body": "* AIN-12: make architecture guardrails rename-safe (#378)\n\n* AIN-12: strengthen physical and test ownership guards\n\n* AIN-12: keep physical guard fixtures path-neutral",
          "is_bot": false,
          "headline": "AIN-12: Make architecture guardrails rename-safe (#378) (#380)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-16T17:43:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "180277a891f3e1e20c35259d70eb559e568ef75f",
          "body": null,
          "is_bot": false,
          "headline": "AIN-11: finish SDK lowering test locality (#377) (#379)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-16T17:00:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5ee89d7fac56c8d9f0cabf8cbddeda7c3fa9a66",
          "body": "* AIN-9: freeze AI-navigable architecture acceptance\n\n* AIN-9: close architecture acceptance review gaps",
          "is_bot": false,
          "headline": "AIN-9: freeze AI-navigable architecture acceptance (#376)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-16T15:17:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b1494d9ea7b4dc9ac2c798da26176ef5925b3e5",
          "body": "* AIN-10: sweep post-refactor architecture debt\n\n* AIN-10: strengthen architecture leak guards",
          "is_bot": false,
          "headline": "AIN-10: sweep post-refactor architecture debt (#375)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-16T14:27:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "11853c72073075211e4f9c2125660ec904783cc1",
          "body": null,
          "is_bot": false,
          "headline": "AIN-8: deepen NES SDK lowering (#374)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-16T13:33:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c923e3d38c33a806ed43f6b26ff47d704c44e27",
          "body": "* AIN-7: deepen Game Boy SDK lowering\n\n* AIN-7: complete Game Boy input ownership\n\n* AIN-7: focus Game Boy input lowering tests",
          "is_bot": false,
          "headline": "AIN-7: deepen Game Boy SDK lowering (#372)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-16T11:49:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "164c085e84a9c3ff87acd26a110bed03d04b6068",
          "body": null,
          "is_bot": false,
          "headline": "AIN-6: partition Actor Framework generation by domain (#371)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-16T10:31:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f2090d01026c9072c0f231422363722ac3f40ef",
          "body": null,
          "is_bot": false,
          "headline": "AIN-5: build Actor Framework lowering plan (#361) (#370)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-15T23:27:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "577150153a0d86b17bd6a1104940f5ce8a7bd012",
          "body": null,
          "is_bot": false,
          "headline": "AIN-3: make NES probes consume the runtime ABI (#369)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-15T22:36:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3cec52c69005a93df9054ca65ac52f50aa57d5d8",
          "body": "* AIN-4: centralize cross-target frontend preparation\n\n* AIN-4: address frontend review findings",
          "is_bot": false,
          "headline": "AIN-4: centralize cross-target frontend preparation (#368)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-15T20:52:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be73c8872e6921bb4cccc9b96fe44175e3cef8a2",
          "body": null,
          "is_bot": false,
          "headline": "AIN-2: centralize NES runtime memory ABI (#358) (#367)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-15T15:43:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7978e47a99c1ef57fef73465186708f2679d0b8",
          "body": null,
          "is_bot": false,
          "headline": "AIN-1: centralize Game Boy runtime memory ownership (#357) (#366)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-15T14:51:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7260e70b312384ea8864466119a282f23fd2f2d0",
          "body": null,
          "is_bot": false,
          "headline": "runner: adopt SMB3 4.4 jump physics (#355)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-15T13:38:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e8b3ab3abaf52c3a13b60f721ab5cb9c828053e6",
          "body": "* RPH-GB: restore packed collision runner cadence\n\n* RPH-GB: harden collision cache publication",
          "is_bot": false,
          "headline": "RPH-GB: restore packed-collision runner cadence (#354)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-15T10:56:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "74ec8277b1e094f7761167744108a67f979ed95a",
          "body": null,
          "is_bot": false,
          "headline": "feat(runner): add one-way platforms (#352)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-14T23:08:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f38fd3a03caafc14e2b93d3aa3cd9c04e18b84b2",
          "body": "* test(samples): add nonzero-Y tiled hscroll repro\n\n* fix(nes): align nonzero-Y horizontal columns (#349)\n\n* fix(nes): keep packed column commits inside VBlank (#349)\n\n* fix(nes): preserve packed palettes across nametable seams",
          "is_bot": false,
          "headline": "fix(nes): stabilize nonzero-Y packed horizontal scrolling (#351)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-14T20:41:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dbd9e58b232242b751bdb9b73ac44f1febbeabb7",
          "body": null,
          "is_bot": false,
          "headline": "fix(nes): keep fixed camera windows inside safe area (#350)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-14T18:22:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c59b88be0b60c7dc4df75bd79ab4c0197daa9dc2",
          "body": "…348)",
          "is_bot": false,
          "headline": "feat(samples): add collision-free Tiled horizontal scroll canaries (#…",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-14T13:41:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53527a466da5df4c26035e7ebe3a033c992a4ed8",
          "body": "* RPH-3.5: restore packed Tiled production cadence (#339)\n\n* RPH-3.5: harden packed acceptance gates (#339)",
          "is_bot": false,
          "headline": "RPH-3.5: restore packed Tiled production cadence (#347)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-14T10:34:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1242deed176d5419699dbe4ba6ff4787ff63a78a",
          "body": null,
          "is_bot": false,
          "headline": "CSL-3: validate static and source-camera samples (#346)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-13T23:10:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83622cf8ba722fb5c82494585909c7de2c059c65",
          "body": "Extract the CLI entry point into RetroSharp.Cli.CliRunner.Run(args, stdout,\nstderr) so the acceptance tests drive it in-process instead of spawning a fresh\n`dotnet` per invocation (~0.4s cold-start each). Program.cs now delegates to it;\nbehaviour and output are unchanged.\n\nRemove the three per-sampl\n[…]\nest-shape assertions move to compilation-free tests,\nand the \"Wrote ... ROM:\" banner check folds into the every-sample loop.\n\nCli.Tests: 33s -> 6s; full suite: 94s -> 70s. No behaviour or ROM changes.",
          "is_bot": false,
          "headline": "test(cli): invoke CLI in-process and drop redundant sample builds (#345)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-13T22:28:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c8c384d6b988df60c521073b3265aa2f6ea7dd73",
          "body": null,
          "is_bot": false,
          "headline": "CSL-1: adopt neutral sample identities (#344)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-13T21:26:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3d48bde876895af40c5383c059aaf82a6ae72ed",
          "body": null,
          "is_bot": false,
          "headline": "CSL-2: add functional ROM acceptance contract (#343)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-13T21:20:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "86acea99b27eae93610c29ecbd6703aea70a6a6a",
          "body": null,
          "is_bot": false,
          "headline": "fix(gb): restore packed camera cadence (#332) (#334)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-13T18:52:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0223d330860b0e3a57fa76eca0c0e74ff5cc2629",
          "body": null,
          "is_bot": false,
          "headline": "RPH-3.3: keep mapper-0 packed cameras out of the NMI reset loop (#333)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-13T15:53:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "91883712cf96d7712562bc24acd4a11c89828d43",
          "body": "* RPH-3.2: keep packed NES commits inside fresh VBlank\n\n* RPH-3.2: prove transient NES frame acceptance",
          "is_bot": false,
          "headline": "RPH-3.2: prove transient NES frame acceptance (#330)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-13T14:34:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1010b6b9535c764d9be21a10d5bdec86433cbe4",
          "body": null,
          "is_bot": false,
          "headline": "RPH-3.2: restore FCEUmm four-screen streaming parity (#329)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-13T10:04:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd66849b28d059ee38b6dd87bae5bd089d658e45",
          "body": null,
          "is_bot": false,
          "headline": "RPH-3.1: initialize NES packed camera deterministically (#328)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-13T00:05:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a735c859383a7e27ae6d28cef78998e54e553420",
          "body": null,
          "is_bot": false,
          "headline": "RPH-3: restore NES packed collision cadence (#325)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-12T21:59:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68d08b3af76a1a2910c867cc5b3fa789d381ab6f",
          "body": null,
          "is_bot": false,
          "headline": "RPH-2: prevent let from narrowing word expressions (#320) (#324)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-12T19:51:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "81505947b755930dc32b09af4ea8a5457693f91d",
          "body": null,
          "is_bot": false,
          "headline": "RPH-1: restore word-wide runner landing on GB and NES (#319) (#323)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-12T19:12:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ddc4c21c3971db4cb3774ae29de833866a143e04",
          "body": null,
          "is_bot": false,
          "headline": "LW-3.5: prove joint full stage1 acceptance (#317)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-12T16:06:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60ec1a9c6d260f26164ed01227dadd36734710d3",
          "body": null,
          "is_bot": false,
          "headline": "LW-3.4: integrate staged four-screen NES streaming (#316)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-12T10:56:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c123f98629d99c65471d918ab1cfd512e38ed1cf",
          "body": "Closes #303",
          "is_bot": false,
          "headline": "LW-3.3: implement the fixed-bank NES WorldPack reader (#315)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-12T09:06:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3229edf1a4f19a78ff2604fab87858c9f7e3161e",
          "body": null,
          "is_bot": false,
          "headline": "LW-3.2: place NES WorldPacks and select final profile (#314)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-11T23:59:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ca19eeb86c05f5caf25ecad502def28f4ae67074",
          "body": null,
          "is_bot": false,
          "headline": "LW-3.1: add MMC3/TVROM fixed-runtime foundation (#313)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-11T23:05:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3535bc8e266555edce8356975a812d3e373a2e2d",
          "body": null,
          "is_bot": false,
          "headline": "LW-2.5: prove full stage1 on Game Boy (#312)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-11T19:07:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "40d2fda4a7543dee909b870694f327d7c0ff059d",
          "body": null,
          "is_bot": false,
          "headline": "docs: sync Large Worlds production status (#311)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-11T18:02:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "59f129755630da5f31f737fb951353fda15cc5ea",
          "body": null,
          "is_bot": false,
          "headline": "LW-2.4: integrate staged Game Boy camera edges (#310)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-11T17:28:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55db0ab6c8f132a479fc1dc5b761b254bb44065c",
          "body": null,
          "is_bot": false,
          "headline": "LW-2.3: implement fixed-bank Game Boy WorldPack reader (#309)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-11T12:44:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7bfca5bdc5db00eb4eda69542f6a0150a74a7a8",
          "body": "Fixes #297",
          "is_bot": false,
          "headline": "LW-2.2: place Game Boy WorldPacks in MBC1 banks (#308)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-11T09:20:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc0afbbfbe60cb8bf9d386d0f53b7e3237055879",
          "body": null,
          "is_bot": false,
          "headline": "LW-2.1: add fixed-bank MBC1 world-read foundation (#307)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-10T23:27:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3716ae2682bb44afecb7b9216d3844db84674da",
          "body": null,
          "is_bot": false,
          "headline": "docs: link published Large Worlds target waves (#306)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-10T21:16:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c51a3ab95edb055d6fb193cc028b5576dcc64c9",
          "body": null,
          "is_bot": false,
          "headline": "docs: make Large Worlds waves 2 and 3 executable (#295)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-10T21:08:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47ff91d146017c86601f5ee3429a605a91b9f370",
          "body": null,
          "is_bot": false,
          "headline": "LW-1.5: add deterministic world budget diagnostics (#294)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-10T20:17:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd3368d0ad8b6e4b0c425237db11afdab55a059c",
          "body": null,
          "is_bot": false,
          "headline": "LW-1.4: compile Tiled worlds into deterministic WorldPack chunks (#293)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-10T18:48:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7805406b5fda19ce0ce31eb839c9a979c06bdbe6",
          "body": "Closes #281",
          "is_bot": false,
          "headline": "LW-1.3: add the target-neutral WorldPack model (#292)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-10T17:23:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d040c545fa521564603d405175ece619049300a1",
          "body": "Closes #280",
          "is_bot": false,
          "headline": "LW-1.2: implement the widened collision-hit contract (#291)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-10T16:45:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03fafea88741b490eb5391d78b048cc655fcf523",
          "body": "Closes #282",
          "is_bot": false,
          "headline": "LW-1.1: implement 16-bit world dimensions and camera lowering (#290)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-10T15:46:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7e576b5694622a11386e12398bc472ae7987b8e8",
          "body": null,
          "is_bot": false,
          "headline": "LW-0.3: select NES Large Worlds cartridge profile (#289)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-10T13:00:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c65c1589979a92628b2ccb8e154b9e6f6e53d9c5",
          "body": null,
          "is_bot": false,
          "headline": "LW-0.4: define 16-bit world coordinate contract (#288)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-10T12:27:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55f0a06585df42939635eb94a42cf5a3d7e42895",
          "body": null,
          "is_bot": false,
          "headline": "LW-0.2: define WorldPack v1 format (#287)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-10T11:50:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ea74c65676f32acf3297aa3daa59ef36dae910e6",
          "body": null,
          "is_bot": false,
          "headline": "LW-0.1: freeze full stage1 acceptance baseline (#286)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-10T11:09:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "72ccccf5ac760214c5411f41331e1ccb74de92e8",
          "body": null,
          "is_bot": false,
          "headline": "docs: link Large Worlds execution issues (#285)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-09T23:02:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f867109c1e59e170fe3e097c001bc36f2e973642",
          "body": null,
          "is_bot": false,
          "headline": "docs: set up Large Worlds epic (#274)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-09T22:57:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4deced317e6277d9dee769ce16842bff2a7de5d0",
          "body": "…sons (#273)\n\nGame Boy EmitCompareWordByte loaded the left operand into A and then\nmaterialized the right operand into A as well (via EmitLoadWordByteToB),\nclobbering the left byte. Every word variable-vs-variable relational\ncompare degraded to right-vs-right, i.e. always equal: '<', '>', '<=',\n'>='\n[…]\n covering every relational operator on i16 variables, and regenerate\nthe tracked runner.gb. The NES backend already preserved the operand, so\nNES was unaffected; the runner sample itself is unchanged.",
          "is_bot": false,
          "headline": "fix(gb): preserve left operand in 16-bit variable-vs-variable compari…",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-09T22:13:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fab65e467bbfbc0808771e3f9a404651aa66f766",
          "body": "Horizontal column streaming rewrote nametable tiles but never updated the\nNES attribute table, so background tiles scrolled in with a stale palette\nslot (e.g. runner clouds rendering with the ground palette). Precompute the\nper-source-column attribute bytes from the imported Tiled palette slots usin\n[…]\nses slot 0 (unchanged).\n\nRegenerated samples/runner/bin/runner.nes; added a World.Load regression test.\nValidated in ADNES: the previously corrupt scrolled-in clouds now render\nwhite/blue as authored.",
          "is_bot": false,
          "headline": "fix(nes): refresh attributes when streaming background columns (#272)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-09T19:45:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4998e0743299f66bce8c486176caee53f9bfee1b",
          "body": "…tom overscan (#271)\n\nOn NES the runner ground was cut ~8px at the bottom: the screen-tall stage1\nworld (30 rows) draws its bottom ground row against the very bottom scanlines,\nwhich hardware and most emulators crop as overscan. Game Boy has no overscan so\nits ground was fine.\n\nWhen a world fits the\n[…]\n regenerated tracked runner.nes\n\nValidated on ADNES: full ground now inside the 224px safe area, Mario aligned on\nit, clean sky in the cropped bottom strip; horizontal scroll and jumps keep the\ninset.",
          "is_bot": false,
          "headline": "fix(runner/nes): shift screen-tall world up one tile row to clear bot…",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-09T17:07:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "edbfbfe347f30eb2e9834b6b86bc34339fd75666",
          "body": "…() intrinsic (#270)\n\nThe NES camera framed the runner with the ground mid-screen, exposing\nrepetitive filler rows the map does not define, because a single shared\ncamera Y cannot frame the taller NES viewport (30 rows) and the GB\nviewport (18 rows) the same way.\n\nAdd a portable Camera.VerticalScrol\n[…]\nStartY=193 absolute,\n  main.rs primes view.y, FollowPlayer clamps to VerticalScrollMax()\n- tools/build_stage1_playable_map.py: KEEP_ROWS=15, PAD_ROWS=0\n- tests + docs updated; regenerated tracked ROMs",
          "is_bot": false,
          "headline": "fix(runner): respect vertical map bounds via Camera.VerticalScrollMax…",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-09T15:55:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4b705ed3421b9be914d0d1cc9377564fa2e777d8",
          "body": "…s (#269)\n\nThe NES jump used `assets/sfx/smb-jump.nes.vgm`, a 214-byte capture only ~33 ms\n(1470 samples) long -- roughly two pulse-1 frames, i.e. the initial blip of the\nsweep, which plays as a short high-pitched beep instead of the jump.\n\nRemove that truncated variant so NES falls back to the full\n[…]\nill fits NROM alongside the\nmap and BGM. The NES SFX compiler keeps every pulse-1 frame (it filters by\nchannel, not by time), so the full sweep is emitted. Tracked runner.nes\nregenerated; suite green.",
          "is_bot": false,
          "headline": "fix(runner/nes): restore full jump SFX so the NES jump no longer beep…",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-09T13:49:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "38869f75a87ad9fb7a20c9f29fa68f727abb4203",
          "body": "…268)\n\nThe previous stage1 migration bolted 16-bit column streaming + banking onto\nGame Boy and RLE/variant map storage onto NES to force a 312x40 world through\nthe 8-bit targets. That forcing infrastructure was unstable: Game Boy corrupted\nthe ROM bank and wild-jumped into startup when scrolling le\n[…]\nario lands and\nstays on the ground, left/right/jump scroll cleanly with no crash, and the\nwhole suite is green. Runner golden tests updated for the new geometry,\nconstants, and horizontal-only design.",
          "is_bot": false,
          "headline": "runner: migrate to a stable stage1 map on the master 8-bit backend (#…",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-09T13:30:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "95f166886713ff3b88bc1e17c03ef0ffe93d649a",
          "body": "* SDKEXT: add static SDK plugin extensibility proof\n\n* SDKEXT-4: enforce plugin capabilities and validators per target\n\nAdd ProvidedCapabilities to SdkPluginTargetLoweringDescriptor so a target\nopt-in must grant an operation's RequiredCapabilities. SdkPluginDescriptor now\nrejects operations/hooks th\n[…]\nBoundaryTests. Update SdkPluginBoundary,\nSdkArchitecture, ArchitectureRoadmap, Portable2DSdkV1, and README to document\nper-target capability enforcement, CLI host registration, and migration\nguidance.",
          "is_bot": false,
          "headline": "SDKEXT-4/6/7: complete SDK plugin extensibility (epic #258) (#267)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-08T22:40:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "78531648f5abb7d7d95ee670a8f0497fc7d5ff15",
          "body": null,
          "is_bot": false,
          "headline": "Language/ABI: reject public pointer addressability forms (#266)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-08T14:36:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03711d46f4533579edb43ffed98a3ce088aeacb1",
          "body": "Clarifies the raw target-intrinsic boundary for SDK v1 and tightens sample quarantine coverage.",
          "is_bot": false,
          "headline": "Resolve #246: clarify raw target intrinsic quarantine",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-08T13:59:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06aac376fb5e74b4c411c253584a5889cf9fe20e",
          "body": "Route actor/enemy public facade recognition through sdk_role metadata while keeping the actor framework lowering compiler-owned and zero-cost.\n\nCloses #251",
          "is_bot": false,
          "headline": "fix: route actor facade recognition through sdk roles",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-08T10:46:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa50051c079e3e1e7b3def2fd44ec4bdd554c9a0",
          "body": null,
          "is_bot": false,
          "headline": "docs: define SDK plugin boundary (#255)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-08T10:02:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04e599c2987bb348f0d604dae837a44efbb8bcd4",
          "body": "Closes #253",
          "is_bot": false,
          "headline": "docs: classify target intrinsic taxonomy",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-08T09:41:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c236f6cd3e8e3dd8eca760f57b750f050c550c7",
          "body": null,
          "is_bot": false,
          "headline": "docs: inventory compiler-owned SDK operations (#250)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-07T21:52:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e59a5cc4c67b176f149ecf2dbda73947e75a234",
          "body": "Closes #242",
          "is_bot": false,
          "headline": "AF-5.8: harden actor TouchPlayer right-edge overlap",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-07T21:22:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "579ff70c4e527162807ddbbaa5e2b89f708f8d93",
          "body": "Remove stale alias wording, rename post-alias cleanup tests, and drop no-op Sprite.Draw replacements in GB/NES test parity coverage.",
          "is_bot": false,
          "headline": "Clean up stale SDK alias test wording",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-07T11:37:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dedd5f535ab92f0400c488aa24bd5df59b88ce64",
          "body": "Remove public snake_case SDK compatibility alias paths, require canonical SDK facade calls/Button enum members, and update tests/docs accordingly.",
          "is_bot": false,
          "headline": "Remove public SDK compatibility aliases",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-07T10:26:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e98d224f79f33e4f61cd027b0007616447ecf9b",
          "body": null,
          "is_bot": false,
          "headline": "feat(nes): support PNG sprite overlays (#239)",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-06T22:29:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7973bd81c50c50145c981ce30714012b14b1ea81",
          "body": "Fixes Game Boy downward row streaming so the fine-scroll-exposed bottom row is queued after the row cursors advance. Adds tiled-vscroll regression coverage and refreshes affected Game Boy sample ROMs.",
          "is_bot": false,
          "headline": "fix: align Game Boy vertical row streaming",
          "author_name": "José Manuel Nieto",
          "author_login": "SuperJMN",
          "committed_at": "2026-07-06T20:29:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 0,
      "commits_last_year": 374,
      "latest_release_at": null,
      "latest_release_tag": null,
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 11,
      "days_since_latest_release": null,
      "mean_days_between_releases": null
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 57,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "RetroSharp.Tool",
          "exists": true,
          "license": null,
          "keywords": [
            "compiler",
            "8bit",
            "gameboy",
            "nes",
            "retro",
            "csharp",
            "language"
          ],
          "ecosystem": "nuget",
          "matches_repo": true,
          "registry_url": "https://www.nuget.org/packages/RetroSharp.Tool",
          "is_deprecated": false,
          "latest_version": "0.0.363",
          "repository_url": "https://github.com/SuperJMN/RetroSharp",
          "versions_count": 254,
          "total_downloads": 25105,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-26T10:58:37.887000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 8,
      "watchers": 1,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 4
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "samples"
      ],
      "has_llms_txt": true,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "src/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj",
        "src/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj",
        "src/RetroSharp.Cli/RetroSharp.Cli.csproj",
        "src/RetroSharp.Core.Tests/RetroSharp.Core.Tests.csproj",
        "src/RetroSharp.Core/RetroSharp.Core.csproj",
        "src/RetroSharp.FunctionalAcceptance.Tests/RetroSharp.FunctionalAcceptance.Tests.csproj",
        "src/RetroSharp.FunctionalAcceptance/RetroSharp.FunctionalAcceptance.csproj",
        "src/RetroSharp.GameBoy.Tests/RetroSharp.GameBoy.Tests.csproj",
        "src/RetroSharp.GameBoy/RetroSharp.GameBoy.csproj",
        "src/RetroSharp.NES.Tests/RetroSharp.NES.Tests.csproj",
        "src/RetroSharp.NES/RetroSharp.NES.csproj",
        "src/RetroSharp.Parser.Model/RetroSharp.Parser.Model.csproj",
        "src/RetroSharp.Parser.Tests/RetroSharp.Parser.Tests.csproj",
        "src/RetroSharp.Parser/RetroSharp.Parser.csproj",
        "src/RetroSharp.Sdk.Frontend/RetroSharp.Sdk.Frontend.csproj",
        "src/RetroSharp.Sdk.Plugins.Platformer2D/RetroSharp.Sdk.Plugins.Platformer2D.csproj",
        "src/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj",
        "src/RetroSharp.SemanticAnalysis/RetroSharp.SemanticAnalysis.csproj"
      ],
      "largest_source_bytes": 255622,
      "source_files_sampled": 539,
      "oversized_source_files": 14,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 10764
    },
    "dependencies": {
      "manifests": [],
      "advisories": {
        "error": "No resolved dependencies carried a version and a supported ecosystem",
        "scope": "repository_graph",
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 10,
        "direct_affected_count": 0
      },
      "ecosystems": [],
      "dependencies": [
        {
          "name": "Microsoft.NET.Test.Sdk",
          "manifest": "src/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit",
          "manifest": "src/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.runner.visualstudio",
          "manifest": "src/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "coverlet.collector",
          "manifest": "src/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.NET.Test.Sdk",
          "manifest": "src/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit",
          "manifest": "src/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.runner.visualstudio",
          "manifest": "src/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "coverlet.collector",
          "manifest": "src/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.NET.Test.Sdk",
          "manifest": "src/RetroSharp.Core.Tests/RetroSharp.Core.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit",
          "manifest": "src/RetroSharp.Core.Tests/RetroSharp.Core.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.runner.visualstudio",
          "manifest": "src/RetroSharp.Core.Tests/RetroSharp.Core.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "coverlet.collector",
          "manifest": "src/RetroSharp.Core.Tests/RetroSharp.Core.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.NET.Test.Sdk",
          "manifest": "src/RetroSharp.FunctionalAcceptance.Tests/RetroSharp.FunctionalAcceptance.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit",
          "manifest": "src/RetroSharp.FunctionalAcceptance.Tests/RetroSharp.FunctionalAcceptance.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.runner.visualstudio",
          "manifest": "src/RetroSharp.FunctionalAcceptance.Tests/RetroSharp.FunctionalAcceptance.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "coverlet.collector",
          "manifest": "src/RetroSharp.FunctionalAcceptance.Tests/RetroSharp.FunctionalAcceptance.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.NET.Test.Sdk",
          "manifest": "src/RetroSharp.GameBoy.Tests/RetroSharp.GameBoy.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit",
          "manifest": "src/RetroSharp.GameBoy.Tests/RetroSharp.GameBoy.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.runner.visualstudio",
          "manifest": "src/RetroSharp.GameBoy.Tests/RetroSharp.GameBoy.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "coverlet.collector",
          "manifest": "src/RetroSharp.GameBoy.Tests/RetroSharp.GameBoy.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.NET.Test.Sdk",
          "manifest": "src/RetroSharp.NES.Tests/RetroSharp.NES.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit",
          "manifest": "src/RetroSharp.NES.Tests/RetroSharp.NES.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.runner.visualstudio",
          "manifest": "src/RetroSharp.NES.Tests/RetroSharp.NES.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "coverlet.collector",
          "manifest": "src/RetroSharp.NES.Tests/RetroSharp.NES.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Zafiro.Core",
          "manifest": "src/RetroSharp.Parser.Model/RetroSharp.Parser.Model.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.NET.Test.Sdk",
          "manifest": "src/RetroSharp.Parser.Tests/RetroSharp.Parser.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit",
          "manifest": "src/RetroSharp.Parser.Tests/RetroSharp.Parser.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "CSharpFunctionalExtensions.FluentAssertions",
          "manifest": "src/RetroSharp.Parser.Tests/RetroSharp.Parser.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.runner.visualstudio",
          "manifest": "src/RetroSharp.Parser.Tests/RetroSharp.Parser.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "coverlet.collector",
          "manifest": "src/RetroSharp.Parser.Tests/RetroSharp.Parser.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Antlr4.Runtime.Standard",
          "manifest": "src/RetroSharp.Parser/RetroSharp.Parser.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Antlr4BuildTasks",
          "manifest": "src/RetroSharp.Parser/RetroSharp.Parser.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "CSharpFunctionalExtensions",
          "manifest": "src/RetroSharp.Parser/RetroSharp.Parser.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Zafiro.Core",
          "manifest": "src/RetroSharp.Parser/RetroSharp.Parser.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "CSharpFunctionalExtensions.FluentAssertions",
          "manifest": "src/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.NET.Test.Sdk",
          "manifest": "src/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit",
          "manifest": "src/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Verify.Xunit",
          "manifest": "src/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.runner.visualstudio",
          "manifest": "src/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "coverlet.collector",
          "manifest": "src/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Zafiro.Core",
          "manifest": "src/RetroSharp.SemanticAnalysis/RetroSharp.SemanticAnalysis.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "Antlr4.Runtime.Standard",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Antlr4BuildTasks",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "coverlet.collector",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "CSharpFunctionalExtensions",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "CSharpFunctionalExtensions.FluentAssertions",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NET.Test.Sdk",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Verify.Xunit",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "xunit",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "xunit.runner.visualstudio",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Zafiro.Core",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 10,
        "direct_count": 10,
        "indirect_count": 0
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 215,
        "open_issues": 4,
        "closed_ratio": 0.982,
        "closed_issues": 221,
        "closed_unmerged_prs": 1
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "SuperJMN",
          "commits": 447,
          "avatar_url": "https://avatars.githubusercontent.com/u/3109851?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "30 out of 30 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": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 6,
            "reason": "project has 2 contributing companies or organizations -- score normalized to 6",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 0,
            "reason": "license file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "fc60725384f291b2dc79c2f1b63eda1cd18fe01d",
        "ran_at": "2026-07-26T11:08:07Z",
        "aggregate_score": 3.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-26T10:57:19Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-26T10:57:18Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": [
        {
          "number": 318,
          "created_at": "2026-07-12T18:05:02Z",
          "last_comment_at": "2026-07-20T10:14:42Z",
          "last_comment_author": "SuperJMN"
        },
        {
          "number": 322,
          "created_at": "2026-07-12T18:05:11Z",
          "last_comment_at": "2026-07-18T10:39:31Z",
          "last_comment_author": "SuperJMN"
        },
        {
          "number": 408,
          "created_at": "2026-07-18T08:45:59Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 439,
          "created_at": "2026-07-20T10:07:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/SuperJMN/RetroSharp",
    "host": "github.com",
    "name": "RetroSharp",
    "owner": "SuperJMN"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 49,
      "inputs": {
        "security": 38,
        "vitality": 44,
        "community": 38,
        "governance": 62,
        "engineering": 60
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "at_risk",
        "name": "Vitality",
        "value": 44,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "commits_last_year": 374,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 11
            },
            "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": "11/52 weeks with commits",
                "points": 7.6,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "374 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 374
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "critical",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "releases_count": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "no releases published",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases_published",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 38,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 14,
            "inputs": {
              "forks": 0,
              "stars": 8,
              "watchers": 1,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "8 stars",
                "points": 13.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "1 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 52,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "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": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 57,
            "inputs": {
              "packages": [
                "RetroSharp.Tool"
              ],
              "dependents": null,
              "ecosystems": "nuget",
              "total_downloads": 25105,
              "monthly_downloads": null
            },
            "components": [
              {
                "key": "total_downloads",
                "name": "Total downloads",
                "detail": "25,105 downloads all-time across nuget",
                "points": 45.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_total",
                    "params": {
                      "count": 25105,
                      "ecosystems": "nuget"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 62,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 16,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "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 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "merged_prs": 215,
              "open_issues": 4,
              "closed_issues": 221,
              "issue_closed_ratio": 0.982,
              "closed_unmerged_prs": 1
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "98% of issues closed",
                "points": 45.9,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 98
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "215/216 decided PRs merged",
                "points": 38.1,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 215,
                      "decided": 216
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 65,
            "inputs": {
              "followers": 219,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "SuperJMN",
              "public_repos": 160,
              "account_age_days": 4962
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "219 followers of SuperJMN",
                "points": 16.8,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 219,
                      "login": "SuperJMN"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "160 public repos, account ~13 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 160
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "RetroSharp.Tool"
              ],
              "ecosystems": "nuget",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on nuget",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "nuget"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "254 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 254
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 60,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 44,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "30 out of 30 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": 85,
            "inputs": {
              "topics": [
                "compiler",
                "language",
                "z80",
                "8bit",
                "csharp",
                "retro",
                "gameboy",
                "nes"
              ],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "8 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "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": "at_risk",
        "name": "Security",
        "value": 38,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 38,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 13,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 5,
              "scorecard_aggregate": 3.8
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "30 out of 30 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 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "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": 3
            },
            "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": 71,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "has_llms_txt": true,
              "legible_history_share": 0.98,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 10764
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": "llms.txt present",
                "points": 15,
                "status": "met",
                "details": [
                  {
                    "code": "llms_txt_present",
                    "params": {}
                  }
                ],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "98 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 98,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 51,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "src/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj",
                "src/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj",
                "src/RetroSharp.Cli/RetroSharp.Cli.csproj",
                "src/RetroSharp.Core.Tests/RetroSharp.Core.Tests.csproj",
                "src/RetroSharp.Core/RetroSharp.Core.csproj",
                "src/RetroSharp.FunctionalAcceptance.Tests/RetroSharp.FunctionalAcceptance.Tests.csproj",
                "src/RetroSharp.FunctionalAcceptance/RetroSharp.FunctionalAcceptance.csproj",
                "src/RetroSharp.GameBoy.Tests/RetroSharp.GameBoy.Tests.csproj",
                "src/RetroSharp.GameBoy/RetroSharp.GameBoy.csproj",
                "src/RetroSharp.NES.Tests/RetroSharp.NES.Tests.csproj",
                "src/RetroSharp.NES/RetroSharp.NES.csproj",
                "src/RetroSharp.Parser.Model/RetroSharp.Parser.Model.csproj",
                "src/RetroSharp.Parser.Tests/RetroSharp.Parser.Tests.csproj",
                "src/RetroSharp.Parser/RetroSharp.Parser.csproj",
                "src/RetroSharp.Sdk.Frontend/RetroSharp.Sdk.Frontend.csproj",
                "src/RetroSharp.Sdk.Plugins.Platformer2D/RetroSharp.Sdk.Plugins.Platformer2D.csproj",
                "src/RetroSharp.SemanticAnalysis.Tests/RetroSharp.SemanticAnalysis.Tests.csproj",
                "src/RetroSharp.SemanticAnalysis/RetroSharp.SemanticAnalysis.csproj"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "src/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj, src/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj, src/RetroSharp.Cli/RetroSharp.Cli.csproj (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "src/RetroSharp.Architecture.Tests/RetroSharp.Architecture.Tests.csproj, src/RetroSharp.Cli.Tests/RetroSharp.Cli.Tests.csproj, src/RetroSharp.Cli/RetroSharp.Cli.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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "primary_language": "C#",
              "largest_source_bytes": 255622,
              "source_files_sampled": 539,
              "oversized_source_files": 14
            },
            "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": "14/539 source files over 60KB",
                "points": 53.6,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 539,
                      "oversized": 14
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "samples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "samples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "samples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "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",
    "No resolved dependencies carried a version and a supported ecosystem"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T11:08:22.453996Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/SuperJMN/RetroSharp.svg",
  "full_name": "SuperJMN/RetroSharp",
  "license_state": "absent",
  "license_spdx": null
}

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

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

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenNuGet.