Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-25 19:31 UTC

kenshin579 / korea-investment-stock

python wrapper for the KIS

GoMIT★ 0 Sterne⑂ 0 Forksseit Feb. 2025ForkAuf GitHub ansehen ↗

kenshin579/korea-investment-stock erreicht einen Gesundheitsindex von 50 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (84/100) ab, am schwächsten bei Community & Adoption (12/100). Zuletzt vor 6 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

50
gesamt / 100
Mittel

Software-Gesundheitsindex

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

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

Bewertungsprofil

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

Eigentümerschaft

Frank OhPersönliches Konto
61 Follower372 öffentliche Reposseit Feb. 2012NAVER LABS Corp

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

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlicht
Gogithub.com/kenshin579/korea-investment-stockv1.29.0-52vor 6 Tagen

Metriken nach Kategorie

Vitalität

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

84Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 6 Tagen
10.4/36Commit-Rhythmus — 15/52 Wochen mit Commits
18/18Commit-Volumen — 485 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year485
human_commit_share1
days_since_last_push6
active_weeks_last_year15

Release-Disziplin

100Exzellent
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 45 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 6 Tagen
27/27Release-Rhythmus — ein Release etwa alle 7,9 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count45
latest_release_tagv1.29.0
releases_from_tagsnein
days_since_latest_release6
mean_days_between_releases7,9
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

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

12Kritisch · 18 % des Gesamtindex
Wie die Bewertung erfolgt
0/60Stars — 0 Stars
0/25Forks — 0 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks0
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
0/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmenein
has_licensenein
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein

Nachhaltigkeit & Governance

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

64Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
3.1/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 86 % der Commits
10.8/13.5Breite der Beitragenden — 8 Beitragende
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Verwendete Eingangsdaten
bus_factor1
contributors_sampled8
top_contributor_share0,863
Wie die Bewertung erfolgt
45.5/46.8Issue-Lösungsquote — 97 % der Issues geschlossen
37.9/38.3PR-Annahme — 122/123 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/13 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs122
open_issues1
closed_issues37
issue_closed_ratio0,974
closed_unmerged_prs1
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
12.9/25Reichweite des Inhabers — 61 Follower von kenshin579
25/25Kontohistorie — 372 öffentliche Repos, Kontoalter ca. 14 Jahre
Verwendete Eingangsdaten
followers61
owner_typeUser
is_verified
owner_loginkenshin579
public_repos372
account_age_days5.262
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf go
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 6 Tagen
20/20Versionshistorie — 52 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesgithub.com/kenshin579/korea-investment-stock
ecosystemsgo
any_deprecatednein
min_days_since_publish6

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

43Gefährdet · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 2 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 13 merged PRs checked by a CI test -- score normalized to 0
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein

Dokumentation

35Gefährdet
Wie die Bewertung erfolgt
0/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
0/10Repository-Beschreibung
0/10Topics
10/10Wiki
Verwendete Eingangsdaten
topics
has_wikija
homepage
has_readmenein
has_docs_dirja
has_descriptionnein

Sicherheit

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

33Gefährdet · 16 % des Gesamtindex

Sicherheitslage

33Gefährdet
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — keine Daten
0/2.5CI-Tests — 0 out of 13 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/13 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — keine Daten
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 11 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): branch_protection, packaging, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

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

73Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 79 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,79
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes8.174
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — go.mod (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — Go (statisch typisiert)
10/10Reproduzierbare Umgebung — lockfile
10/10Belegte Agentenpraxis — 83 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilesgo.sum
has_dockerfilenein
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0,83
toolchain_manifestsgo.mod
dependency_bot_commit_share0
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — Go (statisch typisiert)
54.7/55Handhabbare Dateigrößen — 1/204 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageGo
largest_source_bytes106.698
source_files_sampled204
oversized_source_files1
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalnein
api_schema_files

Eckdaten

0GitHub-Sterne
8Mitwirkende
485Commits, letzte 12 Monate
6Tage seit letztem Push
45Releases
1Bus-Faktor
1offene Issues
GoPaket-Ökosysteme

Warnungen zur Datenerhebung

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

Weitere Details

OpenSSF Scorecard 3.3 / 10
3.3Gesamtwert

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

10Binary-Artifactsno binaries found in the repo
k. A.Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
0CI-Tests0 out of 13 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/13 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
k. A.Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities11 existing vulnerabilities detected
Direkte Abhängigkeiten 10
RegistryPaketVersionsvorgabeManifest
Gogithub.com/alicebob/miniredis/v2v2.37.0go.mod
Gogithub.com/coder/websocketv1.8.14go.mod
Gogithub.com/go-resty/resty/v2v2.17.2go.mod
Gogithub.com/jarcoal/httpmockv1.4.1go.mod
Gogithub.com/redis/go-redis/v9v9.19.0go.mod
Gogithub.com/shopspring/decimalv1.4.0go.mod
Gogithub.com/stretchr/testifyv1.11.1go.mod
Gogolang.org/x/syncv0.20.0go.mod
Gogolang.org/x/textv0.36.0go.mod
Gogopkg.in/yaml.v3v3.0.1go.mod
Alle Abhängigkeiten nicht erhoben

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

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": true,
      "size_kb": 2736,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Go": 1242469,
        "Shell": 2603
      },
      "pushed_at": "2026-07-19T04:06:32Z",
      "created_at": "2025-02-15T08:42:56Z",
      "owner_type": "User",
      "updated_at": "2026-07-19T04:06:06Z",
      "description": "python wrapper for the KIS ",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": "advenoh.pe.kr",
      "name": "Frank Oh",
      "type": "User",
      "login": "kenshin579",
      "company": "NAVER LABS Corp",
      "location": "South Korea",
      "followers": 61,
      "avatar_url": "https://avatars.githubusercontent.com/u/1477631?v=4",
      "created_at": "2012-02-27T07:42:23Z",
      "is_verified": null,
      "public_repos": 372,
      "account_age_days": 5262
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.29.0",
          "kind": "minor",
          "published_at": "2026-07-19T04:06:33Z"
        },
        {
          "tag": "v1.28.0",
          "kind": "minor",
          "published_at": "2026-06-13T07:47:00Z"
        },
        {
          "tag": "v1.27.0",
          "kind": "minor",
          "published_at": "2026-05-25T13:29:06Z"
        },
        {
          "tag": "v1.26.0",
          "kind": "minor",
          "published_at": "2026-05-09T14:25:52Z"
        },
        {
          "tag": "v1.25.0",
          "kind": "minor",
          "published_at": "2026-05-09T14:10:21Z"
        },
        {
          "tag": "v1.24.0",
          "kind": "minor",
          "published_at": "2026-05-09T13:49:36Z"
        },
        {
          "tag": "v1.23.0",
          "kind": "minor",
          "published_at": "2026-05-09T13:03:39Z"
        },
        {
          "tag": "v1.22.0",
          "kind": "minor",
          "published_at": "2026-05-09T12:34:49Z"
        },
        {
          "tag": "v1.21.0",
          "kind": "minor",
          "published_at": "2026-05-09T11:44:38Z"
        },
        {
          "tag": "v1.20.0",
          "kind": "minor",
          "published_at": "2026-05-09T08:27:08Z"
        },
        {
          "tag": "v1.19.0",
          "kind": "minor",
          "published_at": "2026-05-09T06:53:24Z"
        },
        {
          "tag": "v1.18.0",
          "kind": "minor",
          "published_at": "2026-05-09T04:08:24Z"
        },
        {
          "tag": "v1.17.0",
          "kind": "minor",
          "published_at": "2026-05-08T09:14:49Z"
        },
        {
          "tag": "v1.16.0",
          "kind": "minor",
          "published_at": "2026-05-07T22:35:56Z"
        },
        {
          "tag": "v1.15.0",
          "kind": "minor",
          "published_at": "2026-05-07T20:44:22Z"
        },
        {
          "tag": "v1.14.0",
          "kind": "minor",
          "published_at": "2026-05-07T13:23:51Z"
        },
        {
          "tag": "v1.13.0",
          "kind": "minor",
          "published_at": "2026-05-07T11:45:43Z"
        },
        {
          "tag": "v1.12.0",
          "kind": "minor",
          "published_at": "2026-05-07T10:56:39Z"
        },
        {
          "tag": "v1.11.0",
          "kind": "minor",
          "published_at": "2026-05-06T17:40:50Z"
        },
        {
          "tag": "v1.10.0",
          "kind": "minor",
          "published_at": "2026-05-06T07:01:26Z"
        },
        {
          "tag": "v1.9.0",
          "kind": "minor",
          "published_at": "2026-05-06T01:34:42Z"
        },
        {
          "tag": "v1.8.0",
          "kind": "minor",
          "published_at": "2026-05-06T01:07:34Z"
        },
        {
          "tag": "v1.7.0",
          "kind": "minor",
          "published_at": "2026-05-05T12:16:59Z"
        },
        {
          "tag": "v1.6.0",
          "kind": "minor",
          "published_at": "2026-05-05T10:10:39Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2026-05-05T09:32:35Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2026-05-05T04:55:02Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2026-05-05T00:28:42Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2026-05-04T23:19:06Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-05-04T13:09:14Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-05-04T08:39:35Z"
        },
        {
          "tag": "v0.18.0",
          "kind": "minor",
          "published_at": "2026-02-15T00:07:15Z"
        },
        {
          "tag": "v0.16.1",
          "kind": "patch",
          "published_at": "2025-12-22T08:00:53Z"
        },
        {
          "tag": "v0.15.0",
          "kind": "minor",
          "published_at": "2025-12-13T08:04:17Z"
        },
        {
          "tag": "v0.13.1",
          "kind": "patch",
          "published_at": "2025-12-13T04:06:57Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2025-12-13T03:50:03Z"
        },
        {
          "tag": "v0.10.2",
          "kind": "patch",
          "published_at": "2025-12-06T14:53:27Z"
        },
        {
          "tag": "v0.10.1",
          "kind": "patch",
          "published_at": "2025-12-06T14:47:52Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2025-12-06T14:23:59Z"
        },
        {
          "tag": "v0.9.1",
          "kind": "patch",
          "published_at": "2025-12-06T11:03:25Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2025-12-06T08:17:22Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2025-12-04T00:32:48Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2025-11-29T23:36:47Z"
        },
        {
          "tag": "v0.6.2",
          "kind": "patch",
          "published_at": "2025-11-29T22:50:47Z"
        },
        {
          "tag": "v0.6.1",
          "kind": "patch",
          "published_at": "2025-11-07T16:36:33Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2025-11-07T15:41:11Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "7bca3253b10e72c0e5088bf3f695a46873e76074",
          "body": "* fix: KIS 매매동향 빈 문자열 숫자 필드 관용 파싱\n\n무거래/거래정지 종목에서 KIS 가 가격·수량 필드를 \"\" 로 내려주면\nshopspring/decimal 및 ,string 정수 파싱이 실패해 응답 전체가 버려지던 문제.\ninvestor/program 리프 구조체에 관용 UnmarshalJSON 을 붙여 \"\"/null 숫자를 0 으로\n파싱(필드 타입 불변, 문자열 필드 보존).\n\n* perf: 빈 문자열 없는 응답은 map 왕복 생략 + flat-fields 주석",
          "is_bot": false,
          "headline": "fix: KIS 매매동향 빈 문자열 숫자 필드 관용 파싱 (#161)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-07-19T04:06:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba159c3d1d1440bd5d5809e73395c819ee4aa745",
          "body": "문제: KIS 토큰 캐시가 오염/만료되면 모든 API 호출이 HTTP 500(EGW00121\n\"유효하지 않은 token\")을 받고 send() 가 이를 일시적 5xx 로 오인해 종목마다\n3회씩 헛재시도 → 사실상 무한 retry 후 실패.\n\nFix #1 — KOREA_INVESTMENT_TOKEN_FILE 배선\n- from_env 가 cfg.TokenFile 을 무시하고 항상 기본 경로(~/.cache/kis/token.json)만\n  사용하던 회귀 수정. storageFromConfig() 헬퍼로 redis/file/기본 분기를 \n[…]\nFileStorage 주입).\n\n테스트: 신규 TestClient_Do_InvalidTokenHTTP500AutoRefresh,\nTestStorageFromConfig_* 추가. go build/vet/test ./... 전체 통과.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: 토큰 파일 env 배선 + 무효 토큰(EGW00121) 자동 refresh (#160)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-06-13T07:46:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6eb77fa430e04405f3c6c55ed31ec68f4491f41f",
          "body": "* chore: opendart 릴리스 자동화 스크립트 이식 (scripts/release.sh)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n* fix: 국내 손익계산서/대차대조표 금액 decimal 파싱 (int64,string → decimal.Decimal)\n\nKIS 가 sale_account 등을 4964.00(소수점 bare number)로 내려줘 int64,string 파싱 실패 → 502.\nfixture 를 실제 형식으로 교정하고 16개 필드를 decimal.Decimal 로 변경.\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: 국내 손익계산서/대차대조표 금액 decimal 파싱 + 릴리스 스크립트 (#159)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-25T13:28:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1b81ac8c7307d3e3ca93cbb675fb5693315c841b",
          "body": "* docs: 해외 응답 부호(+) float 파싱 버그 수정 설계 추가\n\n해외 KIS 응답의 \"+1.26\" 형식 등락 필드가 float64+`,string` 태그로\n파싱되지 못해(JSON number 는 leading + 금지) 해외 quote/chart 전반이\n깨지는 버그의 근본 원인 분석 및 kistypes.Float 도입 설계.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\n\n* docs: 해외 부호 float 파싱 수정 구현 계획서 추가\n\nkis\n[…]\n파싱\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\n\n* docs: CHANGELOG v1.27.0 (해외 부호 float 파싱 수정)\n\n---------\n\nCo-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: 해외 응답 부호(+) float 파싱 버그 수정 (v1.27.0) (#158)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-23T08:23:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5fc8526b5e9e88949b98efd5b0c2fc6ef70f0243",
          "body": "* [docs] Phase 11.7 — schemas + 2 fixtures (해외선물옵션 실시간)\n\nHDFFF020 체결가 25 fields, HDFFF010 호가 35 fields 확정.\n그릭스 미포함, 선물/옵션 통합 EP, Endpoint 동일 (ws://ops.koreainvestment.com:21000).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n* [feat] Phase 11.7 — 해외선물옵션 실시간 2 EP (events + decoders + cl\n[…]\nket Phase 11.7 section\n\n누적 150 REST + 36 WS = 186 endpoints.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 11.7 — 해외선물옵션 실시간 시세 2 EP (v1.26.0) (#157)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T14:25:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e7d2d4818a1a94026a6f14edb66626a4e01feb0c",
          "body": "* [docs] Phase 11.6 — schemas + 10 fixtures (10 EP, alias 결정)\n\n해외옵션 시세/조회 9 EP + 장운영시간 1 EP = 10 EP REST.\n- overseasfutures/testdata/_schemas_phase11_6.md: 각 EP schema 정확 추출 + Phase 11.5 alias 결정\n- 10 fixtures: inquire_time_optchartprice / search_opt_detail / opt_monthly_ccnl /\n  opt_daily_ccnl / op\n[…]\n해외선물 + 11.6 해외옵션 + 공통)\n\n누적 150 REST + 34 WS = 184 endpoints.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 11.6 — 해외옵션 시세 + 공통 장운영시간 10 EP (v1.25.0) (#156)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T14:10:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a08220a7957a30f2d896f3f06db81c8bca814ebe",
          "body": "* [docs] Phase 11.5 — overseasfutures/testdata/_schemas.md (10 EP) + 10 fixtures\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n* [chore] Phase 11.5 — overseasfutures/ scaffolding (Client, doc, testhelper) + root Client.OverseasFutures\n\n* feat(overseasfutures): EP10/EP9/EP3/EP8 quote 4 \n[…]\n\n- client.go: gofmt 적용\n\n누적 140 REST + 34 WS = 174 endpoints.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 11.5 — 해외선물 시세/조회 10 EP (v1.24.0) (#155)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T13:49:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ea442ccea63f01f3cd7e97b16af9d1930b9dbc55",
          "body": "* [docs] Phase 11.3 — schemas + 6 fixtures (지수/상품선물옵션 분석, alias 결정)\n\n- _schemas_phase11_3.md: 6 EP 정확 field count (IF=50, IFASP=38, IO=58, IOASP=38, CF=50, CFASP=38)\n- alias 결정: CFCNT0==IFCNT0, CFASP0==IFASP0 (field-by-field 동일) → 2 alias\n- IOCNT0 distinct: AVRG_VLTL + DSCS_LRQN_VOL + DYNM 3 fields \n[…]\non (6 EP 표)\n\n누적 130 REST + 34 WS = 164 endpoints.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 11.3 — 지수선물옵션 + 상품선물 실시간 6 EP (v1.23.0) (#154)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T13:03:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "16ba54d3b3f0f3e8baf730e7847f5ca6a7e2caf2",
          "body": "* [docs] Phase 11.2 — schemas + 11 fixtures (11 EP analysis)\n\n국내선물옵션 실시간 11 EP 분석 결과:\n- _schemas_phase11_2.md: 전체 schema reference (EP Matrix, alias 분석, field 매핑, TR_ID 상수, decoder 패턴)\n- 11 caret fixtures: h0mf*/h0eu*/h0zf*/h0zo* (체결/호가/예상체결 각 카테고리)\n\n주요 발견: Phase 9 와 달리 11 EP 모두 Distinct (alias 불가).\n[…]\n11.2 section (11 EP 표)\n\n누적 130 REST + 28 WS = 158 endpoints.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 11.2 — 국내선물옵션 실시간 11 EP (v1.22.0) (#153)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T12:34:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9ea72d63bdac3c715885932944d046f5c59cb5f1",
          "body": "* [docs] Phase 11.1 — 국내선물옵션 시세/조회 design spec (lightweight)\n\n신규 sub-package futures/ 도입. 11 EP REST 시세/조회.\n\n핵심 결정:\n- Sub-package 명: futures/ (bonds/ 패턴 일관)\n- Scope: 11 EP (수수료 EP 포함)\n- 절차: lightweight spec + plan skip + 직접 구현 (Phase 6/7/9 패턴)\n- Out of scope: 실시간 (11.2~11.3), Trading (11.4 HIGH RISK\n[…]\n section 추가\n\n누적 130 REST + 17 WS = 147 endpoints.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 11.1 — 국내선물옵션 시세/조회 9 EP (v1.21.0) (#152)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T11:44:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "288d570e2e2094ddfb6197ae5a2b0ceeac8d6bc1",
          "body": "* [feat] Phase 10 — WebSocket 해외주식 실시간 시세 2 EP\n\n해외주식 실시간 첫 cover. WebSocket 인프라 (Phase 8/9) 그대로 재사용.\n\n신규:\n- websocket/events_phase10.go: OverseasTradeEvent (26 fields), OverseasAskEvent (17 fields)\n- websocket/decode_phase10.go: decodeOverseasTrade/Ask\n- websocket/decode_phase10_test.go: 5 tests (ha\n[…]\nse 10 EP 매핑\n\n누적 121 REST + 17 WS = 138 endpoints.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 10 — WebSocket 해외주식 실시간 시세 2 EP (v1.20.0) (#151)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T08:26:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1c9661b48ae2fd5c7ab99b5f918a3d6b51199f84",
          "body": "* [docs] Phase 9 — schema reference + 10 fixtures + lightweight design spec\n\n10 docs analyzer 결과 기반 schema 확정:\n- 체결가 NXT/통합 (H0NXCNT0/H0UNCNT0): 46 fields, KRX 와 동일 schema (22번 CNTG_CLS_CODE — KRX CCLD_DVSN 의미 동일)\n- 호가 NXT/통합 (H0NXASP0/H0UNASP0): 65 fields = KRX 59 + KMID/NMID 6 (중간가)\n- 예상체결 NXT/통합 \n[…]\n응답 표 직접 검증)\n\n누적 121 REST + 15 WS = 136 endpoints.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Phase 9 — WebSocket NXT/통합 변형 10 EP (v1.19.0) (#150)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T06:53:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d61e8ddad5d58d0d8da317a0bde23ed266f9ae56",
          "body": "[feat] Phase 8 — WebSocket KRX 시세 5 endpoint (v1.18.0)",
          "is_bot": false,
          "headline": "Merge pull request #149 from kenshin579/feat/phase8-websocket-design",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T04:07:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a73b53ee6da220bcb3a29b428a5f3082d44d869b",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[docs] Phase 8 — example + README + CLAUDE + CHANGELOG (v1.18.0)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T04:02:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "166377d4140583bd558debd40d93c173df7a2048",
          "body": "…/pingpong/shutdown)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[test] Phase 8 — integration tests (wsmock e2e: happy/reconnect/error…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:59:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "29bd0d4d4772c657cad6235956f80ba36fc04e68",
          "body": null,
          "is_bot": false,
          "headline": "[chore] Phase 8 — wsmock local KIS WebSocket server",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:55:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17632e162e80304a9f78a0ca53ca3adab0853e23",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] Phase 8 — kis.Client.WS 필드 추가 (websocket.Client 주입)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:54:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cea49aeee6a151818e01a50ef9b5615ba3610646",
          "body": "…dler types)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] Phase 8 — public Client (Run loop + Subscribe + 5 distinct Han…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:53:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3d4d0a0f75a3e8cd351cdef90cf062e7f06309bc",
          "body": null,
          "is_bot": false,
          "headline": "[feat] Phase 8 — ConnectionManager (coder/websocket wrapper)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:41:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3b6087369ada1280e16b04365ea21e865ce0c3c",
          "body": null,
          "is_bot": false,
          "headline": "[feat] Phase 8 — ApprovalKeyManager (POST /oauth2/Approval, TTL 캐시)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:40:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e124aa6af80f82f5c5467a7cb0acd8dba3abb198",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] Phase 8 — Dispatcher (5 distinct handler types + recover)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:39:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d8b1bee13c5a8984d05ae0d1294b616f117abe08",
          "body": "… tolerance)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] Phase 8 — decode_krx (5 distinct decoder, paging + bad numeric…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:37:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f42e3b82f3b9dbabe9537b1e3079c2d0f581d3da",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] Phase 8 — frame parser (realtime/JSON/PINGPONG 분기) + chunkFields",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:14:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5c9f4c7cdc52a9d798b95f59d2bf64d806925f1c",
          "body": null,
          "is_bot": false,
          "headline": "[feat] Phase 8 — ReconnectController (exp backoff, max attempts)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:11:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b39a9e5345160d8b32c510f7392125986f3fc28",
          "body": null,
          "is_bot": false,
          "headline": "[feat] Phase 8 — Subscriber (활성 구독 map, thread-safe)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:10:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c43d963995af663de12ac590b128997ab261b8f",
          "body": "…ExpectTradeEvent / KrxOvernightTradeEvent / KrxOvernightExpectEvent)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] Phase 8 — 5 EP Event struct (KrxTradeEvent / KrxAskEvent / Krx…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:09:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c18c1e2c6349cd5d407631cd222888869f2cede6",
          "body": null,
          "is_bot": false,
          "headline": "[feat] Phase 8 — websocket typed errors + WSServerError",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:06:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f7366a22836fc73d4bc0a04adc8bee355921e8c",
          "body": "5 docs analyzer 결과 + 정정사항:\n- 시간외 체결가 TR_ID: H0STOAC0 → H0STOUP0 (plan 추정 정정)\n- 시간외 예상체결 TR_ID: H0STOAA0 → H0STOAC0 (plan 추정 정정)\n- H0STCNT0 field count: 44 → 46 (HOUR_CLS_CODE/MRKT_TRTM_CLS_CODE/VI_STND_PRC 추가)\n- H0STASP0 field count: 42 → 59 (subagent 가 일부 그룹핑한 결과 정정)\n- 본장 vs 시간외 schema 다름 — Event 5\n[…]\ntdata/h0stasp0_success.txt (59 fields)\n- websocket/testdata/h0stanc0_success.txt (45 fields)\n- websocket/testdata/h0stoup0_success.txt (43 fields)\n- websocket/testdata/h0stoac0_success.txt (43 fields)",
          "is_bot": false,
          "headline": "[chore] Phase 8 — 5 EP schema 추출 + caret fixtures",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T03:05:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8ae1648d72dced95072c49c9c6683d55f3e54f13",
          "body": null,
          "is_bot": false,
          "headline": "[chore] Phase 8 — websocket 패키지 scaffold + coder/websocket dep",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T02:59:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "13e9bd0534dd55545dcf0e142eb5ee851bd7e10d",
          "body": "writing-plans skill 결과. design spec 의 5 섹션을 16 task 로 분해:\n\n- Task 1: Setup (branch, deps, scaffold)\n- Task 2: 5 EP docs analyzer + schema 추출\n- Task 3-4: errors + Event struct\n- Task 5-6: Subscriber + Reconnect (TDD)\n- Task 7-8: frame parser + decode (TDD)\n- Task 9-11: Dispatcher + Approval + Conn (T\n[…]\n-15: wsmock + integration tests\n- Task 16: example + docs + PR\n\nSpec: docs/superpowers/specs/2026-05-09-phase8-websocket-design.md\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[docs] Phase 8 — implementation plan (16 tasks)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T02:10:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f0b89f6c89923341e67c1fbecf59d3b3d900cbda",
          "body": "브레인스토밍 결과 기반 design spec.\n\n- Scope: 인프라 + 국내주식 KRX 시세 5 endpoint (체결가/호가/예상체결/시간외체결가/시간외예상체결)\n- API style: callback handler (OnXxx(handler))\n- Reconnect: 자동 + 구독 자동 복원 (exp backoff)\n- Architecture: Approach A — 신규 top-level websocket/ 패키지\n- WS 라이브러리: coder/websocket\n- 누적 121 REST + 5 WS = 126 endpoints (v1.18.0)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[docs] Phase 8 — WebSocket (Domestic KRX) design spec",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-09T01:47:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e66ca4449841cef16bca9dbec3a13976b1daf2a6",
          "body": "[feat] Phase 7 — 헬퍼 4 메서드 (v1.17.0)",
          "is_bot": false,
          "headline": "Merge pull request #148 from kenshin579/feat/phase7-helpers",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-08T09:14:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "265e0ac5cc6dcd0aa86a395ab0485a9ce35319a4",
          "body": "- Domestic.InquireMarketTime — 국내선물 영업일조회 (HHMCM000002C0)\n- Domestic.InquireCompInterest — 금리 종합 (FHPST07020000) — output1 single + output2 array\n- Domestic.InquireTradedByCompany — 당사매매종목 상위 (FHPST01860000) — 12 fields, 4 hardcoded\n- Domestic.InquireCreditByCompany — 당사 신용가능종목 (FHPST04770000) — 3 fields, 2 hardcoded\n\nEP0 (상품기본조회 CTPF1604R) 는 Phase 1.1 SearchInfo 와 중복으로 제외.\n누적 117 → 121 메서드.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] Phase 7 — 헬퍼 4 메서드 (v1.17.0)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-08T09:02:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "965c3b3eca386a30bdd06b9206f9cac47861c6ca",
          "body": "[feat] Phase 6 — 재무 추가 2 메서드 (v1.16.0)",
          "is_bot": false,
          "headline": "Merge pull request #147 from kenshin579/feat/phase6-financial-extension",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T22:35:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08c07fc3bee4ebcb221990e52c8e414665f03e28",
          "body": "- domestic/financial.go: InquireOtherMajorRatios (FHKST66430500) — 기타주요비율 (EVA/EBITDA/EV-EBITDA)\n- domestic/ranking.go: InquireFinanceRatioRanking (FHPST01750000) — 재무비율 순위 (수익성/안정성/성장성/활동성)\n- testdata 2 fixtures + 테스트 6 (성공 + Quarter + Override + InvalidJSON × 2)\n- examples: domestic_financial / do\n[…]\nd, 페이지네이션 없음 (최대 30 건)\n\n품질 게이트: gofmt/vet/build/race clean, domestic 82.1% / root 86.9% coverage, 10 패키지 모두 통과.\n\n누적 115 → 117 메서드.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] Phase 6 — 재무 추가 2 메서드 (v1.16.0)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T22:34:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dab4334ecc792284e41fc8a764f18674f830902d",
          "body": "Phase 5 — ETF/NAV/관심종목 9 REST methods (v1.15.0)",
          "is_bot": false,
          "headline": "Merge pull request #146 from kenshin579/feat/phase5-etf-watchlist",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T20:43:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f157f8249fa6e96bfe6d2bd3cc8f2823b106094",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[docs] Phase 5 문서 갱신 (v1.15.0)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T14:19:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "746776a5879cc18c91c30198106f470235d390f2",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] examples — domestic_etf_watchlist (Phase 5 9 메서드 시연)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T14:17:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "306e6eb99a6710552f54189d68a5ad06b61b4f7c",
          "body": "…PST01800000)\n\n- output []TopInterestStockItem (13 fields/item)\n- 파라미터 키 모두 lowercase fid_* 형식 (다른 watchlist 메서드와 상이)\n- fid_cond_scr_div_code = \"20180\" 고정 (하드코딩)\n- path: /uapi/domestic-stock/v1/ranking/top-interest-stock\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/watchlist.go — InquireTopInterestStock (관심종목등록 상위, FH…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T14:14:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9bc3fc9e23a2ee5355cfd8b7e37a9edf434a79dc",
          "body": "…HKCM113004C7)\n\n- output2 IntstockGrouplistItem (단일 객체, 6 fields) — output1 필드 없음\n- 응답 구조체 IntstockGrouplist.Output2 의 JSON 태그: \"output2\" (output1 없는 이례적 구조 그대로 반영)\n- USER_ID = HTS 로그인 ID (HTS_ID) 필수. FID_ETC_CLS_CODE 기본값 \"00\"\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/watchlist.go — InquireIntstockGrouplist (관심종목 그룹조회, H…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T14:13:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f581905e09b1065c73fc42d37fa1b96c043f68db",
          "body": "…그룹별 종목조회, HHKCM113004C6)\n\n- output1 IntstockGroupSummary (단일 객체, 2 fields) + output2 []IntstockStocklistItem (10 fields/item)\n- non-FID UPPERCASE 파라미터 (TYPE, USER_ID, DATA_RANK, INTER_GRP_CODE, INTER_GRP_NAME, HTS_KOR_ISNM, CNTG_CLS_CODE, FID_ETC_CLS_CODE)\n- CRITICAL: USER_ID = HTS 로그인 ID (HTS_ID). Params struct 주석에 명시\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/watchlist.go — InquireIntstockStocklistByGroup (관심종목 …",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T14:12:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "42c405393c1bc4ac313d4ea07c65982893613952",
          "body": "…FHKST11300006)\n\n- CREATE domestic/watchlist.go + domestic/watchlist_test.go\n- 30쌍 batch 입력: MarketCodes/Symbols 슬라이스 → FID_COND_MRKT_DIV_CODE_1..30 / FID_INPUT_ISCD_1..30 번호 키로 변환\n- 응답은 단일 output 객체 (array 아님) — IntstockMultpriceData 29 fields\n- 가격 decimal.Decimal, 수량/거래대금 int64, 비율 float64,string 타입 규칙 준수\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/watchlist.go — InquireIntstockMultprice (관심종목 멀티 시세, …",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T14:11:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "590fb2d9f0bad4147a4df52461722cd2ed6bc54f",
          "body": "…2440000)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/etf.go — InquireNavComparisonTrend (NAV 비교 추이, FHPST0…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T14:08:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "776c5415e8abeb9a9bc5f24d19fc750610eef324",
          "body": "…, FHPST02440200)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/etf.go — InquireNavComparisonDailyTrend (NAV 비교 일별 추이…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T14:07:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c9936f384d7b788b45e9658065eba3c85354a77f",
          "body": "… FHPST02440100)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/etf.go — InquireNavComparisonTimeTrend (NAV 비교 시간 추이,…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T14:06:25Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5f5c07f65d89de061241c6b5881caa396effe485",
          "body": "…ST121600C0)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/etf.go — InquireComponentStockPrice (ETF 구성종목 시세, FHK…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T14:05:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "69a5e3490189db0cd8a8a4649c13e8c1a53fd5bc",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/etf.go — InquireEtfPrice (ETF/ETN 현재가, FHPST02400000)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T14:04:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5de57936e3900ff9c8700823c5b38314fdb46988",
          "body": "ETF/NAV (5: etf_price 54 fields + component_stock_price + nav_comparison_*) +\n관심종목 (4: intstock_multprice 30종 single obj + stocklist_by_group +\ngrouplist output2-only + top_interest_stock).\n\nEP3 (NAV 추이 H0STNAV0) 는 WebSocket — 제외.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[chore] testdata — 9 etf-watchlist fixture JSON (Phase 5)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T14:01:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fa7813d08566006cbe3c8cd870908b5927088a35",
          "body": "10 docs 중 EP3 (H0STNAV0 NAV 추이) 는 WebSocket → 제외. Phase 5 = 9 REST.\n\n신규 file 2:\n- domestic/etf.go — ETF/NAV 5 methods (EP1+EP2+EP4+EP5+EP6)\n- domestic/watchlist.go — 관심종목 4 methods (EP7+EP8+EP9+EP10)\n\n9 anomaly: EP1 name collision (InquirePrice → InquireEtfPrice), ETF base\npath /uapi/etfetn/v1/, mix\n[…]\nUSER_ID 필요, EP9 output2\nonly, EP10/EP2 hardcoded scr_div_code.\n\n누적 106 → 115. Phase 4.3 패턴 (plan skip + direct batch dispatch) 적용.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(superpowers): Phase 5 design — ETF/NAV/관심종목 9 REST methods",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T13:58:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "74f3c5f2174b016b6e1530ef3ab3c2e7d6e51b8b",
          "body": "Phase 4.3 — 추가 ranking/흐름 (v1.14.0) [Phase 4 완료]",
          "is_bot": false,
          "headline": "Merge pull request #145 from kenshin579/feat/phase4-3-rank-flow",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T13:23:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1aa671966730f9832fba5d3eb456c3e882bf194e",
          "body": "- CLAUDE.md: 배너 갱신 (106 메서드, Phase 4 완료), Phase 4.3 노트 추가\n- README.md: 헤딩 \"Phase 1.2 ~ 4.3\", 13 메서드 행 추가 (93→106)\n- CHANGELOG.md: v1.14.0 추가 (EP1-EP13, Phase 4 종료 하이라이트)\n- domestic/doc.go: Phase 4.3 섹션 추가 (13 메서드 + anomalies)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[docs] Phase 4.3 문서 갱신 (v1.14.0, Phase 4 완료)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T13:15:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "eb2052d9ab64a831ab1f70347c2658d7b771ed2f",
          "body": "- EP1-EP13 전체 커버: InquireShortSale/DailyShortSale/CreditBalance/DailyCreditBalance/\n  LendableByCompany/QuoteBalance/AfterHourBalance/OvertimeExpTransFluct/MarketValue/\n  Disparity/PreferDisparateRatio/ProfitAssetIndex/Mktfunds\n- 삼성전자(005930) + 시장전체(0000) 혼합 호출\n- 각 메서드 대표 필드 출력\n- go build OK, 루트 바이너리 없음\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] examples — domestic_rank_flow (Phase 4.3 13 메서드 시연)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T13:13:13Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "50c3e3ea3eba1f7bcf06b71431330df33ec27968",
          "body": "- MktfundsItem 17 fields (통화 단위: 억원/백만원)\n  고객예탁금·신용융자잔고·미수금·선물예수금·펀드순자산·담보대출잔고 포함\n- KOFIA 데이터: path /uapi/domestic-stock/v1/quotations/mktfunds\n- UPPERCASE FID_INPUT_DATE_1 파라미터 사용\n- TestClient_InquireMktfunds 추가 — PASS\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireMktfunds (증시자금 종합, FHKST649100C0)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T13:11:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ced79c2a92a2168fce91a7090cd0a6cd8c9145f2",
          "body": "- ProfitAssetIndexItem (18 fields): data_rank, hts_kor_isnm, prdy_vrss_sign,\n  mksc_shrn_iscd, stck_prpr(decimal), prdy_vrss(decimal), prdy_ctrt(float64,string),\n  acml_vol(int64,string), sale_totl_prfi/bsop_prti/op_prfi/thtr_ntin(int64,string),\n  total_aset/total_lblt/total_cptl(int64,string), stac\n[…]\nwercase fid_*\n- fid_input_option_1: 회계연도, fid_input_option_2: 분기구분\n- Path: /uapi/domestic-stock/v1/ranking/profit-asset-index (FHPST01730000)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireProfitAssetIndex (수익자산지표 순위, FHPST01730000)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T13:08:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "87c57aba9d339a117c697e65d97805428b991ff2",
          "body": "…000)\n\n- PreferDisparateRatioItem (17 fields): 보통주/우선주 페어드 필드\n  mksc_shrn_iscd, data_rank, hts_kor_isnm, stck_prpr(decimal),\n  prdy_vrss(decimal), prdy_vrss_sign, acml_vol(int64,string),\n  prst_iscd, prst_kor_isnm, prst_prpr(decimal), prst_prdy_vrss(decimal),\n  prst_prdy_vrss_sign, prst_acml_vol(int\n[…]\nreferDisparateRatioParams (9 params) — 모든 쿼리 키 lowercase fid_*\n- Path: /uapi/domestic-stock/v1/ranking/prefer-disparate-ratio (FHPST01770000)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquirePreferDisparateRatio (우선주 괴리율 상위, FHPST01770…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T13:07:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4e7d6a474ca4c126b72b4e436e90cd091b1a02aa",
          "body": "- DisparityItem (13 fields): mksc_shrn_iscd, data_rank, hts_kor_isnm,\n  stck_prpr(decimal), prdy_vrss(decimal), prdy_ctrt(float64,string),\n  prdy_vrss_sign, acml_vol(int64,string), d5/d10/d20/d60/d120_dsrt(float64,string)\n- InquireDisparityParams (11 params) — 모든 쿼리 키 lowercase fid_*\n- HourClsCode: fid_hour_cls_code — 5/10/20/60/120일 이동평균 선택\n- Path: /uapi/domestic-stock/v1/ranking/disparity (FHPST01780000)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireDisparity (이격도 순위, FHPST01780000)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T13:06:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9120b3f09d9d0e5283d8ddd22ffc9b298947ea9f",
          "body": "- MarketValue / MarketValueItem (20 fields) 추가\n- InquireMarketValueParams (13 params) 추가\n- 쿼리 파라미터는 lowercase fid_* 형식 사용 (UPPERCASE FID_ 아님)\n- 기본값: fid_cond_mrkt_div_code=\"J\", fid_cond_scr_div_code=\"20179\"\n- 가치지표: PER/PBR/PCR/PSR/EPS/EVA/EBITDA/EV(EBITDA)/EBITDA(금융비용)\n- 회계연도(fid_input_option_1), 분기구분(fid_input_option_2) 파라미터 지원\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireMarketValue (시장가치 순위, FHPST01790000)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T13:02:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "767dda5c9a6fdffaaa394a2e709b6e7d40866b90",
          "body": "…860000)\n\n- OvertimeExpTransFluct / OvertimeExpTransFluctData (13 fields) 추가\n- InquireOvertimeExpTransFluctParams (8 params) 추가\n- output 은 단일 객체 (배열 아님): Output OvertimeExpTransFluctData\n- 쿼리 파라미터는 UPPERCASE FID_ 형식 사용\n- ovtm_untp_antc_cntg_vrsssign 오타 보존 (KIS docs 원본 그대로, vrss+sign 연결)\n- InquireOvertimeFluctuation (Phase 2.2) 과 별도 API\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireOvertimeExpTransFluct (시간외 예상체결 등락률, FHKST11…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T13:01:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8d0b8916d92403afec49985aceaa24227fa9a891",
          "body": "- AfterHourBalance / AfterHourBalanceItem (11 fields) 추가\n- InquireAfterHourBalanceParams (10 params) 추가\n- 쿼리 파라미터는 lowercase fid_* 형식 사용 (UPPERCASE FID_ 아님)\n- 종목코드 필드: stck_shrn_iscd (mksc_shrn_iscd 아님) 주의\n- 기본값: fid_cond_mrkt_div_code=\"J\", fid_cond_scr_div_code=\"20176\"\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireAfterHourBalance (시간외잔량 순위, FHPST01760000)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T12:59:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6fa76fdce1dfe4c8c1c56f95908c4fb22bbdba93",
          "body": "- 경로: /uapi/domestic-stock/v1/ranking/quote-balance\n- QuoteBalanceItem 13 필드 (매도/매수 호가잔량·비율 + 순매수잔량 포함)\n- 쿼리 파라미터 10개 lowercase fid_* 형식 사용 (fid_vol_cnt, fid_input_iscd 등)\n- 테스트에서 lowercase 키 전송 확인 + UPPERCASE 키 빈값 assertion\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireQuoteBalance (호가잔량 순위, FHPST01720000)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T12:56:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f6d41a20b0a97ee04bd50fc9b90c96adc32fb3d0",
          "body": "- 경로: /uapi/domestic-stock/v1/quotations/lendable-by-company\n- TR_ID CTSC2702R (C-prefix 별도 시리즈). CANO 불필요.\n- LendableByCompanyItem 13 필드 + LendableByCompanySummary 3 필드 (output2 단일 객체)\n- 쿼리 파라미터 non-FID UPPERCASE 형식 사용 (EXCG_DVSN_CD, PDNO, CTX_AREA_FK200 등)\n- 테스트에서 UPPERCASE 키 전송 확인\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireLendableByCompany (당사 대주가능 종목, CTSC2702R)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T12:55:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a061d3db3daa831c4fd79eb93662f5db41945014",
          "body": "- 경로: /uapi/domestic-stock/v1/quotations/daily-credit-balance\n- DailyCreditBalanceItem 26 필드 (융자/대주 신규·상환·잔고 수량·금액·비율·담보비율 + 시고저가)\n- 쿼리 파라미터 lowercase fid_* 형식 사용 (fid_input_iscd 등)\n- 테스트에서 lowercase 키 전송 확인 + UPPERCASE 키 빈값 assertion\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireDailyCreditBalance (신용잔고 일별추이, FHPST04760000)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T12:53:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0301810134910fbf0d75816eab3e7a0766a68832",
          "body": "UPPERCASE FID_ 파라미터 5개, dual array output: CreditBalanceHeader (4 필드) +\nCreditBalanceItem (15 필드, decimal/int64/float64/string).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireCreditBalance (신용잔고 상위, FHKST17010000)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T12:50:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6783f14bd4f1b30bb17e60d44ac52d5e6808fa6a",
          "body": "UPPERCASE FID_ 파라미터 4개, dual output: DailyShortSaleSummary (6 필드) +\nDailyShortSaleItem 배열 (21 필드, decimal/int64/float64/string).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireDailyShortSale (공매도 일별추이, FHPST04830000)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T12:48:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8923b4f894215793f1a480014c2f17c1a0b831e3",
          "body": "UPPERCASE FID_ 파라미터 10개, ShortSaleItem 15 필드 (decimal/int64/float64/string).\nhttpmock capturedQuery 패턴으로 테스트 추가.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireShortSale (공매도 상위, FHPST04820000)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T12:41:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5ad01aea35485e8bb4df40aa8fb60bb5fb0071bb",
          "body": "13 endpoints fixtures: 공매도 (2) + 신용잔고/대주 (3) + 호가/시간외 (3) +\n순위 (4) + 시장흐름 (1). EP8 (overtime_exp_trans_fluct) 는 single object,\nEP2/EP3/EP5 는 dual output (output1+output2).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[chore] testdata — 13 rank-flow fixture JSON (Phase 4.3)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T12:27:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ae0fdc06da3b66c15618588dfc496837c7f6355a",
          "body": "Phase 4.2 — 시장 특수상태 4 REST methods (v1.13.0)",
          "is_bot": false,
          "headline": "Merge pull request #144 from kenshin579/feat/phase4-2-market-op",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T11:45:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "affe90b51d8920eeeb8b630c96753cc9f04b24dd",
          "body": "- CLAUDE.md: banner v1.12.0→v1.13.0, Phase 4.2 plan 링크 추가\n- README.md: Available Methods 헤딩 4.1→4.2, Phase 4.2 섹션 4 메서드 추가 (89→93)\n- CHANGELOG.md: [1.13.0] 추가 — WebSocket 3 endpoints (H0STMKO0/H0NXMKO0/H0UNMKO0) 제외 사유 명기\n- domestic/doc.go: Phase 4.2 섹션 + Anomalies 추가\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[docs] Phase 4.2 문서 갱신 (v1.13.0, WebSocket 3개 제외)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T11:42:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7ed2a53fc880519ad0faf7cad79aa40db93b2415",
          "body": "examples/domestic_market_op/main.go 신규 생성.\nInquireExpClosingPrice/InquireChkHoliday/InquireViStatus/\nInquireCaptureUplowprice 4 메서드 통합 예제.\nkis.NewClientFromEnv() 사용.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] examples — domestic_market_op (Phase 4.2 4 메서드 시연)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T11:36:13Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d96d54b8892840fc141bd4ee5c2bd503909d85cf",
          "body": "FHKST130000C0. FID_COND_SCR_DIV_CODE=\"11300\" hardcoded.\noutput array 17 fields/item. decimal/int64/float64 typed.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] EP7 InquireCaptureUplowprice — 상하한가 포착 (Phase 4.2)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T11:33:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e644115c2c17bcfae99844fb7a6851beae640e78",
          "body": "FHPST01390000. FID_COND_SCR_DIV_CODE=\"20139\" hardcoded.\noutput 단일 Object (13 fields). KIS 문서 \"30건\" 언급으로 runtime 배열 가능성\nstruct 주석에 명기. decimal/float64/int64 typed.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] EP6 InquireViStatus — 변동성완화장치 현황 (Phase 4.2)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T11:32:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cd77229ec6928cba7a359dea57fc7eed19ee7e17",
          "body": "CTCA0903R. non-FID UPPERCASE params (BASS_DT/CTX_AREA_NK/CTX_AREA_FK).\noutput single object 6 string fields.\n1일 1회 호출 권장 주석 명기.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] EP5 InquireChkHoliday — 휴장일 조회 (Phase 4.2)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T11:29:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a671fed741f1f5392342ae66ee18f61acb876a8a",
          "body": "domestic/market_op.go 신규 생성. FHKST117300C0.\noutput1 array (9 fields). FID_COND_SCR_DIV_CODE=\"11173\" hardcoded.\nFID_INPUT_ISCD = 시장구분코드 (종목코드 아님: 0000/0001/1001/2001/4001).\nWebSocket 3 endpoints (H0STMKO0/H0NXMKO0/H0UNMKO0) 제외 사유 파일 상단 주석에 명기.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] EP4 InquireExpClosingPrice — 장마감 예상체결가 (Phase 4.2)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T11:28:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1f4abdd2e53a4d5af38e8ea69972b3b6e9341288",
          "body": "합성 JSON fixtures:\n- exp_closing_price_success.json (output1[] 9 fields, FID_COND_SCR_DIV_CODE=11173)\n- chk_holiday_success.json (output{} 6 string fields, non-FID UPPERCASE params)\n- vi_status_success.json (output{} 13 fields, VI 발동/해제)\n- capture_uplowprice_success.json (output[] 17 fields, 상하한가 포착)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[chore] testdata — 4 market-op fixture JSON (Phase 4.2)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T11:26:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f5795c2f23f486a32c01f7a10a3b4d56327e5403",
          "body": "…ods, v1.13.0)\n\n9 tasks: testdata 4 + 4 메서드 (InquireExpClosingPrice/InquireChkHoliday/\nInquireViStatus/InquireCaptureUplowprice) + example + docs + 최종점검 + PR.\n누적 89 → 93 메서드.\n\nCRITICAL DEVIATION: Phase 4 design spec §Phase 4.2 의 7 methods 중 3개\n(장운영정보 KRX/NXT/통합 — H0STMKO0/H0NXMKO0/H0UNMKO0) 는 WebSoc\n[…]\n 정책에 따라 Phase 4.2 = 4 REST\nmethods 만. Phase 4 total 30 → 27, Phase 4.2 종료 후 누적 93 메서드.\n\nWebSocket 3개는 향후 Phase 5 (WebSocket) 로 분리.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(superpowers): Phase 4.2 implementation plan (시장 특수상태 4 REST meth…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T11:24:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6f43c8ab69a96d006badd0289c79b7e1cd752859",
          "body": "Phase 4.1 — 국내주식 종목정보/분석 (v1.12.0)",
          "is_bot": false,
          "headline": "Merge pull request #143 from kenshin579/feat/phase4-1-stock-info",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T10:56:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c59d0fce63698456bfac6681686a3f79bfb74a8a",
          "body": "- CLAUDE.md: 배너 Phase 4.1/v1.12.0 으로 갱신, Phase 4 design/plan 링크 추가\n- README.md: Available Methods 헤딩 ~4.1, 10 메서드 행 추가 (79→89)\n- CHANGELOG.md: [1.12.0] 엔트리 추가 (10 메서드 + anomaly notes)\n- domestic/doc.go: Phase 4.1 섹션 추가 (opinion 3 + extended 7)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[docs] Phase 4.1 문서 갱신 (v1.12.0)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T00:30:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "744c1effc2ff7e68409355fc365a1a728a671fce",
          "body": "EP1-10: InquireInvestOpinion/Opbysec/EstimatePerform/VolumePower/\nBulkTransNum/TradprtByamt/HtsTopView/PbarTraRatio/ExpPriceTrend/\nExpTransUpdown — 실행 가능 예제 (go run ./examples/domestic_stock_info)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] examples — domestic_stock_info (Phase 4.1 10 메서드 시연)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T00:28:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b8f0426d7260a35a9379dd37086a2e298d52de16",
          "body": "output array 15 fields (stck_shrn_iscd/hts_kor_isnm/stck_prpr/prdy_vrss/sign/\nctrt/stck_sdpr/seln_rsqn/askp/bidp/shnu_rsqn/cntg_vol/antc_tr_pbmn/\ntotal_askp_rsqn/total_bidp_rsqn). lowercase fid_* query param wire keys\n(10 params). testdata fixture 의 잘못된 필드 (antc_cnpr/lstn_stcn/등) 를\nKIS docs 명시 필드로 정정.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireExpTransUpdown (예상체결 상승/하락 상위, FHPST01820000)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T00:26:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f5c791f266cd33483257f7b87de22a85cb4c3323",
          "body": "dual output (output1 7 + output2 array 7 fields). lowercase fid_* query\nparam wire keys (Phase 2.7 EP8 패턴). testdata fixture output2 의 잘못된\n필드를 KIS docs 명시 필드로 정정 (stck_bsop_date/stck_cntg_hour/stck_prpr/\nprdy_vrss_sign/prdy_vrss/prdy_ctrt/acml_vol).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireExpPriceTrend (예상체결가 추이, FHPST01810000)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T00:24:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a23fb85aaf8be3232ecd861def949ebc5bf7a166",
          "body": "dual output (output1 PbarTraRatioSummary 11 fields + output2 []PbarTraRatioItem\n4 fields). wghn_avrg_stck_prc (가중평균주식가격) + lstn_stcn (상장주수) 포함.\ntestdata fixture 의 잘못된 필드를 KIS docs 기준으로 정정.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquirePbarTraRatio (매물대 거래비중, FHPST01130000)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T00:23:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3668911eb8803ed5bedd269045846e8d46fe29a5",
          "body": "zero query params + output1 (not output) 응답 구조 anomaly 처리.\nHHMCM prefix TR_ID (HH 시리즈). InquireHtsTopViewParams 빈 struct.\ntestdata fixture 의 잘못된 필드 (stck_shrn_iscd/hts_kor_isnm) 를 KIS docs\n명시 필드 (mrkt_div_cls_code/mksc_shrn_iscd) 로 정정.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic — InquireHtsTopView (HTS조회상위20종목, HHMCM000100C0)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-07T00:21:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4f614ce4fa2e6e2ad136d702cd306d05964cdf61",
          "body": "체결금액별 매매비중 조회 (FHKST111900C0). output[] 11 fields.\nwhol_shun_vol_rate KIS wire format typo 의도적 보존.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/extended.go — InquireTradprtByamt (EP6, Phase 4.1)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T18:18:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b3ce98644f1b90732a543a6821348e0236ca6c97",
          "body": "대량체결건수 상위 조회 (FHKST190900C0). output[] 11 fields.\nlowercase fid_* anomaly + mksc_shrn_iscd (not stck_shrn_iscd) 반영.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/extended.go — InquireBulkTransNum (EP5, Phase 4.1)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T18:17:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e2f73d241d493de8396cbb5a8e41e8fc7ced4632",
          "body": "체결강도 상위 조회 (FHPST01680000). output[] 11 fields.\n모든 9개 query params lowercase fid_* anomaly 반영.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/extended.go — InquireVolumePower (EP4, Phase 4.1)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T18:16:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "88565385fd86224a7384a9438c596f456e9b2d0b",
          "body": "종목 추정실적 조회 (HHKST668300C0). quad output 구조:\noutput1(요약 8fields) + output2(추정손익계산서 6행×5fields) +\noutput3(투자지표 8행×5fields) + output4(결산년월 5행×1field).\nSHT_CD 비표준 param명, KIS docs mislabeled output1 주의사항 문서화.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/opinion.go — InquireEstimatePerform (EP3, Phase 4.1)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T18:14:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8e4b00acc869aecab71eafce7f6e94ea61026958",
          "body": "증권사별 투자의견 조회 (FHKST663400C0). output[] 16 fields.\nFID_INPUT_ISCD = 증권사코드 (종목코드 아님) 주의사항 문서화.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/opinion.go — InquireInvestOpbysec (EP2, Phase 4.1)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T18:12:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "aee5c91f7fbcd994f1f60382557441feaf9f497d",
          "body": "종목투자의견 조회 (FHKST663300C0). output[] 12 fields.\n날짜 범위 페이지네이션 파라미터 지원 (FID_INPUT_DATE_1/2).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] domestic/opinion.go — InquireInvestOpinion (EP1, Phase 4.1)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T18:11:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9aa381e1462639cbfd5600036e38460958564dac",
          "body": "합성 JSON fixtures (2 records each where applicable):\n- invest_opinion_success.json (output[] 12 fields, date-range)\n- invest_opbysec_success.json (output[] 16 fields, 증권사코드)\n- estimate_perform_success.json (quad output1/2/3/4, SHT_CD param)\n- volume_power_success.json (output[] 11 fields, lowercase f\n[…]\n_price_trend_success.json (output1{} 7 + output2[] 7 fields)\n- exp_trans_updown_success.json (output[] 15 fields, lowercase fid_*)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[chore] testdata — 10 stock-info fixture JSON (Phase 4.1)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T18:09:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ce44e1df30d037f39758c300c54a2e462d7112a2",
          "body": "…, v1.12.0)\n\n15 tasks: testdata 10 + 10 메서드 + example + docs + 최종점검 + PR.\n누적 79 → 89 메서드.\n\n11 anomaly 식별:\n- EP3 quad-output (output1+2+3+4) + non-FID SHT_CD param + HH prefix TR_ID\n- EP3 docs Korean labels mislabeled (Python dataclass field names 사용)\n- EP4/5/9/10 lowercase fid_* wire keys\n- EP5 mksc\n[…]\n)\n- EP6 whol_shun_vol_rate typo verbatim 보존\n- EP7 zero query params + output1 (NOT output)\n- EP2 FID_INPUT_ISCD = 증권사코드 (NOT 종목코드)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(superpowers): Phase 4.1 implementation plan (국내주식 종목정보/분석 10 메서드…",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T18:06:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7e73ecd2e7be633eea3100530d366cbaa52c16a0",
          "body": "Phase 1+2+2.5+ 에서 누락된 niche read-only 30 메서드. 3 sub-phase 분해:\n- Phase 4.1 (v1.12.0, 10): 종목정보/분석 (투자의견/체결/예상체결)\n- Phase 4.2 (v1.13.0, 7): 시장운영/특수상태 (장운영/VI/상하한가/휴장일)\n- Phase 4.3 (v1.14.0, 13): 추가 ranking/흐름 (공매도/신용잔고/순위/시장자금)\n\n기존 domestic/ 패키지 재사용. 신규 file: opinion.go, market_op.go.\nextended.go 에 Phase 4.1/4.3 누적. 누적 79 → 109 메서드.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(superpowers): Phase 4 design spec — 국내주식 시장정보/순위 read-only",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T17:53:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c5f63b1a2c17e874b207ae896fe745a30a35d505",
          "body": "Phase 3.1 — 장내채권 시세 (v1.11.0) [신규 bonds 도메인]",
          "is_bot": false,
          "headline": "Merge pull request #142 from kenshin579/feat/phase3-1-bonds-quote",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T17:40:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "74e671bd8dc9f9cdc16db676693fff4f0824c835",
          "body": "SearchBondInfo/InquireIssueInfo/InquirePrice/InquireCcnl/InquireAskingPrice/\nInquireDailyPrice/InquireDailyItemchartprice/InquireAvgUnit 의 JSON unmarshal\nerror path coverage 보강. bonds 패키지 68.7% → 88.1%.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[test] bonds — Phase 3.1 8 메서드 unmarshal error path 검증",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T08:57:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "aafde7cd0f1302554f4acbf0597a17605e7fb1e6",
          "body": "CLAUDE.md 배너 갱신 + Phase 3 링크 추가.\nREADME.md 헤딩/카운트 갱신 + Bonds 섹션 추가.\nCHANGELOG.md v1.11.0 항목 추가.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[docs] Phase 3.1 문서 갱신 (v1.11.0, 신규 bonds 도메인)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T08:56:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6e5122c98275d3ca41fc41230b379a65e9dd31c8",
          "body": "examples/bonds_quote/main.go: EP1~EP8 전체 호출 시연.\nKR103501GCC7 예시 채권코드 사용. build OK 확인.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] examples — bonds_quote (Phase 3.1 8 메서드 시연)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T08:54:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "756a27e0fc821d58c4adf4235aab9a346f9740b9",
          "body": "EP8: multi-output (output1/output2/output3) 23+10+16 fields.\nCTX_AREA_NK30/CTX_AREA_FK100 cursor pagination params 노출.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] bonds — InquireAvgUnit (장내채권 평균단가조회, CTPF2005R)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T08:51:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "017c9d5f5f66452c0dfb01532abe45fb3da8c21d",
          "body": "EP7: []DailyItemchartpriceItem array (6 fields/item, max 30 records).\nMirrors InquireDailyPrice pattern with array output shape.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] bonds — InquireDailyItemchartprice (장내채권 기간별 시세, FHKBJ773701C0)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T08:49:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4d671a8c9e8430d8898e9f27255ebaa98c0ee5e5",
          "body": "채권 현재가 일별 시세 — typed struct + method + test.\nKIS docs output{} 준수; 실제 API array 시 patch 예정.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] bonds: InquireDailyPrice EP6 (FHKBJ773404C0, 9 fields typed)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T08:46:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5982f1c002c4886ddb5300e1cc4e8a445d0397c1",
          "body": "채권 5단계 호가 — decimal askp/bidp, int64 잔량, float64 수익률 typed struct + method + test.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] bonds: InquireAskingPrice EP5 (FHKBJ773401C0, 34 fields, 5단계 호가)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T08:45:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "59a44ddb8b0547ddc559748f6f774096e602b404",
          "body": "채권 현재가 체결 단일 스냅샷 — typed struct + method + test.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[feat] bonds: InquireCcnl EP4 (FHKBJ773403C0, 7 fields typed)",
          "author_name": "Frank Oh",
          "author_login": "kenshin579",
          "committed_at": "2026-05-06T08:44:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 45,
      "commits_last_year": 485,
      "latest_release_at": "2026-07-19T04:06:33Z",
      "latest_release_tag": "v1.29.0",
      "releases_from_tags": false,
      "days_since_last_push": 6,
      "active_weeks_last_year": 15,
      "days_since_latest_release": 6,
      "mean_days_between_releases": 7.9
    },
    "community": {
      "has_readme": false,
      "has_license": false,
      "has_description": false,
      "has_contributing": false,
      "health_percentage": null,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/kenshin579/korea-investment-stock",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/kenshin579/korea-investment-stock",
          "is_deprecated": false,
          "latest_version": "v1.29.0",
          "repository_url": "https://github.com/kenshin579/korea-investment-stock",
          "versions_count": 52,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-19T04:06:01Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        }
      ]
    },
    "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": 1
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "go.mod"
      ],
      "largest_source_bytes": 106698,
      "source_files_sampled": 204,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 8174
    },
    "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/alicebob/miniredis/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.37.0"
        },
        {
          "name": "github.com/coder/websocket",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.8.14"
        },
        {
          "name": "github.com/go-resty/resty/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.17.2"
        },
        {
          "name": "github.com/jarcoal/httpmock",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.4.1"
        },
        {
          "name": "github.com/redis/go-redis/v9",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v9.19.0"
        },
        {
          "name": "github.com/shopspring/decimal",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.4.0"
        },
        {
          "name": "github.com/stretchr/testify",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.11.1"
        },
        {
          "name": "golang.org/x/sync",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.20.0"
        },
        {
          "name": "golang.org/x/text",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.36.0"
        },
        {
          "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": 0,
        "merged_prs": 122,
        "open_issues": 1,
        "closed_ratio": 0.974,
        "closed_issues": 37,
        "closed_unmerged_prs": 1
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "kenshin579",
          "commits": 561,
          "avatar_url": "https://avatars.githubusercontent.com/u/1477631?v=4"
        },
        {
          "type": "User",
          "login": "brayden-jo",
          "commits": 76,
          "avatar_url": "https://avatars.githubusercontent.com/u/23475470?v=4"
        },
        {
          "type": "User",
          "login": "mr-yoo",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/29349211?v=4"
        },
        {
          "type": "User",
          "login": "azki",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/253638?v=4"
        },
        {
          "type": "User",
          "login": "sharebook-kr",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/34187310?v=4"
        },
        {
          "type": "User",
          "login": "dalinaum",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/145585?v=4"
        },
        {
          "type": "User",
          "login": "forcecore",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/632278?v=4"
        },
        {
          "type": "User",
          "login": "jackmappotion",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/131565091?v=4"
        }
      ],
      "contributors_sampled": 8,
      "top_contributor_share": 0.863
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "label-merge-conflict.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 0,
            "reason": "0 out of 13 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/13 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "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": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 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": null,
            "reason": "no releases found",
            "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": 0,
            "reason": "11 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "7bca3253b10e72c0e5088bf3f695a46873e76074",
        "ran_at": "2026-07-25T19:31:26Z",
        "aggregate_score": 3.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-19T04:06:03Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-19T04:06:02Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": [
        {
          "number": 124,
          "created_at": "2026-02-14T22:49:02Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/kenshin579/korea-investment-stock",
    "host": "github.com",
    "name": "korea-investment-stock",
    "owner": "kenshin579"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 50,
      "inputs": {
        "security": 33,
        "vitality": 84,
        "community": 12,
        "governance": 64,
        "engineering": 43
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 84,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "commits_last_year": 485,
              "human_commit_share": 1,
              "days_since_last_push": 6,
              "active_weeks_last_year": 15
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "15/52 weeks with commits",
                "points": 10.4,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 15
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "485 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 485
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 45,
              "latest_release_tag": "v1.29.0",
              "releases_from_tags": false,
              "days_since_latest_release": 6,
              "mean_days_between_releases": 7.9
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "45 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 45
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~7.9 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 7.9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 6,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 6 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 12,
        "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": "critical",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "has_readme": false,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": 64,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 26,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 8,
              "top_contributor_share": 0.863
            },
            "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 86% of commits",
                "points": 3.1,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 86
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "8 contributors",
                "points": 10.8,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "merged_prs": 122,
              "open_issues": 1,
              "closed_issues": 37,
              "issue_closed_ratio": 0.974,
              "closed_unmerged_prs": 1
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "97% of issues closed",
                "points": 45.5,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 97
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "122/123 decided PRs merged",
                "points": 37.9,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 122,
                      "decided": 123
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/13 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": 60,
            "inputs": {
              "followers": 61,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "kenshin579",
              "public_repos": 372,
              "account_age_days": 5262
            },
            "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": "61 followers of kenshin579",
                "points": 12.9,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 61,
                      "login": "kenshin579"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "372 public repos, account ~14 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 372
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 14
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/kenshin579/korea-investment-stock"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 6
            },
            "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 6 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "52 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 52
                    }
                  }
                ],
                "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": "at_risk",
        "name": "Engineering Quality",
        "value": 43,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 48,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "0 out of 13 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "at_risk",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 35,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": false,
              "has_docs_dir": true,
              "has_description": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": 33,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 33,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 3.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 13 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/13 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "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": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "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": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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": "11 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "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": 8
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 73,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.79,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 8174
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "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": "79 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 79,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.83,
              "toolchain_manifests": [
                "go.mod"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "go.mod (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "go.mod"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "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": "83 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 83,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "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": 106698,
              "source_files_sampled": 204,
              "oversized_source_files": 1
            },
            "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": "1/204 source files over 60KB",
                "points": 54.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 204,
                      "oversized": 1
                    }
                  }
                ],
                "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": [
    "Community profile unavailable",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T19:31:43.634389Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/k/kenshin579/korea-investment-stock.svg",
  "full_name": "kenshin579/korea-investment-stock",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenGo.