Modified `scripts/web_dashboard.py` to:
- Catch all exceptions in the dashboard route.
- Log exceptions securely using `logging` instead of printing to stdout.
- Return a generic "Internal Server Error" message (500) instead of the raw exception string.
This prevents internal implementation details (e.g., file paths, database errors) from being exposed to the user.
Added `test_error_leakage` to `scripts/test_web_dashboard.py` to verify the fix and prevent regressions.
💡 What: Separated the /health endpoint from the main dashboard rendering logic. It now returns a lightweight JSON response.
🎯 Why: The previous implementation rendered the full Markdown dashboard for every health check, consuming unnecessary CPU and I/O resources during frequent polling.
📊 Impact: Reduces health check processing time from file reading + markdown parsing (~milliseconds) to a simple JSON return (~microseconds).
🔬 Measurement: Verified with new test script scripts/test_web_dashboard.py and updated render.yaml/app.yaml to use the new endpoint.