Files
2026-10-18 15:06:44 +09:00

4.1 KiB

개발과 검증 기준

소유권과 의존성

  • 공개 header는 단독 include가 가능해야 하며 src의 private header와 MKL·TBB·HDF5·Win32 타입을 노출하지 않는다. Concrete adapter 선언과 vendor resource는 구분한다.
  • Domain 정의·DOF와 equation·local 응답·accepted state·backend resource의 소유권을 섞지 않는다. Non-owning view와 borrowed adapter는 참조 대상의 수명·주소 안정성을 지킨다.
  • 새 procedure는 typed state와 completed outcome을 사용한다. Static state의 미사용 field나 무타입 buffer로 다른 family를 위장하지 않는다. Element가 equation이나 accepted history를 소유하지 않는다.
  • Expected failure는 Status/Result<T>로 전달한다. Adapter의 vendor 오류를 정상 빈 값이나 CLI exit 번호로 직접 흘리지 않는다. 결과 family에 필수 writer가 없으면 실패한다.
  • 병렬 worker는 자기 index의 buffer만 쓴다. 공유 CSR 누적·진단 선택·결과 ordering이 hash 순서나 worker 완료 시각에 의존하면 위반이다.

변경 범위와 코드 규약

승인된 물리·입력·영속 schema·판정 기준을 구현 편의로 바꾸지 않는다. 필요한 변경이 이 계약과 충돌하면 근거와 영향을 사용자에게 알린다. 무관한 사용자 변경·기준자료 원본을 보존한다. 수식·적분·reduction 순서·cache 수명 변경도 수치 변경으로 분류한다.

C++17 이상, .h와 repository 경로 기반 include guard, self-contained header를 사용한다. 파일·namespace는 snake_case, 타입·함수는 PascalCase, 변수는 snake_case, class member는 trailing _, format은 Google 기반 2-space다. 생산 target의 MSVC /W4 /WX를 유지하고 외부 GoogleTest에 제품 warning 정책을 강제하지 않는다. 단독 소유 resource는 RAII로 정리하고 dense allocation의 크기 곱 overflow와 vendor integer 변환을 할당·호출 전에 검사한다.

Source 변경은 직접 MSVC와 CMake의 명시적 source 목록에 함께 반영한다. 제품·검사 본문을 빌드 경로별로 복제하지 않는다. /arch:AVX2는 전용 Hex8 source에만 적용한다. 개인 설치 경로는 환경변수나 ignored local 설정으로 주입하고 추적 파일에 고정하지 않는다. 승인된 local dependency를 사용하며 자동 다운로드와 외부 source 수정을 추가하지 않는다. 직접 MSBuild의 선행 단계로 CMake·Ninja·Doxygen을 숨겨 호출하지 않는다.

검증 완료의 조건

문서만 바꾸면 source·경로·원문 보존을 정적으로 검토하고 build/test를 실행하지 않는다. 동작 변경은 영향받은 검사부터 수행한다. 솔버 기능 완료에는 구성된 전체 MSVC x64 Debug build/CTest와 필수 reference 비교가 필요하다. 수식 변경에는 독립 수치 검토와 필요한 analytical/invariant·물리 검증을 함께 수행한다.

직접 MSVC와 CMake의 compiler·구성·CRT·ISA·source·link·DLL과 전체 검사 등록 identity를 대조한다. 실제 실행한 identity와 제외·skip·중단을 기록하며 discovery 0건을 통과로 세지 않는다. Release 시간 측정이나 선택 검사 통과가 전체 Debug 검증을 대체하지 않는다. C++ unit·integration·reference, 별도 Python suite, 실제 solver와 외부 비교 결과를 구분한다. 과거 revision의 통과를 현재 source의 미실행 범위에 승계하지 않는다.

Reference 비교는 hash가 확인된 새 작업 복사본에서만 수행한다. reference/temp를 검증에 사용하거나 정식 자료로 승격하지 않는다. 정식 자료 부재는 미완료다. 검사를 삭제하려면 동등한 대체 identity·실패 경계·수치 조건 또는 폐기 구조 전용임을 입증해야 하며 자료 누락과 실행 유예만으로 삭제하지 않는다.

사용자 지시에 따른 한정 실행은 선택·제외 identity와 이유를 기록한 해당 작업의 근거다. 그 한정 실행을 이후 일반 기능의 검증 의무 축소로 해석하지 않는다. Commit·branch·merge·release는 해당 요청 범위를 따르며 문서 갱신만으로 자동 수행하지 않는다.