公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-30 05:30 UTC

lenaxia / ragnaDataSDK

Go未检测到许可证★ 0 星标⑂ 0 复刻始于 2026年1月在 GitHub 上查看 ↗

lenaxia/ragnaDataSDK 的健康指数为 100 分中的 50 分,处于「中等」区间。 其得分最高的类别是AI Readiness(65/100),最低的是Community & Adoption(22/100)。 最近一次更新在 9 天前。 近期的大部分工作由 1 位贡献者完成。

50
总分 / 100
中等

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

50
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

lenaxia个人账户
10 关注者82 个公开仓库始于 2014年1月

该仓库由个人账户拥有。相较于组织支持的项目,单一所有者项目的延续性风险更高。

软件包生态系统

注册表软件包版本月下载量版本数最近发布
Gogithub.com/lenaxia/ragnaDataSDKv1.3.0-59 天前

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

62中等 · 占总体的 22%

开发活跃度

48存在风险
评分方式
28.8/36推送新近度 — 最近一次推送于 9 天前
2.8/36提交节奏 — 52 周中有 4 周有提交
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

发布纪律

83良好
评分方式
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/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
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议题解决 — 没有议题或无数据
38.2/38.3PR 接受 — 已裁定的 PR 中 1/1 已合并
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
已排除计分(无数据或不适用):议题解决。 其余权重已重新归一化。
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
7.5/25所有者影响力 — lenaxia 有 10 位关注者
25/25既往记录 — 82 个公开仓库,账户约 12 年
所用输入
followers10
owner_typeUser
is_verified
owner_loginlenaxia
public_repos82
account_age_days4,588
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。
评分方式
25/25已发布且可解析 — go 上有 1 个软件包
35/35发布时效 — 最近一次发布于 9 天前
20/20版本历史 — 5 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesgithub.com/lenaxia/ragnaDataSDK
ecosystemsgo
any_deprecated
min_days_since_publish9

工程质量

基础的工程与文档实践是否到位?

64中等 · 占总体的 20%

工程实践

64中等
评分方式
24/24CI 工作流 — 4 个工作流
24/24存在测试
16/16Linter 配置 — .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。 其余权重已重新归一化。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

65中等 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 76 次人类提交中有 68 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.895
agent_instruction_files
agent_instruction_max_bytes
评分方式
18/18一条命令的引导启动 — Makefile
22/22自动化测试
11/11Lint / 格式化配置 — .golangci.yml
11/11静态类型检查 — Go(静态类型)
10/10可复现环境 — lockfile
0/10已体现的代理实践 — 最近 77 次提交中没有代理编写的提交
8/8自动化维护 — 最近 77 次提交中有 1 次为自动依赖更新
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可控的文件大小 — 采样的 128 个源文件中有 0 个超过 60KB
所用输入
primary_languageGo
largest_source_bytes42,687
source_files_sampled128
oversized_source_files0

机器可读接口

40存在风险
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
0/20MCP 服务器
40/40可运行示例 — examples
所用输入
example_dirsexamples
has_mcp_signal
api_schema_files

关键数据

0GitHub 星标
2贡献者
67最近 12 个月提交数
9距最近推送天数
3发布版本数
1巴士系数(bus factor)
0开放议题
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.