<feed xmlns='http://www.w3.org/2005/Atom'>
<title>newos4/api/debug/stats.php, branch main</title>
<subtitle>newOS4 - the browser terminal that runs WebX11 user spaces</subtitle>
<id>https://newos.webx11.duckdns.org/newos4/atom?h=main</id>
<link rel='self' href='https://newos.webx11.duckdns.org/newos4/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/'/>
<updated>2026-10-23T12:39:30+00:00</updated>
<entry>
<title>fix(newos4-debug): idempotent ingest, admin-gated reads, honest counts (v4.6.52-53)</title>
<updated>2026-10-23T12:39:30+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-10-23T12:39:30+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=97f55bf200c74a1b8ca0068ff70cbfeda77916cf'/>
<id>urn:sha1:97f55bf200c74a1b8ca0068ff70cbfeda77916cf</id>
<content type='text'>
Root cause: _syncToBackend() re-sent the whole error DB with cumulative counts every
300s, and ingest.php did count += client count per batch. 33 real signatures had
accumulated 116,696 "occurrences" (one self-referential row alone: 46,133).

Backend
- ingest.php: per-(session,hash) synced map, adds only the delta, resets prev when the
  client count shrank (cleared localStorage), caps delta at 5000, bounds synced at 500
  hashes and sessions at 200, normalises timestamps to +00:00, 30-day retention that
  also purges dropped hashes from every synced map, returns `accepted` (entries) next
  to `ingested` (occurrences).
- stats.php/dashboard.php: total_errors = occurrences, unique_errors = signatures,
  last-ingest card. The two numbers were inconsistent by ~3,500x.
- health.php: reports self_referential count and status=degraded instead of ok.
- Pruned live data: 33 -&gt; 23 records, 116,696 -&gt; 58,759 occurrences, max cluster
  110,226 -&gt; 52,387 (archive kept in data/debug/archive/).
- nginx: stats/errors/clusters/dashboard/agent-replies now behind
  auth_request /_wx11_admin_auth (302 without a session); ingest/report/health stay
  public for telemetry. Verified: reads 302, ingest 200, report 400.

Client
- module-debug-supervisor.js: sends only hashes whose count changed (persisted
  webx11_debug_synced), records synced counts only after success, stops auto-filing
  aborts/timeouts and debug-pipeline requests as bug reports (2 of the last 5 reports
  were "user aborted a request").

Verified with a scratch php -S copy: same batch POSTed 3x -&gt; count stays 5;
count=99999 -&gt; clamped to 1000; retention dropped 10 legacy rows.
</content>
</entry>
<entry>
<title>auto: 2026-07-29_20:50 changes — gunes sponsorluk page, bunq payment modal, AI platforms, news W30</title>
<updated>2026-07-29T18:46:12+00:00</updated>
<author>
<name>Agando</name>
<email>roduccomm@gmail.com</email>
</author>
<published>2026-07-29T18:46:12+00:00</published>
<link rel='alternate' type='text/html' href='https://newos.webx11.duckdns.org/newos4/commit/?id=0003ad95fa091353827198d0a45cd63a3784479f'/>
<id>urn:sha1:0003ad95fa091353827198d0a45cd63a3784479f</id>
<content type='text'>
</content>
</entry>
</feed>
