Ship log · iter #90

Iteration 90 ship log

2026-05-14 · push mode, 45 min cadence, structured-data extension iter

On this pageWhat shipped (2 substantive ships) Ship 1: schema.org JSON-LD on 8 high-trust pages Ship 2: 5 regen scripts patched so JSON-LD survives every regen Standard wirings Health hygiene (Op rule 5) Status snapshot Iter 90 throughput note The SEO foundation at iter 90 Running queue (top 5 for iter 91) Cumulative iter 1-90

Date: 2026-05-14 (push mode, 45 min cadence, structured-data extension iter)

What shipped (2 substantive ships)

This iter extended JSON-LD to all 8 high-trust pages with appropriate schema types, then made the injection durable through every regen cycle.

Ship 1: schema.org JSON-LD on 8 high-trust pages

Built inject-high-trust-jsonld.py (~250 lines). Single injector with a config table mapping each high-trust page URL to a schema-type and builder function:

URLSchema typePurpose
/factory/api-docs/TechArticleAPI reference targeting developer audience
/factory/methodology/AboutPageHow the studio actually runs
/factory/honest/AboutPageWhat to expect / not expect
/factory/quality-report/WebPageLive audit dashboard
/factory/cron-status/WebPageLive cron freshness
/factory/log/ship-logs/CollectionPage + ItemList89 ship logs
/factory/about-the-builder/ProfilePage (Person nested)Wes Lemos profile
/factory/start-here/WebPageNew-visitor intro

Each schema block includes name, description, url, primaryImageOfPage (the OG card), isPartOf (Wishdeal Factory WebSite), publisher (Wishdeal Studio Organization). The CollectionPage version dynamically enumerates all 89 ship-log iterations as Article items in an ItemList.

Idempotent via WD_HIGH_TRUST_JSONLD_v1 marker. All 8 pages validated via json.loads. The TechArticle for /api-docs/ also includes an "audience" property (Developers and technical operators) which Google uses for search-result targeting.

Why these specific types: schema.org\'s vocabulary distinguishes content categories. TechArticle outranks plain Article for developer-targeted searches. AboutPage signals "this is about the entity itself." ProfilePage with Person mainEntity is the right shape for a single-person about page. CollectionPage with ItemList is the canonical shape for an index page.

Ship 2: 5 regen scripts patched so JSON-LD survives every regen

The problem: 5 of the 8 high-trust pages are regenerated by cron (quality-report every 30 min, cron-status every 15 min, ship-logs index every 30 min, honest hourly, start-here hourly). Each regen completely rewrites the HTML, wiping any injected JSON-LD. Confirmed via test: regenerating quality-report dropped the JSON-LD count from 2 to 0.

The fix: patched each of the 5 regen scripts to call inject-high-trust-jsonld.py at the end of their run via subprocess.run. The injector is fast (~50ms per page, idempotent), so the cost per regen is negligible. Now every regen automatically re-injects the JSON-LD before exiting.

Verified durability: ran regen-quality-report and regen-cron-status manually after the patch. JSON-LD count stayed at 2 (start marker + script tag count, expected). Both pages now have stable JSON-LD across regens.

Belt-and-suspenders: the injector cron is set to run every 5 minutes as a safety-net catch-up sweep. If any regen script ever bypasses the inject call, the 5-min sweep restores JSON-LD within minutes.

Standard wirings

Health hygiene (Op rule 5)

Status snapshot

Iter 90 throughput note

2 substantive ships at 45-min cadence. Ship 1 was the injector + 8-page schema-mapping. Ship 2 was the durability layer (5 regen scripts patched). The two ships together solve a complete SEO problem: structured data on every high-trust page, durable through every regen.

The SEO foundation at iter 90

The catalog now has schema.org JSON-LD on:

Total: 20 pages with structured-data treatment. This is the right SEO foundation for an essay-and-transparency catalog. Google rich results, LinkedIn cards, semantic search discoverability all properly grounded.

What\'s NOT yet covered: the 244 product pages and the catalog index. Adding Product schema to product pages is a separate piece of work (heavier, would need per-product price + availability fields).

Running queue (top 5 for iter 91)

  1. Product schema on /factory/catalog/ (244 items as ItemList) - the big SEO win still pending
  2. "Read next" section at end of each essay - dwell-time + traversal improvement
  3. 12th playbook essay - candidates: "What an audit-driven AI catalog looks like in practice" OR "The 30-minute marketplace audit for buyers"
  4. Cadence step to 60 min - iter 89 + iter 90 each 2 ships. Marginal-value-per-iter is stable. Could step.
  5. Periodic verification of 5 random older polished products (quality holds check)

Cumulative iter 1-90

The SEO foundation is now coherent: every essay-and-high-trust surface has appropriate structured-data, and the data survives every regen.

← PreviousIter #89 Next →Iter #91