Koinophobia LabsStart a project

Build log · updated September 14, 2026

What actually happened.

Dated entries with sources. Entries before 26 July 2026 were backfilled from release records. A wrong entry is corrected by a newer entry that says what was wrong; nothing is deleted. RSS feed.

This site · Milestone

The rebuild reaches a pull request

All nine phases of the one-studio rebuild landed on one branch and went up for review: one registry, one domain, the App Store apps leading, the lab at its real stage, sixteen analytics events, a social card per page, an RSS feed, build-time App Store versions, five new koi renders, and a QA harness that passes at six widths with a phone LCP of 1.1 seconds.

Why. Production still runs the site that sells website audits. Nothing here is live until the merge, and the merge is a human's call.

Next. Merge, attach koinophobia.dev to the same Vercel project, verify the host redirect on the live domain, and confirm the analytics events arrive.

  • The pull request exists with the full verification recordhttps://github.com/koinophobia-labs/koinophobia-labs-site/pull/57, opened 2026-09-14
  • The QA numbers are on the branchdocs/evidence/REBUILD_QA_2026-09-14.md and docs/koi/HIGGSFIELD_2026-09-14.md at b1670cf

This site · Release

The rebuild is live. One studio, one domain.

Pull request #57 merged to main and Vercel deployed it. koinophobialabs.com now leads with the three App Store apps, reports the lab at its real stage, and carries the koi renders, the analytics events, the social card, the RSS feed, and the build-time App Store versions. koinophobia.dev redirects into it, permanently.

Why. For six weeks the studio site sold website audits while the apps were live on the store. The proof and the studio are in one place now.

Next. Watch the sixteen events for a month, then decide whether cinematic mode costs readers. Confirm the GitHub Actions billing lock is lifted so CI runs on the next change.

  • Production serves the merge commitVercel deployment dpl_4Rsus7xrC9JLGtmnvK1RLMsbe7Jd for 12d0241, target production, 2026-09-14
  • Redirects fire on the live hostscurl 2026-09-14: /services, /intake, /products, /about, /work, /concierge, /now return 308 to the new pages; koinophobia.dev/, /products/trendi, /about, /log return 308 to koinophobialabs.com
  • CI did not run on the pull requestGitHub annotation 'The job was not started because your account is locked due to a billing issue'; the CI steps were reproduced in a clean clone instead (docs/evidence/REBUILD_QA_2026-09-14.md)

This site · Decision

The two sites become one studio

Started the rebuild that folds koinophobia.dev into koinophobialabs.com: the three App Store apps lead, the lab reports its real stage, the small-business audit offer is retired, and every product card reads from one registry.

Why. A one-person studio with two homes splits its proof in half. The apps were live on the store while the studio site was still selling website audits.

Next. Ship phases 0–5 on the rebuild branch, then the domain merge and redirects.

  • The rebuild plan and its audit are on the recordThe rebuild document and homepage prototype published 2026-09-13; branch rebuild/one-studio in koinophobia-labs-site

The studio · Milestone

Way In, Trendi, and Forget About It verified public on the App Store

All three released apps were checked against Apple's public US listings and the Lookup API, and the site's customer paths were completed: App Store buttons, authentic store screenshots, and accurate Free and Pro allowances.

Why. Website copy about a release is a claim; the listing is the evidence. The check moved every product page from 'in preparation' language to dated, verifiable status.

Next. Read versions from the Lookup API at build time so the site can never drift from the store again.

  • Trendi is public on the App Storehttps://apps.apple.com/us/app/trendi-content-coach/id6776299336 — public US listing and Apple Lookup API, checked 2026-09-10
  • ForgetAboutIt is public on the App Storehttps://apps.apple.com/us/app/forgetaboutit/id6804360983 — public US listing, checked 2026-09-10
  • Way In is public on the App Storehttps://apps.apple.com/us/app/way-in-career-hub/id6807942376 — public US listing, checked 2026-09-10
  • The customer-path deploy landed on mainkoinophobia-labs-site commit f985a1f, 2026-09-10

Way In · Release

Way In native build 6 resubmitted; the web app takes the new name

The native iPhone and iPad app was bumped to build 6 for App Store resubmission, and the Career Forge web app was renamed Way In so both surfaces carry one name.

Why. Two names for one product is the kind of small lie that compounds. The rename closed it before the native listing went public.

Next. Verify the public listing, then retire every remaining 'Career Forge' string on the site.

  • Build 6 was prepared for resubmissioncareer-forge-native-ci commit 'Add native Way In iOS app and bump to build 6 for App Store resubmission', 2026-09-03

Trendi · Release

Trendi reaches the public App Store

Trendi: Content Coach went public on the App Store for iPhone: free with three Coach Packs per weekly period, and an optional Trendi Pro subscription.

Why. Every earlier entry about Trendi is about builds that reached a tester. This is the first one a stranger could install.

Next. Watch whether the output gets used to publish, repeatedly, before adding a single feature.

  • Public listing existshttps://apps.apple.com/us/app/trendi-content-coach/id6776299336, public since 2026-08-28 per the site's Trendi release commit 248975a (2026-08-30)

This site · Release

The site became a founder OS

Rebuilt the koinophobia.dev homepage as a control room — current focus, every product with its real stage, this log, and a start-here router by visitor type. Re-verified every product status against artifacts on the same day, because two of them were about to trip their own freshness alarms.

Why. The work was scattered across apps, chats, and release logs where nobody could see it. A founder's public record should be the evidence, not a summary of it.

Next. Keep the log alive with every working session, and get Project Reach Back into the constellation once there's a checkable paragraph of truth about it.

  • The statuses were about to go stale by the site's own ruleslib/dev/universe.ts stage budgets: Trendi and You Know Ball carry 7-day windows, last verified 2026-07-20

The studio · Release

Sales packets, and a real login for the CRM

Qualified studio leads now produce a founder-ready sales packet instead of a raw CRM row, and the private CRM moved from a shared secret to staged Google authentication.

Why. The gap between “a lead exists” and “Blake can walk into the conversation prepared” was manual work that happened at the worst possible time. And a shared secret is the kind of debt that gets more embarrassing the longer the CRM matters.

Next. Retire the legacy secret fallback entirely once the staged rollout proves out.

  • Both landed on main through reviewed PRskoinophobia-labs-site #40 (merge b0bfa8e) and #41 (merge 8018cdf), 2026-07-25

Trendi · Release

Three TestFlight uploads in one evening — two of them fixes

Build 120 shipped Record Mode's beta package to TestFlight. The first pass on the phone found a paid-for coach script rendering as five empty sections — fixed in 121. Then the live camera preview showed sideways on the front sensor while recordings stayed upright — fixed in 122 by letting Apple's rotation coordinator drive the preview.

Why. Both defects were invisible in the simulator and surfaced within hours of a genuine install. Weeks of green automated runs had voted; the device decided.

Next. A deliberate on-device update pass and the focused record → playback → share gate list on build 122 before any external tester touches it.

  • All three builds were uploaded and accepted on July 25altool delivery UUIDs e5cbeefe (120), caa3229b (121), d811be60 (122); App Store Connect processed each VALID
  • The archives exist~/Library/Developer/Xcode/Archives/2026-07-25/Trendi-0.1.0-{120,121,122}.xcarchive

Koi Cave · Milestone

Koi Cave's operator loop closed for the first time

A typed command became a validated packet, passed an approval gate, ran a repo-inspection worker against the real Trendi checkout, and came back as a receipt that a separate validator re-checked from artifacts on disk. The worker cannot declare its own success.

Why. This is the difference between a notes app and an operator brain: work you can delegate and then verify without trusting the thing that did it.

Next. The loop stays unmerged until the human-hands gate runs — Blake typing the command into the composer himself. No more feature work before that.

  • The first live receipt exists with proof artifactsKOI_CAVE_OPERATOR_LOOP_V1_REPORT.md; receipt 7F044DA9, proof directory present 2026-07-26

Labs Concierge · Release

The koi got a front office — then an audit took it apart

Both sites' koi became a structured front desk: messy thought → one-question-at-a-time clarifying → an editable brief → an honest recommendation, with nothing sent before consent. Days later, a ten-journey walkthrough scored it 63/100 — the front door was hidden behind an unlabeled fish — and all nine defects it found were fixed and merged the same day.

Why. Conversion surfaces rot fastest, and the only way to know is to walk in as a stranger. The score wasn't the embarrassment; shipping without the walkthrough was.

Next. A five-human benchmark before the flow gets called done — automated self-scoring already fooled me once.

  • Shipped and fixed through reviewed PRs with verified production deployskoinophobia-labs-site #38 (front office) and #39 (all nine audit defects), merged 2026-07-21
  • The audit and fix list are on the recorddocs/FRONT_OFFICE.md and the 2026-07-21 ease-of-use audit (63/100 weighted, ten journeys)

This site · Release

koinophobia.dev became a product laboratory

The personal site grew from four routes to a full universe: product pages with per-product visual worlds, honest stage + reach on everything, a lab of experiments, and its own sitemap. Every product status became a dated, evidenced claim.

Why. One click past the homepage, visitors used to land in studio chrome with contradictory labels. The two-site story broke exactly where curiosity started.

Next. Keep the universe as the single source of truth — every other surface renders from it or disagrees with it loudly in tests.

  • Shipped as one reviewed PRkoinophobia-labs-site #36, squash-merged 2026-07-20 (4adb896) with a verified production deploy

Way In · Decision

Career Forge closed its own store

An audit found the $49 fulfillment path ran entirely in the buyer's browser — close the tab on the way back from Stripe and the license was never issued, with nothing recording it. Checkout was closed the same day, and reopening was tied to a demonstrated end-to-end journey rather than to configuration.

Why. A checkout that refuses to open is a bad day. One that charges and delivers nothing is a refund, an apology, and someone's trust.

Next. Build the durable order store, then re-certify the journey on the deployed code. (Update, July 26: the store now exists and passes its health checks; the certification is pinned to an exact commit, so checkout stays closed until the journey is re-proven on the code that's running.)

  • The brake and its reason are live and inspectablecareer-forge-lite#28 (3c66a77); GET /api/commerce-health returns canSellSafely:false with the pinned-commit reasons, checked 2026-07-26

This site · Lesson

The site was wrong about my own products — in both directions

An audit of every product claim against artifacts found three of four statuses wrong, including an underclaim: the site said no You Know Ball build had ever been uploaded, while Apple's own 409 logs named two it had already accepted. Every status now carries a verification date and evidence, and the test suite fails when either goes stale.

Why. Writing status from memory produced both flattery and false modesty. Confident self-criticism turned out to be as unreliable as confident marketing — and harder to catch, because nobody fact-checks the sentence that makes you look bad.

Next. Statuses only move when someone looks at artifacts, and the freshness budgets make “someone looked” a dated, testable claim.

  • The full audit trail is in the repodocs/RELEASE-TRUTH-RECONCILIATION.md, committed with PR #36

Trendi · Release

Trendi build 118 finally lands on TestFlight

After an Apple account permission stranded two finished builds for days, build 118 uploaded, processed clean, and installed from TestFlight.

Why. For days the testers' build was three releases behind the best one on this machine, and that gap was invisible from the outside. Shipping and delivering are different verbs.

Next. Close the clean-state isolation gate — which needs a second real Apple account — before calling any build the release candidate.

  • 118 was installed from TestFlightTestFlight app page record: Version 0.1.0 (118), release date Jul 19 2026, 90-day expiry

Way In · Release

Career Forge v0.10.0-beta.1 ships

The beta line went to production after a readiness sprint: early-win bullets so the first session produces something usable, and a first-run profile where nine fields became optional and collapsed.

Why. People were abandoning at a wall of empty textareas. Completion beats completeness — a shorter form that gets finished outperforms a smarter one that doesn't.

Next. Watch whether strangers finish the workflow, and treat the paid path as unproven until it's demonstrated end to end.

  • The release is taggedcareer-forge-lite tag v0.10.0-beta.1 at b1be8b2, deployed to career-forge-lite.vercel.app

You Know Ball · Defect

You Know Ball promised a bonus it never paid

The +2 comeback bonus — an elite take while trailing big — turned out to be dead code behind a flag that nothing disables, while the result card kept promising it (and quoted the wrong number). Fixed by paying it as an independent modifier, with the copy and the mechanic reading from one constant. Verified on a real device through a save-preserving install: the mid-battle scene state survived the upgrade byte for byte.

Why. A promise in the UI is a claim about the system. If the copy and the mechanic can drift apart, the score stops being a score.

Next. The fix sits on the unmerged branch with the clutch-finish work; the release step is still a tester group, not more engine.

  • The fix is committedbanter-bot-content-expansion commit 7fa7873 on feature/content-depth-expansion

The studio · Milestone

The studio can take real money

Stripe moved from a test sandbox to the live account: a durable webhook endpoint, live keys in production, and the CRM's proposal → deposit flow verified end to end with a real checkout session — tamper and replay checks included.

Why. An intake pipeline that ends at “we'll invoice you somehow” isn't a pipeline. The studio can now be paid the moment the work is agreed.

Next. Say it plainly on the record: infrastructure that CAN take payment is not a customer. The proof this system is waiting for is a signed engagement, not a webhook.

  • The live webhook endpoint exists and processed real eventsStripe live endpoint we_1TsDzb… at koinophobia.dev/api/stripe/webhook; a real checkout.session.expired was delivered and replay-verified 2026-07-11/12