# Chantier 3 — GDN prefill sur HTP
Skel gated-delta-net-ops.c:98 boucle sur n_tokens. Gate 2284 leve (test) -> pp512 50->55 MAIS sortie CHARABIA ("He thef% sur"). Kernel scalaire pas bit-correct au prefill (handoff etat S faux multi-token). +11% INVALIDE. Defaut remis CPU (GGML_HEXAGON_GDN_PREFILL=1 = opt-in test only). Vrai B-2 = corriger recurrence/etat + HVX chunkwise, bit-exact = semaines, aide partielle. Etape acquise: gate localise, kernel a fixer identifie. Pas de gain livrable.

## Diag: decode-HTP correct, prefill-HTP charabia = handoff multi-token (PAS GQA)
4B decode GDN-HTP gere num_v=32>num_k=16 -> GQA OK. Charabia uniquement prefill n_tokens>1 = layout/etat inter-token. Lead briques 4B_bug (block-repeat) = leur runtime, ici non transferable. Fix = dump HTP vs CPU par token (briques: ~5h bisection), zone scan bit-exact aide partielle. Defaut reste CPU (correct, prefill 50). B-2 = tache R&D suivie, pas patch aveugle.

## Harness dump: FARF non capte par logcat -> sink DSP dedie requis (briques ~5h)
Instrumente FARF GDNDUMP, mais logs DSP hors logcat sans ADSP_FARF config. dump bit-exact = vrai dump dans dst buffer + ref ggml = chantier multi-h. Instrument retiree, lib propre. Default CPU. B-2 = R&D suivie, pas a finir a chaud. Produit pret: prefill 50 CPU correct / decode 13.

## FIX bit-correct: GQA broadcast (resolu)
Cause: kernel HTP lisait h jusqu'a num_v_heads(32) sur q/k=16 tetes -> hors-tete = charabia. CPU ref ops.cpp:10466 fait iv1%neq1 / iv1%nek1 (interleaved). Fix gated-delta-net-ops.c: hq=h%q_t->ne[1], hk=h%k_t->ne[1] sur q/k/g/beta, v=h. Resultat: sortie coherente (avant 'He thef% sur'), prefill pp512 50->58 t/s (+16%) GDN sur HTP. Decode inchange CPU 13. B-2 etape 1 DONE bit-correct scalaire. Suite: HVX chunkwise pour >58.
