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

lenaxia / ragnaDataSDK

GoSin licencia detectada★ 0 estrellas⑂ 0 forksdesde ene 2026Ver en GitHub ↗

lenaxia/ragnaDataSDK tiene un índice de salud de 50 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es AI Readiness (65/100) y la más baja, Community & Adoption (22/100). Se actualizó por última vez hace 9 días. Una sola persona concentra la mayor parte del trabajo reciente.

50
global / 100
Moderado

Índice de salud del software

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

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

Perfil de puntuación

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

Titularidad

lenaxiaCuenta personal
10 seguidores82 repositorios públicosdesde ene 2014

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
Gogithub.com/lenaxia/ragnaDataSDKv1.3.0-5hace 9 días

Métricas por categoría

Vitalidad

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

62Moderado · 22% del índice global
Cómo se puntúa
28.8/36Recencia de push — último push hace 9 días
2.8/36Cadencia de commits — 4/52 semanas con commits
16.5/18Volumen de commits — 67 commits en el último año
0/10OpenSSF Scorecard: Maintained — 1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Datos de entrada utilizados
commits_last_year67
human_commit_share0,987
days_since_last_push9
active_weeks_last_year4
Cómo se puntúa
27/27Publica versiones — 3 versiones publicadas
36/36Recencia de las versiones — última versión hace 9 días
19.8/27Cadencia de publicación — una versión cada ~88,3 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count3
latest_release_tagv1.3.0
releases_from_tagsno
days_since_latest_release9
mean_days_between_releases88,3

Comunidad y Adopción

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

22Crítico · 18% del índice global
Cómo se puntúa
0/60Estrellas — 0 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
0/22.5Licencia — no se detectó ningún archivo de licencia
18/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_licenseno
has_contributing
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

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

59Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
3/22.5Distribución de commits — el principal contribuyente firma el 87% de los commits
2.7/13.5Amplitud de contribuyentes — 2 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 4 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled2
top_contributor_share0,867
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
38.2/38.3Aceptación de PR — 1/1 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/29 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs1
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues. Los pesos restantes se han renormalizado.
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
7.5/25Alcance del propietario — 10 seguidores de lenaxia
25/25Trayectoria — 82 repos públicos, cuenta de ~12 años
Datos de entrada utilizados
followers10
owner_typeUser
is_verified
owner_loginlenaxia
public_repos82
account_age_days4588
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en go
35/35Recencia de publicación — última publicación hace 9 días
20/20Historial de versiones — 5 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesgithub.com/lenaxia/ragnaDataSDK
ecosystemsgo
any_deprecatedno
min_days_since_publish9

Calidad de Ingeniería

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

64Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 4 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — .golangci.yml
0/9.6Hooks de pre-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
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
has_precommit_configno

Documentación

65Moderado
Cómo se puntúa
30/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
0/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepage
has_readme
has_docs_dir
has_descriptionno

Seguridad

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

32En riesgo · 16% del índice global
Cómo se puntúa
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.5Licencia — 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 — sin datos
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
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3,2
Excluidos de la puntuación (sin datos o no aplicable): packaging. Los pesos restantes se han renormalizado.

Preparación para IA

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

65Moderado · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 68 de 76 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,895
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
18/18Arranque con un solo comando — Makefile
22/22Pruebas automatizadas
11/11Configuración de lint / formato — .golangci.yml
11/11Verificación estática de tipos — Go (tipado estático)
10/10Entorno reproducible — lockfile
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 77
8/8Mantenimiento automatizado — 1 de los últimos 77 commits son actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilesgo.sum
has_dockerfileno
typed_language
bootstrap_filesMakefile
has_devcontainerno
has_linter_config
typecheck_configs
agent_commit_share0
toolchain_manifestsgo.mod
dependency_bot_commit_share0,013
Cómo se puntúa
45/45Código verificable por tipos — Go (tipado estático)
55/55Tamaños de archivo manejables — 0/128 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageGo
largest_source_bytes42.687
source_files_sampled128
oversized_source_files0
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signalno
api_schema_files

Datos clave

0estrellas de GitHub
2contribuidores
67commits en los últimos 12 meses
9días desde el último push
3versiones publicadas
1factor bus
0issues abiertas
Goecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

OpenSSF Scorecard 3.2 / 10
3.2agregado

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

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

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

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

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

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