diff --git a/.gitignore b/.gitignore index 622429d..1f8bf34 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,9 @@ docs/contest/ot-2026/ # 내부 영업·접촉 문서 (공개 산출물 아님) PILOT-OUTREACH.md + +# 로컬 리뷰·실행 스크래치 (공개 산출물 아님) +_workspace/ + +# 편집 중 생긴 백업본 — 진짜 안전망은 git 히스토리다 +*.bak-* diff --git a/CLAUDE.md b/CLAUDE.md index 4cbe01b..9d1ce44 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,8 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co **또박(Ttobak)** — 어려운 한국어 공공·행정 문서를 "쉬운 정보(Easy-Read)"로 변환하는 오픈소스 엔진. 쉬움을 K-ER 점수로 측정하고, Fidelity 게이트로 사실(숫자·날짜·금액·기한·자격·기관명)을 보존하며 자가 교정한다. 2026 오픈소스 개발자대회 출품작. 코드 Apache-2.0 / 데이터(corpus) CC BY 4.0 / 픽토그램(assets) CC BY-SA — 세 라이선스는 절대 섞이면 안 된다(아래 라이선스 절 참조). -상세 스펙은 `docs/superpowers/plans/2026-06-30-ttobak-mvp.md` — 코드 docstring의 "spec 6.8" 같은 인용이 가리키는 문서다. +상세 스펙은 `docs/2026-06-30-ttobak-easy-read-engine-spec.md` — 코드 docstring의 "spec 6.8" 같은 인용이 가리키는 문서다. +구현 계획(63개 TDD 태스크)은 `docs/2026-06-30-ttobak-mvp-plan.md`(역사적 계획서, 상단 지위 노트 참조). ## 명령어 diff --git a/docs/superpowers/specs/2026-06-30-ttobak-easy-read-engine-design.md b/docs/2026-06-30-ttobak-easy-read-engine-spec.md similarity index 100% rename from docs/superpowers/specs/2026-06-30-ttobak-easy-read-engine-design.md rename to docs/2026-06-30-ttobak-easy-read-engine-spec.md diff --git a/docs/superpowers/plans/2026-06-30-ttobak-mvp.md b/docs/2026-06-30-ttobak-mvp-plan.md similarity index 99% rename from docs/superpowers/plans/2026-06-30-ttobak-mvp.md rename to docs/2026-06-30-ttobak-mvp-plan.md index 6f8c280..6e29755 100644 --- a/docs/superpowers/plans/2026-06-30-ttobak-mvp.md +++ b/docs/2026-06-30-ttobak-mvp-plan.md @@ -1,6 +1,16 @@ # 또박(Ttobak) MVP Implementation Plan -REQUIRED SUB-SKILL: superpowers:subagent-driven-development or superpowers:executing-plans — each task below is a TDD unit (write failing test → run red → implement → run green → commit). Workers MUST follow that loop and check off each `- [ ]` step as it completes. +> **문서 지위 (2026-08-25 추가)** — 이 문서는 2026-06-30 구현 착수 전에 작성한 역사적 +> 실행 계획이다. 아래 미체크 항목(`- [ ]`)은 당시 TDD 절차 템플릿이며 **현재 미완료 표시가 +> 아니다** — 63개 태스크는 전부 완료됐고 구현 실물은 저장소 코드, 실행 이력은 git 히스토리가 +> 정본이다. +> +> 구현 뒤 바뀐 결정: LLM 프로바이더 기본값은 **Ollama 로컬(`qwen2.5:7b`)**, Anthropic 은 +> 선택적 원격 대안이다(아래 Architecture/Tech Stack 의 "Anthropic API default" 는 계획 시점 +> 표기). Kanana-1.5-8B 는 Ollama 공식 라이브러리 부재로 2026-07-29 교체(PR #3). spaCy NER · +> dateparser · korean-number 는 MVP 에 싣지 않았다(로드맵). OpenAI 프로바이더는 없다. +> 현재 동작의 정본은 `README.md`, `docs/providers.md`, `pyproject.toml` 및 코드다. +> 설계 명세는 `docs/2026-06-30-ttobak-easy-read-engine-spec.md`. **Goal:** Ship an open-source (Apache-2.0) Korean Easy-Read engine that converts hard public/administrative documents into easy-read text, measures easiness with a rule-based K-ER score, self-corrects via a generate→measure→revise loop, and preserves facts (numbers/dates/amounts/deadlines/eligibility/entities) through a deterministic fidelity gate — with a side-by-side renderer, pictogram lookup, web demo, evaluation harness, and a license/security CI gate, all by 8/27. diff --git "a/docs/contest/2026-\352\260\234\353\260\234\352\263\204\355\232\215\354\204\234-\353\230\220\353\260\225.md" "b/docs/contest/2026-\352\260\234\353\260\234\352\263\204\355\232\215\354\204\234-\353\230\220\353\260\225.md" index c0c7f64..a2420d2 100644 --- "a/docs/contest/2026-\352\260\234\353\260\234\352\263\204\355\232\215\354\204\234-\353\230\220\353\260\225.md" +++ "b/docs/contest/2026-\352\260\234\353\260\234\352\263\204\355\232\215\354\204\234-\353\230\220\353\260\225.md" @@ -280,4 +280,4 @@ CC BY-SA 픽토그램은 Apache 코드나 CC BY 데이터에 인라인·base64 --- -문서 근거 파일(저장소 기준 상대경로): 설계 명세 `docs/superpowers/specs/2026-06-30-ttobak-easy-read-engine-design.md` · MVP 계획 `docs/superpowers/plans/2026-06-30-ttobak-mvp.md` · 코어 `ttobak/` · 감사 게이트 `tooling/check_licenses.py` · 코퍼스(n=11) `corpus/pairs.jsonl` · 코퍼스 주석기 `tooling/annotate_corpus.py` · 라이선스 근거 `LICENSE` · `NOTICE` · `THIRD_PARTY_LICENSES.md` · `README.md` · `pyproject.toml`. (SDD 진행 원장 `.superpowers/sdd/progress.md`는 내부 개발 기록으로 배포본에 포함하지 않는다.) +문서 근거 파일(저장소 기준 상대경로): 설계 명세 `docs/superpowers/specs/2026-06-30-ttobak-easy-read-engine-design.md` · MVP 계획 `docs/2026-06-30-ttobak-mvp-plan.md` · 코어 `ttobak/` · 감사 게이트 `tooling/check_licenses.py` · 코퍼스(n=11) `corpus/pairs.jsonl` · 코퍼스 주석기 `tooling/annotate_corpus.py` · 라이선스 근거 `LICENSE` · `NOTICE` · `THIRD_PARTY_LICENSES.md` · `README.md` · `pyproject.toml`. (SDD 진행 원장 `.superpowers/sdd/progress.md`는 내부 개발 기록으로 배포본에 포함하지 않는다.) diff --git a/tooling/check_licenses.py b/tooling/check_licenses.py index a15472f..394e518 100644 --- a/tooling/check_licenses.py +++ b/tooling/check_licenses.py @@ -203,7 +203,7 @@ def check_assets_separation(root: Path) -> list[LicenseViolation]: # .superpowers/sdd/task-58/59/63-*.md (excluded above). NOTE: don't spell # the placeholder key out literally in this file — the regex it's meant # to demonstrate would flag this comment too (self-referential match). - "docs/superpowers/plans/2026-06-30-ttobak-mvp.md", + "docs/2026-06-30-ttobak-mvp-plan.md", }) _SCANNABLE_SUFFIXES: frozenset[str] = frozenset({