docs: NEXT_PROMPT.md — session handoff prompt (post-24d state, priorities, environment hazards, control numbers)

This commit is contained in:
2026-08-24 09:48:29 +03:00
parent 135f0e9f21
commit 03777fdaee
+58
View File
@@ -0,0 +1,58 @@
# 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+).