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 · Release

Launch day, second pass: audit fixes, one voice, and the résumé regenerated

Six commits landed on main after the launch. A site audit (pull request #58) shared one masthead across every page, shortened the phone hero, collapsed receipts into expandable sources with clickable public URLs, gave demo clips controls, moved the start form to neutral defaults, and bumped Trendi to 0.2.2 and Way In to 1.0.1 from Apple's Lookup API. Then the founder copy stopped naming a former employer and names the sports-betting market instead, the portrait was recropped and shown in its own colour, the résumé PDF was regenerated from the same data, the home lede went back to the studio's third-person voice after the audit had left it in first person, the visual smoke scripts were repointed at the shared masthead, and 124 lines of the home page's retired masthead CSS came out.

Why. A launch is the first version strangers see, not the last one. Two sessions were editing the site on the same day, and the record should say what each changed and that the audit's version numbers were checked against the store, not assumed.

Next. Decide, deliberately, whether receipts stay collapsed by default; the audit made that call under the heading of a fix. Get the GitHub Actions billing lock lifted so the next change runs CI instead of a local reproduction.

Sources and verification details
  • The audit merged to mainhttps://github.com/koinophobia-labs/koinophobia-labs-site/pull/58, merged 2026-09-14 as 444f447
  • Store versions match AppleApple Lookup API checked 2026-09-14: Trendi: Content Coach 0.2.2 (released 2026-09-10), Way In: Career Hub 1.0.1 (released 2026-09-10), ForgetAboutIt 1.0
  • The copy, portrait, and résumé changes are on mainkoinophobia-labs-site commits c07f96e, b67daad, 786be8f, 2026-09-14; public/resume/Blake-Taylor-Resume.pdf regenerated by scripts/generate-resume-pdf.py
  • The voice fix, smoke scripts, and CSS removal are on mainkoinophobia-labs-site commits efd9265 and aabda03, 2026-09-14; scripts/capture-koi-world.mjs passed all six captures against a production build in Chrome

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.

Sources and verification details
  • 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 · Milestone

The rebuild reaches a pull request

Historical status. Read the later release update.

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.

Sources and verification details

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.

Sources and verification details
  • 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.

Sources and verification details

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.

Sources and verification details
  • 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.

Sources and verification details

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.

Sources and verification details
  • 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

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.

Sources and verification details
  • 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

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.

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

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.

Sources and verification details
  • 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.

Sources and verification details
  • 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 · 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.

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

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.)

Sources and verification details
  • 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 · 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.

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

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.

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

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.

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

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.

Sources and verification details
  • 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.

Sources and verification details
  • 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