Ship log · iter #44

Iteration 44 ship log

2026-05-11 · continued autonomous /loop

On this pageWhat shipped Files changed inventory Why this matters Status snapshot What still needs work Next 5 recommended autonomous tasks Cumulative iter 1-44

Date: 2026-05-11 (continued autonomous /loop)

What shipped

5 items. Closed a real UX gap: 32 products had broken /pricing/ pages that fell through to Caddy's homepage fallback.

Bug caught + fixed: 32 products served homepage instead of pricing

Discovered that /factory/builds/<slug>/pricing/ returned 200 OK for 32 products even though the page didn't exist - Caddy's try_files fallback was silently serving the homepage. So a buyer clicking "Pricing" on /builds/activation-ai/ got the Wishdeal Factory homepage with the wrong title and no pricing info. Confusing and misleading.

Fixed: built regen-fallback-pricing.py which generates a real /pricing/ page for any product missing one:

32 pricing pages written

Generator ran across all 207 products with /index.html. Of those, 174 already had custom-branded pricing pages (the original builder produces them); the 32 newest products got the fallback page.

Coverage now: 208 of 207 products (1 extra is a stale dir, harmless).

Sitemap +32 URLs → 1648 total

regen-sitemap-v2.py already enumerates /pricing/ subpath; just needed regen to pick up the 32 new pages.

Cron + idempotency

Added 5 /2 cron entry. Generator is idempotent (skipped 174 already-existed). New products that ship will get a fallback pricing page within 2 hours, until the original builder produces a custom one.

Em-dash sweep verified

Universal sweep ran: 12 dashes stripped from 3 files. Factory-wide count: 0. The 32 new pricing pages all clean (the generator wraps output with _no_dash()).

Health check unchanged

60/60 passing at 16ms avg.

Files changed inventory

New

Re-rendered

New cron

Why this matters

This was an invisible UX bug: status code 200, but wrong content. The kind of issue that would never surface in a routine link audit (the link "works") but would actively confuse buyers (they click Pricing, see Mission Control homepage).

For 32 products that's a meaningful broken impression. Now closed.

Plus the fallback page has its own value: it tells the buyer about the marketplace pricing model honestly while pointing to the $5 unlock for product-specific pricing detail.

Status snapshot

What still needs work

Same Wes-side as before:

  1. Stripe wiring (30 min)
  2. Email-send for auto-fulfill
  3. First real traffic push
  1. Same-bug-class audit: check other potential 200-OK-but-wrong-content surfaces. /how-it-works/, /vs/, /case-studies/, /faq/, /about/ for products missing those pages.
  2. Hero-polish second pass - Claude CLI on bottom-50 Adoptability products.
  3. Catalog card hover preview - hover shows first line of dossier teaser.
  4. More audience pages - "for-no-code-builders", "for-services-firms-in-EU".
  5. Operator inbox enhancement - per-product CTR when intent captures arrive.

Cumulative iter 1-44

The factory has closed another silent-bug class: silent-200-wrong-content URLs. Every product now has:

Plus the marketplace shell: catalog, FAQ, changelog, graduated, adoptability methodology, audience landings.

0 em-dashes anywhere across 2600+ HTML files, durably enforced. 60 health endpoints. ~106 cron entries. Director ticking.

Remaining work is exclusively Wes-side: Stripe + traffic push.

← PreviousIter #43 Next →Iter #45