[2026-10-19] eagle: personal/projects/balda/mattermost-dm-threads-2026-10-19.md personal/projects/balda/setup.md personal/projects/balda/upstream-prs-2026-10-19.md
This commit is contained in:
1 parent
f0c93b121b
commit
5d4493742d
3 files changed
+27
-7
No files matched your search
@@ -16,6 +16,10 @@ Upstream `a908ee1a` возвращал DM/group locator до вычислени
|
||||
|
||||
## Два upstream PR — 2026-10-19 08:51 UTC
|
||||
|
||||
Открыты независимые PR к `baldaworks/balda:main`: [#77 — единичное меню подтверждения](https://github.com/baldaworks/balda/pull/77) и [#78 — ответы в тредах лички](https://github.com/baldaworks/balda/pull/78). У каждого один коммит от свежей публичной базы `e0edbe58`; checks race/lint/architecture прошли отдельно. Оператор подтвердил успешный прогон развёрнутой Balda в Mattermost.
|
||||
Открыты независимые PR к `baldaworks/balda:main`: [#77 — единичное меню подтверждения](https://github.com/baldaworks/balda/pull/77) и [#78 — ответы в тредах лички](https://github.com/baldaworks/balda/pull/78). Первоначально у каждого был один коммит от свежей публичной базы `e0edbe58`; после review в #78 добавлен второй коммит (см. ниже); checks race/lint/architecture прошли отдельно. Оператор подтвердил успешный прогон развёрнутой Balda в Mattermost.
|
||||
|
||||
Production остаётся на `eee69fc5`: этот этап готовил PR и не обновлял работающий binary. PR тредов дополнительно закрывает повтор старого ответа с сохранением точности времени; эта дополнительная защита проверена в PR-ветке и в production на этом этапе не устанавливалась. Подробности и CI-снимок: [[personal/projects/balda/upstream-prs-2026-10-19]].
|
||||
|
||||
## Исправление clock domain #78 — 2026-10-19 09:34 UTC
|
||||
|
||||
PR [#78](https://github.com/baldaworks/balda/pull/78), head `a693e4efcb94175777700d38d7cc83e7ecce971b`: время ответа сравнивается с серверным временем публикации вопроса Mattermost, сохранённым в question/outbox SQLite и PostgreSQL. Рассинхронизация часов, stale reply и recovery проверены; полный race, lint, architecture и diff --check прошли. В #78 два коммита; #77 не изменялся, production этим этапом не обновлялся. Точный CI-снимок и evidence: [[personal/projects/balda/upstream-prs-2026-10-19]].
|
||||
@@ -179,6 +179,10 @@ docker logs --tail 120 balda-mm-mac
|
||||
|
||||
## Два upstream PR — 2026-10-19 08:51 UTC
|
||||
|
||||
Открыты независимые PR к `baldaworks/balda:main`: [#77 — единичное меню подтверждения](https://github.com/baldaworks/balda/pull/77) и [#78 — ответы в тредах лички](https://github.com/baldaworks/balda/pull/78). У каждого один коммит от свежей публичной базы `e0edbe58`; checks race/lint/architecture прошли отдельно. Оператор подтвердил успешный прогон развёрнутой Balda в Mattermost.
|
||||
Открыты независимые PR к `baldaworks/balda:main`: [#77 — единичное меню подтверждения](https://github.com/baldaworks/balda/pull/77) и [#78 — ответы в тредах лички](https://github.com/baldaworks/balda/pull/78). Первоначально у каждого был один коммит от свежей публичной базы `e0edbe58`; после review в #78 добавлен второй коммит (см. ниже); checks race/lint/architecture прошли отдельно. Оператор подтвердил успешный прогон развёрнутой Balda в Mattermost.
|
||||
|
||||
Production остаётся на `eee69fc5`: этот этап готовил PR и не обновлял работающий binary. PR тредов дополнительно закрывает повтор старого ответа с сохранением точности времени; эта дополнительная защита проверена в PR-ветке и в production на этом этапе не устанавливалась. Подробности и CI-снимок: [[personal/projects/balda/upstream-prs-2026-10-19]].
|
||||
|
||||
## Исправление clock domain #78 — 2026-10-19 09:34 UTC
|
||||
|
||||
PR [#78](https://github.com/baldaworks/balda/pull/78), head `a693e4efcb94175777700d38d7cc83e7ecce971b`: время ответа сравнивается с серверным временем публикации вопроса Mattermost, сохранённым в question/outbox SQLite и PostgreSQL. Рассинхронизация часов, stale reply и recovery проверены; полный race, lint, architecture и diff --check прошли. В #78 два коммита; #77 не изменялся, production этим этапом не обновлялся. Точный CI-снимок и evidence: [[personal/projects/balda/upstream-prs-2026-10-19]].
|
||||
@@ -1,19 +1,19 @@
|
||||
# Balda — два upstream PR, 2026-10-19
|
||||
|
||||
Проверено 2026-10-19 08:51 UTC. Текущий runtime: [[personal/projects/balda/setup]]. Владелец подтвердил успешный прогон Balda в Mattermost до подготовки этих PR.
|
||||
Обновлено 2026-10-19 09:34 UTC. Текущий runtime: [[personal/projects/balda/setup]]. Владелец подтвердил успешный прогон Balda в Mattermost до подготовки этих PR.
|
||||
|
||||
| Исправление | PR | Коммит | Локальные проверки |
|
||||
| --- | --- | --- | --- |
|
||||
| Двойное меню | [#77](https://github.com/baldaworks/balda/pull/77) | `623eecdb35ce2a6ac7054d9c8e6bbdceef64c4e6` | race: 142 пакета с тестами; lint, architecture: pass |
|
||||
| Треды DM | [#78](https://github.com/baldaworks/balda/pull/78) | `3915ae5ab776be35dc623ce2c3dab77781dbf021` | race: 142 пакета с тестами; lint, architecture: pass |
|
||||
| Треды DM | [#78](https://github.com/baldaworks/balda/pull/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.
|
||||
Обе ветки независимо созданы от свежего официального `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 отклоняет ответы, отправленные до создания текущего вопроса. Точность created_at сохраняется в SQLite/PostgreSQL. Остальные reply references сохраняют прежнюю семантику.
|
||||
Первый 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:
|
||||
Исторический 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.
|
||||
@@ -23,3 +23,15 @@ CI-снимок на 2026-10-19 08:51 UTC:
|
||||
Развёрнутый 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](https://github.com/baldaworks/balda/pull/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`.
|
||||
Reference in new issue
Block a user