Files
soothe2-re/handoff/NEXT_PROMPT.md
T

59 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PROMPT FOR NEXT SESSION (2026-08-24, после 24d)
Продолжаем bit-exact реверс soothe2 в /home/m/re-tools (ветка main, HEAD 135f0e9).
ПРОЧИТАТЬ ПЕРВЫМ: AGENTS.md → handoff/NOTES_LEVEL.md обновления 23d24d
(прорыв и смена парадигмы) → BLOCKMAP_529fe0.md + приложение 23b.
Не опираться на roadmap-разделы про Шаги 7/9 и на вывод 23k «build-once» —
он ОТЗЫВАН в 24c.
СОСТОЯНИЕ КАНОНА: не тронут — голая цепь 48k/4096 + RT_LAWAFFINE=7.4,1.85,
TOTAL 1.931 (bridge-гейт 1.594 не пройден).
Отвергнуто и НЕ возвращаться: скалярные законы A/S, двухфакторные quad/resrp,
точечные lvl=f(am,res^α) [22x теорема], спрединг IDFT→окно→DFT как
постобработка [22z], плоский IIR [22u], симметричная log-свёртка [23c].
ГЛАВНЫЙ ПРОРЫВ СЕРИИ (23d–23e, живые снапы rendersnap.py):
bands[] = сырой спектр кадра → log(DESIGN 0x1802a24c0) → ops → scratch@540628
→ FIR@540668 = exp(0.984·scratch) поточечно; окно = падающая половина
периодического Hann(4096) на [n/2..n); применение = свёртка ×1.805 (EMPIRICAL,
константа по всем 4 точкам ±0.5%). Центр не зависит от q живьём;
Δскайрт сходится в 3%. q-серия снята (NOTES 23f).
ПРИОРИТЕТ №1 — потребитель кернела и источник ×1.805:
Conv-движок опознан: объект ctx+0x540530 (inline-cfg {2,4096},{16384,8192},
{2,257}; векторы +0xb8..+0x130; методы dc30 cfg / fe00 resize / dd30 dtor —
прямые вызовы из init 52e9b0). Его PROCESS-метод не найден: все 390 disp32-
ссылок на таблицу слотов учтены, скрытых нет (23h).
Пути: (а) отладить scan2.py (лежит в /tmp/opencode, НЕ закоммичен; баг:
тот же алгоритм что rendersnap.py даёт пусто — сравнить пошагово);
(б) декод аудио-клея 52exx–52fxx + поиск caller'ов vtbl+6 у соседнего
экземпляра (гипотеза GUI/DSP-пары, 24c);
(в) INT3-ловушка на тела дизайна в param-окно (~1.401.45 c жизни хоста)
при ГАРАНТИРОВАННО свежем рендере (render_fresh в логе обязателен!).
ИНСТРУМЕНТЫ: scripts/rendersnap.py (рабочий канал наблюдения — STOP-семпл
офлайн-рендера), qseries.py, amseries.py (нужен фикс стабильности фаз),
ilt_resolve.py, fnexec.py (early-arm HW exec-bp), perfbp.py (только native),
fnwatch4.py (дисциплина армирования: INTERRUPT→wait→arm→CONT каждому треду).
Сборка: touch dsp/framed_model.cpp && cmake --build dsp/build --target render48k
framed_test (TOOLING HAZARD — touch обязателен). Метрика только честная:
render_parity.load (24-bit!), Гёрцель по последним 0.75 c.
СРЕДА (грабли, всё проверено болью):
- HW-ловушки внутри wine НЕВОЗМОЖНЫ: wine держит BP-слоты (perf ENOSPC),
ptrace-DR пишется в task_struct но не программируется в кремний [24a];
- yabridge: сотни мёртвых сокет-директорий /run/user/1000/yabridge-* ломают
спавн хоста — rm -rf перед серией; pkill -f самоубийственно для шелла;
- kill reaper во время рендера оставляет ЧАСТИЧНЫЙ wav с полной шапкой
(источник «флака»); realtime-playback мёртв (нет аудио-девайса);
- выход рендера длиннее входа из-за LOOP=1 (выравнивание сегментов обязательно).
КОНТРОЛЬНЫЕ ЧИСЛА dual_b1q_0.5: cut@500=10.32 дБ (константен ∀q),
cut@2000=11.82; Δcut скайрта ≈ линейно по −ln res (b≈2.25 дБ/e-fold).
Цель раунда: опознать потребителя кернела → декодировать ×1.805 → начать
RT_FIRCONV=1 (обработка покадровая — 24c; кернел перестраивается каждый кадр,
ловушки на цепь молчат из-за wine-слотов, см. 24a). Корпус с гейтом
--vs-bridge после любого изменения C++. Коммитить по подшагам; факты в
NOTES_LEVEL (следующий номер UPDATE 24e+).