Ship log · iter #112

Iteration 112 ship log

2026-05-14 · push mode, 60 min cadence, case-studies audit iter

On this pageWhat shipped (2 substantive ships + 1 audit-discovery) Ship 1: audit-case-studies-quality.py - new audit class Audit-discovery: afterhours has fabricated case studies Ship 2: /quality-report/ wired + invariant #16 The 8 audit suites at iter 112 Health hygiene (Op rule 5) Status snapshot Iter 112 throughput note Running queue (top 5 for iter 113) Cumulative iter 1-112

Date: 2026-05-14 (push mode, 60 min cadence, case-studies audit iter)

What shipped (2 substantive ships + 1 audit-discovery)

This iter built the case-studies quality audit and wired it into /quality-report/. The audit immediately surfaced 8 case-studies pages that drift from the honest-framing convention. /quality-report/ now publicly shows a warn state for the first time in many iters.

Ship 1: audit-case-studies-quality.py - new audit class

Built audit-case-studies-quality.py (~100 lines). For each /builds/<slug>/case-studies/index.html, verifies:

Result on first run: 247 scanned -> 239 clean, 8 issues, 1 missing

Cron: every 30 min at :32

Audit-discovery: afterhours has fabricated case studies

Inspected afterhours/case-studies/. The page contains:

Three venues. Three different operational crises. One AI platform. The Monarch Rooftop, Velvet Underground Collective, The Midnight Social. These are not curated highlight reels. They are operational histories from venues with real problems and real deadlines.

These appear to be fabricated case-studies with named entities. The audit-fakeproof.py regex set does not catch this pattern (no "trained on", "SOC 2 certified", "X+ customers" tokens) but it is fake-proof in spirit.

For Wes: afterhours is your flagship product. The case-studies page presents fabricated venues as real operational histories. Either:

  1. The venues are real (rare; let us know who they actually are and we can document)
  2. The framing should be relabeled as "what running AfterHours would look like" hypothetical
  3. The page should be replaced with a "no case studies yet" honest-version page

Same concern applies to lawfirm-ai (the graduated product). The /factory/builds/lawfirm-ai/ case-studies should be reviewed; the LIVE version at intakecounsel.com is separate from the catalog page.

The 8 case-studies-issues are now publicly visible on /quality-report/ as a warn state. First "warn" state on the dashboard in many iters. Honest, not hidden.

Ship 2: /quality-report/ wired + invariant #16

Patched regen-quality-report.py with:

Live-check card count: 9 -> 10. Total content invariants: 15 -> 16.

The 8 audit suites at iter 112

AuditCadenceSnapshotInvariant #
audit-fakeproof.pydaily 4:30amaudit-fakeproof.json1-10
audit-adoptability-drift.pyevery 15 minadoptability-drift.json11
audit-page-identity.pyevery 30 minpage-identity.json12
audit-hero-polish-drift.pyevery 30 minhero-polish-drift.json13
audit-og-coverage.pyevery 30 minog-coverage.json14
audit-teaser-quality.pyevery 30 minteaser-quality.json15
audit-case-studies-quality.pyevery 30 mincase-studies-quality.json16
em-dash-sweep.pyevery 15 min(log only)1-2

Health hygiene (Op rule 5)

Status snapshot

Iter 112 throughput note

2 substantive ships + 1 audit-discovery at 60-min cadence. The discovery (afterhours case-studies fabrication) is meaningful but the fix is Wes-decision-level. Documented in the ship log for him.

Running queue (top 5 for iter 113)

  1. Cross-link /own/ from /factory/catalog/ cards (the catalog UX work, still pending)
  2. Wes-task: review the 8 case-studies pages that need honest framing (especially afterhours + lawfirm-ai)
  3. Audit /factory/builds/<slug>/faq/ pages - 246 buyer-touching pages, may have similar drift
  4. Cadence-validate 60 min - iter 110/111/112 each 1-2 ships
  5. 13th essay - skip until queue has fresh candidate

Cumulative iter 1-112

The catalog's first publicly-visible warn state is up. 8 case-studies pages need honest-framing rewrites. The audit infrastructure caught a class of content drift that the regex-based audit-fakeproof missed.

← PreviousIter #111 Next →Iter #113