Files
Agentic-AI-Template/Codex/Coding/harness framework cs/docs/ADR.md
T
2026-09-08 10:30:07 +09:00

3.2 KiB

Architecture Decision Records

제품명, 사용자, 업무 기능, UI와 배포 구조는 미정이다. 아래 결정은 제품 기술 경계와 신규 프로젝트 기본값을 정하며 구체적인 도메인 설계를 대신하지 않는다.

ADR-001: MSVC 기반 C++ 제품

  • 상태: 대체됨 (superseded by ADR-003)
  • 이전 결정: 대상 제품을 MSVC 기반 C++로 개발한다.
  • 대체 이유: 사용자가 C# 전용 .NET 8 템플릿 전환을 승인했다.
  • 결과: 이전 C++·MSVC 지원과 호환 계층을 유지하지 않는다.

ADR-002: public header 경계

  • 상태: 대체됨 (superseded by ADR-004)
  • 이전 결정: 공개 header와 implementation의 의존성 방향을 유지하고 src/, include/, tests/로 배치한다.
  • 대체 이유: C#의 공개 API 접근성과 프로젝트 참조로 경계를 표현한다.

ADR-003: C#·.NET 8 범용 제품 템플릿

  • 상태: 승인
  • 결정: 제품 언어는 C#, 신규 제품 기본 TFM은 net8.0이다. global.json은 SDK 8.0.424, rollForward=latestPatch, allowPrerelease=false를 기준으로 한다.
  • 이유: 승인된 기술 전환 방향과 설치가 확인된 SDK 기준을 명시한다. 해당 SDK를 최신 버전이라고 주장하지 않는다.
  • 대안·trade-off: 다중 언어 호환 계층과 .NET Framework 4.x 지원은 제외한다. SDK 패치 갱신과 향후 런타임 전환은 별도로 검증한다.
  • 영향 경로: global.json, 신규 제품 .csproj, AGENTS.md, 제품 문서.

ADR-004: 공개 API와 프로젝트 참조 경계

  • 상태: 승인
  • 결정: 공개 API의 접근성·nullability 계약과 제품이 정한 참조 방향을 유지한다. 제품 프로젝트는 테스트 프로젝트를 참조하지 않는다. 권장 배치는 src/<ProjectName>/와 tests/<ProjectName>.Tests/이다.
  • 이유: 제품 소비자가 구현 세부사항이나 테스트 의존성을 부담하지 않도록 한다.
  • 대안·trade-off: 별도 Contracts, DI와 계층을 템플릿에 미리 만들지 않는다. 공개 계약 분리가 필요해질 때 제품 요구에 따라 결정한다.
  • 영향 경로: 신규 제품·테스트 .csproj, 공개 C# API, docs/ARCHITECTURE.md.

ADR-005: 신규 프로젝트의 테스트와 컴파일 기본값

  • 상태: 승인
  • 결정: 신규 테스트는 xUnit v2 + VSTest를 기본으로 하고, nullable와 implicit usings를 활성화한다. C# 언어 버전은 SDK 기본값을 사용하고 빌드 경고는 오류로 처리한다.
  • 이유: 실제 실행된 테스트와 컴파일 진단을 기본 검증 근거로 삼는다.
  • 대안·trade-off: 기존 테스트 프레임워크는 VSTest/TRX 계약을 만족하면 사용할 수 있다. MTP 전용 어댑터, 대규모 스타일 규칙과 커버리지 임계값은 도입하지 않는다.
  • 영향 경로: 신규 제품·테스트 .csproj, AGENTS.md.

새 결정 형식

새 ADR에는 상태, 결정, 이유, 대안 또는 trade-off, 영향을 받는 경로를 기록한다. Harness 사용법과 실행 상태는 제품 ADR 대신 Harness 문서와 phase index에 기록한다.