From 26d18553653df082b616d67636ba7391c7dd505d Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Sun, 2 Aug 2026 06:03:02 +0900 Subject: [PATCH] PR 4d: Finalize permanent deferral decisions for DEBT-003~006 and DEBT-008 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Governance: Updated TECH_DEBT_REGISTER.md per AGENTS.md v16.0 cost-benefit analysis. Deferred Items (4 items, 4pts): - DEBT-003 (CA1305): Locale formatting via Serilog. Breaking change risk exceeds benefit. - DEBT-004 (CA1707): xUnit test naming convention (underscores). Not a defect, acceptable standard. - DEBT-005 (CA1861): Static readonly array allocations. Negligible perf; readability priority. - DEBT-006 (xUnit2031): Assert.Single overload nit. Style preference, not safety-critical. Accepted (1 item, 2pts): - DEBT-008 (Namespace consistency): Per-project AssemblyName intentional for DLL clarity. Trade-off accepted. Registry Status Summary (post-PR 4): - Completed: 1 (1pt) — DEBT-001 CA1822 static methods - No Action: 1 (1pt) — DEBT-002 CA1873 already compliant - Deferred: 4 (4pts) — DEBT-003/004/005/006 (revisit if conditions change) - Accepted: 1 (2pt) — DEBT-008 (no action needed) - Backlog: 0 (0pts) Q3 2026 Paydown: 1pt resolved (DEBT-001). Target 4pts (20% of 20pt total). Strategy: Small additional quick-wins from deferred items could reach 4pt target if needed. All 40 tests PASS (17 ModelOps + 18 SignalEngine + 5 Architecture) Co-Authored-By: Claude Haiku 4.5 --- Directory.Build.props | 2 +- TECH_DEBT_REGISTER.md | 23 +++++++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 5ca5caad..00dcd60e 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -6,7 +6,7 @@ enable true latest-recommended - $(NoWarn);CA1873;CA1305;CA1707;CA1861;xUnit2031 + $(NoWarn);CA1305;CA1707;CA1861;xUnit2031 true true diff --git a/TECH_DEBT_REGISTER.md b/TECH_DEBT_REGISTER.md index 42f49782..7fc32011 100644 --- a/TECH_DEBT_REGISTER.md +++ b/TECH_DEBT_REGISTER.md @@ -8,9 +8,12 @@ | Status | Count | Total Impact | |--------|-------|--------------| -| Backlog | 7 | 19 pts | +| Backlog | 0 | 0 pts | | In Progress | 0 | 0 pts | | Completed | 1 | 1 pt | +| No Action | 1 | 1 pt | +| Deferred | 4 | 4 pts | +| Accepted | 1 | 2 pts | --- @@ -21,18 +24,18 @@ | ID | Category | Impact | Effort | Status | Notes | Owner | ADR | |----|----------|--------|--------|--------|-------|-------|-----| | DEBT-001 | CA1822 (static hints) | Low (1) | Low (1) | Completed | Applied `static` to GetNextDueAt, Evaluate, Plan methods; removed DI registrations. | @claude | PR 4b | -| DEBT-002 | CA1873 (array logging) | Low (1) | Low (1) | Backlog | Conditional array evaluation in logging. Low runtime impact; defer until performance profiling. | Team | - | -| DEBT-003 | CA1305 (culture) | Low (1) | Low (1) | Backlog | Locale-specific formatting. Accept as-is for Serilog; breaking change if fixed. | Team | - | -| DEBT-004 | CA1707 (test naming) | Low (1) | Low (1) | Backlog | xUnit underscores in test names. Convention; no fix needed. | Team | - | -| DEBT-005 | CA1861 (array overhead) | Low (1) | Low (1) | Backlog | Static readonly array allocations. Negligible perf; accept trade-off for readability. | Team | - | -| DEBT-006 | xUnit2031 (filter) | Low (1) | Low (1) | Backlog | Use overload instead of .Where() for Assert.Single. Analyzer nit; defer. | Team | - | +| DEBT-002 | CA1873 (array logging) | Low (1) | Low (1) | No Action | Already compliant: all logging uses LoggerMessage delegates. Verified PR 4b build with CA1873 enabled: 0 warnings. | @claude | Verified | +| DEBT-003 | CA1305 (culture) | Low (1) | Low (1) | Deferred | Locale-specific formatting. Accept as-is for Serilog; breaking change if fixed. Revisit if conditions change. | @claude | PR 4d | +| DEBT-004 | CA1707 (test naming) | Low (1) | Low (1) | Deferred | xUnit underscores in test names. Convention; no fix needed. Revisit if conditions change. | @claude | PR 4d | +| DEBT-005 | CA1861 (array overhead) | Low (1) | Low (1) | Deferred | Static readonly array allocations. Negligible perf; accept trade-off for readability. Revisit if conditions change. | @claude | PR 4d | +| DEBT-006 | xUnit2031 (filter) | Low (1) | Low (1) | Deferred | Use overload instead of .Where() for Assert.Single. Analyzer nit; defer. Revisit if conditions change. | @claude | PR 4d | ### Deferred Refactoring | ID | Category | Impact | Effort | Status | Notes | Owner | ADR | |----|----------|--------|--------|--------|-------|-------|-----| | DEBT-007 | Newtonsoft.Json override | Medium (2) | Medium (2) | Completed | Fixed in 88ea5ed: CA1848/CA1859 actual implementation. LoggerMessage + HashSet/Dictionary. | @claude | - | -| DEBT-008 | Namespace consistency | Medium (2) | Low (1) | Backlog | All projects use RootNamespace=KArtSell.Aegis; AssemblyName retained per-project for DLL clarity. Consider if alignment needed. | - | - | +| DEBT-008 | Namespace consistency | Medium (2) | Low (1) | Accepted | All projects use RootNamespace=KArtSell.Aegis; AssemblyName retained per-project for DLL clarity. Trade-off accepted: DLL clarity > namespace alignment. No action. | @claude | PR 4d | --- @@ -47,12 +50,12 @@ Low Impact QUICK WINS MONITOR (DEBT-001/002) (DEBT-003/004/005/006/008) ``` -### Quick Wins — Q3 2026 (In Progress) +### Quick Wins — Q3 2026 (Completed) **Rationale (per AGENTS.md v16.0 "Paydown Target: 20% quarterly"):** - ✅ DEBT-001 (CA1822): static method hints — Completed in PR 4b. Applied `static` to ScheduleOccurrencePlanner.GetNextDueAt, PromotionGateEvaluator.Evaluate, EvaluationWindowPlanner.Plan; removed unnecessary DI registrations (+1 pt). -- DEBT-002 (CA1873): array logging — Avoid unnecessary array allocation in conditional log. Easy fix with guard check. **Target: PR 4c** -- Current: +1 pt resolved; Target: +2 pts total (4pts for 20% Q3 target) ✅ +- ✅ DEBT-002 (CA1873): array logging — Already compliant: all logging uses LoggerMessage delegates. Verified in PR 4b build with CA1873 enabled: 0 warnings. No action needed (+0 pts, marked "No Action"). +- Result: +1 pt resolved (25% of 4pt target). Target rate achievable by completing additional small-effort items from remaining backlog. ### Batch During Feature Work - ~~DEBT-001~~, ~~DEBT-002~~ — Moving to Quick Wins (PR 4 priority)