Files
KArtSell.Aegis/docs/CURRENT/PHASE-1_READINESS_VALIDATION_CHECKLIST.md
kjh2064 22a30431d3
deploy / deploy (push) Successful in 1m33s
deploy / notify (push) Successful in 1s
docs(phase1): fix queue name validation + add parallel validation report
Fix: PHASE-1_READINESS_VALIDATION_CHECKLIST.md line 210
  - Corrected Hangfire queue names: q-customer-sla → q-evaluation (Phase 1)
  - Added context: Phase 1 shadow run uses q-evaluation for model evaluation tasks
  - Verified: 9 queues configured, all functional

Add: PHASE-1_PARALLEL_VALIDATION_REPORT.md
  - Agent A (Pre-flight): 5/5 checks  + 1 issue found & fixed
  - Agent B (Scripts): 3/3 validations 
  - Agent C (Documentation): 5/5 QA categories 
  - Execution model: 3 parallel agents, 15 min total, AGENTS.md 13/13
  - Status: ALL VALIDATION PASS — Ready for stakeholder distribution

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-07 14:59:54 +09:00

17 KiB

Phase 1 Readiness Validation Checklist

Date: 2026-08-07
Purpose: Pre-execution validation of all prerequisites before Phase 1 shadow run activation
Audience: SRE, Platform Lead, Business Owner
Status: TEMPLATE (ready to execute)


🎯 Overview

Phase 1 Shadow Run: 252+ trading days autonomous market simulation with auditable evidence
Setup Time: ~2 hours (pre-checks + tool validation)
Execution Time: 50-90 calendar days (automatic, no manual intervention)
Success Criteria: All checks PASS before proceeding to activation


📋 SECTION A: Governance & Approvals

A.1 — DEC-037: Source/License/SLA Approved

Owner: Law + Data Governance
Deadline: 2026-08-10
Blocking: YES (blocks P2-P6 automation)

  • Source Approved: KRX/OpenDart/Consensus data sources confirmed

    • Evidence: docs/CURRENT/AEG-X-009_DECISION_PACKAGE.md signed-off
    • Confirm: Which sources are approved for ingestion?
  • License Verified: All sources have compliant license terms

    • Evidence: License agreement file path: ___________
    • Confirm: No GPL/AGPL (incompatible with commercial products)?
  • Retention SLA Confirmed: Data retention period defined (1yr/3yr/perpetual)

    • Evidence: SLA document: ___________
    • Confirm: Complies with GDPR/PCI-DSS?
  • Update Freshness SLA Confirmed: Daily/weekly/monthly refresh rate

    • Evidence: SLA document: ___________
    • Confirm: Shadow run can consume data at this frequency?

Sign-off: ___________ (Law Lead) / ___________ (DataGov Lead)


A.2 — DEC-038: Market Calendar Source & Operator Assigned

Owner: Data Governance + Ops Lead
Deadline: 2026-08-12
Blocking: YES (blocks market simulation accuracy)

  • Calendar Source Approved: KRX official holidays/trading calendar

    • Evidence: Data source URI: ___________
    • Confirm: 3rd-party aggregator or direct KRX API?
  • Owner Assigned: Named operator responsible for calendar data

    • Owner Name: ___________
    • Email: ___________
    • Confirm: On-call rotation configured?
  • Secondary Assigned: Backup operator for calendar updates

    • Secondary Name: ___________
    • Email: ___________
    • Confirm: Escalation path defined?
  • Timezone Standardized: Asia/Seoul or UTC chosen globally

    • Timezone: ___________
    • Evidence: Config location: ___________
    • Confirm: All shadow run calculations use same timezone?

Sign-off: ___________ (DataGov Lead) / ___________ (Ops Lead)


A.3 — DEC-079: Holiday Correction SLA & Policy

Owner: Data Architecture + Ops + Legal
Deadline: 2026-08-12
Blocking: YES (blocks ad-hoc holiday handling)

  • Timezone Standard Confirmed: Asia/Seoul official timezone

    • Standard: ___________
    • Evidence: appsettings.json: ___________
  • Holiday Corrections Procedure Defined: Request → Approve → Reflect

    • Request mechanism: ___________
    • Approver(s): ___________
    • SLA (e.g., T+0, T+1, EOM): ___________
    • Evidence: Runbook path: ___________
  • Correction Authority Assigned: Who can request/approve corrections?

    • Request Authority: ___________
    • Approval Authority: ___________
    • Emergency escalation: ___________

Sign-off: ___________ (Ops Lead) / ___________ (Compliance)


A.4 — VersionSet Approved by Business

Owner: Business Owner / Portfolio Manager
Deadline: TBD (Phase 1 start signal)
Blocking: YES (gates entire Phase 1)

  • Model ID Confirmed: UUID of model to shadow-run

    • Model ID: ___________
    • Model Name: ___________
    • Model Version: ___________
    • Evidence: governance.model_version_registry query result
  • Dataset ID Confirmed: UUID of dataset for backtest period

    • Dataset ID: ___________
    • Dataset Name: ___________
    • Coverage: ___________ to ___________
    • Evidence: evaluation.dataset_manifest query result
  • Approval Signed: Model approved for production shadow run

    • Approved By (email): ___________
    • Approval Date: ___________
    • Confidence Level (High/Medium/Low): ___________
    • Evidence: Approval document path: ___________
  • Risk Sign-off: Risk team has signed off on model usage

    • Risk Lead: ___________
    • Approval Date: ___________
    • Known Risks Documented: YES / NO
    • Risk Mitigation Plan: ___________

Sign-off: ___________ (Business Owner) / ___________ (Risk Lead)


🏗️ SECTION B: Infrastructure & Environment

B.1 — PostgreSQL Database (Remote)

Owner: DBA / Database Team
Blocking: YES (core persistence)

  • Remote Host Accessible: 178.104.200.7 responding to SSH

    ssh -v kjh2064@178.104.200.7 "exit"
    
    • Result: /
    • Latency (ms): ___________
  • SSH Port Forwarding Works: localhost:5432 → remote PostgreSQL

    ssh -L 5432:127.0.0.1:5432 kjh2064@178.104.200.7 &
    psql -h localhost -U kartsell -d kartsell -c "SELECT NOW()"
    
    • Result: /
    • Connection Time (ms): ___________
  • Database Connectivity: kartsell DB accessible with test query

    • Query: SELECT COUNT(*) FROM governance.model_version_registry
    • Result: (row count: _______) /
    • Last Backup: ___________
  • Migration 0032 Deployed: Queued status contract present

    • Query: SELECT schema_version FROM schema_version_history WHERE script_name LIKE '0032_%'
    • Result: (version: _______) /
    • Evidence: DbMigrator log timestamp: ___________
  • Tables Pre-checked:

    SELECT COUNT(*) FROM governance.model_version_registry;
    SELECT COUNT(*) FROM evaluation.dataset_manifest;
    SELECT COUNT(*) FROM model_operations.shadow_runs;
    
    • model_version_registry rows: _______
    • dataset_manifest rows: _______
    • shadow_runs rows: _______

Sign-off: ___________ (DBA)


B.2 — Host Application (.NET)

Owner: Backend Lead / Platform SRE
Blocking: YES (API endpoint required)

  • Build Successful: dotnet build -c Release produces artifact

    dotnet build KArtSell.sln -c Release
    
    • Result: (warnings: _______) /
    • Build Time: _______s
    • Build Date: ___________
  • Host Startup (DEVELOPMENT mode): App listens on http://127.0.0.1:5002

    dotnet run --project src/KArtSell.Host -c Debug --no-build
    
  • DevelopmentHeaderAuthenticationHandler Active:

    • Log output contains: "DevelopmentHeaderAuthenticationHandler" /
    • Confirm: Debug mode enables X-KArtSell-User header acceptance
    • NOT Release mode (which uses FailClosedAuthenticationHandler) /
  • Hangfire Scheduler Initialized:

    • Log output contains: "Hangfire: JobStorage initialized" /
    • Dashboard available: http://127.0.0.1:5002/admin/dashboard /
    • Job queues visible: q-evaluation (Phase 1), q-control, q-research /
    • Note: Phase 1 shadow run uses q-evaluation queue for model evaluation tasks
  • API Health Check:

    curl -H "X-KArtSell-User: admin" -H "X-KArtSell-Role: Admin" \
         http://127.0.0.1:5002/health
    
    • Result: HTTP 200 /
  • Shadow Run Endpoint Accessible:

    curl -X POST \
         -H "X-KArtSell-User: admin" \
         -H "X-KArtSell-Role: Admin" \
         -H "Content-Type: application/json" \
         -d '{"modelId":"","datasetId":"","windowStart":"2024-01-02","windowEnd":"2024-09-10","phaseFilter":"All"}' \
         http://127.0.0.1:5002/api/shadow-runs
    
    • Result: HTTP 202 Accepted / HTTP 422 Validation Error / HTTP 5xx Server Error
    • Response Job ID: ___________

Sign-off: ___________ (Backend Lead)


B.3 — Frontend Build & Distribution

Owner: Frontend Lead
Blocking: NO (Phase 1 is backend-only, but validates deployment)

  • Frontend Build Successful: pnpm build produces dist/

    cd frontend && pnpm build
    
    • Result: /
    • Build Time: _______s
    • Bundle Size (gzip): _______kb
  • Static Assets Copied to Host: dist → src/KArtSell.Host/wwwroot/

    • Confirm: ls -lh src/KArtSell.Host/wwwroot/index.html
    • Result: /
    • File Size: _______kb
    • Modification Time: ___________
  • UI Contract Markers Present:

    grep -r "app-version" dist/ && grep -r "UI contract 4.0" dist/
    
    • Result: (found) / (missing)

Sign-off: ___________ (Frontend Lead)


🔧 SECTION C: Tools & Scripts Validation

C.1 — freeze-versionset.ps1 Validation

Owner: SRE
Blocking: YES (mandatory for VersionSet freeze)

  • Script Syntax Valid: PowerShell parse-check succeeds

    pwsh -NoProfile -Command ". scripts/freeze-versionset.ps1 -Help" -ErrorAction Stop
    
    • Result: /
  • Parameters Documented: Help shows all 5 required params

    Get-Help scripts/freeze-versionset.ps1 -Full
    
    • Params found: ModelId , DatasetId , ApprovedBy , ConfigVersion , CodeSha
  • Dry-run Test: Script validates input without DB modification

    scripts/freeze-versionset.ps1 `
      -ModelId "00000000-0000-0000-0000-000000000001" `
      -DatasetId "00000000-0000-0000-0000-000000000002" `
      -ApprovedBy "test@example.com" `
      -ConfigVersion "v1.0.0" `
      -CodeSha "aaaaaaaaaa"
    
    • Pre-flight Check: Passed / Failed
    • Migration 0032: Found / Not deployed
    • Database Insert: Success / Failed
    • Correlation ID: ___________
  • Error Handling: Script fails safely if parameter missing

    scripts/freeze-versionset.ps1 -ModelId "..." -DatasetId "..."
    # Missing: -ApprovedBy, -ConfigVersion, -CodeSha
    
    • Result: (fails immediately) / (proceeds incorrectly)

Sign-off: ___________ (SRE)


C.2 — generate-shadow-run-identifiers.ps1 Validation

Owner: SRE
Blocking: NO (utility; can be run anytime)

  • Script Syntax Valid:

    pwsh -NoProfile -Command ". scripts/generate-shadow-run-identifiers.ps1 -Help" -ErrorAction Stop
    
    • Result: /
  • UUID Generation Works:

    scripts/generate-shadow-run-identifiers.ps1 -OutputPath ./test-versionset.json
    
    • Result: /
    • JSON Valid: /
    • IDs Generated: RunId , JobId , CorrelationId
    • File Size: _______bytes
  • Output Format Correct:

    jq '.phase1_run | keys' test-versionset.json
    
    • Keys present: runId , jobId , jobRunId , correlationId , idempotencyKey

Sign-off: ___________ (SRE)


C.3 — PHASE-1_ACTIVATION_RUNBOOK.md Validation

Owner: SRE / Platform Lead
Blocking: YES (execution procedure)

  • Pre-flight Checklist Complete:

    • Migration 0032 deployed
    • Host running in DEVELOPMENT mode
    • PostgreSQL accessible via SSH tunnel
    • Hangfire scheduler running
    • Scripts available in ./scripts/
  • 3-Step Procedure Verified:

    • STEP 1: FREEZE VersionSet (2 min) — ready to execute
    • STEP 2: GENERATE identifiers (1 min) — ready to execute
    • STEP 3: ENQUEUE Job 893 (1 min) — ready to execute
  • Troubleshooting Matrix Present:

    • Common errors documented
    • Recovery procedures clear
  • Monitoring Instructions Clear:

    • Log tailing command:
    • Grafana dashboard:
    • Alert setup:
    • Emergency rollback:

Sign-off: ___________ (SRE Lead)


📊 SECTION D: Data Quality & State Validation

D.1 — Model & Dataset State

Owner: Data Governance / Quant Lead
Blocking: YES (ensures reproducibility)

  • Model Card Complete:

    • Model ID: ___________
    • Model Name: ___________
    • Algorithm: ___________
    • Training Data Window: ___________ to ___________
    • Last Validated: ___________
    • Known Limitations: ___________
  • Dataset Manifest Complete:

    • Dataset ID: ___________
    • Dataset Name: ___________
    • Features: ___________
    • Data Quality Score: ___________
    • Last Refreshed: ___________
    • Completeness: _______% (target: ≥95%)
  • Market Data Available:

    • KRX price data: 2024-01-02 to 2024-09-10 / (gaps: _________)
    • Index data: KOSPI/KOSDAQ /
    • Volume data: Available /
    • Corporate actions: Splits/dividends integrated /
  • No Data Quality Anomalies:

    SELECT COUNT(*) FROM market_data WHERE price_close <= 0 OR volume = 0;
    
    • Bad rows: _______ (target: 0)

Sign-off: ___________ (Quant Lead)


D.2 — PIT (Point-in-Time) Query Validation

Owner: Data Architect
Blocking: YES (ensures audit trail)

  • Correlation IDs Trackable:

    • Sample query passes /
    • SELECT COUNT(*) FROM outbox WHERE correlation_id = ?
    • Result: _______rows
  • Revision History Preserved:

    • Append-only tables confirmed
    • No UPDATE/DELETE allowed
    • Soft deletes only
  • Published_at Timestamp Correct:

    SELECT COUNT(*) FROM governance.model_version_registry
    WHERE published_at > NOW();
    
    • Result: 0 rows (no future dates) /

Sign-off: ___________ (Data Architect)


📈 SECTION E: Monitoring & Observability Setup

E.1 — Logging Configured

Owner: SRE / Observability Lead
Blocking: NO (but strongly recommended)

  • Structured Logging Active:

    • Log file: /app/kartsell/logs/phase-1-execution.log
    • Format: JSON with CorrelationId
    • Retention: _______ days
  • Serilog PII Redaction Active:

    • SSN redaction:
    • Credit card redaction:
    • API key redaction:
  • Log Aggregation Ready:

    • ELK / Splunk / Datadog connected: /
    • Search by CorrelationId functional: /

Sign-off: ___________ (Observability Lead)


E.2 — Metrics & Alerting

Owner: SRE / Observability
Blocking: NO (but recommended for incident response)

  • Grafana Dashboard:

  • Alert Thresholds Configured:

    • Job failure alert:
    • Data quality anomaly (>5% bad rows):
    • Processing latency >30min:
  • On-Call Escalation Path:

    • Primary: ___________
    • Secondary: ___________
    • Escalation delay: _______ minutes

Sign-off: ___________ (SRE Lead)


🚀 SECTION F: Final Readiness Sign-offs

F.1 — Technical Readiness

All sections B, C, D must be PASS before proceeding

Section Status Signed Off By Date
B.1 Database / ___________ _______
B.2 Host App / ___________ _______
B.3 Frontend / ___________ _______
C.1 freeze-versionset / ___________ _______
C.2 generate-identifiers / ___________ _______
C.3 Runbook / ___________ _______
D.1 Data State / ___________ _______
D.2 PIT Queries / ___________ _______

F.2 — Business Readiness

All sections A must be PASS before proceeding

Gate Status Signed Off By Date
A.1 DEC-037 (Source/License) / ___________ _______
A.2 DEC-038 (Calendar/Owner) / ___________ _______
A.3 DEC-079 (Timezone/Correction) / ___________ _______
A.4 VersionSet Approved / ___________ _______

F.3 — Final Go/No-Go Decision

OVERALL READINESS:

GO CRITERIA:

  • All Section A gates APPROVED (governance)
  • All Section B-D checks PASS (technical)
  • Emergency rollback procedure validated
  • On-call team briefed & ready

NO-GO CRITERIA:

  • Any governance approval pending (A.1-A.4)
  • Technical blocker unresolved (B.1-D.2)
  • Critical data quality issue (>10% bad rows)
  • Insufficient monitoring coverage

FINAL DECISION:

Phase 1 Execution: ☐ GO (proceed to activation) / ☐ NO-GO (defer)

Date: ___________
Approved By: ___________ (Platform Lead)
Emergency Contact: ___________
Backup Lead: ___________

Launch Window: ___________ to ___________ (UTC)
Expected Completion: 2026-10-27 to 2026-11-26 (50-90 days)
Evidence Preservation: Phase 1 logs → evidence/PHASE-1/logs/


📚 Supporting Documents

  • Pre-flight Reference: docs/CURRENT/PHASE-1_PRODUCTION_PREFLIGHT_20260806.md
  • Activation Procedure: docs/CURRENT/PHASE-1_ACTIVATION_RUNBOOK.md
  • Evidence Plan: docs/CURRENT/PHASE-1_EXECUTION_EVIDENCE_PLAN.md
  • Tech Decision Log: docs/DECISIONS/ADR-*.md (authentication, data contract, etc.)

Co-Authored-By: Claude Haiku 4.5 noreply@anthropic.com