Evidence Changelog
Material editorial and evidence-base changes to PeptideStacks pages.
Educational research-literacy content only. Not medical advice, not dosing guidance, not sourcing advice, and not a protocol for human or animal use. See our responsible information policy.
- 2026-07-07correction
Second combined audit pass: LoginForm safeNext, hub JSON-LD, SisterLink MDX component, metadata trims, a11y and analytics-type polish
Ran a second parallel AI/SEO + code-quality + bug audit against the current tree; verified and shipped fixes in one pass. Security: closed the same open-redirect class in `/auth/login` (was fixed at `/auth/callback` in the first pass); factored `safeNext()` into a shared `lib/safe-next.ts`. Bookmark taxonomy: single-sourced `BookmarkType`, `BOOKMARK_TYPE_PATH`, `BOOKMARK_TYPE_LABEL` in `lib/bookmark-types.ts` so `BookmarkButton`'s SSR fallback path builds `/compare/…` and `/research/…` instead of the 404-inducing `/comparisons/…` and `/researchs/…`. Schema/SEO: added `HubJsonLd` (Article + BreadcrumbList with `HUB_REVIEWED` as default `publishedTime`) and threaded a `path` prop through every HubLanding/HubArticle caller — 64 previously-bare hub, safety, evidence, matrix, updates, mechanisms, regulation, glp-1, claims and research-governance routes now emit structured data. `personLd` gained `@id` so the shared editor isn't ~100 orphan Person nodes across the graph. `ResearchArticleJsonLd` now consumes optional frontmatter `author`/`reviewedBy` slugs instead of silently attributing every research post to `dr-h-richards`. `ComparisonJsonLd` now emits a BreadcrumbList to match Stack/Peptide. `PeptideJsonLd.headline` and `/peptides/[slug]` metadata no longer double-suffix `— Research Evidence Summary`; peptide OG asset now flows through `ogImage`. Content link discipline: introduced `<SisterLink target="authority|barn">` MDX component (applies `SPONSOR_OUTBOUND_REL` + UTM), registered on stack/peptide/research/comparison MDXRemote surfaces, swept 16 MDX files (25 inline sister-site links converted) and reused it inside `/about`. Metadata: rewrote 8 overflowing descriptions (`/stacks`, `/peptides`, `/safety`, `/evidence`, `/claims`, `/glp-1`, `/mechanisms`, `/medical-disclaimer`, `/tools/reconstitution-calculator`) and the 2 overflowing titles (`/stacks`, `/peptides`) to ≤ 60/160. Quality: `<Breadcrumb>` replaces the last two hand-rolled trails on stack/peptide templates; `llms.txt` gains a Hubs & Explainers section; newsletter subscribe handles 23505 unique-violation races; confirmation URL prefers `request.nextUrl.origin` so dev links don't point at production; stale `/disclaimer` references removed from `SITE_UPDATES` and the IndexNow submitter; `EvidenceStrengthChecker` drops the dead `sampleSize` state; `MatrixTable` renders a numeric 0 as `0` (was `—`); `CitationCard` gates the study-context caveat on `isEnriched(c)`; `SponsorSurface` union replaces the free-form `string` on SponsorPanel + SisterSiteCard; Header dropdown gains Escape/blur close and `role="menu"`+`role="menuitem"` semantics; `withUtm` correctly places query parameters before URL fragments; homepage `dangerouslySetInnerHTML` for entity-only strings replaced with real Unicode; the file-wide `risk-scan-allow-file` on the homepage is now a single per-line directive so future regressions surface; `DisclaimerBanner` role changed from `note` to `region` with `aria-label`. `npx tsc --noEmit` clean, `npm run build` succeeds (119 routes), `npm run scan:risky` stays at 0 HIGH.
- 2026-06-20content
Audit follow-up pass: shared components, sister-site verification, citation enrichment, scanner allow-list, a11y polish, ORCID (with disclosed name discrepancy), PeptideBarn catalogue audit, credentialUrl live
Extracted <SisterSiteCard> (used by Footer + SponsorPanel compact) and <Breadcrumb> (used by HubLanding + HubArticle) to remove duplication. Wired credentialUrl through MedicalReviewer so real editor credential URLs will link when populated. Confirmed via WebFetch that peptideauthority.co.uk landing pages exist for BPC-157, GHRP-2, Semaglutide, SS-31 and MOTS-c (no dead outbound links). Enriched 6 more citation blocks with study-metadata cards — Retatrutide Phase 2 (Jastreboff 2023), Cerebrolysin CASTA (Heiss 2012) and CARS (Muresanu 2016), and restructured 3 loose-string Cerebrolysin refs (Bornstein, Plosker, Alvarez) into full CitationCard-compatible form. Extended the risky-keyword scanner with a `risk-scan-allow: <reason>` per-line and `risk-scan-allow-file: <reason>` file-level directive; annotated the ~28 known educational-discussion hits across 12 policy pages and 6 content MDX files. Scanner now reports 0 HIGH as its baseline (128 legitimate hits correctly suppressed) — usable as a CI signal. Accessibility polish: focus-visible rings on SponsorPanel outbound anchors, HubLanding link cards use aria-labelledby, TOC target headings have scroll-margin-top and a visible :target outline, HubLanding uses semantic ul/li list markup. Lighthouse-informed: added preconnect + dns-prefetch for peptideauthority.co.uk and peptidebarn.co.uk in the root layout so sponsor / sister-site outbound clicks resolve without a DNS round-trip. Wired the site owner's real ORCID (0009-0007-6762-7157) into the dr-h-richards editor slot's sameAs array. **Discrepancy disclosure:** the ORCID.org record for that ORCID shows the site owner's real name, but the site's editor card continues to display the placeholder identity 'Dr. H. Richards, PhD'. This trade-off was made intentionally at the site owner's direction; noted here so it is documented rather than silent. To reconcile, either rename the editor slot in lib/editors.ts to match the ORCID record, or remove the ORCID. Also live in this pass: `credentialUrl` on the `dr-h-richards` editor slot now points at the ORCID record — MedicalReviewer renders the credentials line as an outbound link (`rel="noopener external nofollow"`, focus-visible ring). PeptideBarn catalogue audit (via WebFetch of shop pages and category indexes): confirmed catalogue contains AOD-9604, BPC-157, CJC-1295 No DAC, DSIP, GHK-Cu, TB-500, KPV, IGF1-LR3, Ipamorelin, Retatrutide, MOTS-C, Tesamorelin, MGF, NAD+. Of the current `HIGH_REGULATORY_SENSITIVITY_PEPTIDES` exclusion list, only Retatrutide and Tesamorelin are actually in the catalogue — both correctly excluded as POM-adjacent. The other seven excluded compounds (Tirzepatide, Semaglutide, PT-141, Melanotan II, Cerebrolysin, Thymosin α-1, GHRP-2) aren't stocked by PeptideBarn, so the exclusion is a harmless no-op for those pages but still correct because it prevents the SponsorPanel from attempting to link to product URLs that would 404. No changes to the exclusion list needed.
//peptides/retatrutide/peptides/cerebrolysin//medical-disclaimer/about/editorial-policy/about/citation-standards/about/ai-use-disclosure/about/responsible-information-policy/claims/claims/peptide-marketing-red-flags/regulation/prescription-only-medicine-advertising-uk/regulation/uk-peptide-law-mhra-explained/safety/administration-routes-comparison/safety/why-injectable-route-research-is-higher-risk/evidence/allometric-scaling-failures/glp-1/weight-loss-medicine-advertising-caution-uk - 2026-06-20correction
Combined audit pass: security fix, schema/SEO upgrade, disclaimer merge, quality cleanup
Three parallel audits (AI/SEO, code quality, bug check) surfaced 45 candidate findings; verified 25 and shipped fixes in one pass. Security: closed open-redirect in /auth/callback by validating the `next` parameter; HTML-escaped the URL interpolation in the newsletter confirmation email. Trust: removed placeholder ORCID URLs from editor metadata (sameAs now empty rather than misleading). Schema: added CollectionPageJsonLd + ItemList markup to /stacks, /peptides, /compare, /glossary, /research; reshaped citation JSON-LD to use sameAs for PMID/DOI persistence; breadcrumbs now emit object-form item with @id; per-page OG image included as ImageObject. Routing: merged /disclaimer into /medical-disclaimer with anchored sections + 301 redirect in next.config.mjs; updated all internal references. Robots: explicit disallow rules for /auth/, /api/, /bookmarks, /newsletter-confirmed. Quality: gated lib/mdx.ts validation console.error behind NODE_ENV; ContactForm now routes through /api/contact with zod validation instead of writing Supabase from the client; bookmark DELETE validates the content_type enum; AuthMenu has an error fallback so failures no longer leave the spinner stuck; DeleteBookmarkButton now strongly typed with user-visible error state; hub index pages carry HUB_REVIEWED publishedTime; Lora font display switched to swap; NewsletterForm dropped hand-rolled .includes('@') in favour of native + server validation; removed dead COMMON_OUTBOUND_REL export.
- 2026-06-20content
PeptideBarn paid sponsorship + PeptideAuthority cross-linking restored
PeptideBarn.co.uk is now a paid sponsor of PeptideStacks (fixed-fee placement, not click-tied). Sponsor presence added to: (1) Footer sister-sites & sponsor row, sitewide; (2) compact panel on the homepage; (3) clearly-labelled SponsorPanel at the bottom of every peptide and stack evidence page — with the PeptideBarn portion conditionally suppressed for UK POM and POM-adjacent compounds (Tirzepatide, Semaglutide, Retatrutide, PT-141, Tesamorelin, Melanotan II, Cerebrolysin, Thymosin α-1, GHRP-2). PeptideAuthority links rendered alongside on every surface. Outbound sponsor links carry rel='sponsored noopener external nofollow' and UTM parameters. COI page rewritten to reflect active paid sponsorship; responsible-information-policy and medical-disclaimer updated to distinguish editorial sourcing recommendations (still not published) from clearly-labelled sponsor placement (permitted with disclosure).
- 2026-05-21content
Content-gap remediation: new peptide monographs, cardio stack, safety subpages, evidence subpages, glossary cross-links, expanded mechanism maps
Authored two new peptide monographs (GHRP-2, Semaglutide), filled the empty cardio stack category with SS-31 + MOTS-c, added four new hub subpages (administration-routes-comparison, contraindication-deep-dive, allometric-scaling-failures, time-dependent-repair-cascade). Expanded all 8 mechanism maps from ~250 to ~450 words each with pathway background, evidence-status sections, and explicit peptide-monograph cross-links. Expanded four thin research articles to 700+ words. Added Related-on-this-site sections to all 20 glossary entries previously without internal cross-links; expanded five thinnest glossary entries. Cross-linked 14 peptide monographs to their head-to-head comparisons and relevant mechanism maps. Topped up /about/ai-use-disclosure with verification-workflow detail.
- 2026-05-21content
Site repositioned as UK research-literacy platform
Comprehensive editorial repositioning: stack and peptide pages now lead with evidence dashboards (A–X grade, human-data status, direct combination evidence, regulatory sensitivity, translational risk) and a Not-a-Protocol notice. Reconstitution calculator reframed as a laboratory documentation arithmetic helper with no injection-unit output. New trust pages (editorial policy, citation standards, evidence grading, corrections, COI, AI use, responsible information, medical disclaimer). New hubs for regulation, evidence, safety, claims, GLP-1, mechanisms, and research governance.