Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.13.0 · 2026-07-30 05:30 UTC

lenaxia / ragnaDataSDK

GoЛіцензію не виявлено★ 0 зірок⑂ 0 форківз січ. 2026 р.Переглянути на GitHub ↗

lenaxia/ragnaDataSDK має індекс здоров’я 50 зі 100, що відповідає смузі «Помірний». Найвищий показник — AI Readiness (65/100), найнижчий — Community & Adoption (22/100). Останнє оновлення було 9 днів тому. Більшість нещодавньої роботи виконує один учасник.

50
загалом / 100
Помірний

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

50
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

lenaxiaОсобистий обліковий запис
10 підписників82 публічні репозиторіїз січ. 2014 р.

Цей репозиторій належить особистому обліковому запису. Проєкт з єдиним власником несе більший ризик безперервності, ніж підтримуваний організацією.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікація
Gogithub.com/lenaxia/ragnaDataSDKv1.3.0-59 днів тому

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

62Помірний · 22% загального індексу

Активність розробки

48У зоні ризику
Як обчислюється оцінка
28.8/36Свіжість push — останній push 9 дн. тому
2.8/36Ритм комітів — 4/52 тижнів із комітами
16.5/18Обсяг комітів — 67 комітів за останній рік
0/10OpenSSF Scorecard: Maintained — 1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Використані вхідні дані
commits_last_year67
human_commit_share0,987
days_since_last_push9
active_weeks_last_year4
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 3 релізів
36/36Свіжість релізів — останній реліз 9 дн. тому
19.8/27Ритм релізів — реліз кожні ~88,3 дн.
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Використані вхідні дані
releases_count3
latest_release_tagv1.3.0
releases_from_tagsні
days_since_latest_release9
mean_days_between_releases88,3

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

22Критичний · 18% загального індексу
Як обчислюється оцінка
0/60Зірки — 0 зірок
0/25Форки — 0 форків
0/15Спостерігачі — 0 спостерігачів
Використані вхідні дані
forks0
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

Здоров'я спільноти

45У зоні ризику
Як обчислюється оцінка
22.5/22.5README
0/22.5Ліцензія — файлу ліцензії не виявлено
18/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseні
has_contributingтак
has_issue_templateні
has_code_of_conductні
has_pull_request_templateні

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

59Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
3/22.5Розподіл комітів — головний контриб’ютор — автор 87% комітів
2.7/13.5Широта контриб’юторів — 2 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 4 contributing companies or organizations
Використані вхідні дані
bus_factor1
contributors_sampled2
top_contributor_share0,867
Як обчислюється оцінка
0/46.8Вирішення issue — немає issue або даних
38.2/38.3Прийняття PR — злито 1/1 вирішених PR
0/15OpenSSF Scorecard: Code-Review — Found 0/29 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs1
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Виключено з оцінювання (немає даних або не застосовно): Вирішення issue. Залишкові ваги перенормовано.
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
7.5/25Охоплення власника — 10 підписників у lenaxia
25/25Послужний список — 82 публічних репозиторіїв, вік облікового запису ~12 р.
Використані вхідні дані
followers10
owner_typeUser
is_verified
owner_loginlenaxia
public_repos82
account_age_days4 588
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

Супровід пакетів

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у go
35/35Свіжість публікацій — остання публікація 9 дн. тому
20/20Історія версій — 5 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesgithub.com/lenaxia/ragnaDataSDK
ecosystemsgo
any_deprecatedні
min_days_since_publish9

Інженерна якість

Чи наявні базові інженерні практики та документація?

64Помірний · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 4 процес(ів) CI
24/24Наявні тести
16/16Конфігурація лінтера — .golangci.yml
0/9.6Pre-commit-хуки
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 1 merged PRs checked by a CI test -- score normalized to 0
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configтак
has_precommit_configні

Документація

65Помірний
Як обчислюється оцінка
30/30README
25/25Каталог документації
0/15Сайт документації / домашня сторінка
0/10Опис репозиторію
0/10Теми
10/10Wiki
Використані вхідні дані
topics
has_wikiтак
homepage
has_readmeтак
has_docs_dirтак
has_descriptionні

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

32У зоні ризику · 16% загального індексу

Стан безпеки

32У зоні ризику
Як обчислюється оцінка
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.5Ліцензія — 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 — немає даних
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
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3,2
Виключено з оцінювання (немає даних або не застосовно): packaging. Залишкові ваги перенормовано.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

65Помірний · 0% загального індексу
Як обчислюється оцінка
0/45Інструкції для агентів — немає CLAUDE.md / AGENTS.md / правил редактора
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 68 з 76 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,895
agent_instruction_files
agent_instruction_max_bytes
Як обчислюється оцінка
18/18Розгортання однією командою — Makefile
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — .golangci.yml
11/11Статична перевірка типів — Go (статично типізована)
10/10Відтворюване середовище — lockfile
0/10Підтверджена практика роботи з агентами — серед останніх 77 комітів немає створених агентом
8/8Автоматизоване супроводження — 1 з останніх 77 комітів — автоматичні оновлення залежностей
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfilesgo.sum
has_dockerfileні
typed_languageтак
bootstrap_filesMakefile
has_devcontainerні
has_linter_configтак
typecheck_configs
agent_commit_share0
toolchain_manifestsgo.mod
dependency_bot_commit_share0,013
Як обчислюється оцінка
45/45Типізований код — Go (статично типізована)
55/55Керовані розміри файлів — 0/128 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageGo
largest_source_bytes42 687
source_files_sampled128
oversized_source_files0
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — examples
Використані вхідні дані
example_dirsexamples
has_mcp_signalні
api_schema_files

Ключові факти

0зірок GitHub
2контриб'юторів
67комітів за останні 12 місяців
9днів від останнього пушу
3релізів
1бас-фактор
0відкритих issue
Goпакетних екосистем

Попередження щодо збору даних

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

Докладніше

OpenSSF Scorecard 3.2 / 10
3.2сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).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
н/д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
Прямі залежності 6
РеєстрПакетОбмеження версіїМаніфест
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
Усі залежності не зібрано

Не вдалося зібрати розв'язаний набір залежностей для цього звіту: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Звіт у форматі JSON машиночитний
{
  "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
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v1.13.0, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистикаGo.