Skip to content

F0a: выделить приватный point render spine - #347

Merged
lemone112 merged 3 commits into
mainfrom
agent/f0a-paint-occurrence
Jul 19, 2026
Merged

F0a: выделить приватный point render spine#347
lemone112 merged 3 commits into
mainfrom
agent/f0a-paint-occurrence

Conversation

@lemone112

@lemone112 lemone112 commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator

Что изменено

  • приватная point-алгебра разделена на Paint → Occurrence → Surface;
  • Opacity меняет straight alpha Paint без знания подложки; exact source-over и replayable certificate принадлежат Occurrence;
  • surfaceFrom повторно использует уже видимый результат без второго композита;
  • PairLabel пока только потребляет вычисленную tint-surface, а label solver остаётся вне point-графа: без ложного PairFill → PairLabel ребра и фиктивного label occurrence;
  • production исполняет sealed static compiler-verified IR общим evaluator-ом на fixed stack scratch; compiler, dynamic bindings и широкий evaluation result остаются в proof-тестах;
  • добавлен append-only exact WASM ratchet v18 из канонического Linux/X64 измерения;
  • публичная schema, TypeScript/WASM exports и client-authored topology не меняются.

Корневая причина

Прежний приватный spine смешивал композицию поверхности и identity foreground. Статический компонент компилировался в runtime через OnceLock, строил dynamic bindings/scratch и представлял структурно невозможные ошибки. Это закрепляло специальный PairLabel-маршрут вместо общей физической алгебры.

RED → GREEN

  • v17 корректно дал RED на canonical run 29675926449: ожидалось 432107 B, фактически 385610 B;
  • повторная Linux-сборка дала тот же artifact SHA-256 b3f95c195801f9817ca2768ca236d66663e19b17612648e49abe6f301cd2c0a3;
  • v18 фиксирует zero-headroom 385610 B, predecessor v17 и canonical file SHA-256 2ee1e5b4472aa393eb399e3839ab9ac3cfb832a69fa8b704c3fa4854bc1e11f8;
  • hostile-проверка доказала, что прежний loose CI assertion принимал --budget/--runtime-wasm; теперь CI-команда связана ровно с default budget и built artifact, обе мутации дают RED;
  • appearance graph 20/20, PairLabel 8/8, alpha 23/23;
  • cargo +1.96.0 test --workspace --all-targets --locked, clippy, rustfmt, rustdoc и MSRV 1.85 — green;
  • npm typecheck и runtime tests — 242/242;
  • cargo-mutants — 12 caught / 2 type-unviable / 0 missed / 0 timeout;
  • WCAG22 source-binding, full Q55 и neutral-axis independent verifiers — green;
  • независимые architecture/API, numerical, documentation, performance, release-scope и hostile ratchet reviews — PASS.

Граница среза

Это F0a: приватный point render spine и его точный size-ratchet. Это ещё не публичный универсальный graph API, не полная миграция PairLabel и не joint solver.

Summary by CodeRabbit

  • Новые возможности
    • Улучшена обработка вложенных цветов, прозрачности и поверхностей для более предсказуемого композитинга.
    • Добавлена точная проверка и воспроизведение результатов смешивания.
  • Исправления
    • Некорректные значения прозрачности теперь отклоняются с типизированными ошибками.
    • Исправлена обработка граничных значений, включая нулевую и очень малую прозрачность.
  • Документация
    • Обновлено описание модели appearance, компиляции и публичных адаптеров.
  • Тесты и качество
    • Расширены проверки циклов, дубликатов, порядка деклараций и совместимости результатов.

@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 33aba99e-9ef0-426b-8e69-0049722a18a5

📥 Commits

Reviewing files that changed from the base of the PR and between 5a5cdd4 and 6bcc767.

📒 Files selected for processing (12)
  • README.md
  • crates/labcolors-core/src/alpha.rs
  • crates/labcolors-core/src/appearance.rs
  • crates/labcolors-core/src/appearance_graph_tests.rs
  • crates/labcolors-core/src/lib.rs
  • crates/labcolors-core/src/pair_label_tests.rs
  • crates/labcolors-core/src/semantic.rs
  • crates/labcolors-wasm/src/config_dto.rs
  • docs/whitepaper.md
  • packages/colors/bench/wasm-size-budget-v18.json
  • packages/colors/test/release-contract.test.mjs
  • scripts/check-wasm-size-budget.mjs
💤 Files with no reviewable changes (1)
  • README.md

Walkthrough

Перестроен приватный appearance-граф с типизированными Paint/Surface/Occurrence, двухфазной компиляцией и исполнением. PairLabel переведён на point-адаптер. Обновлены контрактные тесты, документация и WASM size budget с v17 на v18.

Changes

Appearance-граф и PairLabel

Layer / File(s) Summary
Контракты и компиляция графа
crates/labcolors-core/src/appearance.rs
Добавлены typed handles, доменные спецификации, CompileError/BindingError, канонизация деклараций и отдельные Paint/render-топологии.
Исполнение и point-adapter
crates/labcolors-core/src/alpha.rs, crates/labcolors-core/src/appearance.rs
Добавлены validated-композитор и PointOpacityOverSurfaceV1; выполнение материализует paints, surfaces, occurrences и SourceOverCertificateV1.
Интеграция PairLabel и контрактные проверки
crates/labcolors-core/src/semantic.rs, crates/labcolors-core/src/appearance_graph_tests.rs, crates/labcolors-core/src/pair_label_tests.rs
resolve_pair_label использует point-оценщик, а тесты проверяют точную композицию, сертификаты, топологии, alpha-границы и типизированные ошибки.
Документирование закрытых границ
README.md, crates/labcolors-core/src/lib.rs, crates/labcolors-wasm/src/config_dto.rs, docs/whitepaper.md
Обновлены описания приватной физической топологии, recipe-адаптеров и serialization/API boundaries.

WASM size budget v18

Layer / File(s) Summary
Определение и валидация бюджета
packages/colors/bench/wasm-size-budget-v18.json, scripts/check-wasm-size-budget.mjs
Добавлен бюджет v18, default-файл и хэш переключены на v18, а predecessor-валидация расширена immutable-документом v17.
Release-контракты бюджета
packages/colors/test/release-contract.test.mjs
Проверки структуры, runtime-рецепта, schema mutations, CLI-инвариантов и artifact drift обновлены для v18.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant resolve_pair_label
  participant PointOpacityOverSurfaceV1
  participant composite_over_srgb8_validated
  participant resolve_hued_anchor_from_srgb8
  resolve_pair_label->>PointOpacityOverSurfaceV1: evaluate tint, opacity, backdrop
  PointOpacityOverSurfaceV1->>composite_over_srgb8_validated: compose tint over backdrop
  composite_over_srgb8_validated-->>PointOpacityOverSurfaceV1: return derived surface RGB
  PointOpacityOverSurfaceV1-->>resolve_pair_label: return surface RGB
  resolve_pair_label->>resolve_hued_anchor_from_srgb8: resolve label on derived surface
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Заголовок кратко и точно отражает основное изменение: выделение приватного point render spine.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ 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 agent/f0a-paint-occurrence

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

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 19, 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
lemone112 marked this pull request as ready for review July 19, 2026 06:24

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 19, 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.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 19, 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.

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