| 105 |
105 |
- Incident 2026-11-01 ~21:00: per-version manifests with full file lists reached 86 GB on the internal SSD during the bulk load → manifests are now compact deltas; the full list of any version is reconstructed from `lake_files` (`findata manifest <dataset> [--version]`). |
| 106 |
106 |
- Incident 2026-11-01 ~21:20: PM2 restarts left orphan workers (ssh wrapper exited, remote kept running) → wrapper now forwards SIGTERM to the remote process and waits; leftovers from a previous incarnation are terminated on start. |
| 107 |
107 |
- Progress 2026-11-02 00:45 ET: 187 archives done / 0 dead; stock & ETF 1-min raw A–Z complete (4.29 G + 0.9 G bars), ETF 1-day complete, index/FX/crypto/futures continuous 1-min + 1-day complete, options 61/68 quarters (≈ 3.1 G option rows so far), fundamentals 2 029 / 13 209 tickers (≈ half of "active" listings are warrants/units/CEFs/notes without statements → vendor 404, logged and skipped). |
| 108 |
|
−- Evidence of completion will be appended below as jobs finish (`findata status`, console Storage/Ingestion). |
|
108 |
+- **Completed 2026-11-02 ≈ 11:20 ET**: 798 / 798 archives succeeded (0 skipped, 0 unparseable files), plus fundamentals for every active stock. Totals (catalog): **564.7 GB curated Parquet, 38.81 G rows, 3.13 M files, 64 active datasets**. Raw archives kept on the external SSD: 806 files, 434 GB. Coverage: stocks 16 195 symbols (incl. delisted) 2000-01-03 → 2026-10-30; ETFs 5 161; indices 122 (2008→); options 11 582 underlyings 2010-01-04 → 2026-10-30 (4.23 G rows); futures 3 continuous series × 5 timeframes + individual contracts; FX, crypto. Fundamentals: 5 451 entities, 18.07 M PIT facts (periods 2010-12 → 2026-10), 373 326 earnings events; 2 658 active listings have no statements (warrants/units/CEFs/notes → vendor 404, recorded in the job checkpoint). |
|
109 |
+- Families (GB / rows): stocks 370.1 / 27.75 G · options 99.2 / 4.23 G · ETFs 57.7 / 3.70 G · futures continuous 12.6 / 1.21 G · futures contracts 10.4 / 0.90 G · FX 8.0 / 0.52 G · crypto 3.7 / 0.23 G · indices 3.2 / 0.26 G. Disks after load: internal 185 GB used (319 GB free after the coverage prune), external 895 GB used (2.98 TB free). Postgres 34 GB (coverage pruned 574 M → 113 M rows, 131 → 25 GB; `coverage` is now kept for the 7 primary datasets only). |
|
110 |
+ |
|
111 |
+## Query performance on the full lake (2026-11-02, laptop → public URL over the tunnel, warm) |
|
112 |
+| Request | Result | |
|
113 |
+|---|---| |
|
114 |
+| bars AAPL 1m one day | 55–124 ms (744 rows) | |
|
115 |
+| bars AAPL 1m 31 days (2024-03) | 370–530 ms (15 907 rows) | |
|
116 |
+| bars MSFT 1m 31 days (2008-10) | 0.9–1.6 s (12 918 rows) | |
|
117 |
+| bars AAPL 5m 6 months | 1.0–1.6 s (23 012 rows) | |
|
118 |
+| bars AAPL 1d 10 years | 170–260 ms (2 516 rows) | |
|
119 |
+| bars NVDA 1m 31 days with query-time split+dividend adjustment | 570–780 ms | |
|
120 |
+| bars TWTR-DELISTED 1m 2022-10 | 270–350 ms | |
|
121 |
+| SQL AAPL daily OHLC from 1m, year 2024 | 185 ms | |
|
122 |
+| SQL SPY option chain one day / one expiry | 98 ms (372 rows) · SPY full history count 254 ms (26.6 M rows) | |
|
123 |
+| SQL EURUSD 1m 2020 count · ES ratio-adjusted yearly counts | 30 ms · 52 ms | |
|
124 |
+| SQL 3 symbols split_div daily closes March 2020 | 47 ms | |
|
125 |
+| SQL cross-section: all stocks 1d on one date · all stocks 1m 09:30 bar on one date | 1.3 s (5 962 symbols) · 2.9 s (5 729 symbols) | |
|
126 |
+| export 5 symbols × full year 2024 1m → Parquet | 1.9 s (914 489 rows, 17 MB) | |
|
127 |
+| fundamentals MSFT as-of 2015 · instrument search | 21 ms · 41 ms | |
|
128 |
+How: the API never globs the lake — file lists come from the catalog (`lake_files`, indexed by dataset/date and dataset/symbol); the SQL playground/assistant extract symbol / underlying / year / date predicates from the statement and build the same explicit file list (fast path); statements without any such predicate fall back to a Hive directory scan (30–60 s to list a 170 k–320 k-file dataset) and are documented as slow. |
|
129 |
+ |
|
130 |
+## Known limitations after the full load |
|
131 |
+- Whole-dataset SQL scans without a symbol or date predicate are slow (directory listing of up to 320 k files); use predicates, the `*_1d_*` datasets for cross-sections, or exports. |
|
132 |
+- The cold root (external SSD, ≈ 1.3 TB incl. raw archives) is not in the nightly backup (re-downloadable; catalog restore recreates the file list). The hot root + Postgres are backed up nightly (first full-catalog backup 04:04 → 04:41). |
|
133 |
+- `_retired/` holds files superseded during the load (duplicate processing after worker restarts); GC removes them after 7 days. |
| 109 |
134 |
|
| 110 |
135 |
## Known limitations / exact next steps |
| 111 |
136 |
1. **TOTP**: enrol the owner's authenticator in Settings → Security (one click + code). Until then login is password-only. |
| 112 |
137 |
|