Skip to content

Proof: bind the full-domain mint gate to the exact full manifest identity (V5b2d) - #523

Merged
lemone112 merged 2 commits into
mainfrom
v5b2d-full-domain-gate
Aug 4, 2026
Merged

Proof: bind the full-domain mint gate to the exact full manifest identity (V5b2d)#523
lemone112 merged 2 commits into
mainfrom
v5b2d-full-domain-gate

Conversation

@lemone112

@lemone112 lemone112 commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

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 с count 2^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 count 2^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 rejection foreign_input для неканонического входа.
  • PROTOCOL.md: абзац full-domain gate приведён к реализованной семантике (ранее описывал count-only гейт с «дополнительным» domain_identity).
  • Тесты: новый hostile-модуль 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 больше не проходит).

Доказательства

  • RED ef07e0f: 9 тестов — 1 FAIL по семантике (чужая identity проходила гейт) + 6 ERROR по отсутствующему API; существующий тест dual_proof зафиксировал ту же дыру.
  • GREEN 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

  • Улучшения

    • Усилена проверка заявлений о полном домене: теперь требуется совпадение как полного количества точек, так и канонической идентичности манифеста.
    • Неканонические, изменённые и неполные манифесты отклоняются.
  • Документация

    • Описаны каноническая кодировка полного манифеста и уникальный диапазон пространства sRGB8.
  • Тесты

    • Добавлены проверки стабильности идентичности манифеста и отклонения недействительных или неполных заявлений.

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: d5ba7d84-c5d6-4143-b9f8-521b24fb4385

📥 Commits

Reviewing files that changed from the base of the PR and between 8a05b4a and 8cbae3c.

📒 Files selected for processing (5)
  • proof/region/v1/PROTOCOL.md
  • proof/region/v1/dual_proof.py
  • proof/region/v1/region_proof_protocol.py
  • proof/region/v1/tests/test_dual_proof.py
  • proof/region/v1/tests/test_full_domain_gate.py

Walkthrough

Изменения ужесточают проверку full-domain claim в proof/region/v1. Добавлена кэшируемая функция exact_full_domain_manifest_v1, возвращающая канонический манифест полного домена. Предикат проверки full-domain теперь требует совпадения domain_identity с этим манифестом вместе с domain_point_count. Обновлены документация и тесты.

Changes

Full-domain manifest identity gate

Layer / File(s) Summary
Каноническая full-domain manifest функция
proof/region/v1/region_proof_protocol.py
Добавлен импорт cache и функция exact_full_domain_manifest_v1, возвращающая ReducedDomainManifestV1 с единственным диапазоном [0, OUTPUT_CARDINALITY_V1) и полным point_count.
Проверка identity в full-domain gate
proof/region/v1/dual_proof.py, proof/region/v1/PROTOCOL.md
Предикат _claim_spans_full_domain_v1 теперь проверяет domain_identity claim против identity канонического манифеста в дополнение к domain_point_count. PROTOCOL.md описывает уточнённое требование и последствия для неканонических, чужих или reduced-domain claims.
Тесты gate и manifest
proof/region/v1/tests/test_dual_proof.py, proof/region/v1/tests/test_full_domain_gate.py
Тест полного домена использует identity точного манифеста, добавлены отрицательные проверки для сокращённого identity. Новый модуль тестов проверяет стабильность identity манифеста, byte-идентичное кодирование, отклонение split-манифеста и отклонение чужой identity или неполного count в gate.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

  • Labpics-Team/lab-colors#497: PR напрямую расширяет canonical domain manifest и full-domain gate, введённые в PR #497.
  • Labpics-Team/lab-colors#514: Обе PR изменяют proof/region/v1/PROTOCOL.md и контракт авторизации full-domain в dual-proof.
  • Labpics-Team/lab-colors#522: Обе PR изменяют dual_proof.py и full-domain gate; данная PR усиливает проверку из PR #522, добавляя требование точной identity манифеста.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Заголовок точно описывает основное изменение: привязку full-domain mint gate к идентичности полного manifest.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch v5b2d-full-domain-gate

Comment @coderabbitai help to get the list of available commands.

@lemone112

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@lemone112
lemone112 merged commit 2bd80db into main Aug 4, 2026
10 checks passed
@lemone112
lemone112 deleted the v5b2d-full-domain-gate branch August 4, 2026 12:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant