Files
simul/PROGRESS.md
Myeongseon Choi dffa67d505 docs: reorder M0+ — lattice canary first, trait fix after decision gate
trait 정렬 fix 가 후속의 base 라는 직관적 의존성은 실제로는 약함:
1D random walker 는 simul-core trait 만 사용하므로 simul-euclidean
ForceInteraction 부정합과 독립이다. 반면 trait fix 의 *최종 모양*
(Handle 을 simul-core 로 lift 할지, EuclideanInteraction sub-trait
으로 둘지) 은 두 데이터 포인트 (Euclidean MD + Lattice) 가 있어야
근거 있게 결정됨.

따라서 M0+ 단위 순서를 1↔2 swap + 결정 게이트 신규 §2 추가:

  (구) 1. Trait fix → 2. canary → 3-7. forces/wrappers
  (신) 1. canary → 2. 추상 재설계 결정 → 3. Trait fix → 4-8.

PROGRESS.md §1 M0+ 표 행 재배치, §6 다음 한 단위 갱신.
learning/M0+.md 섹션 순서 물리 재배치 + 새 §2 결정 게이트 추가.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 00:05:58 +09:00

8.5 KiB
Raw Blame History

simul PROGRESS — 학습자 대시보드

지금 어디인가, 다음 한 단위는 무엇인가, 전체 학습 자산은 얼마나 쌓였는가.

ROADMAP.md = WHY / WHERE-TO. 본 문서 = WHERE-AM-I / WHAT-NEXT. 매 작업 후 직접 갱신한다. 자동화는 의도적으로 도입하지 않음 — 갱신 자체가 학습자의 진척 실감 의 일부.


0. 한눈에 (전체 진척률)

컷라인 목표 단위 누적 LOC 목표 Tier-1 목표 현재 LOC 현재 Tier-1 진척
6개월 MLP M0 → M2 ~3K 22 ~3.0K 2 ▓▓░░░░░░░░ 12%
1년 MVP + M3,M4 ~6K 26 ~3.0K 2 ▓░░░░░░░░░ 6%
2년 Stretch + M5,M7,M8 ~9K 44 ~3.0K 2 ▓░░░░░░░░░ 3%

LOC 측정 기준: tokei -e target -e .git -e .team-output simul-* simul. Tier-1 카운트: simul-*/tests/*_openmm.rs 파일 중 _template_openmm.rs 제외.


1. 마일스톤 진척

범례: 완료 · 🔄 진행중 · 미착수 · 🚫 차단 · ⏭ 스킵

M0 — 완료 (선행 작업)

  • simul-core trait 골격 (StateSpace / Dynamics / Interaction / SystemState)
  • VerletDynamics, LangevinDynamics(BAOAB), OverdampedLangevinDynamics
  • HarmonicBondInteraction (host serial + Tier-1)
  • NonbondedInteraction (NoCutoff, LJ + Coulomb, host serial + Tier-1)
  • Simulation builder + iterator
  • simul-io (PDB / XYZ)

M0+ — 즉시 (23주, ~1.7K LOC, +12 Tier-1)

디테일: learning/M0+.md

# 단위 상태 시간 LOC Tier-1 패턴 비고
1 simul-lattice/ canary (1D random walker) 1주 ~200 (+1 canary) P2 4중 방어선 §11.6-(a). 추상 결정의 데이터 포인트 #2.
2 추상 재설계 결정 (Handle을 simul-core로 lift할지) 한나절 P1 canary 결과 기반. ROADMAP §6 P1 갱신.
3 Trait 정렬 (InteractionEuclideanInteraction) 한나절~1일 ~50 P1 (2)에서 결정한 모양으로.
4 RMSDForceRmsdInteraction<D> 12일 ~150 +1 P1 TheobaldLiu quat align
5 RGForceRgInteraction<D> 1일 ~80 +1 P1 단순 — Σ|rr_cm|²/N
6 OrientationRestraintForce 2일 ~150 +1 P1 rotation matrix
7 AndersenThermostatThermostat trait 1일 ~120 +1 P12 VelocityModifier 패턴 정착
8 Tier-1 wrapper 14건 (Verlet/Langevin/Brownian 단발 + System/Spline/SplineFitter/MultipleForces 등) 며칠 ~600 +14 (현재 2 → 16) T5 addendum §3 게이팅 표

M0+ DoD:

  • cargo test --workspace 통과
  • cargo test -p simul-lattice 통과 (canary)
  • 기존 두 Tier-1 테스트가 trait fix 후에도 통과
  • learning/canary-check.md 의 마일스톤 게이트

M1 — Bonded 분자 (46주, +0.7K LOC, +4 Tier-1)

# 단위 상태 패턴
1 HarmonicAngleForce P1 (HarmonicBond 패턴 그대로)
2 PeriodicTorsionForce P1
3 RBTorsionForce (RyckaertBellemans) P1
4 CMAPTorsionForce (CHARMM CMAP) P1 + bicubic spline

M1 컨텍스트는 M0+ 종료 후 learning/todo-generator.md 로 자동 생성. 결과를 learning/M1.md 로 저장.

M2 — PBC + Neighbor list (23개월, +0.8K LOC, +4 Tier-1)

핵심 단위: PBC infra · Cell list · CMMotionRemover · NB(CutoffPeriodic) · GBSAOBC · LCPO · GayBerne

M3 — Constraint + Minimizer (23개월, +1.8K LOC, +2 Tier-1)

핵심 단위: SETTLE → SHAKE · LBFGS minimizer · VariableVerlet · CompoundIntegrator +2주: VerletDynamics trait 의 constraint solver type parameter 리팩터.

M4 — Barostat NPT (12개월, +1K LOC, +2 Tier-1)

핵심 단위: BoxModifier trait · MonteCarloBarostat (+ Anisotropic) · bincode + TOML serialization 검토 게이트: CUDA 백엔드 옵션 도입 (CubeCL Phase 2 진입).

M5 — PME / Ewald (36개월, +1.5K LOC, +4 Tier-1) ⚠️ 위험 구간

핵심 단위: NB(PME) · Ewald · DispersionPME

devil-advocate 경고: 단독 36개월. 반년 묶일 위험 가장 큼.

M6 — Lepton (옵션, +612개월, +12 Tier-1) ⏭

M5 종료 후 별도 결정. 채택 시 2년 → 2.53년.

M7 — NoseHoover + 통계 (12개월, +1 Tier-1 + Tier-2 H̄)

M8 — VirtualSite (12개월, +1 Tier-1)


2. 학습 자산 카운터

자산 현재 목표 (2년) 비고
Rust LOC (구현) ~3.0K ~9K tokei 기준
Tier-1 테스트 (*_openmm.rs) 2 3244 Lepton 채택 여부
Tier-2 fixture (*_openmm_stats.rs) 0 12+5 통계 비교
OpenMM-Python reference 스크립트 (tests/reference/*.py) 2 ~30 truth source
정책 결정 완료 1 / 8 8 / 8 §3
4중 방어선 (M0+) 0 / 4 4 / 4 §4

3. 정책 결정 status (ROADMAP §9)

# 정책 결정 시점
1 Lepton DSL 1차 미도입, M5 종료 후 재평가 M0+
2 Serialization (input) 미정 (TOML 권장) M2
3 Serialization (checkpoint) 미정 (bincode 권장) M4
4 다중 백엔드 (M0M3) 미정 (ndarray+rayon 권장) M0+
5 PBC 미정 (orthorhombic M2, triclinic M5) M2
6 Constraint (1차) 미정 (SETTLE 권장) M3
7 NeighborList 미정 (cell list host 권장) M2
8 PME 구현 깊이 미정 (Ewald → SPME host) M5

정책 결정은 단순히 결심 이 아니라 DESIGN.md / ROADMAP.md 갱신 으로 락된다. PROGRESS.md 는 미러.


4. 4중 방어선 status (ROADMAP §11.6)

방어선 정의 상태 점검 방법
(a) Lattice canary simul-lattice/ + 1D random walker 🔴 미설치 cargo test -p simul-lattice
(b) 책임 경계 강제 MD-specific 타입은 simul-euclidean 에 정책만 learning/canary-check.md
(c) 확장 trait 패턴 MdSystemExt 패턴, 핵심 struct 최소 정책만 code review
(d) 마일스톤 게이트 점검 매 마일스톤 종료 시 (a)~(c) 통과 확인 M0+ 게이트 미실행 learning/canary-check.md

(a) 가 핵심. 작동하는 lattice 코드가 한 줄이라도 있으면 trait drift 를 즉시 잡는다.


5. Tier-3 인용 카탈로그 status (tests/UPSTREAM_TESTS.md)

카테고리 인용된 OpenMM 파일 status
플랫폼 래퍼 ~250 인용 (사유 §3.1)
Custom* + CustomIntegrator 13 인용 (사유 §3.2)
Plugin (amoeba/drude/rpmd/cpupme) 22 인용 (사유 §3.3)
Serialization (core+plugin) 48 인용 (사유 §3.4)
Vectorize 4 인용 (사유 §3.5)
GPU runtime util ~8 인용 (사유 §3.6)
Python E2E 37 인용 (사유 §3.7)
ATMForce / Parser 2 인용 (사유 §3.8)
인용 합계 ~384 OpenMM 총합 ~376 (백엔드 중복 포함)

6. 다음 한 단위 (지금 무엇)

simul-lattice canary (1D random walker) (M0+ #1, 1주)

이유: trait 추상 재설계의 데이터 포인트 #2 확보 — Handle을 simul-core로 lift할지를 예측이 아니라 발견으로 결정하기 위함. 4중 방어선 §11.6-(a) 살아있는 가드레일도 동시 설치. 1D random walker는 simul-core trait만 사용 — ForceInteraction 부정합과 독립이므로 trait fix 선행 불필요.

디테일: learning/M0+.md §1.

다음 단위 변경 시 본 §6 만 갱신.


7. 사용 사이클 (learning/README.md 요약)

PROGRESS.md (지금 어디)
   ↓
learning/M{N}.md 또는 todo-generator.md (다음 무엇)
   ↓
직접 코드 작성 (사람)
   ↓
learning/review-rubric.md (self-review)
   ↓
learning/canary-check.md (마일스톤 게이트)
   ↓
PROGRESS.md 갱신 — 다음 사이클

8. 갱신 룰

매 작업 (1단위) 종료 시:

  1. 해당 마일스톤 표의 + LOC / Tier-1 수치 갱신
  2. §0 진척률 막대 갱신
  3. §2 카운터 갱신
  4. §6 다음 한 단위 변경

매 마일스톤 종료 시: 5. §1 마일스톤 헤더에 완료 날짜 기재 6. §4 4중 방어선 게이트 통과 표시 7. ROADMAP.md §8 마일스톤 표의 누적 LOC / Tier-1 의 실측치 가 추정과 ±20% 이상 차이나면 ROADMAP 시간 추정 재조정 (devil-advocate verdict 의 약속)

매 정책 결정 시: 8. §3 표 갱신 + DESIGN.md / ROADMAP.md 동기화 PR