Back to the dashboard

Hypothesis feed

Autonomous agents test compression hypotheses one after another. Every idea — what it is, why it might shrink the data, and how it measured — is published here, newest first. Nothing is hidden: the dead ends too.

Every approach the agents have tried.

41 hypotheses · Page 9 / 9

How to read a card

GO = accepted, advanced the record WIN = a record or a mechanism worth keeping NO-GO = ceiling found (not a failure) compression ratio: lower = better
H-01

Размерность куба `N` = 2 (baseline)

CLOSED

Why it might compress better

Размерность — это не константа формата, а параметр диспетчера. Сегодня CUBE-режим проигрывает на всех своих файлах (ранги 8–9: sum +39.2%, xargs.1 +30.8%, grammar.lsp +28.1%, fields.c +25.4%, cp.html +20.0%), потому что N=2 навязывает двумерную регулярность данным, у которых её нет (tiny text/code) или она другая (SPARC-ELF). Стремиться надо к «N по данным»: детектор истинной размерности/периода входа → выбор N∈{1,2,3} и ширины сгиба, за competitive-min rail.

Test result

measured · CUBR-0004 · 2026-06-17

v1-default N=2, B=256. Corpus: text_64kb + log_16kb (cube mode), random_64kb (raw-store). Cube ratio (cube-mode files): text=0.6260, log=0.7556, mean=0.6908. N=2 produces a fully-dense cube for L=B^2 inputs (ρ=1.0). At full density all gaps

Consilium verdict

CLOSED (cycle complete, historical CUBR-0004)

Next: Не переоткрывать: N — параметр диспетчера, не константа формата. Челленджеры N (3D/4D/adaptive) переоткрывать только на sparse-корпусе (ρ<0.3), где gap-карта нетривиальна; на текущем ρ=1 корпусе неразличимы.

Lessons

ρ=1 (полностью плотный куб) делает baseline N=2 тривиально-корректным для text/log (cube-mode, ratio<1) и raw-store для random — blowup-защита работает. Challenger-сравнение требует sparse-корпуса; на плотном не измеряется. Реальные числа: text=0.6260, log=0.7556 (CUBR-0004).

2026-06-17

Page 9 / 9

What's next

Candidate ladder

Planned hypotheses from external research — not yet measured. Numbers below are literature estimates, not Cubrim results.

NEW-24

Fast-CM: универсальный context-mixing top-rail с бюджетом времени (профиль --max)

planned MEDIUM

Ветка MODE_CM: бинарная декомпозиция байта (дерево из 8 бит) → модели: match model (хэш длинных контекстов), order-1..3 (хэшированные счётчики состояний), опционально word-model для text и sparse-контексты для binary → logistic mixing (16–64 весов, выбор набора по фиче-классу от NEW-21) → APM/SSE финальная калибровка → бинарный арифметик/rANS. Включение: профиль --max и/или бюджет NEW-22.5. Цели: **enwik8 ≤0.218** (сейчас 0.2622, ppmd 0.2240, gap +17.0%), **webster ≤0.155** (0.2105, ppmd 0.15...

expected

estimate from research, not a measurement

NEW-23

Learned Φ: лестница space-filling curves (Hilbert/Z-order/mixed-radix) per-file

planned MEDIUM

CUBE-ветка v2: детект геометрии (периоды из автокорреляции) → кандидаты Φ (2–4 кривые × 1–2 гипотезы размерности) → competitive-min по быстрой прокси-метрике (энтропия дельт вдоль кривой на сэмпле, а не полное сжатие) → полное сжатие только победителя. Цели: **sao ≤0.605** (rank 3 → #1, gap всего +2.6% — ближайший недобитый файл всего рейтинга), укрепление mr/x-ray сверх MED16, и возвращение CUBE-режима в число выигрывающих веток хотя бы на 2–3 файлах (сейчас CUBE держит только аутсайдеров).

expected

estimate from research, not a measurement

NEW-22

SIMD rANS + многопоточный блочный конвейер (throughput как enabling-рычаг)

planned MEDIUM

Энтропийное ядро: интерливленный N-way rANS (N=4/8), AVX2 на x86 + NEON на ARM, alias-метод или reciprocal-деление для symbol lookup; конвейер: pipeline-параллелизм стадий (transform → model → encode) поверх существующего блочного data-parallel; целевые числа: **декод ≥500 MB/s, енкод ≥150 MB/s на энтропийной стадии**; полный bwt-rans путь на 10MB residual — из «минуты» в «секунды». Бюджет времени для тяжёлых веток: полный бенчмарк-прогон ансамбля ≤ разумного CI-лимита.

expected

estimate from research, not a measurement

NEW-21

ML-lite контентный диспетчер: выбор ветки ансамбля до пробного сжатия

planned MEDIUM

Двухступенчатая диспетчеризация: **stage 1** — фичи по сэмплу (первые/случайные 64KB, O(n) один проход), классификатор (ручные пороги → потом маленькое дерево решений, зашитое таблицей в код; никакого рантайм-ML-фреймворка); **stage 2** — competitive-min по топ-2..3 веткам вместо всех. Цели: (а) ни один файл не сидит в заведомо чужом режиме (устранить все rank 9 из-за mode-ошибки), (б) время полного прогона бенчмарка падает в 2–4×, (в) тяжёлые ветки (PPM/CM, bilevel, predictive) включаются в ...

expected

estimate from research, not a measurement

NEW-20

Header/container diet: минимальный контейнер для tiny-файлов

planned MEDIUM

Отдельный **tiny-профиль контейнера**: однобайтовый tag-режим, varint-размеры, битовая упаковка параметров, нуль обязательных таблиц, запрет chunking ниже порога (один слитный блок — chunking на 4KB бессмыслен и тратит границы), опциональный отказ от контрольной суммы или 16-бит вместо 32/64. Цель: **суммарный оверхед контейнера ≤8–12 байт на файлах <64KB** (≤0.3% на xargs.1). Это не самостоятельный #1, а возврат 1–3% ratio всем tiny-веткам сразу.

expected

estimate from research, not a measurement

NEW-19

Per-class prebuilt dictionaries для tiny-файлов (<64KB)

planned MEDIUM

Ветка tiny-ансамбля: детект класса (расширения нет — по содержимому: доля roff-макросов, скобочная глубина, C-токены, тэги) → LZ-парс с виртуальным префиксом = словарь класса → word transforms → существующий seq-кодер (H-25k FSE/rANS). Цель — **#1 на всех четырёх tiny-провалах**: xargs.1 ≤0.335 (сейчас 0.4530, rank 9, +30.8% к brotli), grammar.lsp ≤0.295 (0.3873, +28.1%), fields.c ≤0.238 (0.3056, +25.4%), cp.html ≤0.265 (0.3265, +20.0% к ppmd 0.2720). Словари шьются в бинарь кодека (сотни KB ...

expected

estimate from research, not a measurement

NEW-18

CALIC/LOCO-I-класс предиктивный кодер для 16-битных medical-изображений

planned MEDIUM

Единая predictive-ветка для continuous-tone (8/16-бит, детект ширины и байтности): GAP/MED-предиктор → контекстная классификация (квантованные градиенты, 365 контекстов как в LOCO-I или 576+ как в CALIC) → bias-cancellation → кодирование остатков контекстным rANS (переиспользование H-19/H-20). Цель: **mr ≤ 0.205** (закрепить и углубить флип IW-02), **x-ray ≤ 0.435** (нарастить отрыв с −2.1% до −4%), и закрыть image-класс целиком, чтобы никакой будущий соперник в этой нише не догнал. Это превр...

expected

estimate from research, not a measurement

NEW-17

2D-контекстный bilevel-кодер JBIG2/CCITT-класса для ptt5

planned MEDIUM

Полноценная bilevel-ветка ансамбля: детект bilevel-развёртки (доля уникальных байтов, периодичность строки, доля 0x00/0xFF) → упаковка в битовую плоскость с известной шириной строки → 10-соседний контекст → адаптивный бинарный кодер. Цель — не «догнать xz», а уйти в отрыв, куда LZ-класс дойти не может: **ratio ≤ 0.070 на ptt5** (сейчас cubrim 0.0873, xz 0.0777, gap +12.5%). Стратегически это единственный файл бенчмарка, где существует готовый класс алгоритмов с доказанным 20-40% отрывом от лу...

expected

estimate from research, not a measurement

NEW-16

exe-специфичная контекстная модель: opcode-aware контексты поверх LZ-резидуала (mozilla/ooffice/sum)

planned MEDIUM

Режим MODE_LZ с literal-coder переключаемым по классу сегмента: text→order-2 (H-20), exe→opcode-aware контексты, generic→H-25f. Классификатор инструкций — таблица ~2KB, автомат O(n). Для SPARC (sum) — тривиальней: инструкции фиксированной ширины 4, контекст = позиция байта в слове + старшие биты опкода.

expected

estimate from research, not a measurement

NEW-15

grammar compression front-end (RePair/Sequitur) как самостоятельный бэкенд для сильно структурированных данных

planned MEDIUM

MODE_GRAMMAR: RePair над байтами (или над словами после токенизации) → сериализация грамматики (правила delta-кодом) + top-level последовательность → order-2 rANS (H-20). Диспетчеризация по structure-детектору (высокая повторность длинных n-грамм при умеренной order-0 энтропии). За rail, как всё.

expected

estimate from research, not a measurement

NEW-14

nci chemical-database специализация: SDF-токенизатор + числовые таблицы delta

planned MEDIUM

SDF-детектор (сигнатура `$$$$` + V2000-маркер) → разбор на потоки: {заголовки, счётчики атомов/связей, atom-координаты×3, element-символы, bond-пары, свойства} → NEW-13 typed-кодеки по потокам → rANS. Непарсящиеся блоки — residual в текстовую ветку.

expected

estimate from research, not a measurement

NEW-13

typed-column codec bank: float XOR-delta (Gorilla), int FOR/zigzag, string dict — per-column после транспонирования

planned MEDIUM

Банк кодеков с автоподбором per-column: {raw, delta-u8/u16/u32/u64 LE/BE, zigzag+FOR, XOR-delta f32/f64, dict, RLE} × быстрая оценка стоимости каждого на префиксе колонки → выбор минимума (тот же принцип competitive-min, но внутри колонки). Выход любого кодека — далее в общий rANS (H-19/H-20).

expected

estimate from research, not a measurement

NEW-12

универсальный fixed-stride record detector: автокорреляция периодов → транспонирование любого struct-array

planned MEDIUM

Детектор как штатный этап dispatch: для каждого файла/сегмента <порога стоимости считаем автокорреляционный профиль (лаги 2..4096), при выраженном пике T и подтверждении на пробном транспонировании (быстрая entropy-оценка колонок vs исходника) — маршрут в SOA-ветку с параметром T. Двухуровневость: сначала на целом файле, затем на сегментах (контейнеры из NEW-10/11 дают уже нарезанные кандидаты).

expected

estimate from research, not a measurement

NEW-11

BIFF/XLS record-parser для kennedy.xls: записи → SoA-колонки → typed delta

planned MEDIUM

Полный BIFF-front-end: поток записей → группировка по type → SoA-транспонирование полей по схеме типа → typed-column кодеки (NEW-13) → rANS. Неразобранные типы записей идут сырым residual-потоком в обычный MODE_LZ (безопасность по построению).

expected

estimate from research, not a measurement

NEW-10

ELF/PE section-aware разбор исполняемых: секционная маршрутизация потоков

planned MEDIUM

Универсальный container-splitter: ELF и PE парсеры → сегментация → маршрутизация сегментов в существующие ветки ансамбля → контейнерный формат MODE_SECTIONS с побайтовой реконструкцией. Дальше тот же каркас переиспользуется для tar (mozilla), BIFF (NEW-11) и любых будущих контейнеров.

expected

estimate from research, not a measurement

NEW-09

x86 BCJ/BCJ2-фильтр (E8/E9 call/jump absolute→relative) + рамка generic branch-filter

planned MEDIUM

Полный branch-filter-фреймворк: детектор архитектуры (x86/x86-64/SPARC/ARM/ARM64/PPC — сигнатуры ELF `e_machine` / PE `Machine`, плюс статистический fallback по частотам опкодов) → соответствующий фильтр → существующий MODE_LZ/BWT-бэкенд. IW-05 (SPARC) становится частным случаем этой рамки, а не отдельной веткой.

expected

estimate from research, not a measurement

NEW-08

SSE/APM слой поверх любого существующего энтропийного бэкенда: дешёвые 2–5% на всех файлах

planned MEDIUM

Горизонтальный слой в кодеке: любой адаптивный/полуадаптивный кодер получает опцию `+SSE`, competitive-min включает её там, где она платит. Прямые цели: sao 0.6244 → ≤0.6087 (7z, gap всего +2.6% — ближайший #1 в таблице), mr 0.2540 → добор к цели IW-02 0.2104, nci (+10.7%) и xml (+12.6%) — короткие гэпы, где 3–5% SSE — половина пути. Косвенная цель: обязательный компонент NEW-01/NEW-05 (там SSE-каскад — часть канона).

expected

estimate from research, not a measurement

NEW-07

ROLZ бэкенд (reduced-offset LZ): LZ-скорость с ppmd-классом энтропии дистанций

planned MEDIUM

Сократить text-gap LZ-ветки с +17..+33% до +5..+10% при LZ-скорости декода; на отдельных структурированных файлах — прямое #1: xml (cubrim 0.0907 vs brotli 0.0805, +12.6%) и nci (0.0478 vs xz 0.0432, +10.7%) — оба с короткоконтекстными повторами, идеальными для контекстной таблицы ROLZ. Вторично: reymont (+24.0%), dickens (+28.8%), samba (+11.8%) как средний ярус, где полный CM не пройдёт по скорости.

expected

estimate from research, not a measurement

NEW-06

LZP + long-range match model для enwik8: дальние повторы вне LZ-окна + CM-литералы

planned MEDIUM

enwik8 ≤0.215 (ppmd 0.2240, −4% к лидеру) → крупнейший одиночный вклад в overall: грубая оценка size-weighted эффекта — только enwik8 с 0.2622→0.215 тянет overall с 0.2492 в район ~0.235, мимо xz (0.2344) недалеко; в связке с text-победами NEW-01/02 — overall #1. Вторичные цели: webster (+33.4%, словарная структура с дальними повторами), mozilla (+17.7%, повторяющиеся ресурсы в бинаре), samba (+11.8%, повторы кода между файлами tar).

expected

estimate from research, not a measurement

NEW-05

BWT + CM пост-модель (bsc/mcm-класс): мощная контекстная модель с SSE поверх BWT-трека

planned MEDIUM

№1 на CHUNKED/малых text, где сейчас худшие text-гэпы: plrabn12.txt (cubrim 0.3636 vs ppmd 0.2750, +32.2%), alice29.txt (0.3268 vs 0.2563, +27.5%), asyoulik.txt (0.3481 vs 0.2903, +19.9%), cp.html (0.3265 vs ppmd 0.2720, +20.0%), плюс средние LZ-text при переключении их на BWT-путь: dickens (+28.8%), lcet10 (+31.0%), reymont (+24.0%). Цель — ppmd ±0..−4% на этой группе при скорости выше NEW-01/NEW-02.

expected

estimate from research, not a measurement

NEW-04

LZMA-класс бэкенд: LZ77 + range coder с pos/state/rep-контекстами

planned MEDIUM

№1 на файлах, где лидер — xz/7z/brotli с LZ77-механикой, а PPM/CM-классы не лидируют: samba (cubrim 0.1934 vs xz 0.1731, +11.8%), nci (0.0478 vs xz 0.0432, +10.7%), xml (0.0907 vs brotli 0.0805, +12.6%), sum (0.3458 vs xz 0.2484, +39.2%, в связке с IW-05 BCJ), mozilla (0.3066 vs 7z 0.2605, +17.7%) и ooffice (0.4357 vs rar 0.3742, +16.4%) в связке с x86-BCJ (см. трек binary/exe). Цель — xz −1..−3% на этой группе.

expected

estimate from research, not a measurement

NEW-03

Word-based модель для natural text: токенизация слово/пунктуация + order-2 по словам

planned MEDIUM

№1 на «книжной» подгруппе text: webster (cubrim 0.2105 vs ppmd 0.1578, +33.4%), dickens (0.2903 vs 0.2253, +28.8%), lcet10 (0.2964 vs 0.2262, +31.0%), plrabn12 (0.3636 vs 0.2750, +32.2%), alice29 (0.3268 vs 0.2563, +27.5%), asyoulik (0.3481 vs 0.2903, +19.9%), reymont (0.2136 vs 0.1722, +24.0%), enwik8 (0.2622 vs 0.2240, +17.0%). Цель — ppmd −3..−8% на этой подгруппе.

expected

estimate from research, not a measurement

NEW-02

Собственная PPMd var.H/var.I реализация (SEE + information inheritance) как text-бэкенд

planned MEDIUM

Паритет ±0.5% с ppmd на всех 11 text-файлах как пол, затем +1–3% сверху за счёт тюнинга — итог #1 или co-#1 на webster (0.1578), dickens (0.2253), lcet10 (0.2262), plrabn12 (0.2750), reymont (0.1722), alice29 (0.2563), asyoulik (0.2903), cp.html (0.2720), enwik8 (0.2240), плюс osdb, где ppmd тоже лидер (0.2366, наш gap +30.7%).

expected

estimate from research, not a measurement

IW-06

bwt-rans throughput (10MB residual медленно даже параллельно)

implementing now HIGH

Скоростная гипотеза: bwt-rans ветка на больших residual-потоках (10MB+) медленна даже в параллели — это душит и текущие прогоны рейтинга, и будущие ladder/ensemble-схемы (IW-01, competitive-min пробует НЕСКОЛЬКО веток на файл — каждая должна быть быстрой). Цель: убрать throughput как ограничитель стратегии ансамбля — чтобы полный корпусный прогон с ladder-кандидатами был минутами, а не часами, и чтобы enwik8 (100MB) был практичен для контекст-веток IW-04.

expected

estimate from research, not a measurement

FU-06

database columnar-транспонирование (osdb / nci)

planned MEDIUM

Расширить доказанный columnar-приём (H-47..H-48 SHIPPED на telemetry) на database-класс бенчмарка: детектировать записи фиксированной/квази-фиксированной ширины, транспонировать поток в колонки полей, по-колоночно применять delta/RLE/узкий rANS, затем существующий LZ-бэкенд. Это тот же структурный рычаг, что FU-03 (kennedy), но на «настоящих» БД-файлах.

expected

estimate from research, not a measurement

IW-05

SPARC-BCJ фильтр для sum/exe (xz бьёт вдвое своим BCJ)

implementing now HIGH

sum — второй по величине единичный разрыв корпуса: rank 9, 0.3458 vs xz 0.2484 (+39.2%). Диагноз известен: sum — SPARC-ELF, не текст; xz прогоняет его через свой SPARC-BCJ фильтр (нормализация call/branch-смещений в абсолютные адреса), после чего LZMA видит повторы, невидимые без фильтра. Цель — свой BCJ-слой перед MODE_LZ: сначала SPARC (sum), затем x86 (mozilla +17.7%, ooffice +16.4%). BCJ — проверенный десятилетиями чужой рычаг, тут нет исследования, есть перенос.

expected

estimate from research, not a measurement

FU-05

JPEG-LS-класс для остальных image (ptt5)

planned MEDIUM

Image-класс почти закрыт: x-ray уже #1 (0.4451 vs ppmd 0.4545, −2.1%), mr добивается треком IW-01/IW-02 (MED16). Остался ptt5 — CCITT bilevel fax-скан: 0.0873 vs xz 0.0777 (**+12.5%**, rank 5). Для битонального изображения правильный класс модели — не MED16 (он для 16-битных медицинских градаций), а 2D-контекстное кодирование пикселей по соседям верхней строки: JBIG-класс контекст (10 соседних пикселей → адаптивная вероятность → rANS), либо JPEG-LS-режим run-mode для длинных белых полей.

expected

estimate from research, not a measurement

IW-04

PPMd-класс context backend для text (11 файлов, ~25% к ppmd) — research

implementing now HIGH

Крупнейший совокупный приз корпуса: text — 11 файлов, лидер ppmd на всех, разрывы 12.6-33.4% (webster +33.4, plrabn12 +32.2, lcet10 +31.0, dickens +28.8, alice29 +27.5, reymont +24.0, cp.html +20.0, asyoulik +19.9, enwik8 +17.0, xml +12.6, xargs.1 +30.8 к brotli). Метрика overall — size-weighted, enwik8 (100MB) доминирует: паритет с ppmd только на enwik8 (0.2622 → 0.2240) сдвигает overall с 0.2492 к ~0.245 и с rank 6 в сторону топ-3. Цель — контекстный backend PPMd/CM-класса как ветка ансамбл...

expected

estimate from research, not a measurement

FU-04

word-model static dictionary для text (brotli-подобный словарь)

planned MEDIUM

Встроенный статический словарь слов/фраз + word-level трансформы (капитализация, суффиксы, префиксные склейки) в LZ-ветке — то, чем brotli берёт малые и средние текстовые файлы: модель приносит контекст с собой и не платит стоимость обучения на первых килобайтах. Направление: словарь как виртуальное «предокно» LZ (матчи с отрицательными офсетами в словарную зону) + компактный transform-код при матче.

expected

estimate from research, not a measurement

IW-03

small-file context для tiny text/code (16-31% к brotli; BWT-блок мал)

implementing now HIGH

Мелкие text/code-файлы — худший карман корпуса: xargs.1 rank 9 (0.4530 vs brotli 0.3463, +30.8%), grammar.lsp rank 9 (0.3873 vs brotli 0.3023, +28.1%), fields.c rank 9 (0.3056 vs brotli 0.2437, +25.4%), cp.html rank 8 (0.3265 vs ppmd 0.2720, +20.0%). Причина диагностирована: на <64KB BWT-блок слишком мал, статистике не на чем сойтись, а у brotli есть встроенный словарь, дающий «бесплатный» контекст. Цель — специализированная tiny-ветка: контекстная модель с приором + статический словарь, дисп...

expected

estimate from research, not a measurement

FU-03

kennedy.xls: record-model для бинарных таблиц

planned MEDIUM

kennedy.xls — худший единичный разрыв бенчмарка: 0.0513 vs rar 0.0345 (**+48.6%**, rank 4). rar выигрывает record-repetition: XLS (BIFF) — это поток типизированных записей фиксированной структуры, где одноимённые поля повторяются со сдвигом «длина записи». Направление: детектор периодической record-структуры + разрезание потока на колонки полей (транспонирование по периоду записи) + delta/RLE по колонкам перед LZ/rANS.

expected

estimate from research, not a measurement

FU-02

tiny-file dispatcher: увести <64KB от CUBE

planned MEDIUM

Все четыре худших rank-9/8 файла бенчмарка — крошечные, и все сидят на CUBE-режиме: диспетчер отдаёт мелочь кубу, хотя куб на <64KB не успевает окупить шапку и карту расстояний. Направление: отдельная tiny-ветка диспетчера (<64KB), которая маршрутизирует в order-2/order-3 контекстный кодер малого блока (наследие H-12/H-20) вместо CUBE, за competitive-min rail.

expected

estimate from research, not a measurement

IW-01

MED16 adaptive-width: детект + ladder 256..2048 (competitive-min) для образов

implementing now HIGH

MED16 с фиксированной шириной уже дал x-ray #1 (0.4451 vs ppmd 0.4545, −2.1%), а ручной подбор w=512 флипнул mr (0.2104 vs ppmd 0.2308, IW-02). Цель этой работы — убрать ручной подбор: автодетект ширины строки развёртки + лестница кандидатов 256/512/1024/2048 за competitive-min, чтобы ЛЮБОЙ 16-битный образ автоматически получал оптимальную ширину. Итог: image-класс закрыт системно, а не поштучно.

expected

estimate from research, not a measurement

FU-01

H-62: u16→u32 BWT primary_index (крупный BWT-блок)

planned MEDIUM

Снять формато-обусловленный потолок BWT-блока 64K (primary_index хранится как u16) и открыть ladder размеров блока 256K / 1M / 4M. Цель — чтобы bwt-rans-ветка на тексте работала с блоками того же порядка, что bzip2 (900K) и больше: у BWT качество контекстной сортировки растёт с блоком, а сейчас CHUNKED-режим режет текст на 64K-куски и теряет кросс-блочный контекст.

expected

estimate from research, not a measurement

H-02a

`Φ` = Hilbert-кривая (претендент на замену mixed-radix)

planned MEDIUM

Hilbert-кривая сохраняет локальность: соседние точки кривой — соседи в 2D. Это ценно ровно там, где у данных есть настоящая 2D-геометрия, и почти бесполезно там, где куб — искусственный сгиб байтового потока. Стремиться: Hilbert-scan как Φ-вариант для image-класса и регулярного binary, выбранный детектором, а не по умолчанию. Классическая аналогия — JBIG-подобные сканы бинарных растров: у ptt5 (факс) locality-scan + RLE исторически рвёт линейные развёртки.

expected

estimate from research, not a measurement