diff --git a/docs/CURRENT/AEG-X-038_BLOCKER.md b/docs/CURRENT/AEG-X-038_BLOCKER.md new file mode 100644 index 00000000..ca696c47 --- /dev/null +++ b/docs/CURRENT/AEG-X-038_BLOCKER.md @@ -0,0 +1,37 @@ +# AEG-X-038 — Fee/Tax/FX Valid-Time Decision Readiness + +- **WBS ID:** AEG-X-038 +- **Requirement / Test IDs:** REQ-COST-001 / T-COST-PIT +- **Gate:** G1 +- **Selected on:** 2026-08-08 +- **Status:** BLOCKED — no cost policy, data model, or execution path was implemented. + +## Source + +- `docs/CURRENT/CATALOGS/WBS_MASTER.csv`, row `AEG-X-038`, requires reconfirmation of Fee/Tax/FX valid-time schedule decisions and explicitly prohibits a current single-value model. +- Its dependency, `AEG-X-009`, is recorded as completed in `docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv`. +- `docs/CURRENT/CATALOGS/DECISION_LOG.csv`, the source catalog, and the VS-02 governance documents contain no approved Fee/Tax/FX source authority or decision record. +- A repository search of application and test source (excluding generated web assets) found no `Fee`, `Tax`, `FX`, `commission`, or exchange-rate implementation path. The only relevant contract is `contracts/metrics/outcome-metrics.v2.json`, which names costs as a metric input but does not define schedules, sources, or valid-time semantics. + +## Assumption + +- Applicable fee, tax, and FX terms vary by account, venue, instrument, jurisdiction, effective interval, and source publication/correction time. A default rate or a client-supplied value would violate REQ-COST-001 and the constitution's source/PIT rules. + +## Unknown / Decision Required + +1. **Source authority:** identify the approved provider or governing document for each fee, tax, and FX schedule, including licence/retention and owner. +2. **Temporal contract:** approve `effective_from/to`, `published_at`, revision and correction semantics; specify which instant determines a transaction's applicable schedule. +3. **Precedence:** approve deterministic account → venue → instrument → jurisdiction fallback order, including the explicit hold behaviour when no schedule applies. +4. **Scope boundary:** decide whether FX is market data, cost data, or an approved read-model dependency; a module must not directly read another module's source tables. +5. **Operational control:** assign J04C calendar, Owner/Secondary, DQ checks, alert and rollback/replay procedure. + +## Recommended Resolution + +Ops/Tax supplies approved source documents and Compliance/Owner approves the five decisions above. The Data Architect then authors a versioned data contract and an append-only `MIG-COST-001` design. Only after those artifacts are approved can the `MaintainFeeTaxFxSchedule` slice be unblocked. + +## Evidence Produced + +- This source-gap and decision-required record. +- `WBS_PROGRESS_TRACKER.csv` state linked to this record. + +No rates, thresholds, source URLs, API, migration, job, UI, or test results are asserted or invented. No build, test, migration, or Gate pass is claimed. diff --git a/docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv b/docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv index 9a9a3c62..f9591fdf 100644 --- a/docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv +++ b/docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv @@ -31,6 +31,7 @@ AEG-VS-26-01,S2,VS-26,모델 승인 워크플로우 구현 (Maker-Checker Govern AEG-VS-27-01,S2,VS-27,불변 감사 추적 구현 (Audit Trail / GDPR),COMPLETED,2026-08-07,"docs/CURRENT/SLICE_SPECS/VS-27-SLICE_SPEC.md; src/KArtSell.Modules.ModelOperations/Compliance/ (AuditSql.cs, GdprRetention.cs); tests/KArtSell.Integration.Tests/Compliance/AuditTrailTests.cs; commit 97444c9 (Workstream I, PR #24, merged to main)",PM/BE Lead,"✅ Backend implementation + tests complete: append-only audit_events table, GDPR retention tracking + redaction (actor_email→'', customer_id→''), PII fields (ip_address). 5/5 tests PASS run in isolation (2026-08-07). Also fixed same day (fix/dapper-underscore-mapping-and-build branch): ip_address (inet) and kis_response-style jsonb columns threw InvalidCastException when read through Dapper into a typed class; GdprRetention.RetentionEndsAt was declared DateTime against a DATE column, same failure mode; and a process-wide Dapper snake_case-mapping race condition (KArtSell.BuildingBlocks' [ModuleInitializer] only fires once that assembly loads — AuditSql doesn't reliably touch it) intermittently nulled out every column read from this table depending on unrelated test/host startup order. None of this had ever been exercised against a live database before. ⚠️ No frontend UI yet — in progress 2026-08-08. Renumbered from VS-04 to VS-27 on 2026-08-08 per docs/DECISIONS/ADR-WBS-001-slice-renumbering.md — VS-04 in WBS_MASTER.csv ('ApplyCorporateActions') was an unrelated, still-unimplemented slice and keeps its original number unchanged." AEG-VS-05-01,S3,VS-05,정책·범위·실패상태 계약 확정,BLOCKED,-,docs/CURRENT/AEG-VS-05-01_BLOCKER.md,PM/Architect,"2026-08-08: blocked before implementation. WBS defines IngestFundamentalsPIT (REQ-FND-001/DAT-05/MIG-FND-001/002/J04/UI-FND-01/T-FND-001), but existing VS-05 architecture/data contracts define unrelated Risk Metrics. Declared VS-02 dependency is not concretely evidenced beyond AEG-VS-02-01. See blocker record for required PM/Architect decision and Gate G1 evidence. No build/test/migration claimed." AEG-VS-06-01,S3,VS-06,정책·범위·실패상태 계약 확정,BLOCKED,-,docs/CURRENT/AEG-VS-06-01_BLOCKER.md,PM/Architect,"2026-08-08: blocked before implementation. WBS defines MaintainFeeTaxFxSchedule (REQ-COST-001/COST-01/02/MIG-COST-001/J04C/UI-COST-01/T-COST-001), but existing VS-06 architecture/data contracts define unrelated Stress Testing (STRESS-* / migration 0035). Declared VS-02 dependency is not concrete enough for Gate G1. See blocker record for required PM/Architect and Compliance/Owner decisions. No build/test/migration claimed." +AEG-X-038,S3,Cross,Reconfirm Fee/Tax/FX valid-time schedule decisions,BLOCKED,-,docs/CURRENT/AEG-X-038_BLOCKER.md,Ops/Tax,"2026-08-08: source-gap audit completed. AEG-X-009 dependency is complete, but no approved source authority, decision log, data contract, temporal/preference rules, or cost implementation was found. REQ-COST-001/T-COST-PIT cannot be safely implemented until Ops/Tax and Compliance/Owner approve the decisions in the blocker record. No build/test/migration claimed." AEG-X-011,S4,Cross,Golden vector 고도화,BLOCKED,TBD,"AGENTS.md: Algorithm changes require Golden data",Quant/QA,"Gate 2 prerequisite. Blocked by Phase 1 completion. Corrected 2026-08-07: Phase 1 (Job 893/976) has not been started, not 'in progress' — see PHASE-1-SHADOW-RUN row. No countdown is currently running." AEG-VS-09-01,S4,VS-09,BuildEvidenceSnapshot,BLOCKED,TBD,"CLAUDE.md: Evidence requires Phase 1 results",PM/Architect,"Gate 2 prerequisite. Blocked by Phase 1, which has not been started (confirmed 2026-08-07). No src/ implementation exists for this slice." AEG-VS-10-01,S4,VS-10,매도 결정 엔진 구현 (GenerateSellDecision),COMPLETED,2026-08-07,"docs/CURRENT/SLICE_SPECS/VS-10-SLICE_SPEC.md; src/KArtSell.Modules.ModelOperations/SellDecision/ (SellDecisionEndpoints.cs, SellDecisionHandler.cs, SellDecisionSql.cs, SellPriorityRanker.cs); frontend/src/features/sell-decision/; tests/KArtSell.Integration.Tests/SellDecision/SellDecisionTests.cs; commit b1e38ac (Phase 3 J, PR #28, merged to main)",BE Lead/Quant Lead,"✅ Implementation complete (code + BE + FE + tests), matches WBS_MASTER's VS-10='GenerateSellDecision' definition (no ID collision here). Sell priority ranking (HARD_IMPAIRMENT→...→REENTRY_OPTION) with age/liquidity score boosts per VS-10-SLICE_SPEC.md. 32/32 tests PASS run in isolation (2026-08-07); one test (CalculateScore_HardImpairment_ReturnsLowestScore) had a wrong input value that happened to not exercise the >365-day age-boost branch the spec defines — fixed as a test bug, not a product bug (see fix/dapper-underscore-mapping-and-build branch). ⚠️ NOT validated: this row was previously (incorrectly) marked BLOCKED with reasoning 'Model must pass PBO/DSR validation' — that Gate-3/production-readiness validation genuinely still requires real Phase 1 shadow-run data and has not happened. Distinguish 'code implemented and unit/integration-tested' (done) from 'PBO/DSR-validated against real market data' (not done, blocked on Phase 1)."