jgrusewski
d8666a232f
docs(sp4): fix all 11 review findings — spec is now source of truth
Resolved every issue from the critical self-review:
1. Param-group count: 7 → 8 throughout. Slot total: 36 → 40 (8 groups × 3
per-group families = 24 + 16 single = 40). IQL high-tau and low-tau
are 2 distinct param groups (separate buffers + Adam states), not
one. The "(Resolved during implementation)" hand-wave deleted.
2. Reset semantics section rewritten — no longer references Xavier-
derived bootstraps. Sentinel 0 per Pearl A; Wiener-state triples
reset to 0 alongside ISV slots (160 reset entries total).
3-4. Weight decay and L1 lambda hardcoded α/bootstrap removed. Both
now follow universal Pearls A+D contract (sentinel-detect +
Wiener adaptive). For L1, the natural curriculum (λ ramps as
gradient differentiates) emerges from the signal itself, no
"Bootstrap = 0.0" constant needed.
5. ε naming collision resolved: ε_div = 1e-8 (Pearl D division-safety),
ε_clamp_floor = 1.0 (Pearl A consumer cold-start floor). Distinct
names, distinct purposes.
6. Per-signal kernel signature updated: removed stale `ema_alpha` arg,
added `wiener_state` pointer + `wiener_state_offset` + uniform
`alpha_meta` (structural meta-EMA constant).
7. Pearl C engagement counter race fixed. Replaced `clamp_engage_buf
[group] += 1` (race) with proper register-then-tree-reduce pattern
mirroring `dqn_grad_norm_kernel`. Per-thread register counter →
block-shared tree-reduce → single block-leader writes to
`clamp_engage_per_block_buf[engage_buf_offset + blockIdx.x]`.
Host sums across blocks. No atomicAdd, consistent with feedback.
8. Pearl D state buffer allocation spelled out: `wiener_state_buf:
MappedF32Buffer` of size 141 floats (47 slots × 3), per
`feedback_no_htod_htoh_only_mapped_pinned`. Reset-registry entries:
40 + 40×3 (new bound slots + Wiener triples) + 7×3 (retrofit
existing producers' Wiener states) = 181 reset entries.
9. `grad_norm_slow_ema` retirement spelled out in Layer C: removed
entirely (sole consumer Mech 6 migrates to ISV[GRAD_CLIP_BOUND]).
Also documented Q_ABS_REF=16 and H_S2_RMS_EMA=96 transition to
"monitoring-only ISV" — producers stay running, only the orphaned
Mech 1/2/5/6/9/10 consumer reads removed.
10. Histogram bin range fixed: linear-spaced bins from 0 to step_max
(avoids log(0) singularity from earlier log-spaced design).
Linear is also better for p99: top-of-distribution gets ~0.4%
resolution per bin. Degenerate "step_max == 0" branch handles
all-zero signals gracefully (skip ISV update, leave previous bound).
11. Pearl D-subsumes-Pearl-A claim CORRECTED: mathematically wrong.
At t=0, Pearl D's formula yields `x_mean[0] = 0`, not `x[0]`.
Pearl A's first-observation replacement requires an explicit
sentinel-detection branch in the producer. Both pearls are
necessary and complementary; they are not hierarchical.
Slot count math now consistent: 1 target_q + 4 atom_pos +
3×8 per-group + 1 grad_clip + 1 h_s2 + 8 wd_rate + 1 l1_lambda = 40.
Producer count: 15 fused (1 + 4 + 8 + 1 + 1).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 21:36:11 +02:00
..
2026-03-22 20:30:35 +01:00
2026-03-22 00:39:34 +01:00
2026-03-22 10:32:37 +01:00
2026-03-23 08:45:18 +01:00
2026-04-22 22:03:20 +02:00
2026-03-23 12:45:06 +01:00
2026-03-23 09:35:55 +01:00
2026-03-25 19:43:26 +01:00
2026-03-25 22:53:13 +01:00
2026-03-26 00:43:58 +01:00
2026-03-27 19:52:44 +01:00
2026-03-27 19:52:44 +01:00
2026-03-27 19:52:44 +01:00
2026-03-27 20:42:37 +01:00
2026-03-31 23:30:42 +02:00
2026-04-01 21:36:40 +02:00
2026-04-04 11:49:13 +02:00
2026-04-04 11:07:47 +02:00
2026-04-04 09:28:42 +02:00
2026-04-04 00:57:49 +02:00
2026-04-04 23:00:16 +02:00
2026-04-04 17:30:18 +02:00
2026-04-05 21:25:05 +02:00
2026-04-06 22:48:07 +02:00
2026-04-06 11:15:24 +02:00
2026-04-07 13:58:11 +02:00
2026-04-06 11:15:24 +02:00
2026-04-07 13:43:04 +02:00
2026-04-08 01:26:09 +02:00
2026-04-07 23:14:40 +02:00
2026-04-07 22:21:11 +02:00
2026-04-08 20:05:22 +02:00
2026-04-08 01:49:01 +02:00
2026-04-08 08:48:36 +02:00
2026-04-08 12:04:23 +02:00
2026-04-08 22:23:19 +02:00
2026-04-08 20:26:40 +02:00
2026-04-10 20:26:55 +02:00
2026-04-10 22:16:24 +02:00
2026-04-11 11:23:23 +02:00
2026-04-11 13:30:12 +02:00
2026-04-13 09:26:14 +02:00
2026-04-13 14:51:30 +02:00
2026-04-13 20:13:39 +02:00
2026-04-13 11:29:05 +02:00
2026-04-14 21:40:03 +02:00
2026-04-14 23:46:27 +02:00
2026-04-14 22:14:49 +02:00
2026-04-15 20:46:05 +02:00
2026-04-15 18:44:18 +02:00
2026-04-15 08:52:17 +02:00
2026-04-16 01:24:03 +02:00
2026-04-16 23:51:45 +02:00
2026-04-16 01:29:11 +02:00
2026-04-16 17:30:01 +02:00
2026-04-16 23:43:55 +02:00
2026-04-16 01:24:03 +02:00
2026-04-17 09:01:53 +02:00
2026-04-16 21:44:35 +02:00
2026-04-18 14:59:57 +02:00
2026-04-18 16:03:45 +02:00
2026-04-18 23:59:35 +02:00
2026-04-18 22:04:41 +02:00
2026-04-19 12:10:49 +02:00
2026-04-19 23:47:04 +02:00
2026-04-20 18:58:35 +02:00
2026-04-20 08:51:42 +02:00
2026-04-20 08:17:34 +02:00
2026-04-20 22:03:14 +02:00
2026-04-20 14:29:53 +02:00
2026-04-21 02:05:28 +02:00
2026-04-22 08:42:50 +02:00
2026-04-21 21:06:33 +02:00
2026-04-22 11:43:17 +02:00
2026-04-22 08:51:51 +02:00
2026-04-22 16:56:36 +02:00
2026-04-22 09:09:09 +02:00
2026-04-22 09:06:50 +02:00
2026-04-21 11:04:51 +02:00
2026-04-23 10:15:16 +02:00
2026-04-23 21:18:19 +02:00
2026-04-23 09:12:01 +02:00
2026-04-24 21:03:57 +02:00
2026-04-29 16:02:53 +02:00
2026-04-27 18:22:40 +02:00
2026-04-29 22:59:00 +02:00
2026-04-30 08:36:32 +02:00
2026-04-30 21:36:11 +02:00