<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><title>Root Cause</title><link>https://ta-blogs.web.app/rootcause/</link><description>An engineering blog of real bugs hit while shipping small software products — the symptom, the diagnosis that actually worked, and the fix. Playwright, Firebase, Unity, zsh, Blender, and the traps that cost us days.</description><item><title>Two agent sessions, one working tree: the checkout that ate my work</title><link>https://ta-blogs.web.app/rootcause/shared-working-tree-parallel-agent-sessions-git-checkout/</link><guid>https://ta-blogs.web.app/rootcause/shared-working-tree-parallel-agent-sessions-git-checkout/</guid><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><description>A branch belongs to a working tree, not to a session. When one session ran git checkout, the files changed under another session that was still editing them — and a cloud-synced .git made the evidence disagree with itself.</description></item><item><title>Google sign-in worked on one Firebase site and broke on the next</title><link>https://ta-blogs.web.app/rootcause/firebase-auth-authorized-domains-multi-site-patch-replaces/</link><guid>https://ta-blogs.web.app/rootcause/firebase-auth-authorized-domains-multi-site-patch-replaces/</guid><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><description>Firebase Hosting multi-site domains are not added to Auth's authorized domains automatically. You can fix it from the command line, but the PATCH replaces the whole list, and a missing header reports the wrong error.</description></item><item><title>The Blender transform you read back is not the one you just set</title><link>https://ta-blogs.web.app/rootcause/blender-headless-matrix-world-stale-before-view-layer-update/</link><guid>https://ta-blogs.web.app/rootcause/blender-headless-matrix-world-stale-before-view-layer-update/</guid><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><description>Assembled models flew apart, a key's teeth became a giant cube, and a rocket drifted out of frame. Two traps in a headless Blender batch pipeline, both from reading matrix_world before the dependency graph had caught up.</description></item><item><title>Chasing a magenta material took our Unity build to 590,000 shader variants</title><link>https://ta-blogs.web.app/rootcause/urp-always-included-shaders-590k-variant-explosion/</link><guid>https://ta-blogs.web.app/rootcause/urp-always-included-shaders-590k-variant-explosion/</guid><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate><description>Adding URP's shaders to Always Included Shaders fixed a magenta material and stopped the build from ever finishing. The project had five materials. Here is why that setting disables Unity's shader stripping, and the material-template fix that restored it.</description></item><item><title>Opening a Playwright profile in real Chrome broke it permanently</title><link>https://ta-blogs.web.app/rootcause/playwright-persistent-profile-chrome-version-downgrade/</link><guid>https://ta-blogs.web.app/rootcause/playwright-persistent-profile-chrome-version-downgrade/</guid><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate><description>A status tool opened our saved Playwright profiles with channel chrome. Every scheduled job that used those profiles then hung on launchPersistentContext. Chrome had migrated the profiles to a newer version and refuses to go back.</description></item><item><title>firebase deploy said &quot;Deploy complete&quot;. It shipped three-day-old code.</title><link>https://ta-blogs.web.app/rootcause/firebase-functions-deploy-complete-but-shipped-stale-lib/</link><guid>https://ta-blogs.web.app/rootcause/firebase-functions-deploy-complete-but-shipped-stale-lib/</guid><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate><description>A Cloud Functions deploy reported success while uploading a stale lib directory, because the build script ended in &quot;|| echo&quot;. Fixing that surfaced a second trap — module-scope admin.firestore() crashing at load, hidden by TypeScript's require emit order.</description></item><item><title>Ctrl-R did nothing in my terminal app. The cause was EDITOR=vi.</title><link>https://ta-blogs.web.app/rootcause/ctrl-r-dead-in-pty-app-editor-vi-zsh-vi-mode/</link><guid>https://ta-blogs.web.app/rootcause/ctrl-r-dead-in-pty-app-editor-vi-zsh-vi-mode/</guid><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate><description>Reverse history search was silently dead in our Electron/xterm.js terminal but worked in Terminal.app. Four layers of key-delivery tracing found nothing. The real cause was zsh switching to vi mode because of an inherited environment variable.</description></item></channel></rss>
