Includes core prod + GREEN/BLUE subsystems: - prod/ (BLUE harness, configs, scripts, docs) - nautilus_dolphin/ (GREEN Nautilus-native impl + dvae/ preserved) - adaptive_exit/ (AEM engine + models/bucket_assignments.pkl) - Observability/ (EsoF advisor, TUI, dashboards) - external_factors/ (EsoF producer) - mc_forewarning_qlabs_fork/ (MC regime/envelope) Excludes runtime caches, logs, backups, and reproducible artifacts per .gitignore.
6.1 KiB
Executable File
6.1 KiB
Executable File
Scan Bridge Phase 2 Implementation - COMPLETE
Date: 2026-03-24
Phase: 2 - Prefect Integration
Status: ✅ IMPLEMENTATION COMPLETE
Deliverables Created
| File | Purpose | Lines |
|---|---|---|
scan_bridge_prefect_daemon.py |
Prefect-managed daemon with health monitoring | 397 |
scan_bridge_deploy.py |
Deployment and management script | 152 |
prefect.yaml |
Prefect deployment configuration | 65 |
SCAN_BRIDGE_PHASE2_COMPLETE.md |
This completion document | - |
Architecture
┌─────────────────────────────────────────────────────────────────┐
│ PREFECT ORCHESTRATION │
│ (localhost:4200) │
├─────────────────────────────────────────────────────────────────┤
│ ┌─────────────────────┐ ┌─────────────────────────────┐ │
│ │ Health Check Task │────▶│ scan-bridge-daemon Flow │ │
│ │ (every 30s) │ │ (long-running) │ │
│ └─────────────────────┘ └─────────────────────────────┘ │
│ │ │
│ │ manages │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Scan Bridge Subprocess │ │
│ │ (scan_bridge_service.py) │ │
│ │ │ │
│ │ • Watches Arrow files │ │
│ │ • Pushes to Hazelcast │ │
│ │ • Logs forwarded to Prefect │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
└─────────────────────────────────────────┼───────────────────────┘
│
▼
┌─────────────────────┐
│ Hazelcast │
│ (DOLPHIN_FEATURES) │
│ latest_eigen_scan │
└─────────────────────┘
Key Features
1. Automatic Restart
- Restarts bridge on crash
- Max 3 restart attempts
- 5-second delay between attempts
2. Health Monitoring
HEALTH_CHECK_INTERVAL = 30 # seconds
DATA_STALE_THRESHOLD = 60 # Critical - triggers restart
DATA_WARNING_THRESHOLD = 30 # Warning only
3. Centralized Logging
All bridge output appears in Prefect UI:
[Bridge] [OK] Pushed 200 scans. Latest: #4228
[Bridge] Connected to Hazelcast
4. Hazelcast Integration
Checks data freshness:
- Verifies
latest_eigen_scanexists - Monitors data age
- Alerts on staleness
Usage
Deploy to Prefect
cd /mnt/dolphinng5_predict/prod
source /home/dolphin/siloqy_env/bin/activate
# Create deployment
python scan_bridge_deploy.py create
# Or manually:
prefect deployment build scan_bridge_prefect_daemon.py:scan_bridge_daemon_flow \
--name scan-bridge-daemon --pool dolphin-daemon-pool
prefect deployment apply scan-bridge-daemon-deployment.yaml
Start Worker
python scan_bridge_deploy.py start
# Or:
prefect worker start --pool dolphin-daemon-pool
Check Status
python scan_bridge_deploy.py status
python scan_bridge_deploy.py health
Health Check States
| Status | Condition | Action |
|---|---|---|
| ✅ Healthy | Data age < 30s | Continue monitoring |
| ⚠️ Warning | Data age 30-60s | Log warning |
| ❌ Stale | Data age > 60s | Restart bridge |
| ❌ Down | Process not running | Restart bridge |
| ❌ Error | Hazelcast unavailable | Alert, retry |
Monitoring Metrics
The daemon tracks:
- Process uptime
- Data freshness (seconds)
- Scan number progression
- Asset count
- Restart count
Files Modified
SYSTEM_BIBLE.md- Updated v4 with Prefect daemon info
Next Steps (Phase 3)
-
Deploy to production
python scan_bridge_deploy.py create prefect worker start --pool dolphin-daemon-pool -
Configure alerting
- Add Slack/Discord webhooks
- Set up PagerDuty for critical alerts
-
Dashboard
- Create Prefect dashboard
- Monitor health over time
-
Integration with main flows
- Ensure
paper_trade_flowwaits for bridge - Add dependency checks
- Ensure
Testing
# Test health check
python -c "
from scan_bridge_prefect_daemon import check_hazelcast_data_freshness
result = check_hazelcast_data_freshness()
print(f\"Status: {result}\")
"
# Run standalone health check
python scan_bridge_prefect_daemon.py
# Then: Ctrl+C to stop
Phase 2 Status: ✅ COMPLETE
Ready for: Production deployment
Next Review: After 7 days of production running
Document: SCAN_BRIDGE_PHASE2_COMPLETE.md
Version: 1.0
Date: 2026-03-24