Files
foxhunt/docs
jgrusewski cfe57109e3 docs(sp4): revise spec — fix 8 critical issues from self-review
Self-review found multiple problems with the first draft. This revision
addresses all 8 critical issues:

1. P² parallelization claim was WRONG — P² is sequential.
   Replaced with dynamic-range histogram (3-pass single-block kernel:
   max-reduce → log-spaced bin → cumulative-from-top to find p99).
   256 bins → ~0.4% quantile precision; numerical-precision derivation
   in same theoretical-constant category as floating-point precision.

2. Bootstrap values had wrong magnitudes — used Xavier σ instead of
   p99 of max-element. Recomputed: WEIGHT_BOUND[group] = 2.33 ×
   √(2/K_in[group]); H_S2_BOUND = 2.33 × √2 ≈ 3.3. All bootstraps
   now from theoretical p99 under Xavier-init, not std.

3. EMA half-life of 700 steps (α=0.001) didn't converge in 5-epoch
   smoke. Revised α=0.005 (~140 steps) for weight/Adam producers —
   reaches ~99% convergence within one fold's training. Smoke now
   validates steady-state behavior, not just bootstrap.

4. Weight decay, L1 lambda, CLIP_MULTIPLIER were listed in scope but
   undesignable in producer-consumer pattern. CARVED OUT explicitly:
   weight decay + L1 λ → separate research-spec; CLIP_MULTIPLIER and
   MIN_CLIP subsumed by SP4's GRAD_CLIP_BOUND slot.

5. F0 ≥ 45 acceptance criterion was uncertain. Revised to F0 ≥ 37.5
   (matches the 1e30-effectively-unclamped diagnostic smoke). The
   ~8-point F0 variance from launch-scheduling-shift is independent
   of clamp value; SP4 cannot guarantee F0=45 even with ideal design.

6. Per-param-group p99 plumbing concretized: each producer takes
   (offset, length) launch args; main DQN params buffer sliced into
   trunk/value/branch using existing param_sizes layout knowledge.

7. Pre/post-clamp feedback loop EXPLICIT: producer runs BEFORE
   consumer for buffer-based clamps (h_s2, target_q, atom_pos —
   in captured graph immediately before clamp). Producer runs AFTER
   for in-kernel clamps (weights, Adam m/v — feedback loop accepted
   with documented soft-anchor dynamics). No more hand-waving.

8. Unit test strategy: per-producer kernel test with synthetic
   Gaussian input → known p99 ≈ 2.33 → assert |computed - 2.33|<5%.
   28 tests total. Catches algorithm bugs before L40S smoke.

Effort estimate revised UP: 3500-4500 LOC (from 2-3000), 1.5-2.5 weeks
(from 1-2). 28 producer kernels + 28 unit tests is more plumbing than
first draft assumed.

Self-review limitations section now explicit about: in-kernel feedback
loop accepted, smoke time-budget marginally validates Adam EMAs, F0
may not return to 45, Layer B atomic-flip risk, plumbing density,
stale-by-one-step bound, histogram-precision is design choice not
tuning, carved-out items remain hardcoded post-SP4.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 20:59:24 +02:00
..