|
All checks were successful
Quality gates / quality (pull_request) Successful in 1m44s
Implements issue #41 acceptance criteria without touching the live host: - src/release-observability.js: sanitizeEvidence() allowlists bounded, privacy-safe evidence (release tag, commit, UTC time, per-check id/boundary/status/failure-class/latency/counters) and drops session identifiers, credentials, environment dumps, photo payloads, base64, image hashes, note text, emails, and any oversized/suspicious value. - buildDashboard(): app/api/queue/model boundary rollups, failure-class counts, manual-fallback state; evaluateAlerts() with owner, threshold, severity, and runbook anchor per rule. - scripts/release_dashboard.mjs: local operator CLI over sanitized evidence files or a loopback drill fixture; never contacts a live host and exits nonzero without echoing rejected input. - docs/RELEASE-OBSERVABILITY.md: alert inventory, evidence schema, simulated worker-outage drill, incident flow, privacy boundary. - Tests: sanitizer hostile-payload coverage, dashboard/alert rules, end-to-end loopback outage drill asserting exactly one actionable page alert plus graceful manual fallback, runbook/package contract. |
||
|---|---|---|
| .. | ||
| fixtures | ||
| agent-gateway.acceptance.test.js | ||
| analysis.test.js | ||
| ci-workflow.test.js | ||
| domain.test.js | ||
| hermes-agent-service.test.js | ||
| photo-first.acceptance.mjs | ||
| product-decisions.test.js | ||
| release-dashboard-cli.test.js | ||
| release-dashboard.test.js | ||
| release-demo.test.js | ||
| release-observability-runbook.test.js | ||
| release-observability.test.js | ||
| selfhost-bootstrap.test.js | ||
| service-worker-runtime.test.js | ||
| sleek-chat.acceptance.mjs | ||
| staging-config.test.js | ||
| staging-deploy.test.py | ||
| staging-health.test.js | ||
| staging.acceptance.mjs | ||
| training-ingest.test.js | ||
| ui.acceptance.mjs | ||
| vision-config.test.js | ||
| vision-service.test.js | ||