From 02af8d88fa4fe11248d627e446d3d84617505b5c Mon Sep 17 00:00:00 2001 From: SimpleTest Date: Sat, 25 Jul 2026 18:09:06 +0300 Subject: [PATCH] Document final local verification evidence --- docs/performance.md | 33 ++++++++++++++++++++ docs/verification.md | 72 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 104 insertions(+), 1 deletion(-) diff --git a/docs/performance.md b/docs/performance.md index e77004f..3a601dc 100644 --- a/docs/performance.md +++ b/docs/performance.md @@ -5,6 +5,39 @@ pool size, or autoscaling threshold is known yet. The repository therefore contains a reproducible measurement profile, not a capacity claim or blocking resource preflight. +## Latest local candidate measurement + +Observed on 2026-07-25 at application commit +`4f2ab7d205ad1e137b07a8365e30b7cf007e2a19` with 3 web and 2 worker +replicas, 40 public HTTP VUs, 40 Phoenix WebSocket VUs, and 8 authenticated +mutual-aid VUs for 30 seconds: + +| Observation | Result | +| --- | ---: | +| HTTP requests / failures | 38,240 / 0 | +| Public checks | 34,866 / 34,866 passed | +| WebSocket opened / heartbeat replies | 240 / 240 | +| Authenticated chat/tracking iterations | 1,679 | +| Overall HTTP duration average / p95 / maximum | 2.90 / 7.28 / 184.51 ms | +| Authenticated HTTP duration average / p95 | 7.63 / 10.81 ms | +| WebSocket connect p95 | 4.76 ms | +| PostgreSQL commits / rollbacks | 141,740 / 0 | +| Peak client / active backends | 21 / 5 | +| Minimum observed connection headroom | 76 | +| Ecto queries / average total / average queue | 181,796 / 0.275 / 0.022 ms | + +Ten sequential resource samples observed maximum memory of 312.4, 319.8, and +331.6 MiB across web replicas; 204.2 and 204.6 MiB across workers; 140.7 MiB +for PostgreSQL; and 323.1 MiB for the proxy. The sum of each container's +individual maximum was 1,836.4 MiB. PostgreSQL recorded no deadlock, conflict, +temporary file, or lock waiter, and exact fixture cleanup restored every +tracked application-table count. + +These measurements describe this specific concurrent workstation replay. They +do not establish a minimum server size, production capacity, SLO, alert +threshold, database pool size, or autoscaling policy. Machine-readable evidence +is retained under `output/performance/final-4f2ab7d`. + ## Kind port-table memory investigation On 2026-07-20, the local kind control-plane container used 9.748 GiB while its diff --git a/docs/verification.md b/docs/verification.md index 936a1ee..56c9a43 100644 --- a/docs/verification.md +++ b/docs/verification.md @@ -1,8 +1,78 @@ # Who Need Help — implementation verification -Observed through 2026-07-24 in the local workspace. This report separates observed +Observed through 2026-07-25 in the local workspace. This report separates observed results from product limits and unknown production properties. +## Final local candidate verification on 2026-07-25 + +The web/backend candidate below is exact commit +`4f2ab7d205ad1e137b07a8365e30b7cf007e2a19`. A subsequent test-only Android +commit, `c89dc78`, updates the instrumentation path for the notification +settings panel; it does not change the deployed application. No push, +hackathon-test deployment, production deployment, Devpost edit, branch, or tag +was made. + +- `./scripts/e2e-run.sh` passed all 45 scenarios in Chromium, Firefox, and + WebKit. The matrix covers public and authenticated mobile layouts, + localization, accessibility, registration and Google flows, request and + Activity lifecycles, map viewport discovery and clustering, private chat, + location privacy and tracking, notifications, moderation, and restart + recovery. Evidence is `output/e2e/20260725141107-815241`; its isolated + Compose resources were removed. +- `./scripts/test.sh` and the final `./scripts/quality.sh` both reported + 387 passing ExUnit tests. The quality gate also passed ShellCheck, Hadolint + at the configured threshold, actionlint, Compose profile rendering, + Prometheus and Alertmanager validation, Helm lint, formatting, + warnings-as-errors compilation, xref, strict Credo, Sobelow, Dialyzer, + Hex/npm audits, release/rollback/migration drills, and tracked-source and + runtime-image scans. The configured vulnerability scans reported zero + findings, and the run-scoped quality resources were removed. +- The isolated 30-second load profile ran 40 public HTTP, 40 Phoenix + WebSocket, and 8 authenticated mutual-aid VUs against 3 web and 2 worker + replicas. All 38,240 HTTP requests and 34,866 checks passed, 240/240 + heartbeat replies arrived, and 1,679 authenticated chat/tracking iterations + completed. Overall HTTP p95 was 7.28 ms, authenticated HTTP p95 was + 10.81 ms, and WebSocket-connect p95 was 4.76 ms. These are workstation + observations, not production limits or minimum resource requirements. +- PostgreSQL recorded 141,740 committed and zero rolled-back transactions, + with no deadlock, conflict, temporary file, or lock waiter. It peaked at + 21 client backends and 5 active backends with at least 76 observed + connection slots of headroom. The three web replicas recorded 181,796 Ecto + queries with 0.275 ms average total duration and 0.022 ms average pool queue + duration. Exact fixture cleanup restored every tracked table count. +- The peak sum of the seven isolated application/proxy/database container + samples was 1,836.4 MiB. Individual maxima were 331.6 MiB for a web replica, + 204.6 MiB for a worker, 140.7 MiB for PostgreSQL, and 323.1 MiB for the + proxy. This measured concurrent profile is not a minimum-server claim. + Complete evidence is `output/performance/final-4f2ab7d`. +- The follow-up resilience drill recorded 1,084 readiness samples with zero + failures while restarting and replacing web and worker processes. The final + three-web/two-worker cluster passed cross-node PubSub, and an Oban probe + completed on its second configured attempt after one recorded failure. + Evidence is `output/resilience/final-4f2ab7d`; its isolated stack was + removed. +- A mode-`0600` custom-format development backup was created at + `output/backups/final/dev-20260725-142457-4f2ab7d.dump`; its SHA-256 is + `94747a728f06e9d2c4901ede1236ea0c02319c4b2174e1f52fbd326c9514bd9e`. + The restore drill observed 33 tables, 1,830 rows, all 19 migrations, and + PostGIS 3.6.4 in a temporary database, then removed that database without + changing source counts. +- The same backup passed a full release upgrade rehearsal: all 19 migration + versions and 11 required cursor indexes matched, the application-table diff + was empty, two web and two worker replicas formed a four-node cluster, and + PubSub plus HTTP checks passed. Evidence is + `output/upgrade-rehearsal/20260725142518-1260191`; every run-scoped + container, network, volume, and image was removed. +- A connected physical Android device (`23122PCD1G`) passed the final + development cross-client flow. Instrumentation reported `OK (1 test)` in + 16.386 seconds; Android and Chromium exchanged one private message in each + direction, the browser observed the live-location marker, FCM delivery + completed, the foreground service stopped, and the database retained zero + active tracking sessions and zero current positions. Exact fixture cleanup + removed two synthetic users, their request, assignment, two messages, push + jobs, and tracking session with a zero-byte database-count diff. Evidence is + `output/android-physical-final/physical-final-20260725145850-1557566`. + ## Goal-completion replay on 2026-07-24 These observations apply to exact local commit