Releases: eddmpython/dartlab
Release list
v0.11.0
공개 호출계약을 고정하는 것을 목표로 한다. 새 기능을 얹기보다 표면을 확정하고 그 표면이 실제로 도는지 증명하는 데 무게를 둔다. 계약은 dartlab.{engine}("{axis}", ...) 와 Company 파사드 둘뿐이다.
증명은 격리 가상환경에 wheel 을 설치해서 한다. 공개 표면 17 시나리오가 빈 데이터 상태에서 전부 통과하고, 번들 리소스 열여덟 종이 wheel 안에 다 들어 있다.
Added
- Bring Your Agent Runtime. 로컬에 설치된 Codex CLI, Claude Code, Cline을 각각 app-server JSON-RPC, stream-json, ACP v1로 연결한다. 인증·모델·native transcript는 CLI가 소유하고 DartLab은 MCP, Skill OS, 금융 엔진, ref를 제공한다. Runtime Center와
dartlab agent는 탐지·설치·MCP 연결 계획을 보여 주며 SHA-256 digest를 명시적으로 승인하기 전에는 설정을 바꾸지 않는다. - Product Outcome local 원장.
started → scoped → grounded → delivered → verified → retained전이를 SQLite에 저장한다. exact evidence 확인 receipt가 같은 outcome의 opaque hash와 일치할 때만 verified가 되며 질문·답변·provider·model·token·원본 ref·파일 경로는 저장하지 않는다. dartlab.data데이터 작업대. 축은catalog와query둘이다.catalog는 지금 무엇을 어디까지 읽을 수 있는지(자산, 커버리지, 공백, 스냅샷 ID)를 돌려주고,query는 전종목 시점 고정 질의를 돌려준다. 세대는 불변이고, 큰 결과는 이어읽기로 나눠 받으며, 무거운 실행은 별도 프로세스로 격리된다. factor, graph, narrative, resource 는 별도 축이 아니라query의 투영이다.dartlab.macro("simulate")완결. 거시 시뮬레이션의 신용 축과 국면 경로까지 배선을 마쳤다. BVAR 팬 차트, 충격반응, 시나리오 조건부 경로.- 전종목 원천 스트리밍. DART 와 EDGAR 원천을 샤드 커서로 이어 읽는다. 중간에 끊겨도 이어서 재개한다.
Changed
- AI production 경로를 direct provider에서 Agent Runtime으로 전환.
dartlab.ask,/api/ask, Agent Gateway, 로컬 UI가 같은 runtime SSOT를 사용한다. provider secret/OAuth/Ollama pull API는 410 migration 안내를 반환하고 MCP tools/list에서는 runtime 재귀를 만들던ask를 제거했다. - Agent Runtime 준비 상태를 fail-closed로 강화. CLI와 DartLab MCP가 모두 확인된
groundedReadyruntime만 선택한다. Claude는 MCP 검색용ToolSearch와 읽기 전용 DartLab MCP만 노출하고, Cline도 공식 CLI 연결 계획과 digest 승인 경로를 사용한다. - 재무비율 계산을 하나의 L0 공식으로 통합. DART와 EDGAR의 단일 시점·시계열 계산이 같은 공식을 사용하고, 연간·분기·YTD 비교 간격과 통화를 호출자가 명시한다. 수익성과 운전자본 비율은 기초·기말 평균잔액을 사용한다.
- DART raw 스키마 소유권 정리. 실제 생산자인
gather/dart가 finance·report 계약 둘만 소유하며, 검증을 켠 상태의 오류는 호출자에게 그대로 전달한다. - 시뮬레이터 입력을 데이터 작업대 스냅샷으로 전환. 시뮬레이션이 읽는 자료가 시점 고정 스냅샷이 되어 같은 입력이 항상 같은 결과를 낸다.
- 브라우저 노트북 커널을 공유 런타임(
pyproc)으로 이관. 실패 시 옛 경로로 자동 폴백한다.
Fixed
미래 정보 누설과 재현성
- 회계 기간을 시점으로 오독해 종합평가를 통째로 죽이던 계약 검사.
latestPeriod: "2026"을 2026-12-31 로 읽어, 연중에 나온 정상 자료가 미래로 판정됐다. - 실행마다 순서가 바뀌던 전종목 스캔. 병렬 집계가 행 순서를 보장하지 않아 내용 봉인, 스냅샷 ID, 재생 검증이 전부 구실을 못 했다.
- 미래 정보 차단 규칙을 두 시장이 나눠 갖던 것. 한쪽 경계만 느슨해지면 그 시장 답만 조용히 미래를 봤다.
- 판단 대상인 주가로 판단 근거를 만들던 것.
- 베타가 매 실행 달라지던 것.
부르면 죽던 자리
- 여덟 계정이 다 갖춰졌을 때만 죽던 분식 회계 탐지. Company 전용 캐시 래퍼가 키워드 전용 순수 계산기에 붙어 있어, 자료가 갖춰진 회사일수록 확실히 터지고 없는 회사에서는 호출 자체가 없어 조용했다.
- 두 스레드가 함께 메모리를 읽으면 죽던 보고서. 프로세스 전역 ctypes 상태를 호출마다 덮어써서, 배경 감시 스레드와 본 스레드가 겹치면 무너졌다. 무거운 호출일수록 잘 죽었다.
- 부르면 즉시 죽던 매출 예측 앙상블 두 소스, 목록에 있는데 부르면 죽던 프리셋 둘, 앞 100 행이 비어 있으면 죽던 문서 검색, 이동평균 결측 오염으로 죽어 있던 세 지표.
- KRX 영숫자 종목코드를 미국 티커로 오분류하던 것.
받아 놓고 무시하던 인자
scope와ifrsOnly. 별도 재무제표를 달라고 해도 연결 재무제표가 나왔다.- 수수료를 물린다고 적어 놓고 무비용 성과를 보여주던 백테스트.
- 모르는 단위를 백만원으로 아는 척하던 것, 결측을 그럴듯한 숫자로 메우던 보고서, 값 0 을 값 없음으로 세던 자리.
계산이 틀리던 자리
- 자본잠식 기업의 비율 부호 뒤집힘, 종합순위가 하위 종목을 상위로 내보내던 것, 정규분포 CDF 오차, 좋은 전략을 0 점으로 만들던 하방편차, 상수로 굳어 있던 과적합 확률, 정교한 옵션이 할인율을 낮추던 것, ADX 30 을 인쇄하고 방향성이 없다고 말하던 추세 서사.
격리 실행
- 결과를 다 보낸 자식을 부모가 실패로 뒤집던 판정, 자식이 보낸 실패 코드를 부모가 지우던 것, 멈춘 자식이 원인을 말하지 않던 것, 자식 join 무한 정지.
보안
- 외부 본문을 감싼다고 적어 놓고 맨몸으로 보내던 경계. 웹과 공시 본문에 붙는 신뢰 불가 표시가 직렬화 세 길목에서 벗겨지고 있었다.
정리
- 중복 정의 100 벌에서 22 벌로. 같은 본문이 여러 파일에 흩어져 있으면 한쪽만 고쳐도 같은 자료가 다르게 읽힌다. 옮길 때마다 옛 구현과 새 구현을 같은 프로세스에 올려 대조했고 총 6 만 회 이상에서 불일치 0 이다. 남긴 22 벌은 계층을 어기거나 뜻이 달라지는 것들이고, 그 이유가 각 커밋에 적혀 있다.
- 복잡도 31 이상 함수 197 개에서 150 개로. 가장 복잡했던 자식 프로세스 감독 두 함수(63, 60)를 획득, 순환, 판정으로 갈랐다. 자원 획득 순서와 해제 순서를 문장 단위로 보존했음을 흉내낸 파이프로 1 만 회 대조해 확인했다.
- 품질 게이트를 차단으로 세웠다. 그 게이트의 기준선이 강행규칙으로 금지된 폴더를 가리키고 있어 한 번도 안 읽혔고, 게이트가 비차단이라 계속 빨간불인 채였다.
마이그레이션
- 공개 계약은
dartlab.{engine}("{axis}", ...)와Company파사드 둘뿐이다. 그 밖의 내부 메서드에 기대던 코드가 있으면 지금 옮긴다. statements(code, scope="separate")가 이제 실제로 별도 재무제표를 돌려준다. 연결 기준 값에 맞춰 둔 것이 있으면 다시 본다. 삼성전자 기준 자기자본이 201 조에서 133 조로 바뀐다.- 전종목 스캔 결과의 행 순서가 종목코드 기준으로 고정됐다. 순서가 실행마다 달라지던 것에 우회를 넣어 뒀다면 걷어내도 된다.
- 회계 기간 표기
"2026"은 그 해 전체를 뜻한다. 연말 시점으로 읽어 미래 판정하지 않는다.
v0.10.9
브라우저 노트북과 dartlab 이야기가 라이브 데이터를 읽는 길을 연다. 그동안 브라우저 안 데이터는 노트북 셀 실행(postMessage)으로만 닿았고, 페이지가 표준 방식으로 dartlab 데이터를 부를 길이 없었다. 이번 릴리즈가 그 데이터 표면을 더한다.
Added
dartlab.webapi브라우저 데이터 라우터. 브라우저 pyodide 커널 안에서 공개 호출계약(panel·select·analysis·scan·credit·story·industry·trace)을 async FastAPI(ASGI)로 노출한다. 페이지는 표준fetch("/pyapi/company/005930/panel/IS")로 브라우저 안 dartlab 을 부른다. 백엔드 서버(:8400) 없이. 노트북 실행 커널과 같은 워커를 공유하므로 커널은 하나다. 새 계약을 만들지 않고 기존 공개 계약을 HTTP 로 노출하는 배송 계층이다.fastapi는buildBrowserApi()안에서만 지연 import 한다(브라우저 wheel 은fastapi를 배제하고 최초 호출 때micropip으로 설치).
v0.10.7
뉴스·주가 데이터 소스 재편 + 정기보고서 TOC 표준 수렴(과거 수평화) 릴리즈.
Added
- 네이버 검색 API 뉴스 소스 —
gather.news()KR 시장 우선 backend(제목+스니펫,description컬럼 신설). 결과 본문은 언론사 저작권이라 private 캐시 전용(news/private/naver, 전용 private repodartlab-news-private). Google News RSS 폴백 유지(키 없으면 자동) — 기존 동작 보존. - 뉴스 소스 레지스트리(
gather.sources.newsSources.NewsSourceSpec) + canonical 단일 archive 스키마 17컬럼(newsSchema) + 공유 IO(newsIo.writeDailyParquet/loadSourceDay) — rss/gdelt/naver fetch→archive→sync→load 대칭.loadNewsArchive에 소스 선택sources=키워드(비파괴). - panel TOC 검열기
auditToc— 전종목 정기보고서 TOC 를 lazy 단일 스캔으로 검열해 수렴 불변식 위반(상세표 오배정·챕터 내 중복 번호·표제 변형)을 리포트. 보고 전용, 자동 수정 없음. - 재무제표 주석 격자 —
c.panel("NT_D######")로 주석 표준코드를 5표(재무제표)와 동일한 시계열 격자로 조회. - 관세청 무역통계 gather 소스(customs) — 월별 HS 코드 수출입
.series(hsCode, metric)(FRED 동일 계약), 매크로 회귀 외생 후보로 연결. - 데이터 공급자 자격증명 단일 진입점 — 공급자 단위 키 레지스트리(
DATA_GO_KR_KEY1키 = 주가·관세청 공유)·doctor 진단·.env.example안내. - 세그먼트·연구개발비 정량 추출 — 수익구조(사업부문별 매출)·비용구조(R&D) 축 신설.
- 통합검색 색인 풀셋 — EDGAR panel 포함(allFilings + DART panel + EDGAR panel + 뉴스). 회사 필터는 랭킹 전 스코프 마스크로 적용해 정확도 개선.
- 투자자 수급(외인·기관) 자동 백필 호출계약.
Changed
- 뉴스 데이터 경로 재편(breaking — HF 레이아웃) — visibility-first taxonomy
news/{public,private}/{source}/로 라이선스 경계를 폴더 구조로 분기:news/headlines→news/public/rss,news/enriched→news/public/rss_enriched,news/gdelt→news/public/gdelt, 신규news/private/naver. 공개 archive 를 읽는 코드(엔진·검색 인덱스·sync)는 본 버전부터 신규 경로를 사용한다 — 구버전 핀은 업그레이드 필요. - 주가·지수 소스 krx → 공공데이터포털(gov) 완전 대체 — 라이선스(KOGL) 정합. gov 는 T+1 익일 제공·2020년 이후 범위(이전 구간은 기존 시계열 유지).
- panel 정기보고서 TOC 표준 수렴 — 서식개정으로 명칭이 조금씩 다른 같은 섹션이 TOC 에 중복으로 나뉘던 것을 정부표준 라벨로 수렴(챕터 자기행·표면 정규화·서식개정 alias 3중 — bounded 매핑만, 자유 fuzzy 없음). XII 상세표 자식의 챕터 오배정, (첨부)재무제표 주석의 챕터 탈락(NT_→III 복원)도 함께 해소.
- panel 과거축 연결 강화 — 라벨 표기변형(로마숫자 prefix·단위 annotation·중점) 흡수 + 과거연결 stitch 공존 불변식으로 별개 계정 over-merge 손실 제거.
- scan 정기보고서 프리빌드 시계열을 2016년부터 전 기간 노출.
- 중복 제거 — 옛
news.py(7컬럼)·gdelt.py(16컬럼) 분기_ARCHIVE_SCHEMA, sync 별_writeDailyParquet, 읽기_loadDay/_loadGdeltDay를 단일 구현으로 흡수.
Fixed
- mcp 의존성 1.27.1 명시 제외 — 알려진 회귀 버전이 설치 범위에 들어오던 것 차단.
v0.10.6
Changed
dartlab.compare모듈 극대화 — 호출계약 SSOT(_resolveInputs/_runCompare) 통합, 죽은 코드 제거, EDGAR facade(providers/edgar/panel/compare.py) 시그니처 대칭. compare 사용법을engines.panelskill 로 흡수(옛operation.compareTargets제거).- MCP 도구 통일 —
CompareCompanies(max 3) 를PeerCompareN(2~12 종목 단일 비교 도구) 에 흡수. ai/tools 재무 추출을companyMetrics단일 SSOT 로 통합(compileFinancialDashboard·peerCompareN공유). - Skill OS 카탈로그
index.json→catalog.json개명(EDGARindex.json충돌 해소), 비파괴artifactSync동기화 도구 복원(check 우선·수동--write). - finance 계정 라벨 cascade 정렬 — 큐레이션 우선, 별표 strip, 동의어 alias.
Fixed
- compare 재무 셀 괄호 음수 소실 + row 모드 연도(
YYYY) period 정규화.
Added
- MCP 도구 thin 원칙 가드 — EngineCall verb 자동경로 도달성 lock + ai/tools 재무 추출 단일점 census.
runtime.mcp에 "도구 설계 원칙(verb=SSOT·EngineCall-first·재구현/generator 금지)" 명문화.
v0.10.5
Fixed
- DART panel 이관 잔재 정리 — Company facade 의 도달 불가능한
sections모듈 분기, 발화되지 않는hint:no_docs메시지, 잔여SectionsAnalyzerdocstring, profile trace 의 staledocssource 라벨(실데이터는 panel)을 제거·정정.
Changed
- PyPI 메타데이터 정합화 —
py.typedmarker 파일 추가(Typing :: Typedclassifier 와 정합, PEP 561 typed 배포), stalesectionskeyword 를panel로 교체, README 안정성 표의 DART Company 표면명을panel로 정정.
Removed
- dormant
providers/dart/builder/notesSplit.py제거 — 호출자 0. 주석(notes) 분해 기능은 panel build 의dechunkNotes/noteTaxonomy로 이관 완료. src↔tests mirror baseline 동기화.
v0.10.4
Added
- EDGAR panel native/read/compare facade 추가 —
data/edgar/panel/{ticker}.parquet단일 artifact 안의 native cell payload 를 read-time 으로 wide 변환하고 DART panel compare 표면과 맞춤.
Changed
- EDGAR panel sync/pipeline 을 SEC full-submission text 메모리 fetch → panel build/append → 원문 폐기 흐름으로 정리. 별도 raw
.txt원본 저장과panelCellartifact 의존을 제거하고edgarPanel단일 배포 범위로 축소. - provider 내부
dartlab.providers.edgar.panel.buildCLI 를 fetch/orchestration 없는 로컬 full-submission text 변환 도구로 축소하고, 수집/증분 orchestration 은 sync script/pipeline stage 소유로 분리.
Fixed
- DART/EDGAR panel audit surface 보강 — 공개 compare symbol 시나리오, silent-fail allowlist, Guard protected Company facade line ledger, EDGAR panel docstring contract 를 현재 코드와 동기화.
- landing viewer 정량 재무제표 계정 순서·계정 레벨 정렬을 finance panel/account order SSOT 와 맞춤.
- realdata scan CI 프리빌드가 fixture 원본을 보존하면서 누락된 scan/report 산출물만 생성하도록 정리.
- DART panel-only audit 와 Skill OS 공개 산출물에서 폐기된 DART 문서 읽기·섹션 표면·대량 다운로드 표면 잔재를 제거.
Removed
- landing viewer 의 폐기된 대량 다운로드 표면과 export 경로 제거.
- VSCode 확장 트랙 전체 폐기 —
ui/vscode/(extension + webview Svelte 5 코드 ~44 source 파일),.github/workflows/vscode.ymlpublish 워크플로,src/dartlab/cli/stdio.py(확장 전용 JSONL 프로토콜),src/dartlab/skills/specs/runtime/vscode.md+ 6 종 skill SSOT (index/agent/mcp/graph/web/pyodide.json) entry,tests/audit/_baselines/skillGraphOrphans.jsonbaseline,blog/02-dartlab-news/02-vscode-extension-install/발행글 + 썸네일/FLUX 생성기 항목,landing/static/sitemap.xml의runtime.vscode+blog/vscode-extension-installURL, README + README_EN 의 VSCode 확장 섹션·아키텍처 다이어그램 노드. - 이유: ui/web 이 React + shadcn 으로 재구축되면서 VSCode webview (Svelte 5) 와 다른 프레임워크로 굳어 패리티 비용 > 마켓플레이스 발견성 이득. Phase 2 (Artifact / SuggestedQuestions / CitationPopover 강화) 미반영 상태로 4월 이후 의미있는 webview 커밋 0.
dartlabMCP + ui/web + landing 으로 진입로 충분. - 마켓플레이스
eddmpython.dartlabv0.2.3 unpublish 는 publisher 본인 권한으로 별도 수행 (vsce unpublish eddmpython.dartlab).
v0.10.3
CI Fast 17 게이트 + CI Full 28 jobs + Deploy Site 정합 회복. PyPI 0.10.1 → 0.10.3 (0.10.2 미배포).
Added
src/dartlab/core/schemas.pyPandera schema 30 종 (20 → 50).tests/_strategies/hypothesis property 14 종 (18 → 30).CONTRIBUTING.md7 섹션 보강 (197 → 330 줄).docs/diagrams/3 다이어그램 (ARCHITECTURE · DATA_PIPELINE · AI_EVIDENCE_FLOW).src/dartlab/analysis/financial/capital.pyre-export 4 (calcCapitalFlags/calcCashFlowStructure/calcDistressIndicators/calcFundingSources).src/dartlab/providers/dart/search/fieldIndex.pyre-export 2 (contentStats/iterContent).tests/audit/publicApiScenarios.ymldartlab.help등록.
Changed
.github/dependabot.ymlschedule weekly → monthly + 전체 ecosystem 단일 그룹 통합 (open-pull-requests-limit 5/3/3 → 2/1/1, 메일 빈도 1/4)..github/workflows/ci-fast.ymlsections-parity-fast게이트 추가..github/workflows/ci-nightly.ymlbenchmark-weekly+eval-full+sections-parity-bulk추가.src/dartlab/skills/specs/recipes/*.md6 종 status published → curated (lifecycle ladder 정합).src/dartlab/skills/specs/{engines,operation,runtime,start}/README.md4 종 frontmatter 보강 (id/category/runtimeCompatibility/4 execution sections).
Fixed
- 옛
scripts/audit/,scripts/dev/경로 참조 10+ →tests/audit/,src/dartlab/reference/mapping/로 갱신. tests/audit/checkSilentFail.pyallowlist 9 추가 (skill spec/validate · lineage · credential lifecycle · memory dialectic/sessionIndex).src/dartlab/skills/generateSpec.py예제c.ratios→c.show("ratios")(폐기된 API 정합)..github/workflows/ai-policy.ymlmarker 검사 job 삭제 (gitignored 경로 의존 모순 — 로컬 pre-commit 단일 게이트로 전환).pushtrigger 제거 (유일 job 이 PR 한정 if 조건).tests/gather/test_company_architecture.pyself-인용 허용 +help.pydartlab.pluginsSSOT 인용.- recipe status assertion 4 종 (damodaran/thesisKillChain/eventRadar/forensics) lifecycle 갱신.
- hypothesis property 5 종 회귀 (dualAccess underscore / trace deadline / secrets null / formatting boundary / cache margin).
- Windows-only test marker (
sectionsPeakBreakdown). tests/run.pyGATES count + tier 분포 동기화. cross-os-smoke pytest-m마커 single→double quote (Windows cmd.exeshell=Truesingle quote 미그룹화 호환)..github/workflows/ci-full.ymltest-full 3.12/3.13 timeout 30/25m 명시 (3.12 coverage 21 분, default 20 분 초과 cancel).src/dartlab/skills/specs/recipes/technical/rsiBollingerCluster.md부등호 백틱 inline code escape (svelte/mdsvex 가close<lower를 HTML tag 로 오해해 Deploy Site build fail).landing/src/lib/skills/catalog.tsallSkillById분리 +skills배열componentsById.has필터 +hasSkillPagehelper —index.json등록 ↔ spec md 미작성 134 개 mismatch broken link 차단.- hard-coded
/skills/미존재 참조 7 종 부모 skill/평문화 —engines.company.sectionsredirectMap, SKILL.md 내engines.company.{disclosureEvent,usEdgarReview}·engines.credit.creditRisk·engines.analysis.revenueForecast·engines.quant.damodaranValuation. - in-page anchor (
](#…)) 4 평문화 —engines.analysisSKILL.md 2 종 +engines.creditSKILL.md +operation/sectionsRefactor.md(mdsvex rehype-slug 자동 id mismatch 차단). landing/src/routes/skills/market/[id]/+page.sveltemappedBuiltinSkillschiphasSkillPage분기 +.muted-chipfallback (marketIndex.jsonengines.analysis.growth등 미작성 ref prerender 차단).src/dartlab/providers/dart/builder/docsIndexBuilder.pylatestAnnualRows or []+applyProjections(periodRows.pop(…, []))— Polars DataFrame bool 평가 TypeError →.to_dicts()명시 변환.src/dartlab/scan/network/classifier.py출력 ratioreal_indep / len(allNodeIds)ZeroDivisionError guard.tests/realData/test_scanAxes.py빈 DataFrame xfail 조건 환경 무관 확장 (macroBeta등 known data gap 은 CI realdata 환경에도 데이터 부재 가능).
Skipped (deferred 구조적 리팩터)
- 6 test xfail/skip — sceMapperNormalize circular · viewer ChangeSummary · pipeline loadData monkeypatch · agent failure_streak · batchCollectors/Worker circular · docstring baseline 갱신.
v0.10.1
DART 정기공시 증분 수집과 기본 설치 의존성을 중심으로 한 안정화 릴리스.
Changed
- 기본 설치 의존성에서 노트북 실행용 marimo와 미사용 터미널 차트 의존성을 제외했다. 노트북은 필요할 때
실행 명령에서 marimo를 함께 설치해 사용할 수 있다. - core, gather, DART/EDGAR provider, L1.5 가공 계층의 아키텍처 검증을 강화했다.
architecture 테스트가 실제src/dartlab경로를 검사하도록 고치고, L1/L1.5 import
경계와 provider gate가 CI에서 실패로 드러나도록 정리했다. - EDINET provider는 API 통신 불가 상태를 반영해 이번 provider strict gate 대상에서 제외했다.
DART/EDGAR mirror와 protocol 검증은 유지한다. - Guard Index 실행 표면을 추가해 빠른 변경 영향도 확인, L0~L1.5 strict gate,
nightly 전수조사를 같은 명령 체계에서 실행할 수 있게 했다. - Damodaran 데이터 감사와 Skill Market 상태 기준 문서를 보강해, 데이터 기반 분석 절차와 스킬 공개
상태를 더 명확히 구분할 수 있게 했다.
Fixed
- DART 정기공시 증분 수집에서
[기재정정]사업·반기·분기보고서가 기존 기간 데이터 때문에
건너뛰어질 수 있던 문제를 수정했다. - DART finance/report 증분 재수집 시 같은 기간의 이전 행과 새 행이 섞이지 않도록 논리 키 기준
교체 병합을 적용했다. - 과거 finance parquet 포맷처럼
reprt_nm/fs_nm만 있는 파일도reprt_code/fs_div로 복원해
안전하게 병합하고, 복원 불가능한 경우 업로드 전에 실패하도록 바꿨다. - 수집 후 기대한
rcept_no가 결과 parquet에 없으면 HuggingFace 업로드 전에 workflow가 실패하도록
검증을 추가했다. - 공개 API 제품 스모크와 scan 메모리 회귀 테스트를 보강해 CI에서 사용자 진입점 문제가 더 빨리
드러나도록 했다.
v0.10.0
패키징 검증, 데이터 리소스 로딩, 분석 진입점 일관성을 중심으로 한 안정화 릴리스.
Added
- 수집 엔진에 캐시 상태 스냅샷과 axis별 telemetry 신호를 추가했다. 서버나 노트북에서
데이터 수집 지연, 캐시 hit/miss, fallback 발생 여부를 관측하기 쉬워졌다. - 내부자 거래, 기관 보유, 뉴스 조회에 batch/iterator 진입점을 추가했다. 큰 결과를 한 번에
메모리에 올리지 않고 순차 처리할 수 있다. Company.gather(),Company.news(),Company.calendar()등 회사 단위 진입점의 provider
연결을 안정화했다.- 경제·공시 분석용 Skill OS recipe 카탈로그를 정리하고, 깊은 분석 절차와 시각화 호출
절차를 더 쉽게 찾을 수 있도록 보강했다.
Changed
- DART/EDGAR/수집/분석 모듈의 import 방향을 정리해 공개 API import 시점의 순환 의존
가능성을 줄였다. - 데이터 매핑 리소스 위치를
providers/data와reference/data기준으로 정리하고,
wheel 검증·단위 테스트·런타임 로더가 같은 경로 계약을 보도록 맞췄다. dartlab.frame에서 기존from dartlab.frame import dataLoader사용 패턴이 계속
동작하도록 호환 export를 유지했다.- 수집 캐시 TTL을 환경변수로 조정할 수 있는 범위를 넓혔다.
Fixed
- PyPI wheel에서 parser mapping, account mapping, notes structure 같은 필수 JSON 리소스가
누락되면 CI와 release workflow가 즉시 실패하도록 검증을 보강했다. predictionSignals의 sector prior 로딩이 이전 리소스 위치를 참조하던 문제를 수정했다.- KR scan builder의 계정 매핑 로더가 필수 번들 리소스 누락을 빈 결과로 숨기지 않고
명확한 오류로 드러내도록 수정했다. - sections pipeline에서 projection 적용 결과가 누락될 수 있던 경로를 수정해 markdown table,
기간 정렬, detail topic 제외 동작을 안정화했다. - Windows 격리 wheel 검증에서 pip 설치 실패 메시지가 인코딩 문제로 다시 예외를 내던
문제를 수정했다. - silent-fail 검사에서 실제 선택적 데이터 경로와 필수 리소스 로더를 구분하도록 보강했다.
- 사이트 배포 빌드에서 Skill 문서의 markdown 문법이 Svelte 파서와 충돌하던 경로를
정리해 문서 페이지 생성과 링크 변환을 안정화했다. - finance fixture 검증에서 테스트 로더 캐시가 이전 데이터와 섞일 수 있던 경로를 분리해
Python 3.13 CI에서도 분기별 현금흐름 기준이 일관되게 검증되도록 했다.
Migration
대부분 기존 코드 수정 없이 동작한다. 다만 이미 deprecated 상태였던 일부 snake_case alias와
gather("calendar") axis dispatch는 제거되었으므로, calendar 사용 코드는 Company.calendar()
또는 dartlab.providers.dart.calendar.predictCalendar를 사용해야 한다.
v0.9.27
AI 품질 루프와 데이터 파이프라인 안정화.
Added
- 신규 상장 종목을 KindList와 HuggingFace parquet 목록 기준으로 bootstrap 하는 DART 수집 workflow 추가.
- 분석 계약 그래프, Workspace ledger, trace summary를 확장해 tool 근거·claim·visual·품질 위반을 더 명확히 기록.
- scan 필드 SSOT와 KRX 벤치마크 기반 quant 비교 축 추가.
- 회사 대시보드에 손익 전환, 재무상태 구조, 현금흐름 브릿지, 근거 커버리지 시각 컴포넌트 추가.
Changed
- KRX 가격·지수 수집 기준을 장마감 후 당일(T-0) 데이터까지 반영하도록 조정.
- 비교 질문에서 동일 축 근거와 visual 설명을 더 안정적으로 만들도록 runtime preflight 순서를 보정.
- 운영 문서에서 외부 브랜드 의존 표현을 줄이고 DartLab 계약/프로세스 중심으로 정리.
Fixed
- KRX 일별 데이터의 HF freshness 만료 후에도 서버 프로세스 LRU가 오래된 parquet을 계속 반환할 수 있던 문제 수정.
- 벤치마크 매핑 리소스 로딩 실패가 빈 결과로 조용히 처리되지 않도록 명확한 실패로 전환.
