Files
soothe2-re/handoff/NEXT_PROMPT.md
T

75 lines
4.8 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-25, после 24kk2)
Продолжаем bit-exact реверс soothe2 в /home/m/re-tools (ветка main).
ГЕЙТ СМЕНЫ КАНОНА = BIT EXACT (решение пользователя): все параметры
прослежены до декомпа + корпус в шумовом пол. До тех пор канон не трогаем.
ПРОЧИТАТЬ ПЕРВЫМ: AGENTS.md (фаза-заголовок 24kk2 + env-флаги + инструменты)
→ handoff/NOTES_LEVEL.md обновления 24j24kk2 → BLOCKMAP_529fe0.md
(дополнения 23b/24l/24hh/24ii).
## СОСТОЯНИЕ
ПРИМЕНЕНИЕ ДЕКОДИРОВАНО ДО ФОРМУЛ:
```
mask(b) = 10^(cut_D(b)/20) вещественная, per-bin multiply кадра
cut_D(b) = α·ln1p(lvl_raw(b)/β)+c [+Δ вторые пики]
lvl_raw = am/res·scale наш фронтенд, float-parity ✓
слой = STFT БЕЗ синтез-окна RT_SYN=1
```
Калибровки (rms ≤0.016 дБ):
```
dual fc500 q0.5 s12 ДВА тона : α=3.2193 β=0.4927 c=+0.54
fc1000 q0.5 s12 ОДИН тон : α=1.6151 β=0.3645 c=+0.48
fc500 q0.5 s12 ОДИН тон : α=1.1530 β=0.4038 c=+0.33
```
Корпус: dual **0.193 max 0.438** с флагами `RT_VLAW=1 RT_SYN=1 RT_NOWARP=1
RT_NOIIR3=1 RT_IIR12=0`. Канон TOTAL 2.286 нетронут.
ОТЗЫВАНО И НЕ ВОЗВРАЩАТЬСЯ: ×1.805-свёртка [23e], OLA-нормировка [24i],
двухстадийный γ₀ как множитель закона [24m — это артефакт двух тонов],
клампы параметров [24dd], B∝am [24bb], axpy-семантика th2000 [24ii — это
array-multiply], «acc_i += bands[i]» шага 12 [24gg — это COPY].
## ЗАДАЧА №1: каскадный симулятор шагов 9–19 (оп-за-опом)
Dataflow декодирован (BLOCKMAP 24hh/24ii):
```
vec698 *= (xmm12[54087c]) ; обнуление при дефолтах
vec6f8 += 0.8 ; базовая линия
bigkernel(vec6f8, bands_i, vec6f8)
vec6f8 = bands_curve ACC_i ; COMBINE (dc40: out=rdxr10)
f6f8_верх += ATT[k]·ACC[k]; низ += REL[k]·ACC[k] ; тройки re/im/coef
COPY(...) ; шаг 12 = memcpy!
bands += (1.0); bigkernel in-place ; центрирование+нелинейность
bands *= track_i; bands *= kWarp ; th2000 = array-multiply
IIR4 ×2; финальные scale/op
→ bands[i] → design log → scratch → FIR → audio multiply exp(scratch)
```
Тела bigkernel'ов по рантайм-адресам: 1803a06a0/180296c80/180323f20/1802dc0e0
(x87 exp-семейство). Коэффициенты IIR-генератора 533340 исправлены
(насыщающая форма arg=|c|·g/n; p=[54087c]=1, mult=360, C=1000).
Метод проверки: собрать симулятор в Python (numpy), прогнать lvl_raw из
tract_* через каскад, сравнить с deepest-scratch кривыми sc_* — rms < 0.05 дБ
= замкнулось. Затем перенос в C++.
## ЗАДАЧА №2: параметризация α(контент)/fc
α удваивается с числом тонов (частотное смешение шаблонно-локальное —
далёкий тон не влияет, 24ll). Инструмент: scripts/campaign.py (ячейка ≈8 мин).
Двухтональная дистанционная серия уже снята (sc_d*, инверсия не сошлась —
нужен каскад из Задачи №1 сначала!).
## СРЕДА (грабли, всё проверено болью)
- rendersnap2.py: RENDER_FILE брать ИЗ rpp (клоны наследуют путь — однажды
перезаписали реф); каталоги снапов задавать уникальные (argv[3]).
- touch+mtime перед каждым замером (same-second cmake hazard).
- tone1k.wav громче dual.wav в 2.28× — при сравнении серий учитывать.
- Свип НЕ годится для Y/X-отношения; только мультитон/мультиуровень.
- Динамика V(t)↔g(t) на рампе не сходится — пары только из стационара.
- HW-ловушки под wine невозможны (wine держит слоты); INT3 требует
дисциплины fnwatch4 и ГАРАНТИРОВАННО свежего рендера.
- Метрика только честная: render_parity.load / Гёрцель последних 0.75 c.
- Коммитить подшагами; факты → NOTES_LEVEL (очередной номер 24ll+).