DEBT-008 recommended metrics

TODO/FIXME count in codebase

TODO and FIXME comments are tracked as informal debt markers, with visibility into count and age.

Question to ask

"How many TODOs are older than your newest engineer?"

Pass criteria

  • TODO count known or easily queryable
  • TODOs have context (issue link, name, date)
  • Count stable or declining
  • Old TODOs periodically reviewed

Fail criteria

  • No visibility into TODO count
  • Hundreds of orphaned TODOs
  • Count growing unchecked
  • TODOs from 3+ years ago present

Related items

DEBT-001 Explicit tech debt list maintained section: 28, items: Code quality tools

Verification guide

Severity: Optional

TODO and FIXME comments are informal debt markers. Tracking them provides a signal of accumulated small debts.

Check automatically:

# Count TODOs and FIXMEs
grep -rE "TODO|FIXME|HACK|XXX" --include="*.ts" --include="*.tsx" --include="*.js" --include="*.jsx" --include="*.py" --include="*.go" --include="*.rb" . 2>/dev/null | grep -v node_modules | grep -v vendor | wc -l

# Show sample with context
grep -rn "TODO\|FIXME" --include="*.ts" --include="*.tsx" --include="*.js" --include="*.py" . 2>/dev/null | grep -v node_modules | head -15

# Check for eslint rule on TODOs
grep -riE "no-warning-comments|todo" .eslintrc* eslint.config* 2>/dev/null

# Look for TODO tracking in CI
grep -riE "todo|fixme" .github/workflows/ --include="*.yml" 2>/dev/null

Ask user:

  • "Do you track TODO/FIXME count?"
  • "Is there a policy?" (e.g., TODOs must have issue links, max age)
  • "Are old TODOs ever cleaned up?"

Patterns to watch for:

Pattern Concern
TODO with no context Unknown scope, never gets done
FIXME with no issue link Not tracked, will be forgotten
HACK or XXX Known bad code, technical debt
Ancient TODOs (years old) Dead comments, noise

Pass criteria:

  • TODO count known or easily queryable
  • TODOs have context (issue link, name, date)
  • Count is stable or declining over time
  • Old TODOs periodically reviewed

Fail criteria:

  • No visibility into TODO count
  • Hundreds of orphaned TODOs with no context
  • Count growing unchecked
  • TODOs from 3+ years ago still present

Cross-reference with:

  • DEBT-001 (TODOs are informal debt; formal list is better)
  • Section 28 (Code quality tools)

Evidence to capture:

  • TODO/FIXME count
  • Sample of oldest TODOs
  • Whether policy exists
  • ESLint rule configured

Section

40. Technical Debt Tracking

Team & Development