- Extend FeatureStore protocol with catalog() and read_panel() so WarehouseSource
can be typed against the port (mypy strict clean)
- Add silver_ingest_helpers.ingest_crypto_pit — shared bronze→silver→warehouse
write path for assets and tests
- Implement WarehouseSource in combined_book_source.py; delegates crypto panel
to read_panel+_panel and futures to WarehousePriceProvider
- Add equivalence test: warehouse-fed panel == raw-file-fed panel (A→B gate)
- 291 tests pass, 0 regressions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>