refactor: keep appearance graph physical - #336
Conversation
WalkthroughУдалена классификация ChangesКонтракт физических фактов appearance
WASM-бюджет v7
Estimated code review effort: 3 (Moderate) | ~30 minutes 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: 2
🤖 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/semantic.rs`:
- Around line 691-697: В rustdoc-комментариях вокруг описания графа замените
англоязычные термины обычной прозы: `Differential` переведите как
«дифференциальный тест», `downstream` — как «последующий резолвер», а `oracle` —
как «эталон». Не изменяйте точные имена полей, API и код.
In `@docs/whitepaper.md`:
- Around line 213-219: В русскоязычном фрагменте замените англоязычные термины
Differential, wiring, outcomes, oracle и downstream solver на русские
эквиваленты, сохранив исходный смысл. Имена полей source/against/backdrop и
идентификаторы ссылок не изменяйте.
🪄 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: 38b80fc5-09b5-47fe-b6cd-6e28bd57954d
📒 Files selected for processing (8)
crates/labcolors-core/src/appearance.rscrates/labcolors-core/src/appearance_graph_tests.rscrates/labcolors-core/src/semantic.rsdocs/whitepaper.mdpackages/colors/README.mdpackages/colors/bench/wasm-size-budget-v7.jsonpackages/colors/test/release-contract.test.mjsscripts/check-wasm-size-budget.mjs
💤 Files with no reviewable changes (1)
- crates/labcolors-core/src/appearance.rs
|
@coderabbitai review Финальный bounded review после исправления корневого смешения size budget, same-source reproducibility и release provenance. Просьба проверить только текущий HEAD |
|
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
scripts/check-wasm-size-budget.mjs (1)
336-343: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winЗадокументируйте инвариант статического
declared-recipe-sha=match.Строка всегда печатает
match, потому чтоvalidateBudgetValue()уже фейлит раньше при расхожденииrecipeSha256. Это корректно сейчас, но неявно — если порядок вызовов (readBudget→evaluateWasmBudget) когда-нибудь изменится, лог начнёт лгать без единого признака ошибки в самомformatResult.💬 Предлагаемое уточнение
function formatResult(result, artifact) { const delta = `${result.deltaBytes >= 0 ? "+" : ""}${result.deltaBytes}`; return ( `WASM size budget ${result.status} role=${result.role} raw=${result.rawBytes}B ` + `ceiling=${result.maxRawBytes}B delta=${delta}B gzip=${result.gzipBytes}B ` + `diagnostic-only platform=${result.currentPlatform} artifact=${artifact} ` + + // Recipe SHA is already enforced fail-fast in validateBudgetValue(); reaching + // this point guarantees the match, so it is safe to report statically here. `artifact-sha256=${result.artifactSha256} declared-recipe-sha=match` ); }🤖 Prompt for 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. In `@scripts/check-wasm-size-budget.mjs` around lines 336 - 343, Зафиксируйте инвариант для статического поля declared-recipe-sha=match в formatResult: это значение допустимо только потому, что validateBudgetValue() проверяет recipeSha256 до формирования результата в цепочке readBudget → evaluateWasmBudget. Добавьте краткое пояснение рядом с формированием строки, не меняя текущий формат вывода.
🤖 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 `@docs/whitepaper.md`:
- Around line 220-221: В тексте документации замените смешанное выражение
«typography-фактов» на «типографических фактов», а грамматически некорректное
«никакой размер/вес текста» — на «ни размер, ни вес текста», сохранив остальной
смысл абзаца.
---
Outside diff comments:
In `@scripts/check-wasm-size-budget.mjs`:
- Around line 336-343: Зафиксируйте инвариант для статического поля
declared-recipe-sha=match в formatResult: это значение допустимо только потому,
что validateBudgetValue() проверяет recipeSha256 до формирования результата в
цепочке readBudget → evaluateWasmBudget. Добавьте краткое пояснение рядом с
формированием строки, не меняя текущий формат вывода.
🪄 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: 70fcb76c-cc61-4e42-a0dd-4a4d39eebe6a
📒 Files selected for processing (7)
.github/workflows/ci.ymlcrates/labcolors-core/src/semantic.rsdocs/whitepaper.mdpackages/colors/README.mdpackages/colors/bench/wasm-size-budget-v7.jsonpackages/colors/test/release-contract.test.mjsscripts/check-wasm-size-budget.mjs
|
Review disposition для замечания вне diff о |
Результат
Physical appearance graph больше не хранит authored
EvidenceClassиLegacyCompatibility. Occurrence содержит толькоsource / against / backdrop; source-over задаётся версионированнымCompositionProfileV1и replay-сертификатом.RED → GREEN
ForegroundOccurrenceSpecтребовал нефизическую evidence-ось, аResolvedOccurrenceпереносил её в результат.454385 → 454334 B.±1 Bостаётся RED; artifact SHA запрещён в size schema.cargo clean, повторяет тот же exact versioned recipe и fail-closed сравнивает полныеpkg/иcompiler/outputs. Это проверяет повторяемость внутри одного toolchain-pinned CI job, не cross-run/cross-host identity.diff, fail-body path guard и ложныйrecipe-sha=matchне проходят.HEAD/GITHUB_SHA → actual role SHA → build-metadata → tarball → publish readback.Инварианты
pub(crate).Проверка
npm test: 155/155.npm run typecheck: green.454334 B, SHA999ca532…de32.229658 B, SHA34e2a561…bc8d.CodeRabbit одобрил срез на
2ee9f24. Финальный67b1cbaсодержит только fail-closed hardening по независимому hostile-review; повторный incremental CodeRabbit run попал в fair-usage limit, поэтому новых циклов ради обязательного «найти ещё что-нибудь» не запускалось. Независимый финальный verdict: GO.