Date: 2026-05-10 (continued autonomous /loop)
7 items. Factory-wide em-dash sweep + 3 more generator-source-level patches + SESSION-MASTER v5.
Iter 36 closed em-dashes on primary buyer-facing surfaces (unlock, adopt, feedback, builds/<slug>/index.html, all sub-pages I had directly audited). But a FACTORY-WIDE audit revealed 5036 em-dashes still present in surfaces I hadn't checked:
/own/: 3447 em-dashes (the /own/ adopt-tier pages)/builds/<slug>/financials.html: 1086 em-dashes (Fermi math, metrics like $72k - $1.1M)/financials/: 390/archive/, /foreman-feed/, /afterhours/, /memory/, etc.: misc small counts/srv/sites/factory/index.html (the homepage): 5In-place sweep across all secondary surfaces. After sweep + a few targeted single-file fixes (homepage, hotlist, today, log/index.html, 2 pricing.html), the final factory-wide em-dash count is 0 across all 2600+ HTML files.
To prevent em-dashes from regenerating on cron-driven regens:
buyer-skeptic.sh - the shell script that generates skeptic-memo index pages. Added sed -i "s/ - / - /g; s/-/-/g" "$INDEX" after the heredoc write. Durable.render-own-page.py - generates /own/<slug>/ pages. Added _no_dash() helper, wrapped f.write(page) with f.write(_no_dash(page)). Durable.regen-financials-page.py - generates /financials/ index. Added _no_dash() helper, wrapped OUT.write_text(html_out) with OUT.write_text(_no_dash(html_out)). Durable.Replaced v4 (which covered iters 1-32) with v5 covering iters 1-36. Adds entries for iter 33-36. 0 em-dashes after sanitization.
10 sources now enforce dash-strip on output:
Plus 3 injectors that strip on output: top-utility-bar, trust-signal, objection-handler.
Total em-dashes across the entire /srv/sites/factory/ HTML tree: 0
/home/ubuntu/factory/director/buyer-skeptic.sh (sed strip post-write)/home/ubuntu/factory/director/render-own-page.py (_no_dash wrap)/home/ubuntu/factory/director/regen-financials-page.py (_no_dash wrap)All .bak backups preserved.
Em-dashes are the strongest visible AI-generated-content signal. A buyer landing on /own/bookkeeper-ai/ and seeing - in a financial model immediately reads as "AI slop." Even if buyer-facing content is clean, a curious buyer who clicks into /financials/ or /own/ or /afterhours/ gets the AI-tell.
After iter 37, EVERY HTML file in the factory is 0 em-dashes, including admin pages, internal logs, financial pages, and adopt-tier pages. Combined with the 10 generator sources now durably enforcing this, the invariant is now factory-wide and persists across cron-driven regens.
Same Wes-side as before:
The factory's surface is genuinely tight and durable: 198 products, 62 buyer-facing pages, 10 audience landing pages, per-product objection handlers + trust signals + previews + graduated proof + adoptability explainer + 1 graduation, 59/59 health endpoints, 8 broken links (admin only), 0 em-dashes anywhere across 2600+ HTML files with durable enforcement at 10 generator sources.
Surface quality is high enough to charge $5 for. Remaining work is Wes-side: Stripe + traffic push.