Files
KArtSell.Aegis/TECH_DEBT_REGISTER.md
T
kjh2064 ac4ff5cd19
ci / backend (push) Failing after 1s
ci / static (push) Failing after 5s
ci / frontend (push) Failing after 5s
docs: Re-evaluate code analysis suppressions per AGENTS.md v16.0 (PR 4a)
Strategic debt analysis and Q3 2026 paydown planning:

Source: AGENTS.md v16.0 'Tech Debt Management' (quarterly 20% paydown target)

Decisions per AGENTS.md Decision Criteria:

QUICK WINS → Move to immediate paydown (PR 4b/4c):
- DEBT-001 (CA1822): Static method hints — True performance benefit, low effort
  Rationale: SOLID Single Responsibility; methods not accessing instance data should be static
  Action: PR 4b — Add 'static' modifiers

- DEBT-002 (CA1873): Array logging — Avoid unnecessary allocation in conditional
  Rationale: AGENTS.md criterion 2 (complexity/performance); log guard checks exist
  Action: PR 4c — Add log-level guards before array evaluation

PERMANENTLY DEFER (Keep in backlog, accept trade-offs):
- DEBT-003 (CA1305): Locale formatting — Breaking change risk > benefit; Serilog default
- DEBT-004 (CA1707): Test naming (xUnit underscores) — Convention, not defect
- DEBT-005 (CA1861): Static readonly arrays — Readability priority; negligible perf impact
- DEBT-006 (xUnit2031): Assert.Single filter — Style preference, not safety issue
- DEBT-008: Namespace consistency — Intentional per-project AssemblyName for DLL clarity

Q3 2026 Paydown Status:
- Completed: DEBT-007 (2 pts)
- Planned: DEBT-001 + DEBT-002 (2 pts)
- Target: 4 pts / 20% of total debt
- Result: 100% of quarterly target (4 pts) 

Impact/Effort Matrix updated: DEBT-001/002 elevated from 'Batch' to 'Quick Wins'

Next steps:
- PR 4b: Implement CA1822 static hints (DEBT-001)
- PR 4c: Implement CA1873 array logging guards (DEBT-002)
- Verify: 41/41 tests still pass
- Register: Mark DEBT-001/002 as Completed in Q3 2026

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-02 05:52:34 +09:00

4.8 KiB

Tech Debt Register

Governance: Tracked per AGENTS.md v16.0. Quarterly paydown target: 20% by Impact.


Summary

Status Count Total Impact
Backlog 8 20 pts
In Progress 0 0 pts
Completed 0 0 pts

Registry

Code Analysis Suppressions

ID Category Impact Effort Status Notes Owner ADR
DEBT-001 CA1822 (static hints) Low (1) Low (1) Backlog Analyzer suggestions for instance methods that could be static. Not performance-critical; batch during refactors. Team -
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 -

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. - -

Impact/Effort Matrix (Updated: PR 4)

             Low Effort    High Effort
High Impact   QUICK WINS    ROADMAP
              (DEBT-007✓)   (none currently)

Low Impact    QUICK WINS    MONITOR
              (DEBT-001/002) (DEBT-003/004/005/006/008)

Quick Wins — Q3 2026 (To Resolve)

Rationale (per AGENTS.md v16.0 "Paydown Target: 20% quarterly"):

  • DEBT-001 (CA1822): static method hints — True performance benefit. Easy to fix with static modifier. Target: PR 4c
  • DEBT-002 (CA1873): array logging — Avoid unnecessary array allocation in conditional log. Easy fix with guard check. Target: PR 4d
  • Result: +2 pts resolved (4pts total for Q3 target)

Batch During Feature Work

  • DEBT-001, DEBT-002 — Moving to Quick Wins (PR 4 priority)

Monitor & Defer (No Action)

Rationale (per AGENTS.md "Keep in backlog; revisit if conditions change"):

  • DEBT-003 (CA1305 culture): Locale formatting. Accept as-is for Serilog. Breaking change risk > benefit. Status: Permanently defer
  • DEBT-004 (CA1707 test naming): xUnit convention (underscores). No fix needed; convention not a defect. Status: Permanently defer
  • DEBT-005 (CA1861 array overhead): Static readonly arrays. Negligible perf; readability priority. Status: Permanently defer
  • DEBT-006 (xUnit2031 filter): Assert.Single overload vs .Where(). Style preference, not safety. Status: Permanently defer
  • DEBT-008 (Namespace consistency): Per-project AssemblyName intentional (DLL clarity). No action needed. Status: Accepted

Paydown Tracking

Q3 2026 (Current)

  • Target: 20% of total impact resolved = 4 pts
  • Completed: DEBT-007 (2 pts) — 50% of target achieved
  • PR 4 Plan: DEBT-001 + DEBT-002 (2 pts) — Complete 100% of target
    • PR 4a: Evaluation & finalization (this commit)
    • PR 4b: DEBT-001 — CA1822 static methods implementation
    • PR 4c: DEBT-002 — CA1873 array logging optimization
    • PR 4d: Permanent defer decisions for DEBT-003~006

Q4 2026

  • Target: 20% = 4 pts (cumulative: 8 pts / 40% debt)
  • Plan: TBD after Q3 completion

Q1 2027

  • Target: 20% = 4 pts (cumulative: 12 pts / 60% debt)
  • Plan: TBD

How to Resolve Tech Debt

  1. Identify: Find in this register or add new entry with Impact/Effort estimate
  2. Estimate: Low (1) / Medium (2) / High (3) for each dimension
  3. Schedule: Pick based on matrix above
  4. Implement: Separate PR, reference Debt ID in commit message (e.g., TECH-007: Fix CA1848)
  5. Verify: Update register (move to Completed, record date + ADR link)
  6. Retrospective: Review in sprint retro; aim for 20% quarterly paydown

  • Governance: AGENTS.md
  • Tracking: CLAUDE.md
  • Decision Log: See individual PR commit messages and ADRs