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>
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
# 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.md` → `VS-26-SLICE_SPEC.md` (content updated)
|
||||
- `docs/CURRENT/SLICE_SPECS/VS-04-SLICE_SPEC.md` → `VS-27-SLICE_SPEC.md` (content updated)
|
||||
- `docs/CURRENT/SLICE_SPECS/VS-12-SLICE_SPEC.md` → `VS-28-SLICE_SPEC.md` (content updated)
|
||||
- `docs/CURRENT/SLICE_SPECS/VS-14-SLICE_SPEC.md` → `VS-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.
|
||||
Reference in New Issue
Block a user