| Add capitalize util | fast | failed | 4.0s | - | — | — | - |
| Add parseCsvLine util | fast | failed | 4.6s | - | — | — | - |
| Add memoize util | fast | failed | 3.8s | - | — | — | - |
| Add isValidEmail util | fast | failed | 3.8s | - | — | — | - |
| Add sortBy util | fast | failed | 3.9s | - | — | — | - |
| Convert config.json to env format | fast | failed | 3.8s | - | — | — | - |
| Add safeJsonParse util | fast | failed | 4.1s | - | — | — | - |
| Add readJsonFile util | fast | failed | 3.7s | - | — | — | - |
| Add retry util | fast | failed | 4.3s | - | — | — | - |
| Remove var keyword flagged by linter | fast | failed | 4.2s | - | — | — | - |
| Find and fix an event listener leak | hard-targeting | pass | 1m 47s | - | — | — | yes |
| Debug an off-by-one in binary search | harder | pass | 5m 44s | - | — | — | yes |
| Fix off-by-one in interval overlap detector | harder | pass | 50.8s | - | — | — | yes |
| Fix the async cache stampede | harder | pass | 1m 7s | - | — | — | yes |
| Rename `process` → `handle` across 4 files | harder | pass | 1m 54s | - | — | — | yes |
| Extract `validateAmount` from `submit` | harder | pass | 1m 1s | - | — | — | yes |
| Split src/store.js into store + selectors | harder | pass | 1m 44s | - | — | — | yes |
| Build a token-bucket limiter with exact semantics | harder | done | 8m 49s | - | — | — | yes |
| Implement formatDuration(ms) with strict spec | harder | pass | 1m 56s | - | — | — | yes |
| Implement deepEqual with cycle detection | harder | pass | 2m 7s | - | — | — | yes |
| Test the groupBy implementation | harder | pass | 3m 44s | - | — | — | yes |
| Test the flatten implementation | harder | pass | 1m 49s | - | — | — | yes |
| Test the debounce implementation | harder | pass | 4m 46s | - | — | — | yes |
| Debug an off-by-one in binary search | harder | pass | 10m 41s | - | — | — | yes |
| Fix off-by-one in interval overlap detector | harder | pass | 54.9s | - | — | — | yes |
| Fix the async cache stampede | harder | done | 1m 5s | - | — | — | yes |
| Rename `process` → `handle` across 4 files | harder | pass | 1m 6s | - | — | — | yes |
| Extract `validateAmount` from `submit` | harder | pass | 1m 12s | - | — | — | yes |
| Split src/store.js into store + selectors | harder | pass | 45.9s | - | — | — | yes |
| Build a token-bucket limiter with exact semantics | harder | pass | 13m 4s | - | — | — | yes |
| Implement formatDuration(ms) with strict spec | harder | done | 1m 3s | - | — | — | yes |
| Implement deepEqual with cycle detection | harder | pass | 1m 57s | - | — | — | yes |
| Test the groupBy implementation | harder | pass | 2m 40s | - | — | — | yes |
| Test the flatten implementation | harder | pass | 1m 59s | - | — | — | yes |
| Test the debounce implementation | harder | pass | 3m 6s | - | — | — | yes |
| Debug an off-by-one in binary search | harder | pass | 5m 46s | - | — | — | yes |
| Fix off-by-one in interval overlap detector | harder | pass | 1m 1s | - | — | — | yes |
| Fix the async cache stampede | harder | done | 57.3s | - | — | — | yes |
| Rename `process` → `handle` across 4 files | harder | pass | 1m 50s | - | — | — | yes |
| Extract `validateAmount` from `submit` | harder | pass | 1m 6s | - | — | — | yes |
| Split src/store.js into store + selectors | harder | done | 1m 4s | - | — | — | yes |
| Build a token-bucket limiter with exact semantics | harder | done | 13m 4s | - | — | — | yes |
| Implement formatDuration(ms) with strict spec | harder | done | 1m 28s | - | — | — | yes |
| Implement deepEqual with cycle detection | harder | pass | 2m 26s | - | — | — | yes |
| Test the groupBy implementation | harder | pass | 2m 54s | - | — | — | yes |
| Test the flatten implementation | harder | pass | 1m 56s | - | — | — | yes |
| Test the debounce implementation | harder | pass | 1m 28s | - | — | — | yes |