ARCHIVED [experiment over]: An AI agent built to do Ralph loops - plan mode for planning and ralph mode for implementing.

fix(web): address Phase 4 code review issues (C1, I1, I2, M1, M2) master

- C1: Fix async effects in Dashboard/ProjectList/ProjectDetail Replace $effect(async () => {...}) with sync $effect reading reactive deps, then call separate async function (Svelte 5 doesn't support async in $effect) - I1: Extract duplicate formatDate to web/src/lib/date-formatting.ts Import from ProjectList.svelte and ProjectDetail.svelte - I2: Parallelize API calls in Dashboard using Promise.allSettled Fetch goals for all projects in parallel, then fetch agents in parallel - M1: Remove unused ActiveAgent type import from Dashboard.svelte - M2: Fix handleDecisionClick in ProjectDetail to extract goal ID Use decisionId.split('.')[0] to get goal ID from hierarchical node ID Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>