Files
KArtSell.Aegis/docs/DECISIONS/ADR-WBS-001-slice-renumbering.md
T
kjh2064 60c90baa28 docs: resolve VS-03/04/12/14 numbering collision (renumber to VS-26/27/28/29)
Renumbers the four 2026-08-07 slices (ApprovalWorkflow, AuditTrail,
TradeExecution, PortfolioReconciliation) to previously-unused VS-26..29,
leaving WBS_MASTER.csv's original VS-03/04/12/14 definitions (IngestMarketDataPIT,
ApplyCorporateActions, RankBuyCandidates, GenerateDailyRecommendations) untouched,
per docs/DECISIONS/ADR-WBS-001-slice-renumbering.md.

While investigating, found two things not yet resolved by this commit:
- DEBT-017 (duplicate ApprovalWorkflow implementation): the tested backend
  (ApprovalWorkflow/) is [DontRegister]'d dead code; the live one
  (Features/ApprovalWorkflow/, wired in Program.cs) has no dedicated tests.
  AEG-VS-26-01 downgraded from COMPLETED to BLOCKED in the tracker pending an
  architect decision on which implementation is canonical.
- Features/MarketData and Features/Portfolio (VS-03/04/05/08 Market Data
  Ingestion Dashboard, Portfolio Rebalance, Risk Metrics, Dashboard) are a
  third, already-implemented-and-tested body of work entirely absent from
  WBS_PROGRESS_TRACKER.csv. Flagged in CURRENT_ROADMAP.md as a follow-up.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-08 12:47:24 +09:00

5.8 KiB

ADR-WBS-001: Resolve VS-03/04/12/14 numbering collision

Date: 2026-08-08 Status: ACCEPTED (partial — see "Not resolved by this ADR" below) Decision owner: 김재현 (per session 2026-08-08 direction: "실제 구현 트래커 유지, WBS_MASTER 갱신" + "구현된 슬라이스를 새 번호로 재배정")

Context

docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv and docs/CURRENT/SLICE_SPECS/ independently assigned VS-03, VS-04, VS-12, and VS-14 to four slices implemented in 2026-08-07 (PR #23, #24, #28):

Number used by tracker/specs Actual slice
VS-03 Model Approval Workflow (Maker-Checker Governance)
VS-04 Immutable Audit Trail (GDPR/Compliance)
VS-12 Trade Execution System (KIS Integration)
VS-14 Portfolio Reconciliation

These numbers were never checked against docs/CURRENT/CATALOGS/WBS_MASTER.csv, the original 666-row plan, which had already assigned the same four numbers to unrelated, still-unimplemented slices:

Number in WBS_MASTER.csv Original planned slice
VS-03 IngestMarketDataPIT (market data PIT ingestion)
VS-04 ApplyCorporateActions (corporate actions processing)
VS-12 RankBuyCandidates (buy candidate ranking)
VS-14 GenerateDailyRecommendations (daily client recommendation packages)

Separately, src/KArtSell.Host/Features/MarketData/VS03_*.cs and src/KArtSell.Host/Features/Portfolio/VS04_*.cs / VS05_*.cs / VS08_*.cs are a third, already-implemented-and-tested body of work (commits 2bc2b1e, 32b49a4, 14c5e4f, 2eee44d) that also uses VS-03/04/05/08, for yet another set of features (Market Data Ingestion Dashboard, Portfolio Rebalance, Risk Metrics, Dashboard). This body of work is not referenced anywhere in WBS_PROGRESS_TRACKER.csv at all. This ADR does not resolve that — see "Not resolved" below.

Decision

Renumber the four 2026-08-07 slices to previously-unused numbers, leaving WBS_MASTER.csv's original VS-03/04/12/14 rows (and the separate Features/MarketData/Features/Portfolio VS-03/04/05/08 code) untouched:

Old number New number Slice Code location
VS-03 VS-26 Model Approval Workflow src/KArtSell.Modules.ModelOperations/ApprovalWorkflow/ and Features/ApprovalWorkflow/ (see DEBT-017 below)
VS-04 VS-27 Immutable Audit Trail / GDPR src/KArtSell.Modules.ModelOperations/Compliance/
VS-12 VS-28 Trade Execution (KIS) src/KArtSell.Modules.ModelOperations/TradeExecution/
VS-14 VS-29 Portfolio Reconciliation src/KArtSell.Modules.ModelOperations/PortfolioReconciliation/

VS-26 through VS-29 were free (highest number previously used in WBS_MASTER.csv was VS-25).

Why renumber the new slices rather than renumber WBS_MASTER's originals

WBS_MASTER.csv's VS-03/04/12/14 rows are referenced by ID from dozens of other rows across the 666-row file (dependency chains, addendum sections AEG22-*, AEG-V15-*, AEG-V16-* all use VS-03 to mean "MarketData" consistently throughout). Renumbering those in place would touch 50+ rows with a high chance of missing a cross-reference. The four 2026-08-07 slices have a much smaller footprint (2 SLICE_SPEC files each side, 2 README.md files, a handful of tracker rows) and were not yet referenced by ID anywhere else, so moving them was the lower-risk edit.

What changed

  • docs/CURRENT/SLICE_SPECS/VS-03-SLICE_SPEC.mdVS-26-SLICE_SPEC.md (content updated)
  • docs/CURRENT/SLICE_SPECS/VS-04-SLICE_SPEC.mdVS-27-SLICE_SPEC.md (content updated)
  • docs/CURRENT/SLICE_SPECS/VS-12-SLICE_SPEC.mdVS-28-SLICE_SPEC.md (content updated)
  • docs/CURRENT/SLICE_SPECS/VS-14-SLICE_SPEC.mdVS-29-SLICE_SPEC.md (content updated)
  • src/KArtSell.Modules.ModelOperations/ApprovalWorkflow/README.md (VS-03→26, VS-04→27 refs updated)
  • src/KArtSell.Modules.ModelOperations/TradeExecution/README.md (VS-03→26, VS-04→27, VS-12→28, VS-14→29 refs updated)
  • docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv rows AEG-VS-03-01/04-01/12-01/14-01 renamed to AEG-VS-26-01/27-01/28-01/29-01
  • docs/CURRENT/CATALOGS/WBS_MASTER.csv — 4 summary rows appended (VS-26/27/28/29), original rows untouched
  • CURRENT_ROADMAP.md updated to reflect the resolution

Not resolved by this ADR (still needs an explicit decision)

  1. DEBT-017 (duplicate ApprovalWorkflow implementation). While investigating this renumbering, discovered that the VS-26 (formerly VS-03) tracker row credits ApprovalWorkflow/ (Workstream H) with "20/20 tests PASS", but that implementation's endpoints are all [DontRegister]'d in FastEndpoints — i.e. dead, unreachable code. The implementation actually wired into Program.cs and reachable over HTTP is Features/ApprovalWorkflow/ (Workstream G), which has no dedicated test file found. This ADR does not pick a winner between the two. AEG-VS-26-01's status has been changed from COMPLETED to BLOCKED in the tracker pending that decision — see the row's Notes column and TECH_DEBT_REGISTER.md DEBT-017.
  2. Features/MarketData/Features/Portfolio (VS-03/04/05/08 Market Data Ingestion Dashboard, Portfolio Rebalance, Risk Metrics, Dashboard). This is real, committed, tested code (commits 2bc2b1e, 32b49a4, 14c5e4f, 2eee44d, fed750f, e0d58ac) that is completely absent from WBS_PROGRESS_TRACKER.csv. It is not renumbered by this ADR because it appears to be a genuine (if structurally divergent — it lives under Features/ rather than as its own module) implementation attempt at WBS_MASTER.csv's original VS-03/04/05/08 definitions, not a new collision. It needs to be added to the tracker with real evidence (test results, whether it is wired into Program.cs, whether a frontend exists) rather than silently inherited into this renumbering. Flagged in CURRENT_ROADMAP.md as a follow-up.