Ship log · iter #128

Iteration 128 ship log

2026-05-15 · push mode, 60 min cadence, accessibility + asset-integrity iter

On this pageWhat shipped (2 substantive ships) Ship 1: audit-image-alt.py - 22nd audit class Ship 2: audit-image-src-exists.py - 23rd audit class /quality-report/ wired - 2 new cards + invariants #30-31 Pivot from initial plan The 23 audit suites at iter 128 Health hygiene Status snapshot Iter 128 throughput note Running queue (top 5 for iter 129) Cumulative iter 1-128

Date: 2026-05-15 (push mode, 60 min cadence, accessibility + asset-integrity iter)

What shipped (2 substantive ships)

Two clean-result audits added: image alt-text coverage + image src target existence. Both 247/247 clean on first run, validating the catalog's image hygiene. Audit count: 21 -> 23.

Ship 1: audit-image-alt.py - 22nd audit class

Built audit-image-alt.py (~95 lines). For each /builds/<slug>/index.html, finds every <img> tag and verifies an alt attribute is present.

Result on first run: 247 pages, 389 <img> tags, ZERO missing-alt.

This is a strong accessibility/SEO baseline. Even the ad-hoc Claude-generated build pages put alt text on every image. The OG generators, hero injectors, and dossier templates all include alt by default.

Cron: every hour at :29

Ship 2: audit-image-src-exists.py - 23rd audit class

Built audit-image-src-exists.py (~110 lines). For each <img src="..."> on every /builds/<slug>/index.html, verifies the src target maps to an existing file on disk (for local paths starting with /factory/, /, or relative). External http(s) URLs are skipped (would need HTTP).

Result on first run: 247 pages, 75 local <img src> paths, ZERO broken.

This pairs with the iter-127 internal-links audit: that one walks /factory/ hrefs; this one walks /factory/ image srcs. Together they verify the catalog's hyperlink graph is durable on both navigation and embedded-asset axes.

Cron: every hour at :31

/quality-report/ wired - 2 new cards + invariants #30-31

Patched regen-quality-report.py:

Live-check card count: 23 -> 25. Total content invariants: 29 -> 31.

Pivot from initial plan

Initial ship 2 plan was audit-cross-surface-tagline-consistency.py. After surveying tagline patterns across surfaces, found most pages share the canonical tagline from adoptability.json - drift potential is low. Pivoted to image-src-exists which catches a real class of bugs (typo'd image paths, deleted OG references, moved hero images) that the navigation audit (internal-links) doesn't cover.

The 23 audit suites at iter 128

AuditCadenceStatus
audit-fakeproof.pydailyok
audit-adoptability-drift.pyevery 15 minok
audit-page-identity.pyevery 30 minok
audit-hero-polish-drift.pyevery 30 minok
audit-og-coverage.pyevery 30 minok
audit-teaser-quality.pyevery 30 min247/247
audit-case-studies-quality.pyevery 30 min239/247
audit-faq-quality.pyevery 30 min247/247
audit-unlock-content.pyevery 30 min247/247
audit-adopt-content.pyevery 30 min247/247
audit-feedback-content.pyevery 30 min247/247
audit-pricing-content.pyevery 30 min232/248
audit-vs-content.pyevery 30 min246/246
audit-how-it-works-content.pyevery 30 min246/246
audit-sales-kit-content.pyevery 30 min246/246
audit-skeptic-memos-content.pyevery 30 min246/246
audit-cross-surface-name.pyevery 30 min29/29
audit-jsonld-coverage.pyevery 30 min246/246
audit-meta-tags-coverage.pyevery 30 min234/246
audit-internal-links.pyevery 30 min246/246 (3626 links)
audit-image-alt.pyevery hour247/247 (389 imgs) NEW
audit-image-src-exists.pyevery hour247/247 (75 local srcs) NEW
em-dash-sweep.pyevery 15 minrunning

Health hygiene

Status snapshot

Iter 128 throughput note

2 substantive ships at 60-min cadence. Both clean on first run - audit-coverage continues to expand without surfacing new drift. The catalog is genuinely in good structural shape (247 build pages, 389 imgs all with alt, 75 local img srcs all resolve, 3626 internal /factory/ links all resolve, 246 JSON-LD blocks valid, 246 og:image / og:title / og:description / og:url / og:type / canonical present, 234 meta descriptions, 246 viewport, 246 charset).

The audit suite is past the perimeter-close milestone and is now in "thin-margin" mode - each new audit class catches narrower drift than the previous. This is good - it means the per-product surface infrastructure has stabilized.

Running queue (top 5 for iter 129)

  1. Wes-task: 12 thin meta descriptions (Brand-strategy: 20c, content-calendar: 24c, etc - lengthen for SEO)
  2. Wes-task: 16 pricing-page issues
  3. Wes-task: 8 case-studies fabrications + 4 hand-written body-content renames
  4. audit-twitter-card-coverage - verify twitter:card, twitter:title, etc on every /builds/<slug>/ (subset of og but treated separately by Twitter/X). 24th audit + invariant #32.
  5. audit-cross-surface-tagline-consistency - now that the obvious work is done, double-check tagline drift across surfaces. 25th audit + invariant #33.

Cumulative iter 1-128

The catalog's structural integrity is now verified across 6 dimensions: per-page content (17 audits), naming consistency, structured-data, SEO/social meta, internal navigation, image embedding. Each new cross-cutting audit narrows to thinner drift, validating the prior work.

← PreviousIter #127 Next →Iter #129