Skip to content

fix(docs): mention stats-tracker alias on /docs index - #179

Merged
ralyodio merged 1 commit into
masterfrom
fix/docs-index-stats-tracker
Aug 3, 2026
Merged

ralyodio merged 1 commit into
masterfrom
fix/docs-index-stats-tracker

Conversation

@doublem320-design

Copy link
Copy Markdown
Contributor

Several places in the app link to /docs/stats-tracker (github integration page, getting-started wizard,
install-tracker script), but the /docs index page only listed /docs/statistics. Users following those internal links would land on the right page but never see it in the docs navigation.

Add a note in the Statistics card copy so anyone arriving from those links can find the canonical entry in the docs index.

Several places in the app link to /docs/stats-tracker
(github integration page, getting-started wizard,
install-tracker script), but the /docs index page only
listed /docs/statistics. Users following those internal
links would land on the right page but never see it in
the docs navigation.

Add a note in the Statistics card copy so anyone arriving
from those links can find the canonical entry in the
docs index.
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown

vu1nz Security Review

0 finding(s) in PR #?

No security issues found.

ralyodio added a commit that referenced this pull request Aug 3, 2026
serveAd diverts HOUSE_AD_ROTATION_RATE (~10%) of otherwise-fillable
requests to the house ad, which is unmetered: no impression row, so no
short code and no /a/ click URL. Four of the five tests in this file read
fields off whatever came back, so each failed on ~10% of runs — about one
CI run in three went red, on whichever test happened to draw the house ad.

Measured on master before this change: 6 of 15 runs failed, across four
different tests. That is what took down the builds on #179 and #183,
neither of which touches ads.

These tests are about the click URL of a *paid* fill, so the draw is
pinned above the threshold. Fixing Math.random is safe precisely here:
the auction has a single candidate either way, and short codes come from
crypto.randomBytes, so "issues a distinct code per paid fill" still
exercises real entropy — and now checks all 60 fills instead of a subset
that silently shrank whenever the house ad turned up.

Pinning the draw would have deleted the only coverage of the rotation, so
it is asserted directly rather than left to chance: one test for a draw
under the rate, one for a draw exactly on it. The boundary is the
interesting part, and sampling the rate would just be a slower way to
reintroduce a flaky test.

40 consecutive runs of the file now pass, against 9 of 15 before.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ralyodio
ralyodio force-pushed the fix/docs-index-stats-tracker branch from e87017a to 5e9063d Compare August 3, 2026 15:05
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown

ThreatCrush Security Scan

52 finding(s)

HIGH/CRITICAL: 10 | MEDIUM: 42

Severity Rule Location
HIGH secret-generic-credential app/(marketing)/docs/autoblog-webhook/page.tsx:145
HIGH secret-generic-credential lib/sp/platforms/facebook.ts:32
HIGH js-ssrf-outbound-request lib/sp/platforms/facebook.ts:115
HIGH secret-generic-credential lib/sp/platforms/linkedin.ts:25
HIGH js-ssrf-outbound-request lib/sp/platforms/telegram.ts:63
HIGH js-ssrf-outbound-request lib/sp/platforms/threads.ts:138
HIGH manifest-typosquat package.json:59
HIGH secret-generic-credential tests/contract/coinpay.test.ts:4
HIGH secret-generic-credential tests/contract/posthog-integration.test.ts:13
HIGH secret-generic-credential tests/lead-campaign.test.ts:16
MEDIUM js-unescaped-html-sink app/(app)/admin/email-broadcast/EmailBroadcastForm.tsx:125
MEDIUM sql-template-interpolation app/(app)/projects/[id]/autoblog/actions.tsx:96
MEDIUM js-unescaped-html-sink app/(app)/projects/[id]/autoblog/articles/[articleId]/page.tsx:214
MEDIUM sql-template-interpolation app/(app)/projects/[id]/autoblog/setup/form.tsx:504
MEDIUM sql-template-interpolation app/(app)/projects/[id]/uptime/monitor-actions.tsx:28
MEDIUM js-unescaped-html-sink app/(marketing)/blog/[slug]/page.tsx:67
MEDIUM js-unescaped-html-sink app/(marketing)/blog/[slug]/page.tsx:97
MEDIUM js-unescaped-html-sink app/(marketing)/blog/[slug]/page.tsx:104
MEDIUM js-unescaped-html-sink app/(marketing)/blog/[slug]/page.tsx:110
MEDIUM js-unescaped-html-sink app/(marketing)/recent/page.tsx:186
MEDIUM js-unescaped-html-sink app/(marketing)/recent/page.tsx:190
MEDIUM sql-template-interpolation app/actions/admin.ts:114
MEDIUM sql-template-interpolation app/actions/orgs.ts:328
MEDIUM sql-template-interpolation app/api/lx/keywords/regenerate/route.ts:59
MEDIUM js-unescaped-html-sink app/c/[project]/[slug]/page.tsx:77
MEDIUM js-unescaped-html-sink app/c/[project]/page.tsx:57
MEDIUM js-unescaped-html-sink app/careers.js/route.ts:196
MEDIUM js-unescaped-html-sink app/careers.js/route.ts:223
MEDIUM js-unescaped-html-sink app/careers.js/route.ts:279
MEDIUM js-unescaped-html-sink app/layout.tsx:129
MEDIUM js-open-redirect app/login/form.tsx:39
MEDIUM js-unescaped-html-sink app/r/[token]/page.tsx:176
MEDIUM js-open-redirect app/signup/form.tsx:43
MEDIUM js-open-redirect components/billing/buy-credits-modal.tsx:98
MEDIUM js-unescaped-html-sink components/json-ld.tsx:8
MEDIUM js-unescaped-html-sink components/report/markdown-view.tsx:15
MEDIUM sql-template-interpolation lib/audit/checks/security.ts:48
MEDIUM redos-nested-quantifier lib/careers/jobs.ts:139
MEDIUM redos-nested-quantifier lib/emailMarkdown.ts:130
MEDIUM redos-nested-quantifier lib/lx/articleGen.ts:93
MEDIUM sql-template-interpolation lib/lx/articleGen.ts:367
MEDIUM sql-template-interpolation lib/lx/articleGen.ts:379
MEDIUM sql-template-interpolation lib/lx/articleGen.ts:380
MEDIUM sql-template-interpolation lib/lx/articleGen.ts:1340
MEDIUM sql-template-interpolation lib/lx/articleGen.ts:1362
MEDIUM sql-template-interpolation lib/lx/guestPostGen.ts:109
MEDIUM tls-verification-disabled lib/onion.ts:47
MEDIUM sql-template-interpolation lib/sp/platforms/linkedin.ts:177
MEDIUM sql-template-interpolation scripts/delete-archived-projects.mjs:97
MEDIUM sql-template-interpolation scripts/delete-archived-projects.mjs:102

…and 2 more. Full results in the Security tab.

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio force-pushed the fix/docs-index-stats-tracker branch from 5e9063d to 53aa51c Compare August 3, 2026 15:08
@ralyodio
ralyodio merged commit 97f1cca into master Aug 3, 2026
13 of 14 checks passed
@ralyodio
ralyodio deleted the fix/docs-index-stats-tracker branch August 3, 2026 16:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants