F2a: разделить authored цвета и наблюдаемые поверхности - #352
Conversation
WalkthroughВ appearance graph surface-входы отделены от цветовых входов и переведены на ChangesAppearance и observation pipeline
WASM budget metadata
Estimated code review effort: 5 (Critical) | ~120 minutes Sequence Diagram(s)sequenceDiagram
participant Producer
participant ObservationState
participant admit_scenarios
participant ObservationHead
Producer->>ObservationState: apply ObservationUpdateInput
ObservationState->>admit_scenarios: validate and canonicalize scenarios
admit_scenarios-->>ObservationState: canonical payload or ObservationError
ObservationState->>ObservationHead: apply revision and payload
ObservationHead-->>Producer: UpdateDisposition and availability
Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@crates/labcolors-core/src/observation.rs`:
- Around line 1-6: Обновите модульную документацию над observation.rs, удалив
упоминания proof-сборки, будущего Session consumer-а и временного статуса.
Переформулируйте её как описание текущего контракта модуля: назначения admission
для коррелированных point sRGB8 observations, разделения runtime-поверхностей и
authored color inputs, а также поддерживаемого инварианта revision algebra.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: c5c3dcd8-b22e-4178-8bca-092ca4b128a9
📒 Files selected for processing (8)
crates/labcolors-core/src/appearance.rscrates/labcolors-core/src/appearance_graph_tests.rscrates/labcolors-core/src/constraint_tests.rscrates/labcolors-core/src/lib.rscrates/labcolors-core/src/observation.rscrates/labcolors-core/src/observation_tests.rspackages/colors/bench/wasm.jsonscripts/check-wasm-size-budget.mjs
Что изменено
ColorInputIdдля authored Paint иSurfaceInputPortIdдля runtime backdrop разделены типом во всём private compiler/static-IR/binding path.#[cfg(test)]admission коррелированных point-sRGB8 observations: полный Scenario связывает все обязательные surface ports одновременно.headзадаётEmpty | Unknown | Observed, монотонную revision, exact idempotency/conflict иWaiting | Ready | Staleбез silent fallback.Причина
Authored цвет и изменяемая наблюдаемая поверхность раньше жили в одном ID/binding-пространстве. Такая модель не могла безопасно добавить runtime revision/freshness и сохранять корреляцию нескольких одновременно наблюдаемых входов без Cartesian-подстановок.
Границы
Это F2a proof-precondition, не публичный Session и не новый solver. Observation/compiler admission остаётся test-only; нет нового DTO, TypeScript/Swift/FFI/WASM wire, field/glass claim, output selection или compatibility layer. Production использует только typed surface port в уже существующем sealed point program.
Проверка
29686470897— PASS на exact head26c703d02dc4b0af0706a3301d7e6d5393069f23.29686470835— PASS на self-hosted Linux; macOS штатно skipped.385346 B, zero headroom; byte-exact release, headless Chrome и Node 22 consumer floor — PASS.