Files
obsidian-vault/personal/projects/balda/upstream-prs-2026-10-19.md
T

9.7 KiB
Raw Blame History

Balda — два upstream PR, 2026-10-19

Актуально: #77/#78 смержены; основной runtime обновлён на 138cc4a7. personal/projects/balda/upstream-deploy-2026-10-19. Ранние статусы «не установлено» ниже исторические.

Обновлено 2026-10-19 09:34 UTC. Текущий runtime: personal/projects/balda/setup. Владелец подтвердил успешный прогон Balda в Mattermost до подготовки этих PR.

Исправление PR Коммит Локальные проверки
Двойное меню #77 623eecdb35ce2a6ac7054d9c8e6bbdceef64c4e6 race: 142 пакета с тестами; lint, architecture: pass
Треды DM #78 a693e4efcb94175777700d38d7cc83e7ecce971b race: 142 пакета с тестами; lint, architecture: pass

Обе ветки независимо созданы от свежего официального origin/main e0edbe589f71d86a2300dddafa92371f33f9593d в отдельном checkout. Первоначально опубликованы два focused-коммита в feature branches mallexxx/balda; ветка fork main, исходный рабочий checkout и runtime не переключались. История 254f3e29/отката и приватные deployment данные в PR не включены. Тест тредов освобождён от проверки меню, поэтому порядок merge не создаёт зависимости. Maintainer edits разрешены, оба PR первоначально открыты ready for review; теперь оба смержены и прикреплены к задаче Codex.

Первый PR сохраняет готовую presentation permissions и structured options для проверки ответа. Второй сохраняет root_id пользовательского сообщения для DM/group delivery, прежние session identity и архивную область; исправляет raw requester ID; выбирает pending-вопрос вместо истории и отклоняет неоднозначные одновременные вопросы. Дополнительный regression поймал повторную авторизацию следующим вопросом: Mattermost помечает общий reply reference через generic SharedReplyRef, а resolver отклоняет ответы, отправленные до публикации текущего вопроса. После review сравниваются только серверные timestamps Mattermost (см. исправление review ниже); локальный CreatedAt не используется. Остальные reply references сохраняют прежнюю семантику.

Команды: GOMAXPROCS=2 go test -race -p 2 -timeout=20m ./..., go tool golangci-lint run, go tool go-arch-lint check --project-path . для каждой отдельной ветки. Для второго PR прошли tagged question contracts на реальных SQLite и PostgreSQL 17: Provider_QuestionStoreRoundTrip, QuestionThreadReplyLookup, QuestionAnswerHandoffSurvivesRestart. Новый lookup contract проверяет активный вопрос, неоднозначность, изоляцию другой беседы и наносекундное время. Одноразовый PostgreSQL-контейнер и его test volume удалены. Это локальные выбранные DB-contract tests; полные backend integration suites выполняет GitHub CI.

Исторический CI-снимок на 2026-10-19 08:51 UTC (актуальный #78 — ниже):

  • PR #77: lint: SUCCESS; sqlite-integration: SUCCESS; postgres-integration: SUCCESS; test: IN_PROGRESS; projection-replay: SUCCESS; architecture-lint: SUCCESS; jetstream-integration: SUCCESS; ingress-e2e: SUCCESS.
  • PR #78: native-launch (ubuntu-latest): IN_PROGRESS; sqlite-integration: IN_PROGRESS; lint: SUCCESS; native-launch (macos-latest): IN_PROGRESS; native-launch (windows-latest): IN_PROGRESS; postgres-integration: IN_PROGRESS; test: IN_PROGRESS; projection-replay: SUCCESS; architecture-lint: SUCCESS; jetstream-integration: SUCCESS; ingress-e2e: SUCCESS.

Для merge требуются все восемь checks CONTRIBUTING. Автоматический merge не включался. Открытие PR не объявляется завершением ещё выполняющихся CI jobs.

Развёрнутый runtime остаётся eee69fc5702197c67f0cd4de91b4cfea15dfaf1b, binary SHA256 5fe6e36607f70998984eaefd962f5b2d964162d9e7debabd9032449dcb9d1471. Дополнительный SharedReplyRef/causal guard появился в PR-ветке после live acceptance; установка этой добавки в текущую Balda этим этапом не выполнялась. Публичные ветки подготовлены на более новом upstream, чем установленная сборка.

Evidence: ~/.local/share/balda-workspace/candidate/upstream-prs-20261019/. Исходники PR: /private/tmp/balda-prs-20261019/approval и /private/tmp/balda-prs-20261019/threads; долговременные ссылки — PR и fork branches выше. Beads: balda-fv6m (локальная БД; её история не публиковалась).

Исправление review #78 — 2026-10-19 09:34 UTC

PR #78 обновлён дополнительным коммитом a693e4efcb94175777700d38d7cc83e7ecce971b. Guard больше не сравнивает локальный QuestionRecord.CreatedAt со временем Mattermost. Сохраняется create_at опубликованного поста вопроса; ответ сравнивается с ним в одном clock domain. Timestamp передаётся через delivery result/binding и сохраняется в question/outbox для SQLite и PostgreSQL, включая replay после restart. Локальный fallback timestamp не используется; отсутствие provider timestamp не позволяет shared-thread ответу закрыть вопрос.

Пройдены регрессии: Mattermost на час позади/впереди Balda, свежие и старые ответы, одинаковая миллисекунда, отсутствующие timestamps; native requester approval в HTTP Mattermost fixture с отстающими часами; SQLite outbox reopen без повторной отправки. Проверены миграции и question/outbox contracts на SQLite и отдельном PostgreSQL 17. Совместный снимок #77+#78 без конфликтов; focused race-тесты permissions, Questions, Mattermost adapter и handlers — pass. Полный go test -race -p 2 -timeout=20m ./..., golangci-lint, architecture lint и diff --check — pass.

#77 не изменялся: 623eecdb35ce2a6ac7054d9c8e6bbdceef64c4e6. В #78 теперь два коммита от публичной базы e0edbe58, история не переписывалась. PR не merge; production этим этапом не обновлялся. Live acceptance оператора относится к ранее установленной DM-правке; clock-domain correction проверена в PR-ветке.

CI #78, снимок 2026-10-19 09:34 UTC: native-launch (ubuntu-latest): IN_PROGRESS; lint: IN_PROGRESS; sqlite-integration: IN_PROGRESS; native-launch (macos-latest): IN_PROGRESS; native-launch (windows-latest): IN_PROGRESS; postgres-integration: IN_PROGRESS; test: IN_PROGRESS; projection-replay: IN_PROGRESS; architecture-lint: IN_PROGRESS; jetstream-integration: IN_PROGRESS; ingress-e2e: IN_PROGRESS.

Evidence: ~/.local/share/balda-workspace/candidate/upstream-prs-20261019/. Beads: balda-46az.

Upstream развёрнут — 2026-10-19 20:25 UTC+6 (Asia/Bishkek)

Основной balda-mm-mac работает на чистом upstream 138cc4a71d6889de30fe90e368f27f129fd8d792; PR #77 и #78 смержены и входят в этот commit. Binary SHA256 31c448af84428f83491d5fb8317549466f814f51c453de11fc8f6c9bd0836672, /proc/1/exe совпадает; build metadata vcs.modified=false. Конфигурация, environment, mounts и выбранный Codex account сохранены. Миграция SQLite — 68, integrity/foreign keys — ok; все 49 sessions/metadata, 1952 events, 2 users/bindings и 28 questions из согласованного snapshot сохранены. Mattermost websocket подключён, health/login 200, codex login status успешен; SSH UID 1000 установленным ключом из Balda до зарегистрированного target прошёл. Тестовые сообщения в Mattermost и модельные запросы этим deployment не отправлялись.

Рабочий runtime больше не использует частные патчи eee69fc5. Исторический checkout сохранён без reset/rebase; новая сборка сделана отдельно. Предыдущие снимки ниже относятся к прежним этапам. Актуальные проверки, CI и откат: personal/projects/balda/upstream-deploy-2026-10-19.