Skip to content

O1b-0: отделить подготовку Session от commit - #477

Merged
lemone112 merged 3 commits into
mainfrom
agent/o1b-prepared-transition
Jul 27, 2026
Merged

O1b-0: отделить подготовку Session от commit#477
lemone112 merged 3 commits into
mainfrom
agent/o1b-prepared-transition

Conversation

@lemone112

@lemone112 lemone112 commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Что изменено

  • Добавлен линейный PreparedSessionTransition: admission и evaluation завершаются до публикации состояния.
  • Drop подготовленного перехода сохраняет committed raw head, lifecycle и previous evidence.
  • commit потребляет переход, выполняет только infallible moves без аллокаций и удерживает точную owner-generation до конца публикации.
  • Удалены production-пути немедленного Session::update*, OwnerV1::update и SessionV1::apply_update.
  • Program получает тот же prepare/commit seam без подключения sink, CSS, attachment или Hold.

Зачем

Старый Session::update публиковал revision/lifecycle до того, как будущий внешний sink мог атомарно принять полный patch. Компенсирующий rollback не устраняет эту рассинхронизацию. Этот срез создаёт необходимую транзакционную границу для O1b-1.

Проверки

  • RED: новый abort/retry contract не компилировался из-за отсутствующих prepare API.
  • Rust 1.96: fmt, Clippy -D warnings, Core и полный workspace — GREEN.
  • Core: 865 passed, 6 ignored.
  • MSRV Core 1.85 — GREEN.
  • Deterministic property state machine: prepare/drop, fresh commit, replay, rejection — GREEN.
  • Hostile Drop-order и owner-replacement tests — GREEN.
  • Commit allocations: 0 для всех modeled lifecycle/payload ветвей и replay.
  • Независимые architecture/API/state-machine и mutation-intent reviews — PASS.

Summary by CodeRabbit

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

    • Обновления для сессий и программ теперь выполняются в двух этапах: подготовка (prepare_*) и отдельная фиксация (commit).
    • Подготовленное изменение можно отменить без влияния на текущее состояние; фиксация применяет уже рассчитанный результат без повторной оценки.
    • Добавлена поддержка prepared-логики в просмотрах и переходах.
  • Исправления

    • Улучшена корректность инвариантов привязки доказательств и стабилизация поведения состояний Waiting/Ready/Failed/Stale/Unknown.
    • Усилены проверки порядка жизненного цикла и повторных попыток после подготовки/отмены.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 27, 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: cecc62cd-bac9-4d4c-86ed-c3db8219a6e4

📥 Commits

Reviewing files that changed from the base of the PR and between 84097e8 and 7e97ced.

📒 Files selected for processing (7)
  • 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/contracts/point-support-reference-surplus-q55-bps-proof-v1.json
  • crates/labcolors-core/src/generic_boundary_tests.rs
  • crates/labcolors-core/src/program.rs
  • crates/labcolors-core/src/program_mixed_evaluator_tests.rs
  • scripts/verify_point_support_surplus.py

Walkthrough

Обновление сессий переведено на двухфазный поток: prepare_update создаёт линейный подготовленный переход, а commit публикует состояние и проекцию. Тестовые API и сценарии обновлены для проверки отложенной фиксации, сброса prepare и сохранения evidence.

Changes

Двухфазный переход сессии

Layer / File(s) Summary
Подготовка и фиксация перехода
crates/labcolors-core/src/session.rs, crates/labcolors-core/src/session_tests.rs, crates/labcolors-core/src/generic_boundary_tests.rs
Добавлены SessionView, PreparedSessionTransition и методы prepare_*/commit; проверки фиксируют линейность перехода, порядок публикации и отсутствие немедленной authority.
Программная граница commit
crates/labcolors-core/src/program.rs, crates/labcolors-core/src/program_boundary_tests.rs, crates/labcolors-core/src/program_api_tests.rs
OwnerV1::update заменён на prepare_update, а проекция создаётся consuming-коммитом подготовленного перехода.
Модель переходов и PrepareDrop
crates/labcolors-core/src/program_mixed_evaluator_tests.rs
Модель разделяет подготовку и фиксацию, добавляет PrepareDrop и проверяет lifecycle, replay и allocation-поведение.
Перевод интеграционных тестов на commit
crates/labcolors-core/src/*_tests.rs
Вызовы update заменены на тестовые commit-адаптеры при сохранении проверок состояний, ошибок, evidence и операций.
Контрольные суммы и проверка исходников
crates/labcolors-core/contracts/*, scripts/verify_point_support_surplus.py
Обновлены receipts, proof-хэши и ожидаемый digest исходников для нового содержимого.

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

Possibly related PRs

  • Labpics-Team/lab-colors#469 — также изменяет модель переходов и сценарии вокруг потоков update/commit в program_mixed_evaluator_tests.rs.
  • Labpics-Team/lab-colors#447 — затрагивает point-support тесты и revision-bound поток оценки.
  • Labpics-Team/lab-colors#476 — пересекается с обновлением clean-set receipts и проверок артефактов.
🚥 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 Заголовок точно отражает основное изменение: разделение подготовки Session и commit.
Docstring Coverage ✅ Passed Docstring coverage is 91.45% which is sufficient. The required threshold is 80.00%.
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 agent/o1b-prepared-transition

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

@coderabbitai

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

@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: 3

🤖 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/program_mixed_evaluator_tests.rs`:
- Line 2335: Update the model checks following PrepareDrop to validate identity
of the historical evidence, not merely equivalent state. Preserve and compare
the original certificate and backing identities across Drop, rejecting recreated
replacements while retaining the existing acceptance path when the original
evidence is preserved.

In `@crates/labcolors-core/src/program.rs`:
- Around line 1859-1863: Добавьте к конструктору
PreparedSessionTransitionV1::prepared() комментарий, объясняющий, почему он не
принимает owner и session: Session уже мутабельно заимствована подготовленным
переходом, а связи лайфтаймов 'owner и 'session обеспечивает сам
PreparedSessionTransitionV1. Зафиксируйте этот инвариант и не ограничивайтесь
описанием присваивания PhantomData.
- Around line 1866-1876: Добавьте атрибут #[must_use = "commit the prepared
transition or drop it intentionally"] к структуре PreparedSessionTransitionV1,
согласовав его с core-типом и сохранив существующий контракт prepare/commit.
🪄 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: 541db894-8563-4bb2-a2a2-4df06996aea1

📥 Commits

Reviewing files that changed from the base of the PR and between c1deea0 and 84097e8.

📒 Files selected for processing (13)
  • crates/labcolors-core/src/generic_boundary_tests.rs
  • crates/labcolors-core/src/point_support_tests.rs
  • crates/labcolors-core/src/program.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_joint_integration_tests.rs
  • crates/labcolors-core/src/program_lcs_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_tests.rs
  • crates/labcolors-core/src/session.rs
  • crates/labcolors-core/src/session_tests.rs

Comment thread crates/labcolors-core/src/program_mixed_evaluator_tests.rs
Comment thread crates/labcolors-core/src/program.rs
Comment thread crates/labcolors-core/src/program.rs

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

Пожалуйста, проверяй exact head 85f6a35d2c07876ab0428ab935f2ff24379b1720; второй коммит только канонически переиздаёт clean-set product receipt для трёх изменённых source-artifacts.

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

@lemone112 Принято: проверю изменения на exact head 85f6a35d2c07876ab0428ab935f2ff24379b1720. Второй коммит учту как каноническое переиздание clean-set product receipt и не буду трактовать его как отдельное функциональное изменение.

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

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

Проверьте точный head 7e97ced2dfe381c35df8e2343efdf61cb14070b2: исправлены все три доказанных замечания первого цикла; канонически обновлены point-support proof и clean-set receipt. Локально зелёные workspace tests (866 core tests + transport/conformance suites), clippy, rustfmt, docs, MSRV, full research replay и hostile proof/receipt tests.

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "HEAD:"
git rev-parse HEAD
echo
echo "Recent commits:"
git log -3 --oneline --decorate
echo
echo "Requested commit:"
git show -s --format='%H%n%P%n%s' 7e97ced2dfe381c35df8e2343efdf61cb14070b2
echo
echo "Files changed by requested commit:"
git diff-tree --no-commit-id --name-status -r 7e97ced2dfe381c35df8e2343efdf61cb14070b2

Length of output: 1315


@lemone112, exact head подтверждён: рабочая копия находится на 7e97ced2dfe381c35df8e2343efdf61cb14070b2 (parent: 85f6a35d2c07876ab0428ab935f2ff24379b1720).

В область этого коммита входят proof/receipt-артефакты, их проверяющий скрипт и изменения в generic_boundary_tests.rs, program.rs и program_mixed_evaluator_tests.rs. Рассматриваю обновления point-support proof и clean-set receipt как канонические доказательные привязки в контексте соответствующих исходных изменений.

@lemone112
lemone112 marked this pull request as ready for review July 27, 2026 13:03
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