23a: docs sync to post-22z state — AGENTS header/open-gaps/key-files and BITEXACT_PLAN entry-point updated: priority #1 = bands[] input semantics (static decode of conv body or in-callback trace), canon stays LAWAFFINE 7.4/1.85 TOTAL 1.931, refuted branches documented
This commit is contained in:
@@ -4,11 +4,14 @@ Bit-exact реверс DSP-ядра oeksound soothe2 (VST3) → транскри
|
||||
Полное журналирование — в `handoff/NOTES_LEVEL.md`, `handoff/NOTES_TWIN.md`,
|
||||
`handoff/NOTES_CAPTURE.md`, `roadmap.md`.
|
||||
|
||||
> **Текущая фаза: bit-exact НЕ достигнут** — dB-параллель двумя канонами: bridge
|
||||
> (корпус mean 1.594 dB, comb 10.1) и структурная цепь FUN_180529fe0 на 48k/4096
|
||||
> (comb **6.12** — уже лучше bridge; однополосные хуже; разрыв = насыщение кривой
|
||||
> редукции). Путь к байтам — в `BITEXACT_PLAN.md` (8 шагов, пере-скоуп Шага 2).
|
||||
> ЭТОТ ФАЙЛ ЧИТАЙ ПЕРВЫМ. Bridge — запасной канон; структурная цепочка — целевая.
|
||||
> **Текущая фаза (2026-08-23, после 22z):** канон = структурная цепь 48k/4096 с
|
||||
> RT_LAWAFFINE=7.4,1.85 (TOTAL 1.931; bridge 1.594 — гейт не пройден). ГЛАВНЫЙ
|
||||
> ОТКРЫТЫЙ ВОПРОС — семантика входов `bands[]` детектора: доказанно НЕ поточечная
|
||||
> функция от (am,res^α) [22x], не форма-постобработка [22w], не спрединг
|
||||
> IDFT→окно→DFT [22z]. Живая кривая редукции R=1/mask захвачена (слот 0x5407f8,
|
||||
> dualtrace.py), но применённый фильтр ≠ её поточечной копии — механизм живёт ДО
|
||||
> кривой (twin-шаблон/скалярный драйв). Журнал: NOTES_LEVEL 22s–22z; карта метода:
|
||||
> handoff/BLOCKMAP_529fe0.md. ЭТОТ ФАЙЛ ЧИТАЙ ПЕРВЫМ.
|
||||
|
||||
## Золотое правило (обязательно)
|
||||
1. **Цель — bit-exact реверс кода**, НЕ эмпирическая подгонка кривых. Каждый параметр
|
||||
@@ -102,18 +105,19 @@ scale → LUT level-domain (t^γ·MULT, γ=0.344 decomp / MULT=4.2 placeholder)
|
||||
CMAX) не закрывает тон+шум одновременно → res/dual регресс у любой точки; ищем
|
||||
контент-зависимый механизм. Инструментарий RT_DUMP_BIN / RT_DUMP_ALL в коде (opt-in).
|
||||
|
||||
### Открытые bit-exact/структурные пробелы (см. NOTES_LEVEL.md)
|
||||
1. Насыщение кривой редукции (см. выше) — приоритет №1.
|
||||
2. `combine/аккумулятор 0x5407c8`: семантика декодирована (21b), но acc/f6f8 НЕ имеют
|
||||
однополосного консюмера — искать точку потребления (межполосный каскад). ВНИМАНИЕ:
|
||||
`FUN_1805316e0` = writer коэффициентов, НЕ комбинер масок.
|
||||
3. ~~BandConfig `ctx+0x188` A/B/γ — противоречие между сессиями~~ **РАЗРЕШЕНО
|
||||
(22b): live = −24/28/1 у ВСЕХ конфигов, но весь кластер FUN_180563440/563a60 —
|
||||
GUI-timer only; аудио-путь (FUN_180529fe0) BandConfig не читает. Шаг 7 в исходной
|
||||
постановке опровергнут; LUT-константы структурной цепи помечены EMPIRICAL.**
|
||||
4. PRNG-пролог (LCG+LUT → fVar30) — залочен (fVar30=1 при live state 112), dry/wet rnd импорт.
|
||||
5. Бит-экзактный exp2 (0x26b820); FFT-conv понижен до P3 (окно near-flat, NOTES:18c);
|
||||
SR-геометрия 48k/4096 сделана (render48k).
|
||||
### Открытые пробелы (после 22z; детали — NOTES_LEVEL 22s–22z)
|
||||
1. **Семантика входов `bands[]` в FUN_180529fe0** — главный вопрос. Отвергнуто:
|
||||
lvl=f(am,res^α) с единым законом [22x, теорема], форма-постобработка маски [22w],
|
||||
спрединг IDFT→окно→DFT [22z]. Живой захват: кривая редукции R=1/mask @слот
|
||||
0x5407f8 (пик следует за fc полосы), acc/f6f8 нули в стационаре.
|
||||
Пути: (а) декод тел conv 0x1802a24c0 + complex-op шагов с буферами
|
||||
0x540548/550/598; (б) синхронная трасса буферов в аудио-колбеке.
|
||||
2. dual-таблица по q (22x): cut@центра константен при любом q, Δcut скайрта ≈
|
||||
линейно по −ln res с b≈2.25 — геометрия twin-шаблона на сетке 0.25 Гц.
|
||||
3. FFT-conv: последовательность вызовов декодирована (BLOCKMAP/22z), тело
|
||||
0x1802a24c0 (AVX2) и complex-op шаги — не расшифрованы.
|
||||
4. Бит-экзактный exp2 (0x26b820); бит-точная DSP-FFT (P3); стерео M8 (P5) — отложены.
|
||||
5. Источник констант RT_LAWAFFINE A/S в декомпе не найден (помечено EMPIRICAL).
|
||||
|
||||
## Структура ключевых файлов
|
||||
- `dsp/framed_model.{cpp,hpp}` — C++ порт mask-apply цепи: bridge-канон + структурная
|
||||
@@ -128,6 +132,10 @@ scale → LUT level-domain (t^γ·MULT, γ=0.344 decomp / MULT=4.2 placeholder)
|
||||
- `handoff/nls_dasm/` — 134 дизассембла декомпа.
|
||||
- `/tmp/consumers_out.txt` — полный decomp `FUN_180529fe0` (уникален, вне git).
|
||||
- `/tmp/snap_rt.bin` — live-снимок (ctx 0x2370040, SR 48000).
|
||||
- `handoff/BLOCKMAP_529fe0.md` — полная блок-карта FUN_180529fe0 по raw asm (22v).
|
||||
- `scripts/lawfit22r.py` — офлайн реплей-сим пайплайна (~2 c корпус), фиты законов.
|
||||
- `scripts/resalpha.py` — сбор трактов + теорема об отсутствии α (22x).
|
||||
- `scripts/dualtrace.py` + `play_loop.lua` — живой захват ctx при realtime-playback (22y).
|
||||
|
||||
## Чистая работа
|
||||
- Не коммитить: `*.bin`(дампы 112М), `*.wav/rpp`, `*.log`, `dsp/build/`, `ghidra-proj/`,
|
||||
|
||||
+25
-15
@@ -18,6 +18,13 @@ comb 10 dB). Bit-exact ДОСТИЖИМ (F0 gate: плагин байт-дете
|
||||
> декоративная копия (не источник стейта); depth=±18dB/trim=±24dB; WAV bext/junk
|
||||
> грабли подтверждены живьём.
|
||||
> Новый приоритет №1 — Шаг 9 (ниже).
|
||||
>
|
||||
> **ОБНОВЛЕНИЕ 2026-08-23 (сессии 22s–22z):** Шаг 9 закрыт иначе — пол решён
|
||||
> алгебраически ещё в 22e; фронт сместился. Отвергнуты: скалярные законы A/S
|
||||
> (насыщение ~1.87–1.93, 22s/t), двухфакторные quad/resrp (22t), точечные
|
||||
> lvl=f(am,res^α) — «теорема об отсутствии α» (22x), спрединг IDFT→окно→DFT (22z).
|
||||
> Новый приоритет №1 — семантика входов `bands[]` (см. AGENTS.md и NOTES_LEVEL
|
||||
> 22s–22z); карта метода — handoff/BLOCKMAP_529fe0.md.
|
||||
|
||||
Цель фазы C (bit-exact): воспроизвести `FramedDetector` (= fn `FUN_180529fe0` mono-path)
|
||||
настолько точно, что `verify_bit_exact.py` даёт побайтовое совпадение на рендерах
|
||||
@@ -232,18 +239,21 @@ NOTES 22e) ⇒ пол живёт в другом куске аудио-пути.
|
||||
|
||||
## 4. Точка входа для следующей сессии
|
||||
|
||||
1. Прочитать `AGENTS.md`, этот `BITEXACT_PLAN.md`, `handoff/NOTES_LEVEL.md`
|
||||
апдейты **20j / 21a-21e / 22a-22e** (цепочка, Phase-B негативы, Шаг 7 опровержение,
|
||||
параметр-мост, пол blend·ln10/20) и `dsp/rt_mask_tables.hpp` / `dsp/rt_weights.hpp`.
|
||||
2. Собрать: `cmake --build dsp/build --target render48k framed_test`.
|
||||
3. Бейзлайны: `python3 scripts/corpus.py` (bridge, 62 случая, §0) и
|
||||
`python3 scripts/corpus_structural.py --vs-bridge scripts/baseline_bridge.json`.
|
||||
4. ПРИОРИТЕТ №1 — **Шаг 9** (пол редукции):
|
||||
a. 9a: полный декод FUN_180529c60 + FUN_1804d56b0 (f_529c60.dis готов).
|
||||
b. 9b: grep 0x1824c3cd4 по аудио-функциям; hunt клампа маски.
|
||||
c. 9c: предсказания пола — рендеры mix/sens через `setparam.lua` (мост готов,
|
||||
XML-правки стейта НЕ работают — NOTES 22c).
|
||||
d. 9d: порт + корпус с гейтом.
|
||||
5. Инструменты сессии: `setparam.lua`/`dump_params.lua` (параметр-мост),
|
||||
`scripts/rpp_setparam.py` (только формат-хирургия!), `RT_LUT_*` env в
|
||||
framed_model.cpp (солвер констант), `scripts/step7_capture.py` (live BandConfig).
|
||||
1. Прочитать `AGENTS.md`, затем NOTES_LEVEL **UPDATE 22s–22z** (журнал актуальной
|
||||
фазы) и `handoff/BLOCKMAP_529fe0.md` (блок-карта FUN_180529fe0 по raw asm).
|
||||
2. Собрать: `touch dsp/framed_model.cpp && cmake --build dsp/build --target render48k framed_test`
|
||||
(TOOLING HAZARD: touch перед сборкой обязателен).
|
||||
3. Бейзлайны: канон = `RT_LUT_OFF=1 RT_IIR12=0 RT_NOWARP=1 RT_NOBLEND=1 RT_NOIIR3=1
|
||||
RT_LAWAFFINE=7.4,1.85 python3 scripts/corpus_structural.py` → TOTAL 1.931;
|
||||
bridge-гейт: `--vs-bridge scripts/baseline_bridge.json` (1.594).
|
||||
4. **ПРИОРИТЕТ №1 — семантика входов `bands[]`**:
|
||||
a. Статика: декод тел conv 0x1802a24c0 (float)/0x1802fa420 (double,
|
||||
резолв ILT-стабов через idx@0x1826159a0, см. BLOCKMAP thunk-таблицу) и
|
||||
complex-op шагов с буферами ctx+0x540548/550/598.
|
||||
b. Динамика: синхронная трасса буферов bands[]/f6f8/acc в момент аудио-
|
||||
колбека (`scripts/dualtrace.py` + `play_loop.lua`; между кадрами acc/f6f8
|
||||
нули — снапшот должен попадать В колбек, см. NOTES_CAPTURE 22y).
|
||||
5. Инструменты: `scripts/lawfit22r.py` (офлайн реплей, 2 c корпус — ЛЮБОЙ закон),
|
||||
`scripts/resalpha.py` (тракты+теорема α), live-capture `dualtrace.py`.
|
||||
6. Факт для калибровки интуиции: dual-таблица по q в NOTES 22x (cut@центра
|
||||
константен; Δскайрта ≈ линейно по −ln res, b≈2.25 дБ/e-fold).
|
||||
|
||||
Reference in New Issue
Block a user