Skip to content

Nano-трек: гольф до sub-1000 B + огибающе-растянутая сетка springLinear #235

Description

@lemone112

Вердикт свипа идей (81 → 20 кластеров, 2026-07-23): STRONG, приоритет Tier-1. Два связанных элемента — порядок обязателен (гольф создаёт headroom, warp его тратит).

1. Гольф-пакет (−85…150 B gz, цель 1002 → sub-1000)

  • animation.finished.then(...) вместо new Promise((resolve,reject)=>{...finished.catch(reject); addEventListener('finish',...)}) — реджект протекает нативно; тот же хвост продублирован в src/compiler/runtime (−20…30 B и там). Проверить microtask-vs-event порядок при duration:0.
  • Единый цикл сборки кадра: if (props.scale != null) спецветка дублирует общий цикл (мёртвая); rotate — единственный честный спецкейс (deg-суффикс). Проверить, что C4 не пинит порядок ключей кадра.
  • addEventListener('finish')onfinish (Animation принадлежит nano).
  • ln-слияние: max(ln a, ln b)/α ≡ ln(max(a,b))/α; Number.isFinite(k+c+m) вместо .every(isFinite) (отрицательные уже отвергнуты >0-проверкой; переполнение суммы отвергает только абсурдные пружины).
  • ⚠️ Замена do/while на замкнутую верхнюю ln-границу длительности удлиняет duration → у overdamped может вырасти count и строка. Мерить строку, не только код; underdamped не затронут (уже замкнутая форма).

2. Огибающе-растянутая сетка (перенос инсайта #228 в замкнутую форму SSOT)

count = ceil(T·w/√(8ε)) равномерен, хотя |x″| = w²·e^{−at} затухает экспоненциально — хвост пере-сэмплирован. Квадратичный warp t_i = T·(i/count)² (плотность ~√|x″|): 107 → ~42 стопа, строка ~750 → ~290 символов; точный exp-warp — ~23 стопа, но дороже кодом.

  • Цена: +12–18 B min+gz в nano-графе (headroom сейчас 22 B — потому сначала гольф).
  • Сертификация: ошибка сегмента ≤ h²·|x″(левый конец)|/8 — огибающая монотонна, оценка строгая.
  • Паритет runtime↔compiled по построению: spring-linear.ts — SSOT, обе стороны двигаются вместе. feat(compiler): serialization-aware portfolio выбирает минимальный сертифицированный artifact #232 не нарушен (меняется сетка, не текстовая эмиссия). Пины строк обновляются одним versioned-коммитом.
  • Выигрыш двусторонний: runtime (быстрее CSS-парс, меньше retained-памяти Animation, генерация 2.5–4.7×) и compiled-артефакт (~300–350 B gz → ~80–150 B).

Первый шаг: копия springLinear с warp → дифф max|Δ| < ε на плотной сетке → size-gate. Вердикт за полчаса.

Гейт NANO_GATE_BYTES=1024 — продуктовая граница, не трогать; ратчет вниз по факту. Связи: #228, #232.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions