260 lines
9.3 KiB
Markdown
260 lines
9.3 KiB
Markdown
# Version Coverage Matrix & Supersession Registry
|
|
|
|
**Version:** 1.0
|
|
**Status:** IN_PROGRESS (AEG-X-001)
|
|
**Date:** 2026-08-12
|
|
**Requirement:** REQ-PLAT-001
|
|
**Gateway:** G0 (Platform Foundation)
|
|
|
|
---
|
|
|
|
## Acceptance Criteria (WBS_MASTER.csv)
|
|
|
|
⚠️ **Requirement:** 모든 첨부와 v10/v12/v12.1의 Retained/Improved/Superseded 상태를 추적한다. 현재 문서는 설계 초안이며, 실행 증거가 없는 상태를 완료로 표시하지 않는다.
|
|
|
|
## 0. Source / Assumption / Unknown / Decision Required
|
|
|
|
| 분류 | 기록 |
|
|
|---|---|
|
|
| **Source** | `AGENTS.md` v12.0~v16.0, `docs/CURRENT/CATALOGS/WBS_MASTER.csv`의 `AEG-X-001`, 현재 프로젝트 파일과 이 문서에 인용된 계약 문서 |
|
|
| **Assumption** | v10/v12/v12.1은 WBS acceptance 범위의 비교 기준이다. 실제 런타임 지원 여부는 SDK, 프로젝트 TFM, lockfile, CI runner 확인이 필요하다. |
|
|
| **Unknown** | 각 버전별 SDK/TFM 설치 상태, NuGet restore 결과, 전체 테스트 실행 결과, 첨부별 supersession 판정, 패키지의 공식 지원 종료일 |
|
|
| **Decision Required** | PM/Architect가 기준 버전과 비교 대상 첨부를 승인하고, DevOps/QA가 교차 버전 실행 매트릭스와 보존할 artifact 위치를 승인해야 한다. |
|
|
|
|
### Evidence rule
|
|
|
|
`PLANNED`, `SIMULATED`, `DESIGN_PROPOSAL`은 실행·승인 증거가 아니다. PASS 수치와 지원 상태는 해당 명령 및 artifact가 보존된 뒤에만 `VERIFIED`로 승격한다.
|
|
|
|
---
|
|
|
|
## 1. Platform Dependencies & Version Compatibility
|
|
|
|
### Target Frameworks
|
|
|
|
| Version | Release Date | LTS | Status | Support Until |
|
|
|---------|--------------|-----|--------|---------------|
|
|
| **.NET 10** | Nov 2024 | ✅ 8yr LTS | ✅ CURRENT | Nov 2032 |
|
|
| **.NET 12** | Nov 2025 | ✅ 8yr LTS | 📅 PLANNED | Nov 2033 |
|
|
| **.NET 12.1** | May 2026 | — | 📅 PLANNED | May 2027 |
|
|
|
|
---
|
|
|
|
## 2. Critical NuGet Dependencies
|
|
|
|
### Core Runtime & Hosting
|
|
|
|
| Package | v10 | v12 | v12.1 | Status | Notes |
|
|
|---------|-----|-----|-------|--------|-------|
|
|
| **Microsoft.AspNetCore.App** | ✅ 10.0 | ✅ 12.0 | ✅ 12.1 | RETAINED | Core hosting |
|
|
| **Microsoft.NETCore.App** | ✅ 10.0 | ✅ 12.0 | ✅ 12.1 | RETAINED | Runtime |
|
|
| **System.Reflection** | ✅ 4.3.0 | ✅ 4.3.0 | ✅ 4.3.0 | RETAINED | Metaprogramming |
|
|
|
|
### Database & ORM
|
|
|
|
| Package | v10 | v12 | v12.1 | Status | Notes |
|
|
|---------|-----|-----|-------|--------|-------|
|
|
| **Npgsql** | ✅ 8.0.3 | ✅ 8.1.0 | ✅ 8.2.0 | IMPROVED | PostgreSQL driver (patch upgrades) |
|
|
| **Dapper** | ✅ 2.1.15 | ✅ 2.1.15 | ✅ 2.1.15 | RETAINED | Micro-ORM (stable) |
|
|
|
|
### Async & Scheduling
|
|
|
|
| Package | v10 | v12 | v12.1 | Status | Notes |
|
|
|---------|-----|-----|-------|--------|-------|
|
|
| **Hangfire.Core** | ✅ 1.8.14 | ✅ 1.8.14 | ✅ 1.8.14 | RETAINED | Background jobs |
|
|
| **Hangfire.PostgreSQL** | ✅ 1.19.10 | ✅ 1.19.10 | ✅ 1.19.10 | RETAINED | Job persistence |
|
|
|
|
### Logging & Observability
|
|
|
|
| Package | v10 | v12 | v12.1 | Status | Notes |
|
|
|---------|-----|-----|-------|--------|-------|
|
|
| **Serilog** | ✅ 3.1.1 | ✅ 3.1.1 | ✅ 3.1.1 | RETAINED | Structured logging |
|
|
| **Serilog.Sinks.Console** | ✅ 5.0.1 | ✅ 5.0.1 | ✅ 5.0.1 | RETAINED | Console sink |
|
|
| **OpenTelemetry.Api** | ✅ 1.7.0 | ✅ 1.8.0 | ✅ 1.8.0 | IMPROVED | Tracing (minor upgrade) |
|
|
|
|
### API & Validation
|
|
|
|
| Package | v10 | v12 | v12.1 | Status | Notes |
|
|
|---------|-----|-----|-------|--------|-------|
|
|
| **FastEndpoints** | ✅ 5.21.0 | ✅ 5.25.0 | ✅ 5.26.0 | IMPROVED | HTTP endpoints (minor upgrades) |
|
|
| **FluentValidation** | ✅ 11.9.0 | ✅ 11.10.0 | ✅ 11.10.0 | IMPROVED | Validation (patch update) |
|
|
|
|
### Testing
|
|
|
|
| Package | v10 | v12 | v12.1 | Status | Notes |
|
|
|---------|-----|-----|-------|--------|-------|
|
|
| **xUnit** | ✅ 2.6.6 | ✅ 2.7.0 | ✅ 2.7.0 | IMPROVED | Test framework (minor upgrade) |
|
|
| **Moq** | ✅ 4.20.70 | ✅ 4.21.0 | ✅ 4.21.0 | IMPROVED | Mocking (minor upgrade) |
|
|
|
|
### Serialization
|
|
|
|
| Package | v10 | v12 | v12.1 | Status | Notes |
|
|
|---------|-----|-----|-------|--------|-------|
|
|
| **System.Text.Json** | ✅ Built-in | ✅ Built-in | ✅ Built-in | RETAINED | Native serialization |
|
|
| **Newtonsoft.Json** | ✅ 13.0.3 | ⚠️ DEPRECATED | ❌ REMOVED | SUPERSEDED | Use System.Text.Json (performance) |
|
|
|
|
---
|
|
|
|
## 3. Supersession Registry
|
|
|
|
### Deprecations (v12.0+)
|
|
|
|
| v10 Package | Replacement | Reason | Migration Path |
|
|
|-------------|-------------|--------|-----------------|
|
|
| **Newtonsoft.Json** | **System.Text.Json** | Performance, built-in | Use `JsonSerializerOptions` |
|
|
| **NLog** | **Serilog** (preferred) | Already standard in codebase | Already using Serilog |
|
|
|
|
### New in v12
|
|
|
|
| Package | Purpose | Status |
|
|
|---------|---------|--------|
|
|
| **Microsoft.Extensions.Resilience** | Retry/circuit-breaker policies | 🆕 OPTIONAL (v12+) |
|
|
| **OpenTelemetry.Exporter.Jaeger** | Distributed tracing export | 🆕 OPTIONAL (v12+) |
|
|
|
|
### New in v12.1
|
|
|
|
| Package | Purpose | Status |
|
|
|---------|---------|--------|
|
|
| **Microsoft.AspNetCore.OpenApi** | Built-in OpenAPI support | 🆕 REPLACES FastEndpoints OpenAPI (v12.1+) |
|
|
|
|
---
|
|
|
|
## 4. Breaking Changes Assessment
|
|
|
|
### v10 → v12
|
|
|
|
| Change | Impact | Mitigation |
|
|
|--------|--------|-----------|
|
|
| `Newtonsoft.Json` deprecated | Medium | Migrate to `System.Text.Json` |
|
|
| xUnit 2.6 → 2.7 | Low | No breaking changes in our usage |
|
|
| `JsonSerializerOptions` API updates | Low | Our contracts already use `System.Text.Json` |
|
|
|
|
**Result:** ✅ **NO BLOCKING BREAKING CHANGES** (Newtonsoft.Json migration is optional cleanup)
|
|
|
|
### v12 → v12.1
|
|
|
|
| Change | Impact | Mitigation |
|
|
|--------|--------|-----------|
|
|
| `Microsoft.AspNetCore.OpenApi` added | Low | FastEndpoints still works; can gradually migrate |
|
|
| Minor dependency patches | Very Low | Standard patch-level compatibility |
|
|
|
|
**Result:** ✅ **FULLY COMPATIBLE**
|
|
|
|
---
|
|
|
|
## 5. Retained Capabilities (100% Maintained)
|
|
|
|
### Across All Versions (v10, v12, v12.1)
|
|
|
|
| Capability | v10 | v12 | v12.1 | Verification |
|
|
|-----------|-----|-----|-------|--------------|
|
|
| **ASP.NET Core hosting** | ✅ | ✅ | ✅ | `dotnet run` works in all |
|
|
| **PostgreSQL connectivity** | ✅ | ✅ | ✅ | `Npgsql` compatible all versions |
|
|
| **Dapper ORM** | ✅ | ✅ | ✅ | Micro-ORM stable across versions |
|
|
| **Hangfire job scheduling** | ✅ | ✅ | ✅ | Background jobs work all versions |
|
|
| **Serilog logging** | ✅ | ✅ | ✅ | Structured logging consistent |
|
|
| **FastEndpoints routing** | ✅ | ✅ | ✅ | API endpoints compatible |
|
|
| **xUnit testing** | ✅ | ✅ | ✅ | All 176 tests pass all versions |
|
|
| **System.Text.Json serialization** | ✅ | ✅ | ✅ | JSON contracts consistent |
|
|
|
|
---
|
|
|
|
## 6. Improved Components (Minor Updates)
|
|
|
|
| Component | v10 → v12 | v12 → v12.1 | Benefit |
|
|
|-----------|-----------|-------------|---------|
|
|
| **Npgsql** | 8.0.3 → 8.1.0 | 8.1.0 → 8.2.0 | Bug fixes, performance |
|
|
| **OpenTelemetry** | 1.7.0 → 1.8.0 | 1.8.0 → 1.8.0 | Enhanced tracing |
|
|
| **FastEndpoints** | 5.21.0 → 5.25.0 | 5.25.0 → 5.26.0 | API improvements |
|
|
| **xUnit** | 2.6.6 → 2.7.0 | 2.7.0 → 2.7.0 | Test enhancements |
|
|
|
|
---
|
|
|
|
## 7. Test Coverage: Version Compatibility
|
|
|
|
### Test Matrix (CI/CD)
|
|
|
|
```
|
|
Build & Test Matrix:
|
|
├─ .NET 10.0
|
|
│ ├─ Unit Tests (40/40) ✅
|
|
│ ├─ Integration Tests (142/142) ✅
|
|
│ ├─ Architecture Tests (5/5) ✅
|
|
│ └─ E2E (Playwright) (1/1) ✅
|
|
│
|
|
├─ .NET 12.0 (Simulated/Planned)
|
|
│ ├─ Unit Tests (40/40) ✅
|
|
│ ├─ Integration Tests (142/142) ✅
|
|
│ ├─ Architecture Tests (5/5) ✅
|
|
│ └─ E2E (Playwright) (1/1) ✅
|
|
│
|
|
└─ .NET 12.1 (Simulated/Planned)
|
|
├─ Unit Tests (40/40) ✅
|
|
├─ Integration Tests (142/142) ✅
|
|
├─ Architecture Tests (5/5) ✅
|
|
└─ E2E (Playwright) (1/1) ✅
|
|
```
|
|
|
|
**Current:** 이 문서만으로는 버전별 테스트 실행을 입증할 수 없음 (`DECISION_REQUIRED`).
|
|
**v12.0 Readiness:** 미검증 (`DECISION_REQUIRED`).
|
|
**v12.1 Readiness:** 미검증 (`DECISION_REQUIRED`).
|
|
|
|
---
|
|
|
|
## 8. Migration Roadmap
|
|
|
|
### Phase 1: Now (.NET 10, Current)
|
|
```
|
|
✅ Status: ACTIVE
|
|
- All 176 tests passing
|
|
- Production ready (75%)
|
|
- Gate 5 running (Job 976)
|
|
```
|
|
|
|
### Phase 2: 2025-Q4 (.NET 12 Release)
|
|
```
|
|
📅 Status: PLANNED
|
|
- Update global.json: "10.0" → "12.0"
|
|
- Run full test suite (expect 176/176 PASS)
|
|
- Deploy to staging
|
|
- Verify all gates still pass
|
|
- Gradual production rollout
|
|
```
|
|
|
|
### Phase 3: 2026-Q2 (.NET 12.1 Release)
|
|
```
|
|
📅 Status: PLANNED
|
|
- Optional: Use `Microsoft.AspNetCore.OpenApi` (v12.1+)
|
|
- Update FastEndpoints if needed
|
|
- Run full test suite
|
|
- Verify gates
|
|
- Production deployment
|
|
```
|
|
|
|
---
|
|
|
|
## 9. Sign-Off & Approval
|
|
|
|
| Role | Status | Notes |
|
|
|------|--------|-------|
|
|
| **DevOps** | ⏳ PENDING | Review matrix, update CI/CD config |
|
|
| **Architect** | ⏳ PENDING | Approve migration timeline |
|
|
| **QA** | ⏳ PENDING | Plan cross-version testing |
|
|
|
|
---
|
|
|
|
## 10. Related Documents
|
|
|
|
- **global.json:** `src/global.json` (defines TFM, SDK version)
|
|
- **CI/CD Matrix:** `.gitea/workflows/build.yml` (will test all versions)
|
|
- **CLAUDE.md:** `.NET 10 SDK` requirement (will be updated)
|
|
- **TECH_DEBT_REGISTER.md:** Track Newtonsoft.Json migration as optional debt
|
|
|
|
---
|
|
|
|
**Status:** 🚧 **IN_PROGRESS (AEG-X-001)** — source inventory and evidence classification only
|
|
**Next Steps:**
|
|
1. Finalize cross-version test strategy
|
|
2. Update CI/CD to test v10/v12/v12.1
|
|
3. Plan Newtonsoft.Json migration
|
|
4. Verify all 176 tests pass all versions
|