af1236202d
- F14: late_chase_risk_score 검증 * GAS가 유일한 생산처 (Python canonical 없음) * migration_action: KEEP_IN_GAS로 정정, status: DONE - F02/F03/F04/F06: priceBasis 로직 포팅 * formulas/price_basis_v1.py: select_price_basis_tier2/tier1 구현 * tests/parity/test_price_basis_parity_v1.py: 8 parity 테스트 (모두 PASS) * GAS Number.isFinite() 의미론 정확히 재현 (math.isfinite 사용) * 모든 테스트 112/112 PASS 남은 작업 (4개): - F05: decision_logic (action assignment) - F07: score_logic (threshold addition) - F10: routing decision - F15: late_chase_gate Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
3.8 KiB
3.8 KiB
Runbook
- Build or refresh the JSON harness with
npm run prepare-json. - Run strict validation gates before packaging.
- Generate canonical artifacts through the builder scripts only.
- Render reports from canonical data only.
- Package upload artifacts only after the full gate passes or the output is explicitly audit-only.
- Treat work as complete only when YAML, code, data artifacts, and validation evidence all exist together.
- For calibration maintenance, run
npm run ops:calibration-backlogor the Gitea schedule in.gitea/workflows/calibration_backlog.yml. - Promote a threshold to
PROVISIONALonly when there is a recorded sample note and an explicit change note inTemp/calibration_change_ledger_v4.json. - Promote a threshold to
CALIBRATEDonly whensample_n >= 30, a backtest note exists, and the validator still reportsoverclaimed_count == 0. - For human review, open
Temp/calibration_review_report_v1.mdafter each backlog build. - For approval signoff, open
Temp/calibration_approval_list_v1.mdand approve onlysource=PROVISIONALrows unless a new provisional review is explicitly requested. - For spreadsheet-like edits of
settingsandaccount_snapshot, runnpm run ops:snapshot-weband validate withnpm run ops:snapshot-web-validate. - Treat the snapshot admin web UI as the canonical edit surface for SQLite-backed manual maintenance; export JSON only when CI or downstream tooling needs a file artifact.
- Keep
settingsandaccount_snapshotin the same workspace SQLite DB. Do not split them into separate files per sheet; use a separate SQLite DB only for the KIS collection pipeline. - Use the
KIS Collectionpanel in snapshot admin to inspect the latest SQLite collection run, report status, source counts, and recent errors before you touch the editor. - Use the collection filter when you need to narrow runs, snapshots, or errors by ticker/source/status.
- Use the change log filter when you need to audit a specific domain, action, or target reference.
- Use
/collectionwhen you want the collection-only dashboard with raw JSON download. - Use
Export approval packetin the snapshot admin UI to writeTemp/snapshot_admin_approval_packet_v1.jsonandTemp/snapshot_admin_approval_packet_v1.mdfor review handoff. - For Synology external access, follow
docs/SYNOLOGY_SNAPSHOT_ADMIN_POC.mdandtools/run_snapshot_admin_synology.sh: keep the Python service on127.0.0.1, expose only the DSM reverse proxyHTTPSendpoint, and require the built-in Basic Auth gate. - Short balance ratio (
short_balance_ratio) has no automatable path — confirmed 2026-06-22 by live-testingpykrx.stock.get_shorting_balance()(already used elsewhere in this repo for EOD prices), which returnsHTTP 400 LOGOUTeven with a properly bootstrapped session. This KRX "standard report" endpoint family requires actual KRX member login (KRX_ID/KRX_PW), unlike the basic OHLCV endpoints. Adding KRX login credentials is a new credential-management policy decision (same category as governance/rules/06-07) that requires explicit user approval — do not add it unilaterally. Until then, download the KRX 공매도종합포털 CSV weekly (every Monday before market open) and feed it via--short-csvtobuild_qualitative_sell_inputs_v1.py. - ETF NAV/iNAV/괴리율/추적오차/AUM has no automatable path either — same 2026-06-22 test confirmed
pykrx.stock.get_etf_price_deviation()/get_etf_tracking_error()also returnHTTP 400 LOGOUT(same KRX member-login gate as item 21). Seespec/16_data_gaps_roadmap.yamlS4/S5automation_attempt_2026_06_22for the full reproduction. Until a KRX login policy decision is made, keep feedingetf_nav_manualviatools/import_etf_nav_manual.pyfrom manually downloaded KRX/KIND/운용사 CSV exports.