Repository navigation
Correct frontend telemetry metadata and SLO inputs - #74
Conversation
PR reader API performanceResult: INCONCLUSIVE 3 inconclusive · 5 within threshold. Zero request failures across all six runs. Base Three independent runs per revision, each on a fresh GitHub-hosted ARM64 runner. 16 users, 60 seconds/run, 1,000 synthetic articles, cache off, five PgBouncer slots. Latency comparisonAll latency values are in milliseconds; lower is better. Values are medians of three runs.
Additional latency and throughput metricsEach cell shows base → PR. Latencies are in milliseconds.
Individual runs
How to interpret this reportRegressed / Improved: a p95 regression needs >20% and >20 ms increase in the medians and at least two head samples versus the base median. Improvements use the inverse threshold. Within threshold means the change did not meet both thresholds. Inconclusive: a within-revision p95 range >35% of its median and >20 ms is too noisy for a confident latency verdict. Inconclusive latency comparisons are non-blocking: the check passes without claiming an improvement. Confirmed regressions and test/report errors fail the PR gate. Throughput is descriptive: paced users do not measure maximum capacity. This uncached public API test does not establish production health, browser performance or worker capacity. Separate runners can differ in hardware or host load; repetitions and noise checks reduce but cannot eliminate that uncertainty. Full HTML/CSV reports and logs · attempt 1 |
Code Review ✅ Approved🔴 High risk · Replaces the exported request histogram schema, requiring direct metric consumers to migrate Corrects frontend telemetry metadata to report the actual release version instead of OptionsAuto-apply is off → Gitar will not commit updates to this branch. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Gitar |
|



What changes and why?
Browser telemetry reported version
developmentwhile production ran 0.0.50, and frontend request histograms supplied neither response status nor stream classification to the existing SLO rules. Collector 403s also had no diagnostic reason, so their volume could not establish browser data loss.outcomelabels todevfeed_faro_deliveries_total, distinguishing missing/mismatched/unconfigured origins, encoded requests, body/type/size/rate/time rejection, configuration problems, and upstream rejection or transport failure. Labels contain no request values or identities. Existing origin validation and receiver limits remain enforced.http_server_request_duration_seconds, with response status anddevfeed_request_kind. The existing GitOps normalization already consumes this schema and excludesstream. Classify known Chimely inbox streams before bounding their paths, and recognize other SSE responses by content type. Ordinary chunked HTML remains a request; disconnected responses record 499 once.Production evidence
Read-only checks on 2026-10-04, 00:22–00:24 UTC:
increasewindow showed approximately 215.2 accepted web batches and 668.5 web 403s: 75.7% rejected, versus roughly 79% in the earlier audit window. These are Prometheus estimates, not an exact request ledger. Current production counters do not expose outcome reasons.app_version="development"andapp_environment="production". All four web/admin replicas exposed build 0.0.50 / production. The incorrect value is the version, not the environment.Genuine browser data loss remains unproven. A controlled, sampled browser request succeeds against both built applications. The installed Faro SDK samples using Web Crypto; overriding
Math.randomalone did not make the earlier probe deterministic. After rollout, correlate the new rejection reasons with a real sampled browser's network response and collector ingestion in the same window before attributing 403s to browser loss.Validation
Updated against master after #69, #71, #72 and #73. Current commit:
574a700f2f45874a12546384889bb3c0c9b04d88. The telemetry-test conflict preserves both release-version/outcome checks and authentication-redaction regressions.CI requiredand both Sonar checks passed.promtool check rules: 25 current GitOps rules passed. All six existing scenarios plus a new frontend scenario passed, including seven assertions proving web/admin error ratios and exclusion of stream counts, sums and buckets. Validation used a disposable copy of the current rules and fixtures, without repository changes in home-lab.v0.0.46versus rules pointing tov0.0.50). Only those expected URLs were corrected in the disposable validation copy. This existing fixture maintenance issue remains a separate follow-up.Rollout notes
The Node histogram changes from
devfeed_http_request_duration_secondstohttp_server_request_duration_seconds. Current GitOps SLO/dashboard recording rules already accept the new metric; direct consumers of the old histogram must migrate.devfeed_http_requests_totalremains available. During a rolling update, older replicas still contribute the earlier unclassified duration series; verify replacement replicas and allow the selected rate windows to age past the rollout.Adding outcome labels starts new receiver counter series. Old 403 records cannot be classified retroactively. Status, method, route and outcome dimensions remain bounded, but status/kind labels add metric series; inspect scrape size and cardinality after rollout.
No migration or new dependency is required. Local validation used Linux AMD64; current-head hosted ARM64 image/security checks,
CI required, CodeQL and Sonar passed. Production rollout and post-rollout measurement remain pending release.Ready for review