docs: full documentation refresh post-24kk2 — README status (application decoded to formulas, dual 0.193), AGENTS phase header + env-flags/tools tables, NEXT_PROMPT rewrite (cascade simulator + campaign recipes), PLAN/roadmap gate=BIT EXACT decision recorded

This commit is contained in:
2026-08-25 12:18:32 +03:00
parent 0fee9238dc
commit f365fa8451
5 changed files with 175 additions and 95 deletions
+44 -33
View File
@@ -10,54 +10,65 @@
---
## Статус (P5, 2026-08-22)
## Статус (24kk2, 2026-08-25)
**Цель — bit-exact реверс.** Декомпиляция DSP-ядра закрыта (~95%): twin-резонатор,
генератор case8, level-path, mask-apply (FUN_180529fe0), FFT-conv — расшифрованы;
дизассемблы в `handoff/nls_dasm/` (~140).
**Цель — bit-exact реверс** (гейт смены канона зафиксирован пользователем: только
после прослеживания всех параметров до декомпа и схождения корпуса в шумовой пол).
Декомпиляция DSP-ядра закрыта (~95%); дизассемблы в `handoff/nls_dasm/` (~140).
**Активный канон — C++ `FramedDetector`** (`dsp/framed_model.cpp`): структурная цепь
**Применение декодировано до формул** (сессия 24j…24kk2):
```
level=am*res*scale -> IIR1/IIR2 leaky -> mask=exp2(-level)*blend -> combine/acc
-> warp(mask*=0x540768, *=warp) -> IIR3x2 -> dry/wet -> FFT-conv
mask(b) = 10^(cut_D(b)/20) ← вещественная, per-bin multiply кадра
cut_D(b) = α·ln(1+lvl_raw(b)/β)+c [+Δ у вторых пиков]
lvl_raw = am/res·scale (наш детектор-фронтенд, float-parity ✓)
слой = STFT БЕЗ синтез-окна (RT_SYN=1)
```
- **Level-tracker = би-направленный leaky-IIR** `y=A[i]·acc+B[i]·x` (B=1A), live-таблицы
в `dsp/rt_mask_tables.{hpp,cpp}`, `dsp/rt_weights.{hpp,cpp}`.
- **Корпус (62 случая)**: bridge mean 1.594 dB; структурная цепь TOTAL 2.286,
но comb **6.12** и res **0.44** — лучше bridge.
Калибровки формы (три независимых семейства, rms ≤0.016 дБ): α/β/c зависят от
контента (α удваивается с числом тонов — частотное смешение шаблонно-локальное),
q НЕ влияет на закон, sens входит линейно через lvl_raw.
### Главное за 2026-08-21…22 (сессии 21a22i)
- **dual-семейство решено**: корпус 22 случая **mean 0.193 / max 0.438 dB**
(канон 3.264). Флаги: `RT_VLAW=1 RT_SYN=1 RT_NOWARP=1 RT_NOIIR3=1 RT_IIR12=0`.
- **Канон не тронут**: TOTAL 2.286 (env-gated эксперименты живут рядом).
- **Буфер FIR@540668** = промежуточное мин.-фазовое представление
(`exp(si·H(s))`, Гильберт по частоте) — аудио слышит `exp(scratch)` напрямую.
- **Тела bigkernel'ов найдены** (рантайм-резолв IAT): 1803a06a0 / 180296c80 /
180323f20 / 1802dc0e0 — x87-трансценденты (exp-семейство).
1. **«LUT-кривая» FUN_180563440/563a60 — GUI-only!** Весь кластер кривых питается от
GUI-timer vtables; аудио-метод FUN_180529fe0 BandConfig не читает (22b). Live BandConfig
у всех конфигов одинаковый: A=24/B=28/γ=1. LUT-константы в модели помечены EMPIRICAL.
2. **Пол редукции найден живьём и решён алгебраически** (22d/e): hot-тон упирается в жёсткий
пол gain=20.72 dB = `20·log10(blend·ln10/20)` с точностью 0.0055 dB;
`floor_dB(sens) ≈ 18.78 (sens6)/3` (якорь sens6 = ln10/20 ровно).
3. **Разрыв локализован в детекторном фронте** (22g/i): модель теряет ×2.8 уровня на
изолированных пиках (lvl_raw 3.01 → 1.06 после IIR1-разведения), реальный плагин
доводит пост-IIR lvl до ~3.12. Не форма кривой — амплитудная цепочка am/res/scale.
4. **Инфраструктура**: официальный параметр-мост REAPER (`setparam.lua`/`dump_params.lua`),
XML `<PARAM>` в RPP = декоративная копия; live-capture BandConfig (`scripts/step7_capture.py`);
env-солверы констант (`RT_LUT_A/B/G/MULT`, `RT_LUT_OFF`, `RT_LVL_CAP`).
5. Оффлайн-гипотезы Phase B (pooling/temporal/scalar-ρ) — все опровергнуты (22a);
clipping-теория пола опровергнута (float-домен, 22g); mix = чистый dry/wet кроссфейд.
### Главное за 2026-08-24…25 (сессии 24j24kk2)
1. **Применение = побиновный complex-multiply кадра** на маску; «магический ×1.805»
оказался произведением экспонент стадий построения буфера (0.984×1.8345).
2. **Закон уровня универсальной формы** `α·ln(1+L/β)+c` — подтверждён тремя
независимыми калибровками; константы зависят от контента (число тонов) и слабо от fc.
3. **Слой STFT**: плагин НЕ домножает выход обратного FFT на окно
(`RT_SYN=1`); WIN_WINDOW движка — фейд 0.5→0.8 ровно за 2049 сэмплов (=бинам кернела).
4. **GUI/аудио разделение**: LUT-строитель FUN_180563a60 — GUI-ветка; аудио-компрессия
живёт в семантиках шагов 9–19 BLOCKMAP.
5. **Dataflow шагов 9–16 декодирован**: vec6f8=bandsACC; fma тройками
(re,im,coef) с ATT/REL; th2000=поэлементное умножение массивов (не axpy!);
шаг 12=COPY (исправлен старый BLOCKMAP).
6. **Инструменты**: rendersnap2 v7 (мягкий STOP-снаппер со слотами+скалярами,
RENDER_FILE-фикс), patchparam.py (правка VST-чанка RPP!), campaign.py
(ячейка параметризации), disasm_func.py (capstone с RIP-константами),
iat_name.py (рантайм-резолв импортов через PE-экспорты).
```bash
# Канон сборки и рендера:
# Сборка и канонные команды:
cmake -S dsp -B dsp/build && cmake --build dsp/build --target framed_test render48k
./dsp/build/render48k /home/m/soothe-bt/tone1kq.wav /tmp/o48.wav 1000,0.99999785,12
python3 scripts/corpus_structural.py --vs-bridge scripts/baseline_bridge.json
```
Детальная метрика и история — в `AGENTS.md`, `BITEXACT_PLAN.md`, `handoff/NOTES_LEVEL.md`
(апдейты 20j…22i).
(апдейты 20j…24kk2).
### Открытые bit-exact пробелы
**Приоритет №1 — детекторный фронт**: амплитудная нормировка am, форма res_k, сила
IIR1/2 вдоль частоты (модель теряет уровень на пиках). Далее: PRNG-пролог (LCG→fVar30),
FFT-conv сглаживание, бит-экзактный exp2, combine/acc консюмер, SR-mismatch
(внутренний DSP 48000/N=4096 против хоста). Полный список — `AGENTS.md`, `BITEXACT_PLAN.md`
(Шаг 9), `NOTES_LEVEL.md`.
**Приоритет №1 — каскадный симулятор шагов 9–19**: dataflow декодирован
(24hh/24ii: vec6f8=bandsACC, fma-тройки att/rel, ×track, ×warp, центрирование −1),
тела bigkernel'ов найдены по рантайм-адресам — осталось сложить оп-за-опом и
проверить на датасетах sc_* (rms каскада сейчас ~0.42 на угаданных формах).
Далее: k-маппинг фронтенда (twin/am формулы), Δ-правило вторых пиков из pre-combine.
Полный список — `AGENTS.md`, `BITEXACT_PLAN.md`, `NOTES_LEVEL.md` (24bb→24kk2).
> Исторический блок (поведенческая/численная модель B.1…B.15, `framed_render.py`,
> Pchip LUT, res_power) — см. `roadmap.md`; самодостаточен как справочник, но не канон.