v0.4.0 — observability suite
A front-to-back observability release — seven new dashboard areas, each built to the same production-first posture as the rest of Vigilance (captured cheaply, flushed after the response, sampled and bounded). Full guide: docs/observability.md.
Added
- Unified Issues error tracker (
/vigilance/issues) — every exception across web, queue, command,Vigilance::report()and browser errors, fingerprinted into a grouped inbox with stacktrace, context, occurrence sparkline and an assign / prioritise / ack / mute / resolve workflow. - Per-route performance (
/vigilance/routes) — throughput, error rate, Apdex and exact p50/p95/p99 latency per route. - Real User Monitoring (
/vigilance/vitals) — Core Web Vitals (LCP/INP/CLS/FCP/TTFB) + JS errors from real visitors via the@vigilanceRumbeacon. Off by default (VIGILANCE_RUM). - SLOs & error budgets (
/vigilance/slos) — availability / latency objectives vs. an error budget, with a short-window burn-rate alert. - Alerting depth & incidents (
/vigilance/incidents) — Discord, Microsoft Teams and generic webhooks on top of mail / Slack; fired alerts persisted as incidents (auto-resolved) with occurrence counts and MTTR. - Custom business metrics (
/vigilance/custom-metrics) —Vigilance::increment()/gauge()→ auto-discovered counter & gauge cards with sparklines. - Trace-correlated log explorer (
/vigilance/logs) — searchable application logs correlated to the trace that emitted them. Off by default (VIGILANCE_LOGS).
Changed
- Tracing now also records
redis,mailandnotificationspans. - New
docs/observability.md; README + docs site updated. Every new page verified with axe-core — zero violations, desktop and mobile. CI onactions/checkout@v6.
Schema note: new columns/tables were folded into the base migration. If you ran a pre-0.4 dev build, run
php artisan migrate:freshto pick them up.