e92fd2d5a4
Two awareness loop bugs fixed: 1. Seed rotation never worked: dist/awareness.c was compiled from stale source (pre-fix awareness.el still had broken ts_minutes % 4). Compiled C showed `minute_block = (ts / 60000); EL_NULL; 4;` — minute_block was always ts_minutes (millions), never 0-3. if(minute_block==1/2/3) never matched. Fix: recompile from current awareness.el which has the correct modulo workaround: ts_minutes - minute_q4 (via + - / only). 2. Heartbeat/curiosity silent for 24h at 99% CPU: old design used idle-tick counting (idle_n >= beat_interval). Failed when perceive() inbox guard false-positives on "soul-inbox" substring matches in knowledge nodes — did_work=true every tick, idle_n never accumulated, neither signal fired. Fix: wall-clock elapsed time (time_now() - last_ts >= interval_ms). Heartbeat fires regardless of load. New SOUL_HEARTBEAT_MS env var (default 60000ms) avoids the broken EL * operator. Verified: heartbeat ISEs flowing at pulse 3 within 2 minutes of restart.