Repository navigation
feat: TLS cert monitoring, visual diff summaries, synthetic testnet bot, slow query logging - #1502
Merged
joelpeace48-cell merged 4 commits intoOct 21, 2026
Conversation
Alert maintainers when a domain endpoint's TLS certificate expires within 30 days, so automated renewals can be verified before encrypted transport breaks. Includes a scheduled GitHub Actions workflow that publishes a report to the job summary and opens/updates an issue on failure.
…mmaries Add a visual-diff-summary script that inventories screenshot diff/actual/ expected artifacts and Playwright results, and wire it into the visual-regression workflow so diffs appear in the run summary alongside the uploaded artifacts.
Continuous background bot that simulates the register → credit → verify → cleanup user journey against Testnet so campaign flow integrity is exercised 24/7. Emits Prometheus counters/gauges per iteration and supports --once / --iterations for CI and scheduled runs.
Instrument better-sqlite3 prepared statements so queries at or above a 200ms threshold emit structured warn logs (shipped to CloudWatch via the backend's stdout) and optional Sentry events, without altering query results or letting telemetry failures break execution.
|
@DeFiVC Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
| host, | ||
| port, | ||
| servername: host, | ||
| rejectUnauthorized: false, |
joelpeace48-cell
merged commit Oct 21, 2026
3e41681
into
FinesseStudioLab:main
8 of 28 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1362, Closes #1363, Closes #1364, Closes #1365
Type of Change
Summary
Four small, independent improvements to CI monitoring, test reporting, and observability:
scripts/check-ssl-expiry.mjs+tls-cert-check.yml: fails CI and opens/updates a maintainer issue when any configured domain's TLS certificate expires within 30 days.scripts/visual-diff-summary.mjswired intovisual-regression.yml: inventories screenshot diff/actual/expected artifacts and publishes a markdown report to the GitHub Actions run summary.scripts/synthetic-transaction-bot.mjs: continuous background bot simulating the register → credit → verify → cleanup journey on Testnet, emitting Prometheus metrics; supports--once/--iterationsfor CI.backend/src/db/slowQueryLog.jswired intocreateDal: instruments better-sqlite3 prepared statements and logs queries ≥ 200ms (configurable viaDB_SLOW_QUERY_MS) as structured JSON for CloudWatch, plus optional Sentry events viaSENTRY_DSN.Motivation / Context
Closes #1362 — encrypted transport breaks silently when certificates lapse; maintainers need a 30-day early warning.
Closes #1363 — visual regression diffs were uploaded as artifacts but invisible in the run summary, so regressions were easy to miss.
Closes #1364 — Testnet flow integrity was only exercised on demand; a synthetic bot gives continuous background coverage.
Closes #1365 — slow database queries were invisible in production telemetry.
Changes
scripts/check-ssl-expiry.mjs,.github/workflows/tls-cert-check.ymlscripts/visual-diff-summary.mjs,.github/workflows/visual-regression.yml$GITHUB_STEP_SUMMARYscripts/synthetic-transaction-bot.mjsbackend/src/db/slowQueryLog.js,backend/src/db/slowQueryLog.test.js,backend/src/dal/index.jsTesting
example.com—okpath exits 0 (65 days left),expiringpath exits 1 withSSL_EXPIRY_WARN_DAYS=365, unreachable host exits 1 with an error row, emptySSL_CHECK_DOMAINSexits 0 with a notice.visual-diff-summary.mjson an empty tree (reports 0 artifacts) and on a mock tree with 1 diff/actual/expected set (lists the diff file and points at the artifact). Missing root degrades gracefully.--onceagainst a dead port (exit 1, failure metric emitted) and--iterations 3against a stubbed backend (exit 0, 3 OK iterations, counters/gauges correct).node --test src/db/slowQueryLog.test.js— 8/8 pass, covering threshold filtering, multi-sink fan-out, configurable default (200ms), throwing sinks, sync timing, throw-path reporting, prepared-statement instrumentation, and result passthrough.upstream/main;git merge-treeagainst upstream reports no conflicts.Tradeoffs
rejectUnauthorized: falseso we can read expiry even when the cert would fail validation (e.g. mis-chained). The report still surfaces the dates, and connectivity errors fail the run.prepare()boundary increateDal, which covers every SQLite repository in one place. Telemetry failures are swallowed so instrumentation can never break query execution. Postgres pooling is not instrumented here.Out of scope
pg.Pool) slow-query instrumentation.