Date: 2026-05-10 (continued autonomous /loop)
Two new buyer-facing features + nav consistency + a durable em-dash fix.
Built /home/ubuntu/factory/director/trust-signal-injector.py (marker WD_TRUST_SIGNAL_v1). Reads /srv/sites/factory/adoptability.json + /srv/sites/factory/view-counts.json and injects a "How honest is this idea, really?" block before the footer on every /builds/<slug>/ page.
What the block surfaces:
/factory/methodology/1 in N format (e.g. "1 in 4")Visual: dark band (#0a0a0a), distinct from the per-product brand identity above. Doesn't conflict with the unique product palette; reads as a Wishdeal Factory meta layer.
Injected on 190 builds pages. Marker-bracketed for atomic re-runs. Cron 50 keeps it fresh as scores change.
The /factory/builds/ index (gallery) was missing /for/, /faq/, /changelog/ nav links - last hold-out from iter 26's nav consistency pass. Patched regen-gallery.py to include them. Regenerated.
Iter 27's _no_dash helper only stripped dashes from name and tagline upstream of html.escape. Other fields (description, role_phrase, body content) leaked dashes through. Hardened by wrapping the entire render() output: f.write(_no_dash(render(...))). All 50 agent pages regenerated. 0 em-dashes on agent pages, verified.
This pattern (wrap final output with _no_dash) is more robust than per-field stripping. Could be applied to other generators if needed.
| Surface | Pages | Em-dashes |
|---|---|---|
| /adopt/ | 190 | 0 |
| /unlock/ | 191 | 0 |
| /feedback/ | 190 | 0 |
| /agents/ | 51 | 0 |
| /builds/<slug>/ (top-level) | 191 | 0 |
| /for/ | 7 | 0 |
53/53 passing, avg 20ms.
/home/ubuntu/factory/director/trust-signal-injector.py/home/ubuntu/factory/director/regen-gallery.py (nav)/home/ubuntu/factory/director/regen-agent-pages.py (output-level _no_dash wrap)/srv/sites/factory/builds/<slug>/index.html (trust block injected)/srv/sites/factory/builds/index.html (regenerated)/srv/sites/factory/agents/<slug>/index.html (regenerated, 0 em-dashes)50 for trust-signal-injector)All .bak backups preserved.
The trust-signal block is the second-highest leverage point in the funnel after the unlock page itself. A buyer landing on /builds/<slug>/ from search should see, in one section, the key facts they'd otherwise dig through Adoptability JSON for: realistic upside, honest probability, what the strengths/concerns are, and the explicit "no live customers yet" disclosure.
Combined with iter 27's objection handler on the unlock page, the buyer now sees:
That's a much tighter conversion path than 60 minutes ago.
Same Wes-side as before:
60+ buyer-facing pages, 191 products, ~1500 sub-pages with consistent nav, objection handlers on 187 unlock pages, trust-signal blocks on 190 builds pages, health check covering 53 endpoints. Cumulative em-dash hygiene: durable strip-at-render in 4 generators (unlock, agents, audience, builds via injector).