Evolution

April 8, 2026 · View on GitHub

De-identified commit timeline from the private config repository. Device names replaced: DEVICE-A (main laptop), DEVICE-B (sub laptop), DEVICE-C (GPU dev server), DEVICE-D (GPU prod server).

Phase 0 — Bootstrap (Day 1)

be196ba Initial commit: Claude Code 설정 및 memory 싱크
dee6f24 Add git pull hook and update .gitignore
b22220c Sync desktop PC: merge local state with remote config
1e2cfb3 Clean up: remove session/todo artifacts, update .gitignore

Flat structure. Manual git push/pull. No device awareness.

Phase 1 — Device awareness (Day 2)

7de098b Add device identification by hostname
9f3292b Update device table: add user column, WSL2 info
13cc8dd Standardize cross-device settings: split local config, add setup guide
326a898 Add per-device settings: hostname-based auto-apply on session start
686f9fe Update device setup guide: settings.local.d structure

Hostname detection. settings.json (shared) vs settings.local.json (device-specific) split.

Phase 2 — Memory hierarchy (Day 3)

3c3c0cd Add thinking discipline, memory system, sync conversation history
9884aac feat: 버저닝 체계 도입 (VERSIONING.md)
a53e016 feat(v1.0.0): 메모리 계층화 + JSONL 싱크 제외
5fde472 cleanup: 중복 메모리 파일 21개 정리 + 리포 맵 추가
a31a8be cleanup: 레거시 글로벌 메모리 9개 삭제

First memory categorization. 30 duplicate/legacy files cleaned up. Versioning introduced.

Phase 3 — Device branches (Day 4) (the mistake)

31ff104 feat(v1.1.0): 디바이스 브랜치 전략 도입 (RFC-001 완료)
87a0030 docs: 브랜치 플로우 다이어그램 추가
0869359 feat: settings.local.d WSL/Win 분리 + 디바이스명 통일
ad829a4 chore(gpu-dev): v1.1.0 체크리스트 완료 + 프로젝트 메모리 동기화
2b06645 docs: main 머지 권한을 메인 노트북 WSL로 한정
49c69bd Merge remote-tracking branch 'origin/device/gpu-dev'
85017e7 sync: 스크래치패드 머지 충돌 해결 (DESKTOP + gpu-dev 양쪽 체크 통합)
32c02ce Merge branch 'device/sub-wsl'

Each device got its own branch (device/main-wsl, device/sub-wsl, device/gpu-dev). Sounded elegant. In practice: constant merge conflicts, session time wasted on resolution, merge权限 restricted to one device to avoid chaos.

Lesson: device branches don't work for config repos. The files are small, change often, and need instant visibility across all devices. Branches add friction without benefit.

Phase 4 — Single branch + auto-sync (Day 5)

0ba48bf sync: v2.0.0 설계 메모 (DEVICE-A)
f3b50ae feat: device 브랜치 글로벌 메모리 통합 (v2.0.0 Step 1)
4a6262b feat: NOTES.md → notes/ 기기별 분리 (v2.0.0 Step 2)
2dd9396 feat: 프로젝트 메모리 졸업 + gitignore (v2.0.0 Step 3)
9af14b2 feat: v2.0.0 Step 4~7 — single branch 싱크 전환
82471aa feat: sync-memory.sh 도입 — SessionStart 자동 싱크

All branches merged back into main. Auto-sync hook: stash → rebase → pop → commit → push. Device-specific notes moved to notes/{hostname}.md.

Phase 5 — 3-tier memory (Day 6)

eba8a96 feat: 메모리 계층화 — core/domain/archive 3tier 구조
3ed9b1e sync: [구조변경] settings.json 상대경로 통일 + 노트 생성 (DEVICE-A)

Memory split into core (always loaded), domain (lazy), archive (cold). [구조변경] commit tagging introduced for cross-device config change detection.

Current state

~/.claude/
├── memory/
│   ├── core/      2 files   (~4KB total, loaded every session)
│   ├── domain/    25 files  (index only, read on demand)
│   └── archive/   20 files  (cold storage)
├── hooks/         2 scripts (sync + detect-changes)
├── notes/         3 files   (2 device-specific + 1 shared)
└── settings.json  1 file    (relative paths, no device-specific values)

Total elapsed time from first commit to current state: 7 days.