Skip to content

test(compositor): независимый ОДУ-оракул браузерной пружины - #301

Draft
lemone112 wants to merge 2 commits into
fix/independent-motion-conformance-20260905from
test/independent-compositor-oracle-20260905
Draft

test(compositor): независимый ОДУ-оракул браузерной пружины#301
lemone112 wants to merge 2 commits into
fix/independent-motion-conformance-20260905from
test/independent-compositor-oracle-20260905

Conversation

@lemone112

@lemone112 lemone112 commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Пользовательский результат

Общая ошибка compositor и его runtime-reader больше не становится эталоном правильной пружины.

Контракт

Независимый RK4-оракул исходного ОДУ проверяет три режима затухания × две начальные скорости и аналитический первый максимум. Пиксельные допуски не расширены; публичное поведение не изменено.

Доказательство

  • RED: общая мутация stiffness × 0.8 в обоих runtime-солверах — старые Chromium-тесты 4/4 PASS, новые 7 FAIL / 1 PASS. Мутация удалена.
  • Регрессионные проверки общей ошибки и реального DOM: 24/24 Chromium, Firefox, WebKit.
  • Независимая численная калибровка и уточнение шага: 5/5; отдельный численный reviewer проверил 16 385 времён каждого профиля. Это конечная binary64-проверка, не интервальная теорема.
  • Characterization публичного поведения не требуется: runtime не меняется. Новый property/fuzz sweep всего домена не выполнялся.

Архитектура

Только тестовый fixture и browser assertions: без production imports в оракуле, нового runtime API или зависимости. Все 288 dist-файлов побайтно совпали с базой #300. Cleanup браузерной Animation выполняется тестом; существующие lifecycle-проверки сохранены.

Производительность

Runtime не затрагивает. Ускорение или отсутствие регрессий во всех средах не заявляются. Consumer size-gate и package smoke прошли. npm pack --dry-run: 532138 Б tar / 1714646 Б unpacked; документация добавила 415 Б tar относительно #300 и 3057 Б относительно базы #295. Байты runtime dist не изменены.

Риски и не-цели

Конечная матрица профилей и наблюдений; не все параметры, не кадры между наблюдениями, не универсальная физическая плавность и не мировое превосходство.

Документация и выпуск

Справочник motion-conformance фиксирует профили, единицы, допуски и непокрываемые свойства; динамические результаты находятся здесь. Runtime/версия/CHANGELOG не меняются, breaking change отсутствует. Merge, release, deploy не выполнялись; откат — revert двух коммитов PR.

Гейты

  • typecheck, build, test, size, pack:smoke: исходный SHA 570246b, 4074 PASS / 21 платформенный skip.
  • docs-drift и pack:smoke после документального 7cb60ad.
  • Независимые численное и архитектурное ревью 570246b — PASS; содержательное CodeRabbit code-review без actionable comments.
  • Независимое ревью финальной документации — PASS; CI и browser на 7cb60ad — SUCCESS.
  • pnpm mutation НЕ БЫЛО: production-ядро не меняется; targeted deliberate sabotage выполнен фактически.
  • CodeRabbit подтвердил структуру описания. Diataxis исправлен и независимо проверен; повторное CodeRabbit-ревью документации rate-limited, поэтому не засчитывается.

Связано с #300; стек поверх #300.

@coderabbitai

coderabbitai Bot commented Sep 5, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Team

Run ID: da1a2138-dba7-4cf0-bf82-ed1b7b13afc3

📥 Commits

Reviewing files that changed from the base of the PR and between c613abd and 570246b.

📒 Files selected for processing (4)
  • browser/03-compositor-spring.spec.ts
  • browser/fixtures/spring-ode.ts
  • docs/motion-conformance.md
  • test/spring-ode-oracle.test.ts

Included review availability: 0 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 1 review per hour.


📝 Walkthrough

Walkthrough

Добавлен независимый RK4-оракул для пружинного ОДУ. Браузерные тесты сравнивают фактические значения Element.animate() с численными позициями. Проверки охватывают три режима затухания, начальные скорости и первый overshoot.

Changes

Проверка соответствия пружины

Layer / File(s) Summary
RK4-оракул и его проверки
browser/fixtures/spring-ode.ts, test/spring-ode-oracle.test.ts
Добавлены коэффициенты пружины и integrateSpringPositions. Реализованы валидация входов, интегрирование RK4 с ограниченным шагом и проверки аналитических решений и ошибок.
Сравнение compositor с ОДУ
browser/03-compositor-spring.spec.ts
Compositor-тесты используют три набора параметров и две начальные скорости. Значения translateX сравниваются с результатами интегратора. Overshoot проверяется по формуле первого максимума.
Описание границ проверки
docs/motion-conformance.md
Документация описывает независимость RK4-оракула, контроль шага, аналитические проверки и ограничение результата конечной матрицей binary64.

Estimated code review effort: 3 (Moderate) | ~25 минут

Merge Risk: ⚪ Minimal · up to 57024

This change adds test-only RK4 spring-motion conformance coverage and documentation, with no production source or distribution changes. No evidenced merge-blocking risk remains.

Sequence Diagram(s)

sequenceDiagram
  participant CompositorAnimation
  participant TransformSampler
  participant integrateSpringPositions
  CompositorAnimation->>TransformSampler: создаёт samples transform
  TransformSampler->>integrateSpringPositions: передаёт времена наблюдения
  integrateSpringPositions-->>TransformSampler: возвращает позиции RK4
  TransformSampler-->>CompositorAnimation: сравнивает translateX с ожидаемыми позициями
Loading

Caution

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

  • Ignore

❌ Failed checks (1 error)

Check name Status Explanation Resolution
Diataxis ❌ Error Изменённая документация не классифицирована по Diataxis и смешивает два типа. В CONTRIBUTING.md указано разделение на обучение, практическое руководство, справочник и объяснение. `docs/motion-confor… Объявите docs/motion-conformance.md справочным документом. Вынесите добавленный материал о методологии и границах доказательства в отдельный документ типа «объяснение». Добавьте в оба документа явную маркировку роли и свяжите объяснение с…
✅ Passed checks (8 passed)
Check name Status Explanation
краткие русские документации ✅ Passed Проверка пройдена. Добавленный раздел docs/motion-conformance.md написан на русском языке и остаётся кратким для описываемой проверки. Его утверждения соответствуют коду: три режима затухания, `v0=0…
архитектура ✅ Passed PASS. Изменения ограничены тестовым вертикальным срезом: browser/03-compositor-spring.spec.ts, browser/fixtures/spring-ode.ts, unit-тестом и документацией. Production src, package exports и runt…
тесты ✅ Passed Тесты дают независимое доказательство целевого поведения. В browser/03-compositor-spring.spec.ts реальный Element.animate() сравнивается с integrateSpringPositions, а не с readCompositorSpring
промежуточные документы (напр. планы) ✅ Passed Нарушение не обнаружено. PR изменяет только docs/motion-conformance.md как конечный контракт наблюдаемого движения; документ входит в package.json и release metadata, а docs/benchmark.md ссылает…
Linked Issues check ✅ Passed Описание содержит связь с задачей #300 и указывает, что PR является стеком поверх неё. Связь соответствует цели изменений.
Out of Scope Changes check ✅ Passed Изменения ограничены browser-тестами, тестовым ОДУ-оракулом и документацией. Production-код, зависимости и dist-файлы не изменены, что соответствует заявленным целям PR.
Title check ✅ Passed Заголовок краткий, понятный и точно описывает основное изменение: добавление независимого ОДУ-оракула для браузерной пружины. Содержательная часть написана на русском языке.
Description check ✅ Passed Описание содержит все основные разделы шаблона и конкретно описывает результат, контракт, доказательства, архитектуру, риски, документацию и гейты. Невыполненные проверки, включая property/fuzz sweep …
Full details: Diataxis

Explanation

Изменённая документация не классифицирована по Diataxis и смешивает два типа. В CONTRIBUTING.md указано разделение на обучение, практическое руководство, справочник и объяснение. docs/motion-conformance.md не содержит маркировки роли. Основное содержание документа задаёт нормативный контракт и относится к справочнику, а добавленный раздел «Граница доказательства» объясняет метод проверки, независимость RK4 и ограничения доказательства. PR добавил этот необозначенный объяснительный материал в справочный документ. Это создаёт дрейф структуры и снижает понятность назначения документа.

Resolution

Объявите docs/motion-conformance.md справочным документом. Вынесите добавленный материал о методологии и границах доказательства в отдельный документ типа «объяснение». Добавьте в оба документа явную маркировку роли и свяжите объяснение со справочником. Не оставляйте объяснительный раздел внутри нормативного справочника.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch test/independent-compositor-oracle-20260905

Comment @coderabbitai help to get the list of available commands.

@lemone112

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 5, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@lemone112

Copy link
Copy Markdown
Contributor Author

@coderabbitai Исправлены Description check и Diataxis в 7cb60ad: описание следует шаблону; документ явно обозначен справочником, объяснительные абзацы заменены точной таблицей профилей, единиц и критериев. Ограничения применимости оставлены частью нормативного справочника; отдельное объяснение не создавалось, поскольку методологический материал удалён, а не переносится. Численный/runtime diff относительно проверенного 570246b отсутствует. Новые exact-head CI и browser запущены. Прошу проверить исправления.

@coderabbitai

coderabbitai Bot commented Sep 5, 2026

Copy link
Copy Markdown

@lemone112 Запускаю инкрементальное ревью исправлений из 7cb60adc. Проверю описание PR и изменения в справочнике. Также проверю, что численный и runtime-код не изменились относительно 570246bd.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@lemone112

Copy link
Copy Markdown
Contributor Author

Финальные exact-head гейты на 7cb60ad: CI 33942173210 и browser 33942174842 — SUCCESS. Изолированное doc-only review сверило таблицу с тремя неизменёнными численными файлами: PASS. docs-drift и package smoke PASS. CodeRabbit подтвердил Description check; проверка исправленного Diataxis была rate-limited, это не считается её выполнением. Последний reviewer подтвердил роль reference и точность finite scope.

@lemone112

Copy link
Copy Markdown
Contributor Author

Дополнительный срез стоимости, npm pack --dry-run --json --ignore-scripts на тех же построенных dist: base295867254c9 — 529081 bytes tarball / 1705383 unpacked; #300c613abd7 — 531723 / 1713450; #3017cb60adc — 532138 / 1714646. Прирост #301 относительно #300: +415 bytes tarball, +1196 unpacked из справочника. Все288 dist-файлов одинаковы; это не нулевое изменение полного npm-архива. Значения локальные, текущие, не сравнение всей мировой экосистемы.

@lemone112 lemone112 left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Автоматизация из ChatGPT от агента GPT-5.6 Sol

Вердикт: merge-blocker на exact head 7cb60adc не доказан. PR остаётся draft — это workflow-state, не дефект кода.

Validity envelope: base c613abd7; production runtime/exports/dependencies не меняются; changed surface — browser conformance fixture/tests + reference documentation. Exact-head CI, browser matrix и consumer-contract checks завершены SUCCESS.

Proof obligations:

  • ODE-301-001 независимость оракула от production solver/reader — FACT, CHECK=YES по diff: browser oracle импортирует только test-owned integrateSpringPositions; production readCompositorSpring удалён из oracle path.
  • ODE-301-002 чувствительность к общей ошибке compiler+reader — NO COUNTEREXAMPLE FOUND. CHECK=YES: адресный sabotage stiffness×0.8 заявлен и новая матрица исполняется в exact-head browser CI; текущий head зелёный после удаления sabotage. Это эмпирическое доказательство в конечной матрице, не proof всего домена.
  • ODE-301-003 численная самостоятельность RK4 — NO COUNTEREXAMPLE FOUND. CHECK=YES: test-owned RK4 имеет bounded domain/step, unit calibration и step-refinement; CI exact head зелёный.
  • DOC-301-004 Diátaxis — прежний CodeRabbit finding SUPERSEDED на текущем snapshot. Финальный документ прямо классифицирован как «Справочник», а добавленная таблица задаёт нормативные условия/границы conformance. Раздел «Непокрываемые свойства» ограничивает область контракта, а не превращает документ в tutorial/explanation. Отдельный explanation-документ здесь не нужен без второго самостоятельного пользовательского назначения.

Evidence ledger: FACT — exact-head remote gates зелёные; FACT — oracle test-owned и не импортирует runtime solver; FACT — публичный runtime не изменён. ASSUMPTION — конечная browser-матрица не представляет весь параметрический домен; это прямо зафиксировано документом и не расширяет заявленный контракт.

COUNTEREXAMPLE FOUND: нет. PROVED WITHIN MODEL: не заявляется. Autofix: НЕ БЫЛО.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant