MOffice

Две параллельные сессии: протокол работы

Действует с 2026-10-04. Цель — выполнить фазу 0 плана (docs/08-roadmap.md, раздел 3.0) и первые шаги отчёта docs/11-open-source-reuse.md двумя сессиями Claude Code одновременно так, чтобы они не мешали друг другу. Правообладатель — Орос Алексей Михайлович (ИП Орос А.М.); весь код — под лицензией правообладателя (файл LICENSE). Владелец разрешил улучшать и дорабатывать всё по ходу работы без отдельного согласования (библия, раздел 12, п. 37).

1. Кто что делает

Сессия A «Ядро» Сессия B «Платформа»
Бриф docs/sessions/A-kernel.md docs/sessions/B-platform.md
Ветка phase0/kernel phase0/platform
Суть модели документов, раскладка и рендер, кодеки, формулы (форк IronCalc), корпус тестов, контракт FFI оболочка Qt/QML, CI и сборка, лицензии и шифрование, серверы ID/лицензий, юридические документы, сайт документации
Стенд на sagr meridian-lab.24oros.ru → 192.168.1.90:18301, /opt/projects/meridian-lab сайт moffice.24oros.ru → 18300 (существующий); API moffice-api.24oros.ru → 192.168.1.90:18302, /opt/projects/meridian-api
Локальный порт предпросмотра 8781 8782

2. Карта владения файлами

Править файл может только его владелец. Нужна правка в чужой зоне — запрос в журнал другой сессии (раздел 4) или сообщение ей напрямую.

Путь Владелец
kernel/crates/* — все крейты, кроме перечисленных у B A
kernel/crates/meridian-ffi/ и include/meridian.h (контракт FFI) A
kernel/crates/meridian-license/, meridian-id/, meridian-crypto/, meridian-update/, meridian-raster/ (свой растеризатор для ядра и оболочки, шаг 6 плана «весь код свой») B
tests/corpus/, tools/corpus-tool/, scripts/corpus-test.sh, scripts/gx10_llm.py, kernel/spikes/ A
docs/algorithms/, docs/04-file-formats.md, docs/apps/{write,sheets,slides,draw,paint,pdf,math}.md A
docs/research/spikes/A-*.md A
ui/ (своя оболочка без Qt, решение № 39), shell/ (Qt-прототип — эталон до паритета), services/, tools/keygen/, mockups/, deploy/, scripts/build_site.py, scripts/check_mockups.py, scripts/oss_verify.py B
.github/, justfile, Cargo.toml (корень), deny.toml, rust-toolchain.toml, .gitignore, README.md, LICENSE, third_party.toml, scripts/third_party.py B
THIRD_PARTY.md, NOTICE, sbom.cdx.json — генерируются scripts/third_party.py из Cargo.lock и third_party.toml общие: руками не править; любая сессия перегенерирует их, если её зависимость изменила Cargo.lock; при конфликте — перегенерировать
docs/00-foundation.md (библия), docs/05-design-system.md, docs/08-roadmap.md, docs/10-licensing-accounts.md, docs/11–13, docs/legal/, docs/apps/{hub,notes,mail,base,forms}.md, spec/ B
ui/meridian-sheets/, docs/sessions/C-log.md, plan/ (дорожка C — окно Sheets, отчёт и прототип; запросы к meridian-ui/meridian-platform — во «Входящие» B-log) C
docs/sessions/A-log.md A (B только дописывает запросы в раздел «Входящие»)
docs/sessions/B-log.md B (A только дописывает запросы в раздел «Входящие»)
docs/sessions/CONTRACTS.md оба: каждый правит только свой раздел
docs/03-architecture.md оба: разделы о ядре (крейты ядра, модель документа, раскладка, рендер, кодеки, формулы) — A; оболочка, сервисы, процессы, CI, платформы, безопасность — B
Cargo.lock общий: при конфликте взять версию из origin/main и выполнить cargo check --workspace

Предложения в библию сессия A пишет в свой журнал (раздел «Предложения в библию»); сессия B переносит их в библию при ближайшей синхронизации и отмечает это в журнале A.

3. Git: как сливать работу

  1. Каждая сессия работает только в своей ветке (или в worktree, который создало приложение, — тогда ветку переименовать в phase0/kernel / phase0/platform).
  2. Обновление от main: в worktree приложения — инструмент sync_with_base_branch; иначе git fetch origin && git rebase origin/main.
  3. Слияние в main — не реже раза в день и после каждой завершённой задачи, только быстрой перемоткой:
    git fetch origin && git rebase origin/main
    just ci        # = fmt, clippy, test, cargo deny, third_party --check, check_mockups, сборка сайта
    # без just: cargo fmt --all --check && cargo clippy --workspace --all-targets -- -D warnings &&
    #   cargo test --workspace && cargo deny check && python3 scripts/third_party.py --check &&
    #   python3 scripts/check_mockups.py && python3 scripts/build_site.py target/site
    git push origin HEAD:main          # только fast-forward; push --force в main запрещён
    git push origin HEAD:phase0/<ветка>
  4. Если push в main отклонён (другая сессия успела раньше) — повторить с шага rebase.
  5. Сообщения коммитов — по-русски с префиксом (kernel:, calc:, shell:, services:, docs:, ci:); в конце строка Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>. Подпись автора: git config user.name "Alexey Oros", git config user.email "amoros@mail.ru".
  6. Удалённый репозиторий: ssh://git@repobase.ru:2222/forge/MeridianOffice.git (Forgejo, CLI tea, логин repobase). Зеркала открытых проектов — организация meridian-oss (только чтение; форки в наш код — копией в kernel/ с файлом NOTICE, не правкой зеркала).

4. Связь между сессиями

5. Сервер sagr: стенды не пересекаются

6. Общие правила