23c: negative feasibility — symmetric log-domain convolution cannot reproduce dual skirt geometry (best 0.94dB err at absurd 324-bin width); narrows mechanism to non-symmetric ops / true bands[] input / temporal coupling; capture recipe for DESIGN-input dump documented

This commit is contained in:
2026-08-23 21:09:14 +03:00
parent b8d5f83fc5
commit 0a45661a25
2 changed files with 45 additions and 4 deletions
+16
View File
@@ -2271,3 +2271,19 @@ cut@500=10.32 дБ const ∀q; @2000=11.82 @q=0.5; Δcut≈2.25·(ln res).
гейт corpus --vs-bridge + контрольные числа dual.
3. ptrace-эскалация ТОЛЬКО если численная репликация не сойдётся: цель —
брейкпоинт в момент param-change (init-окно хоста), а не рендер.
### 23c (короткое): феасибилити log-свёртки — ОТРИЦАТЕЛЬНЫЙ результат
На живой кривой R@0x5407f8 (dual q=0.5): подбор ОПТИМАЛЬНОЙ симметричной
гаусс/бокс-свёртки в log-домене (ширина до 1500 бинов, свободный аффинный сдвиг,
точное совпадение @bin43=10.32 дБ) даёт минимум ошибки на bin171 ≈ 0.941.10 дБ
при ширине ~314–324 бина (~3.7 кГц) — такая ширина уничтожает избирательность
нотча на всём остальном корпусе. Вывод: механизмы класса «свёртка log-маски с
симметричным ядром» геометрию dual НЕ воспроизводят (расширяет теорему 22x с
поточечных законов на симметрично-свёрточные). Остаются: (а) вход bands[i] у
DESIGN ≠ захваченные кривые (768/788/7f8 — возможно, GUI/init-версии);
(б) асимметричные/структурные ops (cepstral-liftering класс); (в) темпоральный
кросс-фрейм механизм. Решающий недостающий факт — ИСТИННЫЙ массив bands[0] в
момент вызова DESIGN; рецепт добычи: seize главного треда yabridge-host в момент
ПОЯВЛЕНИЯ pid (ppid=reaper, comm ещё 'wine'), INT3 на 0x1802a24c0/0x1802fa420,
CONT, дамп rcx/rdx на хите (скрипт fnall.py готов, нужен только ранний захват —
нынешний finder по maps опаздывает на init-бурст <5 мс).
+29 -4
View File
@@ -13,6 +13,7 @@ import json
import os
import signal
import struct
import numpy as np
import subprocess
import sys
import time
@@ -51,14 +52,23 @@ def pt(req, pid, addr=0, data=0):
def find_host():
# fastest signal: any non-reaper child of a reaper process
reapers = []
for p in glob.glob('/proc/[0-9]*'):
try:
cmd = open(f'/proc/{p}/cmdline', 'rb').read()
if b'reaper' in cmd and b'yabridge' not in cmd:
reapers.append(int(os.path.basename(p)))
except Exception:
continue
for p in glob.glob('/proc/[0-9]*'):
pid = int(os.path.basename(p))
try:
cmd = open(f'/proc/{pid}/cmdline', 'rb').read().replace(b'\0', b' ').decode('utf8', 'replace')
maps = open(f'/proc/{pid}/maps').read()
st = open(f'/proc/{pid}/stat').read().split()
ppid = int(st[3])
except Exception:
continue
if 'soothe2' in maps and 'reaper' not in cmd:
if ppid in reapers and pid not in reapers:
return pid
return None
@@ -176,7 +186,22 @@ def main():
rec = dict(ctx=regs.rcx, a2=regs.rdx, cnt=regs.r8 & 0xffffffff,
r9=regs.r9 & 0xffffffff, ret=ret,
rbx=regs.rbx, r12=regs.r12, r13=regs.r13,
r14=regs.r14, r15=regs.r15, rsp=regs.rsp, tid=pid)
r14=regs.r14, r15=regs.r15, rsp=regs.rsp, tid=pid,
dump_in=[], dump_out=[], dump_r14=[], dump_rbx=[])
# dump arrays referenced by registers (process is stopped)
fdm = os.open(f'/proc/{host}/mem', os.O_RDONLY)
def rdarr(ptr, n=2049):
try:
b = os.pread(fdm, n * 4, ptr)
return np.frombuffer(b, dtype='<f4').astype(np.float32).tolist()
except OSError:
return []
rec['dump_in'] = rdarr(regs.rcx)
rec['dump_out'] = rdarr(regs.rdx)
if FN != 0x18052dbc0:
rec['dump_r14'] = rdarr(regs.r14)
os.close(fdm)
log.append(rec)
hits += 1
if hits <= 20: