Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-30 05:30 UTC

lenaxia / ragnaDataSDK

GoKeine Lizenz erkannt★ 0 Sterne⑂ 0 Forksseit Jan. 2026Auf GitHub ansehen ↗

lenaxia/ragnaDataSDK erreicht einen Gesundheitsindex von 50 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei AI Readiness (65/100) ab, am schwächsten bei Community & Adoption (22/100). Zuletzt vor 9 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

50
gesamt / 100
Mittel

Software-Gesundheitsindex

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

50
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

lenaxiaPersönliches Konto
10 Follower82 öffentliche Reposseit Jan. 2014

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öffentlicht
Gogithub.com/lenaxia/ragnaDataSDKv1.3.0-5vor 9 Tagen

Metriken nach Kategorie

Vitalität

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

62Mittel · 22 % des Gesamtindex
Wie die Bewertung erfolgt
28.8/36Push-Aktualität — letzter Push vor 9 Tagen
2.8/36Commit-Rhythmus — 4/52 Wochen mit Commits
16.5/18Commit-Volumen — 67 Commits im letzten Jahr
0/10OpenSSF Scorecard: Maintained — 1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Verwendete Eingangsdaten
commits_last_year67
human_commit_share0,987
days_since_last_push9
active_weeks_last_year4
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 3 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 9 Tagen
19.8/27Release-Rhythmus — ein Release etwa alle 88,3 Tage
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Verwendete Eingangsdaten
releases_count3
latest_release_tagv1.3.0
releases_from_tagsnein
days_since_latest_release9
mean_days_between_releases88,3

Community & Verbreitung

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

22Kritisch · 18 % des Gesamtindex
Wie die Bewertung erfolgt
0/60Stars — 0 Stars
0/25Forks — 0 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks0
stars0
watchers0
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
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licensenein
has_contributingja
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein

Nachhaltigkeit & Governance

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

59Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
3/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 87 % der Commits
2.7/13.5Breite der Beitragenden — 2 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 4 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor1
contributors_sampled2
top_contributor_share0,867
Wie die Bewertung erfolgt
0/46.8Issue-Lösungsquote — keine Issues oder keine Daten
38.2/38.3PR-Annahme — 1/1 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/29 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs1
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Issue-Lösungsquote. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
7.5/25Reichweite des Inhabers — 10 Follower von lenaxia
25/25Kontohistorie — 82 öffentliche Repos, Kontoalter ca. 12 Jahre
Verwendete Eingangsdaten
followers10
owner_typeUser
is_verified
owner_loginlenaxia
public_repos82
account_age_days4.588
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 go
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 9 Tagen
20/20Versionshistorie — 5 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesgithub.com/lenaxia/ragnaDataSDK
ecosystemsgo
any_deprecatednein
min_days_since_publish9

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

64Mittel · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 4 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration — .golangci.yml
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 1 merged PRs checked by a CI test -- score normalized to 0
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
0/10Repository-Beschreibung
0/10Topics
10/10Wiki
Verwendete Eingangsdaten
topics
has_wikija
homepage
has_readmeja
has_docs_dirja
has_descriptionnein

Sicherheit

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

32Gefährdet · 16 % des Gesamtindex

Sicherheitslage

32Gefährdet
Wie die Bewertung erfolgt
6/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 0 out of 1 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/29 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 4 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
0/2.5Lizenz — license file not detected
0/7.5Maintained — 1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
0/5Packaging — keine Daten
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
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 — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
6/7.5Vulnerabilities — 2 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3,2
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): packaging. 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.

65Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 68 von 76 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,895
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
18/18Bootstrap mit einem Befehl — Makefile
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration — .golangci.yml
11/11Statische Typprüfung — Go (statisch typisiert)
10/10Reproduzierbare Umgebung — lockfile
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 77
8/8Automatisierte Wartung — 1 der letzten 77 Commits sind automatisierte Abhängigkeits-Updates
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilesgo.sum
has_dockerfilenein
typed_languageja
bootstrap_filesMakefile
has_devcontainernein
has_linter_configja
typecheck_configs
agent_commit_share0
toolchain_manifestsgo.mod
dependency_bot_commit_share0,013
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — Go (statisch typisiert)
55/55Handhabbare Dateigrößen — 0/128 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageGo
largest_source_bytes42.687
source_files_sampled128
oversized_source_files0
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalnein
api_schema_files

Eckdaten

0GitHub-Sterne
2Mitwirkende
67Commits, letzte 12 Monate
9Tage seit letztem Push
3Releases
1Bus-Faktor
0offene Issues
GoPaket-Ökosysteme

Warnungen zur Datenerhebung

  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Weitere Details

OpenSSF Scorecard 3.2 / 10
3.2Gesamtwert

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-30 05:30 UTC

8Binary-Artifactsbinaries present in source code
0Branch-Protectionbranch protection not enabled on development/release branches
0CI-Tests0 out of 1 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/29 approved changesets -- score normalized to 0
10Contributorsproject has 4 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
0Licenselicense file not detected
0Maintained1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
k. A.Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
8Vulnerabilities2 existing vulnerabilities detected
Direkte Abhängigkeiten 6
RegistryPaketVersionsvorgabeManifest
Gogithub.com/chzyer/readlinev1.5.1go.mod
Gogithub.com/fatih/colorv1.19.0go.mod
Gogithub.com/spf13/cobrav1.10.2go.mod
Gogithub.com/spf13/viperv1.21.0go.mod
Gogithub.com/stretchr/testifyv1.11.1go.mod
Gogopkg.in/yaml.v3v3.0.1go.mod
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 45040,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Go": 1106613,
        "Shell": 9204,
        "Makefile": 3516
      },
      "pushed_at": "2026-07-20T18:39:24Z",
      "created_at": "2026-01-22T23:45:09Z",
      "owner_type": "User",
      "updated_at": "2026-07-20T18:39:58Z",
      "description": null,
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": null,
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "User",
      "login": "lenaxia",
      "company": null,
      "location": null,
      "followers": 10,
      "avatar_url": "https://avatars.githubusercontent.com/u/6321838?v=4",
      "created_at": "2014-01-05T07:47:15Z",
      "is_verified": null,
      "public_repos": 82,
      "account_age_days": 4588
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2026-07-20T18:40:42Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2026-02-07T00:52:19Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-01-25T06:22:46Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "681ce3d9867494c15c862e2426b954095d284ff6",
          "body": "Real-world rAthena mob_db.yml contains duplicate mapping keys (e.g.\nEP172ALPHA in RaceGroups) that cause gopkg.in/yaml.v3 to error and\nprevent the SDK from loading.\n\nAdded unmarshalYAMLDedup() which parses YAML into a node tree,\ndeduplicates mapping keys (last-wins semantics), then decodes into\nthe \n[…]\ne table) to use this instead of yaml.Unmarshal.\n\nIncludes 5 unit tests covering: duplicate keys, last-wins ordering,\nclean YAML passthrough, real mob_db.yml integration, and nested\nduplicate handling.",
          "is_bot": false,
          "headline": "fix: resilient YAML parsing for duplicate keys in rAthena DB files",
          "author_name": "Lenaxia",
          "author_login": null,
          "committed_at": "2026-07-20T18:39:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "862ee1567ffbe1a610f38430e47878c22fd729f6",
          "body": "Bumps the go-dependencies group with 1 update: [github.com/fatih/color](https://github.com/fatih/color).\n\n\nUpdates `github.com/fatih/color` from 1.18.0 to 1.19.0\n- [Release notes](https://github.com/fatih/color/releases)\n- [Commits](https://github.com/fatih/color/compare/v1.18.0...v1.19.0)\n\n---\nupda\n[…]\nion-update:semver-minor\n  dependency-group: go-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps)(deps): bump github.com/fatih/color (#4)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-23T16:45:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e0e949a2670ff7abd57f2b81caedc730a265f7ca",
          "body": "BREAKING CHANGE: Package name changed from ragnarokSDK to ragnadata for better Go conventions\n\n- Renamed pkg/ragnarokSDK/ to pkg/ragnadata/\n- Updated all import paths throughout codebase\n- Updated all documentation references\n- Follows Go convention of lowercase, concise package names\n- Aligns with \n[…]\nI tool name (ragnadata)\n- All tests passing (143+ tests)\n\nMigration guide:\n- Old: import \"github.com/lenaxia/ragnaDataSDK/pkg/ragnarokSDK\"\n- New: import \"github.com/lenaxia/ragnaDataSDK/pkg/ragnadata\"",
          "is_bot": false,
          "headline": "refactor: rename package from ragnarokSDK to ragnadata",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-02-07T00:51:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5bf3bac892cdd9c8764557b1b5a8eca5cd9475c8",
          "body": "- Add job-level timeouts (25m test, 10m build/lint) to prevent hangs\n- Add test command timeout (-timeout=20m) for race detector overhead\n- Exclude Example tests from CI with -run='Test' flag (saves 5-7 min)\n  Example tests are for documentation, not CI validation\n- Fix linter warning: mark unused o\n[…]\nMENTS.md with detailed analysis and rationale\n\nPrevious CI run failed at 600s timeout. Expected new runtime: 10-15 min\nwith 5-10 min buffer before 20m timeout.\n\nFixes: lenaxia/ragnaDataSDK#21370665854",
          "is_bot": false,
          "headline": "ci: improve robustness with timeouts and test optimization",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-28T01:44:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f746e5bb96e224eaff4aa1ca85488e00a77ff399",
          "body": "- Add comprehensive design document for vectorization architecture\n- Implement embedding text generation for monsters\n- Add semantic qualifiers (HP -> 'low durability', ATK -> 'minimal threat')\n- Support 4 verbosity levels (Minimal/Standard/Detailed/Maximum)\n- Include usage context generation ('begi\n[…]\nenAI, Cohere, etc.)\n3. Store in vector databases (Pinecone, Weaviate, Qdrant)\n4. Query with hybrid search (semantic + exact filters)\n\nExample query: 'tanky fire demons good for farming' + level filter",
          "is_bot": false,
          "headline": "Add vector embeddings module for semantic retrieval",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-26T19:13:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "13f3f42da3356a13a80cbdb57a1bfe6974a788af",
          "body": "GitHub was displaying .github/README.md instead of the top-level README.md.\nCI/CD documentation moved to docs/CI_CD_SETUP.md which already exists.",
          "is_bot": false,
          "headline": "chore: remove .github/README.md to prevent GitHub display conflict",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-26T07:23:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e4fbf7c0ff02d46f3ca6cfe5888d38029ff4f22",
          "body": "- Remove straggler build artifacts and test binaries\n- Remove old coverage files and temporary scripts\n- Remove legacy iro-calc reference implementation (2.2MB)\n- Consolidate docs/worklog to docs/worklogs\n- Update .gitignore with cache and temp file patterns\n\n- Rewrite README.md from scratch with cl\n[…]\nines\n  - TDD and type safety standards\n  - Clear code style guide with examples\n  - Common pitfalls and debugging tips\n  - Quick command reference\n\nAll tests passing, project remains fully functional.",
          "is_bot": false,
          "headline": "chore: clean up repository and rewrite documentation",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-26T07:17:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "58eefe3ccde2ea7b60eb131db9ed08ed72011587",
          "body": "- Fix errcheck lint errors by properly handling fmt.Sscanf return values in sdk.go:523,525\n- Update pre-commit hook to auto-install golangci-lint if missing\n- Increase linter timeout from 2m to 5m to match CI configuration\n- Pre-commit hook now checks multiple golangci-lint locations\n- Lint only project code (./pkg/... ./cmd/...) to avoid dependency issues",
          "is_bot": false,
          "headline": "fix: handle fmt.Sscanf error returns and improve pre-commit hook",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-26T06:48:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5797e52cacbe6ba45ba5f42b5753524ccfa98abf",
          "body": "Add comprehensive spawn location filtering to SearchMonsters:\n- MinSpawnCount: filter by minimum total spawn count\n- MinMapCount: filter by minimum number of unique maps\n- SpawnMap: filter to monsters spawning on specific map\n\nChanges:\n- Add 3 new filter fields to MonsterSearchQuery\n- Implement filt\n[…]\nt >= 100\n- Find widely available monsters: MinMapCount >= 5\n- Find monsters on specific map: SpawnMap = \"prt_fild08\"\n- Combine filters for precise targeting\n\nAll tests pass (7 new spawn filter tests).",
          "is_bot": false,
          "headline": "feat: add spawn-based filtering to monster search",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T16:23:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e547f059bdeca5467869b2b10c295c57d6e6771e",
          "body": "- Add TotalSpawnCount field (sum of all spawn amounts)\n- Add SpawnMapCount field (number of unique maps)\n- Automatically populate fields when spawn data is available\n- Enables efficient filtering without iterating spawn arrays",
          "is_bot": false,
          "headline": "feat: add spawn summary fields to MonsterInfo for filtering",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T16:17:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "11db86d207e8832c788ecbce239db3a273f499d6",
          "body": "Monster lookup now automatically includes spawn location data:\n- GetMonsterByName(), GetMonsterByID(), GetMonsterByAegisName()\n- All now return MonsterInfo with SpawnLocations populated\n- SearchMonsters() results also include spawn data\n\nChanges:\n- Added SpawnLocations field to MonsterInfo struct\n- \n[…]\nif not needed (omitempty)\n\nExample JSON output now includes:\n  \"spawn_locations\": [\n    {\n      \"monster_id\": 1002,\n      \"map\": \"prt_fild08\",\n      \"amount\": 110,\n      \"respawn_time\": 5000\n    }\n  ]",
          "is_bot": false,
          "headline": "feat: include spawn locations in monster data by default",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T16:13:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cf5132db22d36ce2c75d4bd32a117035c3b82788",
          "body": "Add full test coverage for spawn location functionality:\n\nUnit tests:\n- parseSpawnLine() with various spawn formats\n- Edge cases: tabs, spaces, missing fields, invalid lines\n- buildSpawnIndices() with lookup verification\n- GetSpawnsByMonsterID() and GetSpawnsByMap()\n- GetAllSpawns() and GetSpawnCoun\n[…]\niles\n- Pre-Renewal spawn data loading\n- Full spawn loading with data validation\n- Verified: 3173 RE spawns, 3333 Pre-RE spawns loaded\n- Poring spawns on 20 different maps\n\nAll tests pass successfully.",
          "is_bot": false,
          "headline": "test: add comprehensive tests for spawn location parser",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T16:08:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2b56a8db38ec2599f912e215672083bbc77d5aae",
          "body": "Add comprehensive spawn location support across the SDK:\n\nCore functionality:\n- Parse rAthena NPC spawn scripts (npc/*/mobs/*.txt)\n- Track spawn data: maps, coordinates, amounts, respawn times\n- Build fast O(1) lookup indices by monster ID and map name\n- Load spawn data during SDK initialization (op\n[…]\nfor fast queries\n- DatabaseManager methods for mode-specific spawn data\n\nThis enables users to easily find where monsters spawn and what\nmonsters appear on specific maps, improving hunting efficiency.",
          "is_bot": false,
          "headline": "feat: add monster spawn location tracking and queries",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T15:58:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "efe3fd612531f140720cc834779937da8db698b4",
          "body": "Replaced heuristic AI parsing with actual mode bitmasks from rAthena source.\n\nSource files referenced:\n- rathena/src/map/mob.hpp (MONSTER_TYPE_XX definitions)\n- rathena/src/common/mmo.hpp (MD_AGGRESSIVE, MD_ASSIST flag values)\n\nCorrect behavior per rAthena source:\n- AI 03, 07, 13: Have MD_ASSIST fla\n[…]\nt rAthena source:\n- Poring (AI 02): Not aggressive, not assist ✓\n- Thief Bug (AI 02): Not aggressive, not assist ✓\n- Isis (AI 19): Aggressive, not assist ✓\n- Baphomet (AI 21): Aggressive, not assist ✓",
          "is_bot": false,
          "headline": "fix: use actual rAthena MONSTER_TYPE constants for behavior flags",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T15:22:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fe5c4a9ede9cd2bb954754f5d5cdd7a8167f0b7e",
          "body": "Added race-based assist logic for mobs with AI 02. In rAthena, Insects\nwith AI 02 assist each other even though AI 02 normally means \"attack\nonly\". This is race-specific behavior.\n\nUpdated AI documentation with correct codes:\n- AI 01: Attack/Assist/ChangeTargetMelee\n- AI 02: Attack only (except Inse\n[…]\ne + various flags\n\nTested:\n- Poring (Plant, AI 02): Passive, No Assist ✓\n- Thief Bug (Insect, AI 02): Passive, Assists ✓\n- Isis (AI 19): Aggressive, Assists ✓\n- Baphomet (AI 21): Aggressive, Assists ✓",
          "is_bot": false,
          "headline": "fix: insects with AI 02 now correctly show assist behavior",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T15:15:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9d9c3cef1ceb57b67b5207b3ce7eea0276b25aea",
          "body": "The Modes map in rAthena YAML doesn't contain Aggressive/Assist flags.\nInstead, behavior is encoded in the AI field as numeric codes.\n\nAdded AI parsing logic:\n- AI >= 17: Aggressive (attacks on sight)\n- AI 1,3,5,17-25: Assist (helps allies)\n- AI < 17: Generally passive\n\nThis fixes monsters like Baph\n[…]\n9) showing\nas non-aggressive when they should attack on sight.\n\nTested:\n- Baphomet (AI 21): Now Aggressive + Assist ✓\n- Isis (AI 19): Now Aggressive + Assist ✓\n- Thief Bug (AI 02): Correctly Passive ✓",
          "is_bot": false,
          "headline": "fix: parse AI field for aggressive/assist behavior",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T15:14:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2f10167ded1815c48fc9673178d46f3ef044ff7e",
          "body": "Updated comments to explain rAthena mob mode flags:\n- Aggressive: Mob attacks players on sight\n- Angry: Alternative aggressive flag (some servers)\n- Assist: Mob helps allies when attacked\n- ChangeChase: Mob switches targets (assist-related)\n\nNote: Current implementation relies on Modes map from YAML.\nIf aggro/assist flags appear incorrect, the mob_db.yml may not\nhave these modes properly set, or the YAML parser needs debugging.",
          "is_bot": false,
          "headline": "docs: clarify mob mode flags in conversion logic",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T08:02:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cae2bfdc07b782af41ab74f57cfbab584f8a7d0b",
          "body": "Added element level display to all monster lists for better elemental\nattack planning. Now shows:\n  - /drops: Earth3/Demihuman (was: Earth/Demihuman)\n  - /monster search: Earth3/Demi-Human/Medium (was: Earth/Demi-Human/Medium)\n  - /find: Earth3 (was: Earth)\n\nElement levels (1-4) are crucial for calculating elemental damage\nmodifiers and planning effective attacks against monsters.",
          "is_bot": false,
          "headline": "feat: display element level in monster listings",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T07:53:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73b838fd69ea95ea65a8419b20260769ad556cd4",
          "body": "Changed /drops rate parameter to accept percentages directly instead\nof decimals. Now users can input:\n  /drops \"Orc Warrior Card\" rate:0.01  # for 0.01% drop rate\n  /drops Jellopy rate:5                  # for 5% drop rate\n\nPreviously confusing: users had to input 0.0001 to mean 0.01%\nNow intuitive: users input 0.01 to mean 0.01%\n\nAlso improved display precision to show 4 decimal places for card\ndrop rates (0.0100% instead of 0.01%).",
          "is_bot": false,
          "headline": "fix: make drop rate input user-friendly (use percentages)",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T07:48:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98a2295ea67238495986d316accdac2d7b026a0b",
          "body": "Previously, quoted strings like \"Orc Warrior Card\" were split into\nseparate words because strings.Fields() doesn't respect quotes.\n\nAdded parseArgs() function that properly handles quoted strings, so\ncommands like:\n  /drops \"Orc Warrior Card\" rate:0.01\nnow work correctly.",
          "is_bot": false,
          "headline": "fix: handle quoted arguments properly in interactive-search tool",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T07:45:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a50e061d8576cc9ea04e996a1d42ed84ee1c500b",
          "body": "This fixes the 403 error when creating GitHub releases.",
          "is_bot": false,
          "headline": "fix: add contents: write permission to release workflows",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T06:12:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba1b8dfe2284217d9cc0a4b4adfe9818335d597d",
          "body": null,
          "is_bot": false,
          "headline": "fix: update release workflow to Go 1.23 and actions/upload-artifact@v4",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T06:07:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d7e6ea3f720bee49f575429385d1abafae0e7ab6",
          "body": "- Updated test assertions to look for 'ragnaData' instead of 'goKoreCalc'\n- Fixed .gitignore to only ignore binary in root (not cmd/ragnadata directory)",
          "is_bot": false,
          "headline": "fix: update version_test to check for ragnaData instead of goKoreCalc",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T05:54:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0cb54a74fe62ead9d165e61b1a5e6c87ddf2cb03",
          "body": "The version command now correctly shows 'ragnaData' instead of 'goKoreCalc'.",
          "is_bot": false,
          "headline": "fix: update version command output to use ragnaData",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T04:15:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d05acc37061a94b458b5b0760af376c83d0247f7",
          "body": "- Update interactive-search tool banner and history file path\n- Update CLI command examples in help text\n- Update version command output\n- Update test expectations\n- Update documentation in docs/ directory\n- Rebuild interactive-search binary with new module\n- Remove old gokorecalc binaries\n- Add comprehensive .gitignore for build artifacts\n\nAll references to goKoreCalc/gokorecalc now updated to ragnaData/ragnadata.",
          "is_bot": false,
          "headline": "fix: complete rename by updating remaining references and examples",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T04:13:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51e2d00d9e606fbba46c940ff25add0960ec30aa",
          "body": "BREAKING CHANGE: Project renamed for better clarity\n\n## Changes\n\n### Module & Package Names\n- Module: github.com/lenaxia/goKoreCalcSDK → github.com/lenaxia/ragnaDataSDK\n- All import paths updated across 125 files\n\n### Binary & CLI\n- Binary name: gokorecalc → ragnadata\n- CLI command directory: cmd/go\n[…]\nects the project's purpose:\n- 'ragna' - Ragnarok Online\n- 'Data' - Pure data API (no opinions/recommendations)\n- 'SDK' - Software Development Kit\n\nClearer, more professional, and better searchability.",
          "is_bot": false,
          "headline": "refactor: rename project from goKoreCalcSDK to ragnaDataSDK",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T03:57:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "87f53793262dad4259b06130f2189e1618ef6abc",
          "body": "## New Features\n\n### Makefile Commands\n- `make setup`: One-command setup (tools + hooks)\n- `make fmt`: Format all code\n- `make lint`: Run linter\n- `make test`: Run tests\n- `make ci`: Run full CI locally\n- `make pre-commit`: Pre-commit checks\n- See `make help` for all commands\n\n### Pre-Commit Hooks\n-\n[…]\ny commit (or pre-commit hook does it)\nmake ci         # Before pushing\n```\n\n### LLM Agents\n```bash\nmake fmt        # ALWAYS before generating diffs\nmake ci         # Verify changes pass all checks\n```",
          "is_bot": false,
          "headline": "feat: add comprehensive developer tooling and LLM-friendly documentation",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T02:54:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9f72625886b4730ec7ff8549aa81ac817acbf1a3",
          "body": "The dupl linter found duplicate code in:\n- Physical vs Magical damage calculations (intentional - same formula)\n- Index building patterns in database (intentional - common patterns)\n\nThese duplications are reasonable and don't need to be refactored.",
          "is_bot": false,
          "headline": "fix(lint): exclude dupl check from formulas and database",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T00:52:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3e3810838d74d93a64aeb58b2018d1d88bee729",
          "body": "Format all Go files with gofmt -s to fix remaining lint issues.",
          "is_bot": false,
          "headline": "fix(lint): run gofmt -s on all files",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T00:41:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8418c1e2df4a173fff31b1d57cf03d17fe948d11",
          "body": "- Fix remaining shadow warning in buildDropTables\n- Replace deprecated strings.Title with manual titlecase\n- Remove unused lessFunc variable in test\n\nAll lint issues are now resolved!",
          "is_bot": false,
          "headline": "fix(lint): fix final lint issues",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T00:30:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68eada398571fab6f223fc4d5efe757f7bb68e35",
          "body": "- Fix shadow warnings by avoiding err variable shadowing\n- Remove unnecessary nil checks before len() (gosimple)\n- Comment out unused NPC warp parsing code (future feature)\n- Mark unused mode parameter with underscore\n\nAll lint warnings are now resolved.",
          "is_bot": false,
          "headline": "fix(lint): resolve all remaining lint issues",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T00:24:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52f8ec7f7790f0c61ec5c08c272221b061a1fb2e",
          "body": "- Increase gocyclo complexity threshold from 15 to 40 (search functions are complex)\n- Exclude G306 (file permissions) - we intentionally use 0644 for config files\n- Exclude unused/unparam from test mocks (intentional for interface compliance)\n- Exclude unconvert/unparam from test files\n\nThis keeps the important checks while being practical about test code.",
          "is_bot": false,
          "headline": "fix(lint): adjust linter thresholds and exclusions",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T00:19:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "030b42b8adf6ea818d0af0a05add61654267e849",
          "body": "gocritic produces too many style suggestions that don't affect correctness.\nWe keep the other important linters:\n- errcheck: catch unchecked errors\n- govet: catch common mistakes\n- staticcheck: catch bugs\n- gosec: catch security issues\n\nThis focuses CI on actual code quality issues rather than style preferences.",
          "is_bot": false,
          "headline": "fix(lint): disable gocritic linter entirely",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T00:14:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab5dfa0ee3a7548f01209cf73750bcb7a833e8c2",
          "body": "…rformance\n\nDisable the 'style' tag from gocritic to focus on actual issues.\nStyle checks like octalLiteral, emptyStringTest, elseif, dupBranchBody, builtinShadow\nare all valid style suggestions but not critical for correctness.\n\nThis allows CI to pass while keeping focus on diagnostic and performance issues.",
          "is_bot": false,
          "headline": "fix(lint): disable gocritic style checks, keep only diagnostic and pe…",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T00:11:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17228155e73768b363f4cf9db85f5829fa4fcae3",
          "body": "Disable the following gocritic checks that are style suggestions but not actual issues:\n- rangeValCopy: suggestions for performance optimization\n- ptrToRefParam: suggestions for parameter types\n- preferStringWriter: minor performance suggestions\n- equalFold: suggests strings.EqualFold over strings.T\n[…]\nplicate parameter types\n- unnamedResult: style preference for naming return values\n\nThese are all valid suggestions but not critical for functionality.\nThe CI now focuses on actual correctness issues.",
          "is_bot": false,
          "headline": "fix(lint): disable additional gocritic style checks",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T00:06:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8018d4dc9a1710dd389f820676cc6480ef0d1e88",
          "body": "- Rename min/max variables to minVal/maxVal, minDmg/maxDmg, minLevel/maxLevel\n- This completes all builtinShadow fixes across the entire codebase",
          "is_bot": false,
          "headline": "fix(lint): fix builtinShadow in test/helpers/assertions.go",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-25T00:02:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "586e03fe1c38aae1fb14335edd8998f33f711ac8",
          "body": "The hugeParam check suggests passing large structs by pointer for performance.\nWhile this is good advice, it would require API changes and is not critical for correctness.\nDisabling this check to keep the CI focused on actual issues.",
          "is_bot": false,
          "headline": "fix(lint): disable hugeParam check",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T23:58:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f6a2fef061fb94e2ef3af9de7378fba7a43d805b",
          "body": "- Rename min/max variables to minVal/maxVal or minDmg/maxDmg throughout assertions and calculator code\n- Combine duplicate float64 parameters in AverageWithinTolerance",
          "is_bot": false,
          "headline": "fix(lint): fix all remaining builtinShadow warnings",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T23:58:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eb38a4948c5cbd496df9291ca4a23e1356924265",
          "body": "- Combine duplicate parameter types in function signatures\n- Rename variables that shadow built-in identifiers (min -> minVal, max -> maxVal)\n- Add named return parameters for DEF/MDEF calculations",
          "is_bot": false,
          "headline": "fix(lint): resolve all remaining gocritic issues",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T23:55:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "704489c72d5998a643da199c3384dec253edabdb",
          "body": "- Add error handling for viper.BindPFlag and viper.BindEnv calls\n- Add named return values for DEF/MDEF calculation functions\n- Combine parameter types in mock functions for cleaner signatures",
          "is_bot": false,
          "headline": "fix(lint): address errcheck and gocritic issues",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T23:50:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20ea0d69ac9f2782a6e4d1c8b3e42fa952fb6db3",
          "body": "…m errcheck",
          "is_bot": false,
          "headline": "fix(lint): disable type assertion checking and exclude test files fro…",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T23:47:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "874928b3e0957c2d053e1d5a338e59a67b1ee75d",
          "body": "- Replace deprecated check-shadowing with enable: [shadow]\n- Replace output.format with output.formats array\n- Fixes golangci-lint config validation errors",
          "is_bot": false,
          "headline": "fix(lint): update golangci-lint config for v1.62 compatibility",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T23:36:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "241bb966138b907455de8baa884262c10167af9d",
          "body": "- Fix Go version mismatch: update go.mod from 1.25.5 to 1.23.0\n- Update golangci-lint action to v6 with pinned version v1.62\n- Update artifact upload action from v3 to v4 (fixes deprecation warning)\n- Add -short flag to tests to reduce CI runtime\n- Update example test expected outputs to match actua\n[…]\nxampleSDK_FindSuitableMonsters: Update to Thief Bug, Creamy\n\nFixes:\n- golangci-lint Go version compatibility error\n- Deprecated actions/upload-artifact@v3 warning\n- Example test data mismatch failures",
          "is_bot": false,
          "headline": "fix(ci): resolve all CI workflow issues",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T23:25:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6d90fdae421f155a1a9bd055d8e7e27c6704d371",
          "body": "- Updated FormulaProvider interface: GetRaceModifier now accepts race bonuses map\n- Fixed Printf format strings in examples (%.0f -> %d for integers)\n- Fixed redundant newlines in example output\n- Added comprehensive test coverage for race modifiers\n- Enhanced database item search with additional filters\n- Updated all implementations to match new interface\n- Fixes CI build errors",
          "is_bot": false,
          "headline": "fix: update GetRaceModifier signature and fix format strings",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T23:07:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "470bd8194f0e689a9e4c3f5b06064d55b5ff7f4a",
          "body": "- Created internal/logger package with configurable output\n- Logger respects GOKORECALC_DEBUG environment variable\n- Replaced all fmt.Fprintf(os.Stderr) warnings with logger.Warn()\n- Warnings are now silent by default (for tests and library usage)\n- Set GOKORECALC_DEBUG=1 to enable debug output\n- Fixes CI test failures caused by unwanted warning output in example tests",
          "is_bot": false,
          "headline": "fix: implement proper logging system to suppress warnings during tests",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T23:03:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2be3f90908d68174e2edef0a1a3e9c10dd70637f",
          "body": null,
          "is_bot": false,
          "headline": "docs: add GitHub migration and CI/CD test documentation",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T22:08:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45fd6662b76c0b34afd04c232e77d5ba66875b57",
          "body": "Allows testing the CI/CD workflow locally without GitHub Actions:\n- Runs all tests with race detection\n- Checks out rAthena database\n- Builds binary with version info\n- Creates release package with bundled database\n- Verifies checksums and package contents\n\nUsage: ./scripts/test-ci.sh",
          "is_bot": false,
          "headline": "feat: add local CI/CD test script",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T22:07:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "24a4d838bbeec391304a48493b775993f3802494",
          "body": null,
          "is_bot": false,
          "headline": "docs: add comprehensive CI/CD setup documentation",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T22:00:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8df86dc903e8f55b1ee931ea1c35bca3fa420d72",
          "body": "CI/CD Features:\n- Automated testing on push/PR (ci.yml)\n- Release workflow triggered by version tags (release.yml)\n- Multi-database build matrix support (release-multi-db.yml)\n- Automatic rAthena database checkout and bundling\n- Cross-platform builds (Linux, macOS, Windows; amd64, arm64)\n\nWorkflows:\n[…]\natform archives (tar.gz for Unix, zip for Windows)\n\nDocumentation:\n- Complete CI/CD guide in .github/README.md\n- Database configuration examples\n- Release process documentation\n- Troubleshooting guide",
          "is_bot": false,
          "headline": "feat: add comprehensive CI/CD workflows with multi-database support",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T22:00:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "87900cc51c8ed4cdc6ac47cb43f4ceeb81388119",
          "body": "Session summary covering:\n- Repository cleanup (105 files committed)\n- v1.0.0 tag creation and release\n- Epic 8 planning and documentation\n- Complete file change summary\n- Technical decisions and rationale\n- Next steps and future roadmap\n\nAll objectives completed successfully.",
          "is_bot": false,
          "headline": "docs: add comprehensive session worklog for v1.0.0 release",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T21:53:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f23bcbda6456d620e98f9c71d38d8f83ce5505e",
          "body": "Epic 8 focuses on equipment bonuses, card effects, and job-specific mechanics:\n\nUser Stories:\n- US-8.01: Equipment Stat Extraction (High, 8 points)\n- US-8.02: Card Bonus System (High, 13 points)\n- US-8.03: Job-Specific ASPD Formulas (Medium, 8 points)\n- US-8.04: Equipment Set Bonuses (Medium, 8 poin\n[…]\n/damage.go:183 - Card extraction\n- internal/formulas/iro/iro.go:162 - Job ASPD formulas\n\nAll stories include detailed acceptance criteria, technical designs,\ntest plans, and implementation checklists.",
          "is_bot": false,
          "headline": "docs: create Epic 8 - Advanced Combat Features",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T21:52:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5949eb7b9a820c3dec9dfaaaf22558910248143d",
          "body": "Major additions:\n- cmd/gokorecalc: Full-featured CLI tool with monster, matchup, find commands\n- examples/: Four example programs demonstrating SDK usage\n- examples/interactive-search: Complete REPL with wildcard/filter support\n- Complete test suite with 1,317+ tests passing\n\nCLI Features:\n- Monster\n[…]\natching\n- O(1) lookups with efficient indices\n\nTest Coverage:\n- 1,317+ tests passing (100% pass rate)\n- 85%+ average coverage\n- Zero technical debt\n\nAll features production-ready and fully documented.",
          "is_bot": false,
          "headline": "feat: add complete CLI tool, examples, and comprehensive documentation",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T21:49:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "52e8ea5ce38f5ba13b0f2d71356d130b8cce39aa",
          "body": null,
          "is_bot": false,
          "headline": "docs: add comprehensive worklog for interactive-search enhancements",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T16:15:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "82917158ca48fc92b02328275cd8c6f5f090a570",
          "body": "…PC filtering\n\n- Add wildcard pattern matching (* and ?) for NPC searches\n- Fix filter parsing to support combined queries (e.g., 'Kafra Employee map:prontera')\n- Implement matchesPattern() and wildcardMatch() for flexible name searching\n- Rewrite searchNPC() to properly separate name args from filt\n[…]\nte command history (already working via readline)\n\nTest results:\n- /npc kafra* - 99 matches\n- /npc Kafra Employee map:prontera - 6 matches\n- /npc *guide* - 103 matches\n- All 1,306+ tests still passing",
          "is_bot": false,
          "headline": "feat: enhance interactive-search with wildcard support and improved N…",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T16:14:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "da18041644822117c417e429f047fc6376d2d6da",
          "body": "- Add comprehensive integration test suite (977 lines)\n- Test full workflows: item hunting, leveling, equipment comparison\n- Test cross-component integration: database, calculator, search, cache\n- Test error scenarios: invalid inputs, missing data, edge cases\n- Test performance: all operations meet \n[…]\n deps)\n\nFiles:\n- pkg/ragnarokSDK/integration_test.go (new)\n- docs/implementation-summaries/US-6.12-integration-tests-summary.md (new)\n- docs/user-stories/epic-06/US-6.12-integration-tests.md (updated)",
          "is_bot": false,
          "headline": "feat: Implement US-6.12 - Integration Tests for SDK Public API",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T03:41:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5d1ad4e1f43359b2bbb4679b6cf2aec97e789674",
          "body": "Implemented comprehensive FindSuitableMonsters method for SDK public API following TDD approach:\n\n**Type Updates (types.go):**\n- Updated SuitabilityCriteria: renamed fields to match spec (MinLevel→LevelMin, MaxLevel→LevelMax, Limit→MaxResults)\n- Added SortBy field for sorting control\n- Updated Suita\n[…]\nl)\n- Multi-level sorting for deterministic ordering\n- Boss exclusion for farming recommendations\n- Default values applied before validation\n\nSee US-6.08-IMPLEMENTATION-SUMMARY.md for complete details.",
          "is_bot": false,
          "headline": "Implement US-6.08: Find Suitable Monsters Method",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-24T03:10:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "98f901fb6e302f466996334b6fd6961e817d5b56",
          "body": "- Document complete validation of all 12 user stories\n- Record build error resolution process\n- Document test results (453 test cases, 90.4% coverage)\n- Document performance results (1000x faster than targets)\n- Record integration testing and validation scenarios\n- Document all git commits and file changes\n- Include success criteria verification\n- Mark Epic 2 as COMPLETE and production-ready",
          "is_bot": false,
          "headline": "docs: add comprehensive Epic 2 validation worklog",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-23T18:29:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc86571dedc4f5435a8c2faea1dd9767d96fccdf",
          "body": "- Add LoadDatabase convenience function to database package\n- Implement GetMonster and GetItem methods with multi-ID lookup\n- Implement SearchMonsters and SearchItems methods\n- Add MonsterSearchQuery and ItemSearchQuery types\n- Add MonsterInfo type alias for backward compatibility\n- Fix field name m\n[…]\nng\n- Convert Example functions to Test functions in test package\n- Add strings import to database.go\n\nAll Epic 2 formula tests passing (53 tests)\nAll database tests passing\nProject builds successfully",
          "is_bot": false,
          "headline": "fix: resolve build errors in iroanalyzer and test packages",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-23T18:25:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "03b1b4142bb57f09072bba8aeeb4329ba7fca1ca",
          "body": "- Create comprehensive validation test suite with real game scenarios\n- Validate defensive stats (DEF/MDEF) across 5 character builds\n- Validate accuracy stats (HIT/FLEE/CRIT) across 5 character builds\n- Validate element modifiers with multiple combinations\n- Validate size modifiers across all weapo\n[…]\nl tests pass within ±2% tolerance\n- Tests validate internal formula consistency\n\nTests: 44 validation scenarios, all passing\nCoverage: Defensive, accuracy, element, size, hit rate, and damage formulas",
          "is_bot": false,
          "headline": "feat: implement US-2.11 formula validation tests",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-23T18:14:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9c2b84c97dc41bc2822c16a2f81c6d3f5dd069bb",
          "body": "- Implement CalculateHitRate with base 80% + (HIT-FLEE)/100 formula\n- Apply floor at 5% and cap at 95% for balanced gameplay\n- Add 37 comprehensive test cases covering all scenarios\n- Include formula validation, symmetry, monotonicity tests\n- Add edge case handling for zero/negative stats\n- Achieve \n[…]\n0ns target)\n- Zero allocations in all benchmark scenarios\n- Remove placeholder from iro.go\n\nTests: 37 test cases, all passing\nBenchmarks: <1ns, 0 allocs/op\nCoverage: 100% for hitrate.go, 90.4% overall",
          "is_bot": false,
          "headline": "feat: implement US-2.10 hit rate calculation with TDD",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-23T18:09:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ec4baff8b0664657fe837f48f2c61d5baa38a4ac",
          "body": "…calculations)\n\nImplement three formula calculation stories following TDD:\n\nUS-2.3: DEF/MDEF Calculation (iRO Renewal)\n- CalculateDEF: Returns (hardDEF, softDEF) tuple\n  - Hard DEF from equipment (percentage reduction)\n  - Soft DEF = VIT + (VIT/2) using integer division\n- CalculateMDEF: Returns (har\n[…]\nargets (<100ns all operations)\n\nTest Results:\n- All 98 test cases PASS\n- Benchmarks: 0.14-0.22ns per operation\n- 0 allocations in all calculations\n- Coverage: 75% (will improve with remaining stories)",
          "is_bot": false,
          "headline": "feat: implement US-2.3, US-2.4, and US-2.5 (DEF/MDEF, HIT/FLEE, CRIT …",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-23T06:55:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "88db22b71d09358f3694f977532a3367338566f4",
          "body": "Expand US-2.6 from 58 to 700+ lines with comprehensive detail:\n\n- Detailed ASPD (Attack Speed) explanation\n- Full vs Simplified formula comparison\n- Why simplified formula is used for MVP (80% accuracy)\n- Base ASPD by weapon type reference table\n- Multiple character build scenarios\n- 20+ comprehensi\n[…]\na\n- Notes on formula complexity and scope decisions\n\nDocuments that simplified formula is MVP and full job-specific\nASPD formula will be implemented in future epic when job\nmechanics are added to SDK.",
          "is_bot": false,
          "headline": "docs: expand US-2.6 ASPD Calculation user story",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-23T06:42:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "424d8a9974a7f5d25260e3944d6930bf32f2b47d",
          "body": "Significantly expand user stories with comprehensive detail:\n\nUS-2.3: DEF/MDEF Calculation (expanded from 225 to 682 lines)\n- Added detailed Renewal defense system explanation\n- Hard DEF vs Soft DEF mechanics\n- Complete damage reduction flow\n- Comprehensive test cases (25+ tests)\n- Integer division \n[…]\nes now include:\n- Detailed context and background\n- iROwiki references\n- Complete implementation guides\n- Comprehensive test suites\n- Performance benchmarks\n- Common pitfalls\n- Related stories linkage",
          "is_bot": false,
          "headline": "docs: expand Epic 2 user stories US-2.3 through US-2.5",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-23T06:40:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3061dda85c1afdf5e5dbb5b675f0525463c4410b",
          "body": "- Create 12 detailed user stories (US-2.1 to US-2.12)\n- US-2.1: FormulaProvider Interface (20KB, most detailed)\n- US-2.2: Base ATK Calculation (iRO Renewal)\n- US-2.3: DEF/MDEF Calculation\n- US-2.4: HIT/FLEE Calculation\n- US-2.5: CRIT Calculation\n- US-2.6: ASPD Calculation\n- US-2.7: Element Modifier \n[…]\nper calculation)\n- Validation against iROwiki and test fixtures\n- Common pitfalls and best practices\n\nTotal effort: ~10 days across 4 implementation phases\nReady for iRO Renewal formula implementation",
          "is_bot": false,
          "headline": "docs: add Epic 2 user stories for Formula Abstraction Layer",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-23T06:36:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e1a47451f04a9351853eed59f172a7f7f29c6365",
          "body": "- Rename all design docs to dated format (2026-01-22_NN_*.md)\n- Update references in README.md and README-LLM.md\n- Maintains chronological ordering and consistency with worklog naming",
          "is_bot": false,
          "headline": "Rename design documents to follow YYYY-MM-DD_NN naming convention",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-23T00:00:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96f9bf2e5f0f5a4177a53bb36c54f0d1335b2c19",
          "body": null,
          "is_bot": false,
          "headline": "Update README with comprehensive project overview and documentation",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-22T23:58:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5959fbdef27bb82e98ea7836e362ba7f0e394df",
          "body": "- Create docs/ structure following TinyRSVP pattern\n  - docs/design/ for design documents (YYYY-MM-DD_NN_*.md naming)\n  - docs/worklog/ for work logs (YYYY-MM-DD_NN_*.md naming)\n  - docs/user-stories/ for epics and stories\n  - docs/references/iro-calc/ for archived original implementation\n- Move ori\n[…]\nsting design docs to docs/design/\n- Create README.md files for each documentation folder\n- Update README-LLM.md with new structure and conventions\n- Add first worklog entry documenting the restructure",
          "is_bot": false,
          "headline": "Restructure repository with organized docs, worklog, and user-stories",
          "author_name": "Lenaxia",
          "author_login": "lenaxia",
          "committed_at": "2026-01-22T23:57:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "64e3e9118909100ba7066c0dd9a7a1aa32310d53",
          "body": null,
          "is_bot": false,
          "headline": "Fix typo.",
          "author_name": "ProGM",
          "author_login": "ProGM",
          "committed_at": "2016-03-01T19:23:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f342776e5a84738187e31c5080b10e18ebb2500d",
          "body": null,
          "is_bot": false,
          "headline": "Implementing rathena script parser and a few test items.",
          "author_name": "ProGM",
          "author_login": "ProGM",
          "committed_at": "2016-03-01T19:21:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a432a8eacb55934e5bc25eda82d110e361dbd754",
          "body": null,
          "is_bot": false,
          "headline": "Implemented an raw rathena script parser. First steps for #4",
          "author_name": "ProGM",
          "author_login": "ProGM",
          "committed_at": "2016-02-22T10:06:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8d9777b8d56f99d37af570a1d340a984d0a632e",
          "body": null,
          "is_bot": false,
          "headline": "Refactored fixed cast time calculation. Fixes #3.",
          "author_name": "ProGM",
          "author_login": "ProGM",
          "committed_at": "2016-02-21T20:57:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a86e30efc67f99c9bb20547ebfbe9b93f5f7ad5d",
          "body": null,
          "is_bot": false,
          "headline": "Removed analytics tags, fixed #1 .",
          "author_name": "ProGM",
          "author_login": "ProGM",
          "committed_at": "2016-02-18T22:53:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "33062117ee2e23669e660b2df055bb788d214312",
          "body": null,
          "is_bot": false,
          "headline": "Renamed files.",
          "author_name": "ProGM",
          "author_login": "ProGM",
          "committed_at": "2016-02-18T15:45:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e0f0737e6a1e695cb6713b26570cda42b910b63",
          "body": null,
          "is_bot": false,
          "headline": "Fix WK + KK cards combo.",
          "author_name": "ProGM",
          "author_login": "ProGM",
          "committed_at": "2016-02-18T15:42:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a6d2cc6b2bdf041c153b22e8426645ad09f3ec5",
          "body": null,
          "is_bot": false,
          "headline": "Fixed dragon breath formula.",
          "author_name": "ProGM",
          "author_login": "ProGM",
          "committed_at": "2016-02-18T13:17:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b5b23062e81b1945d0954889ab17b928a52e616",
          "body": null,
          "is_bot": false,
          "headline": "Added glove of sura effect.",
          "author_name": "ProGM",
          "author_login": "ProGM",
          "committed_at": "2016-02-18T12:31:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85cc69e747b789279c2ddb782ad3b28a6558bf18",
          "body": null,
          "is_bot": false,
          "headline": "Forse version (with temporal boots, glove of sura, WK+KK cards).",
          "author_name": "ProGM",
          "author_login": "ProGM",
          "committed_at": "2016-02-18T11:39:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 3,
      "commits_last_year": 67,
      "latest_release_at": "2026-07-20T18:40:42Z",
      "latest_release_tag": "v1.3.0",
      "releases_from_tags": false,
      "days_since_last_push": 9,
      "active_weeks_last_year": 4,
      "days_since_latest_release": 9,
      "mean_days_between_releases": 88.3
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": false,
      "has_contributing": true,
      "health_percentage": 28,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/lenaxia/ragnaDataSDK",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/lenaxia/ragnaDataSDK",
          "is_deprecated": false,
          "latest_version": "v1.3.0",
          "repository_url": "https://github.com/lenaxia/ragnaDataSDK",
          "versions_count": 5,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-20T18:39:16Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 9
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 0,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_stars": 0,
        "collected_at": null
      },
      "open_issues_and_prs": 3
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "go.mod"
      ],
      "largest_source_bytes": 42687,
      "source_files_sampled": 128,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "go.mod"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "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": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "go"
      ],
      "dependencies": [
        {
          "name": "github.com/chzyer/readline",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.5.1"
        },
        {
          "name": "github.com/fatih/color",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.19.0"
        },
        {
          "name": "github.com/spf13/cobra",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.10.2"
        },
        {
          "name": "github.com/spf13/viper",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.21.0"
        },
        {
          "name": "github.com/stretchr/testify",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.11.1"
        },
        {
          "name": "gopkg.in/yaml.v3",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.0.1"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 3,
        "merged_prs": 1,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "lenaxia",
          "commits": 65,
          "avatar_url": "https://avatars.githubusercontent.com/u/6321838?v=4"
        },
        {
          "type": "User",
          "login": "ProGM",
          "commits": 10,
          "avatar_url": "https://avatars.githubusercontent.com/u/5167659?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.867
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "dependabot-auto-merge.yml",
        "release-multi-db.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".golangci.yml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 8,
            "reason": "binaries present in source code",
            "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": 0,
            "reason": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
            "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/29 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 4 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 0,
            "reason": "license file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
            "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": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 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": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 8,
            "reason": "2 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "681ce3d9867494c15c862e2426b954095d284ff6",
        "ran_at": "2026-07-30T05:30:20Z",
        "aggregate_score": 3.2,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-27T16:05:39Z",
      "oldest_open_prs": [
        {
          "number": 1,
          "created_at": "2026-01-25T02:55:28Z",
          "last_comment_at": "2026-01-25T06:08:23Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 2,
          "created_at": "2026-01-25T02:55:32Z",
          "last_comment_at": "2026-01-25T06:08:16Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 3,
          "created_at": "2026-01-25T02:55:36Z",
          "last_comment_at": "2026-01-28T01:46:24Z",
          "last_comment_author": "github-actions"
        }
      ],
      "last_merged_pr_at": "2026-03-23T16:45:49Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/lenaxia/ragnaDataSDK",
    "host": "github.com",
    "name": "ragnaDataSDK",
    "owner": "lenaxia"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 50,
      "inputs": {
        "security": 32,
        "vitality": 62,
        "community": 22,
        "governance": 59,
        "engineering": 64
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 62,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "at_risk",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 48,
            "inputs": {
              "commits_last_year": 67,
              "human_commit_share": 0.987,
              "days_since_last_push": 9,
              "active_weeks_last_year": 4
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 9 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 9
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "4/52 weeks with commits",
                "points": 2.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "67 commits in the last year",
                "points": 16.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 67
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "releases_count": 3,
              "latest_release_tag": "v1.3.0",
              "releases_from_tags": false,
              "days_since_latest_release": 9,
              "mean_days_between_releases": 88.3
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "3 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 9 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 9
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~88.3 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 88.3
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "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": 9,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 9 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 9
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 22,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 0,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "0 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "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": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 45,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 59,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.867
            },
            "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 87% of commits",
                "points": 3,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 87
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 4 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "merged_prs": 1,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1/1 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1,
                      "decided": 1
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/29 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": 53,
            "inputs": {
              "followers": 10,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "lenaxia",
              "public_repos": 82,
              "account_age_days": 4588
            },
            "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": "10 followers of lenaxia",
                "points": 7.5,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 10,
                      "login": "lenaxia"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "82 public repos, account ~12 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 82
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 12
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/lenaxia/ragnaDataSDK"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 9
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 9 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 9
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "5 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "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": 64,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "4 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "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": ".golangci.yml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "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": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": false
            },
            "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 32,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 32,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 3.2
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6,
                "status": "partial",
                "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": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 4 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 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": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "2 existing vulnerabilities detected",
                "points": 6,
                "status": "partial",
                "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": "moderate",
        "name": "AI Readiness",
        "value": 65,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.895,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "68 of 76 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 68,
                      "sampled": 76
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                "Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "go.mod"
              ],
              "dependency_bot_commit_share": 0.013
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".golangci.yml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Go (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 77",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 77
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "1 of the last 77 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 1,
                      "sampled": 77
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 42687,
              "source_files_sampled": 128,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Go (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/128 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 128,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "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": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "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": [
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-30T05:30:27.354830Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/l/lenaxia/ragnaDataSDK.svg",
  "full_name": "lenaxia/ragnaDataSDK",
  "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 StatistikenGo.