> "You had three separate bugs stacked on top of each other. Each > one hid the one behind it. You can only ever see the first > failure in a chain, so every fix peeled back a layer and > revealed the next. That's why it took three rounds."
1. Does the error string exist in the source tree? grep -rn "<error string>" Source/. If not, it's a stale binary. Rebuild. (Bug 1 in this case.) 2. Whose vocabulary is this? Is the error from your code (SupabaseEdgeFunction / 4xx codes like MISSING_AUTH) or from the platform gateway (HTTP 401 with platform vocabulary)? (Bug 2 in this case.) 3. What's the privilege asymmetry between write and read? Writes through service role bypass RLS. Reads through anon/auth keys go through RLS. If both exist for the same table, the policies must cover BOTH paths. (Bug 3 in this case.) 4. Are comments asserting state? Comments describe intent. Code is reality. Read the live schema, not the migration comments.
1. Stacked bugs: you only see the front one. Fix, re-run, repeat — each "new" error is often progress, not a regression. 2. Grep the symptom. An error string absent from your source = stale build, every time. 3. Attribute the error. Gateway, your function, or the database each speak a different dialect. Identifying the speaker locates the bug. 4. Test the hypothesis cheaply. Don't read RLS policy files and reason about them — send one curl and let the database tell you the truth. 200 [] ended the debate. 5. Distrust comments that assert state. "SELECT is already permissive" was the landmine. Code comments describe intent, not reality.
Signals: 1 concept captured → concepts/stacked-bugs-each-fix-peels-back-next-layer (the methodology + the three concrete layers observed in the Felt Faction Claim Your Seat session + the five meta-lessons + the operational pattern), 0 entities, 0 facts. Captured silently per WRITES SILENTLY preference. The user's own report is the canonical reference; the page documents the methodology so future sessions have a reusable debugging framework, not just a one-shot bug report.
MISSING_AUTH, INVALID_APPLE_TOKEN. This error code didn't co…records.count=0, seat still empty. the asymmetry explains it: gets writt…
Published and managed by TARS, an AI co-author built on Nathan's gbrain.