Skip to content

Core: удалить мёртвый Source из конечной цели - #487

Merged
lemone112 merged 2 commits into
mainfrom
agent/v3c-target-sum
Jul 28, 2026
Merged

Core: удалить мёртвый Source из конечной цели#487
lemone112 merged 2 commits into
mainfrom
agent/v3c-target-sum

Conversation

@lemone112

@lemone112 lemone112 commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Контекст

После squash merge #485 ветка перебазирована на main@cc8245f4f231bcae17f00fcd1d020ba5c84ff014; проверяемый diff содержит только V3c.

После V3b у fixed- и finite-целей оставалась общая форма { source, domain }. Для finite-цели source уже не участвовал в допустимом множестве: он служил только холодным seed и попадал в content identity. Перед каждой физической оценкой кандидат всё равно заменял его атомарно. Поэтому один семантически мёртвый ID менял идентичность программы и оставлял невозможное состояние в API.

Изменение

  • физический intent цели замкнут в сумму FixedSource(SourceId) | Finite(FinitePaintDomainV1);
  • finite-domain допускается в Draft только непустым типом;
  • finite-конструктор больше не принимает SourceId;
  • source-edge и MissingFixedSource существуют только для fixed-цели;
  • UnconstrainedFiniteTarget описывает только конечную цель;
  • удалён поздний EmptyTargetDomain;
  • content identity сделан V5 без V1–V4 aliases;
  • finite identity зависит только от физического домена, графа и constraints;
  • терминальная alpha-семантика V3b и порядок кандидатов сохранены;
  • whitepaper и exact receipt синхронизированы.

Механическое расширение lock-set на program_session_tests.rs согласовано: сохранение старого source-accessor противоречило бы hard cut; иных изменений скоупа нет. appearance.rs, joint.rs, публичный package/WASM, roadmap и Issues не менялись.

TDD и опровержение

RED differential: одинаковая физическая finite-программа с изменённым только мёртвым source-ID дала разные V4 digest; тест завершился с кодом 101.

GREEN: V5 делает такую перестановку неразличимой, а fixed source остаётся частью физического intent.

Manual mutants: удаление проверки пустого домена превратило Err(Empty) в Ok([]); возврат запрещённого finite Target → Source изменил V5 identities. Оба targeted-теста завершились RED с кодом 101; mutants отменены.

Gates на опубликованном head

  • cargo +1.96.0 test --workspace --all-features --locked — 1151 passed, 0 failed, 7 ignored;
  • cargo test -p labcolors-core -q — 938 unit: 932 passed, 6 ignored; все integration suites зелёные;
  • cargo +1.96.0 clippy --workspace --all-targets --all-features --locked -- -D warnings — exit 0;
  • cargo +1.96.0 fmt --all -- --check — exit 0;
  • cargo +1.85.0 check --workspace --all-targets --locked — exit 0;
  • git diff --check — exit 0;
  • receipt verifier — PRODUCT_IDENTITY_VERIFIED; RESEARCH_REPLAY_NOT_EXECUTED;
  • receipt hostile suite — 31/31;
  • receipt SHA-256: 3b51f8ecf38181d68b619b30ebb1fdd28a17606f5ac2699bf8070497a0515b80.

Head: 258a74065a99df2012a2e15df8ec42f3db065d46
Tree: b88cd5402b7fd8a8f5f2e582349be8872ae2cdbb

Summary by CodeRabbit

  • Новые возможности

    • Добавлена модель конечных доменов с непустым набором допустимых кандидатов.
    • Уточнено разделение фиксированных и конечных целей при компиляции программ.
    • Обновлена адресация содержимого программ до версии V5.
  • Исправления

    • Улучшены диагностика отсутствующих источников и обработка некорректных конечных целей.
    • Исключено влияние неиспользуемых источников на идентичность программы.
  • Документация

    • Обновлено описание зависимостей, целей и канонической адресации программ.

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

Изменена модель конечных целей: вместо источника и сырого списка кандидатов используется непустой FinitePaintDomainV1 внутри TargetIntentV1. Каноническая content identity переведена на V5, а компиляция, ошибки, тесты и документация обновлены.

Changes

Модель целей и API

Layer / File(s) Summary
Контракты целей и ошибки
crates/labcolors-core/src/program.rs, crates/labcolors-core/src/program_session.rs, crates/labcolors-core/src/program_api_tests.rs, crates/labcolors-core/src/program_session_tests.rs
Добавлены FinitePaintDomainV1 и TargetIntentV1, удалён TargetDomainV1, изменены конструкторы целей, identity-методы и варианты ошибок компиляции.
Каноническая identity V5 и компиляция
crates/labcolors-core/src/program_identity.rs, crates/labcolors-core/src/program_identity_tests.rs, crates/labcolors-core/src/program_session.rs, docs/whitepaper.md, crates/labcolors-core/contracts/clean-set-srgb8-v1/*
Граф целей, canonical preimage и SHA-256 переключены на V5; finite-цели больше не создают связь с физически мёртвым seed.
Миграция построителей и тестовых сценариев
crates/labcolors-core/src/*tests.rs, crates/labcolors-core/src/program/attachment/tests.rs
Тестовые программы передают FinitePaintDomainV1, извлекают TargetIntentV1 и проверяют новые варианты диагностик и identity.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ProgramAuthor
  participant prepare_program
  participant compile_targets
  participant compile_program_content_identity_v5
  ProgramAuthor->>prepare_program: submit TargetIntentV1
  prepare_program->>compile_targets: validate and lower finite domain
  compile_targets-->>prepare_program: compiled target bindings
  prepare_program->>compile_program_content_identity_v5: compute content identity
  compile_program_content_identity_v5-->>ProgramAuthor: ProgramContentIdentityV5
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 34.62% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Заголовок точно отражает основное изменение PR: удаление мёртвого Source из конечной цели.
✨ 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 agent/v3c-target-sum

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

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 28, 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.

Base automatically changed from agent/v3b-atomic-paint-candidates to main July 28, 2026 05:31

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

Финальный содержательный цикл на exact head e51645985ad16ef82ed0256a7ade16f7457b0564 после rebase на main@cc8245f4f231bcae17f00fcd1d020ba5c84ff014.

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

@lemone112 Принял: запускаю финальный содержательный review для #487 на exact head e51645985ad16ef82ed0256a7ade16f7457b0564 после rebase на указанный main.

✅ 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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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/contracts/clean-set-srgb8-v1/receipt-v1.json`:
- Around line 86-91: Обновите поле sha256 в записи артефакта с ролью
point_attachment_tests для program/attachment/tests.rs, пересчитав хэш
фактического файла. Убедитесь, что значение содержит ровно 64 шестнадцатеричных
символа и соответствует содержимому файла.

In `@crates/labcolors-core/src/program_identity_tests.rs`:
- Around line 1192-1260: Усилить тест
finite_target_dead_source_cannot_change_physical_content_identity: вместо
перестановки сигналов создайте две программы, где один неиспользуемый Source
получает разные значения, причём новое значение отсутствует в первой программе.
Сохраните остальные идентификаторы и содержимое неизменными, чтобы проверка
first.content_identity() == second.content_identity() выявляла включение
мёртвого Source в identity.
🪄 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: 9e3ea4d1-7c40-4160-8404-ba91cb0ee066

📥 Commits

Reviewing files that changed from the base of the PR and between cc8245f and e516459.

📒 Files selected for processing (16)
  • crates/labcolors-core/contracts/clean-set-srgb8-v1/receipt-v1.json
  • crates/labcolors-core/contracts/clean-set-srgb8-v1/receipt-v1.sha256
  • crates/labcolors-core/src/generic_boundary_tests.rs
  • crates/labcolors-core/src/program.rs
  • crates/labcolors-core/src/program/attachment/tests.rs
  • crates/labcolors-core/src/program_api_tests.rs
  • crates/labcolors-core/src/program_boundary_tests.rs
  • crates/labcolors-core/src/program_clean_set_tests.rs
  • crates/labcolors-core/src/program_identity.rs
  • crates/labcolors-core/src/program_identity_tests.rs
  • crates/labcolors-core/src/program_joint_integration_tests.rs
  • crates/labcolors-core/src/program_mixed_evaluator_tests.rs
  • crates/labcolors-core/src/program_point_causality_tests.rs
  • crates/labcolors-core/src/program_session.rs
  • crates/labcolors-core/src/program_session_tests.rs
  • docs/whitepaper.md

Comment thread crates/labcolors-core/contracts/clean-set-srgb8-v1/receipt-v1.json
Comment thread crates/labcolors-core/src/program_identity_tests.rs Outdated
@lemone112
lemone112 merged commit 95f88a2 into main Jul 28, 2026
10 checks passed
@lemone112
lemone112 deleted the agent/v3c-target-sum branch July 28, 2026 06:12
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