V1b: разделить измерение и hard-решение - #360
Conversation
|
@coderabbitai review |
✅ Action performedReview finished.
|
✅ Action performedReview finished.
|
WalkthroughМодель проверки ограничений переведена на двухфазную обработку: evaluator формирует measurement, затем hard classifier возвращает Pass или Violation с typed evidence. Обновлены exact и WCAG адаптеры, analog-разрешение, recheck-результаты и форматирование ошибок. ChangesТипизированная hard-классификация
Estimated code review effort: 4 (Complex) | ~60 minutes Sequence Diagram(s)sequenceDiagram
participant AlphaAPI
participant resolve_verified
participant assess_visible_point_hard
participant ExactSrgb8IdentityV1
AlphaAPI->>resolve_verified: resolve requested alpha
resolve_verified->>assess_visible_point_hard: evaluate resolved occurrence
assess_visible_point_hard->>ExactSrgb8IdentityV1: measure visible sRGB8 point
ExactSrgb8IdentityV1-->>assess_visible_point_hard: Pass or Violation
assess_visible_point_hard-->>resolve_verified: typed evidence or error
resolve_verified-->>AlphaAPI: verified value or formatted message
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 |
|
Caution Failed to replace (edit) comment. This is likely due to insufficient permissions or the comment being deleted. Error details |
Что изменено
Result<Measurement, E>, sealed classifier — единственныйHardDecision<Pass, Violation>.cfg(test)доказательством применимости канонического evaluator-а; production/public API этим PR не расширяется.Почему
Корневая проблема: прежний exact evaluator смешивал ошибку самого измерения с валидным отрицательным решением. Первая версия исправления добавляла собственный
Fault, который невозможно было невакуумно проверить при единственном production evaluator-е сInfallible; независимая мутация это обнаружила. Итоговый контракт использует обычныйResult::Errи один общий hard-decision без второго изоморфного enum.Влияние
?, а не маскируются как violation.386547 Braw, SHA-2566e1fc7715cc13d2b1a7c16154fa752c5a6b0ca7294155855f0debf68b112c700; source run29716449361. Exact raw-budget равен измеренному артефакту, gzip остаётся diagnostic-only.Проверки
cargo fmt --all -- --checkcargo test --workspace --locked --quiet— green; core lib 604 passed, 6 ignoredcargo test -p labcolors-core --lib --release --locked --quiet— 602 passed, 6 ignoredcargo clippy --workspace --all-targets --locked -- -D warningsRUSTDOCFLAGS='-D warnings' cargo doc --workspace --no-deps --locked --quietnpm test --prefix packages/colors -- --test-reporter=dot— 217 passednpm run typecheck --prefix packages/colorsnode scripts/check-wasm-size-budget.mjs== → !=caught; 0 missed, 0 timeout, 5 type-invalid/unviable mutants