- Fix
_load_users()to reload from disk (not cache at init) - Add atomic write in
_save_users() - Add
rolefield to user records (owner/admin/user) - Pre-seed
users.jsonwith owner account - Test: register → restart → login works
- Create
services/secret_manager.py - Implement
st.secretsprimary + Fernet-encrypted fallback - Add
get_secret(),set_secret(),mask_secret(),list_secrets() - Migrate
auth_service.pyto usesecret_manager - Test: secret read/write/mask round-trip
- Create
pages/25_Admin.pywithrequire_admin()guard - Implement User Management tab
- Implement Secrets/Config management tab
- Implement Audit Logs tab
- Implement Incidents/Playbook controls tabs
- Register admin page in
dashboard.pynavigation - Test: non-admin gets denied, admin sees all tabs
- Increase training subsample to 15K
- Add feature engineering (protocol/service one-hot encoding)
- Add Hungarian algorithm for cluster-label alignment
- Add Davies-Bouldin index to
evaluate() - Build combined scoring: IF anomaly × FCM membership fusion
- Add confusion matrix, ROC/PR curves to Analysis page
- Report honest before/after metrics
- Add
pyotpTOTP support inauth_service.py - Bug Fix: Resolved
NameError(missingTuple) inml_engine/geo_predictor.py. - Grounding UBA: Learning from real SIEM data.
- Grounding Executive Metrics: MTTR, MTTD, ROI, and SNR are now dynamic.
- Ground Main Dashboard Metrics (Completed)
- Refactor
load_soc_datato useDatabaseService. - Add "Live System" / "Simulation Mode" indicator.
- Fix empty state bug with robust fallback.
- HOTFIX: Resolved "Blank Screen" regression caused by premature
st.rerun().
- Refactor
- Audit and Ground All Pages (Completed)
- Audit and fix
05_Timeline.py(Added Live/Sim badges). - Audit and fix
08_Kill_Chain.py(Added Live/Sim badges). - Audit and fix
09_Dark_Web.py(Added Live/Historical badges). - Fix missing methods in
services/threat_intel.py. - Verify transparency across all modules.
- Audit and fix
- Final Verification
- Run full system test (Manual verification recommended).
- Bug Fix: Resolved
NameError(missingtime) inpages/08_Kill_Chain.py. - Bug Fix: Resolved
NameError(missing imports) inpages/08_Kill_Chain.py. - Bug Fix: Resolved
AttributeErrorinfuzzy_clustering.py. - Implement session token persistence (data/sessions.json)
- Auto-login on valid session token
- Add "Remember this device" option
- Update
requirements.txtwith new dependencies
- Run all tests
- Verify no theme/style regressions
- Git commit and push
- Write walkthrough
- Fix Settings API Key mismatch (Gemini -> Groq)
- Add AbuseIPDB configuration
- Make Executive Dashboard dynamic (connect to DB)
- Implement Supervised Fuzzy Centroid Classification in fuzzy_clustering.py
- Tune Isolation Forest ensemble weights (95% RF / 5% IF)
- Implement
reload_config()inThreatIntelligenceandAIAssistant - Update Settings page to reload services on save
- Add Gmail SMTP & Twilio config fields to Settings
- Implement persistent
sessions.jsontoken storage - Add "Remember this device" checkbox to Login page
- Verify auto-login on restart logic
- Fix Admin panel syntax error (
pages/25_Admin.py) - Update
sidebar_manager.py(hide Admin page, bold headers) - Refactor
Settings.py(Role-based view: System vs User) - Enhance
Login.pywith animations and better styling
- Alerts Page: Enable AlienVault OTX & AbuseIPDB enrichment for all displayed alerts
- Executive Dashboard: Replace static "0.0h" metrics with real calculations from
incident_history.json - Threat Intel: Verify VirusTotal/AbuseIPDB real-time lookups
- Logs: Ensure "Live Stream" actually reads from
services.log_ingestor - Reports: Generate real PDF reports using
fpdfand dynamic data - Settings: Validate API keys on save (check connectivity)
- Fuzzy C-Means: Improve clustering accuracy (currently ~52%) via feature scaling and hyperparameter tuning
- Data Preprocessing: Implement RobustScaler/MinMaxScaler to handle outliers in NSL-KDD
- Visualization: Enhance cluster visualization with PCA/t-SNE for better separability
- API Configuration Audit: Verified keys for VirusTotal, AbuseIPDB, OTX, Groq.
- Service Layer Enhancements:
- Updated
services/threat_intel.pywith real pulse matching and fallback logic. - Improved
get_country_threat_countswith weighted geographic distribution.
- Updated
- Page Integration & Live Data:
-
pages/01_Dashboard.py: Wired up live stats and added manual Refresh. -
pages/06_Threat_Intel.py: Integratedforce_refreshand auto-feed. -
services/background_monitor.py: Integrated withlog_ingestorfor live feed.
-
- Verification: Verified end-to-end data flow and refresh functionality.
- GitHub Sync: Pushing all changes to repository.
[x] Phase 14-B: Global API Integration & Continuous Data Refresh
[x] ML Synchronization (Grounding Models in Reality)
[x] Update geo_predictor.py to ingest real OTX pulse counts (Replace synthetic history).
[x] Ensure fuzzy_clustering.py handles live SIEM data streams.
[x] Continuous Updates (Apply to all 12 platform pages)
[x] Executive Dashboard: Connect KPI cards (Uptime, MTTR) to real database statistics + Refresh button.
[x] Geo Predictions: Implement Refresh and automated model re-prediction.
[x] Kill Chain: Link "Active Threats" to live SIEM alerts + Refresh stage mapping.
[x] Log Viewer: Implement non-blocking auto-refresh mechanism.
[x] Final Verification: Confirm all pages update without manual script restarts.
- Create Background Job:
services/background_job.pyto poll APIs independently. - Enhance
siem_service: Addingest_live_threats()method for higher volume/frequency. - Data Pipeline: Ensure new threats are auto-converted to SIEM events (Access Attempts/Blocks).
- Verification: Run background job and verify
01_Dashboard.pyupdates without manual refresh. - Data Restoration: Backfilled 2,000 historical events to restore dashboard volume metrics.
- Cloud Self-Healing: Implemented auto-seeding in
siem_service.pyto fix empty state on Streamlit Cloud.
- Create Thread Manager: Implement
services/cloud_background.pyusingthreadingandst.cache_resource. - dashboard Integration: Start the background thread on
01_Dashboard.pyload. - Verification: Ensure thread is singleton and doesn't duplicate on reload.
- Unified Data Model: Ensure
ingest_live_threatsgenerates both Events AND Alerts (so Alerts page updates). - Page Auto-Refresh: Add "Live Mode" toggles or auto-refresh concepts to:
03_Alerts.py05_Timeline.py06_Threat_Intel.py24_SIEM.py
- Verification: Confirm that a single ingested threat appears on Dashboard, Alerts, SIEM, and Timeline.
- Executive Dashboard: Add auto-refresh to
02_Executive.pyand ensureSOCMonitorpulls live DB stats. - UBA Real-Time: Add auto-refresh to
12_UBA.py. - Threat Hunt: Connect "Hypothesis Hunt" in
10_Threat_Hunt.pytodb.search_events()for real results. - Global Sync: Verify that a background threat block updates the Executive KPI cards immediately.