Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,9 @@ docs/contest/ot-2026/

# 내부 영업·접촉 문서 (공개 산출물 아님)
PILOT-OUTREACH.md

# 로컬 리뷰·실행 스크래치 (공개 산출물 아님)
_workspace/

# 편집 중 생긴 백업본 — 진짜 안전망은 git 히스토리다
*.bak-*
3 changes: 2 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`(역사적 계획서, 상단 지위 노트 참조).

## 명령어

Expand Down
Original file line number Diff line number Diff line change
@@ -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.

Expand Down
2 changes: 1 addition & 1 deletion docs/contest/2026-개발계획서-또박.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`는 내부 개발 기록으로 배포본에 포함하지 않는다.)
2 changes: 1 addition & 1 deletion tooling/check_licenses.py
Original file line number Diff line number Diff line change
Expand Up @@ -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({
Expand Down
Loading