🎉 init: 小龙的工作空间
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user