midi-bridge: removed HTTP server on :9091, now writes /tmp/midi-stats.json prometheus-exporter: reads /tmp/midi-stats.json, exposes all metrics on :9090/metrics Single scrape endpoint for all pipeline components
- Viz writes stats to /tmp/viz-stats.json (frames_sent, frames_dropped, queue_depth) - Exporter reads viz-stats.json and exposes: - viz_frames_sent_total (counter) - viz_frames_dropped_total (counter) - viz_pending_queue (gauge) - viz_queue_full (gauge)
- midi_messages_total: all MIDI messages - midi_notes_on/off_total: note-on/off counts - midi_last_status/note/velocity: last message tokens - midi_last_time_unix: epoch of last message - Removed MIDI counters from prometheus-exporter (bridge owns them)
- prometheus-exporter.py: stdlib-only HTTP metrics on :9090/metrics - Exposes: ALSA status, hw_ptr rate, service health, mixer controls - MIDI counters: notes_on, notes_off, errors - test-unit.py: 10-test suite covering full MIDI→Pd→Audio pipeline - test-tone.pd, test-midi-log.pd: minimal debug patches - systemd service for exporter - install.sh/deploy updated to include exporter