MetaDebate / docs /workflows /bugfix.md
vajeeda's picture
base structure of the project formed
b6e19c7
|
Raw
History Blame Contribute Delete
4.49 kB

Workflow β€” Fixing a Bug

Purpose

Read this file every time you need to fix a bug. Follow steps in order. Do not open files not mentioned in the log.


Core Principle

The log tells you where to look. Trust the log. Check one file. Do not scan the codebase. Do not refactor while fixing.


Step 1 β€” Read the Error First

Before touching any code:

  • Read logs/errors.log β€” find the exact error entry
  • Identify: file, function, reason, fix hint from the log
  • Read docs/learnings.md β€” has this failed before?
  • If yes β†’ apply the known fix, skip to Step 5

Error log format to look for:

[ERROR] [timestamp] [file:function] β€” reason β€” fix hint


Step 2 β€” Isolate Before Fixing

State this out loud before touching code: Error in: [file:function] Reason: [from log] Fix hint: [from log] Only file I will open: [file]

  • Open only the file named in the log
  • Find only the function named in the log
  • Do not open any other file unless the log explicitly points there

Step 3 β€” Understand the Failure

Inside the identified function:

  • Check what input is coming in
  • Check where exactly it breaks (line from log)
  • Check if it is a null/undefined issue
  • Check if it is an auth/session issue
  • Check if it is a Supabase RLS issue
  • Reference docs/debugging.md β†’ Supabase Specific Errors table

Step 4 β€” Write the Fix

  • Fix only the broken logic
  • Do not rename variables or restructure the function
  • Do not fix adjacent code that looks messy
  • Add or improve error handling inline if it was missing
  • Confirm fix hint from log is addressed

Step 5 β€” Write or Update the Test

  • Find the existing test file for this feature
  • If the failing case was not covered β†’ add a test for it now
  • The test must reproduce the exact failure condition
  • Run only the test for this file first:
npm test -- tests/unit/[feature-name].test.ts 2>&1 | tee logs/test.log
  • Confirm it passes before running full suite

Step 6 β€” Run Full Test Suite

bash scripts/test.sh
  • All tests pass
  • No previously passing test is now failing
  • If a new failure appears β†’ treat it as a new bug, do not chain fixes

Step 7 β€” Update Docs

  • Add one-liner to docs/progress.md under the feature
  • If this was a repeated failure or needed a workaround β†’ add to docs/learnings.md
  • Append one line to session/phase-log.md
  • Update session/summary.md

Step 8 β€” Git Commit Message

Provide one-liner commit message in this format:

fix([scope]): [what was broken and what fixed it] Examples: fix(auth): handle null session before calling fetchUser fix(dashboard): return empty array instead of null on no results fix(db): add missing RLS policy for users table select

Do NOT push to GitHub. Hand the message to the user.


Step 9 β€” Confirm with User

  • Show exactly what was changed and in which file
  • Show test results
  • Show commit message
  • Ask: "Confirmed fixed β€” ready to continue?"
  • Do NOT proceed until user confirms

Bugfix Decision Tree

Error occurs β”‚ β–Ό Read logs/errors.log β”‚ β”œβ”€β”€ Entry found β†’ go to Step 2 β”‚ └── No entry β†’ add logging first, reproduce error, then fix β”‚ β–Ό Check docs/learnings.md β”‚ β”œβ”€β”€ Known issue β†’ apply fix directly β”‚ └── New issue β†’ isolate β†’ fix β†’ document


Common Bug Patterns

Symptom Likely Cause Where to Look
Function returns null unexpectedly Missing null check on input The function's first few lines
Supabase returns empty data RLS policy blocking query Supabase Dashboard β†’ Policies
Auth token errors Session not refreshed auth handler file
Test passes locally, fails in CI Env var missing in CI .env setup + CI config
Infinite re-render in React useEffect dependency missing The specific component file
Type error at runtime TypeScript type not enforced at boundary Input validation of the function

What NOT to Do

  • Do not open the entire codebase to find the bug
  • Do not fix multiple bugs in one session without separate commits
  • Do not refactor while fixing β€” fix first, refactor separately
  • Do not skip updating the test file
  • Do not push to GitHub
  • Do not chain fixes β€” one bug, one fix, one commit