kernel:
- PureRustKernel: PSC-I 단면 14-vertex polygon 스위프, flat normals
56 triangles / 168 vertices, 법선 단위벡터 검증 포함
- opencascade 의존성 optional feature (--features occt)로 격리
→ OCCT 없이도 전체 빌드 가능
- psc_i.rs: 프로파일 검증, AABB, 법선 테스트 6개
viewer:
- camera.rs: arcball orbit (middle-mouse drag + scroll zoom)
- shader.wgsl: MVP matrix uniform + 방향성 조명 (콘크리트 베이지)
- lib.rs: depth buffer, index 렌더, 실제 Mesh 업로드
StubKernel → PureRustKernel → OcctKernel 교체 경로 문서화
CLAUDE.md: MVP 품질 원칙 강화 ("아키텍처 임의 변경 절대 불가")
cargo test --workspace (viewer 제외) 43개 전부 통과
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
72 lines
4.0 KiB
Markdown
72 lines
4.0 KiB
Markdown
# CLAUDE.md
|
|
|
|
## 나는 누구인가
|
|
- **이름:** 김민성 (kimminsung)
|
|
- **하는 일:** BIM SW 시니어 개발자. 25년간 3D 뷰어·에디터·모델링툴, DWG·CAD 엔진 개발.
|
|
- **핵심 가치:** 기능은 좁히되 **품질·아키텍처는 타협 없음.** MVP식이라도 스파게티 금지.
|
|
|
|
## 나의 역할
|
|
- **cimery 개발자** — Revit의 토목 버전 파라메트릭 모델링 도구 `cimery`(Civil + BIM + -ery) 설계·개발. MVP = 거더교.
|
|
- **ParaWiki 큐레이터** — AI가 활용할 파라메트릭 모델링 지식 저장소를 Obsidian 기반으로 구축.
|
|
|
|
## 비전
|
|
토목 엔지니어링 특성을 반영한 파라메트릭 모델링 도구를 시장에 공급.
|
|
두 단계: ① ParaWiki(AI용 세컨드 브레인) → ② cimery 개발. 타겟: 토목 설계자·시공사.
|
|
|
|
## 에이전트 작업 흐름 (필독)
|
|
작업을 **시작할 때** 항상 두 파일을 먼저 읽는다:
|
|
- **`PROGRESS.md`** — 지금까지 무엇이 끝났는지 (스냅샷 + 타임라인)
|
|
- **`PLAN.md`** — 무엇을 해야 하는지 (우선순위별 과제 목록)
|
|
|
|
작업 **중**: 착수한 PLAN 항목을 `- [~] 진행 중 (담당/에이전트명)`으로 표시.
|
|
작업 **완료 시:** `PROGRESS.md`에 한 줄 추가 + `PLAN.md`에서 해당 항목 제거.
|
|
**새 과제**가 생기면 `PLAN.md` 우선순위 위치에 즉시 삽입.
|
|
|
|
여러 에이전트가 병렬로 일할 때 이 두 파일이 유일한 조정 지점이다. 다른 문서(ADR·가이드)는 참조용, 상태는 여기에.
|
|
|
|
## 작업 규칙
|
|
- **언어:** 한국어 + 중요 용어 영어 병기 (예: 선형(alignment)).
|
|
- **톤:** 간결·명료. 장황 금지.
|
|
- **질문:** 한 번에 2~3개 이하, 각 한 줄.
|
|
- **결과물:** AI 활용 구조 1순위. 사람은 index 링크로 접근.
|
|
- **3대 잠정 설계 원칙:** ① 비(非)패밀리 조립 단위 ② 증분 인터랙티브 파라메트릭 ③ 선형·GIS 기반 좌표계.
|
|
- **MVP 원칙 (절대 원칙):**
|
|
> **기능은 좁히되, 품질·아키텍처는 절대 타협 없음.**
|
|
- 기능 축소 = OK. 아키텍처 임의 변경 = **절대 불가**.
|
|
- ADR에 확정된 결정(기술 스택·라이브러리·설계 패턴)을 "설치 번거로움", "빌드 복잡성"을 이유로 우회하는 것은 **금지**.
|
|
- 막히면 우회가 아니라 **문제를 해결**한다. 해결 못하면 사용자에게 정직하게 보고.
|
|
- 철근은 v2. **그 외 결정된 것은 결정된 대로 구현.**
|
|
|
|
## 권위 문서 (Source of Truth)
|
|
상세 지침은 전부 분리 문서에 있다. 본 CLAUDE.md는 포인터만 제공.
|
|
|
|
| 주제 | 문서 |
|
|
|---|---|
|
|
| **cimery 개발 지침** (기술 스택·코드 규약·함정·UX·구현 우선순위) | `Output/guides/cimery-dev-guide.md` |
|
|
| **아키텍처 결정(ADR)** | `Output/reports/ADR-001-tech-stack.md` · `ADR-002-feature-dsl.md` · `ADR-003-architecture-followups.md` |
|
|
| **위키 지식 저장소** | `wiki/index.md` |
|
|
| **Obsidian CLI 참조** | `Output/guides/obsidian-cli.md` |
|
|
| **Revit API 참조 자료** | `Output/guides/revit-api-guide.md` |
|
|
|
|
cimery 관련 작업 시작 시 `cimery-dev-guide.md`를 먼저 읽을 것. ADR과 지침이 충돌하면 **ADR 우선.**
|
|
|
|
## 위키 운영 규칙 (Karpathy LLM Wiki 패턴)
|
|
**폴더:**
|
|
- `raw/` — 불변 원본. 수정·삭제 금지.
|
|
- `wiki/` — AI가 컴파일하는 위키 페이지 (`index.md`·`log.md` 포함).
|
|
- `Output/` — 결과물 (ADR·리포트·가이드).
|
|
|
|
**10대 규칙:**
|
|
1. `raw/`는 절대 수정 금지.
|
|
2. wiki 페이지 생성·삭제 시 `wiki/index.md` 업데이트.
|
|
3. 오퍼레이션마다 `wiki/log.md` 기록.
|
|
4. 내부 참조는 wikilink `[[페이지명]]`.
|
|
5. wiki 페이지 상단 YAML frontmatter 필수.
|
|
6. 모순 발견 시 양쪽 소스 모두 인용.
|
|
7. 소스 요약은 사실만, 해석은 개념 페이지에서.
|
|
8. 질의 시 `wiki/index.md` 먼저, `raw/`는 마지막 수단.
|
|
9. 새 페이지보다 기존 페이지 업데이트 우선.
|
|
10. `index.md` 항목은 한 줄, 120자 이내.
|
|
|
|
각 폴더 세부 규칙은 해당 폴더의 `CLAUDE.md` 참조.
|