Proof: bind the full-domain mint gate to the exact full manifest identity (V5b2d) - #523
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 (5)
WalkthroughИзменения ужесточают проверку full-domain claim в proof/region/v1. Добавлена кэшируемая функция exact_full_domain_manifest_v1, возвращающая канонический манифест полного домена. Предикат проверки full-domain теперь требует совпадения domain_identity с этим манифестом вместе с domain_point_count. Обновлены документация и тесты. ChangesFull-domain manifest identity gate
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
@coderabbitai review |
✅ Action performedReview finished.
|
V5b2d-0: full-domain mint gate биндит content identity exact full manifest
Срез цепи V5b2d full-domain materialisation (следующий узел DAG после
DualProofReceiptV1, merged 8a05b4a). По продуктовому SSOT (LAB_COLORS_MASTER_ROADMAP.md, L4567-4570): «V5b2d отдельно требует exact full manifest: единственный range[0, 2^24),point_count = 2^24, его content identity и связанный full-domain proof. Только этот gate допускает family artifact, receipt и content address».Дыра, которую закрывает срез
claim_spans_full_domain_v1проверял толькоdomain_point_count == 2^24. Но сырой claim (DualComparisonClaimV1.parse) несётdomain_identityкак непроверенную 32-байтовую координату: ничто не связывает заявленный point count с identity домена. Claim с count2^24и произвольной чужой identity проходил гейт — RED-тестtest_full_count_with_foreign_identity_does_not_spanдоказал это на main (True is not false).Изменения
region_proof_protocol.exact_full_domain_manifest_v1()— единственный exact full manifest ([0, 2^24), point count2^24), выводится из канонической кодировки протокола, не пинится отдельным hash. Каноническая range-грамматика отвергает overlap/adjacency, поэтому полного покрытия достигает ровно один manifest (hostile-тест split-покрытия подтверждает).dual_proof._claim_spans_full_domain_v1усилен: истина только приpoint_count == 2^24Иdomain_identity == identity exact full manifest. Публичный путь сохраняет typed rejectionforeign_inputдля неканонического входа.PROTOCOL.md: абзац full-domain gate приведён к реализованной семантике (ранее описывал count-only гейт с «дополнительным» domain_identity).tests/test_full_domain_gate.py(9 тестов: каноничность/реинкод/стабильность identity, exact-claim проходит, чужая/мутированная identity и short count не проходят, typed rejection) + обновлённый контракт вtests/test_dual_proof.py(count-only claim с reduced-domain identity больше не проходит).Доказательства
ef07e0f: 9 тестов — 1 FAIL по семантике (чужая identity проходила гейт) + 6 ERROR по отсутствующему API; существующий тест dual_proof зафиксировал ту же дыру.8cbae3c:tests.test_full_domain_gate+tests.test_region_proof_protocol— 31/31 OK (0.64s);tests.test_dual_proof— 8/8 OK (61s, WSL Ubuntu, Python 3.12).py_compileна все изменённые модули чист.Срез protocol-only: runtime/Core/WASM не тронуты; следующий узел V5b2d — frozen full-domain corpus и full-domain RUN обоих engine paths.
@coderabbitai review
Summary by CodeRabbit
Улучшения
Документация
Тесты