23d: BREAKTHROUGH — live kernel captured via SIGSTOP sampling of offline render (rendersnap.py); bands[] input to DESIGN is the raw per-frame signal spectrum (Hann lobes at tone bins only!), captured FIR shows skirt cut deeper than center exactly as real output (0.473@2000 vs 0.524@500) despite R-curve claiming otherwise; am/res structure confirmed with twin template as divider; recipe for exact ops formula next round

This commit is contained in:
2026-08-23 22:11:33 +03:00
parent 0a45661a25
commit 3a0a38467b
2 changed files with 232 additions and 0 deletions
+40
View File
@@ -2287,3 +2287,43 @@ DESIGN ≠ захваченные кривые (768/788/7f8 — возможно
ПОЯВЛЕНИЯ pid (ppid=reaper, comm ещё 'wine'), INT3 на 0x1802a24c0/0x1802fa420,
CONT, дамп rcx/rdx на хите (скрипт fnall.py готов, нужен только ранний захват —
нынешний finder по maps опаздывает на init-бурст <5 мс).
## ============ UPDATE 2026-08-23h (23d): ПРОРЫВ — ЖИВОЙ КЕРНЕЛ СНЯТ, bands[] = СПЕКТР СИГНАЛА ============
Маршрут A удался БЕЗ ptrace и БЕЗ аудио-девайса: **SIGSTOP-семплирование
офлайн-рендера** (`-renderproject`; обработка back-to-back ⇒ случайные остановки
попадают внутрь конвейера). scripts/rendersnap.py: find-loop ctx (vtable-маркер
0x1824AC210 / float 48000+ sens; ctx=0x2370040 стабилен и в рендере),
затем STOP→читаем все слоты→CONT c детекцией изменений. 24 фазы за прогон.
### Решающие факты из phase-снапов (dual q=0.5)
1. **bands[0] @ctx+0x540678 = АМПЛИТУДНЫЙ СПЕКТР ТЕКУЩЕГО ФРЕЙМА**:
ненулевые группы ТОЛЬКО вокруг тонов (бины 41–45 и 168173, Hann-лепестки;
band[43]=7.65, band[171]=9.91), между ними нули. Это вход DESIGN, НЕ шаблон
маски и НЕ пост-детекторная кривая!
2. scratch@540628 ≈ log(bands)·k (после ops значения −0.66@43, 0.76@171).
3. Живой FIR@668 (комплексные пары): mag(43)=0.524 (5.61 дБ), mag(171)=0.473
(**−6.51 дБ**) — скайрт режется ГЛУБЖЕ центра, КАК В РЕАЛЕ (+1.5 дБ),
хотя кривая R@7f8 утверждает обратное (R171=1.41<R43=3.98).
4. Количественно из снапа: cut≈A+S·log2(am/res) с res(43)=1.0, res(171)=0.839
(twin-шаблон из таблицы 22x!) даёт согласованную пару — **структура
am/res ПОДТВЕРЖДЕНА, но входом служит сырой спектр сигнала**, а res-шаблон
полосы входит делителем (где именно в цепи ops A-D — осталось залочить).
### Почему раньше «не ловилось»
- realtime без аудио-девайса не вызывает process вовсе (alsa_outdev пуст!);
- в render-mode инстанс создаётся ~через 0.3 c после host-spawn: ранняя остановка
ловит нулевую фазу (первые 12 «хитов» были ей);
- после создания экземпляра кернел живёт в непрерывном перестроении — STOP-цикл
читает его спокойно.
### Следующий раунд (рецепт готов, данные добываются rendersnap.py за минуту)
1. Прогнать rendersnap на dual q∈{0.1,1,3,10} + t1kq + al: собрать пары
(bands, scratch, FIR) → восстановить точную формулу ops (ожидаем exp(log·K)
со сглаживанием/варпом res-шаблона; проверить FIR vs exp(scratch)).
2. Объяснить абсолютную глубину (снап даёт −5.6/−6.5 против реала 10.32/11.82):
кандидат — нестационарность кадра (attack-фаза) или повторное применение.
3. Транскрипция kernel-build за RT_FIRCONV=1 → контрольные числа dual → гейт.
4. reaper.ini: alsa_outdev/indev=null прописаны (бэкап /tmp/opencode/reaper.ini.bak)
— realtime колбек всё равно не ожил (cpu 0.2 t/s), вопрос закрыт в пользу
render-snap метода.