kjh2064
|
7dd300f5b5
|
feat: Infrastructure Implementation Phase — Database, Services, API integration
ci / backend (push) Failing after 1s
ci / static (push) Failing after 5s
ci / frontend (push) Failing after 39s
Implements AGENTS.md v16.0 Infrastructure Contract for 252+ trading-day shadow runs:
Database Schema:
- V0008_CreateShadowRunTable.sql: Immutable audit trail, PIT-safe queries
- Indexes: (model_id, created_at), (status), (published_at)
- JSONB columns for metrics/gates (flexible versioning)
Services (Vertical Slice pattern):
- KrxDataService: Fetch OHLCV + fees from Korea Exchange; caching (24h); retry logic
- MarketCalendarService: Trading sessions with KRX holidays (2024-2026 built-in)
- IKrxDataService, IMarketCalendarService interfaces (testable, mockable)
Tests (7/7 passing):
- KrxDataService: Fetch bars, cache hits, fee schedule
- MarketCalendarService: Session window, holiday exclusion, determinism, 252-day coverage
- All using xUnit IAsyncLifetime for proper resource cleanup
Architecture adherence:
- SOLID: Service interfaces, DI-ready, separation of concerns
- Complexity: Cyclomatic < 10 per method
- Idempotent: KRX caching prevents duplicate API calls; date ranges deterministic
- Safety: Tested cache hit/miss, holiday logic, 252-day window validation
Next Phase (When user requests):
- Shadow Run API Endpoint (FastEndpoints)
- Hangfire Job registration & startup integration
- E2E test: trigger shadow run → job → result persisted
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-08-02 08:02:05 +09:00 |
|
kjh2064
|
0587a3f0a0
|
feat: Shadow Run Design Phase — 252+ trading-day validation framework
ci / backend (push) Failing after 1s
ci / static (push) Failing after 5s
ci / frontend (push) Failing after 41s
Implements foundation for model evaluation per AGENTS.md v16.0:
- Domain models: ShadowRunCommand, ShadowRunResult, ValidationGates
- Data backfiller: OHLCV + fee schedule collection from KRX API
- Replay engine: Historical model simulation with signal/order/fill tracking
- Metrics calculator: Sharpe, Calmar, PBO, DSR, Max Drawdown, Win Rate
- Hangfire job orchestrator: Async shadow run execution (q-research queue)
- Integration tests: 4/4 passing (backfill, replay, metrics, validation)
Contract validation:
- Input: Model ID, date window, market phase filter
- Output: Immutable result with phase breakdown, gate status
- Gates: PBO ≤ 20%, DSR ≥ 95%, cost 2x positive
Architecture adherence:
- SOLID: Single responsibility (backfiller, replay, calculator separation)
- Complexity: Cyclomatic < 10 per method
- Safety: Idempotent replay via deterministic price/order fills
- Necessity: Grounded in CLAUDE.md § "Validation Gates"
- Pattern: Vertical Slice (Command → Handler → Queries)
Not included (future):
- Full 252-day rehearsal (requires market data backfill)
- Downstream inbox consumers (event delivery mechanisms)
- Phase segmentation logic (Bull/Bear/Sideways attribution)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-08-02 07:55:35 +09:00 |
|
kjh2064
|
6a31bc3737
|
PR 4b: Apply CA1822 static method modifiers + Gitea Actions secrets guidance
Completed DEBT-001 paydown (1pt) by making three pure-function methods static:
- ScheduleOccurrencePlanner.GetNextDueAt (no instance state accessed)
- PromotionGateEvaluator.Evaluate (evidence gate only, no mutations)
- EvaluationWindowPlanner.Plan (deterministic date calculation)
Changes:
- Added `static` modifier to three domain methods
- Updated call sites: ModelOperationsDispatcherJob, tests
- Removed unnecessary DI registrations (ModelOperationsModule)
- Eliminated instance creation overhead in tests
Test Results: 40/40 PASS (17 ModelOps + 18 SignalEngine + 5 Architecture)
Documentation:
- Updated TECH_DEBT_REGISTER.md: DEBT-001 Completed (PR 4b)
- Added Gitea Actions Secrets section to CLAUDE.md documenting:
- KRX_API_KEY, OPENDART_API_KEY, KIS_API_KEY storage location
- CI/CD usage pattern
- Local dev guidance
Per AGENTS.md v16.0: Code changes are performance improvements, not suppressions.
Quarterly paydown: +1pt (target 4pts for 20% Q3 2026)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-08-02 05:59:01 +09:00 |
|
kjh2064
|
88ea5edef5
|
fix: Replace IReadOnlySet/IReadOnlyDictionary with HashSet/Dictionary for performance (CA1859) and use LoggerMessage delegates (CA1848)
ci / backend (push) Failing after 1s
ci / static (push) Failing after 5s
ci / frontend (push) Failing after 4s
Source: CLAUDE.md observability section - Serilog structured logging and performance are first-class concerns
Slice: ModelOperations/Scheduling, Domain/ModelFeedbackCycle
Policy: CA1859 (concrete types over interfaces), CA1848 (LoggerMessage delegates)
Changes:
- ScheduledModelOperationJob: LoggerMessage.Define for warning/info logs
- ModelOperationsDispatcherJob: LoggerMessage.Define for error logs
- ModelOperationExecution: Dictionary<State, HashSet<State>> state machine
- ModelFeedbackCycle: Dictionary<State, HashSet<State>> state machine
Verification:
- dotnet build: 0 errors, 0 warnings
- dotnet test: 41/41 tests passed (ArchitectureTests 5, ModelOperations 17, SignalEngine 18)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-08-02 05:37:45 +09:00 |
|
kjh2064
|
87705c1f6a
|
fix: Resolve backend build errors - add RootNamespace, OutputType, GlobalUsings, and code analysis settings
ci / backend (push) Failing after 1s
ci / static (push) Failing after 5s
ci / frontend (push) Failing after 6s
|
2026-08-02 05:30:00 +09:00 |
|
kjh2064
|
dcd1322d41
|
Initial commit: Add project files
ci / backend (push) Failing after 12s
ci / frontend (push) Failing after 19s
ci / static (push) Failing after 45s
|
2026-08-02 05:15:36 +09:00 |
|