src/app/milestones/page.tsx#MilestonesPage has the same heading-level-skip pattern as
/issues (see the related BountyCard issue), independently, in its own markup:
<h1 className="mt-2 text-3xl font-semibold ...">Milestone funding</h1>
...
{milestones.map((m) => (
<div key={m.id} ...>
...
<h3 className="mt-1 font-medium text-slate-900 dark:text-white">{m.name}</h3>
...
Each milestone card's name jumps straight to <h3> with no <h2> anywhere in the
milestones grid section preceding it — this page's only other heading is the later
<h2 className="mt-16 ...">Recurring maintenance pools</h2>, which comes after the
entire milestones grid, so every milestone card's <h3> is left with no <h2> ancestor
at all until the reader has already passed the whole section. This is the same class of
WCAG heading-level-skip issue as /issues, occurring independently on this route because
each page constructs its own heading structure with no shared layout component enforcing
a consistent level progression.
Suggested fix: add an <h2> for the milestones grid section (e.g. a visually-hidden or
visible "Active milestones" heading) before the cards, so <h3> milestone names have a
proper <h2> ancestor, consistent with the fix suggested for /issues.
src/app/milestones/page.tsx#MilestonesPagehas the same heading-level-skip pattern as/issues(see the relatedBountyCardissue), independently, in its own markup:Each milestone card's name jumps straight to
<h3>with no<h2>anywhere in themilestones grid section preceding it — this page's only other heading is the later
<h2 className="mt-16 ...">Recurring maintenance pools</h2>, which comes after theentire milestones grid, so every milestone card's
<h3>is left with no<h2>ancestorat all until the reader has already passed the whole section. This is the same class of
WCAG heading-level-skip issue as
/issues, occurring independently on this route becauseeach page constructs its own heading structure with no shared layout component enforcing
a consistent level progression.
Suggested fix: add an
<h2>for the milestones grid section (e.g. a visually-hidden orvisible "Active milestones" heading) before the cards, so
<h3>milestone names have aproper
<h2>ancestor, consistent with the fix suggested for/issues.