# Reflection: `||` vs `??` Falsy Coercion Bug

> Date: 2026-06-05 | Severity: P1 | Recurrence: 2

## Context
Cross-Agent Certification (PR-30) — Fleet score ranking. Using `order[status] || 6` for certification ranking.

## Root Cause
JavaScript `||` operator treats `0` as falsy. When `order["healthy"] = 0`, `order["healthy"] || 6` evaluates to `6`, pushing healthy agents to bottom of ranking instead of top. The certification result was reversed — healthy fleets got low scores.

## Fix
Changed `order[status] || 6` → `order[status] ?? 6`. Nullish coalescing (`??`) only triggers on `null`/`undefined`, not on `0`.

## Pattern Class
**JS/TS Falsy Coercion Trap** — `||` treats `0`, `""`, `false` as falsy. Use `??` for numeric/boolean defaults.

## Future Trigger
- Any JS/TS code writing numeric defaults
- Any ranking/scoring/ordering logic
- Any code with `value || default` where value can legitimately be 0

## Checklist
- [ ] Grep all `||` in scoring/ranking/ordering code → replace with `??` if value can be 0
- [ ] For all numeric defaults: `||` → `??`
- [ ] Add `||` vs `??` check to JS/TS Domain Checklist

## Recurrence Count
2 — previously hit in Agent Evolution FK index scoring (same pattern: `count || 0` skipped real zeros)
