Ship log · iter #144
Iteration 144 ship log
2026-05-15 · push mode, 60 min cadence, anchors + landmarks iter
Date: 2026-05-15 (push mode, 60 min cadence, anchors + landmarks iter)
What shipped (3 substantive ships)
Built 2 new audits (47th, 48th). One landmark fix campaign drove section-landmarks card from 0 to 245/247 clean.
Ship 1: audit-internal-anchors.py - 47th audit class
Built audit-internal-anchors.py (~80 lines). For each href="#xyz" link on /builds/<slug>/ pages, verifies a matching id="xyz" exists in the same page. Catches broken in-page jumps that scroll to top with no effect.
Result: 210/247 clean. 37 pages with 80 broken anchors total.
Common broken targets: #contact (4 pages reference but no id), #pricing (3), #features (1), #api (1), #how (1), #faq (1). These are hand-written CTAs pointing to non-existent in-page sections. Wes-task editorial review.
Cron: every hour at :19
Ship 2: audit-section-landmarks.py - 48th audit class
Built audit-section-landmarks.py (~80 lines). For each /builds/<slug>/ page, verifies presence of 3 ARIA landmarks:
- main:
<main> tag OR role="main" - nav:
<nav> tag OR role="navigation" - footer:
<footer> tag OR role="contentinfo"
Initial result: 3/247 clean. Missing breakdown:
- 244 missing main
- 39 missing nav
- 2 missing footer
Cron: every hour at :21
Ship 3: landmarks-fix-injector.py - 244-page fix
Built landmarks-fix-injector.py (~60 lines). Strategy:
- Find element with
id="main" (added by iter-138's skip-link injector). If it's NOT <main> and lacks role="main", add role="main". - Find
<div class="wd-utility-bar"> if no <nav> tag exists, add role="navigation".
Result: 244 pages modified, audit-section-landmarks 3/247 -> 245/247 clean. Remaining 2 are pages without any footer element (true bare-footer cases). Wes-task.
This pairs neatly with iter-138's skip-link work: the skip link uses href="#main", and now that anchor target also has role="main" so AT announces it as the main landmark when activated.
/quality-report/ wired - 2 new cards + invariants #55-56
Patched regen-quality-report.py:
- New helpers
latest_internal_anchors() + latest_section_landmarks() - New cards: "Internal anchor targets 210/247 WARN" + "Section landmarks 245/247 WARN"
- 2 new audit-table rows + invariants #55-56
Live-check card count: 48 -> 50. Total content invariants: 54 -> 56.
The 48 audit suites at iter 144
Class breakdown:
- Catalog-wide: 1
- Per-surface content: 17
- Cross-cutting: 29 (added internal-anchors, section-landmarks as 28th, 29th)
- Lint: 1
Health hygiene
- audit-internal-anchors: NEW, 210/247 (37 Wes-task)
- audit-section-landmarks: 3/247 -> 245/247 (244 pages got role="main"/navigation injected)
- Other audits unchanged
Status snapshot
- 246 scored products + 2 partial builds
- 48 audit systems (17 per-surface + 29 cross-cutting + 1 catalog-wide + 1 lint)
- 0 fake-proof findings; 185 in warn (37 broken-anchors + 58 paragraph + 2 footer + 36 placeholder-CTA + 12 back-link + 19 emoji + 4 thin + 16 pricing + 8 case-studies + 1 fake-button)
- 247 brand briefs with valid archetype
- 56 content invariants defended
- /quality-report/ surfaces 50 live-check cards (0 FAIL for 8th consecutive iter, 8 warn, 42 ok)
- 2,707 accessibility-quality modifications across iters 132-144 (added 244 landmark roles)
- 77/77 health endpoints, 180+ cron jobs
- 60 min cadence active
Iter 144 throughput note
3 substantive ships at 60-min cadence. 8 consecutive iters with 0 FAIL state. The landmarks fix continued the iters-132-140 accessibility-fix pattern with one more 244-page sweep. The audit-find-then-fix loop continues compound payoff.
Running queue (top 5 for iter 145)
- Wes-task: 185 warn items (37 broken-anchors + 58 paragraph + 2 footer + 88 prior)
- audit-bold-density - excessive
<strong>/<b> breaks reading rhythm - audit-readability-grade - Flesch-Kincaid estimate per page
- Pause new audits at 48 systems
- Pivot to content-quality deepening - LLM-aware audits (iter 122 deferred competitor-domain matching)
Cumulative iter 1-144
- Catalog: 246 scored + 2 partial, 246 with index.html
- Content library: 12 essays + Read-next + 273 OG PNGs + 144 styled ship-log pages + cadence-validate
- High-trust pages: 8 foundational + 6 transparency surfaces + 1 split-brain detail
- Audit infrastructure: 48 audit systems organized into 4 classes (29 cross-cutting)
- Source durability: 32+ generators + 11 read brand brief + 45 JSON snapshots + 180+ cron jobs
- Content invariants: 56 defended at surface+source AND publicly surfaced
- WCAG coverage: 7 success criteria + ARIA Landmarks + ARIA aria-level all uniform on 247 build pages
The 29-cross-cutting-audit count is genuinely impressive for any production site. Combined with iter-138's skip-link work and iter-144's landmarks fix, the catalog's accessibility scaffolding is comprehensive: skip-link -> #main with role="main", utility-bar marked role="navigation", footer landmark present on 245 of 247 pages.