Ship log · iter #36

Iteration 36 ship log

2026-05-10 · 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-36

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

What shipped

7 items. Massive em-dash regression caught and fixed at source across 4 more generators.

Em-dash regression: 482 files affected

Started the iteration with a routine audit and found em-dashes had regenerated in sub-pages I had previously cleaned. Specifically:

Plus 1 in the changelog (from my own iter-32 highlight text).

Total: ~480 files contained em-dashes that had regenerated since prior in-place fixes.

Root cause: 4 generators missing _no_dash wrap

Each of these generators rendered upstream content (fermi_summary, brand descriptions, tagline, etc.) without stripping em-dashes:

  1. case-studies-gen.py
  2. faq-template-gen.py
  3. regen-agents-page.py (uses .write_text() not f.write())
  4. regen-gallery.py (the /factory/builds/ index for 195 products)

Patched all 4 at source with a _no_dash(s) helper and a regex sweep that wraps both f.write(...) and .write_text(...) calls. Re-ran each generator. Verified 0 em-dashes after.

In-place sweep for 152 stale files

Some generators don't regenerate existing files (e.g. skeptic-memos is generated by buyer-skeptic.sh on each new memo). For those, did a one-time in-place sweep across all per-product sub-pages: case-studies/, faq/, pricing/, skeptic-memos/, vs/, about/, sales-kit/, plus the 51 agent pages.

Em-dash hygiene status

SurfaceFilesEm-dashes
/unlock/1970
/adopt/1960
/feedback/1960
/for/110
/agents/51 + 1 idx0
/categories/200
/archetypes/70
/builds/<slug>/1950
/builds/<slug>/faq/1950
/builds/<slug>/case-studies/1950
/builds/<slug>/pricing/1600
/builds/<slug>/skeptic-memos/1170
/builds/index.html10 (was 802)
catalog, faq, changelog, graduated, adoptability, randomall0

Every primary buyer-facing surface: 0 em-dashes.

8 broken (unchanged from iter 34). All in admin/log surface or stale references to deleted products. None in primary buyer-facing surface.

Files changed inventory

Modified (durable, source-level)

Re-rendered (with em-dashes stripped)

In-place patched

All .bak backups preserved.

Why this matters

Em-dashes are a strong AI-generated-content signal. A buyer landing on a product page and seeing - in 5 places thinks "this was written by ChatGPT, no human edited this." The Factory's whole positioning is "real strategy work, honest disclosure, not slop." Em-dashes contradict that signal.

The pattern across iters 25-36: every time the autonomous studio ships new content (Director regens product cards, brand-applicator paints product palettes, hero-polish runs Claude CLI), em-dashes leak in. Iter 36 closed the last 4 leak sources at the generator level. Combined with the in-place sweep, the entire buyer-facing surface is now 0 em-dashes - and will stay that way as the studio keeps shipping.

Cumulative count of generators with _no_dash wrap: 8

Plus injectors that strip on output: top-utility-bar, trust-signal, objection-handler all em-dash-safe.

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. buyer-skeptic.sh dash-strip - the skeptic memo regenerator is a shell script, not a Python generator. Should still get sed -i 's/ - / - /g' ... after generation.
  2. Hero-polish second pass - Claude CLI on bottom-50 Adoptability products.
  3. Per-product /how-it-works/ sub-page - lightweight new content from implementation_plan + tech_stack.
  4. Catalog card hover preview - hover shows first line of dossier teaser.
  5. Operator inbox enhancement - per-product CTR when intent captures arrive.

Cumulative iter 1-36

The factory's buyer-facing surface is now genuinely tight + durable: 198 products, 1500+ sub-pages with consistent nav, 10 audience landing pages, per-product trust signals + objection handlers + previews, 1 graduated product page, 59/59 health endpoints, 8 broken links (admin-only), and 0 em-dashes shipped across 36 iterations with durable enforcement at 8 generator sources.

The product is structurally ready to charge $5 for. Surface quality is high. Remaining work is Wes-side: Stripe + traffic push.

← PreviousIter #35 Next →Iter #37