Initial commit: Add project files
ci / backend (push) Failing after 12s
ci / frontend (push) Failing after 19s
ci / static (push) Failing after 45s

This commit is contained in:
2026-08-02 05:15:36 +09:00
commit dcd1322d41
636 changed files with 122352 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.cs]
indent_style = space
indent_size = 4
dotnet_sort_system_directives_first = true
dotnet_diagnostic.CA2007.severity = none
csharp_style_namespace_declarations = file_scoped:warning
[*.{json,yml,yaml,ts,vue,css,md}]
indent_style = space
indent_size = 2
+80
View File
@@ -0,0 +1,80 @@
name: ci
on:
push:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ci-${{ gitea.ref }}
cancel-in-progress: true
jobs:
static:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: python tools/validate_v16.py
- run: python -m unittest -v
working-directory: research/hardening
- run: python -m unittest -v scripts.tests.test_scaffold_slice scripts.tests.test_scaffold_ui_screen
backend:
runs-on: ubuntu-latest
timeout-minutes: 30
services:
postgres:
image: postgres:17
env:
POSTGRES_DB: kartsell
POSTGRES_USER: kartsell
POSTGRES_PASSWORD: kartsell
ports: ["5432:5432"]
options: >-
--health-cmd "pg_isready -U kartsell"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- run: dotnet restore KArtSell.sln
- run: dotnet build KArtSell.sln --no-restore -c Release
- run: dotnet run --project src/KArtSell.DbMigrator -c Release --no-build
env:
KARTSELL_POSTGRES: Host=localhost;Port=5432;Database=kartsell;Username=kartsell;Password=kartsell
- run: dotnet run --project src/KArtSell.DbMigrator -c Release --no-build
env:
KARTSELL_POSTGRES: Host=localhost;Port=5432;Database=kartsell;Username=kartsell;Password=kartsell
- run: dotnet test KArtSell.sln --no-build -c Release --logger trx
env:
KARTSELL_POSTGRES: Host=localhost;Port=5432;Database=kartsell;Username=kartsell;Password=kartsell
frontend:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- run: test -f frontend/pnpm-lock.yaml || (echo "pnpm-lock.yaml is required for reproducible CI" && exit 1)
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
cache-dependency-path: frontend/pnpm-lock.yaml
- run: pnpm install --frozen-lockfile
working-directory: frontend
- run: pnpm typecheck && pnpm test && pnpm build
working-directory: frontend
- run: pnpm exec playwright install --with-deps chromium && pnpm e2e
working-directory: frontend
+12
View File
@@ -0,0 +1,12 @@
**/bin/
**/obj/
frontend/node_modules/
frontend/dist/
frontend/.env.local
.playwright/
TestResults/
*.user
*.suo
.DS_Store
__pycache__/
*.pyc
+71
View File
@@ -0,0 +1,71 @@
# K-ArtSell Aegis AI Coding Constitution v12.0
1. 자동주문과 KIS 제출 Capability는 OFF다. 별도 승인 Release 전 구현·활성화·우회하지 않는다.
2. 채팅과 생성 코드는 Source of Truth가 아니다. 모든 변경은 Source / Assumption / Unknown / Decision Required를 표시한다.
3. 한 PR은 한 Vertical Slice 또는 한 동작보존 리팩터링 목적만 가진다.
4. Endpoint→Application→Pure Policy→Dapper SQL→Outbox→Tests 경계를 지킨다.
5. Domain Policy는 시간·랜덤·네트워크·DB·DI Container를 직접 읽지 않는다.
6. Generic Repository, God Service, Service Locator, Job 내 비즈니스 정책, 조기 Microservice 분리를 금지한다.
7. 모듈은 다른 모듈 Source Table을 직접 조회하지 않는다. 승인된 Contract/Read Model만 사용한다.
8. `DateTime.Now/UtcNow`를 직접 사용하지 않고 IClock과 MarketCalendar를 사용한다.
9. 금융값은 decimal, 명시적 rounding, 단위 계약을 사용한다. 모델 내부 double은 경계에서 변환한다.
10. `SellRatioOfLot`, `SellQuantity`, `TargetPortfolioWeightAfter`, `StrategicCoreFloorWeight`를 혼용하지 않는다.
11. EvidenceSnapshot·DatasetId·Model/Config/Code SHA 없이 Decision/Recommendation을 저장하지 않는다.
12. Command/Job는 IdempotencyKey/JobRunId/Watermark를 갖고 replay를 견딘다.
13. Evidence/Decision/Audit는 update/delete하지 않고 append/correction event로 보존한다.
14. Write Model은 정규화·append·revision, 화면은 version/watermark/rebuild가 있는 Read Model이다.
15. 서버 상태는 TanStack Query가 소유한다. Pinia에 API 응답을 복제하지 않는다.
16. FE request/response는 Zod로 runtime validation하고 같은 retry에 같은 Idempotency-Key를 재사용한다.
17. `/internal/*` Endpoint는 Roles 또는 Policies를 선언하며 익명 접근을 허용하지 않는다.
18. 알고리즘 변경은 Policy ID, Golden, Frozen OOS, cost×2, false-exit/reentry/ES, ModelCard를 동반한다.
19. 새 library/pattern/table/threshold는 ADR/Issue 승인 없이 도입하지 않는다.
20. 실행하지 못한 build/test/migration을 통과했다고 기록하지 않는다.
21. AI 생성 Migration은 fresh/upgrade/re-run/failure rehearsal 및 DBA 승인 없이는 병합하지 않는다.
22. 실고객 데이터·실계좌·실주문 키·secret를 prompt/fixture/log/trace에 넣지 않는다.
23. Metric·Alert·Runbook·Rollback·Owner/Secondary가 없으면 Done이 아니다.
## v12.1 execution-readiness delta
- Every change must cite Requirement/Slice/Policy/Data/API/DB/Job/UI/Test IDs.
- Production commands load Evidence/Model/Config from approved server-side PIT context; never trust client-supplied evidence.
- Write models are normalized and append/correction based. Denormalization is allowed only in versioned, rebuildable read models.
- Outbox/Inbox/JobRun/Projection operations require scope, idempotency, watermark, hashes, and replay evidence.
- No generic repository, God service, reflection plugin framework, premature microservice, or unapproved threshold.
- Refactoring and policy changes must be separate PRs with characterization or Golden tests first.
- Never claim a build, migration, test, Shadow period, PBO, or DSR result that was not executed and preserved as evidence.
## v12.2 strategic data-semantics delta
- `CurrentSecurityPortfolioWeight`, `CurrentLotPortfolioWeight`, `SellRatioOfLot`, and `StrategicCoreFloorWeight` are distinct units. Never reintroduce the ambiguous `CurrentPortfolioWeight` into active decision code.
- A lot-relative sell changes security weight by `CurrentLotPortfolioWeight * SellRatioOfLot`.
- Persist the ordered policy trace with Applied/Blocked/NotApplicable dispositions; do not expose raw internal scores directly to customers.
- Prior migrations are immutable. v12.2 changes belong in migration `0014` or later.
- The six current-session attachments and their SHA-256 values are part of the release evidence.
- Use the reviewed templates under `templates/`; do not bulk-generate unapproved modules or placeholder implementations.
## v12.3 execution and semantic-version delta
- `weight_semantics_version=1` contexts are legacy ambiguous data and must never enter active decisions; rebuild them as version 2 from explicit security and lot weights.
- A positive opportunity edge with a zero or missing requested sell ratio is BLOCKED. Never clamp missing intent to a minimum sell.
- Policy IDs, priorities and thresholds must match `contracts/policies/sell-policy-contract.v1.json`; drift blocks G2.
- Decision/API/Event/DB evidence must preserve `decision_contract_version` and `policy_trace_schema_version`.
- Outcome metrics must name a definition version, population, numerator, denominator, window and aggregation. Do not equate 63-session research output with an annual target without approval.
- `scripts/scaffold_slice.py` is dry-run by default, refuses overwrite and produces SCAFFOLD_ONLY code. Generated files are not approved implementation.
- The seven cumulative attachments and their SHA-256 values are part of v12.3 release evidence.
## v12.4 Model Operations Constitution
- Scheduler automation is limited to EVALUATION_ONLY, PROPOSAL_ONLY and DRILL_ONLY.
- Never generate or merge automatic model promotion, rollback, threshold mutation, code change, automatic order or KIS submission paths.
- Every evaluation request freezes Dataset/Model/Config/Code/Contract VersionSet from an approved server-side context.
- Metric changes require a versioned numerator, denominator, window, aggregation, PIT/revision rule and Golden/OOS impact.
- Improvement proposals are documents and records only; they do not edit model, policy, configuration or source files.
- Drift thresholds, false-exit definition and retention policy are DECISION_REQUIRED until approved.
## v14.0 UI / Model Feedback non-negotiables
- Feature code MUST NOT import PrimeVue or AG Grid directly. Use shared UI ports and screen types.
- UI provider changes require contract, accessibility, visual, state-matrix and performance evidence.
- Model operation automation stops at evaluation/proposal. Model activation is human change approval only.
- J39 and every new schedule remain disabled until their source, calendar, ownership and alert contracts are approved.
- Never claim .NET, pnpm, PostgreSQL, Playwright or Shadow evidence passed unless the actual artifact is attached.
+8
View File
@@ -0,0 +1,8 @@
# K-ArtSell Aegis v16.0 Distribution
Use `Core_NoLegacy` for development and CI. It contains no nested ZIP archives.
Use `Full_With_Attachments` for source preservation. It contains one prior v15 Core archive.
Execution order: read v10/v12.1 baselines → review v16 docs/decisions → run `python tools/validate_v16.py` → provision .NET 10/pnpm/PostgreSQL → execute build/tests/migration rehearsal → complete Shadow/model gates.
This package is `IMPLEMENTATION_TEMPLATE / STATIC_VALIDATED`. Automatic model activation, customer publication, order submission and KIS submission remain OFF.
+11
View File
@@ -0,0 +1,11 @@
<Project>
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<AnalysisLevel>latest-recommended</AnalysisLevel>
<Deterministic>true</Deterministic>
<ContinuousIntegrationBuild Condition="'$(CI)' == 'true'">true</ContinuousIntegrationBuild>
</PropertyGroup>
</Project>
+27
View File
@@ -0,0 +1,27 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="FastEndpoints" Version="7.1.0" />
<PackageVersion Include="Dapper" Version="2.1.79" />
<PackageVersion Include="Npgsql" Version="10.0.3" />
<PackageVersion Include="DbUp-PostgreSQL" Version="7.0.1" />
<PackageVersion Include="Hangfire.Core" Version="1.8.24" />
<PackageVersion Include="Hangfire.AspNetCore" Version="1.8.24" />
<PackageVersion Include="Hangfire.PostgreSql" Version="1.21.1" />
<PackageVersion Include="Polly" Version="8.7.0" />
<PackageVersion Include="Serilog.AspNetCore" Version="10.0.0" />
<PackageVersion Include="Serilog.Settings.Configuration" Version="10.0.1" />
<PackageVersion Include="Serilog.Sinks.Console" Version="6.1.1" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.17.0" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.17.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.17.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.17.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.17.0" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="10.2.3" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.8.1" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
</ItemGroup>
</Project>
+60
View File
@@ -0,0 +1,60 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.BuildingBlocks", "src/KArtSell.BuildingBlocks/KArtSell.BuildingBlocks.csproj", "{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.Modules.SignalEngine", "src/KArtSell.Modules.SignalEngine/KArtSell.Modules.SignalEngine.csproj", "{C203AEFE-E523-50DF-A0BC-66E41914E411}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.Host", "src/KArtSell.Host/KArtSell.Host.csproj", "{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.DbMigrator", "src/KArtSell.DbMigrator/KArtSell.DbMigrator.csproj", "{C1E481A2-B1C9-5647-8600-DBE8D854552F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.SignalEngine.UnitTests", "tests/KArtSell.SignalEngine.UnitTests/KArtSell.SignalEngine.UnitTests.csproj", "{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.ArchitectureTests", "tests/KArtSell.ArchitectureTests/KArtSell.ArchitectureTests.csproj", "{E62B968F-28A3-5055-8E5E-BFB52EC0175E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.Modules.ModelOperations", "src/KArtSell.Modules.ModelOperations/KArtSell.Modules.ModelOperations.csproj", "{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.ModelOperations.UnitTests", "tests/KArtSell.ModelOperations.UnitTests/KArtSell.ModelOperations.UnitTests.csproj", "{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Release|Any CPU.Build.0 = Release|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Release|Any CPU.Build.0 = Release|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Release|Any CPU.Build.0 = Release|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Release|Any CPU.Build.0 = Release|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Release|Any CPU.Build.0 = Release|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Release|Any CPU.Build.0 = Release|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Release|Any CPU.Build.0 = Release|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
File diff suppressed because it is too large Load Diff
+77
View File
@@ -0,0 +1,77 @@
# K-ArtSell Aegis v16.0
Reference implementation closure for governed advisory research. `RESEARCH_CANDIDATE_NOT_PRODUCTION`; automatic order/KIS/model activation OFF.
**상태:** `IMPLEMENTATION_TEMPLATE / STATIC_VALIDATED / BUILD_DB_E2E_SHADOW_REHEARSAL_REQUIRED`
**운영 경계:** `RESEARCH_CANDIDATE_NOT_PRODUCTION · 투자자문형 우선 · 자동주문/KIS 제출 OFF · 자동 모델승격 OFF`
v16.0은 v10.0의 Baseline Preservation + Delta + Supersession + Traceability, RG-01~08, PIT·불변 Evidence·26 Vertical Slice 기준과 v12.1~v14.0 실행 패키지를 삭제하지 않고 보존한 누적 Delta다. 화면 수나 코드량을 생산준비도로 간주하지 않으며, `Source/License → PIT/Revision/DQ → Evidence/Version Set → Sell/Reentry → Recommendation → Maker-Checker → Publish → Outcome → Reconciliation/DR`의 완결성으로 판단한다.
## v16.0 핵심 Delta
### FE 표준화·교체 가능성
- UI Adapter Contract v3.0과 14개 Capability를 제공한다.
- 업무 Feature에서 PrimeVue/AG Grid 직접 import를 금지하고 `shared/ui/adapter` 경계 안에서만 허용한다.
- `Ks*` Wrapper, `CrudWorkspaceLayout`, `OperationsConsoleLayout`, 표준 CRUD List/Form Page, URL Query Codec, 공통 13상태 Matrix를 제공한다.
- Adapter 교체는 contract conformance, keyboard/focus/a11y, T01~T10 회귀, visual regression, bundle·license 검사와 release approval을 통과해야 한다.
### BE·데이터·스케줄러 실행완결성
- Endpoint → Application → Domain Policy → Dapper/Npgsql → Outbox/Inbox를 한 Vertical Slice로 완결한다.
- 스케줄 실행은 `scheduledFor` anchor, catch-up 정책, BusinessHold, dispatch revision, correlation, version set을 보존한다.
- 평가창은 달력 일이 아니라 MarketCalendar의 1/5/20/63/126/252 거래세션으로 성숙도를 판정한다.
- `prediction_evaluation_window`, `metric_cohort_definition`, `ui_contract_release`와 append-only 보호를 Migration 0020에 추가했다.
- J39 FeedbackCycleIntegrityAudit와 J40 EvaluationWindowIntegrityAudit는 기본 `disabled`다.
### 알고리즘·지속 모델운영
- 매도 우선순위는 `HARD_IMPAIRMENT → PORTFOLIO_SURVIVAL → DYNAMIC_PROFIT_FLOOR → CONCENTRATION/LIQUIDITY → OPPORTUNITY_COST → REENTRY_OPTION`으로 고정한다.
- 비가치훼손 매도는 ReentryWatch, 새 CycleId/Lot, 단계간격·만료·중복방지를 동반한다.
- 모델 루프는 Freeze → Mature → Score → Diagnose → Hypothesis → Challenger → Validate → Review → Manual Activation으로 제한한다.
- 자동 재학습·자동 승격·자동 주문을 하지 않으며 모든 활성화는 ModelCard, OOS/PBO/DSR, maker-checker, effective_at, rollback evidence를 요구한다.
## 실행 자료 규모
- 상세 WBS: 576건(기존 480 + v15 Delta 96)
- 기술부채: 124건
- Decision Log: 80건
- Traceability Matrix: 101건
- FE Component Catalogue: 43건
- Job Catalogue: 26건
## 먼저 읽을 문서
1. `docs/v15_0/K-ArtSell_Aegis_v15_0_실행완결성_표준UI_지속모델운영_통합고도화_제안서.docx`
2. `docs/v15_0/00_EXECUTIVE_CRITICAL_PROPOSAL.md`
3. `docs/v15_0/01_ROLE_BASED_BRUTAL_AUDIT.md`
4. `docs/v15_0/02_FRONTEND_STANDARD_AND_ADAPTER_V3.md`
5. `docs/v15_0/03_SCHEDULER_AND_CONTINUOUS_FEEDBACK.md`
6. `docs/v15_0/08_DETAILED_WBS_MASTER.csv`
7. `docs/v15_0/TECH_DEBT_REGISTER.csv`
## 주요 구현 경로
- FE Adapter/Wrapper: `frontend/src/shared/ui/adapter/`, `frontend/src/shared/ui/components/`
- 표준 CRUD/Layout: `frontend/src/shared/crud/`, `frontend/src/shared/ui/layouts/`
- UI 계약: `contracts/ui/ui-adapter.v3.json`, `crud-page.v1.json`, `layout-regions.v1.json`
- 스케줄 계약: `contracts/schedules/model-operations.v3.json`
- 모델운영 도메인: `src/KArtSell.Modules.ModelOperations/Domain/`
- DB Delta: `db/migrations/0020_v15_execution_and_ui_contract_hardening.sql`
- 화면/Slice 생성기: `tools/scaffold_ui_screen.py`, `tools/scaffold_vertical_slice.py`
- 원본 첨부: `attachments/current_session/`, `attachments/source_archives/`
## 현재 검증 진실성
확인 완료:
- v15 정적 패키지 검증: `PASS=1 / WARN=2 / FAIL=0`
- Python 정책 Golden: 4 tests PASS
- Scaffold 검증: 3 tests PASS
- DOCX: 18페이지 전부 렌더·육안 확인, 접근성 감사 `high=0 / medium=0 / low=0`
아직 통과로 주장하지 않는 Gate:
- `.NET 10 restore/build/test`
- `pnpm frozen install/typecheck/Vitest/build/Playwright`
- PostgreSQL DbUp fresh/upgrade/re-run/failure-recovery
- Outbox/Inbox crash/replay, DR·대사 리허설
- 최소 252거래일 Shadow, 복수 국면 OOS, PBO/DSR
위 Gate가 충족되기 전에는 생산 배포, 투자일임형, 자동주문 또는 자동 모델승격으로 해석하지 않는다.
@@ -0,0 +1,43 @@
{
"version": "v16.0",
"files": [
{
"File": "K-ArtSell_퀀트투자자문_SI_본프로그램착수_누적고도화_통합실행기준서_v10.0(1).docx",
"Relative_Path": "attachments/current_session/K-ArtSell_퀀트투자자문_SI_본프로그램착수_누적고도화_통합실행기준서_v10.0(1).docx",
"Size": 402134,
"SHA256": "d86795186ec5f578741d64618eb53278a1c3a55795e73307e5bee245980a83a6",
"Role": "최상위 누적 실행기준서",
"Package": "CORE_AND_FULL",
"Treatment": "RETAINED_UNMODIFIED"
},
{
"File": "K-ArtSell_Aegis_v12_1_실행준비_통합고도화_제안서(1).docx",
"Relative_Path": "attachments/current_session/K-ArtSell_Aegis_v12_1_실행준비_통합고도화_제안서(1).docx",
"Size": 64063,
"SHA256": "eab0c2866b6c3d5d1f2fd8b9fbb33443e010e1adc2cfe612f27a98f97845e8b3",
"Role": "실행준비 통합 제안서",
"Package": "CORE_AND_FULL",
"Treatment": "RETAINED_UNMODIFIED"
},
{
"File": "K-ArtSell_Aegis_v15_0_통합고도화_제안서.docx",
"Relative_Path": "attachments/current_session/K-ArtSell_Aegis_v15_0_통합고도화_제안서.docx",
"Size": 52933,
"SHA256": "ef7e5746f129ecf14d1bc7d7bd5705fe44ca72251b050769506beb343e28c0a0",
"Role": "직전 통합 고도화 제안서",
"Package": "CORE_AND_FULL",
"Treatment": "RETAINED_UNMODIFIED"
},
{
"File": "KArtSell_Aegis_v15_0_Core_NoLegacy(1).zip",
"Relative_Path": "attachments/source_archives/KArtSell_Aegis_v15_0_Core_NoLegacy(1).zip",
"Size": 4390109,
"SHA256": "6c88d2442c831fa11d42726951592929caf2b5bd5847e6b42f9ad9ef28ee1b95",
"Role": "직전 Core 구현 기준선",
"Package": "FULL_ONLY",
"Treatment": "RETAINED_UNMODIFIED"
}
],
"all_match": true,
"nested_zip_policy": "CORE excludes ZIP; FULL contains one v15 Core archive"
}
+9
View File
@@ -0,0 +1,9 @@
# Versioned contracts
This directory is the machine-readable contract surface for policy, event and outcome-metric definitions.
- `policies/sell-policy-contract.v1.json`: approved research-candidate implementation values; SHA-256 `a269a0331b83c0f6ec108e7587de1d20c798036ff8d0c03d726cd854e73d8480`.
- `events/signal-decision-created.v2.schema.json`: immutable outbox payload contract.
- `metrics/outcome-metrics.v1.json`: proposed metric definitions; Quant/Risk approval is still required.
The C# constants are intentionally checked against the policy JSON by `scripts/validate_v123.py`. A changed value without a Model Change record, Golden vectors and OOS impact evidence blocks G2.
+22
View File
@@ -0,0 +1,22 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "PIT Execution Envelope",
"contractVersion": "1.0",
"required": [
"asOf",
"publishedAtCutoff",
"datasetId",
"modelVersion",
"configVersion",
"codeSha",
"contractVersion",
"contentHash",
"correlationId"
],
"rules": [
"server-resolved-context",
"no-client-evidence-trust",
"append-only-evidence",
"tradable-session-cutoff"
]
}
@@ -0,0 +1,21 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Projection Contract",
"contractVersion": "1.0",
"required": [
"projectionName",
"projectionVersion",
"sourceWatermark",
"builtAt",
"staleAfter",
"rebuildPolicy",
"owner"
],
"states": [
"CURRENT",
"STALE",
"REBUILDING",
"FAILED",
"QUARANTINED"
]
}
@@ -0,0 +1,69 @@
{
"$id": "https://kartsell.local/contracts/events/signal-decision-created.v2.schema.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"action": {
"enum": [
"Hold",
"PartialSell",
"FullSell"
]
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"datasetId": {
"minLength": 1,
"type": "string"
},
"decisionContractVersion": {
"const": "sell-decision.v2"
},
"decisionId": {
"format": "uuid",
"type": "string"
},
"evidenceId": {
"minLength": 1,
"type": "string"
},
"policyId": {
"minLength": 1,
"type": "string"
},
"policyTraceSchemaVersion": {
"const": 2
},
"positionLotId": {
"format": "uuid",
"type": "string"
},
"sellRatioOfLot": {
"maximum": 1,
"minimum": 0,
"type": "number"
},
"targetSecurityPortfolioWeightAfter": {
"maximum": 1,
"minimum": 0,
"type": "number"
}
},
"required": [
"decisionId",
"positionLotId",
"policyId",
"action",
"sellRatioOfLot",
"targetSecurityPortfolioWeightAfter",
"evidenceId",
"datasetId",
"decisionContractVersion",
"policyTraceSchemaVersion",
"createdAt"
],
"title": "SignalDecisionCreated v2",
"type": "object"
}
+35
View File
@@ -0,0 +1,35 @@
{
"metrics": [
{
"aggregation": "quantity weighted",
"definitionVersion": "1.0.0",
"denominator": "eligible sold quantity with complete PIT total-return outcome",
"metricId": "FALSE_EXIT_63D",
"notes": "Not directly comparable to annual 2% target until annualization and cohort rules are approved",
"numerator": "sold quantity whose benchmark-adjusted total return from decision price to window end is positive beyond approved materiality threshold",
"population": "non-hard sell decisions",
"windowTradingSessions": 63
},
{
"aggregation": "watch count",
"definitionVersion": "1.0.0",
"denominator": "eligible watches with complete observations",
"metricId": "REENTRY_CAPTURE_126D",
"minimumTarget": 0.65,
"numerator": "eligible watches that create an approved stage before expiry",
"population": "reentry-eligible sell decisions",
"windowTradingSessions": 126
},
{
"aggregation": "count",
"definitionVersion": "1.0.0",
"denominator": "not applicable",
"maximumTarget": 0,
"metricId": "DUPLICATE_STAGE_COUNT",
"numerator": "duplicate execution attempts accepted",
"population": "all reentry stages"
}
],
"registryVersion": "outcome-metrics.v1",
"status": "PROPOSED_REQUIRES_QUANT_RISK_APPROVAL"
}
+56
View File
@@ -0,0 +1,56 @@
{
"contractVersion": "outcome-metrics.v2",
"status": "PROPOSED",
"commonRules": {
"pointInTime": true,
"revisionAware": true,
"costs": ["fee", "tax", "fx", "slippage"],
"windowsTradingDays": [1, 5, 20, 63, 126, 252],
"attribution": ["recommendation", "publication", "clientDecision", "execution"]
},
"metrics": [
{
"metricCode": "OPERATIONAL_INTEGRITY_ERRORS",
"numerator": "count of duplicate, lookahead, unauthorized publication, unreconciled critical breaks and immutable-evidence violations",
"denominator": "one evaluation run",
"aggregation": "sum",
"threshold": "0"
},
{
"metricCode": "FALSE_EXIT_ANNUAL_RATE",
"numerator": "eligible non-impairment exits followed by approved adverse-regret condition within the versioned evaluation window",
"denominator": "all eligible non-impairment exits in the same cohort",
"aggregation": "annualized cohort ratio",
"threshold": "<=0.02",
"decisionRequired": "The exact adverse-regret price and benchmark definition must be approved before production use."
},
{
"metricCode": "REENTRY_CAPTURE_RATE",
"numerator": "eligible exits whose versioned reentry contract produced a valid stage-ready observation within 126 trading days",
"denominator": "all eligible non-impairment exits with complete data",
"aggregation": "cohort ratio",
"threshold": ">=0.65"
},
{
"metricCode": "NET_EXPECTED_UTILITY",
"numerator": "realized or calibrated expected benefit after risk, fee, tax, FX, slippage and reentry option loss",
"denominator": "one evaluated decision or cohort",
"aggregation": "mean with confidence interval",
"threshold": ">0 and lower confidence bound >0 for opportunity replacement"
},
{
"metricCode": "PBO",
"numerator": "CSCV combinations where in-sample winner underperforms out of sample",
"denominator": "all approved CSCV combinations",
"aggregation": "probability",
"threshold": "<=0.20"
},
{
"metricCode": "DSR",
"numerator": "deflated performance statistic adjusted for multiple testing and non-normality",
"denominator": "approved experiment registry",
"aggregation": "probability/confidence",
"threshold": ">=0.95"
}
]
}
@@ -0,0 +1,20 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Model Evaluation and Promotion Contract v2",
"contractVersion": "2.0",
"promotionMode": "HUMAN_CHANGE_APPROVAL_ONLY",
"automaticActivation": false,
"automaticOrder": false,
"requiredEvidence": [
"252-trading-session-shadow",
"multiple-regimes",
"calibration",
"sell-reentry-attribution",
"PBO",
"DSR",
"double-cost-positive",
"independent-validation",
"rollback-evidence",
"operations-integrity"
]
}
@@ -0,0 +1,18 @@
{
"contractVersion": "1.0.0",
"classes": [
{"code":"SOURCE","description":"Original source, license, schema or policy evidence"},
{"code":"RUNTIME","description":"Build, test, migration, performance or operational evidence"},
{"code":"RESEARCH","description":"Frozen backtest, OOS, calibration, PBO/DSR or model-comparison evidence"},
{"code":"RELEASE","description":"Approved release bundle with required runtime and governance artifacts"},
{"code":"AUDIT","description":"Immutable decision, review, correction and chain-of-custody evidence"}
],
"statusTransitions": {
"IMPLEMENTATION_TEMPLATE": ["STATIC_VALIDATED"],
"STATIC_VALIDATED": ["BUILD_VALIDATED"],
"BUILD_VALIDATED": ["DB_REHEARSED"],
"DB_REHEARSED": ["SHADOW_READY"],
"SHADOW_READY": ["PILOT_REVIEW_REQUIRED"]
},
"forbiddenShortcut": "No state may be inferred from file presence or document version number."
}
@@ -0,0 +1,32 @@
{
"contractVersion": "promotion-gate.v1",
"status": "PROPOSED",
"boundary": "EVIDENCE_ONLY_NO_AUTO_PROMOTION",
"thresholds": {
"minimumShadowTradingDays": 252,
"preferredShadowTradingDays": 504,
"minimumDistinctRegimes": 2,
"maximumFalseExitAnnualRate": 0.02,
"minimumReentryCaptureRate": 0.65,
"maximumPbo": 0.20,
"minimumDsr": 0.95,
"positiveNetExpectedUtility": true,
"positiveUnderDoubleCost": true,
"operationalIntegrityErrors": 0,
"calibrationStable": true
},
"mandatoryApprovals": [
"IndependentValidation",
"Risk",
"InvestmentCommittee",
"Compliance",
"Security",
"Operations"
],
"forbiddenActions": [
"automatic model activation",
"automatic threshold change",
"automatic order submission",
"KIS submission"
]
}
@@ -0,0 +1,83 @@
{
"changeControl": "MODEL_CHANGE_AND_GOLDEN_OOS_REQUIRED",
"contractVersion": "sell-policy.v1",
"decisionContractVersion": "sell-decision.v2",
"policies": [
{
"condition": "approved hard impairment",
"documentedRange": [
0.8,
1.0
],
"mayCrossStrategicCore": true,
"policyId": "ALG-SELL-001",
"priority": 1000,
"reentryEligible": false,
"requestedSellRatioOfLot": 1.0,
"terminal": true
},
{
"condition": "capital floor breached",
"decisionRequired": "Whether portfolio survival bypasses same-direction cooldown",
"mayCrossStrategicCore": true,
"policyId": "ALG-SELL-PORT-001",
"priority": 900,
"ratioSource": "server PIT risk context",
"reentryEligible": true,
"terminal": true
},
{
"condition": {
"gapBelowFloorAtrGte": 1.5
},
"documentedRange": [
0.3,
0.5
],
"mayCrossStrategicCore": false,
"policyId": "ALG-SELL-002",
"priority": 800,
"reentryEligible": true,
"requestedSellRatioOfLot": 0.4,
"terminal": false
},
{
"condition": {
"consecutiveCloseBreachesGte": 2
},
"documentedRange": [
0.15,
0.25
],
"mayCrossStrategicCore": false,
"policyId": "ALG-SELL-003",
"priority": 700,
"reentryEligible": true,
"requestedSellRatioOfLot": 0.2,
"terminal": false
},
{
"condition": "approved concentration/liquidity excess ratio > 0",
"mayCrossStrategicCore": false,
"policyId": "ALG-SELL-004",
"priority": 600,
"ratioSource": "server PIT portfolio risk context",
"reentryEligible": true,
"terminal": false
},
{
"condition": "opportunity edge lower bound > 0 and requested ratio > 0",
"mayCrossStrategicCore": false,
"policyId": "ALG-SELL-005",
"priority": 500,
"reentryEligible": true,
"requestedRange": [
0.1,
0.25
],
"terminal": false
}
],
"policyTraceSchemaVersion": 2,
"status": "RESEARCH_CANDIDATE_NOT_PRODUCTION"
}
@@ -0,0 +1,27 @@
{
"contractVersion": "1.0.0",
"boundary": "EVIDENCE_ONLY_NO_AUTO_MODEL_OR_ORDER_MUTATION",
"dispatcher": {
"enabledByDefault": false,
"defaultCronUtc": "*/15 * * * *",
"leaseMinutes": 14,
"batchLimit": 50,
"requiresCapability": "ShadowEvaluation"
},
"operations": [
{"code":"J25","name":"SourceContractDriftCheck","cadence":"DAILY","mode":"EVALUATION_ONLY","queue":"q-evaluation","enabledByDefault":false},
{"code":"J26","name":"MarketCalendarCompletenessCheck","cadence":"DAILY","mode":"EVALUATION_ONLY","queue":"q-market-data","enabledByDefault":false},
{"code":"J27","name":"EvidenceChainAudit","cadence":"DAILY","mode":"EVALUATION_ONLY","queue":"q-control","enabledByDefault":false},
{"code":"J28","name":"ProjectionFreshnessCheck","cadence":"DAILY","mode":"EVALUATION_ONLY","queue":"q-evaluation","enabledByDefault":false},
{"code":"J29","name":"CapacitySlaTrend","cadence":"WEEKLY","mode":"EVALUATION_ONLY","queue":"q-control","enabledByDefault":false},
{"code":"J30","name":"ReleaseEvidenceAssemble","cadence":"EVENT_DRIVEN","mode":"PROPOSAL_ONLY","queue":"q-control","enabledByDefault":false}
],
"forbiddenEffects": [
"MODEL_VERSION_ACTIVATION",
"MODEL_CONFIGURATION_MUTATION",
"CODE_MERGE",
"CLIENT_PUBLICATION",
"BROKER_ORDER_SUBMISSION",
"KIS_SUBMISSION"
]
}
@@ -0,0 +1,34 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Scheduled Execution Ledger",
"contractVersion": "1.0",
"required": [
"operationCode",
"scopeKey",
"scheduledFor",
"dispatchRevision",
"leaseToken",
"idempotencyKey",
"versionSet",
"state",
"reasonCode",
"heartbeatAt"
],
"states": [
"REQUESTED",
"LEASED",
"RUNNING",
"SUCCEEDED",
"BUSINESS_HOLD",
"FAILED",
"QUARANTINED",
"ABANDONED"
],
"rules": [
"fencing-token-required",
"scheduled-for-anchor",
"no-blind-retry",
"terminal-state-immutable",
"manual-model-activation-only"
]
}
@@ -0,0 +1,28 @@
{
"contractVersion": "model-operations.v1",
"status": "IMPLEMENTATION_TEMPLATE",
"algorithmStatus": "RESEARCH_CANDIDATE_NOT_PRODUCTION",
"dispatcher": {
"jobId": "model-operations-dispatcher-v1",
"cadence": "EVERY_15_MINUTES",
"queue": "q-control",
"leaseMinutes": 14,
"batchLimit": 50
},
"automationBoundary": {
"allowed": ["EVALUATION_ONLY", "PROPOSAL_ONLY", "DRILL_ONLY"],
"forbidden": ["AUTO_PROMOTE", "AUTO_ROLLBACK", "AUTO_PARAMETER_CHANGE", "AUTO_ORDER", "KIS_SUBMISSION"]
},
"operations": [
{"operationCode":"J10","name":"OutcomeEvaluationRun","cadence":"DAILY","queue":"q-evaluation","mode":"EVALUATION_ONLY","gate":"G3"},
{"operationCode":"J11","name":"DailyScorecardBuild","cadence":"DAILY","queue":"q-evaluation","mode":"EVALUATION_ONLY","gate":"G3"},
{"operationCode":"J17","name":"DriftDetectionRun","cadence":"DAILY","queue":"q-evaluation","mode":"EVALUATION_ONLY","gate":"G4"},
{"operationCode":"J18","name":"ChampionChallengerEvaluation","cadence":"WEEKLY","queue":"q-evaluation","mode":"EVALUATION_ONLY","gate":"G4"},
{"operationCode":"J19","name":"FrozenOosBacktest","cadence":"MONTHLY","queue":"q-research","mode":"EVALUATION_ONLY","gate":"G4"},
{"operationCode":"J20","name":"RobustnessPboDsrRun","cadence":"QUARTERLY","queue":"q-research","mode":"EVALUATION_ONLY","gate":"G4"},
{"operationCode":"J21","name":"ModelImprovementProposalBuild","cadence":"MONTHLY","queue":"q-research","mode":"PROPOSAL_ONLY","gate":"G4"},
{"operationCode":"J22","name":"PromotionEvidenceReviewBuild","cadence":"MONTHLY","queue":"q-control","mode":"PROPOSAL_ONLY","gate":"G4"},
{"operationCode":"J23","name":"ModelRollbackDrill","cadence":"QUARTERLY","queue":"q-control","mode":"DRILL_ONLY","gate":"G5"},
{"operationCode":"J24","name":"DataRevisionRevalidation","cadence":"WEEKLY","queue":"q-backfill","mode":"EVALUATION_ONLY","gate":"G3"}
]
}
@@ -0,0 +1,116 @@
{
"contractVersion": "model-operations.v2",
"status": "IMPLEMENTATION_TEMPLATE",
"algorithmStatus": "RESEARCH_CANDIDATE_NOT_PRODUCTION",
"dispatcher": {
"jobId": "model-operations-dispatcher-v1",
"cadence": "EVERY_15_MINUTES",
"queue": "q-control",
"leaseMinutes": 14,
"batchLimit": 50,
"enabledByDefault": false
},
"automationBoundary": {
"allowed": [
"EVALUATION_ONLY",
"PROPOSAL_ONLY",
"DRILL_ONLY"
],
"forbidden": [
"AUTO_PROMOTE",
"AUTO_ROLLBACK",
"AUTO_PARAMETER_CHANGE",
"AUTO_ORDER",
"KIS_SUBMISSION",
"CLIENT_PUBLICATION"
]
},
"evaluationClock": {
"predictionFreeze": "before approved market cutoff",
"labelMaturity": "trading-session windows 1/5/20/63/126/252",
"revisionPolicy": "new revision; never overwrite prior evidence"
},
"operations": [
{
"operationCode": "J31",
"name": "PredictionFreezeRun",
"cadence": "DAILY",
"queue": "q-evaluation",
"mode": "EVALUATION_ONLY",
"gate": "G3",
"enabledByDefault": false
},
{
"operationCode": "J32",
"name": "OutcomeMaturitySweep",
"cadence": "DAILY",
"queue": "q-evaluation",
"mode": "EVALUATION_ONLY",
"gate": "G3",
"enabledByDefault": false
},
{
"operationCode": "J33",
"name": "SellReentryAttributionReview",
"cadence": "WEEKLY",
"queue": "q-evaluation",
"mode": "EVALUATION_ONLY",
"gate": "G4",
"enabledByDefault": false
},
{
"operationCode": "J34",
"name": "CalibrationRegimeReview",
"cadence": "WEEKLY",
"queue": "q-evaluation",
"mode": "EVALUATION_ONLY",
"gate": "G4",
"enabledByDefault": false
},
{
"operationCode": "J35",
"name": "ImprovementHypothesisBuild",
"cadence": "MONTHLY",
"queue": "q-research",
"mode": "PROPOSAL_ONLY",
"gate": "G4",
"enabledByDefault": false
},
{
"operationCode": "J36",
"name": "ChallengerExperimentPlan",
"cadence": "MONTHLY",
"queue": "q-research",
"mode": "PROPOSAL_ONLY",
"gate": "G4",
"enabledByDefault": false
},
{
"operationCode": "J37",
"name": "IndependentValidationPack",
"cadence": "QUARTERLY",
"queue": "q-control",
"mode": "PROPOSAL_ONLY",
"gate": "G4",
"enabledByDefault": false
},
{
"operationCode": "J38",
"name": "ModelPolicyDebtReview",
"cadence": "MONTHLY",
"queue": "q-control",
"mode": "PROPOSAL_ONLY",
"gate": "G5",
"enabledByDefault": false
},
{
"operationCode": "J39",
"name": "FeedbackCycleIntegrityAudit",
"cadence": "DAILY",
"queue": "q-control",
"mode": "EVALUATION_ONLY",
"gate": "G4",
"enabledByDefault": false
}
]
}
@@ -0,0 +1,20 @@
{
"contractVersion": "model-operations.v3",
"status": "IMPLEMENTATION_TEMPLATE",
"algorithmStatus": "RESEARCH_CANDIDATE_NOT_PRODUCTION",
"dispatcher": {"jobId":"model-operations-dispatcher-v1","cadence":"EVERY_15_MINUTES","queue":"q-control","leaseMinutes":14,"batchLimit":50,"enabledByDefault":false},
"scheduleSemantics": {
"anchor":"next due time advances from scheduledFor, not worker dispatch time",
"timezone":"IANA/approved calendar mapping; UTC storage",
"catchUpPolicies":["LATEST_ONLY","SKIP_MISSED","ALL_WITH_LIMIT"],
"businessHold":"no blind retry; reason, owner, holdUntil and evidence required",
"idempotency":"operation:scope:scheduleVersion:scheduledForUtc"
},
"executionStates":["REQUESTED","RUNNING","SUCCEEDED","BUSINESS_HOLD","FAILED","QUARANTINED"],
"evaluationWindows":[1,5,20,63,126,252],
"automationBoundary": {
"allowed":["EVALUATION_ONLY","PROPOSAL_ONLY","DRILL_ONLY"],
"forbidden":["AUTO_PROMOTE","AUTO_ROLLBACK","AUTO_PARAMETER_CHANGE","AUTO_ORDER","KIS_SUBMISSION","CLIENT_PUBLICATION"]
},
"newOperation": {"operationCode":"J40","name":"EvaluationWindowIntegrityAudit","enabledByDefault":false,"mode":"EVALUATION_ONLY","gate":"G4"}
}
+9
View File
@@ -0,0 +1,9 @@
{
"contractVersion": "crud-page.v1",
"stateOwners": {"server":"TanStack Query","form":"vee-validate + Zod","url":"vue-router","sessionAndUiPreference":"Pinia"},
"requiredRequestHeaders": ["Idempotency-Key for commands", "If-Match for updates where concurrency applies", "X-Correlation-Id"],
"requiredResponseMetadata": ["asOf", "projectionVersion", "stale", "watermark where applicable"],
"listQuery": ["page", "pageSize", "search", "sort[]", "filter[]"],
"failureStates": ["LOADING","EMPTY","WARN","ERROR","UNAUTHORIZED","FORBIDDEN","PARTIAL","DIRTY","CONFLICT","EXPIRED","READONLY","PROCESSING"],
"forbidden": ["server data duplicated in Pinia", "vendor grid state stored in domain feature", "silent overwrite after 409/412", "delete without reason and audit"]
}
+37
View File
@@ -0,0 +1,37 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "K-ArtSell CRUD Resource Contract v2",
"contractVersion": "2.0",
"required": [
"resourceId",
"querySchemaVersion",
"responseSchemaVersion",
"permissionPolicy",
"concurrencyMode",
"idempotencyMode",
"sensitiveFields"
],
"properties": {
"concurrencyMode": {
"enum": [
"NONE",
"ETAG_IF_MATCH"
]
},
"idempotencyMode": {
"enum": [
"NONE",
"IDEMPOTENCY_KEY"
]
},
"queryOwnership": {
"const": "VUE_ROUTER"
},
"serverStateOwnership": {
"const": "TANSTACK_QUERY"
},
"formOwnership": {
"const": "VEE_VALIDATE_ZOD"
}
}
}
+5
View File
@@ -0,0 +1,5 @@
{
"contractVersion":"layout-regions.v1",
"regions":["Header","Summary","Filter","Main","SidePanel","ActionBar","AuditHelp"],
"rules":["one h1 per page","actions remain visible without covering content","evidence context is visible","responsive order follows task order","operation screens expose run status and watermark"]
}
+22
View File
@@ -0,0 +1,22 @@
{
"contractVersion": "2.0",
"templates": [
{ "id": "T01", "component": "SearchListCrudPage", "purpose": "search/list CRUD" },
{ "id": "T02", "component": "DetailReadPage", "purpose": "read-only detail with evidence" },
{ "id": "T03", "component": "EditFormPage", "purpose": "create/update form" },
{ "id": "T04", "component": "MasterDetailCrudPage", "purpose": "master-detail CRUD" },
{ "id": "T05", "component": "ApprovalWorkbenchPage", "purpose": "maker-checker review" },
{ "id": "T06", "component": "StepWizardPage", "purpose": "multi-step workflow" },
{ "id": "T07", "component": "ScorecardDashboardPage", "purpose": "dashboard and scorecard" },
{ "id": "T08", "component": "BatchOperationsPageV2", "purpose": "batch and data operations" },
{ "id": "T09", "component": "ReconciliationExceptionPage", "purpose": "reconciliation and correction" },
{ "id": "T10", "component": "VersionGovernancePage", "purpose": "version comparison and governance" }
],
"mandatoryCrossCutting": [
"loading/empty/warn/error/unauthorized/partial states",
"as-of and version evidence",
"permission boundary",
"correlation and audit link",
"responsive and keyboard operation"
]
}
+16
View File
@@ -0,0 +1,16 @@
{
"contractVersion": "2.0",
"requiredCapabilities": [
"button", "text-field", "text-area", "select", "checkbox",
"date-field", "number-field", "dialog", "status-tag", "data-grid"
],
"providers": [
{ "id": "primevue-aggrid", "productionEligible": true, "selection": "VITE_UI_ADAPTER=primevue" },
{ "id": "native-accessible", "productionEligible": false, "selection": "VITE_UI_ADAPTER=native" }
],
"featureImportRule": "Feature code imports only from @/shared/ui/components, @/shared/ui/layouts or @/shared/ui/screen-types.",
"replacementGate": [
"adapter contract tests", "accessibility keyboard tests", "visual regression",
"screen-state matrix", "large-list performance", "security review"
]
}
+12
View File
@@ -0,0 +1,12 @@
{
"contractVersion": "3.0",
"status": "CURRENT",
"principle": "Feature code depends on normalized K-ArtSell contracts, never vendor props or events.",
"requiredCapabilities": ["button","text-field","text-area","select","multi-select","checkbox","date-field","number-field","dialog","status-tag","inline-message","paginator","tabs","data-grid"],
"providers": [
{"id":"primevue-aggrid","productionEligible":true,"boundary":"frontend/src/shared/ui/adapter/primevue"},
{"id":"native-accessible","productionEligible":false,"purpose":"reference and contract conformance"}
],
"forbidden": ["vendor import outside provider", "pass-through of unreviewed vendor props", "vendor-specific state in feature store", "silent fallback when capability is missing"],
"acceptance": ["contract conformance", "keyboard and label tests", "T01-T10 state matrix", "server paging and sorting contract", "visual regression", "accessibility review"]
}
+46
View File
@@ -0,0 +1,46 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "K-ArtSell UI Adapter Contract v4",
"contractVersion": "4.0",
"status": "IMPLEMENTATION_TEMPLATE",
"requiredCapabilities": [
"button",
"text-field",
"text-area",
"select",
"multi-select",
"checkbox",
"date-field",
"number-field",
"dialog",
"status-tag",
"inline-message",
"paginator",
"tabs",
"data-grid"
],
"requiredEvidence": [
"contract-conformance",
"keyboard-focus",
"accessible-name",
"t01-t10-state-regression",
"provider-switch-smoke",
"visual-regression",
"performance-budget",
"rollback-rehearsal"
],
"rules": {
"featureVendorImports": 0,
"unknownCapability": "FAIL_FAST",
"unsupportedContract": "FAIL_FAST",
"providerSelection": "STARTUP_ONLY",
"mutableGlobalProviderSwitch": false,
"normalizedSemantics": [
"disabled",
"invalid",
"busy",
"aria-describedby",
"stable-events"
]
}
}
+44
View File
@@ -0,0 +1,44 @@
create schema if not exists building_blocks;
create schema if not exists signal_engine;
create table if not exists building_blocks.outbox_message (
message_id uuid primary key,
event_type text not null,
schema_version integer not null check (schema_version > 0),
payload_json jsonb not null,
correlation_id text not null,
occurred_at timestamptz not null,
payload_hash text not null,
published_at timestamptz null,
attempt integer not null default 0
);
create table if not exists building_blocks.inbox_message (
consumer text not null,
message_id uuid not null,
received_at timestamptz not null,
payload_hash text not null,
primary key (consumer, message_id)
);
create table if not exists building_blocks.job_run (
job_run_id uuid primary key,
job_type text not null,
job_version integer not null,
scope_key text not null,
idempotency_key text not null unique,
watermark text null,
app_version text not null,
model_version text null,
config_version text null,
data_version text null,
contract_version text null,
status text not null,
input_hash text null,
output_hash text null,
started_at timestamptz null,
heartbeat_at timestamptz null,
finished_at timestamptz null,
error_code text null,
trace_id text null
);
+60
View File
@@ -0,0 +1,60 @@
create table if not exists signal_engine.evidence_snapshot (
evidence_id text primary key,
as_of timestamptz not null,
published_at_cutoff timestamptz not null,
dataset_id text not null,
data_hash text not null,
model_version text not null,
config_version text not null,
payload jsonb not null,
content_hash text not null unique,
created_at timestamptz not null default now()
);
create table if not exists signal_engine.signal_decision (
decision_id uuid primary key,
lot_id uuid not null,
cycle_id uuid not null,
evidence_id text not null references signal_engine.evidence_snapshot(evidence_id),
action text not null,
sell_fraction numeric(9,6) not null check (sell_fraction between 0 and 1),
policy_id text not null,
priority integer not null,
reason_code text not null,
reentry_eligible boolean not null,
created_at timestamptz not null,
decision_hash text not null unique
);
create table if not exists signal_engine.reentry_watch (
watch_id uuid primary key,
sell_decision_id uuid not null unique references signal_engine.signal_decision(decision_id),
prior_cycle_id uuid not null,
state text not null,
minimum_wait_sessions integer not null check (minimum_wait_sessions >= 0),
minimum_spacing_sessions integer not null check (minimum_spacing_sessions >= 0),
expires_after_sessions integer not null check (expires_after_sessions > 0),
created_at timestamptz not null
);
create table if not exists signal_engine.reentry_stage (
watch_id uuid not null references signal_engine.reentry_watch(watch_id),
stage_no integer not null,
target_fraction numeric(9,6) not null check (target_fraction > 0 and target_fraction <= 1),
status text not null,
eligible_at timestamptz null,
executed_cycle_id uuid null,
primary key (watch_id, stage_no)
);
create or replace function signal_engine.prevent_immutable_change()
returns trigger language plpgsql as $$
begin
raise exception 'immutable evidence/decision rows cannot be updated or deleted';
end;
$$;
drop trigger if exists evidence_snapshot_immutable on signal_engine.evidence_snapshot;
create trigger evidence_snapshot_immutable
before update or delete on signal_engine.evidence_snapshot
for each row execute function signal_engine.prevent_immutable_change();
@@ -0,0 +1,24 @@
-- v11.1 hardening delta. Do not edit prior migrations.
create index if not exists ix_outbox_pending
on building_blocks.outbox_message (occurred_at, message_id)
where published_at is null;
create index if not exists ix_job_run_status_started
on building_blocks.job_run (status, started_at);
alter table signal_engine.signal_decision
add constraint ck_signal_decision_policy_id_not_blank
check (length(trim(policy_id)) > 0) not valid;
alter table signal_engine.signal_decision
validate constraint ck_signal_decision_policy_id_not_blank;
drop trigger if exists signal_decision_immutable on signal_engine.signal_decision;
create trigger signal_decision_immutable
before update or delete on signal_engine.signal_decision
for each row execute function signal_engine.prevent_immutable_change();
create unique index if not exists ux_reentry_stage_executed_cycle
on signal_engine.reentry_stage (executed_cycle_id)
where executed_cycle_id is not null;
@@ -0,0 +1,142 @@
-- v12.0 integrated hardening delta. Prior migrations remain immutable.
-- Rename ambiguous columns while preserving existing data.
do $$
begin
if exists (
select 1 from information_schema.columns
where table_schema = 'signal_engine'
and table_name = 'signal_decision'
and column_name = 'lot_id'
) and not exists (
select 1 from information_schema.columns
where table_schema = 'signal_engine'
and table_name = 'signal_decision'
and column_name = 'position_lot_id'
) then
alter table signal_engine.signal_decision
rename column lot_id to position_lot_id;
end if;
if exists (
select 1 from information_schema.columns
where table_schema = 'signal_engine'
and table_name = 'signal_decision'
and column_name = 'sell_fraction'
) and not exists (
select 1 from information_schema.columns
where table_schema = 'signal_engine'
and table_name = 'signal_decision'
and column_name = 'sell_ratio_of_lot'
) then
alter table signal_engine.signal_decision
rename column sell_fraction to sell_ratio_of_lot;
end if;
end;
$$;
alter table signal_engine.signal_decision
add column if not exists target_portfolio_weight_after numeric(12,8),
add column if not exists dataset_id text,
add column if not exists model_version text,
add column if not exists config_version text,
add column if not exists code_sha text,
add column if not exists idempotency_key text,
add column if not exists correlation_id text;
update signal_engine.signal_decision d
set dataset_id = coalesce(d.dataset_id, e.dataset_id),
model_version = coalesce(d.model_version, e.model_version),
config_version = coalesce(d.config_version, e.config_version),
code_sha = coalesce(d.code_sha, 'LEGACY_UNKNOWN'),
target_portfolio_weight_after = coalesce(d.target_portfolio_weight_after, 0),
idempotency_key = coalesce(d.idempotency_key, 'legacy:' || d.decision_id::text),
correlation_id = coalesce(d.correlation_id, 'legacy:' || d.decision_id::text)
from signal_engine.evidence_snapshot e
where e.evidence_id = d.evidence_id;
alter table signal_engine.signal_decision
alter column target_portfolio_weight_after set not null,
alter column dataset_id set not null,
alter column model_version set not null,
alter column config_version set not null,
alter column code_sha set not null,
alter column idempotency_key set not null,
alter column correlation_id set not null;
alter table signal_engine.signal_decision
drop constraint if exists ck_signal_decision_sell_ratio_of_lot,
add constraint ck_signal_decision_sell_ratio_of_lot
check (sell_ratio_of_lot between 0 and 1),
drop constraint if exists ck_signal_decision_target_weight,
add constraint ck_signal_decision_target_weight
check (target_portfolio_weight_after between 0 and 1);
create unique index if not exists ux_signal_decision_idempotency
on signal_engine.signal_decision (idempotency_key);
create index if not exists ix_signal_decision_lot_created
on signal_engine.signal_decision (position_lot_id, created_at desc);
-- Rebuildable, versioned read model. It is populated only by approved upstream slices.
create table if not exists signal_engine.sell_decision_context (
context_id uuid primary key,
position_lot_id uuid not null,
cycle_id uuid not null,
evidence_id text not null references signal_engine.evidence_snapshot(evidence_id),
dataset_id text not null,
model_version text not null,
config_version text not null,
code_sha text not null,
as_of timestamptz not null,
published_at_cutoff timestamptz not null,
current_portfolio_weight numeric(12,8) not null
check (current_portfolio_weight between 0 and 1),
strategic_core_floor_weight numeric(12,8) not null
check (strategic_core_floor_weight between 0 and current_portfolio_weight),
hard_impairment_approved boolean not null,
capital_floor_breached boolean not null,
survival_sell_ratio_of_lot numeric(12,8) not null
check (survival_sell_ratio_of_lot between 0 and 1),
gap_below_floor_atr numeric(18,8) not null check (gap_below_floor_atr >= 0),
consecutive_close_breaches integer not null check (consecutive_close_breaches >= 0),
cooldown_satisfied boolean not null,
concentration_sell_ratio_of_lot numeric(12,8) not null
check (concentration_sell_ratio_of_lot between 0 and 1),
opportunity_edge_lower_bound numeric(18,8) not null,
opportunity_sell_ratio_of_lot numeric(12,8) not null
check (opportunity_sell_ratio_of_lot between 0 and 1),
quality_status text not null check (quality_status in ('PASS', 'WARN', 'QUARANTINED')),
source_watermark text not null,
projection_version integer not null,
content_hash text not null unique,
created_at timestamptz not null default now(),
unique (position_lot_id, as_of, projection_version)
);
create index if not exists ix_sell_decision_context_lookup
on signal_engine.sell_decision_context (position_lot_id, as_of desc)
where quality_status = 'PASS';
drop trigger if exists sell_decision_context_immutable on signal_engine.sell_decision_context;
create trigger sell_decision_context_immutable
before update or delete on signal_engine.sell_decision_context
for each row execute function signal_engine.prevent_immutable_change();
-- Audit rows are append-only. Corrections are represented as new events.
create table if not exists signal_engine.decision_audit_event (
audit_event_id uuid primary key,
decision_id uuid not null references signal_engine.signal_decision(decision_id),
event_type text not null,
actor_id text not null,
correlation_id text not null,
payload_json jsonb not null,
payload_hash text not null,
occurred_at timestamptz not null,
unique (decision_id, event_type, payload_hash)
);
drop trigger if exists decision_audit_event_immutable on signal_engine.decision_audit_event;
create trigger decision_audit_event_immutable
before update or delete on signal_engine.decision_audit_event
for each row execute function signal_engine.prevent_immutable_change();
@@ -0,0 +1,68 @@
-- v12.1 execution-readiness delta. Prior migrations remain immutable.
alter table building_blocks.outbox_message
add column if not exists next_attempt_at timestamptz null,
add column if not exists lease_owner text null,
add column if not exists lease_until timestamptz null,
add column if not exists dead_lettered_at timestamptz null,
add column if not exists last_error_code text null;
create index if not exists ix_outbox_dispatchable
on building_blocks.outbox_message (coalesce(next_attempt_at, occurred_at), occurred_at, message_id)
where published_at is null and dead_lettered_at is null;
alter table building_blocks.inbox_message
add column if not exists processed_at timestamptz null,
add column if not exists result_hash text null;
create table if not exists building_blocks.projection_checkpoint (
projection_name text not null,
projection_version integer not null check (projection_version > 0),
source_watermark text not null,
last_event_id uuid null,
content_hash text not null,
built_at timestamptz not null,
primary key (projection_name, projection_version)
);
create table if not exists building_blocks.projection_rebuild_run (
rebuild_id uuid primary key,
projection_name text not null,
target_version integer not null check (target_version > 0),
through_watermark text not null,
dry_run boolean not null,
requested_by text not null,
requested_at timestamptz not null,
status text not null,
source_count bigint null,
projected_count bigint null,
result_hash text null,
finished_at timestamptz null,
error_code text null
);
create table if not exists building_blocks.audit_event (
audit_event_id uuid primary key,
entity_type text not null,
entity_id text not null,
event_type text not null,
actor_id text not null,
correlation_id text not null,
payload_json jsonb not null,
payload_hash text not null,
corrects_audit_event_id uuid null references building_blocks.audit_event(audit_event_id),
occurred_at timestamptz not null,
unique (entity_type, entity_id, event_type, payload_hash)
);
create or replace function building_blocks.prevent_append_only_change()
returns trigger language plpgsql as $$
begin
raise exception 'append-only row cannot be updated or deleted';
end;
$$;
drop trigger if exists audit_event_append_only on building_blocks.audit_event;
create trigger audit_event_append_only
before update or delete on building_blocks.audit_event
for each row execute function building_blocks.prevent_append_only_change();
@@ -0,0 +1,61 @@
-- v12.2 strategic data-correctness delta.
-- Prior columns remain for compatibility; new code uses explicit security/lot weight semantics.
alter table signal_engine.sell_decision_context
add column if not exists current_security_portfolio_weight numeric(12,8),
add column if not exists current_lot_portfolio_weight numeric(12,8);
update signal_engine.sell_decision_context
set current_security_portfolio_weight = coalesce(current_security_portfolio_weight, current_portfolio_weight),
current_lot_portfolio_weight = coalesce(current_lot_portfolio_weight, current_portfolio_weight)
where current_security_portfolio_weight is null
or current_lot_portfolio_weight is null;
alter table signal_engine.sell_decision_context
alter column current_security_portfolio_weight set not null,
alter column current_lot_portfolio_weight set not null,
drop constraint if exists ck_sell_context_security_weight,
add constraint ck_sell_context_security_weight
check (current_security_portfolio_weight between 0 and 1),
drop constraint if exists ck_sell_context_lot_weight,
add constraint ck_sell_context_lot_weight
check (current_lot_portfolio_weight between 0 and current_security_portfolio_weight),
drop constraint if exists ck_sell_context_published_cutoff,
add constraint ck_sell_context_published_cutoff
check (published_at_cutoff <= as_of);
comment on column signal_engine.sell_decision_context.current_portfolio_weight is
'Legacy ambiguous field. Do not use in v12.2+ decisions.';
comment on column signal_engine.sell_decision_context.current_security_portfolio_weight is
'Absolute portfolio weight of the security, 0..1.';
comment on column signal_engine.sell_decision_context.current_lot_portfolio_weight is
'Absolute portfolio weight represented by the target PositionLot, 0..security weight.';
alter table signal_engine.signal_decision
add column if not exists target_security_portfolio_weight_after numeric(12,8),
add column if not exists policy_trace_json jsonb;
update signal_engine.signal_decision
set target_security_portfolio_weight_after = coalesce(
target_security_portfolio_weight_after,
target_portfolio_weight_after,
0),
policy_trace_json = coalesce(policy_trace_json, '[]'::jsonb)
where target_security_portfolio_weight_after is null
or policy_trace_json is null;
alter table signal_engine.signal_decision
alter column target_security_portfolio_weight_after set not null,
alter column policy_trace_json set not null,
drop constraint if exists ck_signal_decision_target_security_weight,
add constraint ck_signal_decision_target_security_weight
check (target_security_portfolio_weight_after between 0 and 1),
drop constraint if exists ck_signal_decision_policy_trace_array,
add constraint ck_signal_decision_policy_trace_array
check (jsonb_typeof(policy_trace_json) = 'array');
comment on column signal_engine.signal_decision.target_portfolio_weight_after is
'Legacy ambiguous target field. v12.2+ uses target_security_portfolio_weight_after.';
create index if not exists ix_signal_decision_policy_trace_gin
on signal_engine.signal_decision using gin (policy_trace_json);
@@ -0,0 +1,149 @@
-- v12.3 semantic-versioning and contract-governance delta.
-- Prior migrations remain immutable. Legacy ambiguous weight contexts are blocked, not guessed.
alter table signal_engine.sell_decision_context
add column if not exists weight_semantics_version smallint;
-- Every row created before this migration is conservatively classified as legacy/ambiguous.
update signal_engine.sell_decision_context
set weight_semantics_version = 1
where weight_semantics_version is null;
alter table signal_engine.sell_decision_context
alter column weight_semantics_version set default 2,
alter column weight_semantics_version set not null,
drop constraint if exists ck_sell_context_weight_semantics_version,
add constraint ck_sell_context_weight_semantics_version
check (weight_semantics_version in (1, 2));
comment on column signal_engine.sell_decision_context.weight_semantics_version is
'1=legacy ambiguous current_portfolio_weight backfill; 2=explicit security and lot weights from approved source. Decision reads require 2.';
alter table signal_engine.signal_decision
add column if not exists decision_contract_version text,
add column if not exists policy_trace_schema_version smallint;
update signal_engine.signal_decision
set decision_contract_version = coalesce(decision_contract_version, 'sell-decision.v2'),
policy_trace_schema_version = coalesce(policy_trace_schema_version, 2)
where decision_contract_version is null
or policy_trace_schema_version is null;
alter table signal_engine.signal_decision
alter column decision_contract_version set default 'sell-decision.v2',
alter column decision_contract_version set not null,
alter column policy_trace_schema_version set default 2,
alter column policy_trace_schema_version set not null,
drop constraint if exists ck_signal_decision_contract_version,
add constraint ck_signal_decision_contract_version
check (decision_contract_version = 'sell-decision.v2'),
drop constraint if exists ck_signal_decision_policy_trace_schema_version,
add constraint ck_signal_decision_policy_trace_schema_version
check (policy_trace_schema_version = 2);
create table if not exists signal_engine.policy_contract_definition (
contract_version text primary key,
content_hash text not null unique,
policy_json jsonb not null,
status text not null check (status in ('PROPOSED', 'APPROVED', 'RETIRED')),
effective_from timestamptz null,
approved_by text null,
approved_at timestamptz null,
created_at timestamptz not null default now(),
check (jsonb_typeof(policy_json) = 'object')
);
insert into signal_engine.policy_contract_definition
(contract_version, content_hash, policy_json, status)
values
('sell-policy.v1', 'a269a0331b83c0f6ec108e7587de1d20c798036ff8d0c03d726cd854e73d8480', $policy$
{
"changeControl": "MODEL_CHANGE_AND_GOLDEN_OOS_REQUIRED",
"contractVersion": "sell-policy.v1",
"decisionContractVersion": "sell-decision.v2",
"policies": [
{
"condition": "approved hard impairment",
"documentedRange": [
0.8,
1.0
],
"mayCrossStrategicCore": true,
"policyId": "ALG-SELL-001",
"priority": 1000,
"reentryEligible": false,
"requestedSellRatioOfLot": 1.0,
"terminal": true
},
{
"condition": "capital floor breached",
"decisionRequired": "Whether portfolio survival bypasses same-direction cooldown",
"mayCrossStrategicCore": true,
"policyId": "ALG-SELL-PORT-001",
"priority": 900,
"ratioSource": "server PIT risk context",
"reentryEligible": true,
"terminal": true
},
{
"condition": {
"gapBelowFloorAtrGte": 1.5
},
"documentedRange": [
0.3,
0.5
],
"mayCrossStrategicCore": false,
"policyId": "ALG-SELL-002",
"priority": 800,
"reentryEligible": true,
"requestedSellRatioOfLot": 0.4,
"terminal": false
},
{
"condition": {
"consecutiveCloseBreachesGte": 2
},
"documentedRange": [
0.15,
0.25
],
"mayCrossStrategicCore": false,
"policyId": "ALG-SELL-003",
"priority": 700,
"reentryEligible": true,
"requestedSellRatioOfLot": 0.2,
"terminal": false
},
{
"condition": "approved concentration/liquidity excess ratio > 0",
"mayCrossStrategicCore": false,
"policyId": "ALG-SELL-004",
"priority": 600,
"ratioSource": "server PIT portfolio risk context",
"reentryEligible": true,
"terminal": false
},
{
"condition": "opportunity edge lower bound > 0 and requested ratio > 0",
"mayCrossStrategicCore": false,
"policyId": "ALG-SELL-005",
"priority": 500,
"reentryEligible": true,
"requestedRange": [
0.1,
0.25
],
"terminal": false
}
],
"policyTraceSchemaVersion": 2,
"status": "RESEARCH_CANDIDATE_NOT_PRODUCTION"
}
$policy$::jsonb, 'PROPOSED')
on conflict (contract_version) do nothing;
drop trigger if exists policy_contract_definition_immutable on signal_engine.policy_contract_definition;
create trigger policy_contract_definition_immutable
before update or delete on signal_engine.policy_contract_definition
for each row execute function signal_engine.prevent_immutable_change();
@@ -0,0 +1,264 @@
-- v12.4 continuous model operations delta.
-- Evaluation and proposal automation only. This migration does not enable automatic model promotion,
-- automatic order submission or KIS submission.
create schema if not exists evaluation;
create schema if not exists governance;
create table if not exists evaluation.dataset_manifest (
dataset_id text primary key,
scope_key text not null,
content_hash text not null unique,
source_catalog_version text not null,
lineage_hash text not null,
status text not null check (status in ('PROPOSED', 'APPROVED', 'QUARANTINED', 'RETIRED')),
frozen_at timestamptz not null,
approved_by text null,
approved_at timestamptz null,
created_at timestamptz not null default now()
);
create index if not exists ix_dataset_manifest_scope_frozen
on evaluation.dataset_manifest (scope_key, frozen_at desc)
where status = 'APPROVED';
create table if not exists governance.model_version_registry (
model_version text not null,
scope_key text not null,
config_version text not null,
code_sha text not null,
contract_version text not null,
lifecycle_state text not null check (lifecycle_state in
('RESEARCH', 'CHALLENGER', 'SHADOW', 'CANDIDATE', 'APPROVED', 'RETIRED', 'ROLLED_BACK')),
effective_at timestamptz not null,
retired_at timestamptz null,
model_card_hash text not null,
approved_by text null,
approved_at timestamptz null,
created_at timestamptz not null default now(),
primary key (model_version, scope_key, effective_at),
check (lifecycle_state <> 'APPROVED' or (approved_by is not null and approved_at is not null))
);
create index if not exists ix_model_version_registry_active
on governance.model_version_registry (scope_key, effective_at desc)
where lifecycle_state in ('RESEARCH', 'CHALLENGER', 'SHADOW', 'CANDIDATE', 'APPROVED');
create table if not exists evaluation.model_operation_schedule (
schedule_id uuid primary key,
operation_code text not null,
operation_name text not null,
scope_key text not null,
cadence text not null check (cadence in ('DAILY', 'WEEKLY', 'MONTHLY', 'QUARTERLY', 'EVENT_DRIVEN')),
automation_mode text not null check (automation_mode in ('EVALUATION_ONLY', 'PROPOSAL_ONLY', 'DRILL_ONLY')),
queue_name text not null,
schedule_version integer not null check (schedule_version > 0),
enabled boolean not null default true,
next_due_at timestamptz not null,
last_dispatched_at timestamptz null,
last_background_job_id text null,
max_lag interval not null,
primary_owner text not null,
secondary_owner text not null,
lease_owner text null,
lease_until timestamptz null,
last_error_code text null,
created_at timestamptz not null default now(),
updated_at timestamptz not null default now(),
unique (operation_code, scope_key, schedule_version)
);
create index if not exists ix_model_operation_schedule_due
on evaluation.model_operation_schedule (next_due_at, operation_code, scope_key)
where enabled = true;
create table if not exists evaluation.model_operation_request (
request_id uuid primary key,
schedule_id uuid not null references evaluation.model_operation_schedule(schedule_id),
operation_code text not null,
scope_key text not null,
automation_mode text not null check (automation_mode in ('EVALUATION_ONLY', 'PROPOSAL_ONLY', 'DRILL_ONLY')),
idempotency_key text not null unique,
dataset_id text not null,
data_hash text not null,
model_version text not null,
config_version text not null,
code_sha text not null,
contract_version text not null,
lifecycle_state text not null,
correlation_id text not null,
status text not null check (status in ('REQUESTED', 'RUNNING', 'SUCCEEDED', 'BUSINESS_HOLD', 'FAILED', 'QUARANTINED')),
output_hash text null,
error_code text null,
requested_at timestamptz not null,
started_at timestamptz null,
finished_at timestamptz null
);
create index if not exists ix_model_operation_request_scope_time
on evaluation.model_operation_request (scope_key, operation_code, requested_at desc);
-- Request is a lifecycle aggregate: status/timing fields are mutable under optimistic/transactional control.
-- Every transition is additionally recorded as an immutable status event so operational history is never lost.
create table if not exists evaluation.model_operation_status_event (
event_id uuid primary key,
request_id uuid not null references evaluation.model_operation_request(request_id),
from_status text null,
to_status text not null check (to_status in
('REQUESTED', 'RUNNING', 'SUCCEEDED', 'BUSINESS_HOLD', 'FAILED', 'QUARANTINED')),
reason_code text null,
payload_hash text not null,
actor_type text not null check (actor_type in ('SYSTEM', 'OPERATOR', 'REPLAY')),
correlation_id text not null,
occurred_at timestamptz not null,
created_at timestamptz not null default now(),
unique (request_id, to_status, occurred_at, payload_hash)
);
create index if not exists ix_model_operation_status_event_request_time
on evaluation.model_operation_status_event (request_id, occurred_at);
create table if not exists evaluation.model_metric_definition (
metric_code text not null,
definition_version integer not null check (definition_version > 0),
numerator_definition text not null,
denominator_definition text not null,
evaluation_window text not null,
aggregation_method text not null,
threshold_json jsonb not null,
status text not null check (status in ('PROPOSED', 'APPROVED', 'RETIRED')),
content_hash text not null,
effective_from timestamptz null,
approved_by text null,
approved_at timestamptz null,
created_at timestamptz not null default now(),
primary key (metric_code, definition_version),
unique (content_hash)
);
create table if not exists evaluation.model_metric_observation (
observation_id uuid primary key,
request_id uuid not null references evaluation.model_operation_request(request_id),
metric_code text not null,
definition_version integer not null,
scope_key text not null,
cohort_key text not null,
value_numeric numeric(30, 12) null,
value_text text null,
sample_size bigint not null check (sample_size >= 0),
dataset_id text not null,
model_version text not null,
as_of timestamptz not null,
content_hash text not null,
created_at timestamptz not null default now(),
foreign key (metric_code, definition_version)
references evaluation.model_metric_definition(metric_code, definition_version),
check ((value_numeric is null) <> (value_text is null)),
unique (request_id, metric_code, definition_version, cohort_key, content_hash)
);
create table if not exists evaluation.model_evaluation_snapshot (
snapshot_id uuid primary key,
request_id uuid not null references evaluation.model_operation_request(request_id),
scope_key text not null,
model_version text not null,
dataset_id text not null,
gate_contract_version text not null,
gate_decision text not null check (gate_decision in ('PASS', 'WARN', 'HOLD', 'FAIL')),
blocking_reasons_json jsonb not null,
warnings_json jsonb not null,
evidence_hash text not null,
as_of timestamptz not null,
created_at timestamptz not null default now(),
unique (request_id, evidence_hash)
);
create table if not exists governance.model_improvement_proposal (
proposal_id uuid primary key,
source_request_id uuid not null references evaluation.model_operation_request(request_id),
scope_key text not null,
base_model_version text not null,
proposal_type text not null check (proposal_type in
('DATA_REMEDIATION', 'FEATURE_REVIEW', 'THRESHOLD_REVIEW', 'POLICY_REFACTORING',
'CALIBRATION_REVIEW', 'RISK_LIMIT_REVIEW', 'TECH_DEBT_REPAYMENT')),
problem_statement text not null,
supporting_evidence_json jsonb not null,
counter_evidence_json jsonb not null,
expected_benefit text not null,
risks text not null,
required_tests_json jsonb not null,
status text not null check (status in
('DRAFT', 'REVIEW_REQUIRED', 'APPROVED_FOR_RESEARCH', 'REJECTED', 'EXPIRED')),
created_by text not null,
created_at timestamptz not null,
reviewed_by text null,
reviewed_at timestamptz null,
expires_at timestamptz not null,
content_hash text not null unique,
check (status <> 'APPROVED_FOR_RESEARCH' or (reviewed_by is not null and reviewed_at is not null))
);
create table if not exists governance.model_promotion_review (
review_id uuid primary key,
scope_key text not null,
candidate_model_version text not null,
evidence_snapshot_id uuid not null references evaluation.model_evaluation_snapshot(snapshot_id),
independent_validation_hash text not null,
compliance_review_hash text null,
security_review_hash text null,
decision text not null check (decision in ('PENDING', 'APPROVED_FOR_SHADOW', 'APPROVED_FOR_PILOT', 'REJECTED', 'EXPIRED')),
maker_id text not null,
checker_id text null,
created_at timestamptz not null,
decided_at timestamptz null,
check (maker_id <> coalesce(checker_id, '')),
check (decision = 'PENDING' or (checker_id is not null and decided_at is not null))
);
create table if not exists governance.model_rollback_drill (
drill_id uuid primary key,
scope_key text not null,
champion_model_version text not null,
fallback_model_version text not null,
runbook_version text not null,
started_at timestamptz not null,
finished_at timestamptz null,
result text not null check (result in ('RUNNING', 'PASS', 'FAIL', 'BUSINESS_HOLD')),
recovery_time_seconds integer null check (recovery_time_seconds is null or recovery_time_seconds >= 0),
evidence_hash text null,
owner text not null,
secondary_owner text not null
);
-- Append-only evidence. Request status is mutable, but status_event/observation/snapshot history is immutable.
drop trigger if exists model_operation_status_event_append_only on evaluation.model_operation_status_event;
create trigger model_operation_status_event_append_only
before update or delete on evaluation.model_operation_status_event
for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists model_metric_observation_append_only on evaluation.model_metric_observation;
create trigger model_metric_observation_append_only
before update or delete on evaluation.model_metric_observation
for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists model_evaluation_snapshot_append_only on evaluation.model_evaluation_snapshot;
create trigger model_evaluation_snapshot_append_only
before update or delete on evaluation.model_evaluation_snapshot
for each row execute function building_blocks.prevent_append_only_change();
-- Schedules intentionally automate evidence collection/proposal generation only.
insert into evaluation.model_operation_schedule
(schedule_id, operation_code, operation_name, scope_key, cadence, automation_mode, queue_name,
schedule_version, enabled, next_due_at, max_lag, primary_owner, secondary_owner)
values
('e4100000-0000-4000-8000-000000000010', 'J10', 'OutcomeEvaluationRun', 'GLOBAL', 'DAILY', 'EVALUATION_ONLY', 'q-evaluation', 1, true, now() + interval '1 hour', interval '1 day', 'Quant/Ops', 'Data/QA'),
('e4100000-0000-4000-8000-000000000011', 'J11', 'DailyScorecardBuild', 'GLOBAL', 'DAILY', 'EVALUATION_ONLY', 'q-evaluation', 1, true, now() + interval '2 hours', interval '1 day', 'Quant/Ops', 'Risk/SRE'),
('e4100000-0000-4000-8000-000000000017', 'J17', 'DriftDetectionRun', 'GLOBAL', 'DAILY', 'EVALUATION_ONLY', 'q-evaluation', 1, true, now() + interval '3 hours', interval '1 day', 'Quant/Risk', 'Data/SRE'),
('e4100000-0000-4000-8000-000000000018', 'J18', 'ChampionChallengerEvaluation', 'GLOBAL', 'WEEKLY', 'EVALUATION_ONLY', 'q-evaluation', 1, true, now() + interval '1 day', interval '7 days', 'Quant/Risk', 'QA/InvestmentCommittee'),
('e4100000-0000-4000-8000-000000000019', 'J19', 'FrozenOosBacktest', 'GLOBAL', 'MONTHLY', 'EVALUATION_ONLY', 'q-research', 1, true, now() + interval '7 days', interval '31 days', 'Quant/Data', 'QA/Risk'),
('e4100000-0000-4000-8000-000000000020', 'J20', 'RobustnessPboDsrRun', 'GLOBAL', 'QUARTERLY', 'EVALUATION_ONLY', 'q-research', 1, true, now() + interval '30 days', interval '95 days', 'Quant/Risk', 'IndependentValidation'),
('e4100000-0000-4000-8000-000000000021', 'J21', 'ModelImprovementProposalBuild', 'GLOBAL', 'MONTHLY', 'PROPOSAL_ONLY', 'q-research', 1, true, now() + interval '14 days', interval '31 days', 'Quant Lead', 'Risk/Architect'),
('e4100000-0000-4000-8000-000000000022', 'J22', 'PromotionEvidenceReviewBuild', 'GLOBAL', 'MONTHLY', 'PROPOSAL_ONLY', 'q-control', 1, true, now() + interval '21 days', interval '31 days', 'Risk/InvestmentCommittee', 'Compliance/QA'),
('e4100000-0000-4000-8000-000000000023', 'J23', 'ModelRollbackDrill', 'GLOBAL', 'QUARTERLY', 'DRILL_ONLY', 'q-control', 1, true, now() + interval '45 days', interval '95 days', 'SRE/Risk', 'Module Owner/QA'),
('e4100000-0000-4000-8000-000000000024', 'J24', 'DataRevisionRevalidation', 'GLOBAL', 'WEEKLY', 'EVALUATION_ONLY', 'q-backfill', 1, true, now() + interval '2 days', interval '7 days', 'Data/Quant', 'DBA/QA')
on conflict (operation_code, scope_key, schedule_version) do nothing;
+137
View File
@@ -0,0 +1,137 @@
-- v12.5 execution assurance delta.
-- This migration adds evidence and scheduling metadata only. It does not enable automatic model mutation,
-- client publication, broker submission or model promotion.
-- Fail closed after upgrade. Each schedule must be enabled by an approved operational change.
update evaluation.model_operation_schedule
set enabled = false,
updated_at = now(),
last_error_code = 'V12_5_REAPPROVAL_REQUIRED'
where schedule_version = 1
and operation_code in ('J10','J11','J17','J18','J19','J20','J21','J22','J23','J24');
alter table evaluation.model_operation_schedule
add column if not exists calendar_id text not null default 'GLOBAL_UTC',
add column if not exists due_policy text not null default 'FIXED_CADENCE',
add column if not exists dependency_json jsonb not null default '[]'::jsonb,
add column if not exists catch_up_policy text not null default 'LATEST_ONLY',
add column if not exists max_catch_up integer not null default 1 check (max_catch_up between 0 and 31),
add column if not exists business_hold_code text null;
create table if not exists evaluation.model_operation_artifact (
artifact_id uuid primary key,
request_id uuid not null references evaluation.model_operation_request(request_id),
artifact_type text not null,
artifact_uri text not null,
content_hash text not null,
media_type text not null,
evidence_class text not null check (evidence_class in ('SOURCE', 'RUNTIME', 'RESEARCH', 'RELEASE', 'AUDIT')),
produced_by text not null,
produced_at timestamptz not null,
retention_until timestamptz null,
created_at timestamptz not null default now(),
unique (request_id, artifact_type, content_hash)
);
create table if not exists evaluation.model_operation_dependency_result (
dependency_result_id uuid primary key,
request_id uuid not null references evaluation.model_operation_request(request_id),
dependency_code text not null,
result text not null check (result in ('PASS', 'WARN', 'HOLD', 'FAIL')),
evidence_hash text not null,
checked_at timestamptz not null,
unique (request_id, dependency_code, evidence_hash)
);
create table if not exists governance.release_evidence_bundle (
bundle_id uuid primary key,
release_version text not null,
source_manifest_hash text not null,
build_artifact_hash text null,
test_artifact_hash text null,
migration_artifact_hash text null,
security_artifact_hash text null,
rollback_artifact_hash text null,
decision_log_hash text not null,
status text not null check (status in ('DRAFT', 'REVIEW_REQUIRED', 'APPROVED', 'REJECTED', 'EXPIRED')),
maker_id text not null,
checker_id text null,
created_at timestamptz not null,
decided_at timestamptz null,
content_hash text not null unique,
check (status not in ('APPROVED', 'REJECTED') or (checker_id is not null and checker_id <> maker_id and decided_at is not null))
);
create table if not exists governance.source_contract_snapshot (
snapshot_id uuid primary key,
source_code text not null,
schema_version text not null,
license_version text not null,
sla_version text not null,
timezone_contract text not null,
unit_contract text not null,
content_hash text not null unique,
status text not null check (status in ('PROPOSED', 'APPROVED', 'RETIRED', 'QUARANTINED')),
effective_from timestamptz null,
approved_by text null,
approved_at timestamptz null,
created_at timestamptz not null default now()
);
create table if not exists governance.execution_assurance_decision (
decision_id uuid primary key,
decision_code text not null,
scope_key text not null,
decision_version integer not null check (decision_version > 0),
status text not null check (status in ('DECISION_REQUIRED', 'APPROVED', 'REJECTED', 'SUPERSEDED', 'EXPIRED')),
statement text not null,
basis_json jsonb not null,
owner text not null,
approved_by text null,
approved_at timestamptz null,
expires_at timestamptz null,
content_hash text not null,
created_at timestamptz not null default now(),
unique (decision_code, scope_key, decision_version),
unique (content_hash)
);
-- Append-only operational evidence.
drop trigger if exists model_operation_artifact_append_only on evaluation.model_operation_artifact;
create trigger model_operation_artifact_append_only
before update or delete on evaluation.model_operation_artifact
for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists model_operation_dependency_result_append_only on evaluation.model_operation_dependency_result;
create trigger model_operation_dependency_result_append_only
before update or delete on evaluation.model_operation_dependency_result
for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists release_evidence_bundle_append_only on governance.release_evidence_bundle;
create trigger release_evidence_bundle_append_only
before update or delete on governance.release_evidence_bundle
for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists source_contract_snapshot_append_only on governance.source_contract_snapshot;
create trigger source_contract_snapshot_append_only
before update or delete on governance.source_contract_snapshot
for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists execution_assurance_decision_append_only on governance.execution_assurance_decision;
create trigger execution_assurance_decision_append_only
before update or delete on governance.execution_assurance_decision
for each row execute function building_blocks.prevent_append_only_change();
-- Additional checks are seeded disabled. They may be enabled only after their source/calendar/SLO contracts are approved.
insert into evaluation.model_operation_schedule
(schedule_id, operation_code, operation_name, scope_key, cadence, automation_mode, queue_name,
schedule_version, enabled, next_due_at, max_lag, primary_owner, secondary_owner,
calendar_id, due_policy, dependency_json, catch_up_policy, max_catch_up)
values
('e4100000-0000-4000-8000-000000000025', 'J25', 'SourceContractDriftCheck', 'GLOBAL', 'DAILY', 'EVALUATION_ONLY', 'q-evaluation', 1, false, now() + interval '1 day', interval '1 day', 'Data Governance', 'Adapter Owner/QA', 'GLOBAL_UTC', 'FIXED_CADENCE', '["SOURCE_CONTRACT_APPROVED"]', 'LATEST_ONLY', 1),
('e4100000-0000-4000-8000-000000000026', 'J26', 'MarketCalendarCompletenessCheck', 'GLOBAL', 'DAILY', 'EVALUATION_ONLY', 'q-market-data', 1, false, now() + interval '1 day', interval '1 day', 'Data/Ops', 'Quant/QA', 'APPROVED_MARKET_CALENDAR', 'TRADING_SESSION', '["MARKET_CALENDAR_APPROVED","SOURCE_COMPLETE"]', 'LATEST_ONLY', 1),
('e4100000-0000-4000-8000-000000000027', 'J27', 'EvidenceChainAudit', 'GLOBAL', 'DAILY', 'EVALUATION_ONLY', 'q-control', 1, false, now() + interval '1 day', interval '1 day', 'Compliance/QA', 'Data/BE', 'GLOBAL_UTC', 'FIXED_CADENCE', '["AUDIT_LEDGER_READY"]', 'LATEST_ONLY', 1),
('e4100000-0000-4000-8000-000000000028', 'J28', 'ProjectionFreshnessCheck', 'GLOBAL', 'DAILY', 'EVALUATION_ONLY', 'q-evaluation', 1, false, now() + interval '1 day', interval '1 day', 'BE/Data', 'SRE/QA', 'GLOBAL_UTC', 'FIXED_CADENCE', '["PROJECTION_CONTRACT_APPROVED"]', 'LATEST_ONLY', 1),
('e4100000-0000-4000-8000-000000000029', 'J29', 'CapacitySlaTrend', 'GLOBAL', 'WEEKLY', 'EVALUATION_ONLY', 'q-control', 1, false, now() + interval '7 days', interval '7 days', 'SRE/PM', 'DBA/Module Owner', 'GLOBAL_UTC', 'FIXED_CADENCE', '["SLO_APPROVED","VOLUME_ASSUMPTION_APPROVED"]', 'LATEST_ONLY', 1),
('e4100000-0000-4000-8000-000000000030', 'J30', 'ReleaseEvidenceAssemble', 'GLOBAL', 'EVENT_DRIVEN', 'PROPOSAL_ONLY', 'q-control', 1, false, now() + interval '365 days', interval '365 days', 'QA/Release Manager', 'Compliance/SRE', 'GLOBAL_UTC', 'EVENT', '["BUILD_GREEN","TEST_GREEN","MIGRATION_GREEN","SECURITY_GREEN","ROLLBACK_READY"]', 'NONE', 0)
on conflict (operation_code, scope_key, schedule_version) do nothing;
@@ -0,0 +1,73 @@
-- v13.0 continuous model feedback loop. All schedules are inserted disabled and are evidence/proposal only.
create table if not exists evaluation.prediction_freeze (
prediction_freeze_id uuid primary key,
portfolio_scope text not null,
market_session date not null,
as_of timestamptz not null,
dataset_id text not null,
model_version text not null,
config_version text not null,
code_sha text not null,
contract_version text not null,
content_hash text not null unique,
frozen_at timestamptz not null default now(),
unique (portfolio_scope, market_session, model_version, content_hash)
);
create table if not exists evaluation.evaluation_window_maturity (
maturity_id uuid primary key,
decision_id uuid not null,
window_sessions integer not null check (window_sessions in (1,5,20,63,126,252)),
due_session date not null,
maturity_revision integer not null check (maturity_revision > 0),
status text not null check (status in ('PENDING','MATURED','HELD_DATA','EVALUATED','SUPERSEDED')),
dataset_id text not null,
supersedes_maturity_id uuid null references evaluation.evaluation_window_maturity(maturity_id),
content_hash text not null unique,
created_at timestamptz not null default now(),
check (supersedes_maturity_id is null or supersedes_maturity_id <> maturity_id),
unique (decision_id, window_sessions, dataset_id, maturity_revision)
);
create table if not exists governance.model_improvement_hypothesis (
hypothesis_id uuid primary key,
model_version text not null,
hypothesis_version integer not null check (hypothesis_version > 0),
problem_statement text not null,
evidence_json jsonb not null,
proposed_change text not null,
expected_effect text not null,
falsification_test text not null,
non_goals text not null,
status text not null check (status in ('DRAFT','REVIEW_REQUIRED','APPROVED_FOR_EXPERIMENT','REJECTED','SUPERSEDED','EXPIRED')),
maker_id text not null,
checker_id text null,
supersedes_hypothesis_id uuid null references governance.model_improvement_hypothesis(hypothesis_id),
expires_at timestamptz not null,
content_hash text not null unique,
created_at timestamptz not null default now(),
decided_at timestamptz null,
check (supersedes_hypothesis_id is null or supersedes_hypothesis_id <> hypothesis_id),
check (status not in ('APPROVED_FOR_EXPERIMENT','REJECTED') or (checker_id is not null and checker_id <> maker_id and decided_at is not null)),
unique (model_version, hypothesis_version)
);
drop trigger if exists prediction_freeze_append_only on evaluation.prediction_freeze;
create trigger prediction_freeze_append_only before update or delete on evaluation.prediction_freeze for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists evaluation_window_maturity_append_only on evaluation.evaluation_window_maturity;
create trigger evaluation_window_maturity_append_only before update or delete on evaluation.evaluation_window_maturity for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists model_improvement_hypothesis_append_only on governance.model_improvement_hypothesis;
create trigger model_improvement_hypothesis_append_only before update or delete on governance.model_improvement_hypothesis for each row execute function building_blocks.prevent_append_only_change();
insert into evaluation.model_operation_schedule
(schedule_id, operation_code, operation_name, scope_key, cadence, automation_mode, queue_name,
schedule_version, enabled, next_due_at, max_lag, primary_owner, secondary_owner,
calendar_id, due_policy, dependency_json, catch_up_policy, max_catch_up)
values
('e4100000-0000-4000-8000-000000000031','J31','PredictionFreezeRun','GLOBAL','DAILY','EVALUATION_ONLY','q-evaluation',2,false,now()+interval '1 day',interval '1 day','Quant/Data','QA/Risk','APPROVED_MARKET_CALENDAR','TRADING_SESSION','["PIT_CONTEXT_APPROVED","MODEL_CONTEXT_APPROVED"]','LATEST_ONLY',1),
('e4100000-0000-4000-8000-000000000032','J32','OutcomeMaturitySweep','GLOBAL','DAILY','EVALUATION_ONLY','q-evaluation',2,false,now()+interval '1 day',interval '1 day','Quant/Ops','Data/QA','APPROVED_MARKET_CALENDAR','TRADING_SESSION','["TOTAL_RETURN_COMPLETE","CALENDAR_APPROVED"]','BOUNDED',7),
('e4100000-0000-4000-8000-000000000033','J33','SellReentryAttributionReview','GLOBAL','WEEKLY','EVALUATION_ONLY','q-evaluation',2,false,now()+interval '7 days',interval '7 days','Quant/Risk','Advisor/QA','GLOBAL_UTC','FIXED_CADENCE','["OUTCOME_MATURED","METRIC_CONTRACT_APPROVED"]','LATEST_ONLY',1),
('e4100000-0000-4000-8000-000000000034','J34','CalibrationRegimeReview','GLOBAL','WEEKLY','EVALUATION_ONLY','q-evaluation',2,false,now()+interval '7 days',interval '7 days','Quant/Risk','Data/IndependentValidation','GLOBAL_UTC','FIXED_CADENCE','["COHORT_VERSION_APPROVED","REGIME_DEFINITION_APPROVED"]','LATEST_ONLY',1),
('e4100000-0000-4000-8000-000000000035','J35','ImprovementHypothesisBuild','GLOBAL','MONTHLY','PROPOSAL_ONLY','q-research',2,false,now()+interval '30 days',interval '30 days','Quant Lead','Risk/Architect','GLOBAL_UTC','FIXED_CADENCE','["SCORECARD_COMPLETE","ATTRIBUTION_COMPLETE","DEBT_REGISTER_CURRENT"]','LATEST_ONLY',1),
('e4100000-0000-4000-8000-000000000036','J36','ChallengerExperimentPlan','GLOBAL','MONTHLY','PROPOSAL_ONLY','q-research',2,false,now()+interval '30 days',interval '30 days','Quant Lead','IndependentValidation/QA','GLOBAL_UTC','FIXED_CADENCE','["HYPOTHESIS_APPROVED_FOR_EXPERIMENT","EXPERIMENT_REGISTRY_READY"]','LATEST_ONLY',1),
('e4100000-0000-4000-8000-000000000037','J37','IndependentValidationPack','GLOBAL','QUARTERLY','PROPOSAL_ONLY','q-control',2,false,now()+interval '90 days',interval '90 days','IndependentValidation','Risk/Compliance','GLOBAL_UTC','FIXED_CADENCE','["OOS_COMPLETE","PBO_DSR_COMPLETE","REPRODUCIBILITY_COMPLETE"]','LATEST_ONLY',1),
('e4100000-0000-4000-8000-000000000038','J38','ModelPolicyDebtReview','GLOBAL','MONTHLY','PROPOSAL_ONLY','q-control',2,false,now()+interval '30 days',interval '30 days','Risk/Architect','Quant/PM','GLOBAL_UTC','FIXED_CADENCE','["DEBT_REGISTER_CURRENT","INCIDENT_REVIEW_COMPLETE"]','LATEST_ONLY',1)
on conflict (operation_code, scope_key, schedule_version) do nothing;
@@ -0,0 +1,97 @@
-- v14.0 governed feedback-cycle delta.
-- This migration formalizes evidence-to-hypothesis-to-independent-validation history.
-- It does not enable automatic model activation, client publication, automatic order submission or KIS submission.
create table if not exists evaluation.model_feedback_cycle (
cycle_id uuid primary key,
scope_key text not null,
base_model_version text not null,
state text not null check (state in (
'PLANNED','PREDICTION_FROZEN','OUTCOMES_MATURING','EVALUATED','IMPROVEMENT_PROPOSED',
'CHALLENGER_PLANNED','INDEPENDENTLY_VALIDATED','PROMOTION_REVIEW_PENDING','BUSINESS_HOLD','CLOSED')),
revision integer not null check (revision > 0),
started_at timestamptz not null,
closed_at timestamptz null,
last_evidence_hash text not null,
updated_at timestamptz not null,
check ((state = 'CLOSED') = (closed_at is not null))
);
create index if not exists ix_model_feedback_cycle_scope_state
on evaluation.model_feedback_cycle (scope_key, state, updated_at desc);
create table if not exists evaluation.model_feedback_transition (
transition_id uuid primary key,
cycle_id uuid not null references evaluation.model_feedback_cycle(cycle_id),
sequence_no integer not null check (sequence_no > 0),
from_state text not null,
to_state text not null,
reason_code text not null,
evidence_hash text not null,
actor_id text not null,
actor_type text not null check (actor_type in ('SYSTEM','OPERATOR','INDEPENDENT_VALIDATOR','INVESTMENT_COMMITTEE')),
correlation_id text not null,
occurred_at timestamptz not null,
content_hash text not null unique,
unique (cycle_id, sequence_no)
);
create table if not exists governance.model_hypothesis_evidence (
hypothesis_evidence_id uuid primary key,
hypothesis_id uuid not null references governance.model_improvement_hypothesis(hypothesis_id),
side text not null check (side in ('SUPPORTING','COUNTER')),
classification text not null check (classification in ('SOURCE','ASSUMPTION','UNKNOWN','DECISION_REQUIRED')),
reference_code text not null,
statement text not null,
content_hash text not null,
created_at timestamptz not null default now(),
unique (hypothesis_id, side, reference_code, content_hash)
);
create table if not exists governance.model_activation_decision (
activation_decision_id uuid primary key,
scope_key text not null,
candidate_model_version text not null,
promotion_review_id uuid not null references governance.model_promotion_review(review_id),
decision text not null check (decision in ('KEEP_CURRENT_CHAMPION','ACTIVATE_FOR_SHADOW','ACTIVATE_FOR_PILOT','REJECT','EXPIRE')),
effective_at timestamptz null,
rollback_model_version text not null,
maker_id text not null,
checker_id text not null,
actor_type text not null check (actor_type = 'HUMAN_CHANGE_APPROVAL'),
change_ticket text not null,
evidence_bundle_hash text not null,
content_hash text not null unique,
decided_at timestamptz not null,
check (maker_id <> checker_id),
check (decision not in ('ACTIVATE_FOR_SHADOW','ACTIVATE_FOR_PILOT') or effective_at is not null)
);
-- Immutable evidence. The cycle aggregate itself remains mutable only through optimistic application logic;
-- every transition is captured here and cannot be edited or deleted.
drop trigger if exists model_feedback_transition_append_only on evaluation.model_feedback_transition;
create trigger model_feedback_transition_append_only
before update or delete on evaluation.model_feedback_transition
for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists model_hypothesis_evidence_append_only on governance.model_hypothesis_evidence;
create trigger model_hypothesis_evidence_append_only
before update or delete on governance.model_hypothesis_evidence
for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists model_activation_decision_append_only on governance.model_activation_decision;
create trigger model_activation_decision_append_only
before update or delete on governance.model_activation_decision
for each row execute function building_blocks.prevent_append_only_change();
comment on table governance.model_activation_decision is
'Human-only activation decision. Scheduler, Hangfire worker and proposal jobs must not insert into this table.';
-- Integrity audit is disabled until cycle aging, ownership and alert contracts are approved.
insert into evaluation.model_operation_schedule
(schedule_id, operation_code, operation_name, scope_key, cadence, automation_mode, queue_name,
schedule_version, enabled, next_due_at, max_lag, primary_owner, secondary_owner,
calendar_id, due_policy, dependency_json, catch_up_policy, max_catch_up)
values
('e4100000-0000-4000-8000-000000000039','J39','FeedbackCycleIntegrityAudit','GLOBAL','DAILY','EVALUATION_ONLY','q-control',1,false,now()+interval '1 day',interval '1 day','Compliance/QA','Quant/SRE','GLOBAL_UTC','FIXED_CADENCE','["FEEDBACK_CYCLE_CONTRACT_APPROVED","AGING_POLICY_APPROVED"]','LATEST_ONLY',1)
on conflict (operation_code, scope_key, schedule_version) do nothing;
@@ -0,0 +1,112 @@
-- v15.0 execution-completeness delta.
-- Evidence evaluation/proposal automation only. Automatic model activation, client publication,
-- automatic order submission and KIS submission remain forbidden.
alter table evaluation.model_operation_schedule
add column if not exists dispatch_revision integer not null default 0 check (dispatch_revision >= 0),
add column if not exists anchor_at timestamptz null,
add column if not exists timezone_id text not null default 'UTC',
add column if not exists last_completed_at timestamptz null,
add column if not exists last_hold_code text null;
update evaluation.model_operation_schedule
set anchor_at = coalesce(anchor_at, next_due_at)
where anchor_at is null;
alter table evaluation.model_operation_request
add column if not exists execution_revision integer not null default 1 check (execution_revision > 0),
add column if not exists last_heartbeat_at timestamptz null,
add column if not exists hold_until timestamptz null,
add column if not exists status_reason_code text null,
add column if not exists scheduled_for timestamptz null;
create table if not exists evaluation.prediction_evaluation_window (
window_request_id uuid primary key,
prediction_evidence_id uuid not null,
scope_key text not null,
calendar_id text not null,
prediction_session date not null,
window_trading_days integer not null check (window_trading_days in (1,5,20,63,126,252)),
due_session date not null,
status text not null check (status in ('PLANNED','MATURED','EVALUATED','BUSINESS_HOLD','QUARANTINED')),
dataset_id text not null,
model_version text not null,
metric_definition_set_hash text not null,
content_hash text not null unique,
created_at timestamptz not null,
matured_at timestamptz null,
evaluated_at timestamptz null,
check (due_session >= prediction_session),
unique (prediction_evidence_id, window_trading_days, metric_definition_set_hash)
);
create index if not exists ix_prediction_evaluation_window_due
on evaluation.prediction_evaluation_window (due_session, status, scope_key)
where status in ('PLANNED','BUSINESS_HOLD');
create table if not exists evaluation.metric_cohort_definition (
cohort_code text not null,
definition_version integer not null check (definition_version > 0),
scope_expression text not null,
inclusion_expression text not null,
exclusion_expression text not null,
minimum_sample_size integer not null check (minimum_sample_size >= 0),
effective_from timestamptz not null,
effective_to timestamptz null,
status text not null check (status in ('PROPOSED','APPROVED','RETIRED')),
content_hash text not null unique,
approved_by text null,
approved_at timestamptz null,
primary key (cohort_code, definition_version),
check (effective_to is null or effective_to > effective_from),
check (status <> 'APPROVED' or (approved_by is not null and approved_at is not null))
);
create table if not exists governance.ui_contract_release (
ui_contract_release_id uuid primary key,
contract_version text not null,
provider_id text not null,
provider_version text not null,
capability_hash text not null,
screen_template_hash text not null,
accessibility_evidence_hash text not null,
visual_regression_hash text null,
performance_evidence_hash text null,
status text not null check (status in ('PROPOSED','APPROVED','RETIRED')),
approved_by text null,
approved_at timestamptz null,
created_at timestamptz not null default now(),
content_hash text not null unique,
unique (contract_version, provider_id, provider_version),
check (status <> 'APPROVED' or (approved_by is not null and approved_at is not null))
);
-- Evaluation windows, cohort definitions and UI contract approvals are immutable evidence.
drop trigger if exists prediction_evaluation_window_append_only on evaluation.prediction_evaluation_window;
create trigger prediction_evaluation_window_append_only
before update or delete on evaluation.prediction_evaluation_window
for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists metric_cohort_definition_append_only on evaluation.metric_cohort_definition;
create trigger metric_cohort_definition_append_only
before update or delete on evaluation.metric_cohort_definition
for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists ui_contract_release_append_only on governance.ui_contract_release;
create trigger ui_contract_release_append_only
before update or delete on governance.ui_contract_release
for each row execute function building_blocks.prevent_append_only_change();
comment on table evaluation.prediction_evaluation_window is
'Immutable 1/5/20/63/126/252 trading-session maturity plan. Revisions create new evidence rows.';
comment on table governance.ui_contract_release is
'Approved normalized UI contract/provider evidence. It does not authorize feature behavior or investment decisions.';
-- Integrity audit remains disabled until approved calendar/cohort definitions and alert runbook exist.
insert into evaluation.model_operation_schedule
(schedule_id, operation_code, operation_name, scope_key, cadence, automation_mode, queue_name,
schedule_version, enabled, next_due_at, max_lag, primary_owner, secondary_owner,
calendar_id, due_policy, dependency_json, catch_up_policy, max_catch_up, anchor_at, timezone_id)
values
('e4100000-0000-4000-8000-000000000040','J40','EvaluationWindowIntegrityAudit','GLOBAL','DAILY','EVALUATION_ONLY','q-control',1,false,now()+interval '1 day',interval '1 day','Quant/QA','Data/SRE','GLOBAL_UTC','FIXED_CADENCE','["TRADING_CALENDAR_APPROVED","METRIC_COHORT_APPROVED"]','LATEST_ONLY',1,now()+interval '1 day','UTC')
on conflict (operation_code, scope_key, schedule_version) do nothing;
@@ -0,0 +1,87 @@
-- v16.0 reference implementation closure.
-- Evaluation/proposal/audit only. Automatic model activation, customer publication,
-- automatic order submission and KIS submission remain forbidden.
create table if not exists evaluation.model_operation_lease (
operation_code text not null,
scope_key text not null,
fencing_token bigint not null check (fencing_token > 0),
lease_owner text not null,
acquired_at timestamptz not null,
expires_at timestamptz not null,
heartbeat_at timestamptz not null,
dispatch_revision integer not null check (dispatch_revision >= 0),
primary key (operation_code, scope_key),
check (expires_at > acquired_at),
check (heartbeat_at >= acquired_at)
);
create table if not exists evaluation.model_evaluation_reconciliation (
reconciliation_id uuid primary key,
prediction_evidence_id uuid not null,
window_trading_days integer not null check (window_trading_days in (1,5,20,63,126,252)),
action text not null check (action in ('NONE','PLAN_MISSING','QUARANTINE_DUPLICATE','BUSINESS_HOLD_LATE','RECALCULATE_REVISION')),
metric_definition_set_hash text not null,
cohort_definition_hash text not null,
dataset_id text not null,
source_revision_hash text not null,
reason_code text not null,
content_hash text not null unique,
created_at timestamptz not null,
unique (prediction_evidence_id, window_trading_days, content_hash)
);
create table if not exists building_blocks.projection_rebuild_request (
rebuild_request_id uuid primary key,
projection_name text not null,
requested_version integer not null check (requested_version > 0),
source_watermark text not null,
requested_by text not null,
reason_code text not null,
status text not null check (status in ('REQUESTED','RUNNING','SUCCEEDED','FAILED','QUARANTINED')),
before_hash text null,
after_hash text null,
requested_at timestamptz not null,
completed_at timestamptz null,
content_hash text not null unique,
check (completed_at is null or completed_at >= requested_at)
);
create table if not exists governance.ui_adapter_compatibility_evidence (
compatibility_evidence_id uuid primary key,
contract_version text not null,
provider_id text not null,
provider_version text not null,
capability_hash text not null,
contract_test_hash text not null,
accessibility_test_hash text not null,
visual_test_hash text null,
performance_test_hash text null,
rollback_test_hash text null,
status text not null check (status in ('PROPOSED','APPROVED','REJECTED','RETIRED')),
approved_by text null,
approved_at timestamptz null,
created_at timestamptz not null,
content_hash text not null unique,
check (status <> 'APPROVED' or (approved_by is not null and approved_at is not null))
);
drop trigger if exists model_evaluation_reconciliation_append_only on evaluation.model_evaluation_reconciliation;
create trigger model_evaluation_reconciliation_append_only before update or delete on evaluation.model_evaluation_reconciliation
for each row execute function building_blocks.prevent_append_only_change();
drop trigger if exists ui_adapter_compatibility_evidence_append_only on governance.ui_adapter_compatibility_evidence;
create trigger ui_adapter_compatibility_evidence_append_only before update or delete on governance.ui_adapter_compatibility_evidence
for each row execute function building_blocks.prevent_append_only_change();
insert into evaluation.model_operation_schedule
(schedule_id, operation_code, operation_name, scope_key, cadence, automation_mode, queue_name,
schedule_version, enabled, next_due_at, max_lag, primary_owner, secondary_owner,
calendar_id, due_policy, dependency_json, catch_up_policy, max_catch_up, anchor_at, timezone_id)
values
('e4100000-0000-4000-8000-000000000041','J41','SchedulerLeaseIntegrityAudit','GLOBAL','DAILY','EVALUATION_ONLY','q-control',1,false,now()+interval '1 day',interval '1 day','SRE/QA','BE/DBA','GLOBAL_UTC','FIXED_CADENCE','["LEASE_CONTRACT_APPROVED","ALERT_RUNBOOK_APPROVED"]','LATEST_ONLY',1,now()+interval '1 day','UTC'),
('e4100000-0000-4000-8000-000000000042','J42','ModelEvaluationReconciliation','GLOBAL','DAILY','EVALUATION_ONLY','q-evaluation',1,false,now()+interval '1 day',interval '1 day','Quant/QA','Data/Risk','GLOBAL_UTC','FIXED_CADENCE','["TRADING_CALENDAR_APPROVED","METRIC_COHORT_APPROVED","SOURCE_REVISION_INDEX_READY"]','LATEST_ONLY',1,now()+interval '1 day','UTC')
on conflict (operation_code, scope_key, schedule_version) do nothing;
comment on table evaluation.model_operation_lease is 'Lease fencing prevents stale workers from advancing schedules or duplicating model evaluation side effects.';
comment on table evaluation.model_evaluation_reconciliation is 'Append-only evaluation repair plan. It never activates a model or submits an order.';
+14
View File
@@ -0,0 +1,14 @@
services:
postgres:
image: postgres:17
environment:
POSTGRES_DB: kartsell
POSTGRES_USER: kartsell
POSTGRES_PASSWORD: kartsell
ports:
- "5432:5432"
volumes:
- kartsell_postgres:/var/lib/postgresql/data
volumes:
kartsell_postgres:
+45
View File
@@ -0,0 +1,45 @@
# 00. 경영진·아키텍처 최종 제안
## 1. 결론
기존 v10.0의 방향은 옳다. 다만 본프로그램 착수 전에 해야 할 일은 기능을 더 추가하는 것이 아니라 **연구 코드와 생산 코드의 경계를 확실히 나누고, 데이터·알고리즘·승인·평가를 하나의 반복 가능한 Vertical Slice로 연결하는 것**이다.
실행 우선순위는 다음과 같다.
1. **연구 재현성 복구**: 원시 데이터 manifest, 환경 lock, 실행 인자, artifact hash
2. **알고리즘 상태기계 정공법 전환**: scalar position이 아닌 Lot/Cycle 단위
3. **데이터 정합성 Gate**: PIT·기업행사·총수익·비용·상폐·FX
4. **BE Walking Skeleton**: Evidence → SellDecision → ReentryWatch → Review → Outcome
5. **FE 업무화면**: Query/Error/Auth/State Matrix를 먼저 표준화
6. **Shadow 운영**: 일평가와 false-exit·재진입 포착·대사·DR 검증
## 2. 과유불급 기준
| 영역 | 해야 할 것 | 하지 말아야 할 것 |
|---|---|---|
| 아키텍처 | Modular Monolith, schema ownership, Architecture Test | 초기 Microservice 분리 |
| SOLID | Policy·Adapter·Validator 책임 분리 | Interface·Factory·Repository 남발 |
| 공통화 | 의미·상태·변경축이 2회 이상 반복될 때 승격 | 한 번 쓰는 추상화 |
| 데이터 | 정규화된 Write Model, 재생성 가능한 Read Model | 화면 편의를 위한 Source Table 직접 Join |
| 알고리즘 | 순수 결정함수, 상태기계, Golden test | 복잡한 종합점수 하나로 모든 위험 상쇄 |
| FE | TanStack Query가 서버상태 소유 | Pinia에 API 응답 복제 |
| Batch | Job은 오케스트레이션만 | Hangfire Job에 정책·SQL·HTTP 혼합 |
| AI 코딩 | Source/Assumption/Unknown + 실행 증거 | 대화만 근거로 정책·컬럼·임계값 생성 |
## 3. 운영사급 Done의 정의
기능이 화면에서 보이는 것으로 끝나지 않는다. 아래가 모두 있어야 Done이다.
- Requirement/Policy/Data/API/DB/Event/Job/UI/Test/Metric/Runbook 추적
- 같은 입력·Version Set으로 같은 결과 재현
- 부분실패·중복·재처리·만료·권한·동시성 검증
- 고객 공개 전 maker-checker와 Evidence hash 보존
- Secondary 운영자의 rollback/replay 리허설
- 기술부채 Owner와 만료일
## 4. 권고 조직 운영
- Sprint capacity의 15%를 데이터·기술부채·재현성 개선에 고정한다.
- 알고리즘 변경 PR과 구조 리팩터링 PR을 분리한다.
- Quant 승인 없는 Golden 변경, DBA 승인 없는 PIT/DDL 변경, 준법 승인 없는 공개 문구 변경을 병합하지 않는다.
- Production 승격과 투자일임형 검토는 적중률이 아니라 장기 비용후 효용과 운영 무결성의 복합 Gate로 결정한다.
+53
View File
@@ -0,0 +1,53 @@
# 01. 첨부 연구 소스 정량·구조 감사
## A. 즉시 조치 P0
| ID | 소스 관찰 | 영향 | 조치 |
|---|---|---|---|
| SRC-P0-01 | 원시 가격데이터와 실행환경 lock이 번들에 없음 | 제3자가 결과를 완전 재현할 수 없음 | Data Manifest, checksum, Python lock, container image digest를 Evidence Pack에 포함 |
| SRC-P0-02 | `v12_positions()`가 전체 보유를 하나의 `entry/peak/floor`로 관리하고 재진입 시 모두 reset | 기존 Core lot과 신규 tactical lot의 사이클이 다시 혼합됨 | `PositionLot`·`CycleState`별 보호선과 재진입 생성 |
| SRC-P0-03 | KR corporate action을 근사 정수비율로 과거 전체에 소급 조정 | 공식 기업행사와 다를 경우 수익·ATR·보호선 왜곡 | 공식 CA master 우선, 추정값은 QUARANTINED evidence로만 사용 |
| SRC-P0-04 | 총수익·PIT 재무·상폐·세금·FX가 없음 | 생산 매도·기대효용 판단 불가 | 가격정책 연구로 한정, 생산 승격 차단 |
| SRC-P0-05 | `portfolio_backtest()`의 overlay 비용이 전역 US 7bps로 고정 | KR 자본바닥 결과의 비용 라벨과 실제 계산 불일치 | 비용을 함수 인자로 강제하고 FeeSchedule PIT로 전환 |
## B. P1 리팩터링
| ID | 관찰 | 개선 |
|---|---|---|
| SRC-P1-01 | `v11_positions`, `v12_positions`, `positions_fast`에 정책 로직 중복 | 단일 Policy Core와 vectorized adapter 분리 |
| SRC-P1-02 | `giveback_cap_v12()`가 정의돼 있으나 실제 v12 계산은 `giveback_cap_v11()` 사용 | dead code 제거 또는 정책 ID와 Golden으로 의도 명시 |
| SRC-P1-03 | `core_floor()`와 별도 `min_pos` literal map이 중복 | YAML→typed config→single resolver |
| SRC-P1-04 | `ROOT=/mnt/data`, FILES global, import 시 output directory 생성 | CLI/config 주입, library와 runner 분리 |
| SRC-P1-05 | Data quality 함수가 global file을 재읽음 | raw input과 canonical input을 명시적으로 전달 |
| SRC-P1-06 | 거래일 결측을 calendar gap으로만 판단 | MarketCalendar 기반 expected session 검증 |
| SRC-P1-07 | backtest cost는 신호일, exposure는 다음날 lag로 반영 | OrderIntent/Fill 시점으로 비용·수량·현금 정렬 |
| SRC-P1-08 | 동적 동일가중에서 종목 시작/종료에 따른 비중 변화 비용이 명시되지 않음 | UniverseEvent와 rebalance trade를 별도 모델링 |
| SRC-P1-09 | `false_exit_rate_63d`가 단순 63일 +10% 여부 | 매도비중·benchmark·비용·재진입을 반영한 FalseExitCost 정의 |
| SRC-P1-10 | 9개 local parameter grid만으로 robustness 판단 | CSCV/PBO, Deflated Sharpe, block bootstrap, walk-forward 확대 |
## C. 유지할 요소
- 수익구간 이후 활성화되는 단조 보호선
- 갭 이탈과 2종가 이탈의 부분매도 구분
- 다음 거래가능 세션 execution lag
- 최소 10세션 재진입 대기와 50일선 상승·20일 고점 조건
- 자본바닥 개념과 비용 스트레스
## D. 연구 코드 목표 구조
```text
research/
pyproject.toml + lock
src/kartsell_research/
data/ # loader, PIT calendar, CA adjustment
domain/ # pure policy contract shared with golden vectors
simulation/ # order/fill/cost/cash/universe
evaluation/ # metrics, false-exit, PBO/DSR
cli/ # no import-time side effects
manifests/
fixtures/
tests/
artifacts/<run-id>/manifest.json
```
연구 Python과 .NET 생산 정책은 서로 호출하지 않는다. 대신 동일한 Golden input/output vector와 Policy ID를 공유해 의미 회귀를 검증한다.
+96
View File
@@ -0,0 +1,96 @@
# 02. 알고리즘 리팩터링·고도화 기준
## 1. 생산 모델 경계
생산 엔진은 수익률 최대화 함수가 아니라 다음의 순서가 보존된 **결정 상태기계**다.
```text
HARD_IMPAIRMENT
→ PORTFOLIO_SURVIVAL
→ DYNAMIC_PROFIT_FLOOR
→ CONCENTRATION_LIQUIDITY
→ OPPORTUNITY_COST
→ REENTRY_OPTION
```
상위 정책이 행동을 결정하면 하위 점수는 이를 상쇄하지 못한다. 모든 정책은 `PolicyId`, 입력 `EvidenceId`, `ModelVersion`, `ConfigVersion`, 허용오차와 반대증거를 남긴다.
## 2. Scalar Position 제거
기존 `position: float` 하나로는 Core와 Tactical, 기존 lot과 재진입 lot을 분리할 수 없다. 다음 모델로 전환한다.
```text
Portfolio
└─ PositionLot (원가·수량·개설/종료·세금 lot)
└─ CycleState (Entry, Peak, Floor, BreachCount, LastSell, LastBuy)
└─ ProtectionState / ReentryWatch
```
- 부분매도는 특정 Lot/Cycle에 귀속된다.
- 재진입은 새 `CycleId`와 새 Lot을 만든다.
- Strategic Core는 정책상 보호 대상 비중과 Tactical 비중을 분리한다.
- Hard Impairment는 자동 재진입을 금지한다.
## 3. Functional Core / Imperative Shell
**Pure Core**
- `SellPolicyChain.Evaluate(input)`
- `ReentryPolicy.Evaluate(input)`
- `PortfolioConstraintPolicy.Evaluate(input)`
- `ExpectedUtilityCalculator.Calculate(input)`
**Imperative Shell**
- PIT data query
- transaction, Dapper SQL
- EvidenceSnapshot 저장
- Outbox 발행
- Hangfire schedule/retry
- SignalR/Telegram 통지
## 4. 기대효용 계산 분해
한 개의 opaque score 대신 구성요소를 별도로 저장한다.
- Hold expected return distribution P10/P50/P90
- ES95와 영구가치훼손 확률×LGD
- marginal portfolio risk
- liquidity/slippage/tax/FX
- replacement lower confidence edge
- reentry option loss
Opportunity sell은 순우위의 신뢰하단이 0을 넘고 IPS·유동성·세금 제약을 통과할 때만 허용한다.
## 5. 실행 시뮬레이션
- 결정: 시장 종가 후
- 주문의도: 다음 거래가능 세션
- Fill: open/VWAP/limit 모델 중 승인된 시나리오
- 부분체결, gap, ADV participation, spread, FX, 세금, 수수료를 별도 이벤트로 기록
- SignalDecision과 Fill은 분리해 추천 성과·실행 성과·고객 행동을 attribution한다.
## 6. 일평가
일평가는 단타 적중률이 아니다.
| 영역 | 핵심 |
|---|---|
| 운영 무결성 | duplicate, lookahead, DQ hold, 미승인 공개, reconciliation |
| 예측 | coverage, calibration, Brier/log loss |
| 매도 | ES/MDD 감소, permanent loss 회피, gain capture, false-exit cost |
| 재진입 | capture, delay cost, duplicate stage, expiry |
| 비용후 효용 | 20/63/126/252 거래일 |
| 모델리스크 | PBO, DSR, parameter stability, regime drift |
## 7. 변경 규칙
임계값·수식·우선순위를 바꾸는 PR은 반드시 다음을 포함한다.
1. Policy ID와 변경 사유
2. Characterization/Golden diff
3. Frozen OOS와 cost×2 결과
4. market/asset/regime별 영향
5. false-exit·reentry·ES 영향
6. ModelCard와 rollback 기준
7. Quant/Risk 승인
+72
View File
@@ -0,0 +1,72 @@
# 03. BE/FE 아키텍처 개선안
## 1. Modular Monolith 경계
- 단일 배포로 시작하되 module·PostgreSQL schema·namespace·API contract를 분리한다.
- 모듈은 다른 모듈의 Source Table을 직접 조회하지 않는다.
- 동기 의존은 좁은 Read Port, 비동기 결합은 Outbox/Inbox Event를 사용한다.
- Microservice 분리는 독립 SLO·배포·용량·소유팀이 실제로 필요할 때만 검토한다.
## 2. Vertical Slice 표준
```text
Features/<Slice>/
Endpoint.cs
Request.cs / Response.cs
Validator.cs
Handler.cs
Policy.cs
Sql.cs / Mapper.cs
Jobs/
Contracts/
Tests/
README.md # traceability
```
Endpoint는 HTTP, Handler는 use case/transaction, Policy는 순수 결정, Adapter는 외부 I/O만 담당한다.
## 3. Dapper·DB 원칙
- Generic Repository 금지
- schema-qualified SQL, 명시적 column, cancellation token
- Write는 3NF/append/revision, Read는 projection
- Evidence·Audit는 update/delete 차단
- DbUp migration은 module별 순번·checksum·fresh/upgrade test
- SELECT `*` 금지, PIT query는 `published_at <= cutoff`와 revision resolver 필수
## 4. Hangfire
Hangfire는 비즈니스 결정자가 아니라 승인된 Application Command의 반복 실행기다.
- JobRunId, Scope, IdempotencyKey, Watermark, Version Set, Input/Output Hash
- transient/permanent/DQ/business-hold retry class 분리
- q-research/q-backfill은 고객 SLA queue와 격리
- Job이 다른 Job을 직접 호출하지 않고 Event 또는 readiness gate로 연결
- 재처리는 overwrite가 아니라 새 Dataset/Revision 생성
## 5. FE 상태 소유권
| 상태 | 소유자 |
|---|---|
| API 서버상태·cache·stale·retry | TanStack Query |
| session·role·UI preference | Pinia |
| form | vee-validate + Zod |
| URL filter/selection | vue-router query/params |
| 대량 업무표 | AG Grid server row model |
Pinia에 API 응답을 복제하거나, 화면마다 401/409/422/429/503 처리를 다시 만들지 않는다.
## 6. FE 컴포넌트 승격 기준
공용 컴포넌트는 시각적 유사성이 아니라 동일한 업무 의미·상태·권한·접근성·테스트가 반복될 때만 만든다.
필수 공통: `QueryStateBoundary`, `PermissionGuard`, `DataGridShell`, `CrudForm`, `VersionConflictDialog`, `DataFreshnessBadge`.
도메인 공통: `EvidencePanel`, `ProtectionFloorPanel`, `ReentryTimeline`, `ApprovalPanel`, `VersionSetPanel`, `GateChecklist`.
## 7. 관측성
- HTTP/Job/SQL/Outbox를 correlationId·JobRunId·EvidenceId로 연결
- Serilog structured logging, OpenTelemetry trace/metric
- PII·token·API key는 log/tag 금지
- 운영 dashboard는 batch SLA, DQ quarantine, duplicate, recon break, model drift를 우선 표시
+51
View File
@@ -0,0 +1,51 @@
WBS_ID,Sprint,Workstream,Task,Deliverable,Done_Gate,Owner,PD,Dependency
R0.01,S0,Governance,Source/Assumption/Unknown registry 동결,docs/source_registry.csv,미확정 기본값 0,PM/Architect,3,-
R0.02,S0,Research,Python 환경·raw manifest·checksum 계약,research/pyproject.lock; manifests,동일 run artifact hash,Quant/Data,6,R0.01
R0.03,S0,Research,현재 결과 characterization,golden/current/*.csv,기존 CSV metric diff 0,Quant/QA,6,R0.02
R0.04,S0,Architecture,Solution/Module/Schema ownership 확정,ADR-001; module matrix,Architecture review,Architect/DBA,4,R0.01
R0.05,S0,DevEx,.NET/FE skeleton·CI·lockfile,"solution, package lock, workflow",restore/build/test green,PL/DevOps,8,R0.04
R0.06,S0,Observability,Correlation/OTel/Serilog walking skeleton,trace/log/metric smoke,HTTP→DB→Outbox trace,SRE/BE,5,R0.05
ALG.01,S1,Algorithm,Policy input/output contract와 PolicyId registry,SignalPolicyContracts,Quant/Risk 승인,Quant/BE,6,R0.03
ALG.02,S1,Algorithm,Lot/Cycle/Protection state model,"Domain/PositionLot,CycleState",invariant/property tests,BE/Quant,10,ALG.01
ALG.03,S1,Algorithm,Hard impairment policy,HardImpairmentPolicy,하위정책 상쇄 0,BE/Quant/QA,6,ALG.01
ALG.04,S1,Algorithm,Profit floor gap/two-close policy,ProfitFloorPolicies,boundary/monotonic tests,BE/Quant/QA,9,ALG.02
ALG.05,S2,Algorithm,Reentry watch state machine,ReentryStateMachine,new Cycle/duplicate0/expiry,BE/Quant/QA,10,ALG.02
ALG.06,S2,Algorithm,Expected utility components,ExpectedUtilityCalculator,decimal/CI/cost2x,Quant/BE,10,ALG.01
ALG.07,S2,Algorithm,Portfolio survival/concentration overlay,PortfolioConstraintPolicies,caps/property tests,Quant/BE,10,ALG.02
DATA.01,S1,Data,Source manifest/raw immutable schema,"raw_record,dataset_manifest",hash/revision/overwrite0,Data/DBA,8,R0.04
DATA.02,S1,Data,MarketCalendar/PIT temporal conventions,published/effective/tradable_session,lookahead0,Data/Quant/QA,8,DATA.01
DATA.03,S2,Data,Corporate Action/Total Return canonical model,CA/TR migrations+golden,official master reconcile,Data/DBA/Quant,12,DATA.01
DATA.04,S2,Data,Fee/Tax/FX temporal model,"fee_schedule,tax,fx",valid range overlap0,DBA/Quant,8,DATA.02
DATA.05,S2,Data,DQ rule engine/quarantine,DQ-01~12 pipeline,critical rule release block,Data/QA,12,DATA.01~04
DATA.06,S3,Data,Immutable ledger/lot/cycle,"ledger_entry,position_lot",debit-credit/reversal,BE/DBA/QA,12,"ALG.02,DATA.03~04"
DATA.07,S3,Data,Evidence/Decision/Watch schemas,"evidence,decision,watch",append/hash/state checks,DBA/BE,10,ALG.03~05
BE.01,S0,Backend,BuildingBlocks Result/Clock/Data/Outbox,src/KArtSell.BuildingBlocks,unit/architecture,BE,8,R0.05
BE.02,S0,Backend,FastEndpoints/ProblemDetails/Auth conventions,Host + Endpoint base,OpenAPI/error mapping,BE/Security,7,BE.01
BE.03,S0,Backend,Dapper transaction/DbUp runner,"DbSession, Migrator",fresh/upgrade/re-run,BE/DBA,8,BE.01
BE.04,S1,Backend,JobRun/Watermark/Hangfire queues,"job_run, job_watermark",duplicate0/resume,BE/SRE/DBA,10,BE.03
BE.05,S2,Backend,Evidence→SellDecision slice,VS-09/10,Golden/E2E/metric,BE/Quant/QA,14,"ALG.03~04,DATA.07"
BE.06,S2,Backend,Sell→ReentryWatch slice,VS-11,state/calendar/E2E,BE/Quant/QA,12,"ALG.05,BE.05"
BE.07,S3,Backend,Recommendation→Review→Publish slice,VS-14~16,maker-checker/hash/expiry,BE/FE/Compliance,18,BE.05~06
BE.08,S4,Backend,Outcome/Evaluation windows,VS-18,1/5/20/63/126/252,BE/Quant/Data,14,"BE.07,DATA.03~04"
BE.09,S4,Backend,Frozen backtest runner,VS-19,manifest/repro/cost2x,BE/Quant/QA,14,"R0.02,ALG.01~07"
BE.10,S5,Backend,Risk/Rebalance/Replacement,VS-13/21/22,constraints/NO_ACTION,BE/Quant/QA,18,"ALG.06~07,DATA.06"
FE.01,S0,Frontend,AppShell/router/query/api/error,app/shared,lint/type/test/build,FE,10,R0.05
FE.02,S1,Frontend,QueryState/Permission/Freshness,C-003~005,11-state/a11y,FE/QA,8,FE.01
FE.03,S1,Frontend,DataGrid/Form/Conflict primitives,C-006~010,paging/409/422,FE/QA,12,FE.01
FE.04,S2,Frontend,Evidence/Protection/Cost/Reentry components,C-016~019,boundary/table alternative,FE/Quant/UX,12,FE.02
FE.05,S3,Frontend,Recommendation review workbench,SCR-009/T05,RBAC/concurrency/E2E,FE/QA/Security,14,"BE.07,FE.03~04"
FE.06,S4,Frontend,Advice/Outcome/Scorecard pages,SCR-002/010,as-of/version/partial,FE/QA/Quant,14,"BE.08,FE.04"
FE.07,S5,Frontend,Portfolio/Rebalance/Product pages,SCR-004~006,10k grid/perf/a11y,FE/QA/Quant,16,"BE.10,FE.03"
QA.01,All,Quality,Architecture/import/schema tests,ArchitectureTests,금지 의존0,Architect/QA,8,R0.04
QA.02,All,Quality,PostgreSQL integration/Data tests,IntegrationTests/DataTests,fresh DB/PIT/replay,QA/DBA,14,"BE.03,DATA.01"
QA.03,S1~,Quality,Algorithm Golden/property/boundary,SignalEngine.Tests,same input same result,QA/Quant,14,ALG.01
QA.04,S2~,Quality,Job fault/retry/replay/concurrency,JobTests,duplicate0/resume,QA/SRE,12,BE.04
QA.05,S3~,Quality,Playwright role/state journeys,frontend/e2e,review/publish/expired,QA/FE,14,FE.05
OPS.01,S4,Operations,Metrics/alerts/runbooks,runbooks + dashboards,P1/P2 drill,SRE/Ops,10,BE.05~08
OPS.02,S5,Operations,Backfill/rebuild/reconcile,maintenance jobs,checkpoint/hash/reconcile,SRE/Data/DBA,12,DATA.01~07
OPS.03,S6,Operations,Shadow daily scorecard,J10/J11 dashboard,252일 누적 시작,Quant/Risk/Ops,12,"BE.08,OPS.01"
OPS.04,S6,Operations,Kill-switch/DR/Secondary rehearsal,Runbook evidence,RPO/RTO/rollback,SRE/Security/Ops,12,OPS.01~02
GATE.01,S0,Gate,G0 implementation-ready,Release Evidence,RG-01~10,Steering,2,R0.*
GATE.02,S2,Gate,G2 Algorithm/Data baseline,Model/Data evidence,Golden+PIT+replay,Quant/Risk/Data,3,"ALG.*,DATA.01~05"
GATE.03,S4,Gate,G3 Advisory E2E,E2E evidence,approval/publication/outcome,Compliance/QA,3,"BE.07~09,FE.05~06"
GATE.04,S6,Gate,G4 Shadow start,Ops evidence,DQ/recon/DR/kill-switch,Steering,3,OPS.01~04
1 WBS_ID Sprint Workstream Task Deliverable Done_Gate Owner PD Dependency
2 R0.01 S0 Governance Source/Assumption/Unknown registry 동결 docs/source_registry.csv 미확정 기본값 0 PM/Architect 3 -
3 R0.02 S0 Research Python 환경·raw manifest·checksum 계약 research/pyproject.lock; manifests 동일 run artifact hash Quant/Data 6 R0.01
4 R0.03 S0 Research 현재 결과 characterization golden/current/*.csv 기존 CSV metric diff 0 Quant/QA 6 R0.02
5 R0.04 S0 Architecture Solution/Module/Schema ownership 확정 ADR-001; module matrix Architecture review Architect/DBA 4 R0.01
6 R0.05 S0 DevEx .NET/FE skeleton·CI·lockfile solution, package lock, workflow restore/build/test green PL/DevOps 8 R0.04
7 R0.06 S0 Observability Correlation/OTel/Serilog walking skeleton trace/log/metric smoke HTTP→DB→Outbox trace SRE/BE 5 R0.05
8 ALG.01 S1 Algorithm Policy input/output contract와 PolicyId registry SignalPolicyContracts Quant/Risk 승인 Quant/BE 6 R0.03
9 ALG.02 S1 Algorithm Lot/Cycle/Protection state model Domain/PositionLot,CycleState invariant/property tests BE/Quant 10 ALG.01
10 ALG.03 S1 Algorithm Hard impairment policy HardImpairmentPolicy 하위정책 상쇄 0 BE/Quant/QA 6 ALG.01
11 ALG.04 S1 Algorithm Profit floor gap/two-close policy ProfitFloorPolicies boundary/monotonic tests BE/Quant/QA 9 ALG.02
12 ALG.05 S2 Algorithm Reentry watch state machine ReentryStateMachine new Cycle/duplicate0/expiry BE/Quant/QA 10 ALG.02
13 ALG.06 S2 Algorithm Expected utility components ExpectedUtilityCalculator decimal/CI/cost2x Quant/BE 10 ALG.01
14 ALG.07 S2 Algorithm Portfolio survival/concentration overlay PortfolioConstraintPolicies caps/property tests Quant/BE 10 ALG.02
15 DATA.01 S1 Data Source manifest/raw immutable schema raw_record,dataset_manifest hash/revision/overwrite0 Data/DBA 8 R0.04
16 DATA.02 S1 Data MarketCalendar/PIT temporal conventions published/effective/tradable_session lookahead0 Data/Quant/QA 8 DATA.01
17 DATA.03 S2 Data Corporate Action/Total Return canonical model CA/TR migrations+golden official master reconcile Data/DBA/Quant 12 DATA.01
18 DATA.04 S2 Data Fee/Tax/FX temporal model fee_schedule,tax,fx valid range overlap0 DBA/Quant 8 DATA.02
19 DATA.05 S2 Data DQ rule engine/quarantine DQ-01~12 pipeline critical rule release block Data/QA 12 DATA.01~04
20 DATA.06 S3 Data Immutable ledger/lot/cycle ledger_entry,position_lot debit-credit/reversal BE/DBA/QA 12 ALG.02,DATA.03~04
21 DATA.07 S3 Data Evidence/Decision/Watch schemas evidence,decision,watch append/hash/state checks DBA/BE 10 ALG.03~05
22 BE.01 S0 Backend BuildingBlocks Result/Clock/Data/Outbox src/KArtSell.BuildingBlocks unit/architecture BE 8 R0.05
23 BE.02 S0 Backend FastEndpoints/ProblemDetails/Auth conventions Host + Endpoint base OpenAPI/error mapping BE/Security 7 BE.01
24 BE.03 S0 Backend Dapper transaction/DbUp runner DbSession, Migrator fresh/upgrade/re-run BE/DBA 8 BE.01
25 BE.04 S1 Backend JobRun/Watermark/Hangfire queues job_run, job_watermark duplicate0/resume BE/SRE/DBA 10 BE.03
26 BE.05 S2 Backend Evidence→SellDecision slice VS-09/10 Golden/E2E/metric BE/Quant/QA 14 ALG.03~04,DATA.07
27 BE.06 S2 Backend Sell→ReentryWatch slice VS-11 state/calendar/E2E BE/Quant/QA 12 ALG.05,BE.05
28 BE.07 S3 Backend Recommendation→Review→Publish slice VS-14~16 maker-checker/hash/expiry BE/FE/Compliance 18 BE.05~06
29 BE.08 S4 Backend Outcome/Evaluation windows VS-18 1/5/20/63/126/252 BE/Quant/Data 14 BE.07,DATA.03~04
30 BE.09 S4 Backend Frozen backtest runner VS-19 manifest/repro/cost2x BE/Quant/QA 14 R0.02,ALG.01~07
31 BE.10 S5 Backend Risk/Rebalance/Replacement VS-13/21/22 constraints/NO_ACTION BE/Quant/QA 18 ALG.06~07,DATA.06
32 FE.01 S0 Frontend AppShell/router/query/api/error app/shared lint/type/test/build FE 10 R0.05
33 FE.02 S1 Frontend QueryState/Permission/Freshness C-003~005 11-state/a11y FE/QA 8 FE.01
34 FE.03 S1 Frontend DataGrid/Form/Conflict primitives C-006~010 paging/409/422 FE/QA 12 FE.01
35 FE.04 S2 Frontend Evidence/Protection/Cost/Reentry components C-016~019 boundary/table alternative FE/Quant/UX 12 FE.02
36 FE.05 S3 Frontend Recommendation review workbench SCR-009/T05 RBAC/concurrency/E2E FE/QA/Security 14 BE.07,FE.03~04
37 FE.06 S4 Frontend Advice/Outcome/Scorecard pages SCR-002/010 as-of/version/partial FE/QA/Quant 14 BE.08,FE.04
38 FE.07 S5 Frontend Portfolio/Rebalance/Product pages SCR-004~006 10k grid/perf/a11y FE/QA/Quant 16 BE.10,FE.03
39 QA.01 All Quality Architecture/import/schema tests ArchitectureTests 금지 의존0 Architect/QA 8 R0.04
40 QA.02 All Quality PostgreSQL integration/Data tests IntegrationTests/DataTests fresh DB/PIT/replay QA/DBA 14 BE.03,DATA.01
41 QA.03 S1~ Quality Algorithm Golden/property/boundary SignalEngine.Tests same input same result QA/Quant 14 ALG.01
42 QA.04 S2~ Quality Job fault/retry/replay/concurrency JobTests duplicate0/resume QA/SRE 12 BE.04
43 QA.05 S3~ Quality Playwright role/state journeys frontend/e2e review/publish/expired QA/FE 14 FE.05
44 OPS.01 S4 Operations Metrics/alerts/runbooks runbooks + dashboards P1/P2 drill SRE/Ops 10 BE.05~08
45 OPS.02 S5 Operations Backfill/rebuild/reconcile maintenance jobs checkpoint/hash/reconcile SRE/Data/DBA 12 DATA.01~07
46 OPS.03 S6 Operations Shadow daily scorecard J10/J11 dashboard 252일 누적 시작 Quant/Risk/Ops 12 BE.08,OPS.01
47 OPS.04 S6 Operations Kill-switch/DR/Secondary rehearsal Runbook evidence RPO/RTO/rollback SRE/Security/Ops 12 OPS.01~02
48 GATE.01 S0 Gate G0 implementation-ready Release Evidence RG-01~10 Steering 2 R0.*
49 GATE.02 S2 Gate G2 Algorithm/Data baseline Model/Data evidence Golden+PIT+replay Quant/Risk/Data 3 ALG.*,DATA.01~05
50 GATE.03 S4 Gate G3 Advisory E2E E2E evidence approval/publication/outcome Compliance/QA 3 BE.07~09,FE.05~06
51 GATE.04 S6 Gate G4 Shadow start Ops evidence DQ/recon/DR/kill-switch Steering 3 OPS.01~04
+8
View File
@@ -0,0 +1,8 @@
DebtId,Title,RiskClass,Evidence,Impact,Owner,Secondary,Created,Due,Remediation,ExitTest,Priority,Decision
TD-001,Python 원시데이터·환경 lock 부재,Data/Model,source manifest warning,재현성 상실,Quant Lead,Data Lead,2026-08-01,S0,manifest+lock+container,clean-room replay hash,P1,Fix
TD-002,Scalar position과 lot cycle 혼합,Model,source v12_positions,보호선·재진입 왜곡,BE Lead,Quant Lead,2026-08-01,S2,Lot/Cycle state model,property+golden,P1,Fix
TD-003,KR capital-floor overlay 비용 상수,Model/Data,portfolio_backtest global cost,KR 결과 왜곡,Quant Lead,QA Lead,2026-08-01,S0,cost parameter/FeeSchedule,cost sensitivity diff,P1,Fix
TD-004,기업행사 추정 소급조정,Data,load_kr inferred integer rescale,가격·ATR 왜곡,Data Lead,DBA,2026-08-01,S2,official CA master,CA golden reconcile,P1,Fix
TD-005,정책 코드 중복,Engineering,v11/v12/fast,의미 drift,BE Lead,Quant Lead,2026-08-01,S2,single policy core,contract/golden,P2,Fix
TD-006,FE lockfile 미생성,Engineering,template baseline,빌드 비결정성,FE Lead,DevOps,2026-08-01,G0,pnpm-lock commit,CI frozen install,P2,Fix
TD-007,Read Model rebuild 미구현,Operations,initial template,화면 stale/recovery,Data Lead,SRE,2026-08-01,S6,projection version+rebuild,disaster rebuild test,P2,Defer
1 DebtId Title RiskClass Evidence Impact Owner Secondary Created Due Remediation ExitTest Priority Decision
2 TD-001 Python 원시데이터·환경 lock 부재 Data/Model source manifest warning 재현성 상실 Quant Lead Data Lead 2026-08-01 S0 manifest+lock+container clean-room replay hash P1 Fix
3 TD-002 Scalar position과 lot cycle 혼합 Model source v12_positions 보호선·재진입 왜곡 BE Lead Quant Lead 2026-08-01 S2 Lot/Cycle state model property+golden P1 Fix
4 TD-003 KR capital-floor overlay 비용 상수 Model/Data portfolio_backtest global cost KR 결과 왜곡 Quant Lead QA Lead 2026-08-01 S0 cost parameter/FeeSchedule cost sensitivity diff P1 Fix
5 TD-004 기업행사 추정 소급조정 Data load_kr inferred integer rescale 가격·ATR 왜곡 Data Lead DBA 2026-08-01 S2 official CA master CA golden reconcile P1 Fix
6 TD-005 정책 코드 중복 Engineering v11/v12/fast 의미 drift BE Lead Quant Lead 2026-08-01 S2 single policy core contract/golden P2 Fix
7 TD-006 FE lockfile 미생성 Engineering template baseline 빌드 비결정성 FE Lead DevOps 2026-08-01 G0 pnpm-lock commit CI frozen install P2 Fix
8 TD-007 Read Model rebuild 미구현 Operations initial template 화면 stale/recovery Data Lead SRE 2026-08-01 S6 projection version+rebuild disaster rebuild test P2 Defer
+35
View File
@@ -0,0 +1,35 @@
# 06. 바이브코딩·홀루시네이션 통제
## AI 작업 입력 패킷
AI에게 코드를 요청하기 전에 아래 8개가 있어야 한다.
1. Source: 근거 문단/Policy ID/ADR/Data Contract
2. Slice Spec: 사용자 결과·비목표·상태·권한
3. Screen Spec: component/state/a11y
4. Contract: Endpoint/Event/Job/ProblemDetails/Idempotency/ETag
5. Data: schema/column/PIT/unit/migration/index/lineage
6. Tests: unit/integration/data/E2E/Golden/failure/replay
7. Ops: metric/alert/runbook/rollback/owner
8. Output Rule: 변경파일·명령·결과·가정·잔여위험
## 차단 규칙
- 근거 없는 Policy ID·임계값·DB 컬럼·API는 생성하지 않는다.
- 미확정은 `DECISION_REQUIRED` 또는 `DESIGN_PROPOSAL`로 표시한다.
- 한 PR은 한 Slice 또는 한 리팩터링 목적만 가진다.
- 기능 변경과 동작불변 리팩터링을 한 PR에 섞지 않는다.
- 실패·skip·실행하지 못한 테스트를 숨기지 않는다.
- AI가 생성한 SQL은 schema owner, PIT 조건, index, execution plan 검토를 받는다.
- AI가 생성한 알고리즘은 Golden/Frozen OOS diff 없이 병합하지 않는다.
- 실고객 데이터·token·API key를 프롬프트/fixture/log에 넣지 않는다.
## 리팩터링 정공법
1. Characterize: 현재 동작을 test/Golden/perf로 동결
2. Isolate: I/O와 순수 정책 seam 분리
3. Small Transform: rename/extract/move 한 종류씩
4. Verify: unit/integration/data/E2E/backtest/perf diff
5. Simplify: dead abstraction/flag/branch 삭제
6. Observe: release 후 SLO/DQ/model/recon 확인
7. Close Debt: Debt ID/ADR/Secondary 지식 이전
+31
View File
@@ -0,0 +1,31 @@
# 07. 검증·Release Gate
## RG-01~10
| Gate | 조건 |
|---|---|
| RG-01 | REQ/SCR/VS/Policy ID와 사용자 결과·비목표 승인 |
| RG-02 | PIT 필드·단위·published_at·revision·DQ·source/license 정의 |
| RG-03 | 화면 template/component/state/권한 정의 |
| RG-04 | Endpoint/Event/Job/Read Model/DbUp/오류·멱등·동시성 정의 |
| RG-05 | queue/schedule/watermark/retry/replay/kill-switch 정의 |
| RG-06 | Unit/Integration/Data/E2E/Golden/Failure/Replay 연결 |
| RG-07 | Metric/Alert/Runbook/Rollback/Owner/Secondary 정의 |
| RG-08 | AI Source/Unknown/Design Proposal 구분 |
| RG-09 | 정규화/Read Model lineage/rebuild/staleness 승인 |
| RG-10 | PR 한 목적, 선행 의존 충족 |
## Release 차단 기준
- lookahead > 0
- Evidence hash 재현 < 100%
- duplicate command/job/order > 0
- 미승인 공개 > 0
- ledger/reconciliation 미승인 break > 0
- Critical secret/PII 노출
- Model/Config/Data SHA 누락
- 자동주문 Capability ON
## 생산 승격 제외
이 템플릿은 자동주문과 투자일임형 승격을 구현하지 않는다. 최소 252거래일 Shadow와 복수 국면, 비용후 효용, calibration, ES/영구손실, false-exit·재진입, PBO/DSR, 대사·DR·준법 Gate 후 별도 승인 대상이다.
@@ -0,0 +1,298 @@
# K-ArtSell Aegis v11.1 전략적 하드닝 제안
상태: `IMPLEMENTATION_DELTA / STATIC_REVIEWED_NOT_BUILD_VERIFIED`
기준선: SI 누적 통합 실행기준서 v10.0 + K-ArtSell 12.2 연구 번들 + v11 구현 가속 패키지
운영 경계: 투자자문형 우선 · 자동주문 OFF · `RESEARCH_CANDIDATE_NOT_PRODUCTION`
## 1. 결론
v10.0과 v11 패키지를 다시 쓰지 않는다. `Baseline Preservation + Delta + Supersession + Traceability` 원칙으로 v11.1 하드닝 Delta를 추가한다.
우선순위는 다음과 같다.
1. 연구 결과 재현성 복구: 원시 데이터 manifest, checksum, Python lock, 실행 이미지 digest.
2. PIT·기업행사·총수익·비용·상폐·FX 데이터 정합성.
3. Scalar position 제거와 Lot/Cycle 기반 매도·재진입 상태기계.
4. EvidenceSnapshot → SellDecision → Recommendation → Review → Publish → Outcome의 불변 추적.
5. BE/FE/Job/DB를 Slice 단위로 끝내는 Vertical Slice.
6. Shadow 일평가와 운영 무결성. 자동주문은 별도 승인 전까지 구현·활성화 금지.
## 2. 첨부 소스에서 확인한 핵심 결함
### P0
- 연구 번들에 원시 데이터와 환경 lock이 없어 제3자 clean-room 재현이 불가능하다.
- Python `v12_positions()`가 기존 Core와 신규 Tactical lot을 하나의 entry/peak/floor로 혼합한다.
- 한국 기업행사를 정수비율 추정으로 과거 전체에 소급 적용한다.
- 총수익·PIT 재무/컨센서스·상폐수익·세금·FX가 불완전하다.
- 자본바닥 비용이 함수 계약이 아니라 전역 상수에 묶여 결과 라벨과 실제 계산이 달라질 수 있다.
- v11 템플릿의 연구 평가 Endpoint가 `AllowAnonymous()`이고, Handler·Evidence 검증·DB 저장·Outbox가 없다.
- FE CI는 `pnpm-lock.yaml`을 요구하지만 패키지에 lockfile이 없다.
### P1
- 매도 정책이 Hard impairment, gap, two-close 3개만 구현되어 survival·집중/유동성·기회비용이 누락됐다.
- 매도비중의 단위가 “현재 lot 대비 비율”인지 “포트폴리오 절대비중”인지 계약이 모호하다.
- Reentry 상태기계가 `REENTERED → WATCH/OPEN` 다단계 전이를 표현하지 못한다.
- Evidence 불변 trigger는 있으나 SignalDecision 불변 trigger가 빠져 있다.
- Architecture Test가 Generic Repository 문자열 탐지만 수행한다.
- FE가 API contract를 수동 중복 정의하고, retry 시 Idempotency-Key를 새로 만들어 동일 명령의 재시도 의미를 깨뜨린다.
## 3. SOLID의 현장 적용
| 원칙 | 적용 | 과유불급 차단 |
|---|---|---|
| S | Endpoint=HTTP, Handler=유스케이스/트랜잭션, Policy=순수 결정, Adapter=외부 I/O | God Service, Job 내 정책 로직 금지 |
| O | Policy/DQ/Adapter는 명시적 registry로 추가하되 우선순위와 계약은 고정 | 임의 plugin framework, reflection 기반 자동 발견 금지 |
| L | KRX/DART/KIS Adapter 대체 시 동일 시간·단위·오류 contract test | mock 통과만으로 공급원 대체 금지 |
| I | `IMarketDataSource`, `IFilingSource`, `IEvidenceReader`, `IClock` 등 좁은 Port | 범용 Repository/IServiceProvider 노출 금지 |
| D | Domain은 Npgsql/Hangfire/HTTP를 모른다 | Infrastructure type이 Domain으로 침투하는 것 금지 |
추상화는 두 번째 실제 구현과 동일한 변경축이 확인된 뒤 승격한다. 한 번 쓰는 interface, generic repository, 범용 mediator wrapper는 만들지 않는다.
## 4. 알고리즘 고도화
### 4.1 생산 경계
생산 엔진은 점수 합산기가 아니라 순서가 고정된 결정 상태기계다.
`HARD_IMPAIRMENT → PORTFOLIO_SURVIVAL → DYNAMIC_PROFIT_FLOOR → CONCENTRATION_LIQUIDITY → OPPORTUNITY_COST → REENTRY_OPTION`
상위 사유는 하위 기대수익으로 상쇄하지 않는다. 모든 결정은 다음 Version Set을 남긴다.
- `PolicyId`, `PolicyVersion`
- `EvidenceId`, `DatasetId`, `DataHash`
- `ModelVersion`, `ConfigVersion`, `CodeSha`
- `AsOf`, `PublishedAtCutoff`, `TradableSession`
- 입력 단위, rounding, 허용오차, 반대증거
### 4.2 Lot/Cycle 모델
- `PositionLot`: 수량·원가·세금 lot·개설/종료.
- `CycleState`: entry, peak, floor, breach count, last sell/buy.
- `ProtectionState`: 보호 활성화와 단조 floor.
- `ReentryWatch`: 매도 원인, 대기, 조건, 단계, 만료.
- 재진입은 새 `CycleId`와 새 Lot을 생성한다.
- Hard impairment는 자동 재진입을 금지한다.
### 4.3 매도 수량 계약
`SellRatioOfLot``TargetPortfolioWeightAfter`를 분리한다. API/DB/UI에서 단순 `sell_fraction` 하나를 사용하지 않는다.
- `SellRatioOfLot`: 현재 lot 수량 중 매도 비율, 0~1.
- `SellQuantity`: 주문 단위 반영 후 실제 제안 수량.
- `TargetPortfolioWeightAfter`: 매도 후 목표 포트폴리오 비중.
- `StrategicCoreFloorWeight`: 포트폴리오 절대비중.
이 구분이 없으면 Core floor와 부분매도 비율을 잘못 비교하게 된다.
### 4.4 기대효용
opaque score를 금지하고 구성요소를 저장한다.
- P10/P50/P90 기대수익
- ES95
- 영구가치훼손 확률 × LGD
- marginal portfolio risk
- liquidity/slippage/tax/FX
- replacement lower-confidence edge
- reentry option loss
Opportunity sell은 순우위 신뢰하단이 0을 초과하고 IPS·유동성·세금 제약을 통과한 경우만 허용한다.
### 4.5 연구와 생산의 분리
Python 연구 코드는 생산 엔진에서 호출하지 않는다. Python과 .NET은 동일 Golden Vector와 Policy ID만 공유한다.
- Python: 대규모 탐색, walk-forward, CSCV/PBO, DSR, bootstrap.
- .NET: 승인된 순수 정책, Evidence/Decision/Audit, Shadow 운영.
- 결과 비교: manifest + deterministic seed + tolerance.
## 5. 데이터 정합성·정규화·역정규화
### 5.1 계층
1. L0 Source Manifest: 권리·schema/version·SLA·timezone·단위.
2. L1 Raw Immutable: payload/hash/event/published/ingested.
3. L2 Canonical PIT: 가격·기업행사·재무·컨센서스·비용 revision.
4. L3 Quality/Lineage: DQ·quarantine·watermark·dataset manifest.
5. L4 Feature/Evidence: feature/forecast/risk/evidence hash.
6. L5 Transaction/Audit: ledger/decision/review/publication/fill/outcome.
7. L6 Read Model: 화면·리포트 projection.
8. L7 Artifact: backtest/model card/release evidence.
### 5.2 정규화 원칙
- 원장·현금·lot: 3NF + append/reversal.
- PIT 가격/재무/공시: source + published_at + revision + hash.
- 추천/승인/공개: 현재상태와 이력 분리.
- 설정/수수료: `valid_from/to`; current flag 단독 사용 금지.
- Evidence: JSONB 원문 + 검색/제약에 필요한 핵심 컬럼 승격.
### 5.3 역정규화 허용 조건
Read Model에만 허용하며 반드시 다음을 가진다.
- Owner
- ProjectionVersion
- SourceWatermark
- RefreshedAt/StaleAt
- Rebuild command
- Lineage
- 권한 scope
Source table을 화면에서 임의 join하거나 current value를 복제하지 않는다.
### 5.4 DB 강제 규칙
- schema-qualified SQL, 명시적 column, `SELECT *` 금지.
- Evidence/Decision/Audit update/delete 차단 trigger.
- 시간 범위 overlap exclusion 또는 사전 검증.
- Idempotency unique key.
- Outbox pending index와 lease/attempt/dead-letter.
- DbUp fresh/upgrade/re-run/failure rehearsal.
## 6. BE 고도화
### 6.1 Slice 표준
```text
Features/<Slice>/
Endpoint.cs
Request.cs
Response.cs
Validator.cs
Handler.cs
Policy.cs
Sql.cs
Mapper.cs
Contracts/
Jobs/
Tests/
README.md
```
Endpoint는 `EvidenceId`, 모델버전, 정책 임계값을 클라이언트에서 그대로 신뢰하지 않는다. 요청은 업무 식별자와 as-of만 받고 Handler가 승인된 Evidence와 Version Set을 조회한다.
### 6.2 트랜잭션
동일 PostgreSQL transaction에서 다음을 처리한다.
1. Idempotency claim.
2. Evidence/lot/cycle as-of 조회.
3. 순수 Policy 평가.
4. Decision append.
5. Outbox append.
6. commit.
외부 API 호출은 transaction 밖에서 수행하고 raw result를 먼저 저장한다.
### 6.3 Outbox/Inbox
- Event payload는 최소키와 schema version만 포함.
- consumer별 Inbox unique key.
- 재처리는 동일 결과 또는 no-op.
- poison event는 dead-letter와 운영 승인 후 replay.
- 이벤트가 Job을 직접 호출하지 않고 readiness/command를 만든다.
### 6.4 Hangfire
Queue를 다음처럼 분리한다.
- `q-control`
- `q-market-data`
- `q-fundamentals`
- `q-feature-risk`
- `q-recommendation`
- `q-evaluation`
- `q-reconciliation`
- `q-research`
- `q-backfill`
모든 Job은 `JobRunId`, `ScopeKey`, `IdempotencyKey`, `Watermark`, Version Set, input/output hash를 가진다. DQ/business-hold는 transient retry와 분리한다.
### 6.5 보안
- `/internal/*` 익명 접근 금지.
- 자동주문 Capability는 코드와 설정 모두 기본 OFF.
- Swagger는 dev 또는 승인된 운영자만.
- maker-checker와 SoD를 endpoint/DB/audit에서 동시에 검증.
- secret/PII/token은 log, trace tag, fixture, prompt에 금지.
## 7. FE 고도화
### 7.1 상태 소유권
- 서버 상태: TanStack Query.
- 세션/role/UI preference: Pinia.
- form: vee-validate + Zod.
- filter/selection: router query/params.
- 대량 표: AG Grid server-side row model.
Pinia에 API 응답을 복제하지 않는다.
### 7.2 공통 상태 계약
`LOADING, EMPTY, PARTIAL, STALE, WARN, ERROR, UNAUTHORIZED, FORBIDDEN, CONFLICT, EXPIRED, READONLY`를 공통 컴포넌트로 처리한다.
### 7.3 계약과 멱등
- OpenAPI에서 DTO를 생성하거나 versioned contract를 단일 관리한다.
- submit 시 한 번 생성한 Idempotency-Key를 동일 retry에 재사용한다.
- 409는 `VersionConflictDialog`, 422는 field/summary mapping, 429/503은 retry-after를 표시한다.
- 고객 화면은 연구용 내부 evaluate endpoint를 호출하지 않는다.
### 7.4 컴포넌트화
공용 승격은 동일 업무 의미·상태·권한·접근성·테스트가 반복될 때만 한다.
공통: `QueryStateBoundary`, `PermissionGuard`, `DataGridShell`, `CrudForm`, `VersionConflictDialog`, `DataFreshnessBadge`.
도메인: `EvidencePanel`, `ProtectionFloorPanel`, `ReentryTimeline`, `ApprovalPanel`, `VersionSetPanel`, `GateChecklist`.
## 8. 바이브코딩·홀루시네이션 통제
- 채팅은 Source of Truth가 아니다.
- AI는 Policy ID, DB column, API, threshold를 발명하지 않는다.
- 모든 PR에 `Source / Assumption / Unknown / Decision Required`를 기록한다.
- 실행하지 않은 build/test/migration을 통과했다고 기록하지 않는다.
- 리팩터링 전 characterization test를 먼저 고정한다.
- 한 PR은 한 Slice 또는 한 리팩터링 목적만 가진다.
- AI 생성 migration은 fresh/upgrade/re-run과 DBA review 없이는 병합하지 않는다.
- 알고리즘 변경은 Golden/OOS/cost×2/false-exit/reentry/ES/ModelCard를 동시에 갱신한다.
## 9. 기술부채 운영
- P0는 기능 개발보다 먼저 처리한다.
- 각 Sprint 용량의 15~20%를 승인된 기술부채에 배정한다.
- Debt는 Risk, Interest, Owner, Due, Remediation, Exit Test를 가진다.
- “나중에 정리”가 아니라 해당 Slice의 Definition of Done에 포함한다.
- 무기한 예외는 금지하고 expiry와 재승인을 둔다.
## 10. 16 Sprint 개선 로드맵
기존 32주 기준은 유지하되 Release Train으로 묶는다.
| Train | Sprint | 목표 | 핵심 Gate |
|---|---|---|---|
| R0 Foundation | S0~S3 | 재현성, CI, PIT/CA/비용, ledger | build/lock/replay/lookahead 0 |
| R1 Sell/Reentry | S4~S5 | Evidence, Lot/Cycle, 매도/재진입 | Golden/state/invariant |
| R2 Advisory MVP | S6~S8 | IPS, 추천, 검토, 공개, 결과 | maker-checker/E2E/audit |
| R3 Portfolio Intelligence | S9~S11 | risk, rebalance, buy/replacement, scorecard | constraint/NO_ACTION/Shadow |
| R4 Pilot Hardening | S12~S15 | KIS capability OFF, recon, security, DR, cutover | duplicate 0/recon/DR/rollback |
Critical Path를 벗어난 대시보드·상품탐색 선행 구현은 제한한다.
## 11. 템플릿 적용 판정
첨부 v11 템플릿은 교육용 walking skeleton으로는 유효하지만 Implementation-ready 기준에는 미달한다. 다음 조건을 만족한 뒤 기준 템플릿으로 승격한다.
- 실제 .NET SDK/pnpm에서 restore/build/test green.
- lockfile과 dependency audit.
- 익명 internal endpoint 제거.
- Handler/Validator/DB/Outbox/Idempotency 구현.
- SignalDecision 불변 DB trigger.
- Architecture/Data/Integration/Replay/E2E test 추가.
- FE 11-state, auth, conflict, stable idempotency.
- Release Evidence Pack 자동 생성.
@@ -0,0 +1,24 @@
# Architecture Fitness Functions
| ID | 자동 검사 | 차단 기준 |
|---|---|---|
| AF-01 | Module project reference graph | 승인되지 않은 역방향 의존 1건 |
| AF-02 | 다른 모듈 schema 직접 SQL 참조 | 1건 |
| AF-03 | Domain project의 Npgsql/Hangfire/HTTP 참조 | 1건 |
| AF-04 | `DateTime.Now/UtcNow` 직접 사용 | 승인 예외 외 1건 |
| AF-05 | `SELECT *` | 1건 |
| AF-06 | Generic Repository/God Service 명명·크기 | 1건 또는 기준 초과 |
| AF-07 | Modules 내부 `AllowAnonymous` | 1건 |
| AF-08 | Evidence/Decision/Audit immutable trigger | 누락 1건 |
| AF-09 | DbUp fresh/upgrade/re-run | 실패 |
| AF-10 | PIT `published_at <= cutoff` contract test | 실패 |
| AF-11 | Dataset+Code+Config 동일 replay hash | 100% 미만 |
| AF-12 | command/job/order duplicate | 0 초과 |
| AF-13 | Outbox/Inbox retry and poison replay | 실패 |
| AF-14 | Algorithm Golden/boundary/property | 실패 |
| AF-15 | Reentry calendar/stage/expiry/new cycle | 실패 |
| AF-16 | FE server state duplicated in Pinia | 탐지 1건 |
| AF-17 | FE ProblemDetails/409/422/429/503 common handling | 누락 |
| AF-18 | Role/state Playwright journeys | 실패 |
| AF-19 | Secret/PII scan | Critical 1건 |
| AF-20 | Release Evidence Pack completeness | 누락 1건 |
+36
View File
@@ -0,0 +1,36 @@
# Sell/Reentry Algorithm Contract
## Decision Context
- PortfolioId, AccountId, LotId, CycleId
- AssetPolicyId, IPSVersion
- AsOf, PublishedAtCutoff, TradableSession
- EvidenceId, DatasetId, ModelVersion, ConfigVersion, CodeSha
- CurrentLotQuantity, CurrentPortfolioWeight, StrategicCoreFloorWeight
- Peak/Floor/Breach/Cooldown
- Hard impairment evidence grade and approval
- Risk reduction requirement, concentration excess, liquidity capacity
- Expected utility component distribution and confidence lower bound
## Decision Output
- Action: HOLD/PARTIAL_SELL/FULL_SELL
- PolicyId/Priority/ReasonCode
- SellRatioOfLot
- ProposedQuantity
- TargetPortfolioWeightAfter
- ReentryEligibility
- CounterEvidence
- ValidUntil/NextReviewSession
- DecisionHash
## Invariants
1. Hard impairment cannot be overridden.
2. Proposed quantity cannot exceed lot quantity.
3. Strategic core floor cannot be breached unless an approved higher-priority policy allows it.
4. Same input and Version Set produce the same decision hash.
5. A decision without immutable Evidence cannot be stored.
6. A reentry stage executes at most once.
7. Reentry creates a new CycleId.
8. Hard impairment cannot create an automatic ReentryWatch.
+77
View File
@@ -0,0 +1,77 @@
WBS_ID,Sprint,Slice,Workstream,Task,Deliverable,Acceptance,Owner,Secondary,PD,Dependency,Release_Blocker,Basis
AEG-S0-01,S0,VS-00,Governance,Baseline/Delta/Supersession matrix 확정,docs/version_coverage.csv,유효 기준 불명확 0,PM/Architect,Compliance,3,-,Y,Source
AEG-S0-02,S0,VS-00,Governance,REQ/ALG/DATA/API/DB/JOB/SCR/TEST ID Registry 동결,docs/id_registry.csv,중복/재사용 ID 0,PM,Architect,3,AEG-S0-01,Y,Source
AEG-S0-03,S0,VS-00,Research,원시 데이터 Manifest/checksum/license 계약,research/manifests,clean-room 입력 식별 100%,Data Lead,Quant,6,AEG-S0-01,Y,Source
AEG-S0-04,S0,VS-00,Research,Python pyproject/lock/container digest,research/pyproject.toml; lock; image digest,동일 환경 재실행 가능,Quant,DevOps,6,AEG-S0-03,Y,Design
AEG-S0-05,S0,VS-00,DevEx,.NET/pnpm restore lock 및 패키지 검증,global.json; packages; pnpm-lock,restore/build/test green,PL,DevOps,8,AEG-S0-01,Y,Source
AEG-S0-06,S0,VS-00,Security,Internal endpoint 익명 접근 제거,auth policy; access tests,/internal anonymous 0,Security,BE,5,AEG-S0-05,Y,Source
AEG-S0-07,S0,VS-00,Architecture,Fitness Function 20종 CI 연결,ArchitectureTests; scripts,AF-01~20 green,Architect,QA,8,AEG-S0-05,Y,Design
AEG-S0-08,S0,VS-00,Observability,HTTP→DB→Outbox correlation walking skeleton,OTel/Serilog smoke,trace link 100%,SRE,BE,5,AEG-S0-05,N,Source
AEG-S1-01,S1,VS-02,Data,SecurityMaster/listing/trading calendar canonical,migrations/security_master,상장기간·세션 invariant,Data,DBA,8,AEG-S0-03,Y,Source
AEG-S1-02,S1,VS-03,Data,Raw immutable/dataset manifest,raw_record; dataset_manifest,overwrite 0/hash 100%,Data,DBA,8,AEG-S0-03,Y,Source
AEG-S1-03,S1,VS-03,Data,PIT temporal resolver,PublishedAtPolicy; MarketCalendar,lookahead 0,Data,Quant,8,"AEG-S1-01,AEG-S1-02",Y,Source
AEG-S1-04,S1,VS-03,Data,DQ engine/quarantine/watermark,DQ-01~12 pipeline,Critical DQ release block,Data,QA,10,"AEG-S1-02,AEG-S1-03",Y,Source
AEG-S1-05,S1,VS-03,BE,Hangfire JobRun/Watermark/Retry class,job_run; job_watermark,duplicate 0/resume,BE,SRE,10,AEG-S0-05,Y,Source
AEG-S1-06,S1,VS-03,FE,Data run operational page baseline,SCR-013,processing/partial/warn/error,FE,Data,7,"AEG-S1-04,AEG-S1-05",N,Source
AEG-S2-01,S2,VS-04,Data,공식 Corporate Action master/조정,CA canonical + golden,수량·원가·수익 대사,Data,Quant/DBA,12,"AEG-S1-01,AEG-S1-02",Y,Source
AEG-S2-02,S2,VS-03,Data,Total return/FX/rate canonical,TR/FX/rate migrations,price vs total return 구분,Data,Quant,10,AEG-S1-03,Y,Source
AEG-S2-03,S2,VS-06,Data,Fee/Tax/FX PIT schedule,fee_schedule/tax/fx,기간 overlap 0,DBA,Quant,8,AEG-S1-03,Y,Source
AEG-S2-04,S2,VS-04,QA,상폐·분할·배당·증자 Golden,DataTests fixtures,공식 master diff 허용치,QA,Data,8,"AEG-S2-01,AEG-S2-02",Y,Source
AEG-S2-05,S2,VS-19,Research,기존 Python 결과 Characterization,golden/current,기존 artifact metric diff 0,Quant,QA,8,AEG-S0-04,Y,Source
AEG-S2-06,S2,VS-19,Research,비용 전역상수 제거/함수 계약화,research simulation cost contract,market/account cost 라벨 일치,Quant,QA,6,"AEG-S2-03,AEG-S2-05",Y,Source
AEG-S3-01,S3,VS-08,Data,Append ledger/cash/lot/cycle,ledger_entry; position_lot; cycle_state,debit-credit/reversal,BE/DBA,QA,14,"AEG-S2-01,AEG-S2-03",Y,Source
AEG-S3-02,S3,VS-08,Algorithm,Scalar position→Lot/Cycle migration contract,domain model + migration plan,core/tactical 혼합 0,BE,Quant,12,AEG-S3-01,Y,Source
AEG-S3-03,S3,VS-09,Data,EvidenceSnapshot Version Set,evidence schema/hash,동일 입력 hash 동일,BE/DBA,Quant,10,"AEG-S1-04,AEG-S2-02,AEG-S2-03",Y,Source
AEG-S3-04,S3,VS-08,QA,Ledger property/reconciliation tests,Unit/Data/Integration,수량·현금 invariant,QA,BE/DBA,10,AEG-S3-01,Y,Source
AEG-S3-05,S3,VS-08,FE,Portfolio lot/cycle read model,rm_portfolio_overview,stale/lineage/rebuild 표시,FE,Data,8,AEG-S3-01,N,Source
AEG-S4-01,S4,VS-10,Algorithm,Policy contract/priority registry,Policy registry,우선순위 변경 승인 강제,Quant,Risk/BE,6,AEG-S2-05,Y,Source
AEG-S4-02,S4,VS-10,Algorithm,Hard impairment policy/evidence grade,ALG-SELL-001,하위정책 상쇄 0,BE/Quant,QA,7,"AEG-S4-01,AEG-S3-03",Y,Source
AEG-S4-03,S4,VS-10,Algorithm,Portfolio survival/capital floor policy,ALG-PORT-001,risk cap property,Quant/BE,QA,9,"AEG-S3-02,AEG-S4-01",Y,Source
AEG-S4-04,S4,VS-10,Algorithm,Gap/two-close/protection floor,ALG-SELL-002/003,monotonic/boundary/cooldown,BE/Quant,QA,12,"AEG-S3-02,AEG-S4-01",Y,Source
AEG-S4-05,S4,VS-10,Algorithm,Concentration/liquidity policy,ALG-SELL-004,caps/ADV constraint,Quant/BE,QA,8,AEG-S4-01,Y,Source
AEG-S4-06,S4,VS-10,Algorithm,Expected utility/opportunity policy,ALG-SELL-005,lower CI > 0/cost×2,Quant/BE,Risk/QA,12,"AEG-S2-03,AEG-S4-01",Y,Source
AEG-S4-07,S4,VS-10,BE,Endpoint→Handler→Policy→DB→Outbox slice,VS-10 code packet,auth/idempotency/transaction,BE,SRE/QA,14,"AEG-S3-03,AEG-S4-02~06",Y,Source
AEG-S4-08,S4,VS-10,DB,Decision immutability/indexes,0011_signal_hardening.sql,update/delete 0,DBA,BE,5,AEG-S4-07,Y,Design
AEG-S5-01,S5,VS-11,Algorithm,Reentry staged state machine,ALG-REENTRY-001,wait/spacing/expiry/new cycle,BE/Quant,QA,12,"AEG-S3-02,AEG-S4-07",Y,Source
AEG-S5-02,S5,VS-11,BE,Reentry watch scan/idempotent stage,VS-11 handler/job,stage duplicate 0,BE,SRE,10,"AEG-S5-01,AEG-S1-05",Y,Source
AEG-S5-03,S5,VS-19,Research,Python/.NET Golden vector comparison,BacktestRegression,허용오차 내 의미 동일,Quant/QA,BE,10,"AEG-S4-02~06,AEG-S2-05",Y,Source
AEG-S5-04,S5,VS-19,Research,Walk-forward/PBO/DSR/bootstrap hooks,research evaluation,승격 지표 산출 가능,Quant,Risk/QA,12,"AEG-S0-04,AEG-S2-06",N,Source
AEG-S5-05,S5,VS-11,FE,Reentry timeline/state matrix,SCR-003,expired/readonly/warn/conflict,FE,UX/QA,9,AEG-S5-02,N,Source
AEG-S6-01,S6,VS-07,BE,Client/IPS versioned contract,VS-07,과거 IPS 수정 0,BE,Compliance,10,AEG-S0-06,Y,Source
AEG-S6-02,S6,VS-08,BE,Portfolio performance/risk baseline,VS-08/13,TWR/MWR/ES golden,BE/Quant,QA,12,AEG-S3-01,Y,Source
AEG-S6-03,S6,VS-07,FE,IPS wizard/conflict/validation,SCR-008,409/422/RBAC/a11y,FE,UX/QA,10,AEG-S6-01,N,Source
AEG-S6-04,S6,ReadModels,Data,Read model version/rebuild framework,projection registry,rebuild hash/staleness,Data/BE,SRE,10,AEG-S3-05,Y,Source
AEG-S7-01,S7,VS-14,BE,Recommendation aggregation,VS-14,DQ/IPS/capability hold,BE,Quant,14,"AEG-S4-07,AEG-S6-01,AEG-S6-02",Y,Source
AEG-S7-02,S7,VS-15,BE,Maker-checker review/concurrency,VS-15,self approval 0,BE,Compliance/QA,10,AEG-S7-01,Y,Source
AEG-S7-03,S7,VS-15,FE,Recommendation workbench,SCR-009,11-state/RBAC/E2E,FE,QA/UX,14,"AEG-S7-02,AEG-S6-04",N,Source
AEG-S7-04,S7,Cross,FE,Stable idempotency/ProblemDetails/ETag common,shared/api,retry same key/409/422/429/503,FE,BE/QA,8,AEG-S0-05,Y,Design
AEG-S8-01,S8,VS-16,BE,Approved advice publish/version hash,VS-16,unapproved publish 0,BE,Compliance,10,AEG-S7-02,Y,Source
AEG-S8-02,S8,VS-17,BE,Client decision attribution,VS-17,advice/execution/action 분리,BE,Quant,7,AEG-S8-01,N,Source
AEG-S8-03,S8,VS-18,BE,Outcome windows 1/5/20/63/126/252,VS-18/J10,calendar/revision/no-fill,BE/Quant,Data/QA,14,"AEG-S8-01,AEG-S2-02",Y,Source
AEG-S8-04,S8,VS-16,FE,Advice detail/evidence/counterevidence,SCR-002,approved version only,FE,UX/Compliance,10,"AEG-S8-01,AEG-S6-04",N,Source
AEG-S8-05,S8,Audit,Governance,E2E audit trace,rm_audit_trace,input→outcome trace 100%,BE,Audit/SRE,10,AEG-S8-01~03,Y,Source
AEG-S9-01,S9,VS-13,Algorithm,Portfolio ES/concentration/correlation,VS-13,numeric/property/perf,Quant/BE,QA,12,AEG-S6-02,Y,Source
AEG-S9-02,S9,VS-21,Algorithm,Rebalance deterministic baseline,VS-21,constraint 0/NO_ACTION,Quant/BE,QA,14,"AEG-S9-01,AEG-S2-03",Y,Source
AEG-S9-03,S9,VS-21,FE,Before/after risk and constraints,SCR-005,override audit/a11y,FE,QA/UX,10,AEG-S9-02,N,Source
AEG-S10-01,S10,VS-12,Algorithm,Buy candidate calibrated outputs,VS-12,P10/P50/P90 calibration,Quant,Risk/QA,14,AEG-S5-04,N,Source
AEG-S10-02,S10,VS-22,Algorithm,Replacement net-edge/ranking,VS-22,after-cost/IPS ranking,Quant/BE,QA,10,"AEG-S4-06,AEG-S10-01",N,Source
AEG-S10-03,S10,VS-12,FE,Candidate AG Grid server model,SCR-006,10k row/perf/filter/auth,FE,QA,12,"AEG-S10-01,AEG-S6-04",N,Source
AEG-S11-01,S11,VS-18,Evaluation,False-exit cost/reentry capture definition,sell_evaluation,benchmark/cost/weight 일치,Quant,Risk/QA,10,"AEG-S8-03,AEG-S5-01",Y,Source
AEG-S11-02,S11,VS-24,Evaluation,Daily scorecard/cohort/drift,J11/SCR-010,표본/창/as-of/version,Quant/BE,Data,12,AEG-S11-01,Y,Source
AEG-S11-03,S11,Shadow,Operations,Shadow next-session execution,shadow_execution,decision/fill/action 분리,Quant/BE,QA,12,"AEG-S8-03,AEG-S2-03",Y,Source
AEG-S11-04,S11,VS-24,FE,Scorecard/gate/drift dashboard,SCR-010,적중률 보조지표,FE,Quant/QA,10,AEG-S11-02,N,Source
AEG-S12-01,S12,VS-23,BE,KIS adapter capability OFF baseline,adapter/capability,prod order path disabled,BE,Security/Compliance,10,AEG-S0-06,Y,Source
AEG-S12-02,S12,VS-23,BE,OrderIntent/Fill dedupe,VS-23,duplicate fill/order 0,BE,DBA/QA,12,"AEG-S12-01,AEG-S3-01",Y,Source
AEG-S12-03,S12,VS-23,Operations,Position/cash/fee/tax/FX reconciliation,J12,unapproved break 0,BE/Ops,DBA/QA,12,AEG-S12-02,Y,Source
AEG-S12-04,S12,VS-23,FE,Reconciliation workbench,SCR-014,maker-checker/SLA,FE,Ops/QA,9,AEG-S12-03,N,Source
AEG-S13-01,S13,VS-25,Security,RBAC/MFA/SoD/access matrix,security tests,cross-client access 0,Security,BE/QA,12,"AEG-S6-01,AEG-S7-02",Y,Source
AEG-S13-02,S13,VS-25,Operations,Kill-switch/capability control,VS-25,scope block/recovery,SRE,Risk/BE,10,AEG-S12-01,Y,Source
AEG-S13-03,S13,DR,Operations,Backup/PITR/read-model rebuild drill,runbooks/dr,RPO/RTO/reconcile,SRE/DBA,Ops,12,"AEG-S6-04,AEG-S12-03",Y,Source
AEG-S13-04,S13,QA,Quality,Playwright role/state/a11y UAT,e2e evidence,critical journey green,QA,FE/Compliance,12,"AEG-S8-04,AEG-S11-04,AEG-S12-04",Y,Source
AEG-S14-01,S14,Performance,DBA,Plan/index/bloat/partition evidence,performance report,P95/lock 기준,DBA,BE,10,AEG-S11-02,N,Design
AEG-S14-02,S14,Backfill,Operations,Chunk/checkpoint/resume/replay,maintenance jobs,restart/reconcile 100%,Data/SRE,DBA,12,AEG-S13-03,Y,Source
AEG-S14-03,S14,Release,DevOps,Release Evidence Pack 자동화,CI artifacts,문서/DDL/OpenAPI/Test hash,DevOps,QA/PM,10,AEG-S0-07,Y,Source
AEG-S14-04,S14,Cutover,Operations,Cutover/rollback rehearsal,runbooks/cutover,rollback RTO 내,SRE,All,10,"AEG-S14-02,AEG-S14-03",Y,Source
AEG-S15-01,S15,GoLive,Governance,Advisory Go/No-Go,release decision,RG/AF/DQ/DR 모두 통과,Steering,All,4,AEG-S14-04,Y,Source
AEG-S15-02,S15,Hypercare,Operations,P1/P2 monitoring/on-call,dashboards/runbooks,Owner/Secondary 응답,SRE/Ops,BE/Data,10,AEG-S15-01,Y,Source
AEG-S15-03,S15,Shadow,Governance,252거래일 Shadow 누적 시작,model/evaluation manifest,자동주문 OFF 확인,Quant/Risk,Compliance,6,AEG-S15-01,Y,Source
1 WBS_ID Sprint Slice Workstream Task Deliverable Acceptance Owner Secondary PD Dependency Release_Blocker Basis
2 AEG-S0-01 S0 VS-00 Governance Baseline/Delta/Supersession matrix 확정 docs/version_coverage.csv 유효 기준 불명확 0 PM/Architect Compliance 3 - Y Source
3 AEG-S0-02 S0 VS-00 Governance REQ/ALG/DATA/API/DB/JOB/SCR/TEST ID Registry 동결 docs/id_registry.csv 중복/재사용 ID 0 PM Architect 3 AEG-S0-01 Y Source
4 AEG-S0-03 S0 VS-00 Research 원시 데이터 Manifest/checksum/license 계약 research/manifests clean-room 입력 식별 100% Data Lead Quant 6 AEG-S0-01 Y Source
5 AEG-S0-04 S0 VS-00 Research Python pyproject/lock/container digest research/pyproject.toml; lock; image digest 동일 환경 재실행 가능 Quant DevOps 6 AEG-S0-03 Y Design
6 AEG-S0-05 S0 VS-00 DevEx .NET/pnpm restore lock 및 패키지 검증 global.json; packages; pnpm-lock restore/build/test green PL DevOps 8 AEG-S0-01 Y Source
7 AEG-S0-06 S0 VS-00 Security Internal endpoint 익명 접근 제거 auth policy; access tests /internal anonymous 0 Security BE 5 AEG-S0-05 Y Source
8 AEG-S0-07 S0 VS-00 Architecture Fitness Function 20종 CI 연결 ArchitectureTests; scripts AF-01~20 green Architect QA 8 AEG-S0-05 Y Design
9 AEG-S0-08 S0 VS-00 Observability HTTP→DB→Outbox correlation walking skeleton OTel/Serilog smoke trace link 100% SRE BE 5 AEG-S0-05 N Source
10 AEG-S1-01 S1 VS-02 Data SecurityMaster/listing/trading calendar canonical migrations/security_master 상장기간·세션 invariant Data DBA 8 AEG-S0-03 Y Source
11 AEG-S1-02 S1 VS-03 Data Raw immutable/dataset manifest raw_record; dataset_manifest overwrite 0/hash 100% Data DBA 8 AEG-S0-03 Y Source
12 AEG-S1-03 S1 VS-03 Data PIT temporal resolver PublishedAtPolicy; MarketCalendar lookahead 0 Data Quant 8 AEG-S1-01,AEG-S1-02 Y Source
13 AEG-S1-04 S1 VS-03 Data DQ engine/quarantine/watermark DQ-01~12 pipeline Critical DQ release block Data QA 10 AEG-S1-02,AEG-S1-03 Y Source
14 AEG-S1-05 S1 VS-03 BE Hangfire JobRun/Watermark/Retry class job_run; job_watermark duplicate 0/resume BE SRE 10 AEG-S0-05 Y Source
15 AEG-S1-06 S1 VS-03 FE Data run operational page baseline SCR-013 processing/partial/warn/error FE Data 7 AEG-S1-04,AEG-S1-05 N Source
16 AEG-S2-01 S2 VS-04 Data 공식 Corporate Action master/조정 CA canonical + golden 수량·원가·수익 대사 Data Quant/DBA 12 AEG-S1-01,AEG-S1-02 Y Source
17 AEG-S2-02 S2 VS-03 Data Total return/FX/rate canonical TR/FX/rate migrations price vs total return 구분 Data Quant 10 AEG-S1-03 Y Source
18 AEG-S2-03 S2 VS-06 Data Fee/Tax/FX PIT schedule fee_schedule/tax/fx 기간 overlap 0 DBA Quant 8 AEG-S1-03 Y Source
19 AEG-S2-04 S2 VS-04 QA 상폐·분할·배당·증자 Golden DataTests fixtures 공식 master diff 허용치 QA Data 8 AEG-S2-01,AEG-S2-02 Y Source
20 AEG-S2-05 S2 VS-19 Research 기존 Python 결과 Characterization golden/current 기존 artifact metric diff 0 Quant QA 8 AEG-S0-04 Y Source
21 AEG-S2-06 S2 VS-19 Research 비용 전역상수 제거/함수 계약화 research simulation cost contract market/account cost 라벨 일치 Quant QA 6 AEG-S2-03,AEG-S2-05 Y Source
22 AEG-S3-01 S3 VS-08 Data Append ledger/cash/lot/cycle ledger_entry; position_lot; cycle_state debit-credit/reversal BE/DBA QA 14 AEG-S2-01,AEG-S2-03 Y Source
23 AEG-S3-02 S3 VS-08 Algorithm Scalar position→Lot/Cycle migration contract domain model + migration plan core/tactical 혼합 0 BE Quant 12 AEG-S3-01 Y Source
24 AEG-S3-03 S3 VS-09 Data EvidenceSnapshot Version Set evidence schema/hash 동일 입력 hash 동일 BE/DBA Quant 10 AEG-S1-04,AEG-S2-02,AEG-S2-03 Y Source
25 AEG-S3-04 S3 VS-08 QA Ledger property/reconciliation tests Unit/Data/Integration 수량·현금 invariant QA BE/DBA 10 AEG-S3-01 Y Source
26 AEG-S3-05 S3 VS-08 FE Portfolio lot/cycle read model rm_portfolio_overview stale/lineage/rebuild 표시 FE Data 8 AEG-S3-01 N Source
27 AEG-S4-01 S4 VS-10 Algorithm Policy contract/priority registry Policy registry 우선순위 변경 승인 강제 Quant Risk/BE 6 AEG-S2-05 Y Source
28 AEG-S4-02 S4 VS-10 Algorithm Hard impairment policy/evidence grade ALG-SELL-001 하위정책 상쇄 0 BE/Quant QA 7 AEG-S4-01,AEG-S3-03 Y Source
29 AEG-S4-03 S4 VS-10 Algorithm Portfolio survival/capital floor policy ALG-PORT-001 risk cap property Quant/BE QA 9 AEG-S3-02,AEG-S4-01 Y Source
30 AEG-S4-04 S4 VS-10 Algorithm Gap/two-close/protection floor ALG-SELL-002/003 monotonic/boundary/cooldown BE/Quant QA 12 AEG-S3-02,AEG-S4-01 Y Source
31 AEG-S4-05 S4 VS-10 Algorithm Concentration/liquidity policy ALG-SELL-004 caps/ADV constraint Quant/BE QA 8 AEG-S4-01 Y Source
32 AEG-S4-06 S4 VS-10 Algorithm Expected utility/opportunity policy ALG-SELL-005 lower CI > 0/cost×2 Quant/BE Risk/QA 12 AEG-S2-03,AEG-S4-01 Y Source
33 AEG-S4-07 S4 VS-10 BE Endpoint→Handler→Policy→DB→Outbox slice VS-10 code packet auth/idempotency/transaction BE SRE/QA 14 AEG-S3-03,AEG-S4-02~06 Y Source
34 AEG-S4-08 S4 VS-10 DB Decision immutability/indexes 0011_signal_hardening.sql update/delete 0 DBA BE 5 AEG-S4-07 Y Design
35 AEG-S5-01 S5 VS-11 Algorithm Reentry staged state machine ALG-REENTRY-001 wait/spacing/expiry/new cycle BE/Quant QA 12 AEG-S3-02,AEG-S4-07 Y Source
36 AEG-S5-02 S5 VS-11 BE Reentry watch scan/idempotent stage VS-11 handler/job stage duplicate 0 BE SRE 10 AEG-S5-01,AEG-S1-05 Y Source
37 AEG-S5-03 S5 VS-19 Research Python/.NET Golden vector comparison BacktestRegression 허용오차 내 의미 동일 Quant/QA BE 10 AEG-S4-02~06,AEG-S2-05 Y Source
38 AEG-S5-04 S5 VS-19 Research Walk-forward/PBO/DSR/bootstrap hooks research evaluation 승격 지표 산출 가능 Quant Risk/QA 12 AEG-S0-04,AEG-S2-06 N Source
39 AEG-S5-05 S5 VS-11 FE Reentry timeline/state matrix SCR-003 expired/readonly/warn/conflict FE UX/QA 9 AEG-S5-02 N Source
40 AEG-S6-01 S6 VS-07 BE Client/IPS versioned contract VS-07 과거 IPS 수정 0 BE Compliance 10 AEG-S0-06 Y Source
41 AEG-S6-02 S6 VS-08 BE Portfolio performance/risk baseline VS-08/13 TWR/MWR/ES golden BE/Quant QA 12 AEG-S3-01 Y Source
42 AEG-S6-03 S6 VS-07 FE IPS wizard/conflict/validation SCR-008 409/422/RBAC/a11y FE UX/QA 10 AEG-S6-01 N Source
43 AEG-S6-04 S6 ReadModels Data Read model version/rebuild framework projection registry rebuild hash/staleness Data/BE SRE 10 AEG-S3-05 Y Source
44 AEG-S7-01 S7 VS-14 BE Recommendation aggregation VS-14 DQ/IPS/capability hold BE Quant 14 AEG-S4-07,AEG-S6-01,AEG-S6-02 Y Source
45 AEG-S7-02 S7 VS-15 BE Maker-checker review/concurrency VS-15 self approval 0 BE Compliance/QA 10 AEG-S7-01 Y Source
46 AEG-S7-03 S7 VS-15 FE Recommendation workbench SCR-009 11-state/RBAC/E2E FE QA/UX 14 AEG-S7-02,AEG-S6-04 N Source
47 AEG-S7-04 S7 Cross FE Stable idempotency/ProblemDetails/ETag common shared/api retry same key/409/422/429/503 FE BE/QA 8 AEG-S0-05 Y Design
48 AEG-S8-01 S8 VS-16 BE Approved advice publish/version hash VS-16 unapproved publish 0 BE Compliance 10 AEG-S7-02 Y Source
49 AEG-S8-02 S8 VS-17 BE Client decision attribution VS-17 advice/execution/action 분리 BE Quant 7 AEG-S8-01 N Source
50 AEG-S8-03 S8 VS-18 BE Outcome windows 1/5/20/63/126/252 VS-18/J10 calendar/revision/no-fill BE/Quant Data/QA 14 AEG-S8-01,AEG-S2-02 Y Source
51 AEG-S8-04 S8 VS-16 FE Advice detail/evidence/counterevidence SCR-002 approved version only FE UX/Compliance 10 AEG-S8-01,AEG-S6-04 N Source
52 AEG-S8-05 S8 Audit Governance E2E audit trace rm_audit_trace input→outcome trace 100% BE Audit/SRE 10 AEG-S8-01~03 Y Source
53 AEG-S9-01 S9 VS-13 Algorithm Portfolio ES/concentration/correlation VS-13 numeric/property/perf Quant/BE QA 12 AEG-S6-02 Y Source
54 AEG-S9-02 S9 VS-21 Algorithm Rebalance deterministic baseline VS-21 constraint 0/NO_ACTION Quant/BE QA 14 AEG-S9-01,AEG-S2-03 Y Source
55 AEG-S9-03 S9 VS-21 FE Before/after risk and constraints SCR-005 override audit/a11y FE QA/UX 10 AEG-S9-02 N Source
56 AEG-S10-01 S10 VS-12 Algorithm Buy candidate calibrated outputs VS-12 P10/P50/P90 calibration Quant Risk/QA 14 AEG-S5-04 N Source
57 AEG-S10-02 S10 VS-22 Algorithm Replacement net-edge/ranking VS-22 after-cost/IPS ranking Quant/BE QA 10 AEG-S4-06,AEG-S10-01 N Source
58 AEG-S10-03 S10 VS-12 FE Candidate AG Grid server model SCR-006 10k row/perf/filter/auth FE QA 12 AEG-S10-01,AEG-S6-04 N Source
59 AEG-S11-01 S11 VS-18 Evaluation False-exit cost/reentry capture definition sell_evaluation benchmark/cost/weight 일치 Quant Risk/QA 10 AEG-S8-03,AEG-S5-01 Y Source
60 AEG-S11-02 S11 VS-24 Evaluation Daily scorecard/cohort/drift J11/SCR-010 표본/창/as-of/version Quant/BE Data 12 AEG-S11-01 Y Source
61 AEG-S11-03 S11 Shadow Operations Shadow next-session execution shadow_execution decision/fill/action 분리 Quant/BE QA 12 AEG-S8-03,AEG-S2-03 Y Source
62 AEG-S11-04 S11 VS-24 FE Scorecard/gate/drift dashboard SCR-010 적중률 보조지표 FE Quant/QA 10 AEG-S11-02 N Source
63 AEG-S12-01 S12 VS-23 BE KIS adapter capability OFF baseline adapter/capability prod order path disabled BE Security/Compliance 10 AEG-S0-06 Y Source
64 AEG-S12-02 S12 VS-23 BE OrderIntent/Fill dedupe VS-23 duplicate fill/order 0 BE DBA/QA 12 AEG-S12-01,AEG-S3-01 Y Source
65 AEG-S12-03 S12 VS-23 Operations Position/cash/fee/tax/FX reconciliation J12 unapproved break 0 BE/Ops DBA/QA 12 AEG-S12-02 Y Source
66 AEG-S12-04 S12 VS-23 FE Reconciliation workbench SCR-014 maker-checker/SLA FE Ops/QA 9 AEG-S12-03 N Source
67 AEG-S13-01 S13 VS-25 Security RBAC/MFA/SoD/access matrix security tests cross-client access 0 Security BE/QA 12 AEG-S6-01,AEG-S7-02 Y Source
68 AEG-S13-02 S13 VS-25 Operations Kill-switch/capability control VS-25 scope block/recovery SRE Risk/BE 10 AEG-S12-01 Y Source
69 AEG-S13-03 S13 DR Operations Backup/PITR/read-model rebuild drill runbooks/dr RPO/RTO/reconcile SRE/DBA Ops 12 AEG-S6-04,AEG-S12-03 Y Source
70 AEG-S13-04 S13 QA Quality Playwright role/state/a11y UAT e2e evidence critical journey green QA FE/Compliance 12 AEG-S8-04,AEG-S11-04,AEG-S12-04 Y Source
71 AEG-S14-01 S14 Performance DBA Plan/index/bloat/partition evidence performance report P95/lock 기준 DBA BE 10 AEG-S11-02 N Design
72 AEG-S14-02 S14 Backfill Operations Chunk/checkpoint/resume/replay maintenance jobs restart/reconcile 100% Data/SRE DBA 12 AEG-S13-03 Y Source
73 AEG-S14-03 S14 Release DevOps Release Evidence Pack 자동화 CI artifacts 문서/DDL/OpenAPI/Test hash DevOps QA/PM 10 AEG-S0-07 Y Source
74 AEG-S14-04 S14 Cutover Operations Cutover/rollback rehearsal runbooks/cutover rollback RTO 내 SRE All 10 AEG-S14-02,AEG-S14-03 Y Source
75 AEG-S15-01 S15 GoLive Governance Advisory Go/No-Go release decision RG/AF/DQ/DR 모두 통과 Steering All 4 AEG-S14-04 Y Source
76 AEG-S15-02 S15 Hypercare Operations P1/P2 monitoring/on-call dashboards/runbooks Owner/Secondary 응답 SRE/Ops BE/Data 10 AEG-S15-01 Y Source
77 AEG-S15-03 S15 Shadow Governance 252거래일 Shadow 누적 시작 model/evaluation manifest 자동주문 OFF 확인 Quant/Risk Compliance 6 AEG-S15-01 Y Source
@@ -0,0 +1,19 @@
DebtId,Title,RiskClass,Priority,Impact,Owner,Secondary,DueSprint,Remediation,ExitTest,Decision
TD-H-001,Raw data/환경 lock 부재,Data/Model,P0,재현 불가,Quant Lead,Data Lead,S0,manifest+checksum+lock+image digest,clean-room replay hash,Fix
TD-H-002,Scalar position이 Core/Tactical lot 혼합,Model,P0,보호선·재진입 왜곡,BE Lead,Quant Lead,S3,Lot/Cycle/Protection/Reentry model,property+golden,Fix
TD-H-003,KR 기업행사 추정 소급조정,Data,P0,가격·ATR·수익 왜곡,Data Lead,DBA,S2,공식 CA master+quarantine,CA reconciliation,Fix
TD-H-004,총수익/PIT/상폐/세금/FX 불완전,Data/Model,P0,생산 판단 불가,Data Lead,Risk,S2,canonical PIT sources,DQ/replay,Fix
TD-H-005,비용 전역상수/라벨 불일치,Model,P0,성과 왜곡,Quant Lead,QA,S2,FeeSchedule PIT contract,cost scenario diff,Fix
TD-H-006,Internal research endpoint AllowAnonymous,Security,P0,무권한 정책 실행,Security,BE Lead,S0,auth policy+access test,anonymous 0,Fix
TD-H-007,FE pnpm-lock 누락,Engineering,P0,CI 비결정/현재 CI 실패,FE Lead,DevOps,S0,lockfile commit,frozen install,Fix
TD-H-008,Handler/Validator/DB/Outbox 없는 endpoint,Architecture,P1,Vertical Slice 미완성,BE Lead,Architect,S4,full slice packet,integration/trace,Fix
TD-H-009,Survival/집중/기회비용 정책 미구현,Model,P1,정책 우선순위 불완전,Quant Lead,BE Lead,S4,ALG-PORT/SELL-004/005,golden/property,Fix
TD-H-010,sell_fraction 단위 모호,Contract,P1,core floor 계산 오류 위험,Quant Lead,Architect,S4,ratio/quantity/target weight 분리,contract tests,Fix
TD-H-011,Reentry multi-stage 상태 전이 불완전,Model,P1,단계 재진입/새 cycle 오류,BE Lead,Quant Lead,S5,explicit transition table,calendar/stage tests,Fix
TD-H-012,SignalDecision immutable trigger 누락,Data/Audit,P1,감사·재현 훼손,DBA,BE Lead,S4,DB trigger+privilege,update/delete test,Fix
TD-H-013,Architecture test가 문자열 1종만 검사,Quality,P1,경계 회귀 탐지 불가,Architect,QA,S0,AF-01~20,CI gate,Fix
TD-H-014,FE DTO 수동 중복/Idempotency retry key 변경,Frontend,P1,계약 drift/중복 명령,FE Lead,BE Lead,S7,generated/versioned contract+stable key,Vitest/E2E,Fix
TD-H-015,Outbox publisher/Inbox consumer/dead-letter 미구현,Reliability,P1,이벤트 미전달/중복,BE Lead,SRE,S4,dispatcher/inbox/replay,fault tests,Fix
TD-H-016,Read Model rebuild/staleness 미구현,Operations,P2,복구·오래된 화면,Data Lead,SRE,S6,projection registry/rebuild,DR rebuild,Fix
TD-H-017,Swagger 상시 노출,Security,P2,공격표면 증가,Security,BE Lead,S0,environment/role gate,security test,Fix
TD-H-018,No dependency vulnerability/license evidence,SupplyChain,P2,공급망 위험,DevOps,Security,S0,audit/SBOM/license report,release evidence,Fix
1 DebtId Title RiskClass Priority Impact Owner Secondary DueSprint Remediation ExitTest Decision
2 TD-H-001 Raw data/환경 lock 부재 Data/Model P0 재현 불가 Quant Lead Data Lead S0 manifest+checksum+lock+image digest clean-room replay hash Fix
3 TD-H-002 Scalar position이 Core/Tactical lot 혼합 Model P0 보호선·재진입 왜곡 BE Lead Quant Lead S3 Lot/Cycle/Protection/Reentry model property+golden Fix
4 TD-H-003 KR 기업행사 추정 소급조정 Data P0 가격·ATR·수익 왜곡 Data Lead DBA S2 공식 CA master+quarantine CA reconciliation Fix
5 TD-H-004 총수익/PIT/상폐/세금/FX 불완전 Data/Model P0 생산 판단 불가 Data Lead Risk S2 canonical PIT sources DQ/replay Fix
6 TD-H-005 비용 전역상수/라벨 불일치 Model P0 성과 왜곡 Quant Lead QA S2 FeeSchedule PIT contract cost scenario diff Fix
7 TD-H-006 Internal research endpoint AllowAnonymous Security P0 무권한 정책 실행 Security BE Lead S0 auth policy+access test anonymous 0 Fix
8 TD-H-007 FE pnpm-lock 누락 Engineering P0 CI 비결정/현재 CI 실패 FE Lead DevOps S0 lockfile commit frozen install Fix
9 TD-H-008 Handler/Validator/DB/Outbox 없는 endpoint Architecture P1 Vertical Slice 미완성 BE Lead Architect S4 full slice packet integration/trace Fix
10 TD-H-009 Survival/집중/기회비용 정책 미구현 Model P1 정책 우선순위 불완전 Quant Lead BE Lead S4 ALG-PORT/SELL-004/005 golden/property Fix
11 TD-H-010 sell_fraction 단위 모호 Contract P1 core floor 계산 오류 위험 Quant Lead Architect S4 ratio/quantity/target weight 분리 contract tests Fix
12 TD-H-011 Reentry multi-stage 상태 전이 불완전 Model P1 단계 재진입/새 cycle 오류 BE Lead Quant Lead S5 explicit transition table calendar/stage tests Fix
13 TD-H-012 SignalDecision immutable trigger 누락 Data/Audit P1 감사·재현 훼손 DBA BE Lead S4 DB trigger+privilege update/delete test Fix
14 TD-H-013 Architecture test가 문자열 1종만 검사 Quality P1 경계 회귀 탐지 불가 Architect QA S0 AF-01~20 CI gate Fix
15 TD-H-014 FE DTO 수동 중복/Idempotency retry key 변경 Frontend P1 계약 drift/중복 명령 FE Lead BE Lead S7 generated/versioned contract+stable key Vitest/E2E Fix
16 TD-H-015 Outbox publisher/Inbox consumer/dead-letter 미구현 Reliability P1 이벤트 미전달/중복 BE Lead SRE S4 dispatcher/inbox/replay fault tests Fix
17 TD-H-016 Read Model rebuild/staleness 미구현 Operations P2 복구·오래된 화면 Data Lead SRE S6 projection registry/rebuild DR rebuild Fix
18 TD-H-017 Swagger 상시 노출 Security P2 공격표면 증가 Security BE Lead S0 environment/role gate security test Fix
19 TD-H-018 No dependency vulnerability/license evidence SupplyChain P2 공급망 위험 DevOps Security S0 audit/SBOM/license report release evidence Fix
+13
View File
@@ -0,0 +1,13 @@
# ADR-XXX Title
- Status: Proposed / Accepted / Superseded / Deprecated
- Date:
- Owners:
- Source:
- Context:
- Decision:
- Alternatives:
- Consequences:
- Fitness Functions:
- Migration/Rollback:
- Supersedes:
+12
View File
@@ -0,0 +1,12 @@
# AI Change Checklist
- [ ] Source와 문서 위치가 있다.
- [ ] Assumption/Unknown/Design Proposal을 구분했다.
- [ ] 새 정책·임계값·컬럼·API를 임의 생성하지 않았다.
- [ ] 변경 범위는 한 Slice/목적이다.
- [ ] 실행한 명령과 exit code를 기록했다.
- [ ] 실패/skip/미실행 테스트를 기록했다.
- [ ] Golden/Data/Architecture/E2E 영향이 있다.
- [ ] 민감정보가 없다.
- [ ] rollback과 잔여위험이 있다.
- [ ] 사람 승인자가 명시됐다.
+11
View File
@@ -0,0 +1,11 @@
# Data Contract
- Source/license/SLA/schema version:
- Timezone/unit/currency:
- source_event_time / published_at / ingested_at:
- effective_from/to / revision_no:
- source_id / content_hash / dataset_id:
- DQ PASS/WARN/QUARANTINED rules:
- tradable_session rule:
- lineage / watermark / replay:
- Owner / steward / retention:
+15
View File
@@ -0,0 +1,15 @@
# Feature Packet
- Requirement ID:
- Slice ID:
- User outcome:
- Non-goals:
- Source / Assumption / Unknown / Decision Required:
- Policy/Data/API/DB/Job/UI/Test IDs:
- PIT cutoff and units:
- State transitions / invariants:
- Failure paths / ProblemDetails:
- Idempotency / concurrency / transaction:
- Metrics / alerts / runbook / rollback:
- Commands actually executed and artifacts:
- Owner / reviewer / approver:
+18
View File
@@ -0,0 +1,18 @@
# Model Improvement Proposal
- Proposal ID / Expiry:
- Base Model Version:
- Proposal Type:
- Problem statement:
- Evidence IDs and hashes:
- Counter-evidence:
- Root-cause hypothesis:
- Expected benefit:
- Customer/operational/regulatory risks:
- Data and license impact:
- Algorithm/policy/metric contract impact:
- Required Golden/OOS/PBO/DSR/cost tests:
- Rollback plan:
- Owner / Secondary:
- Status: DRAFT / REVIEW_REQUIRED / APPROVED_FOR_RESEARCH / REJECTED / EXPIRED
- Explicit boundary: no automatic code/config/model activation
+18
View File
@@ -0,0 +1,18 @@
# Model/Policy Change
- Change ID:
- Policy ID:
- Source:
- Assumption:
- Unknown / Decision Required:
- Old Version Set:
- New Version Set:
- Formula / threshold diff:
- Characterization diff:
- Golden diff:
- Frozen OOS result:
- Cost x2 result:
- Market/asset/regime impact:
- False-exit/Reentry/ES impact:
- Rollback trigger:
- Quant/Risk approvers:
+20
View File
@@ -0,0 +1,20 @@
# Model Evaluation Evidence
- Evaluation ID:
- Operation Code / Schedule Version:
- Scope / Cohort / Window:
- Dataset ID / Hash:
- Model / Config / Code / Contract Version:
- Metric Definition Version:
- PIT cutoff / Published-at rule:
- Sample size / Missing / Quarantine:
- Results and confidence intervals:
- Baseline / Champion / Challenger:
- Costs / Tax / FX / Slippage scenario:
- Counter-evidence:
- Operational integrity errors:
- Gate result and blocking reasons:
- Source / Assumption / Unknown / Decision Required:
- Commands / Artifact hashes:
- Independent validator:
- Maker / Checker:
+17
View File
@@ -0,0 +1,17 @@
# Model Operations Runbook
- Operation Code / Queue / Scope:
- Owner / Secondary:
- Due SLA / Max lag:
- Inputs and frozen VersionSet:
- Expected output:
- Metrics and alerts:
- TRANSIENT retry policy:
- BUSINESS_HOLD resolution:
- QUARANTINE resolution:
- Dead-letter replay procedure:
- Duplicate/idempotency check:
- Data revision/correction procedure:
- Rollback/disable scheduler procedure:
- PII/secret handling:
- Last rehearsal / Evidence hash:
+11
View File
@@ -0,0 +1,11 @@
# Release Evidence
- Release/commit/container digest:
- Source coverage and supersession diff:
- OpenAPI/DDL/Event/Job/UI contract diff:
- Build/test/migration commands and results:
- Golden/OOS/data/replay evidence:
- Security/PII/license/SBOM evidence:
- Metrics/alerts/runbooks/rollback rehearsal:
- Capability flags and kill-switch state:
- Approvals:
+14
View File
@@ -0,0 +1,14 @@
# Runbook
- Service/Job/Slice:
- Owner / Secondary:
- SLO/SLA:
- Metrics/Alerts:
- Detection:
- Triage:
- Kill-switch scope:
- Safe retry/replay:
- Reconciliation:
- Rollback:
- Evidence to retain:
- Escalation:
+20
View File
@@ -0,0 +1,20 @@
# Slice Spec: <VS-ID> <Name>
- Requirement ID:
- Policy/Data/Screen ID:
- 사용자 결과:
- 비목표:
- 권한/Capability:
- 선행 데이터와 PIT cutoff:
- 상태전이:
- Endpoint/Event/Job:
- DB Migration/Read Model:
- Idempotency/Concurrency:
- Given/When/Then:
- Tests:
- Metrics/Alerts:
- Runbook/Rollback:
- Owner/Secondary:
- Source:
- Assumption:
- Unknown/Decision Required:
+10
View File
@@ -0,0 +1,10 @@
# Technical Debt Item
- ID / priority:
- Risk and interest:
- Root cause:
- Owner / secondary:
- Remediation:
- Trigger / due / gate:
- Exit test:
- Temporary control and expiry:
+5
View File
@@ -0,0 +1,5 @@
# Traceability
| REQ | POLICY/DATA | SLICE | ENDPOINT/JOB | DB/EVENT | SCREEN/COMPONENT | TEST | METRIC/RUNBOOK | PR |
|---|---|---|---|---|---|---|---|---|
| | | | | | | | | |
@@ -0,0 +1,54 @@
# K-ArtSell Aegis v12.0 누적 통합 고도화 제안
상태: `IMPLEMENTATION_TEMPLATE / STATIC_VALIDATED / NOT_DOTNET_BUILD_VERIFIED`
제품 경계: `투자자문형 우선 · 자동주문 OFF · RESEARCH_CANDIDATE_NOT_PRODUCTION`
## 1. 경영진 결론
이번 패키지는 v10.0 기준서, K-ArtSell 12.2 연구 번들, v11 구현 가속본, v11.1 하드닝본을 폐기하거나 요약본으로 대체하지 않는다. 기존 첨부파일을 원본 그대로 포함하고, 그 위에 다음 Delta를 누적한다.
1. **정책·데이터·코드 단위의 의미 분리**: `SellRatioOfLot`, `TargetPortfolioWeightAfter`, `StrategicCoreFloorWeight`를 분리하여 단위 혼동을 제거한다.
2. **서버 주도 Evidence 계약**: 생산형 Endpoint는 Evidence/Model/Config 값을 클라이언트에서 받지 않고 승인된 PIT Read Model에서 조회한다.
3. **불변 이력과 재현성**: Evidence, Decision, Audit는 update/delete가 아닌 append/correction event로 보존하고 SHA를 기록한다.
4. **Fail-closed 보안**: 개발 전용 Header 인증은 Development에서만 허용하고 그 외 환경은 인증 공급자 미구성 시 401로 닫힌다.
5. **Vertical Slice 완결성**: Endpoint→Application→Pure Policy→Dapper→Outbox→DB→FE→Tests→Observability를 하나의 Done 단위로 묶는다.
6. **과유불급 통제**: Generic Repository, 범용 Mediator wrapper, 자동 plugin discovery, 조기 microservice 분리는 금지한다.
7. **상세 WBS 재정렬**: 화면 선행이 아니라 `PIT Data → Evidence → Sell/Reentry → Recommendation → Evaluation → Reconciliation/DR` Critical Path를 고정한다.
## 2. 이번 버전의 실질 개선
| 영역 | 기존 위험 | v12.0 개선 |
|---|---|---|
| 알고리즘 | Lot 비율과 포트폴리오 비중 혼동 | 명시적 단위 계약과 정책별 우선순위 고정 |
| 데이터 | 원시/PIT/Projection 혼재 | L0~L7 계층, immutable raw, revision, lineage, rebuildable read model |
| BE | 연구 Endpoint가 생산형 계약처럼 보임 | 연구 전용 Endpoint와 생산형 Command 분리 |
| DB | Decision의 Version Set 부족 | Dataset/Model/Config/Code SHA, idempotency, correlation, hash 추가 |
| FE | DTO 수동 중복과 응답 무검증 | Zod를 계약 기준으로 사용하고 응답까지 runtime validation |
| 보안 | 인증 미구성 상태의 모호성 | DevelopmentHeader 또는 FailClosed 두 상태만 허용 |
| 운영 | Queue와 재처리 의미 불명확 | 9개 Queue 분리, JobRun/Watermark/Idempotency 계약 유지 |
| 바이브코딩 | AI 생성 코드가 근거 없이 확장될 가능성 | Source/Assumption/Unknown/Decision Required와 PR 증거 강제 |
| 기술부채 | 목록은 있으나 상환 순서가 약함 | Safety/Integrity/Delivery/Convenience 4등급과 WBS 연계 |
## 3. 착수 우선순위
- **P0**: 원본 데이터 권리·manifest·PIT·기업행사·상폐·총수익·비용·FX.
- **P1**: EvidenceSnapshot, Lot/Cycle, Sell/Reentry Policy Chain, Golden Vector.
- **P2**: 추천 검토·승인·공개·사후평가와 감사추적.
- **P3**: 포트폴리오 위험·리밸런싱·대체상품.
- **P4**: KIS Capability, 대사, Pilot. 주문 Capability는 계속 OFF.
## 4. Go/No-Go
다음 중 하나라도 미충족이면 해당 Slice는 코딩 또는 승격하지 않는다.
- Requirement/Policy/Data/API/DB/Test/PR Trace가 연결되지 않음.
- PIT `published_at` 또는 revision 계약이 없음.
- Evidence/Decision/Outbox가 같은 트랜잭션 또는 명시적 보상계약으로 묶이지 않음.
- 미승인 데이터가 Recommendation에 유입될 수 있음.
- Golden/OOS/비용 2배/룩어헤드/상폐/기업행사 테스트가 없음.
- Owner, Alert, Runbook, Rollback이 없음.
- 자동주문 또는 KIS 제출 Capability가 활성화됨.
## 5. 검증 상태
Python 연구 계약 테스트는 실행해 통과했다. JSON/XML/CSV/Python 정적 검증과 금지 패턴 검사를 수행한다. 현재 작업 환경에는 .NET SDK와 pnpm이 없으므로 `dotnet restore/build/test`, PostgreSQL migration rehearsal, `pnpm install/test/build`는 실행하지 못했다. 이 항목은 G0의 차단 조건으로 남긴다.
+53
View File
@@ -0,0 +1,53 @@
# 첨부 소스 감사와 비회귀 Delta
## 1. 감사 대상
| Source | 역할 | 처리 |
|---|---|---|
| K-ArtSell 12.2 complete package | 연구 코드, 결과 CSV, 정량 검토, 구성안 | 원본 보존 + 연구 계약 하드닝 |
| SI 누적 통합 실행기준서 v10.0 | 47개 장 상세, 26 Slice, 16 Sprint, Gate | 최상위 기준선으로 보존 |
| v11 implementation acceleration | 최초 .NET/Vue 실행 골격 | 코드 Delta의 시작점 |
| v11.1 hardening | 보안·불변성·리팩터링 보강 | v12.0에 누적, testfile 제거 |
원본 4개 첨부파일은 `attachments/original`에 그대로 포함한다. 압축 해제본은 `attachments/extracted`에 별도 보관한다.
## 2. 연구 번들에서 유지해야 할 결론
- 알고리즘 상태는 생산 모델이 아니라 연구후보다.
- 매도 우선순위는 `Hard impairment → Portfolio survival → Profit floor → Concentration/Liquidity → Opportunity cost → Reentry`다.
- 일평가는 단타 적중률이 아니라 비용후 기대효용, calibration, ES/MDD, false-exit, 재진입 포착, 운영 무결성을 누적하는 품질관리다.
- 최소 252 거래일 Shadow, 복수 시장국면, PBO/DSR, 비용 2배 스트레스, 운영·준법 Gate가 필요하다.
- 원시 데이터, PIT 재무/컨센서스, 총수익, 상폐수익, 기업행사, Fee/Tax/FX가 완전하지 않다.
## 3. 코드 감사에서 확인한 개선 필요점
### P0
1. v11/v11.1에는 실제 .NET 빌드 증거가 없고 현재 환경에서도 SDK가 없다.
2. FE lockfile이 없어 reproducible install이 불가능하다.
3. 기존 연구 Endpoint는 Evidence/Model/Config를 클라이언트가 전달했다.
4. Decision 테이블의 `sell_fraction`은 Lot 비율인지 포트폴리오 비중인지 모호했다.
5. 데이터 Read Model의 owner/version/watermark/rebuild 계약이 코드에 없었다.
### P1
1. 정책 구현이 Hard/Gap/Two-close에 치우쳐 Portfolio survival, Concentration, Opportunity cost가 누락됐다.
2. Context 조회, Decision append, Outbox append의 생산형 트랜잭션 예제가 없었다.
3. Fail-closed 인증은 있었으나 개발용 안전한 실행 경로가 분리되지 않았다.
4. FE 응답 계약은 TypeScript interface만 있고 runtime 검증이 없었다.
5. Architecture Test가 문자열 검색 위주라 프로젝트 의존과 SQL schema contract를 충분히 확인하지 못했다.
## 4. v12.0 Delta 상태
| 항목 | 상태 | 증거 |
|---|---|---|
| 6개 Sell Policy 순서 | 구현 | Domain/Policies + Unit Test |
| Lot ratio/portfolio weight 분리 | 구현 | Domain contract + DB migration + FE schema |
| 생산형 Endpoint 서버 Evidence 조회 | 구현 템플릿 | GenerateSellDecision Slice |
| Research Endpoint 명시적 분리 | 구현 | EvaluateResearchSellPolicy Slice |
| Decision/Context/Audit 불변성 | 구현 | 0012 migration trigger |
| Auth fail-closed/dev-only 분리 | 구현 | Host/Security |
| Python Golden Contract | 실행 검증 | research/hardening/TEST_RESULTS.txt |
| .NET build/test | 미검증 | G0 Decision Required |
| pnpm frozen install/build | 미검증 | lockfile 생성·승인 필요 |
| PostgreSQL fresh/upgrade/re-run | 미검증 | G0 DBA rehearsal 필요 |
+77
View File
@@ -0,0 +1,77 @@
# 아키텍처 표준: Modular Monolith + Vertical Slice
## 1. 구조적 선택
단일 배포를 유지하되 모듈과 PostgreSQL schema의 소유권을 분리한다. Microservice 분리는 조직·배포·데이터 소유권·SLO가 실제로 독립될 때만 ADR로 검토한다.
```text
Host
├─ BuildingBlocks
├─ IdentityAccess
├─ SecurityMaster / MarketData / FundamentalsPIT
├─ ResearchFactors / ValuationForecast
├─ SignalEngine
├─ PortfolioRisk / ClientAdvisory
├─ BacktestingEvaluation
├─ ExecutionReconciliation
├─ ReportingNotifications
└─ GovernanceAudit
```
## 2. 의존 방향
- Domain은 FastEndpoints, Dapper, Npgsql, Hangfire, HTTP를 참조하지 않는다.
- Application은 Domain과 좁은 Port를 사용한다.
- Infrastructure는 Dapper/Npgsql/Adapter를 구현한다.
- Host는 composition root다.
- 모듈 간 Source Table 직접 조회를 금지하고 Contract 또는 승인된 Read Model을 사용한다.
## 3. SOLID의 적용 범위
| 원칙 | 실무 적용 | 금지 |
|---|---|---|
| SRP | Endpoint=HTTP, Handler=use case, Policy=decision, Adapter=I/O | God Service, Job 내 정책 |
| OCP | Policy/DQ/Adapter는 명시적 registry로 추가 | Reflection plugin framework |
| LSP | Adapter 교체 시 시간·단위·오류 contract test | Mock 성공만으로 교체 승인 |
| ISP | 작은 Port (`IClock`, `ISellDecisionContextReader`) | 범용 Repository |
| DIP | Domain은 외부 기술을 모름 | Npgsql type의 Domain 침투 |
추상화는 두 번째 실제 구현과 동일한 변경축이 확인된 후 승격한다.
## 4. Vertical Slice 표준
```text
Features/<Slice>/
Endpoint.cs
Request.cs
Response.cs
Validator.cs
Handler/Service.cs
Sql.cs
Mapper.cs
Contracts/
Tests/
README.md
```
한 Slice는 Endpoint, DB migration, Event/Job, FE route/component, unit/integration/E2E, metric/alert/runbook까지 완결되어야 Done이다.
## 5. 트랜잭션 경계
생산형 Decision 생성은 같은 PostgreSQL 트랜잭션에서 다음을 수행한다.
1. Idempotency 기존 결과 확인.
2. 승인된 immutable Context 조회.
3. 순수 Policy 평가.
4. Decision append와 hash 저장.
5. Outbox append.
6. Commit.
외부 API 호출은 트랜잭션 밖에서 수행하고 Raw immutable store에 먼저 적재한다.
## 6. 정규화와 역정규화
- Write Model: 3NF, append/reversal, valid_from/to, revision.
- Evidence: 원본 JSONB + 제약/검색에 필요한 핵심 컬럼.
- Read Model: Owner, ProjectionVersion, SourceWatermark, ContentHash, Rebuild 명령을 가져야 한다.
- 화면 성능을 이유로 Source Table을 직접 join하는 것을 금지한다.
@@ -0,0 +1,75 @@
# 알고리즘·데이터 계약
## 1. 매도 정책 체인
고정 순서:
1. `ALG-SELL-001` Hard impairment.
2. `ALG-SELL-PORT-001` Portfolio survival/capital floor.
3. `ALG-SELL-002` Gap floor breach.
4. `ALG-SELL-003` Two-close breach.
5. `ALG-SELL-004` Concentration/liquidity.
6. `ALG-SELL-005` Opportunity replacement.
7. `ALG-HOLD-001` Hold.
상위 정책이 결정을 생성하면 하위 정책은 평가 결과를 상쇄하지 않는다.
## 2. 단위 계약
| 필드 | 의미 | 단위 |
|---|---|---|
| `SellRatioOfLot` | 현재 Lot 수량 중 매도 비율 | 0~1 |
| `CurrentPortfolioWeight` | 해당 보유의 현재 포트폴리오 비중 | 0~1 |
| `StrategicCoreFloorWeight` | 매도 후 보존할 절대 포트폴리오 비중 | 0~1 |
| `TargetPortfolioWeightAfter` | 정책 실행 후 예상 포트폴리오 비중 | 0~1 |
| `OpportunityEdgeLowerBound` | 비용후 교체우위 신뢰구간 하단 | 수익률 |
Profit floor, concentration, opportunity 정책은 strategic core를 보존한다. Portfolio survival은 생존 우선순위 때문에 core 아래 축소가 가능하다. Hard impairment는 전량매도와 자동 재진입 금지가 기본이다.
## 3. Evidence Version Set
Decision은 다음 값 없이는 저장하지 않는다.
- PositionLotId, CycleId.
- EvidenceId, DatasetId.
- ModelVersion, ConfigVersion, CodeSha.
- AsOf, PublishedAtCutoff.
- PolicyId, Priority, ReasonCode.
- DecisionHash, IdempotencyKey, CorrelationId.
## 4. Reentry 상태기계
`WATCHING → READY → REENTERED → WATCHING/OPEN`이며 Hard impairment는 `CLOSED`, 126 거래일 만료는 `EXPIRED`다.
Ready 조건:
- 매도 후 최소 10 거래일.
- 직전 단계 후 최소 10 거래일.
- 상승 중인 50일선 회복.
- 직전 20 거래일 고점 돌파.
- 자산유형별 추가 확인조건.
재진입은 새 CycleId와 새 Lot을 생성한다.
## 5. 데이터 계층
| Layer | 내용 | 불변조건 |
|---|---|---|
| L0 | Source Catalog/License/SLA | 승인 없는 소스 사용 금지 |
| L1 | Raw payload/hash | overwrite 금지 |
| L2 | Canonical PIT/revision | published_at 이후 사용 |
| L3 | DQ/lineage/dataset manifest | quarantine 사용 금지 |
| L4 | Feature/Forecast/Risk/Evidence | code/config/data hash |
| L5 | Decision/Review/Publish/Outcome | append-only audit |
| L6 | Read Model | version/watermark/rebuild |
| L7 | Backtest/ModelCard/Release | artifact hash |
## 6. 검증
- Lookahead 0.
- 당시 유니버스와 상폐수익 포함.
- 기업행사·총수익·Fee/Tax/FX PIT.
- deterministic seed와 frozen manifest.
- 비용 2배에서도 기대효용 양수.
- PBO ≤20%, DSR ≥95%는 승격 Gate이며 현재 달성 주장 아님.
- 재진입 포착률 ≥65%, false-exit 연 2% 이하도 Shadow 검증 목표다.
+63
View File
@@ -0,0 +1,63 @@
# BE/FE 컴포넌트 표준
## 1. Backend
### 1.1 Endpoint
- HTTP parsing, auth, idempotency header, ProblemDetails 변환만 수행한다.
- 생산형 Command는 `PositionLotId`, `AsOf` 등 업무 식별자만 받는다.
- 모델버전·임계값·Evidence를 클라이언트가 지정하지 못한다.
### 1.2 Application
- 트랜잭션과 유스케이스 오케스트레이션을 담당한다.
- 재시도 가능한 Command는 IdempotencyKey를 필수로 한다.
- 외부 호출과 DB transaction을 혼합하지 않는다.
### 1.3 Domain Policy
- 순수 함수다.
- 시간, DB, 네트워크, 랜덤을 직접 사용하지 않는다.
- 순서·단위·경계값을 Unit/Golden test로 고정한다.
### 1.4 Dapper/SQL
- schema-qualified table과 명시적 column만 사용한다.
- `SELECT *` 금지.
- SQL은 Slice 가까이에 두되 공통 query abstraction을 과도하게 만들지 않는다.
- immutable table은 trigger와 권한으로 update/delete를 차단한다.
## 2. Frontend
### 2.1 상태 소유권
- Server state: TanStack Query.
- User/session/role/UI preference: Pinia.
- Form: vee-validate + Zod.
- URL shareable state: vue-router query/params.
- 대량 표: AG Grid server-side model.
### 2.2 계약
- Zod schema를 request/response runtime validation에 사용한다.
- TypeScript type은 `z.infer`로 파생한다.
- 같은 명령의 retry는 동일 Idempotency-Key를 재사용한다.
- 409/422/429/503을 서로 다른 UX로 처리한다.
### 2.3 공통 컴포넌트
- `QueryStateBoundary`: loading/empty/partial/stale/warn/error/401/403/409/expired/readonly.
- `PermissionGuard`: 역할 기반 표시경계. 서버 권한검사를 대체하지 않는다.
- `DataFreshnessBadge`: as-of와 stale 상태.
- `VersionConflictDialog`: If-Match/409 처리.
- `DataGridShell`, `CrudForm`은 실제 반복이 확인된 후 추가한다.
### 2.4 도메인 컴포넌트
- EvidencePanel.
- ProtectionFloorPanel.
- ReentryTimeline.
- ApprovalPanel.
- OutcomeAttributionPanel.
업무 의미가 다른 화면을 props가 많은 범용 컴포넌트 하나로 합치지 않는다.
@@ -0,0 +1,44 @@
# 바이브코딩·홀루시네이션 통제
## 1. 기본 원칙
AI는 구현 초안을 만든다. 정책·증거·리스크·승격은 사람이 승인한다. 채팅, 자동완성, 생성 코드 자체는 Source of Truth가 아니다.
## 2. 모든 변경의 4분류
- `SOURCE`: 첨부 기준서, 승인 ADR, 계약, 데이터 증거에 직접 근거.
- `ASSUMPTION`: 착수 편의를 위한 가정. 만료일과 승인자가 필요.
- `UNKNOWN`: 자료로 판단할 수 없음.
- `DECISION_REQUIRED`: 코딩 전 결정이 필요한 차단 항목.
## 3. AI 작업 패킷
AI에 전달하는 작업은 최소 다음을 포함한다.
1. Requirement ID / Slice ID.
2. 사용자 결과와 비목표.
3. Policy ID와 단위·우선순위.
4. Data source/PIT/revision/quality.
5. API/DB/Event/Job/UI 계약.
6. Given/When/Then과 실패상태.
7. 금지 패턴.
8. 검증 명령과 완료 증거.
## 4. PR 차단 규칙
- Source/Assumption/Unknown 표기가 없음.
- 새 library/pattern/table/threshold에 ADR이 없음.
- Migration fresh/upgrade/re-run evidence가 없음.
- Golden/OOS/Architecture/Data/E2E test가 없음.
- 실행하지 않은 test를 통과로 기록함.
- 실고객 데이터·계좌·token·secret가 prompt/log/fixture에 포함됨.
- 자동주문 Capability를 우회하거나 기본 ON으로 변경함.
## 5. 리팩터링 원칙
- 동작 보존 refactoring과 정책 변경을 한 PR에 섞지 않는다.
- 먼저 Characterization/Golden test를 만든다.
- God Service를 Endpoint/Application/Policy/Adapter로 분리한다.
- Generic Repository로 Dapper SQL 의미를 숨기지 않는다.
- 중복은 의미와 변경축이 같을 때만 추상화한다.
- 기술부채는 등록, owner, impact, repayment trigger, deadline을 가진다.
+49
View File
@@ -0,0 +1,49 @@
# Delivery Gate
## G0 Toolchain/Repository
- .NET 10 SDK, Node 22, pnpm 10 설치.
- `pnpm-lock.yaml` 생성·검토·커밋.
- `dotnet restore/build/test``pnpm install --frozen-lockfile/typecheck/test/build` 통과.
- PostgreSQL 17 fresh/upgrade/re-run migration.
## G1 Data Minimum
- SecurityMaster, MarketCalendar, Raw immutable, PIT timestamp, revision, DQ.
- 기업행사·총수익·상폐·FX·Fee/Tax contract.
- Replay same manifest/hash.
## G2 Algorithm Contract
- 6개 Sell Policy와 Reentry state machine Golden.
- Lot/Cycle reset.
- Evidence Version Set 100%.
- 비용 2배, boundary ±epsilon, lookahead tests.
## G3 Advisory MVP
- Recommendation→Review→Publish→ClientDecision→Outcome E2E.
- maker-checker, approval expiry, unapproved publication 0.
- 고객 화면에 근거·반대증거·불확실성·비용·재진입 표시.
## G4 Shadow
- 최소 252 거래일, 복수 국면.
- 운영 무결성 오류 0.
- 매도/재진입/예측 calibration/위험감소 KPI 누적.
## G5 Pilot Readiness
- AuthN/AuthZ, PII, audit, reconciliation, kill-switch, DR.
- SLO/RPO/RTO와 Runbook.
- 법무·준법·정보보호 승인.
## G6 Advisory Go-Live
- 자동주문 OFF.
- backfill/reconciliation/cutover/rollback rehearsal.
- Release Evidence와 residual risk 승인.
## 일임형 별도 검토 Gate
Shadow 기간·OOS·PBO/DSR·비용후 효용·운영/준법/고객보호를 모두 통과한 뒤 별도 프로젝트로 검토한다. 적중률 하나로 전환하지 않는다.
+103
View File
@@ -0,0 +1,103 @@
WBS_ID,Sprint,Weeks,Vertical_Slice,Domain,Workstream,Sprint_Goal,Task,Artifact,Acceptance_Criteria,Owner,Reviewer,PD,Dependencies,Source_Status,Gate,Priority,Status
AEG-S0-01,S0,W1-2,VS-00,Foundation,GOV,착수·통제·Walking Skeleton,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,,SOURCE+DESIGN_PROPOSAL,G0,P0,PLANNED
AEG-S0-02,S0,W1-2,VS-00,Foundation,DATA,착수·통제·Walking Skeleton,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,,SOURCE+DESIGN_PROPOSAL,G0,P0,PLANNED
AEG-S0-03,S0,W1-2,VS-00,Foundation,BE,착수·통제·Walking Skeleton,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,,SOURCE+DESIGN_PROPOSAL,G0,P0,PLANNED
AEG-S0-04,S0,W1-2,VS-00,Foundation,FE,착수·통제·Walking Skeleton,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,,SOURCE+DESIGN_PROPOSAL,G0,P1,PLANNED
AEG-S0-05,S0,W1-2,VS-00,Foundation,TEST,착수·통제·Walking Skeleton,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,,SOURCE+DESIGN_PROPOSAL,G0,P0,PLANNED
AEG-S0-06,S0,W1-2,VS-00,Foundation,OPS,착수·통제·Walking Skeleton,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,,SOURCE+DESIGN_PROPOSAL,G0,P1,PLANNED
AEG-S0-07,S0,W1-2,VS-00,Foundation,TOOLCHAIN,,SDK/lockfile/CI 재현성 확보,"global.json, pnpm-lock.yaml, CI logs",dotnet/pnpm frozen build green,DevOps,Architect,8,,SOURCE+DESIGN_PROPOSAL,G0,P0,PLANNED
AEG-S1-01,S1,W3-4,VS-01/02,Identity/SecurityMaster,GOV,인증·권한·상품기준·시장캘린더,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S0-DONE,SOURCE+DESIGN_PROPOSAL,G1-A,P0,PLANNED
AEG-S1-02,S1,W3-4,VS-01/02,Identity/SecurityMaster,DATA,인증·권한·상품기준·시장캘린더,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S0-DONE,SOURCE+DESIGN_PROPOSAL,G1-A,P0,PLANNED
AEG-S1-03,S1,W3-4,VS-01/02,Identity/SecurityMaster,BE,인증·권한·상품기준·시장캘린더,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S0-DONE,SOURCE+DESIGN_PROPOSAL,G1-A,P0,PLANNED
AEG-S1-04,S1,W3-4,VS-01/02,Identity/SecurityMaster,FE,인증·권한·상품기준·시장캘린더,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S0-DONE,SOURCE+DESIGN_PROPOSAL,G1-A,P1,PLANNED
AEG-S1-05,S1,W3-4,VS-01/02,Identity/SecurityMaster,TEST,인증·권한·상품기준·시장캘린더,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S0-DONE,SOURCE+DESIGN_PROPOSAL,G1-A,P0,PLANNED
AEG-S1-06,S1,W3-4,VS-01/02,Identity/SecurityMaster,OPS,인증·권한·상품기준·시장캘린더,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S0-DONE,SOURCE+DESIGN_PROPOSAL,G1-A,P1,PLANNED
AEG-S10-01,S10,W21-22,VS-12/22,Buy/Replacement,GOV,매수후보·대체상품·상품탐색,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S9-DONE,SOURCE+DESIGN_PROPOSAL,Portfolio Gate,P0,PLANNED
AEG-S10-02,S10,W21-22,VS-12/22,Buy/Replacement,DATA,매수후보·대체상품·상품탐색,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S9-DONE,SOURCE+DESIGN_PROPOSAL,Portfolio Gate,P0,PLANNED
AEG-S10-03,S10,W21-22,VS-12/22,Buy/Replacement,BE,매수후보·대체상품·상품탐색,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S9-DONE,SOURCE+DESIGN_PROPOSAL,Portfolio Gate,P0,PLANNED
AEG-S10-04,S10,W21-22,VS-12/22,Buy/Replacement,FE,매수후보·대체상품·상품탐색,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S9-DONE,SOURCE+DESIGN_PROPOSAL,Portfolio Gate,P1,PLANNED
AEG-S10-05,S10,W21-22,VS-12/22,Buy/Replacement,TEST,매수후보·대체상품·상품탐색,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S9-DONE,SOURCE+DESIGN_PROPOSAL,Portfolio Gate,P0,PLANNED
AEG-S10-06,S10,W21-22,VS-12/22,Buy/Replacement,OPS,매수후보·대체상품·상품탐색,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S9-DONE,SOURCE+DESIGN_PROPOSAL,Portfolio Gate,P1,PLANNED
AEG-S11-01,S11,W23-24,VS-18/24,Shadow/Scorecard,GOV,가상체결·일평가·drift,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S10-DONE,SOURCE+DESIGN_PROPOSAL,G4-A,P0,PLANNED
AEG-S11-02,S11,W23-24,VS-18/24,Shadow/Scorecard,DATA,가상체결·일평가·drift,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S10-DONE,SOURCE+DESIGN_PROPOSAL,G4-A,P0,PLANNED
AEG-S11-03,S11,W23-24,VS-18/24,Shadow/Scorecard,BE,가상체결·일평가·drift,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S10-DONE,SOURCE+DESIGN_PROPOSAL,G4-A,P0,PLANNED
AEG-S11-04,S11,W23-24,VS-18/24,Shadow/Scorecard,FE,가상체결·일평가·drift,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S10-DONE,SOURCE+DESIGN_PROPOSAL,G4-A,P1,PLANNED
AEG-S11-05,S11,W23-24,VS-18/24,Shadow/Scorecard,TEST,가상체결·일평가·drift,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S10-DONE,SOURCE+DESIGN_PROPOSAL,G4-A,P0,PLANNED
AEG-S11-06,S11,W23-24,VS-18/24,Shadow/Scorecard,OPS,가상체결·일평가·drift,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S10-DONE,SOURCE+DESIGN_PROPOSAL,G4-A,P1,PLANNED
AEG-S12-01,S12,W25-26,VS-23,KIS/Reconciliation,GOV,Capability OFF Adapter·대사,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S11-DONE,SOURCE+DESIGN_PROPOSAL,Pilot-A,P0,PLANNED
AEG-S12-02,S12,W25-26,VS-23,KIS/Reconciliation,DATA,Capability OFF Adapter·대사,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S11-DONE,SOURCE+DESIGN_PROPOSAL,Pilot-A,P0,PLANNED
AEG-S12-03,S12,W25-26,VS-23,KIS/Reconciliation,BE,Capability OFF Adapter·대사,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S11-DONE,SOURCE+DESIGN_PROPOSAL,Pilot-A,P0,PLANNED
AEG-S12-04,S12,W25-26,VS-23,KIS/Reconciliation,FE,Capability OFF Adapter·대사,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S11-DONE,SOURCE+DESIGN_PROPOSAL,Pilot-A,P1,PLANNED
AEG-S12-05,S12,W25-26,VS-23,KIS/Reconciliation,TEST,Capability OFF Adapter·대사,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S11-DONE,SOURCE+DESIGN_PROPOSAL,Pilot-A,P0,PLANNED
AEG-S12-06,S12,W25-26,VS-23,KIS/Reconciliation,OPS,Capability OFF Adapter·대사,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S11-DONE,SOURCE+DESIGN_PROPOSAL,Pilot-A,P1,PLANNED
AEG-S12-07,S12,W25-26,VS-23,Execution,CAPABILITY,,KIS Capability OFF 및 대사,"adapter stub, capability tests","외부 주문 호출 0, partial/duplicate/out-of-order fill break 생성",BE/Ops,Security/Compliance,10,AEG-S11-06,SOURCE+DESIGN_PROPOSAL,Pilot-A,P0,PLANNED
AEG-S13-01,S13,W27-28,VS-25,Security/DR/UAT,GOV,보안·kill-switch·DR·UAT,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S12-DONE,SOURCE+DESIGN_PROPOSAL,G5,P0,PLANNED
AEG-S13-02,S13,W27-28,VS-25,Security/DR/UAT,DATA,보안·kill-switch·DR·UAT,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S12-DONE,SOURCE+DESIGN_PROPOSAL,G5,P0,PLANNED
AEG-S13-03,S13,W27-28,VS-25,Security/DR/UAT,BE,보안·kill-switch·DR·UAT,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S12-DONE,SOURCE+DESIGN_PROPOSAL,G5,P0,PLANNED
AEG-S13-04,S13,W27-28,VS-25,Security/DR/UAT,FE,보안·kill-switch·DR·UAT,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S12-DONE,SOURCE+DESIGN_PROPOSAL,G5,P1,PLANNED
AEG-S13-05,S13,W27-28,VS-25,Security/DR/UAT,TEST,보안·kill-switch·DR·UAT,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S12-DONE,SOURCE+DESIGN_PROPOSAL,G5,P0,PLANNED
AEG-S13-06,S13,W27-28,VS-25,Security/DR/UAT,OPS,보안·kill-switch·DR·UAT,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S12-DONE,SOURCE+DESIGN_PROPOSAL,G5,P1,PLANNED
AEG-S14-01,S14,W29-30,Cross,Performance/Cutover,GOV,SLA·backfill·전환리허설,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S13-DONE,SOURCE+DESIGN_PROPOSAL,G6-A,P0,PLANNED
AEG-S14-02,S14,W29-30,Cross,Performance/Cutover,DATA,SLA·backfill·전환리허설,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S13-DONE,SOURCE+DESIGN_PROPOSAL,G6-A,P0,PLANNED
AEG-S14-03,S14,W29-30,Cross,Performance/Cutover,BE,SLA·backfill·전환리허설,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S13-DONE,SOURCE+DESIGN_PROPOSAL,G6-A,P0,PLANNED
AEG-S14-04,S14,W29-30,Cross,Performance/Cutover,FE,SLA·backfill·전환리허설,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S13-DONE,SOURCE+DESIGN_PROPOSAL,G6-A,P1,PLANNED
AEG-S14-05,S14,W29-30,Cross,Performance/Cutover,TEST,SLA·backfill·전환리허설,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S13-DONE,SOURCE+DESIGN_PROPOSAL,G6-A,P0,PLANNED
AEG-S14-06,S14,W29-30,Cross,Performance/Cutover,OPS,SLA·backfill·전환리허설,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S13-DONE,SOURCE+DESIGN_PROPOSAL,G6-A,P1,PLANNED
AEG-S15-01,S15,W31-32,Cross,Go-Live/Hypercare,GOV,자문형 전환·초기안정화,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S14-DONE,SOURCE+DESIGN_PROPOSAL,G6,P0,PLANNED
AEG-S15-02,S15,W31-32,Cross,Go-Live/Hypercare,DATA,자문형 전환·초기안정화,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S14-DONE,SOURCE+DESIGN_PROPOSAL,G6,P0,PLANNED
AEG-S15-03,S15,W31-32,Cross,Go-Live/Hypercare,BE,자문형 전환·초기안정화,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S14-DONE,SOURCE+DESIGN_PROPOSAL,G6,P0,PLANNED
AEG-S15-04,S15,W31-32,Cross,Go-Live/Hypercare,FE,자문형 전환·초기안정화,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S14-DONE,SOURCE+DESIGN_PROPOSAL,G6,P1,PLANNED
AEG-S15-05,S15,W31-32,Cross,Go-Live/Hypercare,TEST,자문형 전환·초기안정화,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S14-DONE,SOURCE+DESIGN_PROPOSAL,G6,P0,PLANNED
AEG-S15-06,S15,W31-32,Cross,Go-Live/Hypercare,OPS,자문형 전환·초기안정화,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S14-DONE,SOURCE+DESIGN_PROPOSAL,G6,P1,PLANNED
AEG-S2-01,S2,W5-6,VS-03/04,MarketData,GOV,PIT 시세·기업행사·총수익·DQ,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S1-DONE,SOURCE+DESIGN_PROPOSAL,G1-B,P0,PLANNED
AEG-S2-02,S2,W5-6,VS-03/04,MarketData,DATA,PIT 시세·기업행사·총수익·DQ,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S1-DONE,SOURCE+DESIGN_PROPOSAL,G1-B,P0,PLANNED
AEG-S2-03,S2,W5-6,VS-03/04,MarketData,BE,PIT 시세·기업행사·총수익·DQ,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S1-DONE,SOURCE+DESIGN_PROPOSAL,G1-B,P0,PLANNED
AEG-S2-04,S2,W5-6,VS-03/04,MarketData,FE,PIT 시세·기업행사·총수익·DQ,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S1-DONE,SOURCE+DESIGN_PROPOSAL,G1-B,P1,PLANNED
AEG-S2-05,S2,W5-6,VS-03/04,MarketData,TEST,PIT 시세·기업행사·총수익·DQ,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S1-DONE,SOURCE+DESIGN_PROPOSAL,G1-B,P0,PLANNED
AEG-S2-06,S2,W5-6,VS-03/04,MarketData,OPS,PIT 시세·기업행사·총수익·DQ,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S1-DONE,SOURCE+DESIGN_PROPOSAL,G1-B,P1,PLANNED
AEG-S2-07,S2,W5-6,VS-03/04,MarketData,GOLDEN,,기업행사·상폐·총수익 Golden,"Golden fixtures, replay report",삼성전자/하이닉스/JYP/AAMRQ 포함 회귀 통과,Data/Quant,QA,8,AEG-S1-02,SOURCE+DESIGN_PROPOSAL,G1-B,P0,PLANNED
AEG-S3-01,S3,W7-8,VS-05/06/08,Fundamentals/Cost/Ledger,GOV,OPENDART·비용·원장,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S2-DONE,SOURCE+DESIGN_PROPOSAL,G1,P0,PLANNED
AEG-S3-02,S3,W7-8,VS-05/06/08,Fundamentals/Cost/Ledger,DATA,OPENDART·비용·원장,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S2-DONE,SOURCE+DESIGN_PROPOSAL,G1,P0,PLANNED
AEG-S3-03,S3,W7-8,VS-05/06/08,Fundamentals/Cost/Ledger,BE,OPENDART·비용·원장,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S2-DONE,SOURCE+DESIGN_PROPOSAL,G1,P0,PLANNED
AEG-S3-04,S3,W7-8,VS-05/06/08,Fundamentals/Cost/Ledger,FE,OPENDART·비용·원장,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S2-DONE,SOURCE+DESIGN_PROPOSAL,G1,P1,PLANNED
AEG-S3-05,S3,W7-8,VS-05/06/08,Fundamentals/Cost/Ledger,TEST,OPENDART·비용·원장,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S2-DONE,SOURCE+DESIGN_PROPOSAL,G1,P0,PLANNED
AEG-S3-06,S3,W7-8,VS-05/06/08,Fundamentals/Cost/Ledger,OPS,OPENDART·비용·원장,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S2-DONE,SOURCE+DESIGN_PROPOSAL,G1,P1,PLANNED
AEG-S4-01,S4,W9-10,VS-09/10,Evidence/Sell,GOV,EvidenceSnapshot·Sell Policy Chain,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S3-DONE,SOURCE+DESIGN_PROPOSAL,G2-A,P0,PLANNED
AEG-S4-02,S4,W9-10,VS-09/10,Evidence/Sell,DATA,EvidenceSnapshot·Sell Policy Chain,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S3-DONE,SOURCE+DESIGN_PROPOSAL,G2-A,P0,PLANNED
AEG-S4-03,S4,W9-10,VS-09/10,Evidence/Sell,BE,EvidenceSnapshot·Sell Policy Chain,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S3-DONE,SOURCE+DESIGN_PROPOSAL,G2-A,P0,PLANNED
AEG-S4-04,S4,W9-10,VS-09/10,Evidence/Sell,FE,EvidenceSnapshot·Sell Policy Chain,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S3-DONE,SOURCE+DESIGN_PROPOSAL,G2-A,P1,PLANNED
AEG-S4-05,S4,W9-10,VS-09/10,Evidence/Sell,TEST,EvidenceSnapshot·Sell Policy Chain,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S3-DONE,SOURCE+DESIGN_PROPOSAL,G2-A,P0,PLANNED
AEG-S4-06,S4,W9-10,VS-09/10,Evidence/Sell,OPS,EvidenceSnapshot·Sell Policy Chain,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S3-DONE,SOURCE+DESIGN_PROPOSAL,G2-A,P1,PLANNED
AEG-S4-07,S4,W9-10,VS-10,SignalEngine,POLICY,,6개 Sell Policy와 단위계약,"Policy IDs, Golden vectors",우선순위·core floor·lot ratio/weight 불변조건 통과,Quant/BE,Risk/QA,10,AEG-S3-02,SOURCE+DESIGN_PROPOSAL,G2-A,P0,PLANNED
AEG-S5-01,S5,W11-12,VS-11/19,Reentry/Backtest,GOV,재진입·동결 OOS·Golden,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S4-DONE,SOURCE+DESIGN_PROPOSAL,G2,P0,PLANNED
AEG-S5-02,S5,W11-12,VS-11/19,Reentry/Backtest,DATA,재진입·동결 OOS·Golden,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S4-DONE,SOURCE+DESIGN_PROPOSAL,G2,P0,PLANNED
AEG-S5-03,S5,W11-12,VS-11/19,Reentry/Backtest,BE,재진입·동결 OOS·Golden,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S4-DONE,SOURCE+DESIGN_PROPOSAL,G2,P0,PLANNED
AEG-S5-04,S5,W11-12,VS-11/19,Reentry/Backtest,FE,재진입·동결 OOS·Golden,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S4-DONE,SOURCE+DESIGN_PROPOSAL,G2,P1,PLANNED
AEG-S5-05,S5,W11-12,VS-11/19,Reentry/Backtest,TEST,재진입·동결 OOS·Golden,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S4-DONE,SOURCE+DESIGN_PROPOSAL,G2,P0,PLANNED
AEG-S5-06,S5,W11-12,VS-11/19,Reentry/Backtest,OPS,재진입·동결 OOS·Golden,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S4-DONE,SOURCE+DESIGN_PROPOSAL,G2,P1,PLANNED
AEG-S5-07,S5,W11-12,VS-11,SignalEngine,REENTRY,,ReentryWatch 다단계 상태기계,state transition tests,10세션/20고점/50일선/추가조건/126일 만료 통과,Quant/BE,QA,8,AEG-S4-07,SOURCE+DESIGN_PROPOSAL,G2,P0,PLANNED
AEG-S6-01,S6,W13-14,VS-07/08,Client/Portfolio,GOV,고객·IPS·계좌·보유·수익률,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S5-DONE,SOURCE+DESIGN_PROPOSAL,MVP-A,P0,PLANNED
AEG-S6-02,S6,W13-14,VS-07/08,Client/Portfolio,DATA,고객·IPS·계좌·보유·수익률,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S5-DONE,SOURCE+DESIGN_PROPOSAL,MVP-A,P0,PLANNED
AEG-S6-03,S6,W13-14,VS-07/08,Client/Portfolio,BE,고객·IPS·계좌·보유·수익률,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S5-DONE,SOURCE+DESIGN_PROPOSAL,MVP-A,P0,PLANNED
AEG-S6-04,S6,W13-14,VS-07/08,Client/Portfolio,FE,고객·IPS·계좌·보유·수익률,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S5-DONE,SOURCE+DESIGN_PROPOSAL,MVP-A,P1,PLANNED
AEG-S6-05,S6,W13-14,VS-07/08,Client/Portfolio,TEST,고객·IPS·계좌·보유·수익률,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S5-DONE,SOURCE+DESIGN_PROPOSAL,MVP-A,P0,PLANNED
AEG-S6-06,S6,W13-14,VS-07/08,Client/Portfolio,OPS,고객·IPS·계좌·보유·수익률,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S5-DONE,SOURCE+DESIGN_PROPOSAL,MVP-A,P1,PLANNED
AEG-S7-01,S7,W15-16,VS-14/15,Recommendation/Review,GOV,추천 생성·maker-checker,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S6-DONE,SOURCE+DESIGN_PROPOSAL,MVP-B,P0,PLANNED
AEG-S7-02,S7,W15-16,VS-14/15,Recommendation/Review,DATA,추천 생성·maker-checker,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S6-DONE,SOURCE+DESIGN_PROPOSAL,MVP-B,P0,PLANNED
AEG-S7-03,S7,W15-16,VS-14/15,Recommendation/Review,BE,추천 생성·maker-checker,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S6-DONE,SOURCE+DESIGN_PROPOSAL,MVP-B,P0,PLANNED
AEG-S7-04,S7,W15-16,VS-14/15,Recommendation/Review,FE,추천 생성·maker-checker,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S6-DONE,SOURCE+DESIGN_PROPOSAL,MVP-B,P1,PLANNED
AEG-S7-05,S7,W15-16,VS-14/15,Recommendation/Review,TEST,추천 생성·maker-checker,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S6-DONE,SOURCE+DESIGN_PROPOSAL,MVP-B,P0,PLANNED
AEG-S7-06,S7,W15-16,VS-14/15,Recommendation/Review,OPS,추천 생성·maker-checker,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S6-DONE,SOURCE+DESIGN_PROPOSAL,MVP-B,P1,PLANNED
AEG-S8-01,S8,W17-18,VS-16/17/18,Publish/Outcome,GOV,고객공개·행동·사후평가·감사,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S7-DONE,SOURCE+DESIGN_PROPOSAL,G3,P0,PLANNED
AEG-S8-02,S8,W17-18,VS-16/17/18,Publish/Outcome,DATA,고객공개·행동·사후평가·감사,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S7-DONE,SOURCE+DESIGN_PROPOSAL,G3,P0,PLANNED
AEG-S8-03,S8,W17-18,VS-16/17/18,Publish/Outcome,BE,고객공개·행동·사후평가·감사,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S7-DONE,SOURCE+DESIGN_PROPOSAL,G3,P0,PLANNED
AEG-S8-04,S8,W17-18,VS-16/17/18,Publish/Outcome,FE,고객공개·행동·사후평가·감사,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S7-DONE,SOURCE+DESIGN_PROPOSAL,G3,P1,PLANNED
AEG-S8-05,S8,W17-18,VS-16/17/18,Publish/Outcome,TEST,고객공개·행동·사후평가·감사,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S7-DONE,SOURCE+DESIGN_PROPOSAL,G3,P0,PLANNED
AEG-S8-06,S8,W17-18,VS-16/17/18,Publish/Outcome,OPS,고객공개·행동·사후평가·감사,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S7-DONE,SOURCE+DESIGN_PROPOSAL,G3,P1,PLANNED
AEG-S8-07,S8,W17-18,VS-16/18,Advisory/Evaluation,AUDIT,,Evidence→Decision→Review→Publish→Outcome 추적,audit trace endpoint/test,publicationId 기준 100% E2E trace,BE/QA,Compliance/Audit,8,AEG-S7-03,SOURCE+DESIGN_PROPOSAL,G3,P0,PLANNED
AEG-S9-01,S9,W19-20,VS-13/21,Risk/Rebalance,GOV,ES·집중·상관·리밸런싱,요구사항·정책·Decision Log 확정,"docs/SLICE_SPEC, TRACEABILITY, ADR",승인자·비목표·실패상태·Source 상태가 명시됨,PM/Architect,Compliance/Quant,3,S8-DONE,SOURCE+DESIGN_PROPOSAL,Portfolio-A,P0,PLANNED
AEG-S9-02,S9,W19-20,VS-13/21,Risk/Rebalance,DATA,ES·집중·상관·리밸런싱,데이터 계약·PIT·DQ·lineage 구현,"DB migration, source contract, DQ rules",published_at/revision/hash/watermark와 quarantine 경로 통과,Data/DBA,Quant/QA,6,S8-DONE,SOURCE+DESIGN_PROPOSAL,Portfolio-A,P0,PLANNED
AEG-S9-03,S9,W19-20,VS-13/21,Risk/Rebalance,BE,ES·집중·상관·리밸런싱,Vertical Slice Backend 구현,"Endpoint, Validator, Application, Policy, Dapper SQL, Outbox",멱등·트랜잭션·불변조건·ProblemDetails·trace 통과,BE Lead,Architect/QA,8,S8-DONE,SOURCE+DESIGN_PROPOSAL,Portfolio-A,P0,PLANNED
AEG-S9-04,S9,W19-20,VS-13/21,Risk/Rebalance,FE,ES·집중·상관·리밸런싱,화면·컴포넌트·상태 계약 구현,"Vue route, Zod, Query, components",loading/empty/warn/error/401/403/409/expired와 접근성 통과,FE Lead,UX/QA,6,S8-DONE,SOURCE+DESIGN_PROPOSAL,Portfolio-A,P1,PLANNED
AEG-S9-05,S9,W19-20,VS-13/21,Risk/Rebalance,TEST,ES·집중·상관·리밸런싱,자동화 테스트와 Golden/Regression,"xUnit, Vitest, Playwright, Data/Architecture tests","Given/When/Then, boundary, replay, failure path 자동화",QA Lead,Quant/BE/FE,6,S8-DONE,SOURCE+DESIGN_PROPOSAL,Portfolio-A,P0,PLANNED
AEG-S9-06,S9,W19-20,VS-13/21,Risk/Rebalance,OPS,ES·집중·상관·리밸런싱,관제·Job·Runbook·Rollback,"OTel metric/alert, Hangfire job, runbook","Owner/Secondary, SLA, retry/reprocess, rollback rehearsal",SRE/Ops,Security/PM,4,S8-DONE,SOURCE+DESIGN_PROPOSAL,Portfolio-A,P1,PLANNED
1 WBS_ID Sprint Weeks Vertical_Slice Domain Workstream Sprint_Goal Task Artifact Acceptance_Criteria Owner Reviewer PD Dependencies Source_Status Gate Priority Status
2 AEG-S0-01 S0 W1-2 VS-00 Foundation GOV 착수·통제·Walking Skeleton 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 SOURCE+DESIGN_PROPOSAL G0 P0 PLANNED
3 AEG-S0-02 S0 W1-2 VS-00 Foundation DATA 착수·통제·Walking Skeleton 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 SOURCE+DESIGN_PROPOSAL G0 P0 PLANNED
4 AEG-S0-03 S0 W1-2 VS-00 Foundation BE 착수·통제·Walking Skeleton Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 SOURCE+DESIGN_PROPOSAL G0 P0 PLANNED
5 AEG-S0-04 S0 W1-2 VS-00 Foundation FE 착수·통제·Walking Skeleton 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 SOURCE+DESIGN_PROPOSAL G0 P1 PLANNED
6 AEG-S0-05 S0 W1-2 VS-00 Foundation TEST 착수·통제·Walking Skeleton 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 SOURCE+DESIGN_PROPOSAL G0 P0 PLANNED
7 AEG-S0-06 S0 W1-2 VS-00 Foundation OPS 착수·통제·Walking Skeleton 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 SOURCE+DESIGN_PROPOSAL G0 P1 PLANNED
8 AEG-S0-07 S0 W1-2 VS-00 Foundation TOOLCHAIN SDK/lockfile/CI 재현성 확보 global.json, pnpm-lock.yaml, CI logs dotnet/pnpm frozen build green DevOps Architect 8 SOURCE+DESIGN_PROPOSAL G0 P0 PLANNED
9 AEG-S1-01 S1 W3-4 VS-01/02 Identity/SecurityMaster GOV 인증·권한·상품기준·시장캘린더 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S0-DONE SOURCE+DESIGN_PROPOSAL G1-A P0 PLANNED
10 AEG-S1-02 S1 W3-4 VS-01/02 Identity/SecurityMaster DATA 인증·권한·상품기준·시장캘린더 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S0-DONE SOURCE+DESIGN_PROPOSAL G1-A P0 PLANNED
11 AEG-S1-03 S1 W3-4 VS-01/02 Identity/SecurityMaster BE 인증·권한·상품기준·시장캘린더 Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S0-DONE SOURCE+DESIGN_PROPOSAL G1-A P0 PLANNED
12 AEG-S1-04 S1 W3-4 VS-01/02 Identity/SecurityMaster FE 인증·권한·상품기준·시장캘린더 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S0-DONE SOURCE+DESIGN_PROPOSAL G1-A P1 PLANNED
13 AEG-S1-05 S1 W3-4 VS-01/02 Identity/SecurityMaster TEST 인증·권한·상품기준·시장캘린더 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S0-DONE SOURCE+DESIGN_PROPOSAL G1-A P0 PLANNED
14 AEG-S1-06 S1 W3-4 VS-01/02 Identity/SecurityMaster OPS 인증·권한·상품기준·시장캘린더 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S0-DONE SOURCE+DESIGN_PROPOSAL G1-A P1 PLANNED
15 AEG-S10-01 S10 W21-22 VS-12/22 Buy/Replacement GOV 매수후보·대체상품·상품탐색 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S9-DONE SOURCE+DESIGN_PROPOSAL Portfolio Gate P0 PLANNED
16 AEG-S10-02 S10 W21-22 VS-12/22 Buy/Replacement DATA 매수후보·대체상품·상품탐색 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S9-DONE SOURCE+DESIGN_PROPOSAL Portfolio Gate P0 PLANNED
17 AEG-S10-03 S10 W21-22 VS-12/22 Buy/Replacement BE 매수후보·대체상품·상품탐색 Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S9-DONE SOURCE+DESIGN_PROPOSAL Portfolio Gate P0 PLANNED
18 AEG-S10-04 S10 W21-22 VS-12/22 Buy/Replacement FE 매수후보·대체상품·상품탐색 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S9-DONE SOURCE+DESIGN_PROPOSAL Portfolio Gate P1 PLANNED
19 AEG-S10-05 S10 W21-22 VS-12/22 Buy/Replacement TEST 매수후보·대체상품·상품탐색 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S9-DONE SOURCE+DESIGN_PROPOSAL Portfolio Gate P0 PLANNED
20 AEG-S10-06 S10 W21-22 VS-12/22 Buy/Replacement OPS 매수후보·대체상품·상품탐색 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S9-DONE SOURCE+DESIGN_PROPOSAL Portfolio Gate P1 PLANNED
21 AEG-S11-01 S11 W23-24 VS-18/24 Shadow/Scorecard GOV 가상체결·일평가·drift 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S10-DONE SOURCE+DESIGN_PROPOSAL G4-A P0 PLANNED
22 AEG-S11-02 S11 W23-24 VS-18/24 Shadow/Scorecard DATA 가상체결·일평가·drift 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S10-DONE SOURCE+DESIGN_PROPOSAL G4-A P0 PLANNED
23 AEG-S11-03 S11 W23-24 VS-18/24 Shadow/Scorecard BE 가상체결·일평가·drift Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S10-DONE SOURCE+DESIGN_PROPOSAL G4-A P0 PLANNED
24 AEG-S11-04 S11 W23-24 VS-18/24 Shadow/Scorecard FE 가상체결·일평가·drift 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S10-DONE SOURCE+DESIGN_PROPOSAL G4-A P1 PLANNED
25 AEG-S11-05 S11 W23-24 VS-18/24 Shadow/Scorecard TEST 가상체결·일평가·drift 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S10-DONE SOURCE+DESIGN_PROPOSAL G4-A P0 PLANNED
26 AEG-S11-06 S11 W23-24 VS-18/24 Shadow/Scorecard OPS 가상체결·일평가·drift 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S10-DONE SOURCE+DESIGN_PROPOSAL G4-A P1 PLANNED
27 AEG-S12-01 S12 W25-26 VS-23 KIS/Reconciliation GOV Capability OFF Adapter·대사 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S11-DONE SOURCE+DESIGN_PROPOSAL Pilot-A P0 PLANNED
28 AEG-S12-02 S12 W25-26 VS-23 KIS/Reconciliation DATA Capability OFF Adapter·대사 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S11-DONE SOURCE+DESIGN_PROPOSAL Pilot-A P0 PLANNED
29 AEG-S12-03 S12 W25-26 VS-23 KIS/Reconciliation BE Capability OFF Adapter·대사 Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S11-DONE SOURCE+DESIGN_PROPOSAL Pilot-A P0 PLANNED
30 AEG-S12-04 S12 W25-26 VS-23 KIS/Reconciliation FE Capability OFF Adapter·대사 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S11-DONE SOURCE+DESIGN_PROPOSAL Pilot-A P1 PLANNED
31 AEG-S12-05 S12 W25-26 VS-23 KIS/Reconciliation TEST Capability OFF Adapter·대사 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S11-DONE SOURCE+DESIGN_PROPOSAL Pilot-A P0 PLANNED
32 AEG-S12-06 S12 W25-26 VS-23 KIS/Reconciliation OPS Capability OFF Adapter·대사 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S11-DONE SOURCE+DESIGN_PROPOSAL Pilot-A P1 PLANNED
33 AEG-S12-07 S12 W25-26 VS-23 Execution CAPABILITY KIS Capability OFF 및 대사 adapter stub, capability tests 외부 주문 호출 0, partial/duplicate/out-of-order fill break 생성 BE/Ops Security/Compliance 10 AEG-S11-06 SOURCE+DESIGN_PROPOSAL Pilot-A P0 PLANNED
34 AEG-S13-01 S13 W27-28 VS-25 Security/DR/UAT GOV 보안·kill-switch·DR·UAT 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S12-DONE SOURCE+DESIGN_PROPOSAL G5 P0 PLANNED
35 AEG-S13-02 S13 W27-28 VS-25 Security/DR/UAT DATA 보안·kill-switch·DR·UAT 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S12-DONE SOURCE+DESIGN_PROPOSAL G5 P0 PLANNED
36 AEG-S13-03 S13 W27-28 VS-25 Security/DR/UAT BE 보안·kill-switch·DR·UAT Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S12-DONE SOURCE+DESIGN_PROPOSAL G5 P0 PLANNED
37 AEG-S13-04 S13 W27-28 VS-25 Security/DR/UAT FE 보안·kill-switch·DR·UAT 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S12-DONE SOURCE+DESIGN_PROPOSAL G5 P1 PLANNED
38 AEG-S13-05 S13 W27-28 VS-25 Security/DR/UAT TEST 보안·kill-switch·DR·UAT 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S12-DONE SOURCE+DESIGN_PROPOSAL G5 P0 PLANNED
39 AEG-S13-06 S13 W27-28 VS-25 Security/DR/UAT OPS 보안·kill-switch·DR·UAT 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S12-DONE SOURCE+DESIGN_PROPOSAL G5 P1 PLANNED
40 AEG-S14-01 S14 W29-30 Cross Performance/Cutover GOV SLA·backfill·전환리허설 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S13-DONE SOURCE+DESIGN_PROPOSAL G6-A P0 PLANNED
41 AEG-S14-02 S14 W29-30 Cross Performance/Cutover DATA SLA·backfill·전환리허설 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S13-DONE SOURCE+DESIGN_PROPOSAL G6-A P0 PLANNED
42 AEG-S14-03 S14 W29-30 Cross Performance/Cutover BE SLA·backfill·전환리허설 Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S13-DONE SOURCE+DESIGN_PROPOSAL G6-A P0 PLANNED
43 AEG-S14-04 S14 W29-30 Cross Performance/Cutover FE SLA·backfill·전환리허설 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S13-DONE SOURCE+DESIGN_PROPOSAL G6-A P1 PLANNED
44 AEG-S14-05 S14 W29-30 Cross Performance/Cutover TEST SLA·backfill·전환리허설 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S13-DONE SOURCE+DESIGN_PROPOSAL G6-A P0 PLANNED
45 AEG-S14-06 S14 W29-30 Cross Performance/Cutover OPS SLA·backfill·전환리허설 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S13-DONE SOURCE+DESIGN_PROPOSAL G6-A P1 PLANNED
46 AEG-S15-01 S15 W31-32 Cross Go-Live/Hypercare GOV 자문형 전환·초기안정화 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S14-DONE SOURCE+DESIGN_PROPOSAL G6 P0 PLANNED
47 AEG-S15-02 S15 W31-32 Cross Go-Live/Hypercare DATA 자문형 전환·초기안정화 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S14-DONE SOURCE+DESIGN_PROPOSAL G6 P0 PLANNED
48 AEG-S15-03 S15 W31-32 Cross Go-Live/Hypercare BE 자문형 전환·초기안정화 Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S14-DONE SOURCE+DESIGN_PROPOSAL G6 P0 PLANNED
49 AEG-S15-04 S15 W31-32 Cross Go-Live/Hypercare FE 자문형 전환·초기안정화 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S14-DONE SOURCE+DESIGN_PROPOSAL G6 P1 PLANNED
50 AEG-S15-05 S15 W31-32 Cross Go-Live/Hypercare TEST 자문형 전환·초기안정화 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S14-DONE SOURCE+DESIGN_PROPOSAL G6 P0 PLANNED
51 AEG-S15-06 S15 W31-32 Cross Go-Live/Hypercare OPS 자문형 전환·초기안정화 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S14-DONE SOURCE+DESIGN_PROPOSAL G6 P1 PLANNED
52 AEG-S2-01 S2 W5-6 VS-03/04 MarketData GOV PIT 시세·기업행사·총수익·DQ 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S1-DONE SOURCE+DESIGN_PROPOSAL G1-B P0 PLANNED
53 AEG-S2-02 S2 W5-6 VS-03/04 MarketData DATA PIT 시세·기업행사·총수익·DQ 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S1-DONE SOURCE+DESIGN_PROPOSAL G1-B P0 PLANNED
54 AEG-S2-03 S2 W5-6 VS-03/04 MarketData BE PIT 시세·기업행사·총수익·DQ Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S1-DONE SOURCE+DESIGN_PROPOSAL G1-B P0 PLANNED
55 AEG-S2-04 S2 W5-6 VS-03/04 MarketData FE PIT 시세·기업행사·총수익·DQ 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S1-DONE SOURCE+DESIGN_PROPOSAL G1-B P1 PLANNED
56 AEG-S2-05 S2 W5-6 VS-03/04 MarketData TEST PIT 시세·기업행사·총수익·DQ 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S1-DONE SOURCE+DESIGN_PROPOSAL G1-B P0 PLANNED
57 AEG-S2-06 S2 W5-6 VS-03/04 MarketData OPS PIT 시세·기업행사·총수익·DQ 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S1-DONE SOURCE+DESIGN_PROPOSAL G1-B P1 PLANNED
58 AEG-S2-07 S2 W5-6 VS-03/04 MarketData GOLDEN 기업행사·상폐·총수익 Golden Golden fixtures, replay report 삼성전자/하이닉스/JYP/AAMRQ 포함 회귀 통과 Data/Quant QA 8 AEG-S1-02 SOURCE+DESIGN_PROPOSAL G1-B P0 PLANNED
59 AEG-S3-01 S3 W7-8 VS-05/06/08 Fundamentals/Cost/Ledger GOV OPENDART·비용·원장 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S2-DONE SOURCE+DESIGN_PROPOSAL G1 P0 PLANNED
60 AEG-S3-02 S3 W7-8 VS-05/06/08 Fundamentals/Cost/Ledger DATA OPENDART·비용·원장 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S2-DONE SOURCE+DESIGN_PROPOSAL G1 P0 PLANNED
61 AEG-S3-03 S3 W7-8 VS-05/06/08 Fundamentals/Cost/Ledger BE OPENDART·비용·원장 Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S2-DONE SOURCE+DESIGN_PROPOSAL G1 P0 PLANNED
62 AEG-S3-04 S3 W7-8 VS-05/06/08 Fundamentals/Cost/Ledger FE OPENDART·비용·원장 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S2-DONE SOURCE+DESIGN_PROPOSAL G1 P1 PLANNED
63 AEG-S3-05 S3 W7-8 VS-05/06/08 Fundamentals/Cost/Ledger TEST OPENDART·비용·원장 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S2-DONE SOURCE+DESIGN_PROPOSAL G1 P0 PLANNED
64 AEG-S3-06 S3 W7-8 VS-05/06/08 Fundamentals/Cost/Ledger OPS OPENDART·비용·원장 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S2-DONE SOURCE+DESIGN_PROPOSAL G1 P1 PLANNED
65 AEG-S4-01 S4 W9-10 VS-09/10 Evidence/Sell GOV EvidenceSnapshot·Sell Policy Chain 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S3-DONE SOURCE+DESIGN_PROPOSAL G2-A P0 PLANNED
66 AEG-S4-02 S4 W9-10 VS-09/10 Evidence/Sell DATA EvidenceSnapshot·Sell Policy Chain 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S3-DONE SOURCE+DESIGN_PROPOSAL G2-A P0 PLANNED
67 AEG-S4-03 S4 W9-10 VS-09/10 Evidence/Sell BE EvidenceSnapshot·Sell Policy Chain Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S3-DONE SOURCE+DESIGN_PROPOSAL G2-A P0 PLANNED
68 AEG-S4-04 S4 W9-10 VS-09/10 Evidence/Sell FE EvidenceSnapshot·Sell Policy Chain 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S3-DONE SOURCE+DESIGN_PROPOSAL G2-A P1 PLANNED
69 AEG-S4-05 S4 W9-10 VS-09/10 Evidence/Sell TEST EvidenceSnapshot·Sell Policy Chain 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S3-DONE SOURCE+DESIGN_PROPOSAL G2-A P0 PLANNED
70 AEG-S4-06 S4 W9-10 VS-09/10 Evidence/Sell OPS EvidenceSnapshot·Sell Policy Chain 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S3-DONE SOURCE+DESIGN_PROPOSAL G2-A P1 PLANNED
71 AEG-S4-07 S4 W9-10 VS-10 SignalEngine POLICY 6개 Sell Policy와 단위계약 Policy IDs, Golden vectors 우선순위·core floor·lot ratio/weight 불변조건 통과 Quant/BE Risk/QA 10 AEG-S3-02 SOURCE+DESIGN_PROPOSAL G2-A P0 PLANNED
72 AEG-S5-01 S5 W11-12 VS-11/19 Reentry/Backtest GOV 재진입·동결 OOS·Golden 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S4-DONE SOURCE+DESIGN_PROPOSAL G2 P0 PLANNED
73 AEG-S5-02 S5 W11-12 VS-11/19 Reentry/Backtest DATA 재진입·동결 OOS·Golden 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S4-DONE SOURCE+DESIGN_PROPOSAL G2 P0 PLANNED
74 AEG-S5-03 S5 W11-12 VS-11/19 Reentry/Backtest BE 재진입·동결 OOS·Golden Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S4-DONE SOURCE+DESIGN_PROPOSAL G2 P0 PLANNED
75 AEG-S5-04 S5 W11-12 VS-11/19 Reentry/Backtest FE 재진입·동결 OOS·Golden 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S4-DONE SOURCE+DESIGN_PROPOSAL G2 P1 PLANNED
76 AEG-S5-05 S5 W11-12 VS-11/19 Reentry/Backtest TEST 재진입·동결 OOS·Golden 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S4-DONE SOURCE+DESIGN_PROPOSAL G2 P0 PLANNED
77 AEG-S5-06 S5 W11-12 VS-11/19 Reentry/Backtest OPS 재진입·동결 OOS·Golden 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S4-DONE SOURCE+DESIGN_PROPOSAL G2 P1 PLANNED
78 AEG-S5-07 S5 W11-12 VS-11 SignalEngine REENTRY ReentryWatch 다단계 상태기계 state transition tests 10세션/20고점/50일선/추가조건/126일 만료 통과 Quant/BE QA 8 AEG-S4-07 SOURCE+DESIGN_PROPOSAL G2 P0 PLANNED
79 AEG-S6-01 S6 W13-14 VS-07/08 Client/Portfolio GOV 고객·IPS·계좌·보유·수익률 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S5-DONE SOURCE+DESIGN_PROPOSAL MVP-A P0 PLANNED
80 AEG-S6-02 S6 W13-14 VS-07/08 Client/Portfolio DATA 고객·IPS·계좌·보유·수익률 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S5-DONE SOURCE+DESIGN_PROPOSAL MVP-A P0 PLANNED
81 AEG-S6-03 S6 W13-14 VS-07/08 Client/Portfolio BE 고객·IPS·계좌·보유·수익률 Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S5-DONE SOURCE+DESIGN_PROPOSAL MVP-A P0 PLANNED
82 AEG-S6-04 S6 W13-14 VS-07/08 Client/Portfolio FE 고객·IPS·계좌·보유·수익률 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S5-DONE SOURCE+DESIGN_PROPOSAL MVP-A P1 PLANNED
83 AEG-S6-05 S6 W13-14 VS-07/08 Client/Portfolio TEST 고객·IPS·계좌·보유·수익률 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S5-DONE SOURCE+DESIGN_PROPOSAL MVP-A P0 PLANNED
84 AEG-S6-06 S6 W13-14 VS-07/08 Client/Portfolio OPS 고객·IPS·계좌·보유·수익률 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S5-DONE SOURCE+DESIGN_PROPOSAL MVP-A P1 PLANNED
85 AEG-S7-01 S7 W15-16 VS-14/15 Recommendation/Review GOV 추천 생성·maker-checker 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S6-DONE SOURCE+DESIGN_PROPOSAL MVP-B P0 PLANNED
86 AEG-S7-02 S7 W15-16 VS-14/15 Recommendation/Review DATA 추천 생성·maker-checker 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S6-DONE SOURCE+DESIGN_PROPOSAL MVP-B P0 PLANNED
87 AEG-S7-03 S7 W15-16 VS-14/15 Recommendation/Review BE 추천 생성·maker-checker Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S6-DONE SOURCE+DESIGN_PROPOSAL MVP-B P0 PLANNED
88 AEG-S7-04 S7 W15-16 VS-14/15 Recommendation/Review FE 추천 생성·maker-checker 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S6-DONE SOURCE+DESIGN_PROPOSAL MVP-B P1 PLANNED
89 AEG-S7-05 S7 W15-16 VS-14/15 Recommendation/Review TEST 추천 생성·maker-checker 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S6-DONE SOURCE+DESIGN_PROPOSAL MVP-B P0 PLANNED
90 AEG-S7-06 S7 W15-16 VS-14/15 Recommendation/Review OPS 추천 생성·maker-checker 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S6-DONE SOURCE+DESIGN_PROPOSAL MVP-B P1 PLANNED
91 AEG-S8-01 S8 W17-18 VS-16/17/18 Publish/Outcome GOV 고객공개·행동·사후평가·감사 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S7-DONE SOURCE+DESIGN_PROPOSAL G3 P0 PLANNED
92 AEG-S8-02 S8 W17-18 VS-16/17/18 Publish/Outcome DATA 고객공개·행동·사후평가·감사 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S7-DONE SOURCE+DESIGN_PROPOSAL G3 P0 PLANNED
93 AEG-S8-03 S8 W17-18 VS-16/17/18 Publish/Outcome BE 고객공개·행동·사후평가·감사 Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S7-DONE SOURCE+DESIGN_PROPOSAL G3 P0 PLANNED
94 AEG-S8-04 S8 W17-18 VS-16/17/18 Publish/Outcome FE 고객공개·행동·사후평가·감사 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S7-DONE SOURCE+DESIGN_PROPOSAL G3 P1 PLANNED
95 AEG-S8-05 S8 W17-18 VS-16/17/18 Publish/Outcome TEST 고객공개·행동·사후평가·감사 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S7-DONE SOURCE+DESIGN_PROPOSAL G3 P0 PLANNED
96 AEG-S8-06 S8 W17-18 VS-16/17/18 Publish/Outcome OPS 고객공개·행동·사후평가·감사 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S7-DONE SOURCE+DESIGN_PROPOSAL G3 P1 PLANNED
97 AEG-S8-07 S8 W17-18 VS-16/18 Advisory/Evaluation AUDIT Evidence→Decision→Review→Publish→Outcome 추적 audit trace endpoint/test publicationId 기준 100% E2E trace BE/QA Compliance/Audit 8 AEG-S7-03 SOURCE+DESIGN_PROPOSAL G3 P0 PLANNED
98 AEG-S9-01 S9 W19-20 VS-13/21 Risk/Rebalance GOV ES·집중·상관·리밸런싱 요구사항·정책·Decision Log 확정 docs/SLICE_SPEC, TRACEABILITY, ADR 승인자·비목표·실패상태·Source 상태가 명시됨 PM/Architect Compliance/Quant 3 S8-DONE SOURCE+DESIGN_PROPOSAL Portfolio-A P0 PLANNED
99 AEG-S9-02 S9 W19-20 VS-13/21 Risk/Rebalance DATA ES·집중·상관·리밸런싱 데이터 계약·PIT·DQ·lineage 구현 DB migration, source contract, DQ rules published_at/revision/hash/watermark와 quarantine 경로 통과 Data/DBA Quant/QA 6 S8-DONE SOURCE+DESIGN_PROPOSAL Portfolio-A P0 PLANNED
100 AEG-S9-03 S9 W19-20 VS-13/21 Risk/Rebalance BE ES·집중·상관·리밸런싱 Vertical Slice Backend 구현 Endpoint, Validator, Application, Policy, Dapper SQL, Outbox 멱등·트랜잭션·불변조건·ProblemDetails·trace 통과 BE Lead Architect/QA 8 S8-DONE SOURCE+DESIGN_PROPOSAL Portfolio-A P0 PLANNED
101 AEG-S9-04 S9 W19-20 VS-13/21 Risk/Rebalance FE ES·집중·상관·리밸런싱 화면·컴포넌트·상태 계약 구현 Vue route, Zod, Query, components loading/empty/warn/error/401/403/409/expired와 접근성 통과 FE Lead UX/QA 6 S8-DONE SOURCE+DESIGN_PROPOSAL Portfolio-A P1 PLANNED
102 AEG-S9-05 S9 W19-20 VS-13/21 Risk/Rebalance TEST ES·집중·상관·리밸런싱 자동화 테스트와 Golden/Regression xUnit, Vitest, Playwright, Data/Architecture tests Given/When/Then, boundary, replay, failure path 자동화 QA Lead Quant/BE/FE 6 S8-DONE SOURCE+DESIGN_PROPOSAL Portfolio-A P0 PLANNED
103 AEG-S9-06 S9 W19-20 VS-13/21 Risk/Rebalance OPS ES·집중·상관·리밸런싱 관제·Job·Runbook·Rollback OTel metric/alert, Hangfire job, runbook Owner/Secondary, SLA, retry/reprocess, rollback rehearsal SRE/Ops Security/PM 4 S8-DONE SOURCE+DESIGN_PROPOSAL Portfolio-A P1 PLANNED
+21
View File
@@ -0,0 +1,21 @@
ID,Category,Priority,Debt,Impact,Repayment_Action,Owner,Trigger/Gate,Status
TD-001,Safety,P0,FE lockfile 없음,재현 불가능,G0 전 pnpm-lock 생성·review·commit,DevOps,G0,OPEN
TD-002,Safety,P0,.NET build 미검증,컴파일 결함 가능,승인 환경에서 restore/build/test,BE Lead,G0,OPEN
TD-003,Integrity,P0,PostgreSQL migration rehearsal 미실행,fresh/upgrade 실패 가능,fresh/upgrade/re-run/failure 복구,DBA,G0,OPEN
TD-004,Integrity,P0,원시 연구 데이터 미포함/권리 미확정,clean-room 재현 불가,Source catalog·license·checksum 확보,Data Owner,G1,OPEN
TD-005,Integrity,P0,KR 검증 종료 2021-04-16,최근 국면 검증 공백,PIT 데이터 보충 후 frozen OOS,Quant/Data,G4,OPEN
TD-006,Safety,P0,실제 Auth provider 미결정,생산 접근통제 불가,OIDC/JWT ADR와 E2E,Security,G5,OPEN
TD-007,Integrity,P0,총수익·상폐수익 공급원 미확정,생존편향/성과왜곡,상용/공식 source 계약,Data Owner,G1,OPEN
TD-008,Integrity,P0,Fee/Tax/FX PIT 표 미확정,비용후 효용 오류,valid_from/to schedule 승인,Quant/Compliance,G1,OPEN
TD-009,Delivery,P1,Outbox publisher/Inbox consumer 미완성,비동기 side effect 누락/중복,lease/dead-letter/replay 구현,BE/SRE,G3,OPEN
TD-010,Delivery,P1,Hangfire JobRun 표준 미완성,재처리·감사 취약,JobRunId/Scope/Watermark/hash 공통화,BE/SRE,G1,OPEN
TD-011,Integrity,P1,Architecture test가 일부 문자열 기반,의존 위반 누락,csproj/namespace/schema 검사 확대,Architect,G0,IN_PROGRESS
TD-012,Delivery,P1,OpenAPI DTO generation 미도입,BE/FE 계약 drift,OpenAPI artifact와 CI diff,BE/FE,G3,OPEN
TD-013,Safety,P1,PII masking test 미완성,로그/Telegram 노출,redaction policy+security tests,Security/SRE,G5,OPEN
TD-014,Integrity,P1,Model promotion workflow 미구현,무단 모델 활성화,maker-checker/model card/rollback,Governance,G4,OPEN
TD-015,Integrity,P1,Read Model rebuild 도구 미구현,stale projection 복구 불가,projection version/watermark/rebuild command,BE/Data,G3,OPEN
TD-016,Delivery,P1,SLO/RPO/RTO 미확정,운영 준비도 판단 불가,용량시험·DR ADR,SRE/Ops,G5,OPEN
TD-017,Convenience,P2,공통 DataGridShell 미구현,화면 중복,3회 이상 반복 확인 후 승격,FE Lead,S10,OPEN
TD-018,Integrity,P1,PBO/DSR 전체 탐색 미완료,과최적화 위험,모든 시도 원장+CSCV/DSR,Quant,G4,OPEN
TD-019,Integrity,P1,Reentry asset confirmation provider 미구현,재진입 품질 저하,자산유형 contract와 PIT source,Quant/Data,G2,OPEN
TD-020,Safety,P0,자동주문 기능은 금지 상태,오활성화 위험,Options ValidateOnStart+CI config scan 유지,Security/Compliance,ALL,MITIGATED
1 ID Category Priority Debt Impact Repayment_Action Owner Trigger/Gate Status
2 TD-001 Safety P0 FE lockfile 없음 재현 불가능 G0 전 pnpm-lock 생성·review·commit DevOps G0 OPEN
3 TD-002 Safety P0 .NET build 미검증 컴파일 결함 가능 승인 환경에서 restore/build/test BE Lead G0 OPEN
4 TD-003 Integrity P0 PostgreSQL migration rehearsal 미실행 fresh/upgrade 실패 가능 fresh/upgrade/re-run/failure 복구 DBA G0 OPEN
5 TD-004 Integrity P0 원시 연구 데이터 미포함/권리 미확정 clean-room 재현 불가 Source catalog·license·checksum 확보 Data Owner G1 OPEN
6 TD-005 Integrity P0 KR 검증 종료 2021-04-16 최근 국면 검증 공백 PIT 데이터 보충 후 frozen OOS Quant/Data G4 OPEN
7 TD-006 Safety P0 실제 Auth provider 미결정 생산 접근통제 불가 OIDC/JWT ADR와 E2E Security G5 OPEN
8 TD-007 Integrity P0 총수익·상폐수익 공급원 미확정 생존편향/성과왜곡 상용/공식 source 계약 Data Owner G1 OPEN
9 TD-008 Integrity P0 Fee/Tax/FX PIT 표 미확정 비용후 효용 오류 valid_from/to schedule 승인 Quant/Compliance G1 OPEN
10 TD-009 Delivery P1 Outbox publisher/Inbox consumer 미완성 비동기 side effect 누락/중복 lease/dead-letter/replay 구현 BE/SRE G3 OPEN
11 TD-010 Delivery P1 Hangfire JobRun 표준 미완성 재처리·감사 취약 JobRunId/Scope/Watermark/hash 공통화 BE/SRE G1 OPEN
12 TD-011 Integrity P1 Architecture test가 일부 문자열 기반 의존 위반 누락 csproj/namespace/schema 검사 확대 Architect G0 IN_PROGRESS
13 TD-012 Delivery P1 OpenAPI DTO generation 미도입 BE/FE 계약 drift OpenAPI artifact와 CI diff BE/FE G3 OPEN
14 TD-013 Safety P1 PII masking test 미완성 로그/Telegram 노출 redaction policy+security tests Security/SRE G5 OPEN
15 TD-014 Integrity P1 Model promotion workflow 미구현 무단 모델 활성화 maker-checker/model card/rollback Governance G4 OPEN
16 TD-015 Integrity P1 Read Model rebuild 도구 미구현 stale projection 복구 불가 projection version/watermark/rebuild command BE/Data G3 OPEN
17 TD-016 Delivery P1 SLO/RPO/RTO 미확정 운영 준비도 판단 불가 용량시험·DR ADR SRE/Ops G5 OPEN
18 TD-017 Convenience P2 공통 DataGridShell 미구현 화면 중복 3회 이상 반복 확인 후 승격 FE Lead S10 OPEN
19 TD-018 Integrity P1 PBO/DSR 전체 탐색 미완료 과최적화 위험 모든 시도 원장+CSCV/DSR Quant G4 OPEN
20 TD-019 Integrity P1 Reentry asset confirmation provider 미구현 재진입 품질 저하 자산유형 contract와 PIT source Quant/Data G2 OPEN
21 TD-020 Safety P0 자동주문 기능은 금지 상태 오활성화 위험 Options ValidateOnStart+CI config scan 유지 Security/Compliance ALL MITIGATED
+19
View File
@@ -0,0 +1,19 @@
Requirement_ID,Requirement,Evidence_Status,Policy_or_Contract,Code,DB_or_Artifact,Test_ID,Gate
REQ-001,투자자문형 우선·자동주문 OFF,SOURCE,CAP-ORDER-OFF,Capabilities options,Host startup validation,TC-CAP-001,G0
REQ-002,Hard impairment 최우선,SOURCE,ALG-SELL-001,HardImpairmentPolicy,signal_decision,TC-SELL-001,G2
REQ-003,Portfolio survival 2순위,SOURCE,ALG-SELL-PORT-001,PortfolioSurvivalPolicy,signal_decision,TC-SELL-002,G2
REQ-004,Gap 1.5 ATR 부분매도,SOURCE,ALG-SELL-002,GapFloorBreachPolicy,signal_decision,TC-SELL-003,G2
REQ-005,2종가 보호선 이탈,SOURCE,ALG-SELL-003,TwoCloseFloorBreachPolicy,signal_decision,TC-SELL-004,G2
REQ-006,집중/유동성 축소,SOURCE,ALG-SELL-004,ConcentrationLiquidityPolicy,signal_decision,TC-SELL-005,G2
REQ-007,기회비용 신뢰하단>0,SOURCE,ALG-SELL-005,OpportunityCostPolicy,signal_decision,TC-SELL-006,G2
REQ-008,Lot 비율과 포트폴리오 비중 분리,DESIGN_PROPOSAL,DATA-UNIT-001,SellDecisionInput/Decision,0012 migration,TC-UNIT-001,G2
REQ-009,PIT published_at,SOURCE,DQ-01,ContextReader,sell_decision_context,TC-PIT-001,G1
REQ-010,Evidence Version Set,SOURCE,EVID-001,SellDecisionService,signal_decision,TC-EVID-001,G2
REQ-011,Idempotency+Outbox,SOURCE,REL-001,SellDecisionService,outbox_message,TC-OUT-001,G2
REQ-012,Reentry 최소 10세션,SOURCE,ALG-REENTRY-001,ReentryStateMachine,reentry_watch/stage,TC-RE-001,G2
REQ-013,Research/production endpoint 분리,DESIGN_PROPOSAL,API-BOUNDARY-001,EvaluateResearch/GenerateSell,N/A,TC-API-001,G0
REQ-014,Fail-closed 인증,SOURCE,SEC-001,Host Security,N/A,TC-AUTH-001,G0
REQ-015,FE runtime contract,DESIGN_PROPOSAL,FE-CONTRACT-001,Zod schema/api,N/A,TC-FE-001,G3
REQ-016,Immutable Decision/Audit,SOURCE,AUD-001,DB trigger,0011/0012,TC-AUD-001,G2
REQ-017,252일 Shadow 복수국면,SOURCE,GATE-SHADOW-001,Evaluation module,outcome/scorecard,TC-SHD-001,G4
REQ-018,PBO/DSR/비용2배,SOURCE,GATE-MODEL-001,Backtesting,backtest artifact,TC-BKT-001,G4
1 Requirement_ID Requirement Evidence_Status Policy_or_Contract Code DB_or_Artifact Test_ID Gate
2 REQ-001 투자자문형 우선·자동주문 OFF SOURCE CAP-ORDER-OFF Capabilities options Host startup validation TC-CAP-001 G0
3 REQ-002 Hard impairment 최우선 SOURCE ALG-SELL-001 HardImpairmentPolicy signal_decision TC-SELL-001 G2
4 REQ-003 Portfolio survival 2순위 SOURCE ALG-SELL-PORT-001 PortfolioSurvivalPolicy signal_decision TC-SELL-002 G2
5 REQ-004 Gap 1.5 ATR 부분매도 SOURCE ALG-SELL-002 GapFloorBreachPolicy signal_decision TC-SELL-003 G2
6 REQ-005 2종가 보호선 이탈 SOURCE ALG-SELL-003 TwoCloseFloorBreachPolicy signal_decision TC-SELL-004 G2
7 REQ-006 집중/유동성 축소 SOURCE ALG-SELL-004 ConcentrationLiquidityPolicy signal_decision TC-SELL-005 G2
8 REQ-007 기회비용 신뢰하단>0 SOURCE ALG-SELL-005 OpportunityCostPolicy signal_decision TC-SELL-006 G2
9 REQ-008 Lot 비율과 포트폴리오 비중 분리 DESIGN_PROPOSAL DATA-UNIT-001 SellDecisionInput/Decision 0012 migration TC-UNIT-001 G2
10 REQ-009 PIT published_at SOURCE DQ-01 ContextReader sell_decision_context TC-PIT-001 G1
11 REQ-010 Evidence Version Set SOURCE EVID-001 SellDecisionService signal_decision TC-EVID-001 G2
12 REQ-011 Idempotency+Outbox SOURCE REL-001 SellDecisionService outbox_message TC-OUT-001 G2
13 REQ-012 Reentry 최소 10세션 SOURCE ALG-REENTRY-001 ReentryStateMachine reentry_watch/stage TC-RE-001 G2
14 REQ-013 Research/production endpoint 분리 DESIGN_PROPOSAL API-BOUNDARY-001 EvaluateResearch/GenerateSell N/A TC-API-001 G0
15 REQ-014 Fail-closed 인증 SOURCE SEC-001 Host Security N/A TC-AUTH-001 G0
16 REQ-015 FE runtime contract DESIGN_PROPOSAL FE-CONTRACT-001 Zod schema/api N/A TC-FE-001 G3
17 REQ-016 Immutable Decision/Audit SOURCE AUD-001 DB trigger 0011/0012 TC-AUD-001 G2
18 REQ-017 252일 Shadow 복수국면 SOURCE GATE-SHADOW-001 Evaluation module outcome/scorecard TC-SHD-001 G4
19 REQ-018 PBO/DSR/비용2배 SOURCE GATE-MODEL-001 Backtesting backtest artifact TC-BKT-001 G4
+8
View File
@@ -0,0 +1,8 @@
Decision_ID,Decision_Required,Status,Owner,Due_Gate,Blocked_Action
DEC-001,상용 총수익·상폐·컨센서스 공급계약,OPEN,Data Owner/Compliance,G1,생산 성과 주장 금지
DEC-002,OIDC/JWT 인증 공급자와 role mapping,OPEN,Security/Architect,G5,외부 Pilot 금지
DEC-003,Fee/Tax/FX valid-time schedule,OPEN,Quant/Compliance,G1,현재 단일 비용값 금지
DEC-004,고객군별 IPS·적합성 문구,OPEN,Product/Compliance,G3,고객 공개 금지
DEC-005,SLO/RPO/RTO/DR topology,OPEN,SRE/Ops,G5,Go-Live 금지
DEC-006,KIS 시장·계좌·부분체결 Capability,OPEN,Execution/Compliance,Pilot-A,KIS submit 금지
DEC-007,pnpm lockfile 최종 dependency set,OPEN,FE/DevOps,G0,frozen CI 금지
1 Decision_ID Decision_Required Status Owner Due_Gate Blocked_Action
2 DEC-001 상용 총수익·상폐·컨센서스 공급계약 OPEN Data Owner/Compliance G1 생산 성과 주장 금지
3 DEC-002 OIDC/JWT 인증 공급자와 role mapping OPEN Security/Architect G5 외부 Pilot 금지
4 DEC-003 Fee/Tax/FX valid-time schedule OPEN Quant/Compliance G1 현재 단일 비용값 금지
5 DEC-004 고객군별 IPS·적합성 문구 OPEN Product/Compliance G3 고객 공개 금지
6 DEC-005 SLO/RPO/RTO/DR topology OPEN SRE/Ops G5 Go-Live 금지
7 DEC-006 KIS 시장·계좌·부분체결 Capability OPEN Execution/Compliance Pilot-A KIS submit 금지
8 DEC-007 pnpm lockfile 최종 dependency set OPEN FE/DevOps G0 frozen CI 금지
+12
View File
@@ -0,0 +1,12 @@
# 20영업일 재착수 계획
| 기간 | 작업 | 완료 증거 |
|---|---|---|
| D1~D3 | 첨부 기준선 승인, Coverage Matrix, Decision Log, 자동주문 OFF | Steering sign-off |
| D4~D6 | SDK/pnpm/lockfile, secret/env, Gitea CI, static validation | CI bootstrap green |
| D7~D10 | DbUp fresh/upgrade/re-run, Outbox/Inbox, Auth fail-closed, Architecture tests | G0 통과 |
| D11~D14 | SecurityMaster/MarketData/PIT/CorporateAction/DQ Critical Path | replay hash 동일, lookahead 0 |
| D15~D17 | Evidence/Decision/Policy/Reentry Golden과 DB invariant | G2-A 통과 |
| D18~D20 | 연구 콘솔과 생산형 Decision Slice contract/E2E, OTel trace | 첫 Vertical Slice Done |
20일 안에 전체 제품을 만들지 않는다. 첫 Slice를 완전하게 통과시켜 이후 반복 가능한 패턴을 만드는 것이 목표다.
+46
View File
@@ -0,0 +1,46 @@
# 기본 템플릿 사용법
## 1. 사전 준비
- .NET SDK 10.0.100 이상.
- Node.js 22.
- pnpm 10.
- PostgreSQL 17.
현재 패키지에는 registry 접근이 불가능한 환경에서 생성되었으므로 `pnpm-lock.yaml`이 없다. 네트워크가 가능한 승인 환경에서 한 번 생성하고 dependency review 후 커밋한다.
## 2. 실행 순서
```bash
cp frontend/.env.example frontend/.env.local
docker compose up -d postgres
dotnet restore KArtSell.sln
dotnet run --project src/KArtSell.DbMigrator
dotnet test KArtSell.sln
dotnet run --project src/KArtSell.Host
cd frontend
pnpm install
pnpm typecheck
pnpm test
pnpm build
pnpm dev
```
Development 연구 Endpoint 호출 시 `X-KArtSell-User`, `X-KArtSell-Role=Quant`가 필요하다. Frontend는 `.env.local` 값이 있을 때 개발 환경에서만 해당 Header를 추가한다.
## 3. 생산 전 필수 교체
- DevelopmentHeader 인증을 승인된 OIDC/JWT 공급자로 교체.
- Connection string과 secret를 vault/secret store로 이동.
- OTLP endpoint, Telegram alert, SLO/Runbook 설정.
- Source adapter 계약과 라이선스 승인.
- pnpm lockfile과 Software Bill of Materials.
## 4. 금지
- `Capabilities:AutomaticOrder=true`.
- `Capabilities:KisOrderAdapter=true`.
- 실계좌/실주문 credential 저장.
- Research Endpoint를 고객 화면에서 호출.
+6
View File
@@ -0,0 +1,6 @@
Version/Source,Role,Coverage,Evidence,Status
v10.0,Baseline,"47개 장, 26 Slice, 16 Sprint, Gate",원본 DOCX 포함,RETAINED
12.2 Research,Research Evidence,정량결과·코드·CSV·구성안,원본 ZIP/압축해제 포함,RETAINED
v11,Implementation Skeleton,.NET/Vue 최초 템플릿,원본 ZIP/압축해제 포함,RETAINED
v11.1,Hardening Delta,보안·불변·WBS·기술부채,원본 ZIP/압축해제 포함,RETAINED
v12.0,Integrated Delta,정책단위·서버 Evidence·FailClosed·WBS,본 패키지,IMPROVED
1 Version/Source Role Coverage Evidence Status
2 v10.0 Baseline 47개 장, 26 Slice, 16 Sprint, Gate 원본 DOCX 포함 RETAINED
3 12.2 Research Research Evidence 정량결과·코드·CSV·구성안 원본 ZIP/압축해제 포함 RETAINED
4 v11 Implementation Skeleton .NET/Vue 최초 템플릿 원본 ZIP/압축해제 포함 RETAINED
5 v11.1 Hardening Delta 보안·불변·WBS·기술부채 원본 ZIP/압축해제 포함 RETAINED
6 v12.0 Integrated Delta 정책단위·서버 Evidence·FailClosed·WBS 본 패키지 IMPROVED
@@ -0,0 +1,43 @@
# K-ArtSell Aegis v12.1 실행준비 고도화 제안
상태: `IMPLEMENTATION_TEMPLATE / STATIC_VALIDATED / BUILD_AND_DB_REHEARSAL_REQUIRED`
운영 경계: **투자자문형 우선 · RESEARCH_CANDIDATE_NOT_PRODUCTION · 자동주문/KIS 제출 OFF**
## 1. 경영진 결론
v12.1은 기존 문서를 다시 쓰는 요약본이 아니다. v10.0의 `Baseline Preservation + Delta + Supersession + Traceability`를 유지하고, K-ArtSell 12.2 연구근거, v11 구현 골격, v11.1 하드닝, v12.0 통합 패키지 위에 **실행준비도 Delta**를 추가한다.
핵심은 기능 수가 아니라 다음 Critical Path의 완결성이다.
`Source/License → PIT/Revision/DQ → Evidence/Version Set → Sell/Reentry Policy → Recommendation → Maker-Checker → Publish → Outcome → Reconciliation/DR`
대시보드나 상품탐색을 앞당겨도 이 경로가 끊기면 생산준비도는 올라가지 않는다.
## 2. v12.1에서 보강한 것
- 현재 세션 첨부파일 **8개를 원본 그대로 보존**하고 SHA-256·중복그룹을 기록했다.
- 26개 Vertical Slice를 Requirement/API/DB/Job/UI/Test/Gate에 연결했다.
- 상세 WBS를 **202개 실행 작업**으로 재구성했다. 각 행은 산출물·수용증거·Owner·의존성·Gate·PD를 가진다.
- Generic Repository/God Service/조기 microservice/현재값 overwrite/무승인 자동 추상화를 금지한다.
- Outbox/Inbox, JobRun, Projection checkpoint, PIT/DQ, immutable audit의 기본 템플릿을 보강한다.
- FE는 TanStack Query=서버상태, Pinia=세션/권한/UI 선호, vee-validate+Zod=폼, vue-router=공유상태로 책임을 고정한다.
- 바이브코딩은 `SOURCE / ASSUMPTION / UNKNOWN / DECISION_REQUIRED`를 강제하고 실행하지 않은 검증은 통과로 기록하지 않는다.
## 3. 즉시 Go/No-Go
현재는 **코딩 착수용 템플릿은 Go, 생산/Shadow 승격은 No-Go**다.
Go 전 필수:
1. 승인 runner의 `.NET 10 restore/build/test`.
2. `pnpm-lock.yaml` 생성·검토 후 frozen install/typecheck/test/build.
3. PostgreSQL fresh/upgrade/re-run/failure migration rehearsal.
4. OIDC/JWT, 데이터 라이선스, Fee/Tax/FX, SLO/RPO/RTO 결정.
5. 252거래일·복수 국면 Shadow와 PBO/DSR/비용 2배 검증.
## 4. 과유불급 원칙
- 초기 배포는 Modular Monolith다. 실제 독립 배포·확장·장애 격리 요구가 증명되기 전 microservice로 분리하지 않는다.
- 동일 업무 의미와 변경축이 3회 이상 반복될 때만 공통 컴포넌트로 승격한다.
- 한 번 쓰는 Interface/Wrapper/Factory는 만들지 않는다.
- 정책 변경과 동작보존 리팩터링은 별도 PR로 분리한다.
- 정규화 Write Model과 역정규화 Read Model을 분리하며, Read Model에는 Owner/Version/Watermark/Rebuild/Staleness가 필수다.
+9
View File
@@ -0,0 +1,9 @@
Attachment,Bytes,SHA256,Duplicate_Group,Role,Treatment,Evidence_Status
K-ArtSell_12_2_complete_package(1).zip,2513047,1e9df605a91f227fb5ff4ea057e55f4319e62060fbaf8e64551756ee2931c5ea,-,연구 코드·CSV·정량 감사·구성안,원본 무변경 보존; v12.1은 Delta만 추가,SOURCE
K-ArtSell_Aegis_v12_통합고도화_실행제안서(1).docx,54732,62845eaf5382ed78e6b6065f3e95c4af9cd87f71bc418bf0077b68e727fce832,K-ArtSell_Aegis_v12_통합고도화_실행제안서(1).docx | K-ArtSell_Aegis_v12_통합고도화_실행제안서.docx,v12.0 실행제안서,원본 무변경 보존; v12.1은 Delta만 추가,SOURCE
K-ArtSell_Aegis_v12_통합고도화_실행제안서.docx,54732,62845eaf5382ed78e6b6065f3e95c4af9cd87f71bc418bf0077b68e727fce832,K-ArtSell_Aegis_v12_통합고도화_실행제안서(1).docx | K-ArtSell_Aegis_v12_통합고도화_실행제안서.docx,v12.0 실행제안서,원본 무변경 보존; v12.1은 Delta만 추가,SOURCE
K-ArtSell_퀀트투자자문_SI_본프로그램착수_누적고도화_통합실행기준서_v10.0(1).docx,402134,d86795186ec5f578741d64618eb53278a1c3a55795e73307e5bee245980a83a6,-,최상위 누적 실행기준서,원본 무변경 보존; v12.1은 Delta만 추가,SOURCE
KArtSell_Aegis_v11_1_hardening(1).zip,89397,01b3d3025dfb3a6cafcff4d751851240a6087c2329e5c1472ec31703f209ccbd,-,보안·불변성·기술부채 Delta,원본 무변경 보존; v12.1은 Delta만 추가,SOURCE
KArtSell_Aegis_v12_0_integrated_complete(1).zip,8493363,8ccc4403cdd0fcb2ddf7bdcdcd18719dbc22497fcecdaa0082a1c98b4cd82c04,KArtSell_Aegis_v12_0_integrated_complete(1).zip | KArtSell_Aegis_v12_0_integrated_complete.zip,v12.0 통합 구현 패키지,원본 무변경 보존; v12.1은 Delta만 추가,SOURCE
KArtSell_Aegis_v12_0_integrated_complete.zip,8493363,8ccc4403cdd0fcb2ddf7bdcdcd18719dbc22497fcecdaa0082a1c98b4cd82c04,KArtSell_Aegis_v12_0_integrated_complete(1).zip | KArtSell_Aegis_v12_0_integrated_complete.zip,v12.0 통합 구현 패키지,원본 무변경 보존; v12.1은 Delta만 추가,SOURCE
KArtSell_v11_implementation_acceleration(1).zip,56738,2bd5713b98104bf7ac45362105d9b3175d5ca818c06753e572aaf79a936658a2,-,최초 .NET/Vue 구현 골격,원본 무변경 보존; v12.1은 Delta만 추가,SOURCE
1 Attachment Bytes SHA256 Duplicate_Group Role Treatment Evidence_Status
2 K-ArtSell_12_2_complete_package(1).zip 2513047 1e9df605a91f227fb5ff4ea057e55f4319e62060fbaf8e64551756ee2931c5ea - 연구 코드·CSV·정량 감사·구성안 원본 무변경 보존; v12.1은 Delta만 추가 SOURCE
3 K-ArtSell_Aegis_v12_통합고도화_실행제안서(1).docx 54732 62845eaf5382ed78e6b6065f3e95c4af9cd87f71bc418bf0077b68e727fce832 K-ArtSell_Aegis_v12_통합고도화_실행제안서(1).docx | K-ArtSell_Aegis_v12_통합고도화_실행제안서.docx v12.0 실행제안서 원본 무변경 보존; v12.1은 Delta만 추가 SOURCE
4 K-ArtSell_Aegis_v12_통합고도화_실행제안서.docx 54732 62845eaf5382ed78e6b6065f3e95c4af9cd87f71bc418bf0077b68e727fce832 K-ArtSell_Aegis_v12_통합고도화_실행제안서(1).docx | K-ArtSell_Aegis_v12_통합고도화_실행제안서.docx v12.0 실행제안서 원본 무변경 보존; v12.1은 Delta만 추가 SOURCE
5 K-ArtSell_퀀트투자자문_SI_본프로그램착수_누적고도화_통합실행기준서_v10.0(1).docx 402134 d86795186ec5f578741d64618eb53278a1c3a55795e73307e5bee245980a83a6 - 최상위 누적 실행기준서 원본 무변경 보존; v12.1은 Delta만 추가 SOURCE
6 KArtSell_Aegis_v11_1_hardening(1).zip 89397 01b3d3025dfb3a6cafcff4d751851240a6087c2329e5c1472ec31703f209ccbd - 보안·불변성·기술부채 Delta 원본 무변경 보존; v12.1은 Delta만 추가 SOURCE
7 KArtSell_Aegis_v12_0_integrated_complete(1).zip 8493363 8ccc4403cdd0fcb2ddf7bdcdcd18719dbc22497fcecdaa0082a1c98b4cd82c04 KArtSell_Aegis_v12_0_integrated_complete(1).zip | KArtSell_Aegis_v12_0_integrated_complete.zip v12.0 통합 구현 패키지 원본 무변경 보존; v12.1은 Delta만 추가 SOURCE
8 KArtSell_Aegis_v12_0_integrated_complete.zip 8493363 8ccc4403cdd0fcb2ddf7bdcdcd18719dbc22497fcecdaa0082a1c98b4cd82c04 KArtSell_Aegis_v12_0_integrated_complete(1).zip | KArtSell_Aegis_v12_0_integrated_complete.zip v12.0 통합 구현 패키지 원본 무변경 보존; v12.1은 Delta만 추가 SOURCE
9 KArtSell_v11_implementation_acceleration(1).zip 56738 2bd5713b98104bf7ac45362105d9b3175d5ca818c06753e572aaf79a936658a2 - 최초 .NET/Vue 구현 골격 원본 무변경 보존; v12.1은 Delta만 추가 SOURCE
@@ -0,0 +1,39 @@
# 전략 아키텍처·SOLID·리팩터링 기준
## 아키텍처 경계
- Host: composition root, 인증/관제/Endpoint 조립만 담당한다.
- Module: Vertical Slice와 모듈 내부 정책·저장소를 소유한다.
- Domain: FastEndpoints, Dapper, Npgsql, Hangfire, HTTP를 참조하지 않는다.
- Application: use case, idempotency, transaction, context loading, orchestration을 담당한다.
- Infrastructure: SQL, 외부 Adapter, Outbox/Inbox, Projection 구현을 담당한다.
- Contracts: 모듈 간 최소 integration event만 공유한다. 타 모듈 테이블 직접 조회를 금지한다.
## SOLID의 현장 적용
| 원칙 | 적용 | 금지 |
|---|---|---|
| SRP | Endpoint=HTTP, Handler=유스케이스, Policy=결정, Adapter=I/O | God Service, Hangfire Job 내 정책 |
| OCP | 승인된 Policy/DQ/Adapter registry | reflection plugin framework |
| LSP | Adapter contract test로 시간·단위·오류 의미 보장 | mock 성공만으로 교체 가능 판정 |
| ISP | IClock, ContextReader, OutboxWriter 등 좁은 Port | 범용 Repository/Manager |
| DIP | Domain은 외부 기술을 모름 | Npgsql/HTTP 타입의 Domain 침투 |
## 리팩터링 순서
1. Characterization/Golden test로 현재 동작을 고정한다.
2. 정책 변경과 구조 변경을 분리한다.
3. 이름·단위·시간 의미를 먼저 교정한다.
4. 중복은 문장이 아니라 **업무 의미와 변경축**이 같을 때만 통합한다.
5. PR마다 성능·데이터·감사·운영 영향과 rollback을 기록한다.
6. 기술부채는 Owner, Interest, Trigger, Gate, Exit Test를 가진다.
## Fitness Functions
- 모듈→모듈 직접 project reference allowlist.
- Domain의 Infrastructure namespace/package 참조 0.
- 모듈 소유 schema 외 SQL 접근 0.
- Endpoint마다 인증/권한 선언 100%.
- API/DDL/Event/Job/UI/Test ID 중복 0.
- 문서/DDL/OpenAPI/Test contract CI diff.
- `AutomaticOrder=false`, `KisOrderAdapter=false` config scan.
@@ -0,0 +1,36 @@
# 알고리즘 거버넌스와 구현 계약
## 고정 우선순위
`HARD_IMPAIRMENT → PORTFOLIO_SURVIVAL → DYNAMIC_PROFIT_FLOOR → CONCENTRATION/LIQUIDITY → OPPORTUNITY_COST → REENTRY_OPTION`
상위 사유는 하위 점수로 상쇄하지 않는다. 회계부정·지급불능·상장폐지·구조적 ETF 훼손은 기대수익 비교가 아니라 승인된 증거등급의 Hard Exit로 처리한다.
## 단위 계약
- `SellRatioOfLot`: 현재 Lot 수량 중 매도 비율, 0..1.
- `CurrentPortfolioWeight`: 현재 포트폴리오 절대비중, 0..1.
- `StrategicCoreFloorWeight`: 비가치훼손 Soft Sell에서 보존할 절대비중.
- `TargetPortfolioWeightAfter`: 결정 후 예상 절대비중.
- `OpportunityEdgeLowerBound`: 비용·세금·FX·재진입 옵션손실을 반영한 교체우위 신뢰하단.
## 정책
| ID | 조건 | 행동 | 재진입 |
|---|---|---|---|
| ALG-SELL-001 | 승인된 영구가치훼손 | 80~100% 또는 전량; 운영승인 | 금지 |
| ALG-SELL-PORT-001 | 자본바닥/생존 위반 | 위험예산까지 축소 | 별도 승인 |
| ALG-SELL-002 | 보호선 1.5 ATR 이상 Gap | Lot 30~50% 부분매도 | 가능 |
| ALG-SELL-003 | 2개 종가 연속 이탈 | Lot 15~25% 부분매도 | 가능 |
| ALG-SELL-004 | 단일/섹터/클러스터/ADV 한도 초과 | 초과분+버퍼 축소 | 가능 |
| ALG-SELL-005 | 비용후 교체우위 4~5%p, 하단>0 | Lot 10~25% 단계교체 | 가능 |
정책 비율의 단일값 고정은 설계제안이며 모델카드·Golden·OOS 승인 전 생산값이 아니다. v12.2가 제시한 범위와 자산유형별 정책을 보존한다.
## 재진입
비가치훼손 매도는 `ReentryWatch`를 생성한다. 최소 10거래일 대기, 상승 SMA50, 직전 20거래일 고점 돌파, 자산유형 확인팩터, 단계 간 10거래일, 126거래일 만료를 적용한다. 각 단계는 unique key를 가지며 새 Lot과 새 CycleId를 만든다.
## 평가
적중률 단독 최적화를 금지한다. 1/5/20/63/126/252일 창에서 calibration, 비용후 기대효용, ES/MDD 감소, 영구손실 회피, false-exit 비용, reentry capture, 운영무결성을 분리해 측정한다. 투자일임형 검토는 최소 252거래일·복수 국면 Shadow, PBO≤20%, DSR≥95%, 비용 2배 기대효용 양수, 독립검증·준법·보안·DR 승인을 모두 요구한다.
@@ -0,0 +1,37 @@
# 데이터 정합성·정규화·역정규화 실행계약
## L0~L7
| Layer | 내용 | 불변조건 |
|---|---|---|
| L0 | Source catalog/license/SLA/schema/timezone/unit | 승인 없는 소스 사용 금지 |
| L1 | Raw payload/hash/event/published/ingested | overwrite 금지 |
| L2 | Canonical PIT price/CA/fundamental/consensus/cost | revision+valid time |
| L3 | DQ/quarantine/lineage/dataset manifest | QUARANTINED 추천 금지 |
| L4 | Feature/Forecast/Risk/Evidence | data/model/config/code SHA |
| L5 | Ledger/Decision/Review/Publish/Fill/Outcome | append/reversal/correction event |
| L6 | UI/report Read Model | Owner/version/watermark/rebuild/staleness |
| L7 | Backtest/ModelCard/Release artifact | artifact hash |
## 정규화
원장·현금·Lot·주문·체결은 3NF와 append/reversal을 기본으로 한다. 현재상태와 이력, 추천과 공개, 모델버전과 승격 이벤트, 수수료 설정과 유효기간을 분리한다. `current=true` 하나로 과거값을 잃지 않는다.
## 역정규화
Read Model에만 허용한다. 화면 성능을 이유로 Source Table을 임의 join하거나 현재값을 복사하지 않는다. Projection은 `ProjectionName, Version, SourceWatermark, LastEventId, BuiltAt, ContentHash`를 보존하고 재구축·diff가 가능해야 한다.
## PIT 최소 필드
`source_event_time, published_at, ingested_at, effective_from/to, revision_no, source_id, content_hash, quality_status, tradable_session, dataset_id`.
## DQ Release Blocker
- same-session lookahead 0.
- 기업행사 가격·수량·원가·배당 공식대사.
- 가격수익/총수익 구분.
- 당시 유니버스와 상폐수익 포함.
- OHLC/단위/통화/비정상 gap 격리.
- key 중복·거래일 결측·watermark 연속성.
- Fee/Tax/FX valid-time.
- 동일 dataset/code/config hash 결과 재현.
@@ -0,0 +1,28 @@
# BE·FE·Hangfire·컴포넌트 표준
## Backend Slice
`Endpoint → Request/Validator → Application UseCase → Domain Policy → Dapper SQL → Outbox → Tests`
생산형 Command는 클라이언트가 Evidence/Model/Config를 임의 제공하지 못하게 한다. 서버가 승인된 PIT Read Model과 Version Set을 조회한다. Decision과 Outbox는 동일 트랜잭션이며, idempotency key 충돌 시 원결과를 반환하거나 409를 명시한다.
## Outbox/Inbox
- Outbox: 미발행 lease, attempt, next_attempt_at, dead-letter, payload hash.
- Inbox: consumer+message unique, processing lease, result hash.
- Exactly-once를 주장하지 않고 at-least-once + idempotent side effect를 구현한다.
- replay는 승인·범위·watermark·dry-run·영향분석이 있어야 한다.
## Hangfire
모든 Job은 `JobRunId, JobType/Version, ScopeKey, IdempotencyKey, Watermark, Dataset/Model/Config/Code SHA, Input/Output Hash, Attempt, TraceId`를 가진다. transient retry, business hold, DQ quarantine, poison event를 분리한다.
## Frontend
- TanStack Query: 서버 상태와 캐시.
- Pinia: 세션·역할·UI preference. 서버 데이터를 복제하지 않는다.
- vee-validate+Zod: 폼·요청/응답 runtime validation.
- vue-router: 공유·복구 가능한 URL 상태.
- AG Grid: 대량 목록의 server-side pagination/filter/sort.
공통 컴포넌트는 `QueryStateBoundary`, `PermissionGuard`, `DataFreshnessBadge`, `EvidenceVersionSet`, `VersionConflictDialog`, `DataGridShell` 후보로 한정한다. 동일 업무 의미와 변경축이 반복될 때만 승격한다.
+27
View File
@@ -0,0 +1,27 @@
Slice_ID,Slice,Module,Sprint,Weeks,Gate,Requirement_ID,Endpoint_ID,DB_ID,Job_ID,UI_ID,Test_ID,User_Result,Dependency,Status
VS-00,PlatformBootstrap,Host/BuildingBlocks,S0,W1-2,G0,REQ-PLAT-001,HEALTH-01,MIG-0000/0013,-,UI-PLAT-01,T-ARCH-001,빌드·마이그레이션·관제 가능한 단일 배포 골격,-,PLANNED
VS-01,ManageIdentityAndRoles,IdentityAccess,S1,W3-4,G1-A,REQ-IAM-001,IAM-01/02,MIG-IAM-001,-,UI-IAM-01,T-IAM-001,MFA·RBAC·업무분장과 승인 경계,VS-00,PLANNED
VS-02,SynchronizeSecurityMaster,SecurityMaster,S1,W3-4,G1-A,REQ-SEC-001,"SEC-01/02,DAT-01",MIG-SEC-001,J01,UI-SEC-01,T-SEC-001,상장·상폐·상품구조·거래가능성의 PIT 기준,VS-00,PLANNED
VS-03,IngestMarketDataPIT,MarketData,S2,W5-6,G1-B,REQ-DAT-001,DAT-02/03,MIG-MD-001/002,J02,UI-DQ-01,T-DQ-001,원시·조정 OHLCV·FX·금리의 revision 적재,VS-02,PLANNED
VS-04,ApplyCorporateActions,SecurityMaster,S2,W5-6,G1-B,REQ-CA-001,DAT-04,MIG-CA-001,J03,UI-DQ-02,T-CA-001,분할·배당·증자·합병·상폐의 가격·수량·원가 일관성,"VS-02,VS-03",PLANNED
VS-05,IngestFundamentalsPIT,FundamentalsPIT,S3,W7-8,G1,REQ-FND-001,DAT-05,MIG-FND-001/002,J04,UI-FND-01,T-FND-001,공시·재무·컨센서스 공개시각과 정정 이력,VS-02,PLANNED
VS-06,MaintainFeeTaxFxSchedule,PortfolioRisk,S3,W7-8,G1,REQ-COST-001,COST-01/02,MIG-COST-001,J04C,UI-COST-01,T-COST-001,계좌·시장·상품별 Fee/Tax/FX valid-time 계약,VS-02,PLANNED
VS-07,ManageClientIPS,ClientAdvisory,S6,W13-14,MVP-A,REQ-CLI-001,CLI-01/02/03,MIG-CLI-001,-,UI-CLI-01,T-CLI-001,고객 목표·위험성향·제한상품의 버전 관리,VS-01,PLANNED
VS-08,MaintainPortfolioLedger,PortfolioRisk,S3,W7-8,G1,REQ-LED-001,POR-01,MIG-LED-001/002,J12L,UI-POR-01,T-LED-001,현금·체결·Lot·Cycle 불변 원장과 대사 기준,"VS-02,VS-06",PLANNED
VS-09,BuildEvidenceSnapshot,ResearchFactors,S4,W9-10,G2-A,REQ-EVD-001,EVD-01,MIG-EVD-001,J06,UI-EVD-01,T-EVD-001,Dataset/Model/Config/Code SHA가 동결된 Evidence,"VS-03,VS-04,VS-05,VS-06",PLANNED
VS-10,GenerateSellDecision,SignalEngine,S4,W9-10,G2-A,REQ-SELL-001,SIG-SELL-01,MIG-SIG-001,J08S,UI-SELL-01,T-SELL-001,우선순위가 보존된 HOLD/부분매도/전량매도 결정,"VS-08,VS-09,VS-13",PLANNED
VS-11,ManageReentryWatch,SignalEngine,S5,W11-12,G2,REQ-RE-001,RE-01/02,MIG-RE-001,J09,UI-RE-01,T-RE-001,비가치훼손 매도의 재진입 계약·단계·만료,VS-10,PLANNED
VS-12,RankBuyCandidates,ValuationForecast,S10,W21-22,Portfolio Gate,REQ-BUY-001,BUY-01,MIG-BUY-001,J08B,UI-BUY-01,T-BUY-001,PIT 품질·밸류·수정·모멘텀을 결합한 후보 순위,"VS-03,VS-05,VS-06,VS-09",PLANNED
VS-13,CalculatePortfolioRisk,PortfolioRisk,S9,W19-20,Portfolio-A,REQ-RISK-001,POR-02,MIG-RISK-001,J07,UI-RISK-01,T-RISK-001,ES·집중·상관·자본바닥 위험 스냅샷,"VS-03,VS-08",PLANNED
VS-14,GenerateDailyRecommendations,ClientAdvisory,S7,W15-16,MVP-B,REQ-REC-001,SIG-01/02/03,MIG-REC-001/002,J08,UI-REC-01,T-REC-001,고객별 BUY/HOLD/SELL/REENTER/REBALANCE 제안 패키지,"VS-07,VS-10,VS-12,VS-13",PLANNED
VS-15,ReviewRecommendation,ClientAdvisory,S7,W15-16,MVP-B,REQ-REV-001,SIG-04,MIG-REV-001,-,UI-REV-01,T-REV-001,maker-checker 승인·보류·기각과 낙관적 동시성,VS-14,PLANNED
VS-16,PublishClientAdvice,ClientAdvisory,S8,W17-18,G3,REQ-PUB-001,SIG-05,MIG-PUB-001,J-PUB,UI-ADV-01,T-PUB-001,승인·유효·데이터 정상 제안만 고객 공개,VS-15,PLANNED
VS-17,RecordClientDecision,ClientAdvisory,S8,W17-18,G3,REQ-CLD-001,SIG-06,MIG-CLD-001,-,UI-CLD-01,T-CLD-001,고객 수락·거절·보류와 attribution 연결,VS-16,PLANNED
VS-18,EvaluateDecisionOutcome,BacktestingEvaluation,S8,W17-18,G3,REQ-EVA-001,EVA-01/02,MIG-EVA-001/002,J10/J11,UI-EVA-01,T-EVA-001,1/5/20/63/126/252일 결과·매도·재진입 품질 평가,"VS-10,VS-11,VS-16,VS-17",PLANNED
VS-19,RunFrozenBacktest,BacktestingEvaluation,S5,W11-12,G2,REQ-BKT-001,BKT-01/02,MIG-BKT-001,J-BKT,UI-BKT-01,T-BKT-001,동결 manifest 기반 워크포워드·OOS·비용 스트레스 재현,"VS-03,VS-04,VS-05,VS-06,VS-09",PLANNED
VS-20,PromoteModelVersion,GovernanceAudit,S11,W23-24,G4-A,REQ-MOD-001,MOD-01/02,MIG-MOD-001,J-MOD,UI-MOD-01,T-MOD-001,모델 승격 증거·승인·롤백·챔피언/챌린저,"VS-18,VS-19",PLANNED
VS-21,BuildRebalanceProposal,PortfolioRisk,S9,W19-20,Portfolio-A,REQ-REB-001,REB-01/02,MIG-REB-001,J-REB,UI-REB-01,T-REB-001,비용·세금·위험예산·제약을 만족하는 리밸런싱,"VS-07,VS-08,VS-12,VS-13",PLANNED
VS-22,SuggestReplacementProducts,PortfolioRisk,S10,W21-22,Portfolio Gate,REQ-RPL-001,RPL-01,MIG-RPL-001,J-RPL,UI-RPL-01,T-RPL-001,적합성·유동성·비용후 기회우위 대체상품 비교,"VS-07,VS-12,VS-13",PLANNED
VS-23,ReconcilePositionsAndFills,ExecutionReconciliation,S12,W25-26,Pilot-A,REQ-RECON-001,"EXE-01/02,REC-01/02",MIG-EXE-001/002,J12,UI-RECON-01,T-RECON-001,브로커·내부 주문·체결·보유·현금 break와 승인 정정,"VS-08,VS-16",PLANNED
VS-24,ReportAndNotify,ReportingNotifications,S11,W23-24,G4-A,REQ-RPT-001,RPT-01,MIG-RPT-001,J11R,UI-RPT-01,T-RPT-001,고객 리포트·SignalR·Telegram 운영 경보,"VS-16,VS-18",PLANNED
VS-25,AuditAndKillSwitch,GovernanceAudit,S13,W27-28,G5,REQ-GOV-001,GOV-01/02,MIG-GOV-001,J-GOV,UI-GOV-01,T-GOV-001,입력→결정→승인→공개→실행→평가 추적과 단계별 차단,"VS-01,VS-16,VS-20,VS-23",PLANNED
1 Slice_ID Slice Module Sprint Weeks Gate Requirement_ID Endpoint_ID DB_ID Job_ID UI_ID Test_ID User_Result Dependency Status
2 VS-00 PlatformBootstrap Host/BuildingBlocks S0 W1-2 G0 REQ-PLAT-001 HEALTH-01 MIG-0000/0013 - UI-PLAT-01 T-ARCH-001 빌드·마이그레이션·관제 가능한 단일 배포 골격 - PLANNED
3 VS-01 ManageIdentityAndRoles IdentityAccess S1 W3-4 G1-A REQ-IAM-001 IAM-01/02 MIG-IAM-001 - UI-IAM-01 T-IAM-001 MFA·RBAC·업무분장과 승인 경계 VS-00 PLANNED
4 VS-02 SynchronizeSecurityMaster SecurityMaster S1 W3-4 G1-A REQ-SEC-001 SEC-01/02,DAT-01 MIG-SEC-001 J01 UI-SEC-01 T-SEC-001 상장·상폐·상품구조·거래가능성의 PIT 기준 VS-00 PLANNED
5 VS-03 IngestMarketDataPIT MarketData S2 W5-6 G1-B REQ-DAT-001 DAT-02/03 MIG-MD-001/002 J02 UI-DQ-01 T-DQ-001 원시·조정 OHLCV·FX·금리의 revision 적재 VS-02 PLANNED
6 VS-04 ApplyCorporateActions SecurityMaster S2 W5-6 G1-B REQ-CA-001 DAT-04 MIG-CA-001 J03 UI-DQ-02 T-CA-001 분할·배당·증자·합병·상폐의 가격·수량·원가 일관성 VS-02,VS-03 PLANNED
7 VS-05 IngestFundamentalsPIT FundamentalsPIT S3 W7-8 G1 REQ-FND-001 DAT-05 MIG-FND-001/002 J04 UI-FND-01 T-FND-001 공시·재무·컨센서스 공개시각과 정정 이력 VS-02 PLANNED
8 VS-06 MaintainFeeTaxFxSchedule PortfolioRisk S3 W7-8 G1 REQ-COST-001 COST-01/02 MIG-COST-001 J04C UI-COST-01 T-COST-001 계좌·시장·상품별 Fee/Tax/FX valid-time 계약 VS-02 PLANNED
9 VS-07 ManageClientIPS ClientAdvisory S6 W13-14 MVP-A REQ-CLI-001 CLI-01/02/03 MIG-CLI-001 - UI-CLI-01 T-CLI-001 고객 목표·위험성향·제한상품의 버전 관리 VS-01 PLANNED
10 VS-08 MaintainPortfolioLedger PortfolioRisk S3 W7-8 G1 REQ-LED-001 POR-01 MIG-LED-001/002 J12L UI-POR-01 T-LED-001 현금·체결·Lot·Cycle 불변 원장과 대사 기준 VS-02,VS-06 PLANNED
11 VS-09 BuildEvidenceSnapshot ResearchFactors S4 W9-10 G2-A REQ-EVD-001 EVD-01 MIG-EVD-001 J06 UI-EVD-01 T-EVD-001 Dataset/Model/Config/Code SHA가 동결된 Evidence VS-03,VS-04,VS-05,VS-06 PLANNED
12 VS-10 GenerateSellDecision SignalEngine S4 W9-10 G2-A REQ-SELL-001 SIG-SELL-01 MIG-SIG-001 J08S UI-SELL-01 T-SELL-001 우선순위가 보존된 HOLD/부분매도/전량매도 결정 VS-08,VS-09,VS-13 PLANNED
13 VS-11 ManageReentryWatch SignalEngine S5 W11-12 G2 REQ-RE-001 RE-01/02 MIG-RE-001 J09 UI-RE-01 T-RE-001 비가치훼손 매도의 재진입 계약·단계·만료 VS-10 PLANNED
14 VS-12 RankBuyCandidates ValuationForecast S10 W21-22 Portfolio Gate REQ-BUY-001 BUY-01 MIG-BUY-001 J08B UI-BUY-01 T-BUY-001 PIT 품질·밸류·수정·모멘텀을 결합한 후보 순위 VS-03,VS-05,VS-06,VS-09 PLANNED
15 VS-13 CalculatePortfolioRisk PortfolioRisk S9 W19-20 Portfolio-A REQ-RISK-001 POR-02 MIG-RISK-001 J07 UI-RISK-01 T-RISK-001 ES·집중·상관·자본바닥 위험 스냅샷 VS-03,VS-08 PLANNED
16 VS-14 GenerateDailyRecommendations ClientAdvisory S7 W15-16 MVP-B REQ-REC-001 SIG-01/02/03 MIG-REC-001/002 J08 UI-REC-01 T-REC-001 고객별 BUY/HOLD/SELL/REENTER/REBALANCE 제안 패키지 VS-07,VS-10,VS-12,VS-13 PLANNED
17 VS-15 ReviewRecommendation ClientAdvisory S7 W15-16 MVP-B REQ-REV-001 SIG-04 MIG-REV-001 - UI-REV-01 T-REV-001 maker-checker 승인·보류·기각과 낙관적 동시성 VS-14 PLANNED
18 VS-16 PublishClientAdvice ClientAdvisory S8 W17-18 G3 REQ-PUB-001 SIG-05 MIG-PUB-001 J-PUB UI-ADV-01 T-PUB-001 승인·유효·데이터 정상 제안만 고객 공개 VS-15 PLANNED
19 VS-17 RecordClientDecision ClientAdvisory S8 W17-18 G3 REQ-CLD-001 SIG-06 MIG-CLD-001 - UI-CLD-01 T-CLD-001 고객 수락·거절·보류와 attribution 연결 VS-16 PLANNED
20 VS-18 EvaluateDecisionOutcome BacktestingEvaluation S8 W17-18 G3 REQ-EVA-001 EVA-01/02 MIG-EVA-001/002 J10/J11 UI-EVA-01 T-EVA-001 1/5/20/63/126/252일 결과·매도·재진입 품질 평가 VS-10,VS-11,VS-16,VS-17 PLANNED
21 VS-19 RunFrozenBacktest BacktestingEvaluation S5 W11-12 G2 REQ-BKT-001 BKT-01/02 MIG-BKT-001 J-BKT UI-BKT-01 T-BKT-001 동결 manifest 기반 워크포워드·OOS·비용 스트레스 재현 VS-03,VS-04,VS-05,VS-06,VS-09 PLANNED
22 VS-20 PromoteModelVersion GovernanceAudit S11 W23-24 G4-A REQ-MOD-001 MOD-01/02 MIG-MOD-001 J-MOD UI-MOD-01 T-MOD-001 모델 승격 증거·승인·롤백·챔피언/챌린저 VS-18,VS-19 PLANNED
23 VS-21 BuildRebalanceProposal PortfolioRisk S9 W19-20 Portfolio-A REQ-REB-001 REB-01/02 MIG-REB-001 J-REB UI-REB-01 T-REB-001 비용·세금·위험예산·제약을 만족하는 리밸런싱 VS-07,VS-08,VS-12,VS-13 PLANNED
24 VS-22 SuggestReplacementProducts PortfolioRisk S10 W21-22 Portfolio Gate REQ-RPL-001 RPL-01 MIG-RPL-001 J-RPL UI-RPL-01 T-RPL-001 적합성·유동성·비용후 기회우위 대체상품 비교 VS-07,VS-12,VS-13 PLANNED
25 VS-23 ReconcilePositionsAndFills ExecutionReconciliation S12 W25-26 Pilot-A REQ-RECON-001 EXE-01/02,REC-01/02 MIG-EXE-001/002 J12 UI-RECON-01 T-RECON-001 브로커·내부 주문·체결·보유·현금 break와 승인 정정 VS-08,VS-16 PLANNED
26 VS-24 ReportAndNotify ReportingNotifications S11 W23-24 G4-A REQ-RPT-001 RPT-01 MIG-RPT-001 J11R UI-RPT-01 T-RPT-001 고객 리포트·SignalR·Telegram 운영 경보 VS-16,VS-18 PLANNED
27 VS-25 AuditAndKillSwitch GovernanceAudit S13 W27-28 G5 REQ-GOV-001 GOV-01/02 MIG-GOV-001 J-GOV UI-GOV-01 T-GOV-001 입력→결정→승인→공개→실행→평가 추적과 단계별 차단 VS-01,VS-16,VS-20,VS-23 PLANNED
+203
View File
@@ -0,0 +1,203 @@
WBS_ID,Sprint,Weeks,Slice_ID,Slice,Module,Workstream,Requirement_ID,API_ID,DB_Migration_ID,Job_Event_ID,UI_ID,Test_ID,Task,Artifact,Acceptance_Evidence,Primary_Owner,Secondary,PD,Dependency,Gate,Evidence_Class,Risk,Status
AEG-X-001,S0,W1-2,Cross,Cross-cutting,Governance,GOV,DOC-NR-01~08,Cross,Cross,Cross,Cross,Cross,Version Coverage Matrix 고도화,Version Coverage Matrix·Supersession Registry,모든 첨부와 v10/v12/v12.1의 Retained/Improved/Superseded 상태 100%,PM/Architect,Architect/QA,5,-,G0,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-002,S0,W1-2,Cross,Cross-cutting,Toolchain,DEVEX,REQ-PLAT-TOOL,Cross,Cross,Cross,Cross,Cross,global.json 고도화,global.json·Directory.Packages·node/packageManager·lock 정책,승인 runner에서 dotnet restore/build/test 및 pnpm frozen build 재현,DevOps,Architect/QA,6,AEG-X-001,G0,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-003,S0,W1-2,Cross,Cross-cutting,Architecture,FITNESS,REQ-ARCH-001,Cross,Cross,Cross,Cross,Cross,모듈/namespace/schema/API 금지 의존 Architecture tests 고도화,모듈/namespace/schema/API 금지 의존 Architecture tests,"Domain 기술의존 0, 모듈 직접 DB 접근 0, ID 중복 0",Architect/QA,Architect/QA,7,AEG-X-002,G0,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-004,S0,W1-2,Cross,Cross-cutting,Database,DBA,REQ-DB-001,Cross,Cross,Cross,Cross,Cross,DbUp fresh/upgrade/re-run/failure 복구 rehearsal 고도화,DbUp fresh/upgrade/re-run/failure 복구 rehearsal,PostgreSQL 승인 버전에서 4 시나리오와 checksum 변경 차단 통과,DBA/BE,Architect/QA,8,AEG-X-002,G0,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-005,S0,W1-2,Cross,Cross-cutting,Security,SEC,REQ-SEC-BASE,Cross,Cross,Cross,Cross,Cross,"OIDC/JWT ADR, DevelopmentHeader 제한, fail-closed 고도화","OIDC/JWT ADR, DevelopmentHeader 제한, fail-closed","비개발 무인증 접근 0, secret/log/prompt 노출 0",Security/BE,Architect/QA,7,AEG-X-001,G0,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-006,S0,W1-2,Cross,Cross-cutting,Reliability,ASYNC,REQ-ASYNC-001,Cross,Cross,Cross,Cross,Cross,Outbox publisher 고도화,Outbox publisher·Inbox lease·dead-letter·replay,"duplicate 0, crash-before/after-publish 시나리오와 replay hash 통과",BE/SRE,Architect/QA,10,AEG-X-004,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-007,S0,W1-2,Cross,Cross-cutting,Observability,OPS,REQ-OBS-001,Cross,Cross,Cross,Cross,Cross,Serilog/OTel correlation 고도화,Serilog/OTel correlation·metric naming·Telegram redaction,"trace→job→decision→outbox 연결, PII redaction test 통과",SRE/Security,Architect/QA,7,AEG-X-005,G0,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-X-008,S0,W1-2,Cross,Cross-cutting,API Contract,CONTRACT,REQ-API-001,Cross,Cross,Cross,Cross,Cross,OpenAPI artifact 고도화,OpenAPI artifact·ProblemDetails taxonomy·FE contract generation,OpenAPI diff와 breaking change approval 없이는 Release 차단,BE/FE Architect,Architect/QA,8,AEG-X-003,G3,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-00-01,S0,W1-2,VS-00,PlatformBootstrap,Host/BuildingBlocks,GOV,REQ-PLAT-001,HEALTH-01,MIG-0000/0013,-,UI-PLAT-01,T-ARCH-001,정책·범위·실패상태 계약 확정,"REQ-PLAT-001, VS-00 SLICE_SPEC, ADR/Decision Log",사용자 결과 '빌드·마이그레이션·관제 가능한 단일 배포 골격'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,-,G0,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-00-02,S0,W1-2,VS-00,PlatformBootstrap,Host/BuildingBlocks,DATA,REQ-PLAT-001,HEALTH-01,MIG-0000/0013,-,UI-PLAT-01,T-ARCH-001,데이터 시점·스키마·정합성 계약,"MIG-0000/0013, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-00-01,G0,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-00-03,S0,W1-2,VS-00,PlatformBootstrap,Host/BuildingBlocks,DOMAIN,REQ-PLAT-001,HEALTH-01,MIG-0000/0013,-,UI-PLAT-01,T-ARCH-001,도메인 불변조건·상태전이 구현,"src/Modules/Host/BuildingBlocks/PlatformBootstrap/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-00-02,G0,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-00-04,S0,W1-2,VS-00,PlatformBootstrap,Host/BuildingBlocks,BE,REQ-PLAT-001,HEALTH-01,MIG-0000/0013,-,UI-PLAT-01,T-ARCH-001,Vertical Slice API/Application/SQL 구현,HEALTH-01; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-00-03,G0,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-00-05,S0,W1-2,VS-00,PlatformBootstrap,Host/BuildingBlocks,ASYNC,REQ-PLAT-001,HEALTH-01,MIG-0000/0013,-,UI-PLAT-01,T-ARCH-001,Event/Job/Inbox·재처리 구현,"-; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-00-04,G0,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-00-06,S0,W1-2,VS-00,PlatformBootstrap,Host/BuildingBlocks,FE,REQ-PLAT-001,HEALTH-01,MIG-0000/0013,-,UI-PLAT-01,T-ARCH-001,Vue feature·Zod·Query·컴포넌트 구현,UI-PLAT-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-00-05,G0,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-00-07,S0,W1-2,VS-00,PlatformBootstrap,Host/BuildingBlocks,TESTOPS,REQ-PLAT-001,HEALTH-01,MIG-0000/0013,-,UI-PLAT-01,T-ARCH-001,회귀·관제·Runbook·Rollback 증거,T-ARCH-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-00-06,G0,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-009,S1,W3-4,Cross,Cross-cutting,Data Governance,DATA,REQ-DATA-SOURCE,Cross,Cross,Cross,Cross,Cross,Source catalog/license/SLA/timezone/unit/checksum 고도화,Source catalog/license/SLA/timezone/unit/checksum,승인 없는 source가 ingestion 또는 추천으로 진입하지 않음,Data Governance,Architect/QA,8,AEG-X-001,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-01-01,S1,W3-4,VS-01,ManageIdentityAndRoles,IdentityAccess,GOV,REQ-IAM-001,IAM-01/02,MIG-IAM-001,-,UI-IAM-01,T-IAM-001,정책·범위·실패상태 계약 확정,"REQ-IAM-001, VS-01 SLICE_SPEC, ADR/Decision Log",사용자 결과 'MFA·RBAC·업무분장과 승인 경계'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,VS-00,G1-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-01-02,S1,W3-4,VS-01,ManageIdentityAndRoles,IdentityAccess,DATA,REQ-IAM-001,IAM-01/02,MIG-IAM-001,-,UI-IAM-01,T-IAM-001,데이터 시점·스키마·정합성 계약,"MIG-IAM-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-01-01,G1-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-01-03,S1,W3-4,VS-01,ManageIdentityAndRoles,IdentityAccess,DOMAIN,REQ-IAM-001,IAM-01/02,MIG-IAM-001,-,UI-IAM-01,T-IAM-001,도메인 불변조건·상태전이 구현,"src/Modules/IdentityAccess/ManageIdentityAndRoles/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-01-02,G1-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-01-04,S1,W3-4,VS-01,ManageIdentityAndRoles,IdentityAccess,BE,REQ-IAM-001,IAM-01/02,MIG-IAM-001,-,UI-IAM-01,T-IAM-001,Vertical Slice API/Application/SQL 구현,IAM-01/02; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-01-03,G1-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-01-05,S1,W3-4,VS-01,ManageIdentityAndRoles,IdentityAccess,ASYNC,REQ-IAM-001,IAM-01/02,MIG-IAM-001,-,UI-IAM-01,T-IAM-001,Event/Job/Inbox·재처리 구현,"-; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-01-04,G1-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-01-06,S1,W3-4,VS-01,ManageIdentityAndRoles,IdentityAccess,FE,REQ-IAM-001,IAM-01/02,MIG-IAM-001,-,UI-IAM-01,T-IAM-001,Vue feature·Zod·Query·컴포넌트 구현,UI-IAM-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-01-05,G1-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-01-07,S1,W3-4,VS-01,ManageIdentityAndRoles,IdentityAccess,TESTOPS,REQ-IAM-001,IAM-01/02,MIG-IAM-001,-,UI-IAM-01,T-IAM-001,회귀·관제·Runbook·Rollback 증거,T-IAM-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-01-06,G1-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-02-01,S1,W3-4,VS-02,SynchronizeSecurityMaster,SecurityMaster,GOV,REQ-SEC-001,"SEC-01/02,DAT-01",MIG-SEC-001,J01,UI-SEC-01,T-SEC-001,정책·범위·실패상태 계약 확정,"REQ-SEC-001, VS-02 SLICE_SPEC, ADR/Decision Log",사용자 결과 '상장·상폐·상품구조·거래가능성의 PIT 기준'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,VS-00,G1-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-02-02,S1,W3-4,VS-02,SynchronizeSecurityMaster,SecurityMaster,DATA,REQ-SEC-001,"SEC-01/02,DAT-01",MIG-SEC-001,J01,UI-SEC-01,T-SEC-001,데이터 시점·스키마·정합성 계약,"MIG-SEC-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-02-01,G1-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-02-03,S1,W3-4,VS-02,SynchronizeSecurityMaster,SecurityMaster,DOMAIN,REQ-SEC-001,"SEC-01/02,DAT-01",MIG-SEC-001,J01,UI-SEC-01,T-SEC-001,도메인 불변조건·상태전이 구현,"src/Modules/SecurityMaster/SynchronizeSecurityMaster/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-02-02,G1-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-02-04,S1,W3-4,VS-02,SynchronizeSecurityMaster,SecurityMaster,BE,REQ-SEC-001,"SEC-01/02,DAT-01",MIG-SEC-001,J01,UI-SEC-01,T-SEC-001,Vertical Slice API/Application/SQL 구현,"SEC-01/02,DAT-01; Endpoint/Validator/Application/Dapper/Outbox",인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-02-03,G1-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-02-05,S1,W3-4,VS-02,SynchronizeSecurityMaster,SecurityMaster,ASYNC,REQ-SEC-001,"SEC-01/02,DAT-01",MIG-SEC-001,J01,UI-SEC-01,T-SEC-001,Event/Job/Inbox·재처리 구현,"J01; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-02-04,G1-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-02-06,S1,W3-4,VS-02,SynchronizeSecurityMaster,SecurityMaster,FE,REQ-SEC-001,"SEC-01/02,DAT-01",MIG-SEC-001,J01,UI-SEC-01,T-SEC-001,Vue feature·Zod·Query·컴포넌트 구현,UI-SEC-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-02-05,G1-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-02-07,S1,W3-4,VS-02,SynchronizeSecurityMaster,SecurityMaster,TESTOPS,REQ-SEC-001,"SEC-01/02,DAT-01",MIG-SEC-001,J01,UI-SEC-01,T-SEC-001,회귀·관제·Runbook·Rollback 증거,T-SEC-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-02-06,G1-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-010,S2,W5-6,Cross,Cross-cutting,Read Model,PROJECTION,REQ-RM-001,Cross,Cross,Cross,Cross,Cross,projection owner/version/watermark/rebuild/staleness 고도화,projection owner/version/watermark/rebuild/staleness,"write model 직접 UI join 0, rebuild 결과 hash 동일",BE/Data,Architect/QA,8,AEG-X-006,G3,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-03-01,S2,W5-6,VS-03,IngestMarketDataPIT,MarketData,GOV,REQ-DAT-001,DAT-02/03,MIG-MD-001/002,J02,UI-DQ-01,T-DQ-001,정책·범위·실패상태 계약 확정,"REQ-DAT-001, VS-03 SLICE_SPEC, ADR/Decision Log",사용자 결과 '원시·조정 OHLCV·FX·금리의 revision 적재'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,VS-02,G1-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-03-02,S2,W5-6,VS-03,IngestMarketDataPIT,MarketData,DATA,REQ-DAT-001,DAT-02/03,MIG-MD-001/002,J02,UI-DQ-01,T-DQ-001,데이터 시점·스키마·정합성 계약,"MIG-MD-001/002, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-03-01,G1-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-03-03,S2,W5-6,VS-03,IngestMarketDataPIT,MarketData,DOMAIN,REQ-DAT-001,DAT-02/03,MIG-MD-001/002,J02,UI-DQ-01,T-DQ-001,도메인 불변조건·상태전이 구현,"src/Modules/MarketData/IngestMarketDataPIT/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-03-02,G1-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-03-04,S2,W5-6,VS-03,IngestMarketDataPIT,MarketData,BE,REQ-DAT-001,DAT-02/03,MIG-MD-001/002,J02,UI-DQ-01,T-DQ-001,Vertical Slice API/Application/SQL 구현,DAT-02/03; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-03-03,G1-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-03-05,S2,W5-6,VS-03,IngestMarketDataPIT,MarketData,ASYNC,REQ-DAT-001,DAT-02/03,MIG-MD-001/002,J02,UI-DQ-01,T-DQ-001,Event/Job/Inbox·재처리 구현,"J02; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-03-04,G1-B,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-03-06,S2,W5-6,VS-03,IngestMarketDataPIT,MarketData,FE,REQ-DAT-001,DAT-02/03,MIG-MD-001/002,J02,UI-DQ-01,T-DQ-001,Vue feature·Zod·Query·컴포넌트 구현,UI-DQ-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-03-05,G1-B,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-03-07,S2,W5-6,VS-03,IngestMarketDataPIT,MarketData,TESTOPS,REQ-DAT-001,DAT-02/03,MIG-MD-001/002,J02,UI-DQ-01,T-DQ-001,회귀·관제·Runbook·Rollback 증거,T-DQ-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-03-06,G1-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-04-01,S2,W5-6,VS-04,ApplyCorporateActions,SecurityMaster,GOV,REQ-CA-001,DAT-04,MIG-CA-001,J03,UI-DQ-02,T-CA-001,정책·범위·실패상태 계약 확정,"REQ-CA-001, VS-04 SLICE_SPEC, ADR/Decision Log",사용자 결과 '분할·배당·증자·합병·상폐의 가격·수량·원가 일관성'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-02,VS-03",G1-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-04-02,S2,W5-6,VS-04,ApplyCorporateActions,SecurityMaster,DATA,REQ-CA-001,DAT-04,MIG-CA-001,J03,UI-DQ-02,T-CA-001,데이터 시점·스키마·정합성 계약,"MIG-CA-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-04-01,G1-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-04-03,S2,W5-6,VS-04,ApplyCorporateActions,SecurityMaster,DOMAIN,REQ-CA-001,DAT-04,MIG-CA-001,J03,UI-DQ-02,T-CA-001,도메인 불변조건·상태전이 구현,"src/Modules/SecurityMaster/ApplyCorporateActions/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-04-02,G1-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-04-04,S2,W5-6,VS-04,ApplyCorporateActions,SecurityMaster,BE,REQ-CA-001,DAT-04,MIG-CA-001,J03,UI-DQ-02,T-CA-001,Vertical Slice API/Application/SQL 구현,DAT-04; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-04-03,G1-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-04-05,S2,W5-6,VS-04,ApplyCorporateActions,SecurityMaster,ASYNC,REQ-CA-001,DAT-04,MIG-CA-001,J03,UI-DQ-02,T-CA-001,Event/Job/Inbox·재처리 구현,"J03; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-04-04,G1-B,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-04-06,S2,W5-6,VS-04,ApplyCorporateActions,SecurityMaster,FE,REQ-CA-001,DAT-04,MIG-CA-001,J03,UI-DQ-02,T-CA-001,Vue feature·Zod·Query·컴포넌트 구현,UI-DQ-02; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-04-05,G1-B,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-04-07,S2,W5-6,VS-04,ApplyCorporateActions,SecurityMaster,TESTOPS,REQ-CA-001,DAT-04,MIG-CA-001,J03,UI-DQ-02,T-CA-001,회귀·관제·Runbook·Rollback 증거,T-CA-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-04-06,G1-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-05-01,S3,W7-8,VS-05,IngestFundamentalsPIT,FundamentalsPIT,GOV,REQ-FND-001,DAT-05,MIG-FND-001/002,J04,UI-FND-01,T-FND-001,정책·범위·실패상태 계약 확정,"REQ-FND-001, VS-05 SLICE_SPEC, ADR/Decision Log",사용자 결과 '공시·재무·컨센서스 공개시각과 정정 이력'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,VS-02,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-05-02,S3,W7-8,VS-05,IngestFundamentalsPIT,FundamentalsPIT,DATA,REQ-FND-001,DAT-05,MIG-FND-001/002,J04,UI-FND-01,T-FND-001,데이터 시점·스키마·정합성 계약,"MIG-FND-001/002, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-05-01,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-05-03,S3,W7-8,VS-05,IngestFundamentalsPIT,FundamentalsPIT,DOMAIN,REQ-FND-001,DAT-05,MIG-FND-001/002,J04,UI-FND-01,T-FND-001,도메인 불변조건·상태전이 구현,"src/Modules/FundamentalsPIT/IngestFundamentalsPIT/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-05-02,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-05-04,S3,W7-8,VS-05,IngestFundamentalsPIT,FundamentalsPIT,BE,REQ-FND-001,DAT-05,MIG-FND-001/002,J04,UI-FND-01,T-FND-001,Vertical Slice API/Application/SQL 구현,DAT-05; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-05-03,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-05-05,S3,W7-8,VS-05,IngestFundamentalsPIT,FundamentalsPIT,ASYNC,REQ-FND-001,DAT-05,MIG-FND-001/002,J04,UI-FND-01,T-FND-001,Event/Job/Inbox·재처리 구현,"J04; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-05-04,G1,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-05-06,S3,W7-8,VS-05,IngestFundamentalsPIT,FundamentalsPIT,FE,REQ-FND-001,DAT-05,MIG-FND-001/002,J04,UI-FND-01,T-FND-001,Vue feature·Zod·Query·컴포넌트 구현,UI-FND-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-05-05,G1,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-05-07,S3,W7-8,VS-05,IngestFundamentalsPIT,FundamentalsPIT,TESTOPS,REQ-FND-001,DAT-05,MIG-FND-001/002,J04,UI-FND-01,T-FND-001,회귀·관제·Runbook·Rollback 증거,T-FND-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-05-06,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-06-01,S3,W7-8,VS-06,MaintainFeeTaxFxSchedule,PortfolioRisk,GOV,REQ-COST-001,COST-01/02,MIG-COST-001,J04C,UI-COST-01,T-COST-001,정책·범위·실패상태 계약 확정,"REQ-COST-001, VS-06 SLICE_SPEC, ADR/Decision Log",사용자 결과 '계좌·시장·상품별 Fee/Tax/FX valid-time 계약'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,VS-02,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-06-02,S3,W7-8,VS-06,MaintainFeeTaxFxSchedule,PortfolioRisk,DATA,REQ-COST-001,COST-01/02,MIG-COST-001,J04C,UI-COST-01,T-COST-001,데이터 시점·스키마·정합성 계약,"MIG-COST-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-06-01,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-06-03,S3,W7-8,VS-06,MaintainFeeTaxFxSchedule,PortfolioRisk,DOMAIN,REQ-COST-001,COST-01/02,MIG-COST-001,J04C,UI-COST-01,T-COST-001,도메인 불변조건·상태전이 구현,"src/Modules/PortfolioRisk/MaintainFeeTaxFxSchedule/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-06-02,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-06-04,S3,W7-8,VS-06,MaintainFeeTaxFxSchedule,PortfolioRisk,BE,REQ-COST-001,COST-01/02,MIG-COST-001,J04C,UI-COST-01,T-COST-001,Vertical Slice API/Application/SQL 구현,COST-01/02; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-06-03,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-06-05,S3,W7-8,VS-06,MaintainFeeTaxFxSchedule,PortfolioRisk,ASYNC,REQ-COST-001,COST-01/02,MIG-COST-001,J04C,UI-COST-01,T-COST-001,Event/Job/Inbox·재처리 구현,"J04C; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-06-04,G1,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-06-06,S3,W7-8,VS-06,MaintainFeeTaxFxSchedule,PortfolioRisk,FE,REQ-COST-001,COST-01/02,MIG-COST-001,J04C,UI-COST-01,T-COST-001,Vue feature·Zod·Query·컴포넌트 구현,UI-COST-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-06-05,G1,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-06-07,S3,W7-8,VS-06,MaintainFeeTaxFxSchedule,PortfolioRisk,TESTOPS,REQ-COST-001,COST-01/02,MIG-COST-001,J04C,UI-COST-01,T-COST-001,회귀·관제·Runbook·Rollback 증거,T-COST-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-06-06,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-08-01,S3,W7-8,VS-08,MaintainPortfolioLedger,PortfolioRisk,GOV,REQ-LED-001,POR-01,MIG-LED-001/002,J12L,UI-POR-01,T-LED-001,정책·범위·실패상태 계약 확정,"REQ-LED-001, VS-08 SLICE_SPEC, ADR/Decision Log",사용자 결과 '현금·체결·Lot·Cycle 불변 원장과 대사 기준'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-02,VS-06",G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-08-02,S3,W7-8,VS-08,MaintainPortfolioLedger,PortfolioRisk,DATA,REQ-LED-001,POR-01,MIG-LED-001/002,J12L,UI-POR-01,T-LED-001,데이터 시점·스키마·정합성 계약,"MIG-LED-001/002, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-08-01,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-08-03,S3,W7-8,VS-08,MaintainPortfolioLedger,PortfolioRisk,DOMAIN,REQ-LED-001,POR-01,MIG-LED-001/002,J12L,UI-POR-01,T-LED-001,도메인 불변조건·상태전이 구현,"src/Modules/PortfolioRisk/MaintainPortfolioLedger/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-08-02,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-08-04,S3,W7-8,VS-08,MaintainPortfolioLedger,PortfolioRisk,BE,REQ-LED-001,POR-01,MIG-LED-001/002,J12L,UI-POR-01,T-LED-001,Vertical Slice API/Application/SQL 구현,POR-01; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-08-03,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-08-05,S3,W7-8,VS-08,MaintainPortfolioLedger,PortfolioRisk,ASYNC,REQ-LED-001,POR-01,MIG-LED-001/002,J12L,UI-POR-01,T-LED-001,Event/Job/Inbox·재처리 구현,"J12L; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-08-04,G1,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-08-06,S3,W7-8,VS-08,MaintainPortfolioLedger,PortfolioRisk,FE,REQ-LED-001,POR-01,MIG-LED-001/002,J12L,UI-POR-01,T-LED-001,Vue feature·Zod·Query·컴포넌트 구현,UI-POR-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-08-05,G1,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-08-07,S3,W7-8,VS-08,MaintainPortfolioLedger,PortfolioRisk,TESTOPS,REQ-LED-001,POR-01,MIG-LED-001/002,J12L,UI-POR-01,T-LED-001,회귀·관제·Runbook·Rollback 증거,T-LED-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-08-06,G1,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-011,S4,W9-10,Cross,Cross-cutting,Algorithm,GOLDEN,REQ-ALG-GOLDEN,Cross,Cross,Cross,Cross,Cross,Python↔C# Golden vector 고도화,Python↔C# Golden vector·epsilon·rounding 계약,정책 ID별 경계·우선순위·cost×2 결과 허용오차 내 동일,Quant/QA,Architect/QA,10,VS-09,G2-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-09-01,S4,W9-10,VS-09,BuildEvidenceSnapshot,ResearchFactors,GOV,REQ-EVD-001,EVD-01,MIG-EVD-001,J06,UI-EVD-01,T-EVD-001,정책·범위·실패상태 계약 확정,"REQ-EVD-001, VS-09 SLICE_SPEC, ADR/Decision Log",사용자 결과 'Dataset/Model/Config/Code SHA가 동결된 Evidence'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-03,VS-04,VS-05,VS-06",G2-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-09-02,S4,W9-10,VS-09,BuildEvidenceSnapshot,ResearchFactors,DATA,REQ-EVD-001,EVD-01,MIG-EVD-001,J06,UI-EVD-01,T-EVD-001,데이터 시점·스키마·정합성 계약,"MIG-EVD-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-09-01,G2-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-09-03,S4,W9-10,VS-09,BuildEvidenceSnapshot,ResearchFactors,DOMAIN,REQ-EVD-001,EVD-01,MIG-EVD-001,J06,UI-EVD-01,T-EVD-001,도메인 불변조건·상태전이 구현,"src/Modules/ResearchFactors/BuildEvidenceSnapshot/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-09-02,G2-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-09-04,S4,W9-10,VS-09,BuildEvidenceSnapshot,ResearchFactors,BE,REQ-EVD-001,EVD-01,MIG-EVD-001,J06,UI-EVD-01,T-EVD-001,Vertical Slice API/Application/SQL 구현,EVD-01; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-09-03,G2-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-09-05,S4,W9-10,VS-09,BuildEvidenceSnapshot,ResearchFactors,ASYNC,REQ-EVD-001,EVD-01,MIG-EVD-001,J06,UI-EVD-01,T-EVD-001,Event/Job/Inbox·재처리 구현,"J06; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-09-04,G2-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-09-06,S4,W9-10,VS-09,BuildEvidenceSnapshot,ResearchFactors,FE,REQ-EVD-001,EVD-01,MIG-EVD-001,J06,UI-EVD-01,T-EVD-001,Vue feature·Zod·Query·컴포넌트 구현,UI-EVD-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-09-05,G2-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-09-07,S4,W9-10,VS-09,BuildEvidenceSnapshot,ResearchFactors,TESTOPS,REQ-EVD-001,EVD-01,MIG-EVD-001,J06,UI-EVD-01,T-EVD-001,회귀·관제·Runbook·Rollback 증거,T-EVD-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-09-06,G2-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-10-01,S4,W9-10,VS-10,GenerateSellDecision,SignalEngine,GOV,REQ-SELL-001,SIG-SELL-01,MIG-SIG-001,J08S,UI-SELL-01,T-SELL-001,정책·범위·실패상태 계약 확정,"REQ-SELL-001, VS-10 SLICE_SPEC, ADR/Decision Log",사용자 결과 '우선순위가 보존된 HOLD/부분매도/전량매도 결정'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-08,VS-09,VS-13",G2-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-10-02,S4,W9-10,VS-10,GenerateSellDecision,SignalEngine,DATA,REQ-SELL-001,SIG-SELL-01,MIG-SIG-001,J08S,UI-SELL-01,T-SELL-001,데이터 시점·스키마·정합성 계약,"MIG-SIG-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-10-01,G2-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-10-03,S4,W9-10,VS-10,GenerateSellDecision,SignalEngine,DOMAIN,REQ-SELL-001,SIG-SELL-01,MIG-SIG-001,J08S,UI-SELL-01,T-SELL-001,도메인 불변조건·상태전이 구현,"src/Modules/SignalEngine/GenerateSellDecision/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-10-02,G2-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-10-04,S4,W9-10,VS-10,GenerateSellDecision,SignalEngine,BE,REQ-SELL-001,SIG-SELL-01,MIG-SIG-001,J08S,UI-SELL-01,T-SELL-001,Vertical Slice API/Application/SQL 구현,SIG-SELL-01; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-10-03,G2-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-10-05,S4,W9-10,VS-10,GenerateSellDecision,SignalEngine,ASYNC,REQ-SELL-001,SIG-SELL-01,MIG-SIG-001,J08S,UI-SELL-01,T-SELL-001,Event/Job/Inbox·재처리 구현,"J08S; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-10-04,G2-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-10-06,S4,W9-10,VS-10,GenerateSellDecision,SignalEngine,FE,REQ-SELL-001,SIG-SELL-01,MIG-SIG-001,J08S,UI-SELL-01,T-SELL-001,Vue feature·Zod·Query·컴포넌트 구현,UI-SELL-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-10-05,G2-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-10-07,S4,W9-10,VS-10,GenerateSellDecision,SignalEngine,TESTOPS,REQ-SELL-001,SIG-SELL-01,MIG-SIG-001,J08S,UI-SELL-01,T-SELL-001,회귀·관제·Runbook·Rollback 증거,T-SELL-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-10-06,G2-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-012,S5,W11-12,Cross,Cross-cutting,Research,REPRO,REQ-REPRO-001,Cross,Cross,Cross,Cross,Cross,dataset/code/config/environment manifest와 artifact hash 고도화,dataset/code/config/environment manifest와 artifact hash,"동일 manifest·seed 결과 재현, 실패 artifact 보존",Quant/Data,Architect/QA,12,AEG-X-009,G2,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-11-01,S5,W11-12,VS-11,ManageReentryWatch,SignalEngine,GOV,REQ-RE-001,RE-01/02,MIG-RE-001,J09,UI-RE-01,T-RE-001,정책·범위·실패상태 계약 확정,"REQ-RE-001, VS-11 SLICE_SPEC, ADR/Decision Log",사용자 결과 '비가치훼손 매도의 재진입 계약·단계·만료'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,VS-10,G2,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-11-02,S5,W11-12,VS-11,ManageReentryWatch,SignalEngine,DATA,REQ-RE-001,RE-01/02,MIG-RE-001,J09,UI-RE-01,T-RE-001,데이터 시점·스키마·정합성 계약,"MIG-RE-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-11-01,G2,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-11-03,S5,W11-12,VS-11,ManageReentryWatch,SignalEngine,DOMAIN,REQ-RE-001,RE-01/02,MIG-RE-001,J09,UI-RE-01,T-RE-001,도메인 불변조건·상태전이 구현,"src/Modules/SignalEngine/ManageReentryWatch/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-11-02,G2,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-11-04,S5,W11-12,VS-11,ManageReentryWatch,SignalEngine,BE,REQ-RE-001,RE-01/02,MIG-RE-001,J09,UI-RE-01,T-RE-001,Vertical Slice API/Application/SQL 구현,RE-01/02; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-11-03,G2,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-11-05,S5,W11-12,VS-11,ManageReentryWatch,SignalEngine,ASYNC,REQ-RE-001,RE-01/02,MIG-RE-001,J09,UI-RE-01,T-RE-001,Event/Job/Inbox·재처리 구현,"J09; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-11-04,G2,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-11-06,S5,W11-12,VS-11,ManageReentryWatch,SignalEngine,FE,REQ-RE-001,RE-01/02,MIG-RE-001,J09,UI-RE-01,T-RE-001,Vue feature·Zod·Query·컴포넌트 구현,UI-RE-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-11-05,G2,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-11-07,S5,W11-12,VS-11,ManageReentryWatch,SignalEngine,TESTOPS,REQ-RE-001,RE-01/02,MIG-RE-001,J09,UI-RE-01,T-RE-001,회귀·관제·Runbook·Rollback 증거,T-RE-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-11-06,G2,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-19-01,S5,W11-12,VS-19,RunFrozenBacktest,BacktestingEvaluation,GOV,REQ-BKT-001,BKT-01/02,MIG-BKT-001,J-BKT,UI-BKT-01,T-BKT-001,정책·범위·실패상태 계약 확정,"REQ-BKT-001, VS-19 SLICE_SPEC, ADR/Decision Log",사용자 결과 '동결 manifest 기반 워크포워드·OOS·비용 스트레스 재현'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-03,VS-04,VS-05,VS-06,VS-09",G2,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-19-02,S5,W11-12,VS-19,RunFrozenBacktest,BacktestingEvaluation,DATA,REQ-BKT-001,BKT-01/02,MIG-BKT-001,J-BKT,UI-BKT-01,T-BKT-001,데이터 시점·스키마·정합성 계약,"MIG-BKT-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-19-01,G2,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-19-03,S5,W11-12,VS-19,RunFrozenBacktest,BacktestingEvaluation,DOMAIN,REQ-BKT-001,BKT-01/02,MIG-BKT-001,J-BKT,UI-BKT-01,T-BKT-001,도메인 불변조건·상태전이 구현,"src/Modules/BacktestingEvaluation/RunFrozenBacktest/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-19-02,G2,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-19-04,S5,W11-12,VS-19,RunFrozenBacktest,BacktestingEvaluation,BE,REQ-BKT-001,BKT-01/02,MIG-BKT-001,J-BKT,UI-BKT-01,T-BKT-001,Vertical Slice API/Application/SQL 구현,BKT-01/02; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-19-03,G2,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-19-05,S5,W11-12,VS-19,RunFrozenBacktest,BacktestingEvaluation,ASYNC,REQ-BKT-001,BKT-01/02,MIG-BKT-001,J-BKT,UI-BKT-01,T-BKT-001,Event/Job/Inbox·재처리 구현,"J-BKT; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-19-04,G2,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-19-06,S5,W11-12,VS-19,RunFrozenBacktest,BacktestingEvaluation,FE,REQ-BKT-001,BKT-01/02,MIG-BKT-001,J-BKT,UI-BKT-01,T-BKT-001,Vue feature·Zod·Query·컴포넌트 구현,UI-BKT-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-19-05,G2,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-19-07,S5,W11-12,VS-19,RunFrozenBacktest,BacktestingEvaluation,TESTOPS,REQ-BKT-001,BKT-01/02,MIG-BKT-001,J-BKT,UI-BKT-01,T-BKT-001,회귀·관제·Runbook·Rollback 증거,T-BKT-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-19-06,G2,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-07-01,S6,W13-14,VS-07,ManageClientIPS,ClientAdvisory,GOV,REQ-CLI-001,CLI-01/02/03,MIG-CLI-001,-,UI-CLI-01,T-CLI-001,정책·범위·실패상태 계약 확정,"REQ-CLI-001, VS-07 SLICE_SPEC, ADR/Decision Log",사용자 결과 '고객 목표·위험성향·제한상품의 버전 관리'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,VS-01,MVP-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-07-02,S6,W13-14,VS-07,ManageClientIPS,ClientAdvisory,DATA,REQ-CLI-001,CLI-01/02/03,MIG-CLI-001,-,UI-CLI-01,T-CLI-001,데이터 시점·스키마·정합성 계약,"MIG-CLI-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-07-01,MVP-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-07-03,S6,W13-14,VS-07,ManageClientIPS,ClientAdvisory,DOMAIN,REQ-CLI-001,CLI-01/02/03,MIG-CLI-001,-,UI-CLI-01,T-CLI-001,도메인 불변조건·상태전이 구현,"src/Modules/ClientAdvisory/ManageClientIPS/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-07-02,MVP-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-07-04,S6,W13-14,VS-07,ManageClientIPS,ClientAdvisory,BE,REQ-CLI-001,CLI-01/02/03,MIG-CLI-001,-,UI-CLI-01,T-CLI-001,Vertical Slice API/Application/SQL 구현,CLI-01/02/03; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-07-03,MVP-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-07-05,S6,W13-14,VS-07,ManageClientIPS,ClientAdvisory,ASYNC,REQ-CLI-001,CLI-01/02/03,MIG-CLI-001,-,UI-CLI-01,T-CLI-001,Event/Job/Inbox·재처리 구현,"-; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-07-04,MVP-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-07-06,S6,W13-14,VS-07,ManageClientIPS,ClientAdvisory,FE,REQ-CLI-001,CLI-01/02/03,MIG-CLI-001,-,UI-CLI-01,T-CLI-001,Vue feature·Zod·Query·컴포넌트 구현,UI-CLI-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-07-05,MVP-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-07-07,S6,W13-14,VS-07,ManageClientIPS,ClientAdvisory,TESTOPS,REQ-CLI-001,CLI-01/02/03,MIG-CLI-001,-,UI-CLI-01,T-CLI-001,회귀·관제·Runbook·Rollback 증거,T-CLI-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-07-06,MVP-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-14-01,S7,W15-16,VS-14,GenerateDailyRecommendations,ClientAdvisory,GOV,REQ-REC-001,SIG-01/02/03,MIG-REC-001/002,J08,UI-REC-01,T-REC-001,정책·범위·실패상태 계약 확정,"REQ-REC-001, VS-14 SLICE_SPEC, ADR/Decision Log",사용자 결과 '고객별 BUY/HOLD/SELL/REENTER/REBALANCE 제안 패키지'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-07,VS-10,VS-12,VS-13",MVP-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-14-02,S7,W15-16,VS-14,GenerateDailyRecommendations,ClientAdvisory,DATA,REQ-REC-001,SIG-01/02/03,MIG-REC-001/002,J08,UI-REC-01,T-REC-001,데이터 시점·스키마·정합성 계약,"MIG-REC-001/002, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-14-01,MVP-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-14-03,S7,W15-16,VS-14,GenerateDailyRecommendations,ClientAdvisory,DOMAIN,REQ-REC-001,SIG-01/02/03,MIG-REC-001/002,J08,UI-REC-01,T-REC-001,도메인 불변조건·상태전이 구현,"src/Modules/ClientAdvisory/GenerateDailyRecommendations/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-14-02,MVP-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-14-04,S7,W15-16,VS-14,GenerateDailyRecommendations,ClientAdvisory,BE,REQ-REC-001,SIG-01/02/03,MIG-REC-001/002,J08,UI-REC-01,T-REC-001,Vertical Slice API/Application/SQL 구현,SIG-01/02/03; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-14-03,MVP-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-14-05,S7,W15-16,VS-14,GenerateDailyRecommendations,ClientAdvisory,ASYNC,REQ-REC-001,SIG-01/02/03,MIG-REC-001/002,J08,UI-REC-01,T-REC-001,Event/Job/Inbox·재처리 구현,"J08; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-14-04,MVP-B,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-14-06,S7,W15-16,VS-14,GenerateDailyRecommendations,ClientAdvisory,FE,REQ-REC-001,SIG-01/02/03,MIG-REC-001/002,J08,UI-REC-01,T-REC-001,Vue feature·Zod·Query·컴포넌트 구현,UI-REC-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-14-05,MVP-B,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-14-07,S7,W15-16,VS-14,GenerateDailyRecommendations,ClientAdvisory,TESTOPS,REQ-REC-001,SIG-01/02/03,MIG-REC-001/002,J08,UI-REC-01,T-REC-001,회귀·관제·Runbook·Rollback 증거,T-REC-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-14-06,MVP-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-15-01,S7,W15-16,VS-15,ReviewRecommendation,ClientAdvisory,GOV,REQ-REV-001,SIG-04,MIG-REV-001,-,UI-REV-01,T-REV-001,정책·범위·실패상태 계약 확정,"REQ-REV-001, VS-15 SLICE_SPEC, ADR/Decision Log",사용자 결과 'maker-checker 승인·보류·기각과 낙관적 동시성'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,VS-14,MVP-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-15-02,S7,W15-16,VS-15,ReviewRecommendation,ClientAdvisory,DATA,REQ-REV-001,SIG-04,MIG-REV-001,-,UI-REV-01,T-REV-001,데이터 시점·스키마·정합성 계약,"MIG-REV-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-15-01,MVP-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-15-03,S7,W15-16,VS-15,ReviewRecommendation,ClientAdvisory,DOMAIN,REQ-REV-001,SIG-04,MIG-REV-001,-,UI-REV-01,T-REV-001,도메인 불변조건·상태전이 구현,"src/Modules/ClientAdvisory/ReviewRecommendation/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-15-02,MVP-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-15-04,S7,W15-16,VS-15,ReviewRecommendation,ClientAdvisory,BE,REQ-REV-001,SIG-04,MIG-REV-001,-,UI-REV-01,T-REV-001,Vertical Slice API/Application/SQL 구현,SIG-04; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-15-03,MVP-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-15-05,S7,W15-16,VS-15,ReviewRecommendation,ClientAdvisory,ASYNC,REQ-REV-001,SIG-04,MIG-REV-001,-,UI-REV-01,T-REV-001,Event/Job/Inbox·재처리 구현,"-; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-15-04,MVP-B,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-15-06,S7,W15-16,VS-15,ReviewRecommendation,ClientAdvisory,FE,REQ-REV-001,SIG-04,MIG-REV-001,-,UI-REV-01,T-REV-001,Vue feature·Zod·Query·컴포넌트 구현,UI-REV-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-15-05,MVP-B,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-15-07,S7,W15-16,VS-15,ReviewRecommendation,ClientAdvisory,TESTOPS,REQ-REV-001,SIG-04,MIG-REV-001,-,UI-REV-01,T-REV-001,회귀·관제·Runbook·Rollback 증거,T-REV-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-15-06,MVP-B,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-013,S8,W17-18,Cross,Cross-cutting,Audit,TRACE,REQ-AUDIT-E2E,Cross,Cross,Cross,Cross,Cross,Evidence→Decision→Review→Publish→Outcome trace API 고도화,Evidence→Decision→Review→Publish→Outcome trace API,"publication/decision 기준 누락 링크 0, correction event 보존",Compliance/BE,Architect/QA,8,VS-18,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-16-01,S8,W17-18,VS-16,PublishClientAdvice,ClientAdvisory,GOV,REQ-PUB-001,SIG-05,MIG-PUB-001,J-PUB,UI-ADV-01,T-PUB-001,정책·범위·실패상태 계약 확정,"REQ-PUB-001, VS-16 SLICE_SPEC, ADR/Decision Log",사용자 결과 '승인·유효·데이터 정상 제안만 고객 공개'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,VS-15,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-16-02,S8,W17-18,VS-16,PublishClientAdvice,ClientAdvisory,DATA,REQ-PUB-001,SIG-05,MIG-PUB-001,J-PUB,UI-ADV-01,T-PUB-001,데이터 시점·스키마·정합성 계약,"MIG-PUB-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-16-01,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-16-03,S8,W17-18,VS-16,PublishClientAdvice,ClientAdvisory,DOMAIN,REQ-PUB-001,SIG-05,MIG-PUB-001,J-PUB,UI-ADV-01,T-PUB-001,도메인 불변조건·상태전이 구현,"src/Modules/ClientAdvisory/PublishClientAdvice/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-16-02,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-16-04,S8,W17-18,VS-16,PublishClientAdvice,ClientAdvisory,BE,REQ-PUB-001,SIG-05,MIG-PUB-001,J-PUB,UI-ADV-01,T-PUB-001,Vertical Slice API/Application/SQL 구현,SIG-05; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-16-03,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-16-05,S8,W17-18,VS-16,PublishClientAdvice,ClientAdvisory,ASYNC,REQ-PUB-001,SIG-05,MIG-PUB-001,J-PUB,UI-ADV-01,T-PUB-001,Event/Job/Inbox·재처리 구현,"J-PUB; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-16-04,G3,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-16-06,S8,W17-18,VS-16,PublishClientAdvice,ClientAdvisory,FE,REQ-PUB-001,SIG-05,MIG-PUB-001,J-PUB,UI-ADV-01,T-PUB-001,Vue feature·Zod·Query·컴포넌트 구현,UI-ADV-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-16-05,G3,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-16-07,S8,W17-18,VS-16,PublishClientAdvice,ClientAdvisory,TESTOPS,REQ-PUB-001,SIG-05,MIG-PUB-001,J-PUB,UI-ADV-01,T-PUB-001,회귀·관제·Runbook·Rollback 증거,T-PUB-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-16-06,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-17-01,S8,W17-18,VS-17,RecordClientDecision,ClientAdvisory,GOV,REQ-CLD-001,SIG-06,MIG-CLD-001,-,UI-CLD-01,T-CLD-001,정책·범위·실패상태 계약 확정,"REQ-CLD-001, VS-17 SLICE_SPEC, ADR/Decision Log",사용자 결과 '고객 수락·거절·보류와 attribution 연결'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,VS-16,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-17-02,S8,W17-18,VS-17,RecordClientDecision,ClientAdvisory,DATA,REQ-CLD-001,SIG-06,MIG-CLD-001,-,UI-CLD-01,T-CLD-001,데이터 시점·스키마·정합성 계약,"MIG-CLD-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-17-01,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-17-03,S8,W17-18,VS-17,RecordClientDecision,ClientAdvisory,DOMAIN,REQ-CLD-001,SIG-06,MIG-CLD-001,-,UI-CLD-01,T-CLD-001,도메인 불변조건·상태전이 구현,"src/Modules/ClientAdvisory/RecordClientDecision/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-17-02,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-17-04,S8,W17-18,VS-17,RecordClientDecision,ClientAdvisory,BE,REQ-CLD-001,SIG-06,MIG-CLD-001,-,UI-CLD-01,T-CLD-001,Vertical Slice API/Application/SQL 구현,SIG-06; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-17-03,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-17-05,S8,W17-18,VS-17,RecordClientDecision,ClientAdvisory,ASYNC,REQ-CLD-001,SIG-06,MIG-CLD-001,-,UI-CLD-01,T-CLD-001,Event/Job/Inbox·재처리 구현,"-; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-17-04,G3,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-17-06,S8,W17-18,VS-17,RecordClientDecision,ClientAdvisory,FE,REQ-CLD-001,SIG-06,MIG-CLD-001,-,UI-CLD-01,T-CLD-001,Vue feature·Zod·Query·컴포넌트 구현,UI-CLD-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-17-05,G3,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-17-07,S8,W17-18,VS-17,RecordClientDecision,ClientAdvisory,TESTOPS,REQ-CLD-001,SIG-06,MIG-CLD-001,-,UI-CLD-01,T-CLD-001,회귀·관제·Runbook·Rollback 증거,T-CLD-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-17-06,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-18-01,S8,W17-18,VS-18,EvaluateDecisionOutcome,BacktestingEvaluation,GOV,REQ-EVA-001,EVA-01/02,MIG-EVA-001/002,J10/J11,UI-EVA-01,T-EVA-001,정책·범위·실패상태 계약 확정,"REQ-EVA-001, VS-18 SLICE_SPEC, ADR/Decision Log",사용자 결과 '1/5/20/63/126/252일 결과·매도·재진입 품질 평가'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-10,VS-11,VS-16,VS-17",G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-18-02,S8,W17-18,VS-18,EvaluateDecisionOutcome,BacktestingEvaluation,DATA,REQ-EVA-001,EVA-01/02,MIG-EVA-001/002,J10/J11,UI-EVA-01,T-EVA-001,데이터 시점·스키마·정합성 계약,"MIG-EVA-001/002, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-18-01,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-18-03,S8,W17-18,VS-18,EvaluateDecisionOutcome,BacktestingEvaluation,DOMAIN,REQ-EVA-001,EVA-01/02,MIG-EVA-001/002,J10/J11,UI-EVA-01,T-EVA-001,도메인 불변조건·상태전이 구현,"src/Modules/BacktestingEvaluation/EvaluateDecisionOutcome/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-18-02,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-18-04,S8,W17-18,VS-18,EvaluateDecisionOutcome,BacktestingEvaluation,BE,REQ-EVA-001,EVA-01/02,MIG-EVA-001/002,J10/J11,UI-EVA-01,T-EVA-001,Vertical Slice API/Application/SQL 구현,EVA-01/02; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-18-03,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-18-05,S8,W17-18,VS-18,EvaluateDecisionOutcome,BacktestingEvaluation,ASYNC,REQ-EVA-001,EVA-01/02,MIG-EVA-001/002,J10/J11,UI-EVA-01,T-EVA-001,Event/Job/Inbox·재처리 구현,"J10/J11; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-18-04,G3,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-18-06,S8,W17-18,VS-18,EvaluateDecisionOutcome,BacktestingEvaluation,FE,REQ-EVA-001,EVA-01/02,MIG-EVA-001/002,J10/J11,UI-EVA-01,T-EVA-001,Vue feature·Zod·Query·컴포넌트 구현,UI-EVA-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-18-05,G3,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-18-07,S8,W17-18,VS-18,EvaluateDecisionOutcome,BacktestingEvaluation,TESTOPS,REQ-EVA-001,EVA-01/02,MIG-EVA-001/002,J10/J11,UI-EVA-01,T-EVA-001,회귀·관제·Runbook·Rollback 증거,T-EVA-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-18-06,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-13-01,S9,W19-20,VS-13,CalculatePortfolioRisk,PortfolioRisk,GOV,REQ-RISK-001,POR-02,MIG-RISK-001,J07,UI-RISK-01,T-RISK-001,정책·범위·실패상태 계약 확정,"REQ-RISK-001, VS-13 SLICE_SPEC, ADR/Decision Log",사용자 결과 'ES·집중·상관·자본바닥 위험 스냅샷'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-03,VS-08",Portfolio-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-13-02,S9,W19-20,VS-13,CalculatePortfolioRisk,PortfolioRisk,DATA,REQ-RISK-001,POR-02,MIG-RISK-001,J07,UI-RISK-01,T-RISK-001,데이터 시점·스키마·정합성 계약,"MIG-RISK-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-13-01,Portfolio-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-13-03,S9,W19-20,VS-13,CalculatePortfolioRisk,PortfolioRisk,DOMAIN,REQ-RISK-001,POR-02,MIG-RISK-001,J07,UI-RISK-01,T-RISK-001,도메인 불변조건·상태전이 구현,"src/Modules/PortfolioRisk/CalculatePortfolioRisk/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-13-02,Portfolio-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-13-04,S9,W19-20,VS-13,CalculatePortfolioRisk,PortfolioRisk,BE,REQ-RISK-001,POR-02,MIG-RISK-001,J07,UI-RISK-01,T-RISK-001,Vertical Slice API/Application/SQL 구현,POR-02; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-13-03,Portfolio-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-13-05,S9,W19-20,VS-13,CalculatePortfolioRisk,PortfolioRisk,ASYNC,REQ-RISK-001,POR-02,MIG-RISK-001,J07,UI-RISK-01,T-RISK-001,Event/Job/Inbox·재처리 구현,"J07; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-13-04,Portfolio-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-13-06,S9,W19-20,VS-13,CalculatePortfolioRisk,PortfolioRisk,FE,REQ-RISK-001,POR-02,MIG-RISK-001,J07,UI-RISK-01,T-RISK-001,Vue feature·Zod·Query·컴포넌트 구현,UI-RISK-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-13-05,Portfolio-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-13-07,S9,W19-20,VS-13,CalculatePortfolioRisk,PortfolioRisk,TESTOPS,REQ-RISK-001,POR-02,MIG-RISK-001,J07,UI-RISK-01,T-RISK-001,회귀·관제·Runbook·Rollback 증거,T-RISK-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-13-06,Portfolio-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-21-01,S9,W19-20,VS-21,BuildRebalanceProposal,PortfolioRisk,GOV,REQ-REB-001,REB-01/02,MIG-REB-001,J-REB,UI-REB-01,T-REB-001,정책·범위·실패상태 계약 확정,"REQ-REB-001, VS-21 SLICE_SPEC, ADR/Decision Log",사용자 결과 '비용·세금·위험예산·제약을 만족하는 리밸런싱'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-07,VS-08,VS-12,VS-13",Portfolio-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-21-02,S9,W19-20,VS-21,BuildRebalanceProposal,PortfolioRisk,DATA,REQ-REB-001,REB-01/02,MIG-REB-001,J-REB,UI-REB-01,T-REB-001,데이터 시점·스키마·정합성 계약,"MIG-REB-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-21-01,Portfolio-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-21-03,S9,W19-20,VS-21,BuildRebalanceProposal,PortfolioRisk,DOMAIN,REQ-REB-001,REB-01/02,MIG-REB-001,J-REB,UI-REB-01,T-REB-001,도메인 불변조건·상태전이 구현,"src/Modules/PortfolioRisk/BuildRebalanceProposal/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-21-02,Portfolio-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-21-04,S9,W19-20,VS-21,BuildRebalanceProposal,PortfolioRisk,BE,REQ-REB-001,REB-01/02,MIG-REB-001,J-REB,UI-REB-01,T-REB-001,Vertical Slice API/Application/SQL 구현,REB-01/02; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-21-03,Portfolio-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-21-05,S9,W19-20,VS-21,BuildRebalanceProposal,PortfolioRisk,ASYNC,REQ-REB-001,REB-01/02,MIG-REB-001,J-REB,UI-REB-01,T-REB-001,Event/Job/Inbox·재처리 구현,"J-REB; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-21-04,Portfolio-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-21-06,S9,W19-20,VS-21,BuildRebalanceProposal,PortfolioRisk,FE,REQ-REB-001,REB-01/02,MIG-REB-001,J-REB,UI-REB-01,T-REB-001,Vue feature·Zod·Query·컴포넌트 구현,UI-REB-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-21-05,Portfolio-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-21-07,S9,W19-20,VS-21,BuildRebalanceProposal,PortfolioRisk,TESTOPS,REQ-REB-001,REB-01/02,MIG-REB-001,J-REB,UI-REB-01,T-REB-001,회귀·관제·Runbook·Rollback 증거,T-REB-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-21-06,Portfolio-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-12-01,S10,W21-22,VS-12,RankBuyCandidates,ValuationForecast,GOV,REQ-BUY-001,BUY-01,MIG-BUY-001,J08B,UI-BUY-01,T-BUY-001,정책·범위·실패상태 계약 확정,"REQ-BUY-001, VS-12 SLICE_SPEC, ADR/Decision Log",사용자 결과 'PIT 품질·밸류·수정·모멘텀을 결합한 후보 순위'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-03,VS-05,VS-06,VS-09",Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-12-02,S10,W21-22,VS-12,RankBuyCandidates,ValuationForecast,DATA,REQ-BUY-001,BUY-01,MIG-BUY-001,J08B,UI-BUY-01,T-BUY-001,데이터 시점·스키마·정합성 계약,"MIG-BUY-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-12-01,Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-12-03,S10,W21-22,VS-12,RankBuyCandidates,ValuationForecast,DOMAIN,REQ-BUY-001,BUY-01,MIG-BUY-001,J08B,UI-BUY-01,T-BUY-001,도메인 불변조건·상태전이 구현,"src/Modules/ValuationForecast/RankBuyCandidates/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-12-02,Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-12-04,S10,W21-22,VS-12,RankBuyCandidates,ValuationForecast,BE,REQ-BUY-001,BUY-01,MIG-BUY-001,J08B,UI-BUY-01,T-BUY-001,Vertical Slice API/Application/SQL 구현,BUY-01; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-12-03,Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-12-05,S10,W21-22,VS-12,RankBuyCandidates,ValuationForecast,ASYNC,REQ-BUY-001,BUY-01,MIG-BUY-001,J08B,UI-BUY-01,T-BUY-001,Event/Job/Inbox·재처리 구현,"J08B; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-12-04,Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-12-06,S10,W21-22,VS-12,RankBuyCandidates,ValuationForecast,FE,REQ-BUY-001,BUY-01,MIG-BUY-001,J08B,UI-BUY-01,T-BUY-001,Vue feature·Zod·Query·컴포넌트 구현,UI-BUY-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-12-05,Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-12-07,S10,W21-22,VS-12,RankBuyCandidates,ValuationForecast,TESTOPS,REQ-BUY-001,BUY-01,MIG-BUY-001,J08B,UI-BUY-01,T-BUY-001,회귀·관제·Runbook·Rollback 증거,T-BUY-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-12-06,Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-22-01,S10,W21-22,VS-22,SuggestReplacementProducts,PortfolioRisk,GOV,REQ-RPL-001,RPL-01,MIG-RPL-001,J-RPL,UI-RPL-01,T-RPL-001,정책·범위·실패상태 계약 확정,"REQ-RPL-001, VS-22 SLICE_SPEC, ADR/Decision Log",사용자 결과 '적합성·유동성·비용후 기회우위 대체상품 비교'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-07,VS-12,VS-13",Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-22-02,S10,W21-22,VS-22,SuggestReplacementProducts,PortfolioRisk,DATA,REQ-RPL-001,RPL-01,MIG-RPL-001,J-RPL,UI-RPL-01,T-RPL-001,데이터 시점·스키마·정합성 계약,"MIG-RPL-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-22-01,Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-22-03,S10,W21-22,VS-22,SuggestReplacementProducts,PortfolioRisk,DOMAIN,REQ-RPL-001,RPL-01,MIG-RPL-001,J-RPL,UI-RPL-01,T-RPL-001,도메인 불변조건·상태전이 구현,"src/Modules/PortfolioRisk/SuggestReplacementProducts/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-22-02,Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-22-04,S10,W21-22,VS-22,SuggestReplacementProducts,PortfolioRisk,BE,REQ-RPL-001,RPL-01,MIG-RPL-001,J-RPL,UI-RPL-01,T-RPL-001,Vertical Slice API/Application/SQL 구현,RPL-01; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-22-03,Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-22-05,S10,W21-22,VS-22,SuggestReplacementProducts,PortfolioRisk,ASYNC,REQ-RPL-001,RPL-01,MIG-RPL-001,J-RPL,UI-RPL-01,T-RPL-001,Event/Job/Inbox·재처리 구현,"J-RPL; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-22-04,Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-22-06,S10,W21-22,VS-22,SuggestReplacementProducts,PortfolioRisk,FE,REQ-RPL-001,RPL-01,MIG-RPL-001,J-RPL,UI-RPL-01,T-RPL-001,Vue feature·Zod·Query·컴포넌트 구현,UI-RPL-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-22-05,Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-22-07,S10,W21-22,VS-22,SuggestReplacementProducts,PortfolioRisk,TESTOPS,REQ-RPL-001,RPL-01,MIG-RPL-001,J-RPL,UI-RPL-01,T-RPL-001,회귀·관제·Runbook·Rollback 증거,T-RPL-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-22-06,Portfolio Gate,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-014,S11,W23-24,Cross,Cross-cutting,Model Risk,VALIDATION,REQ-MODEL-RISK,Cross,Cross,Cross,Cross,Cross,CSCV/PBO 고도화,CSCV/PBO·DSR·block bootstrap·시도 원장,"PBO≤20%, DSR≥95%, cost×2 utility 양수 또는 승격 차단",Quant/Risk,Architect/QA,15,AEG-X-012,G4-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-015,S11,W23-24,Cross,Cross-cutting,Shadow,EVAL,REQ-SHADOW-001,Cross,Cross,Cross,Cross,Cross,252거래일 고도화,252거래일·복수 국면 일평가 scorecard,적중률 단독 아닌 calibration/ES/false-exit/reentry/운영무결성 판정,Quant/Ops,Architect/QA,14,VS-18,G4-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-20-01,S11,W23-24,VS-20,PromoteModelVersion,GovernanceAudit,GOV,REQ-MOD-001,MOD-01/02,MIG-MOD-001,J-MOD,UI-MOD-01,T-MOD-001,정책·범위·실패상태 계약 확정,"REQ-MOD-001, VS-20 SLICE_SPEC, ADR/Decision Log",사용자 결과 '모델 승격 증거·승인·롤백·챔피언/챌린저'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-18,VS-19",G4-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-20-02,S11,W23-24,VS-20,PromoteModelVersion,GovernanceAudit,DATA,REQ-MOD-001,MOD-01/02,MIG-MOD-001,J-MOD,UI-MOD-01,T-MOD-001,데이터 시점·스키마·정합성 계약,"MIG-MOD-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-20-01,G4-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-20-03,S11,W23-24,VS-20,PromoteModelVersion,GovernanceAudit,DOMAIN,REQ-MOD-001,MOD-01/02,MIG-MOD-001,J-MOD,UI-MOD-01,T-MOD-001,도메인 불변조건·상태전이 구현,"src/Modules/GovernanceAudit/PromoteModelVersion/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-20-02,G4-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-20-04,S11,W23-24,VS-20,PromoteModelVersion,GovernanceAudit,BE,REQ-MOD-001,MOD-01/02,MIG-MOD-001,J-MOD,UI-MOD-01,T-MOD-001,Vertical Slice API/Application/SQL 구현,MOD-01/02; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-20-03,G4-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-20-05,S11,W23-24,VS-20,PromoteModelVersion,GovernanceAudit,ASYNC,REQ-MOD-001,MOD-01/02,MIG-MOD-001,J-MOD,UI-MOD-01,T-MOD-001,Event/Job/Inbox·재처리 구현,"J-MOD; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-20-04,G4-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-20-06,S11,W23-24,VS-20,PromoteModelVersion,GovernanceAudit,FE,REQ-MOD-001,MOD-01/02,MIG-MOD-001,J-MOD,UI-MOD-01,T-MOD-001,Vue feature·Zod·Query·컴포넌트 구현,UI-MOD-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-20-05,G4-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-20-07,S11,W23-24,VS-20,PromoteModelVersion,GovernanceAudit,TESTOPS,REQ-MOD-001,MOD-01/02,MIG-MOD-001,J-MOD,UI-MOD-01,T-MOD-001,회귀·관제·Runbook·Rollback 증거,T-MOD-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-20-06,G4-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-24-01,S11,W23-24,VS-24,ReportAndNotify,ReportingNotifications,GOV,REQ-RPT-001,RPT-01,MIG-RPT-001,J11R,UI-RPT-01,T-RPT-001,정책·범위·실패상태 계약 확정,"REQ-RPT-001, VS-24 SLICE_SPEC, ADR/Decision Log",사용자 결과 '고객 리포트·SignalR·Telegram 운영 경보'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-16,VS-18",G4-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-24-02,S11,W23-24,VS-24,ReportAndNotify,ReportingNotifications,DATA,REQ-RPT-001,RPT-01,MIG-RPT-001,J11R,UI-RPT-01,T-RPT-001,데이터 시점·스키마·정합성 계약,"MIG-RPT-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-24-01,G4-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-24-03,S11,W23-24,VS-24,ReportAndNotify,ReportingNotifications,DOMAIN,REQ-RPT-001,RPT-01,MIG-RPT-001,J11R,UI-RPT-01,T-RPT-001,도메인 불변조건·상태전이 구현,"src/Modules/ReportingNotifications/ReportAndNotify/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-24-02,G4-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-24-04,S11,W23-24,VS-24,ReportAndNotify,ReportingNotifications,BE,REQ-RPT-001,RPT-01,MIG-RPT-001,J11R,UI-RPT-01,T-RPT-001,Vertical Slice API/Application/SQL 구현,RPT-01; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-24-03,G4-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-24-05,S11,W23-24,VS-24,ReportAndNotify,ReportingNotifications,ASYNC,REQ-RPT-001,RPT-01,MIG-RPT-001,J11R,UI-RPT-01,T-RPT-001,Event/Job/Inbox·재처리 구현,"J11R; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-24-04,G4-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-24-06,S11,W23-24,VS-24,ReportAndNotify,ReportingNotifications,FE,REQ-RPT-001,RPT-01,MIG-RPT-001,J11R,UI-RPT-01,T-RPT-001,Vue feature·Zod·Query·컴포넌트 구현,UI-RPT-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-24-05,G4-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-24-07,S11,W23-24,VS-24,ReportAndNotify,ReportingNotifications,TESTOPS,REQ-RPT-001,RPT-01,MIG-RPT-001,J11R,UI-RPT-01,T-RPT-001,회귀·관제·Runbook·Rollback 증거,T-RPT-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-24-06,G4-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-016,S12,W25-26,Cross,Cross-cutting,Broker,CAPABILITY,REQ-KIS-OFF,Cross,Cross,Cross,Cross,Cross,KIS 주문 제출 startup/CI/runtime 차단 고도화,KIS 주문 제출 startup/CI/runtime 차단,"외부 주문 호출 0, capability override 감사·kill-switch 통과",Security/Ops,Architect/QA,7,AEG-X-005,ALL,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-23-01,S12,W25-26,VS-23,ReconcilePositionsAndFills,ExecutionReconciliation,GOV,REQ-RECON-001,"EXE-01/02,REC-01/02",MIG-EXE-001/002,J12,UI-RECON-01,T-RECON-001,정책·범위·실패상태 계약 확정,"REQ-RECON-001, VS-23 SLICE_SPEC, ADR/Decision Log",사용자 결과 '브로커·내부 주문·체결·보유·현금 break와 승인 정정'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-08,VS-16",Pilot-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-23-02,S12,W25-26,VS-23,ReconcilePositionsAndFills,ExecutionReconciliation,DATA,REQ-RECON-001,"EXE-01/02,REC-01/02",MIG-EXE-001/002,J12,UI-RECON-01,T-RECON-001,데이터 시점·스키마·정합성 계약,"MIG-EXE-001/002, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-23-01,Pilot-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-23-03,S12,W25-26,VS-23,ReconcilePositionsAndFills,ExecutionReconciliation,DOMAIN,REQ-RECON-001,"EXE-01/02,REC-01/02",MIG-EXE-001/002,J12,UI-RECON-01,T-RECON-001,도메인 불변조건·상태전이 구현,"src/Modules/ExecutionReconciliation/ReconcilePositionsAndFills/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-23-02,Pilot-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-23-04,S12,W25-26,VS-23,ReconcilePositionsAndFills,ExecutionReconciliation,BE,REQ-RECON-001,"EXE-01/02,REC-01/02",MIG-EXE-001/002,J12,UI-RECON-01,T-RECON-001,Vertical Slice API/Application/SQL 구현,"EXE-01/02,REC-01/02; Endpoint/Validator/Application/Dapper/Outbox",인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-23-03,Pilot-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-23-05,S12,W25-26,VS-23,ReconcilePositionsAndFills,ExecutionReconciliation,ASYNC,REQ-RECON-001,"EXE-01/02,REC-01/02",MIG-EXE-001/002,J12,UI-RECON-01,T-RECON-001,Event/Job/Inbox·재처리 구현,"J12; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-23-04,Pilot-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-23-06,S12,W25-26,VS-23,ReconcilePositionsAndFills,ExecutionReconciliation,FE,REQ-RECON-001,"EXE-01/02,REC-01/02",MIG-EXE-001/002,J12,UI-RECON-01,T-RECON-001,Vue feature·Zod·Query·컴포넌트 구현,UI-RECON-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-23-05,Pilot-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-23-07,S12,W25-26,VS-23,ReconcilePositionsAndFills,ExecutionReconciliation,TESTOPS,REQ-RECON-001,"EXE-01/02,REC-01/02",MIG-EXE-001/002,J12,UI-RECON-01,T-RECON-001,회귀·관제·Runbook·Rollback 증거,T-RECON-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-23-06,Pilot-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-017,S13,W27-28,Cross,Cross-cutting,DR,OPS,REQ-DR-001,Cross,Cross,Cross,Cross,Cross,RPO/RTO 고도화,RPO/RTO·backup/restore·region/host failure rehearsal,"승인 RPO/RTO 내 복구, 원장·outbox·projection 대사 100%",SRE/DBA,Architect/QA,12,AEG-X-006,G5,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-25-01,S13,W27-28,VS-25,AuditAndKillSwitch,GovernanceAudit,GOV,REQ-GOV-001,GOV-01/02,MIG-GOV-001,J-GOV,UI-GOV-01,T-GOV-001,정책·범위·실패상태 계약 확정,"REQ-GOV-001, VS-25 SLICE_SPEC, ADR/Decision Log",사용자 결과 '입력→결정→승인→공개→실행→평가 추적과 단계별 차단'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨,PM/Architect,Compliance/Owner,3,"VS-01,VS-16,VS-20,VS-23",G5,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-25-02,S13,W27-28,VS-25,AuditAndKillSwitch,GovernanceAudit,DATA,REQ-GOV-001,GOV-01/02,MIG-GOV-001,J-GOV,UI-GOV-01,T-GOV-001,데이터 시점·스키마·정합성 계약,"MIG-GOV-001, DATA_CONTRACT, DQ/lineage 규칙",published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음,Data Architect/DBA,Quant/QA,5,AEG-VS-25-01,G5,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-25-03,S13,W27-28,VS-25,AuditAndKillSwitch,GovernanceAudit,DOMAIN,REQ-GOV-001,GOV-01/02,MIG-GOV-001,J-GOV,UI-GOV-01,T-GOV-001,도메인 불변조건·상태전이 구현,"src/Modules/GovernanceAudit/AuditAndKillSwitch/Domain, 정책 결정표",순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음,BE/Quant Lead,Architect/QA,6,AEG-VS-25-02,G5,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-25-04,S13,W27-28,VS-25,AuditAndKillSwitch,GovernanceAudit,BE,REQ-GOV-001,GOV-01/02,MIG-GOV-001,J-GOV,UI-GOV-01,T-GOV-001,Vertical Slice API/Application/SQL 구현,GOV-01/02; Endpoint/Validator/Application/Dapper/Outbox,인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치,BE Lead,Security/QA,8,AEG-VS-25-03,G5,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-VS-25-05,S13,W27-28,VS-25,AuditAndKillSwitch,GovernanceAudit,ASYNC,REQ-GOV-001,GOV-01/02,MIG-GOV-001,J-GOV,UI-GOV-01,T-GOV-001,Event/Job/Inbox·재처리 구현,"J-GOV; integration event, JobRun, watermark, inbox","동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨",BE/SRE,Data/Ops,5,AEG-VS-25-04,G5,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-25-06,S13,W27-28,VS-25,AuditAndKillSwitch,GovernanceAudit,FE,REQ-GOV-001,GOV-01/02,MIG-GOV-001,J-GOV,UI-GOV-01,T-GOV-001,Vue feature·Zod·Query·컴포넌트 구현,UI-GOV-01; route/api/schema/queries/pages/components,loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨,FE Lead,UX/QA,6,AEG-VS-25-05,G5,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-VS-25-07,S13,W27-28,VS-25,AuditAndKillSwitch,GovernanceAudit,TESTOPS,REQ-GOV-001,GOV-01/02,MIG-GOV-001,J-GOV,UI-GOV-01,T-GOV-001,회귀·관제·Runbook·Rollback 증거,T-GOV-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook,Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨,QA/SRE,Module Owner,7,AEG-VS-25-06,G5,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-018,S14,W29-30,Cross,Cross-cutting,Performance,NFR,REQ-NFR-001,Cross,Cross,Cross,Cross,Cross,API P95 고도화,API P95·batch SLA·portfolio 규모·backfill 부하시험,개장 전 추천 SLA와 고객 API SLO가 동시에 충족,SRE/QA,Architect/QA,10,AEG-X-017,G6-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
AEG-X-019,S14,W29-30,Cross,Cross-cutting,Cutover,RELEASE,REQ-CUT-001,Cross,Cross,Cross,Cross,Cross,dry-run/backfill/recon/rollback/release evidence 고도화,dry-run/backfill/recon/rollback/release evidence,"미승인 공개 0, duplicate 0, rollback 리허설과 승인 서명",PM/Ops,Architect/QA,10,AEG-X-018,G6-A,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
AEG-X-020,S15,W31-32,Cross,Cross-cutting,Hypercare,OPS,REQ-HYP-001,Cross,Cross,Cross,Cross,Cross,P1/P2 triage 고도화,P1/P2 triage·daily reconciliation·debt burn-down,초기 안정화 Exit 기준·Owner·잔여 부채 승인,Ops/PM,Architect/QA,8,AEG-X-019,G6,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
1 WBS_ID Sprint Weeks Slice_ID Slice Module Workstream Requirement_ID API_ID DB_Migration_ID Job_Event_ID UI_ID Test_ID Task Artifact Acceptance_Evidence Primary_Owner Secondary PD Dependency Gate Evidence_Class Risk Status
2 AEG-X-001 S0 W1-2 Cross Cross-cutting Governance GOV DOC-NR-01~08 Cross Cross Cross Cross Cross Version Coverage Matrix 고도화 Version Coverage Matrix·Supersession Registry 모든 첨부와 v10/v12/v12.1의 Retained/Improved/Superseded 상태 100% PM/Architect Architect/QA 5 - G0 SOURCE+DESIGN_PROPOSAL P0 PLANNED
3 AEG-X-002 S0 W1-2 Cross Cross-cutting Toolchain DEVEX REQ-PLAT-TOOL Cross Cross Cross Cross Cross global.json 고도화 global.json·Directory.Packages·node/packageManager·lock 정책 승인 runner에서 dotnet restore/build/test 및 pnpm frozen build 재현 DevOps Architect/QA 6 AEG-X-001 G0 SOURCE+DESIGN_PROPOSAL P0 PLANNED
4 AEG-X-003 S0 W1-2 Cross Cross-cutting Architecture FITNESS REQ-ARCH-001 Cross Cross Cross Cross Cross 모듈/namespace/schema/API 금지 의존 Architecture tests 고도화 모듈/namespace/schema/API 금지 의존 Architecture tests Domain 기술의존 0, 모듈 직접 DB 접근 0, ID 중복 0 Architect/QA Architect/QA 7 AEG-X-002 G0 SOURCE+DESIGN_PROPOSAL P0 PLANNED
5 AEG-X-004 S0 W1-2 Cross Cross-cutting Database DBA REQ-DB-001 Cross Cross Cross Cross Cross DbUp fresh/upgrade/re-run/failure 복구 rehearsal 고도화 DbUp fresh/upgrade/re-run/failure 복구 rehearsal PostgreSQL 승인 버전에서 4 시나리오와 checksum 변경 차단 통과 DBA/BE Architect/QA 8 AEG-X-002 G0 SOURCE+DESIGN_PROPOSAL P0 PLANNED
6 AEG-X-005 S0 W1-2 Cross Cross-cutting Security SEC REQ-SEC-BASE Cross Cross Cross Cross Cross OIDC/JWT ADR, DevelopmentHeader 제한, fail-closed 고도화 OIDC/JWT ADR, DevelopmentHeader 제한, fail-closed 비개발 무인증 접근 0, secret/log/prompt 노출 0 Security/BE Architect/QA 7 AEG-X-001 G0 SOURCE+DESIGN_PROPOSAL P0 PLANNED
7 AEG-X-006 S0 W1-2 Cross Cross-cutting Reliability ASYNC REQ-ASYNC-001 Cross Cross Cross Cross Cross Outbox publisher 고도화 Outbox publisher·Inbox lease·dead-letter·replay duplicate 0, crash-before/after-publish 시나리오와 replay hash 통과 BE/SRE Architect/QA 10 AEG-X-004 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
8 AEG-X-007 S0 W1-2 Cross Cross-cutting Observability OPS REQ-OBS-001 Cross Cross Cross Cross Cross Serilog/OTel correlation 고도화 Serilog/OTel correlation·metric naming·Telegram redaction trace→job→decision→outbox 연결, PII redaction test 통과 SRE/Security Architect/QA 7 AEG-X-005 G0 SOURCE+DESIGN_PROPOSAL P1 PLANNED
9 AEG-X-008 S0 W1-2 Cross Cross-cutting API Contract CONTRACT REQ-API-001 Cross Cross Cross Cross Cross OpenAPI artifact 고도화 OpenAPI artifact·ProblemDetails taxonomy·FE contract generation OpenAPI diff와 breaking change approval 없이는 Release 차단 BE/FE Architect Architect/QA 8 AEG-X-003 G3 SOURCE+DESIGN_PROPOSAL P1 PLANNED
10 AEG-VS-00-01 S0 W1-2 VS-00 PlatformBootstrap Host/BuildingBlocks GOV REQ-PLAT-001 HEALTH-01 MIG-0000/0013 - UI-PLAT-01 T-ARCH-001 정책·범위·실패상태 계약 확정 REQ-PLAT-001, VS-00 SLICE_SPEC, ADR/Decision Log 사용자 결과 '빌드·마이그레이션·관제 가능한 단일 배포 골격'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 - G0 SOURCE+DESIGN_PROPOSAL P0 PLANNED
11 AEG-VS-00-02 S0 W1-2 VS-00 PlatformBootstrap Host/BuildingBlocks DATA REQ-PLAT-001 HEALTH-01 MIG-0000/0013 - UI-PLAT-01 T-ARCH-001 데이터 시점·스키마·정합성 계약 MIG-0000/0013, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-00-01 G0 SOURCE+DESIGN_PROPOSAL P0 PLANNED
12 AEG-VS-00-03 S0 W1-2 VS-00 PlatformBootstrap Host/BuildingBlocks DOMAIN REQ-PLAT-001 HEALTH-01 MIG-0000/0013 - UI-PLAT-01 T-ARCH-001 도메인 불변조건·상태전이 구현 src/Modules/Host/BuildingBlocks/PlatformBootstrap/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-00-02 G0 SOURCE+DESIGN_PROPOSAL P0 PLANNED
13 AEG-VS-00-04 S0 W1-2 VS-00 PlatformBootstrap Host/BuildingBlocks BE REQ-PLAT-001 HEALTH-01 MIG-0000/0013 - UI-PLAT-01 T-ARCH-001 Vertical Slice API/Application/SQL 구현 HEALTH-01; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-00-03 G0 SOURCE+DESIGN_PROPOSAL P0 PLANNED
14 AEG-VS-00-05 S0 W1-2 VS-00 PlatformBootstrap Host/BuildingBlocks ASYNC REQ-PLAT-001 HEALTH-01 MIG-0000/0013 - UI-PLAT-01 T-ARCH-001 Event/Job/Inbox·재처리 구현 -; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-00-04 G0 SOURCE+DESIGN_PROPOSAL P1 PLANNED
15 AEG-VS-00-06 S0 W1-2 VS-00 PlatformBootstrap Host/BuildingBlocks FE REQ-PLAT-001 HEALTH-01 MIG-0000/0013 - UI-PLAT-01 T-ARCH-001 Vue feature·Zod·Query·컴포넌트 구현 UI-PLAT-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-00-05 G0 SOURCE+DESIGN_PROPOSAL P1 PLANNED
16 AEG-VS-00-07 S0 W1-2 VS-00 PlatformBootstrap Host/BuildingBlocks TESTOPS REQ-PLAT-001 HEALTH-01 MIG-0000/0013 - UI-PLAT-01 T-ARCH-001 회귀·관제·Runbook·Rollback 증거 T-ARCH-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-00-06 G0 SOURCE+DESIGN_PROPOSAL P0 PLANNED
17 AEG-X-009 S1 W3-4 Cross Cross-cutting Data Governance DATA REQ-DATA-SOURCE Cross Cross Cross Cross Cross Source catalog/license/SLA/timezone/unit/checksum 고도화 Source catalog/license/SLA/timezone/unit/checksum 승인 없는 source가 ingestion 또는 추천으로 진입하지 않음 Data Governance Architect/QA 8 AEG-X-001 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
18 AEG-VS-01-01 S1 W3-4 VS-01 ManageIdentityAndRoles IdentityAccess GOV REQ-IAM-001 IAM-01/02 MIG-IAM-001 - UI-IAM-01 T-IAM-001 정책·범위·실패상태 계약 확정 REQ-IAM-001, VS-01 SLICE_SPEC, ADR/Decision Log 사용자 결과 'MFA·RBAC·업무분장과 승인 경계'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-00 G1-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
19 AEG-VS-01-02 S1 W3-4 VS-01 ManageIdentityAndRoles IdentityAccess DATA REQ-IAM-001 IAM-01/02 MIG-IAM-001 - UI-IAM-01 T-IAM-001 데이터 시점·스키마·정합성 계약 MIG-IAM-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-01-01 G1-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
20 AEG-VS-01-03 S1 W3-4 VS-01 ManageIdentityAndRoles IdentityAccess DOMAIN REQ-IAM-001 IAM-01/02 MIG-IAM-001 - UI-IAM-01 T-IAM-001 도메인 불변조건·상태전이 구현 src/Modules/IdentityAccess/ManageIdentityAndRoles/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-01-02 G1-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
21 AEG-VS-01-04 S1 W3-4 VS-01 ManageIdentityAndRoles IdentityAccess BE REQ-IAM-001 IAM-01/02 MIG-IAM-001 - UI-IAM-01 T-IAM-001 Vertical Slice API/Application/SQL 구현 IAM-01/02; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-01-03 G1-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
22 AEG-VS-01-05 S1 W3-4 VS-01 ManageIdentityAndRoles IdentityAccess ASYNC REQ-IAM-001 IAM-01/02 MIG-IAM-001 - UI-IAM-01 T-IAM-001 Event/Job/Inbox·재처리 구현 -; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-01-04 G1-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
23 AEG-VS-01-06 S1 W3-4 VS-01 ManageIdentityAndRoles IdentityAccess FE REQ-IAM-001 IAM-01/02 MIG-IAM-001 - UI-IAM-01 T-IAM-001 Vue feature·Zod·Query·컴포넌트 구현 UI-IAM-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-01-05 G1-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
24 AEG-VS-01-07 S1 W3-4 VS-01 ManageIdentityAndRoles IdentityAccess TESTOPS REQ-IAM-001 IAM-01/02 MIG-IAM-001 - UI-IAM-01 T-IAM-001 회귀·관제·Runbook·Rollback 증거 T-IAM-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-01-06 G1-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
25 AEG-VS-02-01 S1 W3-4 VS-02 SynchronizeSecurityMaster SecurityMaster GOV REQ-SEC-001 SEC-01/02,DAT-01 MIG-SEC-001 J01 UI-SEC-01 T-SEC-001 정책·범위·실패상태 계약 확정 REQ-SEC-001, VS-02 SLICE_SPEC, ADR/Decision Log 사용자 결과 '상장·상폐·상품구조·거래가능성의 PIT 기준'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-00 G1-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
26 AEG-VS-02-02 S1 W3-4 VS-02 SynchronizeSecurityMaster SecurityMaster DATA REQ-SEC-001 SEC-01/02,DAT-01 MIG-SEC-001 J01 UI-SEC-01 T-SEC-001 데이터 시점·스키마·정합성 계약 MIG-SEC-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-02-01 G1-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
27 AEG-VS-02-03 S1 W3-4 VS-02 SynchronizeSecurityMaster SecurityMaster DOMAIN REQ-SEC-001 SEC-01/02,DAT-01 MIG-SEC-001 J01 UI-SEC-01 T-SEC-001 도메인 불변조건·상태전이 구현 src/Modules/SecurityMaster/SynchronizeSecurityMaster/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-02-02 G1-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
28 AEG-VS-02-04 S1 W3-4 VS-02 SynchronizeSecurityMaster SecurityMaster BE REQ-SEC-001 SEC-01/02,DAT-01 MIG-SEC-001 J01 UI-SEC-01 T-SEC-001 Vertical Slice API/Application/SQL 구현 SEC-01/02,DAT-01; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-02-03 G1-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
29 AEG-VS-02-05 S1 W3-4 VS-02 SynchronizeSecurityMaster SecurityMaster ASYNC REQ-SEC-001 SEC-01/02,DAT-01 MIG-SEC-001 J01 UI-SEC-01 T-SEC-001 Event/Job/Inbox·재처리 구현 J01; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-02-04 G1-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
30 AEG-VS-02-06 S1 W3-4 VS-02 SynchronizeSecurityMaster SecurityMaster FE REQ-SEC-001 SEC-01/02,DAT-01 MIG-SEC-001 J01 UI-SEC-01 T-SEC-001 Vue feature·Zod·Query·컴포넌트 구현 UI-SEC-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-02-05 G1-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
31 AEG-VS-02-07 S1 W3-4 VS-02 SynchronizeSecurityMaster SecurityMaster TESTOPS REQ-SEC-001 SEC-01/02,DAT-01 MIG-SEC-001 J01 UI-SEC-01 T-SEC-001 회귀·관제·Runbook·Rollback 증거 T-SEC-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-02-06 G1-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
32 AEG-X-010 S2 W5-6 Cross Cross-cutting Read Model PROJECTION REQ-RM-001 Cross Cross Cross Cross Cross projection owner/version/watermark/rebuild/staleness 고도화 projection owner/version/watermark/rebuild/staleness write model 직접 UI join 0, rebuild 결과 hash 동일 BE/Data Architect/QA 8 AEG-X-006 G3 SOURCE+DESIGN_PROPOSAL P1 PLANNED
33 AEG-VS-03-01 S2 W5-6 VS-03 IngestMarketDataPIT MarketData GOV REQ-DAT-001 DAT-02/03 MIG-MD-001/002 J02 UI-DQ-01 T-DQ-001 정책·범위·실패상태 계약 확정 REQ-DAT-001, VS-03 SLICE_SPEC, ADR/Decision Log 사용자 결과 '원시·조정 OHLCV·FX·금리의 revision 적재'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-02 G1-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
34 AEG-VS-03-02 S2 W5-6 VS-03 IngestMarketDataPIT MarketData DATA REQ-DAT-001 DAT-02/03 MIG-MD-001/002 J02 UI-DQ-01 T-DQ-001 데이터 시점·스키마·정합성 계약 MIG-MD-001/002, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-03-01 G1-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
35 AEG-VS-03-03 S2 W5-6 VS-03 IngestMarketDataPIT MarketData DOMAIN REQ-DAT-001 DAT-02/03 MIG-MD-001/002 J02 UI-DQ-01 T-DQ-001 도메인 불변조건·상태전이 구현 src/Modules/MarketData/IngestMarketDataPIT/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-03-02 G1-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
36 AEG-VS-03-04 S2 W5-6 VS-03 IngestMarketDataPIT MarketData BE REQ-DAT-001 DAT-02/03 MIG-MD-001/002 J02 UI-DQ-01 T-DQ-001 Vertical Slice API/Application/SQL 구현 DAT-02/03; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-03-03 G1-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
37 AEG-VS-03-05 S2 W5-6 VS-03 IngestMarketDataPIT MarketData ASYNC REQ-DAT-001 DAT-02/03 MIG-MD-001/002 J02 UI-DQ-01 T-DQ-001 Event/Job/Inbox·재처리 구현 J02; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-03-04 G1-B SOURCE+DESIGN_PROPOSAL P1 PLANNED
38 AEG-VS-03-06 S2 W5-6 VS-03 IngestMarketDataPIT MarketData FE REQ-DAT-001 DAT-02/03 MIG-MD-001/002 J02 UI-DQ-01 T-DQ-001 Vue feature·Zod·Query·컴포넌트 구현 UI-DQ-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-03-05 G1-B SOURCE+DESIGN_PROPOSAL P1 PLANNED
39 AEG-VS-03-07 S2 W5-6 VS-03 IngestMarketDataPIT MarketData TESTOPS REQ-DAT-001 DAT-02/03 MIG-MD-001/002 J02 UI-DQ-01 T-DQ-001 회귀·관제·Runbook·Rollback 증거 T-DQ-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-03-06 G1-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
40 AEG-VS-04-01 S2 W5-6 VS-04 ApplyCorporateActions SecurityMaster GOV REQ-CA-001 DAT-04 MIG-CA-001 J03 UI-DQ-02 T-CA-001 정책·범위·실패상태 계약 확정 REQ-CA-001, VS-04 SLICE_SPEC, ADR/Decision Log 사용자 결과 '분할·배당·증자·합병·상폐의 가격·수량·원가 일관성'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-02,VS-03 G1-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
41 AEG-VS-04-02 S2 W5-6 VS-04 ApplyCorporateActions SecurityMaster DATA REQ-CA-001 DAT-04 MIG-CA-001 J03 UI-DQ-02 T-CA-001 데이터 시점·스키마·정합성 계약 MIG-CA-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-04-01 G1-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
42 AEG-VS-04-03 S2 W5-6 VS-04 ApplyCorporateActions SecurityMaster DOMAIN REQ-CA-001 DAT-04 MIG-CA-001 J03 UI-DQ-02 T-CA-001 도메인 불변조건·상태전이 구현 src/Modules/SecurityMaster/ApplyCorporateActions/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-04-02 G1-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
43 AEG-VS-04-04 S2 W5-6 VS-04 ApplyCorporateActions SecurityMaster BE REQ-CA-001 DAT-04 MIG-CA-001 J03 UI-DQ-02 T-CA-001 Vertical Slice API/Application/SQL 구현 DAT-04; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-04-03 G1-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
44 AEG-VS-04-05 S2 W5-6 VS-04 ApplyCorporateActions SecurityMaster ASYNC REQ-CA-001 DAT-04 MIG-CA-001 J03 UI-DQ-02 T-CA-001 Event/Job/Inbox·재처리 구현 J03; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-04-04 G1-B SOURCE+DESIGN_PROPOSAL P1 PLANNED
45 AEG-VS-04-06 S2 W5-6 VS-04 ApplyCorporateActions SecurityMaster FE REQ-CA-001 DAT-04 MIG-CA-001 J03 UI-DQ-02 T-CA-001 Vue feature·Zod·Query·컴포넌트 구현 UI-DQ-02; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-04-05 G1-B SOURCE+DESIGN_PROPOSAL P1 PLANNED
46 AEG-VS-04-07 S2 W5-6 VS-04 ApplyCorporateActions SecurityMaster TESTOPS REQ-CA-001 DAT-04 MIG-CA-001 J03 UI-DQ-02 T-CA-001 회귀·관제·Runbook·Rollback 증거 T-CA-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-04-06 G1-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
47 AEG-VS-05-01 S3 W7-8 VS-05 IngestFundamentalsPIT FundamentalsPIT GOV REQ-FND-001 DAT-05 MIG-FND-001/002 J04 UI-FND-01 T-FND-001 정책·범위·실패상태 계약 확정 REQ-FND-001, VS-05 SLICE_SPEC, ADR/Decision Log 사용자 결과 '공시·재무·컨센서스 공개시각과 정정 이력'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-02 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
48 AEG-VS-05-02 S3 W7-8 VS-05 IngestFundamentalsPIT FundamentalsPIT DATA REQ-FND-001 DAT-05 MIG-FND-001/002 J04 UI-FND-01 T-FND-001 데이터 시점·스키마·정합성 계약 MIG-FND-001/002, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-05-01 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
49 AEG-VS-05-03 S3 W7-8 VS-05 IngestFundamentalsPIT FundamentalsPIT DOMAIN REQ-FND-001 DAT-05 MIG-FND-001/002 J04 UI-FND-01 T-FND-001 도메인 불변조건·상태전이 구현 src/Modules/FundamentalsPIT/IngestFundamentalsPIT/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-05-02 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
50 AEG-VS-05-04 S3 W7-8 VS-05 IngestFundamentalsPIT FundamentalsPIT BE REQ-FND-001 DAT-05 MIG-FND-001/002 J04 UI-FND-01 T-FND-001 Vertical Slice API/Application/SQL 구현 DAT-05; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-05-03 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
51 AEG-VS-05-05 S3 W7-8 VS-05 IngestFundamentalsPIT FundamentalsPIT ASYNC REQ-FND-001 DAT-05 MIG-FND-001/002 J04 UI-FND-01 T-FND-001 Event/Job/Inbox·재처리 구현 J04; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-05-04 G1 SOURCE+DESIGN_PROPOSAL P1 PLANNED
52 AEG-VS-05-06 S3 W7-8 VS-05 IngestFundamentalsPIT FundamentalsPIT FE REQ-FND-001 DAT-05 MIG-FND-001/002 J04 UI-FND-01 T-FND-001 Vue feature·Zod·Query·컴포넌트 구현 UI-FND-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-05-05 G1 SOURCE+DESIGN_PROPOSAL P1 PLANNED
53 AEG-VS-05-07 S3 W7-8 VS-05 IngestFundamentalsPIT FundamentalsPIT TESTOPS REQ-FND-001 DAT-05 MIG-FND-001/002 J04 UI-FND-01 T-FND-001 회귀·관제·Runbook·Rollback 증거 T-FND-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-05-06 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
54 AEG-VS-06-01 S3 W7-8 VS-06 MaintainFeeTaxFxSchedule PortfolioRisk GOV REQ-COST-001 COST-01/02 MIG-COST-001 J04C UI-COST-01 T-COST-001 정책·범위·실패상태 계약 확정 REQ-COST-001, VS-06 SLICE_SPEC, ADR/Decision Log 사용자 결과 '계좌·시장·상품별 Fee/Tax/FX valid-time 계약'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-02 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
55 AEG-VS-06-02 S3 W7-8 VS-06 MaintainFeeTaxFxSchedule PortfolioRisk DATA REQ-COST-001 COST-01/02 MIG-COST-001 J04C UI-COST-01 T-COST-001 데이터 시점·스키마·정합성 계약 MIG-COST-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-06-01 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
56 AEG-VS-06-03 S3 W7-8 VS-06 MaintainFeeTaxFxSchedule PortfolioRisk DOMAIN REQ-COST-001 COST-01/02 MIG-COST-001 J04C UI-COST-01 T-COST-001 도메인 불변조건·상태전이 구현 src/Modules/PortfolioRisk/MaintainFeeTaxFxSchedule/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-06-02 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
57 AEG-VS-06-04 S3 W7-8 VS-06 MaintainFeeTaxFxSchedule PortfolioRisk BE REQ-COST-001 COST-01/02 MIG-COST-001 J04C UI-COST-01 T-COST-001 Vertical Slice API/Application/SQL 구현 COST-01/02; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-06-03 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
58 AEG-VS-06-05 S3 W7-8 VS-06 MaintainFeeTaxFxSchedule PortfolioRisk ASYNC REQ-COST-001 COST-01/02 MIG-COST-001 J04C UI-COST-01 T-COST-001 Event/Job/Inbox·재처리 구현 J04C; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-06-04 G1 SOURCE+DESIGN_PROPOSAL P1 PLANNED
59 AEG-VS-06-06 S3 W7-8 VS-06 MaintainFeeTaxFxSchedule PortfolioRisk FE REQ-COST-001 COST-01/02 MIG-COST-001 J04C UI-COST-01 T-COST-001 Vue feature·Zod·Query·컴포넌트 구현 UI-COST-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-06-05 G1 SOURCE+DESIGN_PROPOSAL P1 PLANNED
60 AEG-VS-06-07 S3 W7-8 VS-06 MaintainFeeTaxFxSchedule PortfolioRisk TESTOPS REQ-COST-001 COST-01/02 MIG-COST-001 J04C UI-COST-01 T-COST-001 회귀·관제·Runbook·Rollback 증거 T-COST-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-06-06 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
61 AEG-VS-08-01 S3 W7-8 VS-08 MaintainPortfolioLedger PortfolioRisk GOV REQ-LED-001 POR-01 MIG-LED-001/002 J12L UI-POR-01 T-LED-001 정책·범위·실패상태 계약 확정 REQ-LED-001, VS-08 SLICE_SPEC, ADR/Decision Log 사용자 결과 '현금·체결·Lot·Cycle 불변 원장과 대사 기준'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-02,VS-06 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
62 AEG-VS-08-02 S3 W7-8 VS-08 MaintainPortfolioLedger PortfolioRisk DATA REQ-LED-001 POR-01 MIG-LED-001/002 J12L UI-POR-01 T-LED-001 데이터 시점·스키마·정합성 계약 MIG-LED-001/002, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-08-01 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
63 AEG-VS-08-03 S3 W7-8 VS-08 MaintainPortfolioLedger PortfolioRisk DOMAIN REQ-LED-001 POR-01 MIG-LED-001/002 J12L UI-POR-01 T-LED-001 도메인 불변조건·상태전이 구현 src/Modules/PortfolioRisk/MaintainPortfolioLedger/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-08-02 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
64 AEG-VS-08-04 S3 W7-8 VS-08 MaintainPortfolioLedger PortfolioRisk BE REQ-LED-001 POR-01 MIG-LED-001/002 J12L UI-POR-01 T-LED-001 Vertical Slice API/Application/SQL 구현 POR-01; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-08-03 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
65 AEG-VS-08-05 S3 W7-8 VS-08 MaintainPortfolioLedger PortfolioRisk ASYNC REQ-LED-001 POR-01 MIG-LED-001/002 J12L UI-POR-01 T-LED-001 Event/Job/Inbox·재처리 구현 J12L; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-08-04 G1 SOURCE+DESIGN_PROPOSAL P1 PLANNED
66 AEG-VS-08-06 S3 W7-8 VS-08 MaintainPortfolioLedger PortfolioRisk FE REQ-LED-001 POR-01 MIG-LED-001/002 J12L UI-POR-01 T-LED-001 Vue feature·Zod·Query·컴포넌트 구현 UI-POR-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-08-05 G1 SOURCE+DESIGN_PROPOSAL P1 PLANNED
67 AEG-VS-08-07 S3 W7-8 VS-08 MaintainPortfolioLedger PortfolioRisk TESTOPS REQ-LED-001 POR-01 MIG-LED-001/002 J12L UI-POR-01 T-LED-001 회귀·관제·Runbook·Rollback 증거 T-LED-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-08-06 G1 SOURCE+DESIGN_PROPOSAL P0 PLANNED
68 AEG-X-011 S4 W9-10 Cross Cross-cutting Algorithm GOLDEN REQ-ALG-GOLDEN Cross Cross Cross Cross Cross Python↔C# Golden vector 고도화 Python↔C# Golden vector·epsilon·rounding 계약 정책 ID별 경계·우선순위·cost×2 결과 허용오차 내 동일 Quant/QA Architect/QA 10 VS-09 G2-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
69 AEG-VS-09-01 S4 W9-10 VS-09 BuildEvidenceSnapshot ResearchFactors GOV REQ-EVD-001 EVD-01 MIG-EVD-001 J06 UI-EVD-01 T-EVD-001 정책·범위·실패상태 계약 확정 REQ-EVD-001, VS-09 SLICE_SPEC, ADR/Decision Log 사용자 결과 'Dataset/Model/Config/Code SHA가 동결된 Evidence'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-03,VS-04,VS-05,VS-06 G2-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
70 AEG-VS-09-02 S4 W9-10 VS-09 BuildEvidenceSnapshot ResearchFactors DATA REQ-EVD-001 EVD-01 MIG-EVD-001 J06 UI-EVD-01 T-EVD-001 데이터 시점·스키마·정합성 계약 MIG-EVD-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-09-01 G2-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
71 AEG-VS-09-03 S4 W9-10 VS-09 BuildEvidenceSnapshot ResearchFactors DOMAIN REQ-EVD-001 EVD-01 MIG-EVD-001 J06 UI-EVD-01 T-EVD-001 도메인 불변조건·상태전이 구현 src/Modules/ResearchFactors/BuildEvidenceSnapshot/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-09-02 G2-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
72 AEG-VS-09-04 S4 W9-10 VS-09 BuildEvidenceSnapshot ResearchFactors BE REQ-EVD-001 EVD-01 MIG-EVD-001 J06 UI-EVD-01 T-EVD-001 Vertical Slice API/Application/SQL 구현 EVD-01; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-09-03 G2-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
73 AEG-VS-09-05 S4 W9-10 VS-09 BuildEvidenceSnapshot ResearchFactors ASYNC REQ-EVD-001 EVD-01 MIG-EVD-001 J06 UI-EVD-01 T-EVD-001 Event/Job/Inbox·재처리 구현 J06; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-09-04 G2-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
74 AEG-VS-09-06 S4 W9-10 VS-09 BuildEvidenceSnapshot ResearchFactors FE REQ-EVD-001 EVD-01 MIG-EVD-001 J06 UI-EVD-01 T-EVD-001 Vue feature·Zod·Query·컴포넌트 구현 UI-EVD-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-09-05 G2-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
75 AEG-VS-09-07 S4 W9-10 VS-09 BuildEvidenceSnapshot ResearchFactors TESTOPS REQ-EVD-001 EVD-01 MIG-EVD-001 J06 UI-EVD-01 T-EVD-001 회귀·관제·Runbook·Rollback 증거 T-EVD-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-09-06 G2-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
76 AEG-VS-10-01 S4 W9-10 VS-10 GenerateSellDecision SignalEngine GOV REQ-SELL-001 SIG-SELL-01 MIG-SIG-001 J08S UI-SELL-01 T-SELL-001 정책·범위·실패상태 계약 확정 REQ-SELL-001, VS-10 SLICE_SPEC, ADR/Decision Log 사용자 결과 '우선순위가 보존된 HOLD/부분매도/전량매도 결정'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-08,VS-09,VS-13 G2-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
77 AEG-VS-10-02 S4 W9-10 VS-10 GenerateSellDecision SignalEngine DATA REQ-SELL-001 SIG-SELL-01 MIG-SIG-001 J08S UI-SELL-01 T-SELL-001 데이터 시점·스키마·정합성 계약 MIG-SIG-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-10-01 G2-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
78 AEG-VS-10-03 S4 W9-10 VS-10 GenerateSellDecision SignalEngine DOMAIN REQ-SELL-001 SIG-SELL-01 MIG-SIG-001 J08S UI-SELL-01 T-SELL-001 도메인 불변조건·상태전이 구현 src/Modules/SignalEngine/GenerateSellDecision/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-10-02 G2-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
79 AEG-VS-10-04 S4 W9-10 VS-10 GenerateSellDecision SignalEngine BE REQ-SELL-001 SIG-SELL-01 MIG-SIG-001 J08S UI-SELL-01 T-SELL-001 Vertical Slice API/Application/SQL 구현 SIG-SELL-01; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-10-03 G2-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
80 AEG-VS-10-05 S4 W9-10 VS-10 GenerateSellDecision SignalEngine ASYNC REQ-SELL-001 SIG-SELL-01 MIG-SIG-001 J08S UI-SELL-01 T-SELL-001 Event/Job/Inbox·재처리 구현 J08S; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-10-04 G2-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
81 AEG-VS-10-06 S4 W9-10 VS-10 GenerateSellDecision SignalEngine FE REQ-SELL-001 SIG-SELL-01 MIG-SIG-001 J08S UI-SELL-01 T-SELL-001 Vue feature·Zod·Query·컴포넌트 구현 UI-SELL-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-10-05 G2-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
82 AEG-VS-10-07 S4 W9-10 VS-10 GenerateSellDecision SignalEngine TESTOPS REQ-SELL-001 SIG-SELL-01 MIG-SIG-001 J08S UI-SELL-01 T-SELL-001 회귀·관제·Runbook·Rollback 증거 T-SELL-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-10-06 G2-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
83 AEG-X-012 S5 W11-12 Cross Cross-cutting Research REPRO REQ-REPRO-001 Cross Cross Cross Cross Cross dataset/code/config/environment manifest와 artifact hash 고도화 dataset/code/config/environment manifest와 artifact hash 동일 manifest·seed 결과 재현, 실패 artifact 보존 Quant/Data Architect/QA 12 AEG-X-009 G2 SOURCE+DESIGN_PROPOSAL P0 PLANNED
84 AEG-VS-11-01 S5 W11-12 VS-11 ManageReentryWatch SignalEngine GOV REQ-RE-001 RE-01/02 MIG-RE-001 J09 UI-RE-01 T-RE-001 정책·범위·실패상태 계약 확정 REQ-RE-001, VS-11 SLICE_SPEC, ADR/Decision Log 사용자 결과 '비가치훼손 매도의 재진입 계약·단계·만료'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-10 G2 SOURCE+DESIGN_PROPOSAL P0 PLANNED
85 AEG-VS-11-02 S5 W11-12 VS-11 ManageReentryWatch SignalEngine DATA REQ-RE-001 RE-01/02 MIG-RE-001 J09 UI-RE-01 T-RE-001 데이터 시점·스키마·정합성 계약 MIG-RE-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-11-01 G2 SOURCE+DESIGN_PROPOSAL P0 PLANNED
86 AEG-VS-11-03 S5 W11-12 VS-11 ManageReentryWatch SignalEngine DOMAIN REQ-RE-001 RE-01/02 MIG-RE-001 J09 UI-RE-01 T-RE-001 도메인 불변조건·상태전이 구현 src/Modules/SignalEngine/ManageReentryWatch/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-11-02 G2 SOURCE+DESIGN_PROPOSAL P0 PLANNED
87 AEG-VS-11-04 S5 W11-12 VS-11 ManageReentryWatch SignalEngine BE REQ-RE-001 RE-01/02 MIG-RE-001 J09 UI-RE-01 T-RE-001 Vertical Slice API/Application/SQL 구현 RE-01/02; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-11-03 G2 SOURCE+DESIGN_PROPOSAL P0 PLANNED
88 AEG-VS-11-05 S5 W11-12 VS-11 ManageReentryWatch SignalEngine ASYNC REQ-RE-001 RE-01/02 MIG-RE-001 J09 UI-RE-01 T-RE-001 Event/Job/Inbox·재처리 구현 J09; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-11-04 G2 SOURCE+DESIGN_PROPOSAL P1 PLANNED
89 AEG-VS-11-06 S5 W11-12 VS-11 ManageReentryWatch SignalEngine FE REQ-RE-001 RE-01/02 MIG-RE-001 J09 UI-RE-01 T-RE-001 Vue feature·Zod·Query·컴포넌트 구현 UI-RE-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-11-05 G2 SOURCE+DESIGN_PROPOSAL P1 PLANNED
90 AEG-VS-11-07 S5 W11-12 VS-11 ManageReentryWatch SignalEngine TESTOPS REQ-RE-001 RE-01/02 MIG-RE-001 J09 UI-RE-01 T-RE-001 회귀·관제·Runbook·Rollback 증거 T-RE-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-11-06 G2 SOURCE+DESIGN_PROPOSAL P0 PLANNED
91 AEG-VS-19-01 S5 W11-12 VS-19 RunFrozenBacktest BacktestingEvaluation GOV REQ-BKT-001 BKT-01/02 MIG-BKT-001 J-BKT UI-BKT-01 T-BKT-001 정책·범위·실패상태 계약 확정 REQ-BKT-001, VS-19 SLICE_SPEC, ADR/Decision Log 사용자 결과 '동결 manifest 기반 워크포워드·OOS·비용 스트레스 재현'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-03,VS-04,VS-05,VS-06,VS-09 G2 SOURCE+DESIGN_PROPOSAL P0 PLANNED
92 AEG-VS-19-02 S5 W11-12 VS-19 RunFrozenBacktest BacktestingEvaluation DATA REQ-BKT-001 BKT-01/02 MIG-BKT-001 J-BKT UI-BKT-01 T-BKT-001 데이터 시점·스키마·정합성 계약 MIG-BKT-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-19-01 G2 SOURCE+DESIGN_PROPOSAL P0 PLANNED
93 AEG-VS-19-03 S5 W11-12 VS-19 RunFrozenBacktest BacktestingEvaluation DOMAIN REQ-BKT-001 BKT-01/02 MIG-BKT-001 J-BKT UI-BKT-01 T-BKT-001 도메인 불변조건·상태전이 구현 src/Modules/BacktestingEvaluation/RunFrozenBacktest/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-19-02 G2 SOURCE+DESIGN_PROPOSAL P0 PLANNED
94 AEG-VS-19-04 S5 W11-12 VS-19 RunFrozenBacktest BacktestingEvaluation BE REQ-BKT-001 BKT-01/02 MIG-BKT-001 J-BKT UI-BKT-01 T-BKT-001 Vertical Slice API/Application/SQL 구현 BKT-01/02; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-19-03 G2 SOURCE+DESIGN_PROPOSAL P0 PLANNED
95 AEG-VS-19-05 S5 W11-12 VS-19 RunFrozenBacktest BacktestingEvaluation ASYNC REQ-BKT-001 BKT-01/02 MIG-BKT-001 J-BKT UI-BKT-01 T-BKT-001 Event/Job/Inbox·재처리 구현 J-BKT; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-19-04 G2 SOURCE+DESIGN_PROPOSAL P1 PLANNED
96 AEG-VS-19-06 S5 W11-12 VS-19 RunFrozenBacktest BacktestingEvaluation FE REQ-BKT-001 BKT-01/02 MIG-BKT-001 J-BKT UI-BKT-01 T-BKT-001 Vue feature·Zod·Query·컴포넌트 구현 UI-BKT-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-19-05 G2 SOURCE+DESIGN_PROPOSAL P1 PLANNED
97 AEG-VS-19-07 S5 W11-12 VS-19 RunFrozenBacktest BacktestingEvaluation TESTOPS REQ-BKT-001 BKT-01/02 MIG-BKT-001 J-BKT UI-BKT-01 T-BKT-001 회귀·관제·Runbook·Rollback 증거 T-BKT-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-19-06 G2 SOURCE+DESIGN_PROPOSAL P0 PLANNED
98 AEG-VS-07-01 S6 W13-14 VS-07 ManageClientIPS ClientAdvisory GOV REQ-CLI-001 CLI-01/02/03 MIG-CLI-001 - UI-CLI-01 T-CLI-001 정책·범위·실패상태 계약 확정 REQ-CLI-001, VS-07 SLICE_SPEC, ADR/Decision Log 사용자 결과 '고객 목표·위험성향·제한상품의 버전 관리'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-01 MVP-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
99 AEG-VS-07-02 S6 W13-14 VS-07 ManageClientIPS ClientAdvisory DATA REQ-CLI-001 CLI-01/02/03 MIG-CLI-001 - UI-CLI-01 T-CLI-001 데이터 시점·스키마·정합성 계약 MIG-CLI-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-07-01 MVP-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
100 AEG-VS-07-03 S6 W13-14 VS-07 ManageClientIPS ClientAdvisory DOMAIN REQ-CLI-001 CLI-01/02/03 MIG-CLI-001 - UI-CLI-01 T-CLI-001 도메인 불변조건·상태전이 구현 src/Modules/ClientAdvisory/ManageClientIPS/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-07-02 MVP-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
101 AEG-VS-07-04 S6 W13-14 VS-07 ManageClientIPS ClientAdvisory BE REQ-CLI-001 CLI-01/02/03 MIG-CLI-001 - UI-CLI-01 T-CLI-001 Vertical Slice API/Application/SQL 구현 CLI-01/02/03; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-07-03 MVP-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
102 AEG-VS-07-05 S6 W13-14 VS-07 ManageClientIPS ClientAdvisory ASYNC REQ-CLI-001 CLI-01/02/03 MIG-CLI-001 - UI-CLI-01 T-CLI-001 Event/Job/Inbox·재처리 구현 -; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-07-04 MVP-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
103 AEG-VS-07-06 S6 W13-14 VS-07 ManageClientIPS ClientAdvisory FE REQ-CLI-001 CLI-01/02/03 MIG-CLI-001 - UI-CLI-01 T-CLI-001 Vue feature·Zod·Query·컴포넌트 구현 UI-CLI-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-07-05 MVP-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
104 AEG-VS-07-07 S6 W13-14 VS-07 ManageClientIPS ClientAdvisory TESTOPS REQ-CLI-001 CLI-01/02/03 MIG-CLI-001 - UI-CLI-01 T-CLI-001 회귀·관제·Runbook·Rollback 증거 T-CLI-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-07-06 MVP-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
105 AEG-VS-14-01 S7 W15-16 VS-14 GenerateDailyRecommendations ClientAdvisory GOV REQ-REC-001 SIG-01/02/03 MIG-REC-001/002 J08 UI-REC-01 T-REC-001 정책·범위·실패상태 계약 확정 REQ-REC-001, VS-14 SLICE_SPEC, ADR/Decision Log 사용자 결과 '고객별 BUY/HOLD/SELL/REENTER/REBALANCE 제안 패키지'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-07,VS-10,VS-12,VS-13 MVP-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
106 AEG-VS-14-02 S7 W15-16 VS-14 GenerateDailyRecommendations ClientAdvisory DATA REQ-REC-001 SIG-01/02/03 MIG-REC-001/002 J08 UI-REC-01 T-REC-001 데이터 시점·스키마·정합성 계약 MIG-REC-001/002, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-14-01 MVP-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
107 AEG-VS-14-03 S7 W15-16 VS-14 GenerateDailyRecommendations ClientAdvisory DOMAIN REQ-REC-001 SIG-01/02/03 MIG-REC-001/002 J08 UI-REC-01 T-REC-001 도메인 불변조건·상태전이 구현 src/Modules/ClientAdvisory/GenerateDailyRecommendations/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-14-02 MVP-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
108 AEG-VS-14-04 S7 W15-16 VS-14 GenerateDailyRecommendations ClientAdvisory BE REQ-REC-001 SIG-01/02/03 MIG-REC-001/002 J08 UI-REC-01 T-REC-001 Vertical Slice API/Application/SQL 구현 SIG-01/02/03; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-14-03 MVP-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
109 AEG-VS-14-05 S7 W15-16 VS-14 GenerateDailyRecommendations ClientAdvisory ASYNC REQ-REC-001 SIG-01/02/03 MIG-REC-001/002 J08 UI-REC-01 T-REC-001 Event/Job/Inbox·재처리 구현 J08; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-14-04 MVP-B SOURCE+DESIGN_PROPOSAL P1 PLANNED
110 AEG-VS-14-06 S7 W15-16 VS-14 GenerateDailyRecommendations ClientAdvisory FE REQ-REC-001 SIG-01/02/03 MIG-REC-001/002 J08 UI-REC-01 T-REC-001 Vue feature·Zod·Query·컴포넌트 구현 UI-REC-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-14-05 MVP-B SOURCE+DESIGN_PROPOSAL P1 PLANNED
111 AEG-VS-14-07 S7 W15-16 VS-14 GenerateDailyRecommendations ClientAdvisory TESTOPS REQ-REC-001 SIG-01/02/03 MIG-REC-001/002 J08 UI-REC-01 T-REC-001 회귀·관제·Runbook·Rollback 증거 T-REC-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-14-06 MVP-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
112 AEG-VS-15-01 S7 W15-16 VS-15 ReviewRecommendation ClientAdvisory GOV REQ-REV-001 SIG-04 MIG-REV-001 - UI-REV-01 T-REV-001 정책·범위·실패상태 계약 확정 REQ-REV-001, VS-15 SLICE_SPEC, ADR/Decision Log 사용자 결과 'maker-checker 승인·보류·기각과 낙관적 동시성'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-14 MVP-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
113 AEG-VS-15-02 S7 W15-16 VS-15 ReviewRecommendation ClientAdvisory DATA REQ-REV-001 SIG-04 MIG-REV-001 - UI-REV-01 T-REV-001 데이터 시점·스키마·정합성 계약 MIG-REV-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-15-01 MVP-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
114 AEG-VS-15-03 S7 W15-16 VS-15 ReviewRecommendation ClientAdvisory DOMAIN REQ-REV-001 SIG-04 MIG-REV-001 - UI-REV-01 T-REV-001 도메인 불변조건·상태전이 구현 src/Modules/ClientAdvisory/ReviewRecommendation/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-15-02 MVP-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
115 AEG-VS-15-04 S7 W15-16 VS-15 ReviewRecommendation ClientAdvisory BE REQ-REV-001 SIG-04 MIG-REV-001 - UI-REV-01 T-REV-001 Vertical Slice API/Application/SQL 구현 SIG-04; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-15-03 MVP-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
116 AEG-VS-15-05 S7 W15-16 VS-15 ReviewRecommendation ClientAdvisory ASYNC REQ-REV-001 SIG-04 MIG-REV-001 - UI-REV-01 T-REV-001 Event/Job/Inbox·재처리 구현 -; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-15-04 MVP-B SOURCE+DESIGN_PROPOSAL P1 PLANNED
117 AEG-VS-15-06 S7 W15-16 VS-15 ReviewRecommendation ClientAdvisory FE REQ-REV-001 SIG-04 MIG-REV-001 - UI-REV-01 T-REV-001 Vue feature·Zod·Query·컴포넌트 구현 UI-REV-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-15-05 MVP-B SOURCE+DESIGN_PROPOSAL P1 PLANNED
118 AEG-VS-15-07 S7 W15-16 VS-15 ReviewRecommendation ClientAdvisory TESTOPS REQ-REV-001 SIG-04 MIG-REV-001 - UI-REV-01 T-REV-001 회귀·관제·Runbook·Rollback 증거 T-REV-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-15-06 MVP-B SOURCE+DESIGN_PROPOSAL P0 PLANNED
119 AEG-X-013 S8 W17-18 Cross Cross-cutting Audit TRACE REQ-AUDIT-E2E Cross Cross Cross Cross Cross Evidence→Decision→Review→Publish→Outcome trace API 고도화 Evidence→Decision→Review→Publish→Outcome trace API publication/decision 기준 누락 링크 0, correction event 보존 Compliance/BE Architect/QA 8 VS-18 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
120 AEG-VS-16-01 S8 W17-18 VS-16 PublishClientAdvice ClientAdvisory GOV REQ-PUB-001 SIG-05 MIG-PUB-001 J-PUB UI-ADV-01 T-PUB-001 정책·범위·실패상태 계약 확정 REQ-PUB-001, VS-16 SLICE_SPEC, ADR/Decision Log 사용자 결과 '승인·유효·데이터 정상 제안만 고객 공개'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-15 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
121 AEG-VS-16-02 S8 W17-18 VS-16 PublishClientAdvice ClientAdvisory DATA REQ-PUB-001 SIG-05 MIG-PUB-001 J-PUB UI-ADV-01 T-PUB-001 데이터 시점·스키마·정합성 계약 MIG-PUB-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-16-01 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
122 AEG-VS-16-03 S8 W17-18 VS-16 PublishClientAdvice ClientAdvisory DOMAIN REQ-PUB-001 SIG-05 MIG-PUB-001 J-PUB UI-ADV-01 T-PUB-001 도메인 불변조건·상태전이 구현 src/Modules/ClientAdvisory/PublishClientAdvice/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-16-02 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
123 AEG-VS-16-04 S8 W17-18 VS-16 PublishClientAdvice ClientAdvisory BE REQ-PUB-001 SIG-05 MIG-PUB-001 J-PUB UI-ADV-01 T-PUB-001 Vertical Slice API/Application/SQL 구현 SIG-05; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-16-03 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
124 AEG-VS-16-05 S8 W17-18 VS-16 PublishClientAdvice ClientAdvisory ASYNC REQ-PUB-001 SIG-05 MIG-PUB-001 J-PUB UI-ADV-01 T-PUB-001 Event/Job/Inbox·재처리 구현 J-PUB; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-16-04 G3 SOURCE+DESIGN_PROPOSAL P1 PLANNED
125 AEG-VS-16-06 S8 W17-18 VS-16 PublishClientAdvice ClientAdvisory FE REQ-PUB-001 SIG-05 MIG-PUB-001 J-PUB UI-ADV-01 T-PUB-001 Vue feature·Zod·Query·컴포넌트 구현 UI-ADV-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-16-05 G3 SOURCE+DESIGN_PROPOSAL P1 PLANNED
126 AEG-VS-16-07 S8 W17-18 VS-16 PublishClientAdvice ClientAdvisory TESTOPS REQ-PUB-001 SIG-05 MIG-PUB-001 J-PUB UI-ADV-01 T-PUB-001 회귀·관제·Runbook·Rollback 증거 T-PUB-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-16-06 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
127 AEG-VS-17-01 S8 W17-18 VS-17 RecordClientDecision ClientAdvisory GOV REQ-CLD-001 SIG-06 MIG-CLD-001 - UI-CLD-01 T-CLD-001 정책·범위·실패상태 계약 확정 REQ-CLD-001, VS-17 SLICE_SPEC, ADR/Decision Log 사용자 결과 '고객 수락·거절·보류와 attribution 연결'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-16 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
128 AEG-VS-17-02 S8 W17-18 VS-17 RecordClientDecision ClientAdvisory DATA REQ-CLD-001 SIG-06 MIG-CLD-001 - UI-CLD-01 T-CLD-001 데이터 시점·스키마·정합성 계약 MIG-CLD-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-17-01 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
129 AEG-VS-17-03 S8 W17-18 VS-17 RecordClientDecision ClientAdvisory DOMAIN REQ-CLD-001 SIG-06 MIG-CLD-001 - UI-CLD-01 T-CLD-001 도메인 불변조건·상태전이 구현 src/Modules/ClientAdvisory/RecordClientDecision/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-17-02 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
130 AEG-VS-17-04 S8 W17-18 VS-17 RecordClientDecision ClientAdvisory BE REQ-CLD-001 SIG-06 MIG-CLD-001 - UI-CLD-01 T-CLD-001 Vertical Slice API/Application/SQL 구현 SIG-06; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-17-03 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
131 AEG-VS-17-05 S8 W17-18 VS-17 RecordClientDecision ClientAdvisory ASYNC REQ-CLD-001 SIG-06 MIG-CLD-001 - UI-CLD-01 T-CLD-001 Event/Job/Inbox·재처리 구현 -; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-17-04 G3 SOURCE+DESIGN_PROPOSAL P1 PLANNED
132 AEG-VS-17-06 S8 W17-18 VS-17 RecordClientDecision ClientAdvisory FE REQ-CLD-001 SIG-06 MIG-CLD-001 - UI-CLD-01 T-CLD-001 Vue feature·Zod·Query·컴포넌트 구현 UI-CLD-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-17-05 G3 SOURCE+DESIGN_PROPOSAL P1 PLANNED
133 AEG-VS-17-07 S8 W17-18 VS-17 RecordClientDecision ClientAdvisory TESTOPS REQ-CLD-001 SIG-06 MIG-CLD-001 - UI-CLD-01 T-CLD-001 회귀·관제·Runbook·Rollback 증거 T-CLD-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-17-06 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
134 AEG-VS-18-01 S8 W17-18 VS-18 EvaluateDecisionOutcome BacktestingEvaluation GOV REQ-EVA-001 EVA-01/02 MIG-EVA-001/002 J10/J11 UI-EVA-01 T-EVA-001 정책·범위·실패상태 계약 확정 REQ-EVA-001, VS-18 SLICE_SPEC, ADR/Decision Log 사용자 결과 '1/5/20/63/126/252일 결과·매도·재진입 품질 평가'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-10,VS-11,VS-16,VS-17 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
135 AEG-VS-18-02 S8 W17-18 VS-18 EvaluateDecisionOutcome BacktestingEvaluation DATA REQ-EVA-001 EVA-01/02 MIG-EVA-001/002 J10/J11 UI-EVA-01 T-EVA-001 데이터 시점·스키마·정합성 계약 MIG-EVA-001/002, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-18-01 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
136 AEG-VS-18-03 S8 W17-18 VS-18 EvaluateDecisionOutcome BacktestingEvaluation DOMAIN REQ-EVA-001 EVA-01/02 MIG-EVA-001/002 J10/J11 UI-EVA-01 T-EVA-001 도메인 불변조건·상태전이 구현 src/Modules/BacktestingEvaluation/EvaluateDecisionOutcome/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-18-02 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
137 AEG-VS-18-04 S8 W17-18 VS-18 EvaluateDecisionOutcome BacktestingEvaluation BE REQ-EVA-001 EVA-01/02 MIG-EVA-001/002 J10/J11 UI-EVA-01 T-EVA-001 Vertical Slice API/Application/SQL 구현 EVA-01/02; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-18-03 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
138 AEG-VS-18-05 S8 W17-18 VS-18 EvaluateDecisionOutcome BacktestingEvaluation ASYNC REQ-EVA-001 EVA-01/02 MIG-EVA-001/002 J10/J11 UI-EVA-01 T-EVA-001 Event/Job/Inbox·재처리 구현 J10/J11; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-18-04 G3 SOURCE+DESIGN_PROPOSAL P1 PLANNED
139 AEG-VS-18-06 S8 W17-18 VS-18 EvaluateDecisionOutcome BacktestingEvaluation FE REQ-EVA-001 EVA-01/02 MIG-EVA-001/002 J10/J11 UI-EVA-01 T-EVA-001 Vue feature·Zod·Query·컴포넌트 구현 UI-EVA-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-18-05 G3 SOURCE+DESIGN_PROPOSAL P1 PLANNED
140 AEG-VS-18-07 S8 W17-18 VS-18 EvaluateDecisionOutcome BacktestingEvaluation TESTOPS REQ-EVA-001 EVA-01/02 MIG-EVA-001/002 J10/J11 UI-EVA-01 T-EVA-001 회귀·관제·Runbook·Rollback 증거 T-EVA-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-18-06 G3 SOURCE+DESIGN_PROPOSAL P0 PLANNED
141 AEG-VS-13-01 S9 W19-20 VS-13 CalculatePortfolioRisk PortfolioRisk GOV REQ-RISK-001 POR-02 MIG-RISK-001 J07 UI-RISK-01 T-RISK-001 정책·범위·실패상태 계약 확정 REQ-RISK-001, VS-13 SLICE_SPEC, ADR/Decision Log 사용자 결과 'ES·집중·상관·자본바닥 위험 스냅샷'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-03,VS-08 Portfolio-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
142 AEG-VS-13-02 S9 W19-20 VS-13 CalculatePortfolioRisk PortfolioRisk DATA REQ-RISK-001 POR-02 MIG-RISK-001 J07 UI-RISK-01 T-RISK-001 데이터 시점·스키마·정합성 계약 MIG-RISK-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-13-01 Portfolio-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
143 AEG-VS-13-03 S9 W19-20 VS-13 CalculatePortfolioRisk PortfolioRisk DOMAIN REQ-RISK-001 POR-02 MIG-RISK-001 J07 UI-RISK-01 T-RISK-001 도메인 불변조건·상태전이 구현 src/Modules/PortfolioRisk/CalculatePortfolioRisk/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-13-02 Portfolio-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
144 AEG-VS-13-04 S9 W19-20 VS-13 CalculatePortfolioRisk PortfolioRisk BE REQ-RISK-001 POR-02 MIG-RISK-001 J07 UI-RISK-01 T-RISK-001 Vertical Slice API/Application/SQL 구현 POR-02; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-13-03 Portfolio-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
145 AEG-VS-13-05 S9 W19-20 VS-13 CalculatePortfolioRisk PortfolioRisk ASYNC REQ-RISK-001 POR-02 MIG-RISK-001 J07 UI-RISK-01 T-RISK-001 Event/Job/Inbox·재처리 구현 J07; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-13-04 Portfolio-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
146 AEG-VS-13-06 S9 W19-20 VS-13 CalculatePortfolioRisk PortfolioRisk FE REQ-RISK-001 POR-02 MIG-RISK-001 J07 UI-RISK-01 T-RISK-001 Vue feature·Zod·Query·컴포넌트 구현 UI-RISK-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-13-05 Portfolio-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
147 AEG-VS-13-07 S9 W19-20 VS-13 CalculatePortfolioRisk PortfolioRisk TESTOPS REQ-RISK-001 POR-02 MIG-RISK-001 J07 UI-RISK-01 T-RISK-001 회귀·관제·Runbook·Rollback 증거 T-RISK-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-13-06 Portfolio-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
148 AEG-VS-21-01 S9 W19-20 VS-21 BuildRebalanceProposal PortfolioRisk GOV REQ-REB-001 REB-01/02 MIG-REB-001 J-REB UI-REB-01 T-REB-001 정책·범위·실패상태 계약 확정 REQ-REB-001, VS-21 SLICE_SPEC, ADR/Decision Log 사용자 결과 '비용·세금·위험예산·제약을 만족하는 리밸런싱'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-07,VS-08,VS-12,VS-13 Portfolio-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
149 AEG-VS-21-02 S9 W19-20 VS-21 BuildRebalanceProposal PortfolioRisk DATA REQ-REB-001 REB-01/02 MIG-REB-001 J-REB UI-REB-01 T-REB-001 데이터 시점·스키마·정합성 계약 MIG-REB-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-21-01 Portfolio-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
150 AEG-VS-21-03 S9 W19-20 VS-21 BuildRebalanceProposal PortfolioRisk DOMAIN REQ-REB-001 REB-01/02 MIG-REB-001 J-REB UI-REB-01 T-REB-001 도메인 불변조건·상태전이 구현 src/Modules/PortfolioRisk/BuildRebalanceProposal/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-21-02 Portfolio-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
151 AEG-VS-21-04 S9 W19-20 VS-21 BuildRebalanceProposal PortfolioRisk BE REQ-REB-001 REB-01/02 MIG-REB-001 J-REB UI-REB-01 T-REB-001 Vertical Slice API/Application/SQL 구현 REB-01/02; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-21-03 Portfolio-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
152 AEG-VS-21-05 S9 W19-20 VS-21 BuildRebalanceProposal PortfolioRisk ASYNC REQ-REB-001 REB-01/02 MIG-REB-001 J-REB UI-REB-01 T-REB-001 Event/Job/Inbox·재처리 구현 J-REB; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-21-04 Portfolio-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
153 AEG-VS-21-06 S9 W19-20 VS-21 BuildRebalanceProposal PortfolioRisk FE REQ-REB-001 REB-01/02 MIG-REB-001 J-REB UI-REB-01 T-REB-001 Vue feature·Zod·Query·컴포넌트 구현 UI-REB-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-21-05 Portfolio-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
154 AEG-VS-21-07 S9 W19-20 VS-21 BuildRebalanceProposal PortfolioRisk TESTOPS REQ-REB-001 REB-01/02 MIG-REB-001 J-REB UI-REB-01 T-REB-001 회귀·관제·Runbook·Rollback 증거 T-REB-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-21-06 Portfolio-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
155 AEG-VS-12-01 S10 W21-22 VS-12 RankBuyCandidates ValuationForecast GOV REQ-BUY-001 BUY-01 MIG-BUY-001 J08B UI-BUY-01 T-BUY-001 정책·범위·실패상태 계약 확정 REQ-BUY-001, VS-12 SLICE_SPEC, ADR/Decision Log 사용자 결과 'PIT 품질·밸류·수정·모멘텀을 결합한 후보 순위'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-03,VS-05,VS-06,VS-09 Portfolio Gate SOURCE+DESIGN_PROPOSAL P0 PLANNED
156 AEG-VS-12-02 S10 W21-22 VS-12 RankBuyCandidates ValuationForecast DATA REQ-BUY-001 BUY-01 MIG-BUY-001 J08B UI-BUY-01 T-BUY-001 데이터 시점·스키마·정합성 계약 MIG-BUY-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-12-01 Portfolio Gate SOURCE+DESIGN_PROPOSAL P0 PLANNED
157 AEG-VS-12-03 S10 W21-22 VS-12 RankBuyCandidates ValuationForecast DOMAIN REQ-BUY-001 BUY-01 MIG-BUY-001 J08B UI-BUY-01 T-BUY-001 도메인 불변조건·상태전이 구현 src/Modules/ValuationForecast/RankBuyCandidates/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-12-02 Portfolio Gate SOURCE+DESIGN_PROPOSAL P0 PLANNED
158 AEG-VS-12-04 S10 W21-22 VS-12 RankBuyCandidates ValuationForecast BE REQ-BUY-001 BUY-01 MIG-BUY-001 J08B UI-BUY-01 T-BUY-001 Vertical Slice API/Application/SQL 구현 BUY-01; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-12-03 Portfolio Gate SOURCE+DESIGN_PROPOSAL P0 PLANNED
159 AEG-VS-12-05 S10 W21-22 VS-12 RankBuyCandidates ValuationForecast ASYNC REQ-BUY-001 BUY-01 MIG-BUY-001 J08B UI-BUY-01 T-BUY-001 Event/Job/Inbox·재처리 구현 J08B; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-12-04 Portfolio Gate SOURCE+DESIGN_PROPOSAL P1 PLANNED
160 AEG-VS-12-06 S10 W21-22 VS-12 RankBuyCandidates ValuationForecast FE REQ-BUY-001 BUY-01 MIG-BUY-001 J08B UI-BUY-01 T-BUY-001 Vue feature·Zod·Query·컴포넌트 구현 UI-BUY-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-12-05 Portfolio Gate SOURCE+DESIGN_PROPOSAL P1 PLANNED
161 AEG-VS-12-07 S10 W21-22 VS-12 RankBuyCandidates ValuationForecast TESTOPS REQ-BUY-001 BUY-01 MIG-BUY-001 J08B UI-BUY-01 T-BUY-001 회귀·관제·Runbook·Rollback 증거 T-BUY-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-12-06 Portfolio Gate SOURCE+DESIGN_PROPOSAL P0 PLANNED
162 AEG-VS-22-01 S10 W21-22 VS-22 SuggestReplacementProducts PortfolioRisk GOV REQ-RPL-001 RPL-01 MIG-RPL-001 J-RPL UI-RPL-01 T-RPL-001 정책·범위·실패상태 계약 확정 REQ-RPL-001, VS-22 SLICE_SPEC, ADR/Decision Log 사용자 결과 '적합성·유동성·비용후 기회우위 대체상품 비교'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-07,VS-12,VS-13 Portfolio Gate SOURCE+DESIGN_PROPOSAL P0 PLANNED
163 AEG-VS-22-02 S10 W21-22 VS-22 SuggestReplacementProducts PortfolioRisk DATA REQ-RPL-001 RPL-01 MIG-RPL-001 J-RPL UI-RPL-01 T-RPL-001 데이터 시점·스키마·정합성 계약 MIG-RPL-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-22-01 Portfolio Gate SOURCE+DESIGN_PROPOSAL P0 PLANNED
164 AEG-VS-22-03 S10 W21-22 VS-22 SuggestReplacementProducts PortfolioRisk DOMAIN REQ-RPL-001 RPL-01 MIG-RPL-001 J-RPL UI-RPL-01 T-RPL-001 도메인 불변조건·상태전이 구현 src/Modules/PortfolioRisk/SuggestReplacementProducts/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-22-02 Portfolio Gate SOURCE+DESIGN_PROPOSAL P0 PLANNED
165 AEG-VS-22-04 S10 W21-22 VS-22 SuggestReplacementProducts PortfolioRisk BE REQ-RPL-001 RPL-01 MIG-RPL-001 J-RPL UI-RPL-01 T-RPL-001 Vertical Slice API/Application/SQL 구현 RPL-01; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-22-03 Portfolio Gate SOURCE+DESIGN_PROPOSAL P0 PLANNED
166 AEG-VS-22-05 S10 W21-22 VS-22 SuggestReplacementProducts PortfolioRisk ASYNC REQ-RPL-001 RPL-01 MIG-RPL-001 J-RPL UI-RPL-01 T-RPL-001 Event/Job/Inbox·재처리 구현 J-RPL; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-22-04 Portfolio Gate SOURCE+DESIGN_PROPOSAL P1 PLANNED
167 AEG-VS-22-06 S10 W21-22 VS-22 SuggestReplacementProducts PortfolioRisk FE REQ-RPL-001 RPL-01 MIG-RPL-001 J-RPL UI-RPL-01 T-RPL-001 Vue feature·Zod·Query·컴포넌트 구현 UI-RPL-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-22-05 Portfolio Gate SOURCE+DESIGN_PROPOSAL P1 PLANNED
168 AEG-VS-22-07 S10 W21-22 VS-22 SuggestReplacementProducts PortfolioRisk TESTOPS REQ-RPL-001 RPL-01 MIG-RPL-001 J-RPL UI-RPL-01 T-RPL-001 회귀·관제·Runbook·Rollback 증거 T-RPL-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-22-06 Portfolio Gate SOURCE+DESIGN_PROPOSAL P0 PLANNED
169 AEG-X-014 S11 W23-24 Cross Cross-cutting Model Risk VALIDATION REQ-MODEL-RISK Cross Cross Cross Cross Cross CSCV/PBO 고도화 CSCV/PBO·DSR·block bootstrap·시도 원장 PBO≤20%, DSR≥95%, cost×2 utility 양수 또는 승격 차단 Quant/Risk Architect/QA 15 AEG-X-012 G4-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
170 AEG-X-015 S11 W23-24 Cross Cross-cutting Shadow EVAL REQ-SHADOW-001 Cross Cross Cross Cross Cross 252거래일 고도화 252거래일·복수 국면 일평가 scorecard 적중률 단독 아닌 calibration/ES/false-exit/reentry/운영무결성 판정 Quant/Ops Architect/QA 14 VS-18 G4-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
171 AEG-VS-20-01 S11 W23-24 VS-20 PromoteModelVersion GovernanceAudit GOV REQ-MOD-001 MOD-01/02 MIG-MOD-001 J-MOD UI-MOD-01 T-MOD-001 정책·범위·실패상태 계약 확정 REQ-MOD-001, VS-20 SLICE_SPEC, ADR/Decision Log 사용자 결과 '모델 승격 증거·승인·롤백·챔피언/챌린저'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-18,VS-19 G4-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
172 AEG-VS-20-02 S11 W23-24 VS-20 PromoteModelVersion GovernanceAudit DATA REQ-MOD-001 MOD-01/02 MIG-MOD-001 J-MOD UI-MOD-01 T-MOD-001 데이터 시점·스키마·정합성 계약 MIG-MOD-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-20-01 G4-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
173 AEG-VS-20-03 S11 W23-24 VS-20 PromoteModelVersion GovernanceAudit DOMAIN REQ-MOD-001 MOD-01/02 MIG-MOD-001 J-MOD UI-MOD-01 T-MOD-001 도메인 불변조건·상태전이 구현 src/Modules/GovernanceAudit/PromoteModelVersion/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-20-02 G4-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
174 AEG-VS-20-04 S11 W23-24 VS-20 PromoteModelVersion GovernanceAudit BE REQ-MOD-001 MOD-01/02 MIG-MOD-001 J-MOD UI-MOD-01 T-MOD-001 Vertical Slice API/Application/SQL 구현 MOD-01/02; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-20-03 G4-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
175 AEG-VS-20-05 S11 W23-24 VS-20 PromoteModelVersion GovernanceAudit ASYNC REQ-MOD-001 MOD-01/02 MIG-MOD-001 J-MOD UI-MOD-01 T-MOD-001 Event/Job/Inbox·재처리 구현 J-MOD; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-20-04 G4-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
176 AEG-VS-20-06 S11 W23-24 VS-20 PromoteModelVersion GovernanceAudit FE REQ-MOD-001 MOD-01/02 MIG-MOD-001 J-MOD UI-MOD-01 T-MOD-001 Vue feature·Zod·Query·컴포넌트 구현 UI-MOD-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-20-05 G4-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
177 AEG-VS-20-07 S11 W23-24 VS-20 PromoteModelVersion GovernanceAudit TESTOPS REQ-MOD-001 MOD-01/02 MIG-MOD-001 J-MOD UI-MOD-01 T-MOD-001 회귀·관제·Runbook·Rollback 증거 T-MOD-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-20-06 G4-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
178 AEG-VS-24-01 S11 W23-24 VS-24 ReportAndNotify ReportingNotifications GOV REQ-RPT-001 RPT-01 MIG-RPT-001 J11R UI-RPT-01 T-RPT-001 정책·범위·실패상태 계약 확정 REQ-RPT-001, VS-24 SLICE_SPEC, ADR/Decision Log 사용자 결과 '고객 리포트·SignalR·Telegram 운영 경보'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-16,VS-18 G4-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
179 AEG-VS-24-02 S11 W23-24 VS-24 ReportAndNotify ReportingNotifications DATA REQ-RPT-001 RPT-01 MIG-RPT-001 J11R UI-RPT-01 T-RPT-001 데이터 시점·스키마·정합성 계약 MIG-RPT-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-24-01 G4-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
180 AEG-VS-24-03 S11 W23-24 VS-24 ReportAndNotify ReportingNotifications DOMAIN REQ-RPT-001 RPT-01 MIG-RPT-001 J11R UI-RPT-01 T-RPT-001 도메인 불변조건·상태전이 구현 src/Modules/ReportingNotifications/ReportAndNotify/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-24-02 G4-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
181 AEG-VS-24-04 S11 W23-24 VS-24 ReportAndNotify ReportingNotifications BE REQ-RPT-001 RPT-01 MIG-RPT-001 J11R UI-RPT-01 T-RPT-001 Vertical Slice API/Application/SQL 구현 RPT-01; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-24-03 G4-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
182 AEG-VS-24-05 S11 W23-24 VS-24 ReportAndNotify ReportingNotifications ASYNC REQ-RPT-001 RPT-01 MIG-RPT-001 J11R UI-RPT-01 T-RPT-001 Event/Job/Inbox·재처리 구현 J11R; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-24-04 G4-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
183 AEG-VS-24-06 S11 W23-24 VS-24 ReportAndNotify ReportingNotifications FE REQ-RPT-001 RPT-01 MIG-RPT-001 J11R UI-RPT-01 T-RPT-001 Vue feature·Zod·Query·컴포넌트 구현 UI-RPT-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-24-05 G4-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
184 AEG-VS-24-07 S11 W23-24 VS-24 ReportAndNotify ReportingNotifications TESTOPS REQ-RPT-001 RPT-01 MIG-RPT-001 J11R UI-RPT-01 T-RPT-001 회귀·관제·Runbook·Rollback 증거 T-RPT-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-24-06 G4-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
185 AEG-X-016 S12 W25-26 Cross Cross-cutting Broker CAPABILITY REQ-KIS-OFF Cross Cross Cross Cross Cross KIS 주문 제출 startup/CI/runtime 차단 고도화 KIS 주문 제출 startup/CI/runtime 차단 외부 주문 호출 0, capability override 감사·kill-switch 통과 Security/Ops Architect/QA 7 AEG-X-005 ALL SOURCE+DESIGN_PROPOSAL P0 PLANNED
186 AEG-VS-23-01 S12 W25-26 VS-23 ReconcilePositionsAndFills ExecutionReconciliation GOV REQ-RECON-001 EXE-01/02,REC-01/02 MIG-EXE-001/002 J12 UI-RECON-01 T-RECON-001 정책·범위·실패상태 계약 확정 REQ-RECON-001, VS-23 SLICE_SPEC, ADR/Decision Log 사용자 결과 '브로커·내부 주문·체결·보유·현금 break와 승인 정정'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-08,VS-16 Pilot-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
187 AEG-VS-23-02 S12 W25-26 VS-23 ReconcilePositionsAndFills ExecutionReconciliation DATA REQ-RECON-001 EXE-01/02,REC-01/02 MIG-EXE-001/002 J12 UI-RECON-01 T-RECON-001 데이터 시점·스키마·정합성 계약 MIG-EXE-001/002, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-23-01 Pilot-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
188 AEG-VS-23-03 S12 W25-26 VS-23 ReconcilePositionsAndFills ExecutionReconciliation DOMAIN REQ-RECON-001 EXE-01/02,REC-01/02 MIG-EXE-001/002 J12 UI-RECON-01 T-RECON-001 도메인 불변조건·상태전이 구현 src/Modules/ExecutionReconciliation/ReconcilePositionsAndFills/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-23-02 Pilot-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
189 AEG-VS-23-04 S12 W25-26 VS-23 ReconcilePositionsAndFills ExecutionReconciliation BE REQ-RECON-001 EXE-01/02,REC-01/02 MIG-EXE-001/002 J12 UI-RECON-01 T-RECON-001 Vertical Slice API/Application/SQL 구현 EXE-01/02,REC-01/02; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-23-03 Pilot-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
190 AEG-VS-23-05 S12 W25-26 VS-23 ReconcilePositionsAndFills ExecutionReconciliation ASYNC REQ-RECON-001 EXE-01/02,REC-01/02 MIG-EXE-001/002 J12 UI-RECON-01 T-RECON-001 Event/Job/Inbox·재처리 구현 J12; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-23-04 Pilot-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
191 AEG-VS-23-06 S12 W25-26 VS-23 ReconcilePositionsAndFills ExecutionReconciliation FE REQ-RECON-001 EXE-01/02,REC-01/02 MIG-EXE-001/002 J12 UI-RECON-01 T-RECON-001 Vue feature·Zod·Query·컴포넌트 구현 UI-RECON-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-23-05 Pilot-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
192 AEG-VS-23-07 S12 W25-26 VS-23 ReconcilePositionsAndFills ExecutionReconciliation TESTOPS REQ-RECON-001 EXE-01/02,REC-01/02 MIG-EXE-001/002 J12 UI-RECON-01 T-RECON-001 회귀·관제·Runbook·Rollback 증거 T-RECON-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-23-06 Pilot-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
193 AEG-X-017 S13 W27-28 Cross Cross-cutting DR OPS REQ-DR-001 Cross Cross Cross Cross Cross RPO/RTO 고도화 RPO/RTO·backup/restore·region/host failure rehearsal 승인 RPO/RTO 내 복구, 원장·outbox·projection 대사 100% SRE/DBA Architect/QA 12 AEG-X-006 G5 SOURCE+DESIGN_PROPOSAL P0 PLANNED
194 AEG-VS-25-01 S13 W27-28 VS-25 AuditAndKillSwitch GovernanceAudit GOV REQ-GOV-001 GOV-01/02 MIG-GOV-001 J-GOV UI-GOV-01 T-GOV-001 정책·범위·실패상태 계약 확정 REQ-GOV-001, VS-25 SLICE_SPEC, ADR/Decision Log 사용자 결과 '입력→결정→승인→공개→실행→평가 추적과 단계별 차단'·비목표·권한·예외·Source/Assumption/Unknown이 승인됨 PM/Architect Compliance/Owner 3 VS-01,VS-16,VS-20,VS-23 G5 SOURCE+DESIGN_PROPOSAL P0 PLANNED
195 AEG-VS-25-02 S13 W27-28 VS-25 AuditAndKillSwitch GovernanceAudit DATA REQ-GOV-001 GOV-01/02 MIG-GOV-001 J-GOV UI-GOV-01 T-GOV-001 데이터 시점·스키마·정합성 계약 MIG-GOV-001, DATA_CONTRACT, DQ/lineage 규칙 published_at/revision/valid-time/hash/단위/격리/재처리와 소유자가 정의되고 overwrite 경로가 없음 Data Architect/DBA Quant/QA 5 AEG-VS-25-01 G5 SOURCE+DESIGN_PROPOSAL P0 PLANNED
196 AEG-VS-25-03 S13 W27-28 VS-25 AuditAndKillSwitch GovernanceAudit DOMAIN REQ-GOV-001 GOV-01/02 MIG-GOV-001 J-GOV UI-GOV-01 T-GOV-001 도메인 불변조건·상태전이 구현 src/Modules/GovernanceAudit/AuditAndKillSwitch/Domain, 정책 결정표 순수 정책 테스트에서 우선순위·경계값·단조성·금지 전이가 통과하고 Infrastructure 의존이 없음 BE/Quant Lead Architect/QA 6 AEG-VS-25-02 G5 SOURCE+DESIGN_PROPOSAL P0 PLANNED
197 AEG-VS-25-04 S13 W27-28 VS-25 AuditAndKillSwitch GovernanceAudit BE REQ-GOV-001 GOV-01/02 MIG-GOV-001 J-GOV UI-GOV-01 T-GOV-001 Vertical Slice API/Application/SQL 구현 GOV-01/02; Endpoint/Validator/Application/Dapper/Outbox 인증·권한·멱등·트랜잭션·ProblemDetails·낙관적 동시성·correlation이 수용기준과 일치 BE Lead Security/QA 8 AEG-VS-25-03 G5 SOURCE+DESIGN_PROPOSAL P0 PLANNED
198 AEG-VS-25-05 S13 W27-28 VS-25 AuditAndKillSwitch GovernanceAudit ASYNC REQ-GOV-001 GOV-01/02 MIG-GOV-001 J-GOV UI-GOV-01 T-GOV-001 Event/Job/Inbox·재처리 구현 J-GOV; integration event, JobRun, watermark, inbox 동일 ScopeKey 재실행 결과가 동일하고 중복 side effect 0, transient/business hold/poison이 분리됨 BE/SRE Data/Ops 5 AEG-VS-25-04 G5 SOURCE+DESIGN_PROPOSAL P1 PLANNED
199 AEG-VS-25-06 S13 W27-28 VS-25 AuditAndKillSwitch GovernanceAudit FE REQ-GOV-001 GOV-01/02 MIG-GOV-001 J-GOV UI-GOV-01 T-GOV-001 Vue feature·Zod·Query·컴포넌트 구현 UI-GOV-01; route/api/schema/queries/pages/components loading/empty/partial/stale/warn/error/401/403/409/expired/readonly와 접근성·권한 경계가 검증됨 FE Lead UX/QA 6 AEG-VS-25-05 G5 SOURCE+DESIGN_PROPOSAL P1 PLANNED
200 AEG-VS-25-07 S13 W27-28 VS-25 AuditAndKillSwitch GovernanceAudit TESTOPS REQ-GOV-001 GOV-01/02 MIG-GOV-001 J-GOV UI-GOV-01 T-GOV-001 회귀·관제·Runbook·Rollback 증거 T-GOV-001; xUnit/Vitest/Playwright/Data/Replay; OTel/alert/runbook Golden·integration·failure·replay·E2E와 metric/alert/Owner/Secondary/rollback rehearsal가 Release Evidence에 연결됨 QA/SRE Module Owner 7 AEG-VS-25-06 G5 SOURCE+DESIGN_PROPOSAL P0 PLANNED
201 AEG-X-018 S14 W29-30 Cross Cross-cutting Performance NFR REQ-NFR-001 Cross Cross Cross Cross Cross API P95 고도화 API P95·batch SLA·portfolio 규모·backfill 부하시험 개장 전 추천 SLA와 고객 API SLO가 동시에 충족 SRE/QA Architect/QA 10 AEG-X-017 G6-A SOURCE+DESIGN_PROPOSAL P1 PLANNED
202 AEG-X-019 S14 W29-30 Cross Cross-cutting Cutover RELEASE REQ-CUT-001 Cross Cross Cross Cross Cross dry-run/backfill/recon/rollback/release evidence 고도화 dry-run/backfill/recon/rollback/release evidence 미승인 공개 0, duplicate 0, rollback 리허설과 승인 서명 PM/Ops Architect/QA 10 AEG-X-018 G6-A SOURCE+DESIGN_PROPOSAL P0 PLANNED
203 AEG-X-020 S15 W31-32 Cross Cross-cutting Hypercare OPS REQ-HYP-001 Cross Cross Cross Cross Cross P1/P2 triage 고도화 P1/P2 triage·daily reconciliation·debt burn-down 초기 안정화 Exit 기준·Owner·잔여 부채 승인 Ops/PM Architect/QA 8 AEG-X-019 G6 SOURCE+DESIGN_PROPOSAL P1 PLANNED
+26
View File
@@ -0,0 +1,26 @@
ID,Priority,Debt,Impact,Remediation,Gate,Owner,Status
TD-001,P0,도구체인 실빌드 미검증,C# 컴파일/패키지 호환 결함 가능,승인 .NET 10 runner에서 restore/build/test,G0,DevOps,OPEN
TD-002,P0,pnpm-lock.yaml 부재,FE 공급망·재현성 미확보,승인 네트워크에서 pnpm install 후 lock review/commit,G0,FE Lead,OPEN
TD-003,P0,PostgreSQL migration rehearsal 미실행,fresh/upgrade/re-run/복구 실패 가능,PostgreSQL 승인 버전 4시나리오 자동화,G0,DBA,OPEN
TD-004,P0,원시 연구 데이터 권리·checksum·환경 lock 미완전,제3자 clean-room 재현 불가,Source catalog/license/raw checksum/container digest 확보,G1,Data Governance,OPEN
TD-005,P0,KR 검증 종료 2021-04-16,최근 시장국면 검증 공백,2026 현재까지 PIT 총수익·상폐·기업행사 보충 후 frozen OOS,G4,Quant/Data,OPEN
TD-006,P0,실제 OIDC/JWT 공급자 미결정,외부 Pilot 접근통제 불가,"Auth ADR, key rotation, claims/RBAC E2E",G5,Security,OPEN
TD-007,P0,총수익·상폐수익·컨센서스 공급계약 미확정,생존편향·성과왜곡,공식/상용 source 계약·SLA·재배포 권리 승인,G1,Data Governance,OPEN
TD-008,P0,Fee/Tax/FX PIT 표 미확정,비용후 기대효용 왜곡,valid_from/to 계좌·venue·상품·side·band schedule,G1,DBA/Quant,OPEN
TD-009,P0,Outbox/Inbox crash/replay 실증 미완료,side effect 누락·중복,lease/dead-letter/replay chaos test,G3,BE/SRE,IN_PROGRESS
TD-010,P1,JobRun·Watermark 표준의 일부 구현만 존재,배치 재처리·감사 불완전,공통 JobRun scope/version/hash/heartbeat 정책 적용,G1,BE/SRE,IN_PROGRESS
TD-011,P1,Architecture test가 정적 문자열 규칙 중심,금지 의존 누락 가능,assembly/namespace/schema/API fitness function 확대,G0,Architect,IN_PROGRESS
TD-012,P1,OpenAPI→FE contract 자동생성 미도입,DTO drift·홀루시네이션 위험,OpenAPI artifact diff + generated client/schema gate,G3,BE/FE,OPEN
TD-013,P1,PII redaction·Telegram 보안 테스트 미완성,고객정보 노출 가능,classification/redaction test와 secret scan,G5,Security/SRE,OPEN
TD-014,P1,Model promotion workflow 미완성,무단 모델 활성화 위험,model card/maker-checker/effective_at/rollback 구현,G4,Risk/BE,OPEN
TD-015,P1,Read Model rebuild runner 미완성,stale projection 복구 불가,projection version/watermark/rebuild/diff 도구,G3,BE/Data,IN_PROGRESS
TD-016,P1,SLO/RPO/RTO 미승인,운영 Go 판단 불가,부하시험·백업복구·DR ADR 승인,G5,SRE/DBA,OPEN
TD-017,P2,공통 UI 컴포넌트 승격 기준 미운영,중복 또는 과도한 추상화,3회 반복+동일 의미/변경축 확인 후 승격,S10,FE Lead,OPEN
TD-018,P1,PBO/DSR 전체 탐색·시도 원장 미완성,과최적화 위험,전체 실험 registry+CSCV/PBO/DSR/block bootstrap,G4,Quant/Risk,OPEN
TD-019,P1,자산유형별 재진입 확인팩터 공급원 미완성,재진입 품질 저하,asset policy contract+PIT source+missing evidence downgrade,G2,Quant/Data,OPEN
TD-020,P0,자동주문/KIS 제출은 금지 상태,오활성화 사고 위험,Options ValidateOnStart+CI config scan+runtime kill switch 유지,ALL,Security/Ops,MITIGATED
TD-021,P1,정책 임계값이 문서·YAML·C#에 중복될 가능성,계약 drift,승인 config registry+schema+hash+generated constants,G2,Quant/BE,OPEN
TD-022,P1,DB immutable trigger와 correction event 운영절차 미실증,정정/감사 장애 가능,maker-checker correction replay와 audit trace E2E,G3,DBA/Compliance,OPEN
TD-023,P2,프런트 서버상태/Pinia 책임 경계의 팀 규율 미검증,중복 캐시·stale UI,lint/review checklist+query key registry,MVP-B,FE Lead,OPEN
TD-024,P1,Dependency vulnerability/license 자동검사 미구성,공급망 리스크,NuGet/npm SBOM·license allowlist·vulnerability gate,G5,Security/DevOps,OPEN
TD-025,P1,성능 규모 가정 미확정,배치 SLA/DB index 과·소설계,portfolio/security/client volume 결정·capacity test,G6-A,PM/SRE,OPEN
1 ID Priority Debt Impact Remediation Gate Owner Status
2 TD-001 P0 도구체인 실빌드 미검증 C# 컴파일/패키지 호환 결함 가능 승인 .NET 10 runner에서 restore/build/test G0 DevOps OPEN
3 TD-002 P0 pnpm-lock.yaml 부재 FE 공급망·재현성 미확보 승인 네트워크에서 pnpm install 후 lock review/commit G0 FE Lead OPEN
4 TD-003 P0 PostgreSQL migration rehearsal 미실행 fresh/upgrade/re-run/복구 실패 가능 PostgreSQL 승인 버전 4시나리오 자동화 G0 DBA OPEN
5 TD-004 P0 원시 연구 데이터 권리·checksum·환경 lock 미완전 제3자 clean-room 재현 불가 Source catalog/license/raw checksum/container digest 확보 G1 Data Governance OPEN
6 TD-005 P0 KR 검증 종료 2021-04-16 최근 시장국면 검증 공백 2026 현재까지 PIT 총수익·상폐·기업행사 보충 후 frozen OOS G4 Quant/Data OPEN
7 TD-006 P0 실제 OIDC/JWT 공급자 미결정 외부 Pilot 접근통제 불가 Auth ADR, key rotation, claims/RBAC E2E G5 Security OPEN
8 TD-007 P0 총수익·상폐수익·컨센서스 공급계약 미확정 생존편향·성과왜곡 공식/상용 source 계약·SLA·재배포 권리 승인 G1 Data Governance OPEN
9 TD-008 P0 Fee/Tax/FX PIT 표 미확정 비용후 기대효용 왜곡 valid_from/to 계좌·venue·상품·side·band schedule G1 DBA/Quant OPEN
10 TD-009 P0 Outbox/Inbox crash/replay 실증 미완료 side effect 누락·중복 lease/dead-letter/replay chaos test G3 BE/SRE IN_PROGRESS
11 TD-010 P1 JobRun·Watermark 표준의 일부 구현만 존재 배치 재처리·감사 불완전 공통 JobRun scope/version/hash/heartbeat 정책 적용 G1 BE/SRE IN_PROGRESS
12 TD-011 P1 Architecture test가 정적 문자열 규칙 중심 금지 의존 누락 가능 assembly/namespace/schema/API fitness function 확대 G0 Architect IN_PROGRESS
13 TD-012 P1 OpenAPI→FE contract 자동생성 미도입 DTO drift·홀루시네이션 위험 OpenAPI artifact diff + generated client/schema gate G3 BE/FE OPEN
14 TD-013 P1 PII redaction·Telegram 보안 테스트 미완성 고객정보 노출 가능 classification/redaction test와 secret scan G5 Security/SRE OPEN
15 TD-014 P1 Model promotion workflow 미완성 무단 모델 활성화 위험 model card/maker-checker/effective_at/rollback 구현 G4 Risk/BE OPEN
16 TD-015 P1 Read Model rebuild runner 미완성 stale projection 복구 불가 projection version/watermark/rebuild/diff 도구 G3 BE/Data IN_PROGRESS
17 TD-016 P1 SLO/RPO/RTO 미승인 운영 Go 판단 불가 부하시험·백업복구·DR ADR 승인 G5 SRE/DBA OPEN
18 TD-017 P2 공통 UI 컴포넌트 승격 기준 미운영 중복 또는 과도한 추상화 3회 반복+동일 의미/변경축 확인 후 승격 S10 FE Lead OPEN
19 TD-018 P1 PBO/DSR 전체 탐색·시도 원장 미완성 과최적화 위험 전체 실험 registry+CSCV/PBO/DSR/block bootstrap G4 Quant/Risk OPEN
20 TD-019 P1 자산유형별 재진입 확인팩터 공급원 미완성 재진입 품질 저하 asset policy contract+PIT source+missing evidence downgrade G2 Quant/Data OPEN
21 TD-020 P0 자동주문/KIS 제출은 금지 상태 오활성화 사고 위험 Options ValidateOnStart+CI config scan+runtime kill switch 유지 ALL Security/Ops MITIGATED
22 TD-021 P1 정책 임계값이 문서·YAML·C#에 중복될 가능성 계약 drift 승인 config registry+schema+hash+generated constants G2 Quant/BE OPEN
23 TD-022 P1 DB immutable trigger와 correction event 운영절차 미실증 정정/감사 장애 가능 maker-checker correction replay와 audit trace E2E G3 DBA/Compliance OPEN
24 TD-023 P2 프런트 서버상태/Pinia 책임 경계의 팀 규율 미검증 중복 캐시·stale UI lint/review checklist+query key registry MVP-B FE Lead OPEN
25 TD-024 P1 Dependency vulnerability/license 자동검사 미구성 공급망 리스크 NuGet/npm SBOM·license allowlist·vulnerability gate G5 Security/DevOps OPEN
26 TD-025 P1 성능 규모 가정 미확정 배치 SLA/DB index 과·소설계 portfolio/security/client volume 결정·capacity test G6-A PM/SRE OPEN

Some files were not shown because too many files have changed in this diff Show More