From cc524619033c971636eb3c885fd7fe4a6aeeff12 Mon Sep 17 00:00:00 2001 From: Matiq Date: Thu, 20 Aug 2026 18:31:22 +0300 Subject: [PATCH] =?UTF-8?q?P4:=20AGENTS.md=20=E2=80=94=20honest=20baseline?= =?UTF-8?q?=20state=20(log-domain=20LUT=20bridge,=20correct=2024-bit=20met?= =?UTF-8?q?ric)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces stale exp2(am/res) chain description + wrong metrics with the actual honest state: C=G*LUT(log10(am/res))+W*warp^A, gain=(1-C)*res^rp; dual<=0.72, fc-scan<=0.59, corpus mean 0.77. Documents the 24-bit metric trap, negative broadband test, and the remaining structural gaps (combine + FFT-conv, A/B/gamma). --- AGENTS.md | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index c7ba184..3bedf28 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -52,29 +52,30 @@ err = db(ta(out,1000)/ta(ref,1000)) # err в dB, цель <0.1 ## Текущее состояние (2026-08-20, P4) -**Декодировано и транскрибировано в `dsp/framed_model.cpp`** (mask-apply цепь -`FUN_180529fe0`, mono-path 0x5408b8==0): +**Реализованная модель в `dsp/framed_model.cpp`** — BRIDGE-канон (NOTES:147, honest): ``` -level=am*res*level_scale -> scale(0x540870*0x54088c/0x1a0) --> IIR1 leaky(A1/B1) -> IIR2(A2/B2) -> mask=exp2(-mask)*blend (bigkernel 0x26b820) --> combine/acc(0x5407c8) -> warp(mask*=0x540768, *=warp) -> IIR3(A3/B3)x2 --> dry/wet(mask*(fVar30*0x540888)+(1-fVar30)) -> [FFT-conv] +am_k: smoothed amp (2|X|/wsum, att~11ms/trel~80ms) +xv = log10(am_k / res_k) res_k = |2B/A| twin (min@band centre) +C = G·LUT(xv) + W·warp(f_k)^A G/W/A = 0.9963/0.3335/0.9807 (fit) +gain_k = (1−C) · res_k^rp(Q) rp(Q) = 0.0275·Q^0.2159 +LUT = monotone cubic (Fritsch–Carlson) через joint-fit узлы (al_* + B.11 anchors) ``` -- **bigkernel 0x26b820 = векторизованный exp2** (log2e=1.4424, floor −708.9, N-таблицы); - семантика залочена: `mask = exp2(-level) * blend`, blend=0.8 при mix=1.0. -- **Level-tracker = би-направленный leaky-IIR** `y=A[i]*acc+B[i]*x`, B=1−A - (НЕ per-bin независимый трекер). -- **Live-таблицы** в `dsp/rt_mask_tables.{hpp,cpp}`: kIIR_A1/B1..A3/B3 (2049 doubles), - kWarp (8193), kBand768, kPRNGLut. `dsp/rt_weights.{hpp,cpp}` = acc коды весов. -- **Результаты**: t1kq err −0.43 dB (scale=600); comb per-tone err ≤6.4 dB. +- **METRIC CRITICAL**: рефы 24-bit НЕЛЬЗЯ читать 16-bit кодеком (даёт phantom −53 dB); + `render_parity.load` (sw handling) + окно 3.5s — канон. dual honest ref = −10.2 dB FLAT. +- **Broadband-hypothesis ОПРОВЕРГНУТА** (NOTES:2026-08-20s): редукция per-bin (tone-бины + режутся, пустые bin ~1.0); +- **Честные результаты (24-bit метрика, окно 3.5s, trimmed)**: dual (band fc=500, + q-sweep) err ≤0.72; t1kq fc-scan (only1 800..1200) err ≤0.59; al_* lv3-12 err ≤0.43; + полный корпус mean|err| 0.77, max 2.12 (t1k_b1f loud +2.1, al lv18/24 low-level −1.8). +- Эмпирика (G/W/A/rp/LUT-узлы) ЯВНО помечена в коде и NOTES; структурные лэкеры ниже. -### Открытые bit-exact пробелы (см. NOTES_LEVEL.md) -1. PRNG-пролог (LCG+LUT → fVar30), per-frame рандомизация scale/dry-wet. -2. FFT-conv (0x535a70) сглаживание маски перед FIR. -3. Бит-экзактный exp2 (0x26b820) вместо std::exp2. -4. combine/аккумулятор 0x5407c8 точная обратная связь. -5. **SR-mismatch**: внутренний DSP SR=48000/N=4096 (спейс 11.713 Гц) против - хоста 44100/2048; twin per-bin IIR статически невидим (FUN_180535880 tail-call). +### Открытые bit-exact/структурные пробелы (см. NOTES_LEVEL.md) +1. `combine/аккумулятор 0x5407c8` (аддитивные веса 0x5406c8/6e8) + `FFT-conv 0x535a70` + (сглаживание маски) — НЕ замкнуты в цепь; структурно могут закрыть t1k_b1f/al хвосты. +2. BandConfig `ctx+0x188` A/B/γ (параметрический LUT 0x563a60) — не live-захвачен; + писатели = JUCE param plumbing (статически исчерпаны). +3. PRNG-пролог (LCG+LUT → fVar30) — залочен (fVar30=1 при live state 112), dry/wet rnd импорт. +4. Бит-экзактный exp2 (0x26b820) вместо std::exp2; SR-mismatch 48000/4096 vs 44100/2048. ## Структура ключевых файлов - `dsp/framed_model.{cpp,hpp}` — C++ порт mask-apply цепи (ГЛАВНЫЙ активный файл).