Core: отделить semantic family от runtime artifact - #492
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (10)
WalkthroughДобавлена V2-модель family: семантические релизы отделены от транспортных receipts, артефакты проходят строгую загрузку и связывание, а program/session/attachment используют сохранённые V2-артефакты и retry-состояния. ChangesFamily V2 и артефакты
Estimated code review effort: 5 (Critical) | ~120 minutes Possibly related issues
Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 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/family_artifact.rs`:
- Around line 1003-1054: Уберите недостижимую дублирующую ветку Err из цикла
bind после предварительной проверки semantic в начале функции. В цикле по
declarations используйте поиск, который выражает гарантированный успех
(например, преобразование результата в значение с обработкой структурного
инварианта), сохранив получение artifact_index, отметку used и добавление в
slots; предварительную проверку и канонический порядок диагностики не изменяйте.
- Line 29: Добавьте краткие комментарии к константам MAX_SRGB8_MEMBER_COUNT_V1 и
HEADER_LEN_V2, описав их инварианты: первая равна полной кардинальности
sRGB8-домена (1 << 24), а вторая соответствует точной длине раскладки
сертификата, используемой encode_certificate и decode_certificate. Укажите
состав полей HEADER_LEN_V2 и отметьте, что изменение формата сертификата требует
синхронного обновления этой константы.
In `@crates/labcolors-core/src/family.rs`:
- Around line 168-200: Replace the inline schema-version literals in the
canonical image and semantic release hashing paths with named constants declared
near the corresponding domain constants. Use distinct constants for the
independently versioned encodings, and update the hashing calls in the canonical
image digest logic and semantic_family_release_id_v2 to reference them.
In `@crates/labcolors-core/src/program_family_tests.rs`:
- Around line 762-794: Update
missing_loaded_artifact_is_rejected_before_a_session_exists to assert that
FAMILY_MEMBERSHIP_ASSESS_CALLS remains zero after the failed
instantiate_with_family_artifacts call, before retrying with the returned
artifact bundle. Keep the existing failure-cause and successful-retry assertions
unchanged.
In `@crates/labcolors-core/src/program_identity.rs`:
- Around line 26-27: Проверьте использование FAMILY_CERTIFICATE_VERTEX_V1 и
FAMILY_MEMBERSHIP_RELEASE_V1 в program identity: если они нужны только тестам,
добавьте для обеих констант #[cfg(test)]; иначе оставьте их в релизной схеме и
добавьте короткий комментарий, фиксирующий, что значения 1 не должны
переиспользоваться.
🪄 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: 3e0bfcf3-6170-4847-b784-4ceb62d418c4
📒 Files selected for processing (16)
crates/labcolors-core/src/constraints/family.rscrates/labcolors-core/src/constraints/mod.rscrates/labcolors-core/src/constraints/relation.rscrates/labcolors-core/src/family.rscrates/labcolors-core/src/family_artifact.rscrates/labcolors-core/src/family_artifact_tests.rscrates/labcolors-core/src/family_tests.rscrates/labcolors-core/src/lib.rscrates/labcolors-core/src/program.rscrates/labcolors-core/src/program/attachment.rscrates/labcolors-core/src/program/attachment/tests.rscrates/labcolors-core/src/program_family_tests.rscrates/labcolors-core/src/program_identity.rscrates/labcolors-core/src/program_identity_tests.rscrates/labcolors-core/src/program_session.rscrates/labcolors-core/src/session.rs
💤 Files with no reviewable changes (1)
- crates/labcolors-core/src/family_tests.rs
|
@coderabbitai review |
✅ Action performedReview finished.
|
Что изменено
FamilyId → SemanticFamilyReleaseIdV2; codec bytes и artifact receipt исключены из Program identity и membership evidence.Почему
Предыдущая модель смешивала смысл точного family-set, его storage representation и lifetime владельца. Это делало Program identity зависимой от codec, создавало второй источник истины и вынуждало повторять дорогую подготовку при host retry. Срез V5b2p проводит границу перед первым production codec (
RawBitmap24, следующий V5b2a), не добавляя временный public API.Проверка
cargo +1.96.0 test --workspace --all-targets --no-fail-fast— PASS; core 976 passed, 6 ignored.cargo +1.96.0 clippy --workspace --all-targets --all-features -- -D warnings— PASS.cargo +1.96.0 fmt --all -- --checkиgit diff --check— PASS.RUSTDOCFLAGS='-D warnings' cargo +1.96.0 doc --workspace --no-deps— PASS.Debugмутанта отдельно 3/3 killed.ResourceExhaustedи equality владеющего artifact удалены из пространства состояний.Summary by CodeRabbit
Новые возможности
Изменения
Тесты