kjh2064
6475ecd3b0
refactor(dotnet): normalize factor input dates
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 19s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 2m6s
2026-07-13 00:20:46 +09:00
kjh2064
29929d76d3
test(dotnet): cover factor calculator input ordering
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 18s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
2026-07-13 00:19:11 +09:00
kjh2064
6772a86081
refactor(dotnet): simplify factor calculator guards
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 25s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
2026-07-13 00:18:05 +09:00
kjh2064
6ff40c8ea3
feat(dotnet): add factor computation audit service
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 19s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 2m5s
2026-07-13 00:15:55 +09:00
kjh2064
6f252162ef
refactor(dotnet): add collection audit trail
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 23s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
2026-07-13 00:14:05 +09:00
kjh2064
ee4ae5583d
refactor(dotnet): add scheduler audit trail
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 16s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 2m0s
2026-07-13 00:11:52 +09:00
kjh2064
d7c106f292
refactor(dotnet): standardize scheduler state and definitions
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 23s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 2m9s
2026-07-13 00:08:28 +09:00
kjh2064
528a1b4425
refactor(dotnet): standardize scheduler job definitions
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 20s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 2m5s
2026-07-13 00:04:39 +09:00
kjh2064
3483f84044
feat(dotnet): add migration boundary registry
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 18s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
2026-07-13 00:03:11 +09:00
kjh2064
0c37bfa13c
fix(qe-m2-03): parse supported Npgsql keys only and ignore custom options gracefully
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 1s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 12s
2026-07-12 22:25:38 +09:00
kjh2064
db25edfd87
fix(qe-m2-03): normalize libpq-style options parameter to Search Path for Npgsql compatibility
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 1s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 12s
2026-07-12 22:23:36 +09:00
kjh2064
902dcd1dc8
feat(qe-m2-03): simplify Pg test connection and mark backfill as DONE
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 1s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 12s
2026-07-12 22:21:46 +09:00
kjh2064
ea9614be13
feat(qe-m3-05): complete scores frontend DOM verification E2E test and fix Gitea CI migration sequence
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 1s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 12s
2026-07-12 22:17:45 +09:00
kjh2064
3c22798e08
feat(qe-m3-04): refactor PipelineOrchestrator to compute steps 1-2 and mark 3-7 as STUBBED
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 0s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 12s
2026-07-12 22:08:48 +09:00
kjh2064
157f17ec52
feat(qe-m3-03): support jsonb casting in PostgresqlHistoryStore and implement database ingestion tests
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 0s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 12s
2026-07-12 22:03:53 +09:00
kjh2064
f698880aaa
build(harness): integrate TreatWarningsAsErrors into all csproj files and prioritize dotnet tests in CI
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 1s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 12s
2026-07-12 21:57:36 +09:00
kjh2064
89d5842505
feat(qe-m3-02): implement C# FactorCalculator and xUnit parity tests for Momentum, ATR, StDev, and Beta
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 0s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 13s
2026-07-12 21:51:37 +09:00
kjh2064
b0c9776601
feat(qe-m3-01): implement GetBarsAsOf with lookahead bias prevention and complete unit tests
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 9s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 16s
2026-07-12 21:46:38 +09:00
kjh2064
5589a0432b
feat(collection): wire KIS collection end-to-end, add price-history pipeline (WBS QE-M0/M1/M2)
...
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 16s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 56s
Critical re-review of the QuantEngine WBS evidence system found several
regressions of the "no fake gates" discipline established by M0, plus a
still-unwired M1 collection path. This closes 10 more WBS tasks
(QE-M1-01..06, QE-M2-01/02/04/05/06 — see spec/60_quant_engine_wbs.yaml)
with real, gate-verified evidence (18/34 total).
M1 — real KIS data now lands in PostgreSQL end-to-end:
- SchedulerService: load ticker universe from GatherTradingData.json instead
of a hardcoded array; fix a Hangfire scoped-service resolution bug.
- KisDataCollectionOrchestrator: restore logging on the lineage-event write
path (was a bare `catch {}` swallowing all failures silently); persist
daily OHLCV bars into quantengine.price_history_daily per run.
- Verified live: POST /api/collection/run -> Hangfire -> orchestrator ->
KIS mock API -> PostgreSQL, with Playwright DOM/API parity evidence.
M2 — historical price-history pipeline:
- CollectionRepository: SavePriceHistoryDailyAsync (idempotent upsert),
GetPriceHistorySummaryAsync (per-ticker aggregation) + a new
DateOnlyTypeHandler registered globally, since Dapper has no built-in
System.DateOnly support in either direction (write threw
NotSupportedException, read threw a constructor-mismatch
InvalidOperationException — found by exercising both paths live).
- tools/validate_price_history_integrity_v1.py: gap-freeness (vs KIS
trading calendar) + price-sanity gate over collected history.
- Admin Collection page: new "히스토리 현황" summary table +
GET /api/collection/history-summary, with Playwright evidence.
Governance/gate fixes:
- validate_market_time_series_schema_v1.py mislabeled its own output
"runtime_database_query": "DATA_GATED" despite never opening a DB
connection (pure file/regex check) — relabeled "check_scope":
"STATIC_STRUCTURAL_ONLY" and wired the node into the release DAG so it
isn't only reachable from ci.yml, matching every other validator.
Live-data authority for the same claim stays with QE-M2-01's pg_query
gate (spec/60), documented in spec/64.
- Fixed a WBS log_pattern check (QE-M1-06) that couldn't match its own
multi-line target; loosened two depends_on edges (QE-M1-05/06,
QE-M2-04/05) that encoded "needs X verified" when the real requirement
was only "needs X's code merged."
- Discovered and fixed admin-pages.spec.ts logging in with the wrong
seeded password (admin/admin instead of admin/quant123!, per CLAUDE.md)
— every test in that suite had been silently failing at the login step.
Deferred: QE-M2-03 (2-year backfill) — the KIS mock/VTS token endpoint
started returning 403 after the first successful call this session; looks
like a token-issuance rate limit or credential issue on KIS's side, not a
code defect. Backfilling at scale right now would just generate more 403s,
so left QE-M2-03 PENDING pending KIS account/console verification.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
2026-07-12 21:07:53 +09:00
kjh2064
f9a0ba3690
chore(spec): deprecate redundant schema-model generation layer
...
schemas/generated/(174) + src/quant_engine/models/generated/(347) duplicated
the existing runtime/python/core/formulas/generated/ formula-stub system with
a generic metadata wrapper carrying no real computation, validated only by a
file-count gate (validate_schema_model_generation_v1.py). Remove the
generator scripts, generated files, and CI/DAG wiring; keep
schemas/generated/gas_adapter_contract.schema.json, which serves an
unrelated GAS-adapter contract check.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
2026-07-12 21:07:20 +09:00
kjh2064
26b163eab9
feat(db): add V7 database migration script to seed default settings data
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 14s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 1m47s
2026-07-12 14:32:25 +09:00
kjh2064
1c192ecdea
feat(web): add DB Table Management admin page supporting dynamic view and CRUD row modification
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 15s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 1m46s
2026-07-12 14:24:36 +09:00
kjh2064
82e18a9a22
feat(web): implement KisApiClient request throttling to prevent KIS OpenAPI rate limits
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 16s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 1m45s
2026-07-12 14:18:44 +09:00
kjh2064
6d9937c590
fix(web): calculate correct Hangfire job StartedAt using TotalDuration metadata
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 16s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 1m46s
2026-07-12 14:15:46 +09:00
kjh2064
ef6f9c74f6
fix(web): define explicit action endpoint with handler query for operations manual trigger form
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 15s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 1m45s
2026-07-12 14:10:40 +09:00
kjh2064
24ec410f3d
feat(web): publish version.txt in build pipeline for deterministic live server versioning
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 16s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 1m46s
2026-07-12 14:05:10 +09:00
kjh2064
024122d310
fix(web): resolve path separator mismatch in git commit hash parsing, and update fallback release values
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 16s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 1m47s
2026-07-12 13:57:42 +09:00
kjh2064
fc0d341d15
test(web): add unit tests to verify Hangfire scheduler jobs mapping and cron pattern validation
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 24s
Prepare Release / Build & Create Release (push) Successful in 1m0s
Prepare Release / Release Notification (push) Successful in 1s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 2m6s
2026-07-12 13:44:43 +09:00
kjh2064
688ee3350d
chore(web): update hourly price update scheduler to run every 2 hours during market hours
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 25s
Prepare Release / Build & Create Release (push) Successful in 1m0s
Prepare Release / Release Notification (push) Successful in 1s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
2026-07-12 13:42:51 +09:00
kjh2064
f40da64a05
fix(web): support runId in Detail page from both route parameters and query strings
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 24s
Prepare Release / Build & Create Release (push) Successful in 56s
Prepare Release / Release Notification (push) Successful in 1s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 2m8s
2026-07-12 13:37:33 +09:00
kjh2064
475950be36
feat(web): add manual trigger action support for Hangfire recurring jobs
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 22s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
Prepare Release / Build & Create Release (push) Successful in 1m9s
Prepare Release / Release Notification (push) Successful in 2s
2026-07-12 13:36:52 +09:00
kjh2064
27a56e65b7
feat(web): update AppVersion format to comply with quant_YYYYMMDD.count.hash rule
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 23s
Prepare Release / Build & Create Release (push) Successful in 58s
Prepare Release / Release Notification (push) Successful in 1s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 1m52s
2026-07-12 13:31:46 +09:00
kjh2064
a9986fbc4c
feat(web): implement progressive IP lockout duration scaling based on block counts
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 22s
Prepare Release / Build & Create Release (push) Successful in 59s
Prepare Release / Release Notification (push) Successful in 1s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 2m1s
2026-07-12 13:26:30 +09:00
kjh2064
ee14f5fbe4
feat(web): dynamically fetch release version from AssemblyInformationalVersion
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 24s
Prepare Release / Build & Create Release (push) Successful in 59s
Prepare Release / Release Notification (push) Successful in 1s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 1m58s
2026-07-12 13:21:27 +09:00
kjh2064
3f45fbc36e
feat(web): display application version on login and admin dashboard pages
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 27s
Prepare Release / Build & Create Release (push) Successful in 1m5s
Prepare Release / Release Notification (push) Successful in 1s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
2026-07-12 13:19:47 +09:00
kjh2064
87949f42b5
feat(web): add lineage_events.jsonl structured audit logging for collection runs
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 22s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
Prepare Release / Build & Create Release (push) Successful in 1m14s
Prepare Release / Release Notification (push) Successful in 1s
2026-07-12 13:18:50 +09:00
kjh2064
4eb23a41ca
feat(web): implement market-close caching mechanism for collection data
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 22s
Prepare Release / Build & Create Release (push) Successful in 1m1s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
Prepare Release / Release Notification (push) Successful in 1s
2026-07-12 13:17:37 +09:00
kjh2064
6db27fd634
feat(web): implement exponential backoff retry pattern in KisApiClient
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 23s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
Prepare Release / Build & Create Release (push) Successful in 1m3s
Prepare Release / Release Notification (push) Successful in 1s
2026-07-12 13:16:38 +09:00
kjh2064
a3fe301308
security(web): secure Hangfire Dashboard with cookie authentication filter
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 24s
Prepare Release / Build & Create Release (push) Successful in 1m0s
Prepare Release / Release Notification (push) Successful in 1s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 1m58s
2026-07-12 13:14:20 +09:00
kjh2064
bcc9b76212
fix(web): resolve User Edit routing mismatch and apply asp-page Tag Helpers
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 22s
Prepare Release / Build & Create Release (push) Successful in 58s
Prepare Release / Release Notification (push) Successful in 1s
Validators (Pushes and Pull Requests) / validate-core (push) Successful in 1m54s
2026-07-12 13:12:24 +09:00
kjh2064
6582ffc02a
chore: deprecate and remove blazor client code and project configurations
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 22s
Prepare Release / Build & Create Release (push) Failing after 58s
Prepare Release / Release Notification (push) Successful in 1s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
2026-07-12 13:06:57 +09:00
kjh2064
521d1c0b3d
test: make dotnet evidence tests runner portable
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 15s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 1m23s
2026-07-12 12:40:54 +09:00
kjh2064
890ed68a0f
fix: restore snapshot admin CI validation
Snapshot Admin Validation / validate (push) Failing after 7s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 19s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 57s
2026-07-12 12:26:55 +09:00
kjh2064
92efa934a2
fix: restore authoritative database connection setting
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 15s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 54s
2026-07-12 12:22:17 +09:00
kjh2064
606664404b
chore: protect external runtime connection settings
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 16s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 54s
2026-07-12 12:19:34 +09:00
kjh2064
a7f9b27a55
fix: require production database connection environment
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 16s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 54s
2026-07-12 12:16:22 +09:00
kjh2064
d833d386d0
feat: add postgres market time series schema
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 15s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 55s
2026-07-12 12:11:18 +09:00
kjh2064
a9b8f46187
feat: complete dotnet formula and platform cutover gates
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 16s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 54s
2026-07-12 12:08:03 +09:00
kjh2064
187cdf99c0
fix: import logging for JSON seed ingestion
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 15s
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 54s
2026-07-12 11:58:11 +09:00
kjh2064
21da79cb46
feat: ingest canonical JSON seeds into PostgreSQL
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Failing after 16s
Validators (Pushes and Pull Requests) / validate-core (push) Has been cancelled
2026-07-12 11:57:35 +09:00