diff --git a/personal/projects/balda/mattermost-dm-threads-2026-10-19.md b/personal/projects/balda/mattermost-dm-threads-2026-10-19.md index 1fc12d4d..365eba39 100644 --- a/personal/projects/balda/mattermost-dm-threads-2026-10-19.md +++ b/personal/projects/balda/mattermost-dm-threads-2026-10-19.md @@ -1,5 +1,7 @@ # Balda — треды ответов в личке Mattermost, 2026-10-19 +Актуально: #77/#78 смержены; основной runtime обновлён на `138cc4a7`. [[personal/projects/balda/upstream-deploy-2026-10-19]]. Ранние статусы «не установлено» ниже исторические. + Текущее состояние: [[personal/projects/balda/setup]]. Сверено 2026-10-19 08:06 UTC. Upstream `a908ee1a` возвращал DM/group locator до вычисления root_id сообщения. Поэтому обычные ответы отправлялись в корень лички. Настройки включения тредов в MattermostConfig нет. @@ -23,3 +25,9 @@ Production остаётся на `eee69fc5`: этот этап готовил PR ## Исправление 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]]. + +## 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]]. diff --git a/personal/projects/balda/setup.md b/personal/projects/balda/setup.md index f218e76a..79b32731 100755 --- a/personal/projects/balda/setup.md +++ b/personal/projects/balda/setup.md @@ -1,14 +1,14 @@ # Balda — актуальный локальный запуск -## Текущее состояние — сверено 2026-10-19 08:06 UTC +## Текущее состояние — Balda сверена 2026-10-19 20:25 UTC+6 (Asia/Bishkek) | Компонент | Проверенное состояние | | --- | --- | | SSH Manager | 0.3.2, `a86df58`, 8 MCP-инструментов, `127.0.0.1:17796` | | Workspace Manager | `0c82b8f`, четыре функции, native SMB3, `127.0.0.1:17795`; root только `developer`, recipient `balda` | -| Balda | `eee69fc5`, `balda-mm-mac`, provider `pool`, permissions `ask`; старт `2026-10-19T08:05:42.795540715Z` | -| Проверка установленного SSH-ключа | Реальный контейнер Balda, `registered`, `client_verified_at=2026-10-19T06:29:15.692883Z`; прежний key id сохранён | -| Исходники / runtime | Все три checkout чистые; build metadata обоих исправленных binaries указывает на эти чистые commits; активные hashes/inode проверены | +| Balda | `138cc4a7`, чистый upstream, `balda-mm-mac`, provider `pool`, permissions `ask`; старт `2026-10-19T14:21:56.807163574Z` | +| Проверка установленного SSH-ключа | UID 1000 из обновлённой Balda, случайный маркер получен; принятый ключ и volume сохранены; 2026-10-19 20:25 UTC+6 (Asia/Bishkek) | +| Исходники / runtime | Balda: чистый upstream `138cc4a7`, `vcs.modified=false`; активный `/proc/1/exe` совпадает со сборкой. SSH/Workspace commits прежние | SSH Manager импортирует существующий Mac SSH alias из native config/Include и доверенных known_hosts, проверяя существующую аутентификацию; повторно присылать server key для такого хоста не требуется. Для клиента отдельно проверяется маршрут: без `via` сначала pinned no-auth handshake из настроенного `client_container`; при сетевом отказе выбирается единственный зарегистрированный relay. Неизвестный или неверный pin не вызывает fallback; при нескольких relay нужен явный `via`. Owner-form включает точную замену relay key line с ограниченным permitopen. Хардкода Kraken или mac-relay в выборе маршрута нет. @@ -16,7 +16,7 @@ SSH Manager импортирует существующий Mac SSH alias из n Inventory сейчас: `mac`, `mac-relay`, `kraken`. Kraken добавлен владельцем через Balda в сессии по ссылке ниже; маршрут исправлен самим менеджером на `mac-relay → kraken`, relay ограничен текущим endpoint. Новый target key при исправлении не устанавливался, прежняя identity и изоляция сохранены. Отдельный независимый SSH-вызов UID 1000 из Balda вернул ожидаемый маркер. -Треды Mattermost DM: `eee69fc5` сохраняет `root_id` пользовательского сообщения в адресе доставки; обычные ответы, progress и вопросы идут в его тред, дальнейшие replies сохраняют этот root. DM/group session IDs остаются прежними. Это поведение транспорта в коде; настройки переключения нет. Отдельный approval-тред не создаётся. `254f3e29` откачен коммитом `3f6a1363`: обработчик обычного числового ответа без треда и изменения хранилища удалены. Узкое сопоставление raw user ID для штатного threaded reply исправлено отдельно в `eee69fc5`. Исправление двойного меню `3e86b995` сохранено. `9018e7a3` исправляет transport routing; `c061e266` исправляет выбор pending-вопроса в общем root вместо уже отвеченного; неоднозначные параллельные pending-вопросы не подтверждаются. `eee69fc5` сохраняет прежнюю классификацию лички в архиве. Приёмка и ограничения: [[personal/projects/balda/mattermost-dm-threads-2026-10-19]]. +Треды Mattermost DM и единичное меню подтверждения теперь штатные upstream-исправления #77/#78. Root пользовательского сообщения сохраняется для обычных ответов, progress и вопросов, DM/group identity прежняя. Ответы сравниваются со временем публикации вопроса от Mattermost; provider timestamp хранится в question/outbox, локальные часы не используются. Отдельный approval-тред не создаётся. История реализации: [[personal/projects/balda/mattermost-dm-threads-2026-10-19]]. Balda: меню подтверждения рендерится один раз — permission layer передаёт готовую presentation, questions layer сохраняет structured options для ответа, но не дописывает второе меню. Regression проходит через permission review, session question delivery и decision resolution. Добавление host и установка ключа остаются двумя разными owner confirmations; дополнительные generic MCP approvals у Codex выключены, native изменения доступа подтверждаются владельцем. @@ -30,6 +30,14 @@ Workspace: `workspace_folders`, `workspace_connect`, `workspace_disconnect`, `wo Оставшийся исходный объём: полноценные удалённые Mac model runs с отдельными CLI credentials/OpenCode network решениями, полный модельный Prism lifecycle и реальные project Beads DB. Host Docker/socket/sudo authority не добавлялась: установленный target key по-прежнему ограничен принятой песочницей. Эти пункты не объявляются выполненными этим исправлением. + +## 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]]. + + ## Текущие пути и эксплуатация — 2026-10-19 | Параметр | Значение | @@ -37,7 +45,7 @@ Workspace: `workspace_folders`, `workspace_connect`, `workspace_disconnect`, `wo | Compose | `/Users/admin/Docker/balda-mm-mac/docker-compose.yml` | | Активный config | `/Users/admin/.local/share/balda-workspace/candidate/config/config.yaml` | | Config mount | `/workspace/.config/balda`, read-only | -| Запускаемый binary | `/workspace/.config/balda/bin/balda`; SHA256 `88dc7349c4eff1aae79daa95381d33e79c3bbb0097b95fde92834e4479392000` | +| Запускаемый binary | `/workspace/.config/balda/bin/balda`; SHA256 `31c448af84428f83491d5fb8317549466f814f51c453de11fc8f6c9bd0836672` | | State / work | `/Users/admin/Docker/balda-mm-mac/state` и `/Users/admin/Docker/balda-mm-mac/work` | | Home / SSH volumes | `balda_balda-home` → `/home/node`; `balda-ssh-manager` → `/run/ssh-manager:ro` | | Инструкции Codex | Отдельный `runtime.providers.codex.system_instructions` не задан; [[personal/projects/balda/workspace-context]] | diff --git a/personal/projects/balda/upstream-deploy-2026-10-19.md b/personal/projects/balda/upstream-deploy-2026-10-19.md new file mode 100644 index 00000000..763dc071 --- /dev/null +++ b/personal/projects/balda/upstream-deploy-2026-10-19.md @@ -0,0 +1,24 @@ +# Balda — чистый upstream, 2026-10-19 + +Проверено 2026-10-19 20:25 UTC+6 (Asia/Bishkek). Основной инстанс — `balda-mm-mac`; Eagle этим обновлением не менялся. Каноническое состояние: [[personal/projects/balda/setup]]. + +Установлен [upstream `138cc4a7`](https://github.com/baldaworks/balda/commit/138cc4a71d6889de30fe90e368f27f129fd8d792) без локальных патчей. Входит merge [#77](https://github.com/baldaworks/balda/pull/77) `6f936dbb`, [#78](https://github.com/baldaworks/balda/pull/78) `a37f0577`, исправление номеров миграций #80 и session command runtime #81. Зависимость runtime/v2 — 2.7.0. Git checkout чистый, embedded `vcs.modified=false`; Linux ARM64 binary проверен `balda validate` на действующем config до остановки. + +| Проверка | Результат | +| --- | --- | +| Binary и `/proc/1/exe` | SHA256 `31c448af84428f83491d5fb8317549466f814f51c453de11fc8f6c9bd0836672` совпадает | +| Версия | `balda upstream-138cc4a7 (commit 138cc4a71d6889de30fe90e368f27f129fd8d792, built 2026-10-19T14:18:33Z)` | +| StartedAt | `2026-10-19T14:21:56.807163574Z` | +| Health / login | 200 / 200 из host HTTP-proxy | +| Mattermost | websocket connected, новых error/fatal компонентов startup нет | +| Codex | login status успешен, identity и bytes auth.json сохранены | +| State | SQLite migration 68, quick_check/foreign_key_check — ok | +| Сохранность | 49 runtime sessions, 49 metadata, 1952 events, 2 users, 2 bindings, 28 questions — ни одной утраченной исходной строки | +| Обвязка | Compose/config/env, ACP bridge, grants и mounts сохранены; Manager binaries не переустанавливались | +| SSH | UID 1000 из фактической Balda, установленный dedicated key, случайный marker — pass | + +На точном upstream прошли `go test -race` для questions, channel/mattermost, handlersfx, state, session, commandfx и sessionturn — 7 пакетов. Это focused-прогон текущего upstream; прежний полный race на 142 пакетах относится к PR head, а не объявляется новым полным локальным прогоном `138cc4a7`. Снимок GitHub CI: jetstream-integration: success; sqlite-integration: success; projection-replay: success; architecture-lint: success; ingress-e2e: success; postgres-integration: success; test: in_progress; lint: success. + +Backup до успешной установки: `/Users/admin/.local/share/balda-workspace/backups/upstream-20261019T142152Z`. Он содержит согласованную CoW-копию всего state после остановки, config со старым binary, Compose, Callee config и auth.json. Ранние защитные попытки автоматически откатились; исходные и промежуточные snapshots сохранены. После stop/start HTTP-proxy пересоздан, поскольку использует `network_mode: service:balda`; затем отдельно проверены host health/login. Существующие сессии не reset, ключи и approvals не перевыдавались. + +Evidence: `~/.local/share/balda-workspace/candidate/upstream-deploy-20261019/`. Активный binary остаётся в `candidate/config/bin/balda`; изменение старого `/Users/admin/Developer/balda` само по себе не меняет deployment. Этот прежний checkout и его частная история сохранены; сборка upstream — отдельный clone точного commit. Beads `balda-tg67`. diff --git a/personal/projects/balda/upstream-prs-2026-10-19.md b/personal/projects/balda/upstream-prs-2026-10-19.md index 057b3a14..dc3f46ad 100644 --- a/personal/projects/balda/upstream-prs-2026-10-19.md +++ b/personal/projects/balda/upstream-prs-2026-10-19.md @@ -1,5 +1,7 @@ # 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 | Коммит | Локальные проверки | @@ -7,7 +9,7 @@ | Двойное меню | [#77](https://github.com/baldaworks/balda/pull/77) | `623eecdb35ce2a6ac7054d9c8e6bbdceef64c4e6` | 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 отклоняет ответы, отправленные до публикации текущего вопроса. После review сравниваются только серверные timestamps Mattermost (см. исправление review ниже); локальный CreatedAt не используется. Остальные reply references сохраняют прежнюю семантику. @@ -35,3 +37,9 @@ PR [#78](https://github.com/baldaworks/balda/pull/78) обновлён допо 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]]. diff --git a/work/projects/cpm-readiness-telemetry-tech-design-2026-10-15.md b/work/projects/cpm-readiness-telemetry-tech-design-2026-10-15.md index e48a71f5..e608446b 100755 --- a/work/projects/cpm-readiness-telemetry-tech-design-2026-10-15.md +++ b/work/projects/cpm-readiness-telemetry-tech-design-2026-10-15.md @@ -1,4 +1,4 @@ -> **Актуально — 19 октября 2026, error-6/P4 finding исправлен в PR.** Production [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) **`fc124938e0`**, база #7376 `c7adf28e12`, 8 commits / 22 paths. Известный failed startup инвалидируется до освобождения wait; поздний callback больше не вызывает P4 detection или late reload. Добавлены 2 штатные регрессии, **198 shared tests PASS**, strict lint 2 / 0, iOS app build PASS. Review-only harness **`f4f135766a`** синхронизирован обычным merge, содержит актуальный production head и ровно 12 дополнительных файлов; README: 38 новых shared regressions. macOS build-for-testing и финальный ON 9 → OFF 6 → ON 9 ещё выполняются; завершёнными пока не объявлены. Оба head опубликованы обычным push. Формы/default late flag не менялись. Прежние записи об открытом P2 относятся к предыдущему head и сохранены как история. +> **Актуально — 19 октября 2026, error-6/P4 finding исправлен и опубликован.** Production [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) **`8275bcce36`**, база #7376 **`39fe56af4c`**; содержит fix **`fc124938e0`** и 2 штатные регрессии. На обновлённой базе **201 shared tests PASS**, strict lint 4 / 0. Известный failed startup инвалидируется до освобождения wait; retained callback больше не вызывает P4 detection или late reload. Review-only harness **`6d04496882`** содержит текущий production head и ровно 12 дополнительных paths; README: 38 новых shared regressions. Первый signed app ON: 9 PASS на `fc124938e0`; финальный цикл ON 9 → OFF 6 → ON 9 на `8275bcce36` выполняется в чистом checkout. iOS app build PASS относится к `fc124938e0` до обновления базы. Параллельные незакоммиченные изменения исходного worktree не включены в проверку. Формы/default late flag не менялись. Прежние открытые findings сохранены как история. > **Актуально — 19 октября 2026, финальное ревью #7379 после P4 detection.** Проверен опубликованный после rebase **`a00dc4afeb`** / база #7376 **`c7adf28e12`**, 7 commits / 22 paths. Остаётся **1 P2: error-6 startup может ошибочно попасть в P4 detection после позднего callback успешного retry**. На текущем head: **196 существующих shared tests PASS + 2 дополнительных probes PASS / 1 новый probe FAIL**. Проверочная однострочная правка только в изолированной копии даёт **199 PASS**; в PR она не внесена. Pixel validators обеих платформ PASS. CI завершён: **53 SUCCESS / 25 SKIPPED**, failures и pending нет; повторный probe подтвердил тот же незакрытый дефект. Предыдущие 197 unit и app 9→6→9 относятся к `fc87237a47`; новая база убрала один retired-telemetry тест. Подробности и границы воспроизведения — в разделе «Полное ревью после P4 detection — error-6 attribution». История ниже сохранена. diff --git a/work/projects/cpm-status-2026-10-15.md b/work/projects/cpm-status-2026-10-15.md index 8c6372ff..e5d20cee 100755 --- a/work/projects/cpm-status-2026-10-15.md +++ b/work/projects/cpm-status-2026-10-15.md @@ -6,7 +6,7 @@ tags: - cpm - status --- -> **Актуально — 19 октября 2026, error-6/P4 finding исправлен в PR.** Production [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) **`fc124938e0`**, база #7376 `c7adf28e12`, 8 commits / 22 paths. Известный failed startup инвалидируется до освобождения wait; поздний callback больше не вызывает P4 detection или late reload. Добавлены 2 штатные регрессии, **198 shared tests PASS**, strict lint 2 / 0, iOS app build PASS. Review-only harness **`f4f135766a`** синхронизирован обычным merge, содержит актуальный production head и ровно 12 дополнительных файлов; README: 38 новых shared regressions. macOS build-for-testing и финальный ON 9 → OFF 6 → ON 9 ещё выполняются; завершёнными пока не объявлены. Оба head опубликованы обычным push. Формы/default late flag не менялись. Прежние записи об открытом P2 относятся к предыдущему head и сохранены как история. +> **Актуально — 19 октября 2026, error-6/P4 finding исправлен и опубликован.** Production [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) **`8275bcce36`**, база #7376 **`39fe56af4c`**; содержит fix **`fc124938e0`** и 2 штатные регрессии. На обновлённой базе **201 shared tests PASS**, strict lint 4 / 0. Известный failed startup инвалидируется до освобождения wait; retained callback больше не вызывает P4 detection или late reload. Review-only harness **`6d04496882`** содержит текущий production head и ровно 12 дополнительных paths; README: 38 новых shared regressions. Первый signed app ON: 9 PASS на `fc124938e0`; финальный цикл ON 9 → OFF 6 → ON 9 на `8275bcce36` выполняется в чистом checkout. iOS app build PASS относится к `fc124938e0` до обновления базы. Параллельные незакоммиченные изменения исходного worktree не включены в проверку. Формы/default late flag не менялись. Прежние открытые findings сохранены как история. > **Актуально — 19 октября 2026, финальное ревью #7379 после P4 detection.** Проверен опубликованный после rebase **`a00dc4afeb`** / база #7376 **`c7adf28e12`**, 7 commits / 22 paths. Остаётся **1 P2: error-6 startup может ошибочно попасть в P4 detection после позднего callback успешного retry**. На текущем head: **196 существующих shared tests PASS + 2 дополнительных probes PASS / 1 новый probe FAIL**. Проверочная однострочная правка только в изолированной копии даёт **199 PASS**; в PR она не внесена. Pixel validators обеих платформ PASS. CI завершён: **53 SUCCESS / 25 SKIPPED**, failures и pending нет; повторный probe подтвердил тот же незакрытый дефект. Предыдущие 197 unit и app 9→6→9 относятся к `fc87237a47`; новая база убрала один retired-telemetry тест. Подробности и границы воспроизведения — в разделе «Полное ревью после P4 detection — error-6 attribution». История ниже сохранена. @@ -70,7 +70,7 @@ tags: |---|---|---|---|---| | [#7378](https://github.com/duckduckgo/apple-browsers/pull/7378) | `alex/cpm-repro-harness` | main | harness (только тесты); 4 быстрых теста в CI около 3 с, остальное локально через `CPM_REPRO=1` | OPEN, head `dfb96279196d`; 37 success / 18 skipped, без failure/pending; REVIEW_REQUIRED. Предыдущее Danger-предупреждение о 1570 строках сохранено как историческое; в ветке есть коммит другой сессии «Require initResp in the page…» | | [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) | `alex/cpm-fix-init-loss` | harness | фикс A: ожидание первой загрузки background после установки/апгрейда посреди сессии | OPEN, head `7ad771e227bb`; 35 success / 20 skipped, без failure/pending; прежние красный и зелёный прогоны сохраняются | -| [#7379 — актуально 19 Oct](https://github.com/duckduckgo/apple-browsers/pull/7379) | `alex/cpm-fix-init-loss`, worktree `alex/cpm-fix-p1-p2`; local/remote `a00dc4afeb` | **#7376 / telemetry `c7adf28e12`** | install/upgrade + P1/P2 + late recovery + independent P4 detection; 36 новых shared regressions, 196 штатных PASS; новый P2: error-6 startup ошибочно считается P4 после retained successful callback | OPEN, 7 commits / 22 paths; новый probe FAIL, candidate fix только в копии даёт 199 PASS. Pixels validators PASS, CI завершён: 53 SUCCESS / 25 SKIPPED; повторный probe 2 PASS / 1 FAIL, дефект остаётся. Review-only harness `475095b335` и app 9→6→9 относятся к прежнему `fc87237a47`; forms scope сохранён | +| [#7379 — актуально 19 Oct](https://github.com/duckduckgo/apple-browsers/pull/7379) | `alex/cpm-fix-init-loss`, remote `8275bcce36`; основной worktree `alex/cpm-fix-p1-p2` временно на harness с параллельными локальными изменениями; чистый validation checkout `/private/tmp/cpm-pr7379-error6-fix-20261019/source` | **#7376 / telemetry `39fe56af4c`** | install/upgrade + P1/P2 + late recovery + independent P4 detection; 38 новых shared regressions, 201 штатный PASS; error-6/P4 finding закрыт `fc124938e0` | OPEN, 10 commits / 23 paths. Harness `6d04496882` содержит production, ровно 12 fixture-only paths. Финальный signed app ON/OFF/ON выполняется; CI ещё идёт. Формы/default late flag сохранены | | [#7381](https://github.com/duckduckgo/apple-browsers/pull/7381) | `alex/cpm-fix-network-crash` | фикс A | фикс B: перезапуск background при замене Network-процесса и мёртвом worker'е | OPEN, remote head `39f94e12eaa4`; 28 success / 24 skipped / 6 failure, включая **Test (Non-Sandbox)** и итоговые отчёты. Прежний красный repro `testNetworkProcessCrashKeepsEveryTabWorking` с 3 ретраями подтверждён. Исправление `f1085846e7ff` — единственный локальный commit поверх remote head; в PR его нет, зелёного CI для него нет | | (нет PR) | `alex/cpm-fix-pixels` | фикс B + PR0 | пиксели `background_restart` и `first_load_wait` для измерения эффекта | держим до слияния PR0, A, B | diff --git a/work/projects/cpm-web-extension-code-guide-2026-10-09.md b/work/projects/cpm-web-extension-code-guide-2026-10-09.md index 6d365085..e5700b8a 100755 --- a/work/projects/cpm-web-extension-code-guide-2026-10-09.md +++ b/work/projects/cpm-web-extension-code-guide-2026-10-09.md @@ -6,7 +6,7 @@ tags: - cpm - webkit --- -> **Актуально — 19 октября 2026, error-6/P4 finding исправлен в PR.** Production [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) **`fc124938e0`**, база #7376 `c7adf28e12`, 8 commits / 22 paths. Известный failed startup инвалидируется до освобождения wait; поздний callback больше не вызывает P4 detection или late reload. Добавлены 2 штатные регрессии, **198 shared tests PASS**, strict lint 2 / 0, iOS app build PASS. Review-only harness **`f4f135766a`** синхронизирован обычным merge, содержит актуальный production head и ровно 12 дополнительных файлов; README: 38 новых shared regressions. macOS build-for-testing и финальный ON 9 → OFF 6 → ON 9 ещё выполняются; завершёнными пока не объявлены. Оба head опубликованы обычным push. Формы/default late flag не менялись. Прежние записи об открытом P2 относятся к предыдущему head и сохранены как история. +> **Актуально — 19 октября 2026, error-6/P4 finding исправлен и опубликован.** Production [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) **`8275bcce36`**, база #7376 **`39fe56af4c`**; содержит fix **`fc124938e0`** и 2 штатные регрессии. На обновлённой базе **201 shared tests PASS**, strict lint 4 / 0. Известный failed startup инвалидируется до освобождения wait; retained callback больше не вызывает P4 detection или late reload. Review-only harness **`6d04496882`** содержит текущий production head и ровно 12 дополнительных paths; README: 38 новых shared regressions. Первый signed app ON: 9 PASS на `fc124938e0`; финальный цикл ON 9 → OFF 6 → ON 9 на `8275bcce36` выполняется в чистом checkout. iOS app build PASS относится к `fc124938e0` до обновления базы. Параллельные незакоммиченные изменения исходного worktree не включены в проверку. Формы/default late flag не менялись. Прежние открытые findings сохранены как история. > **Актуально — 19 октября 2026, финальное ревью #7379 после P4 detection.** Проверен опубликованный после rebase **`a00dc4afeb`** / база #7376 **`c7adf28e12`**, 7 commits / 22 paths. Остаётся **1 P2: error-6 startup может ошибочно попасть в P4 detection после позднего callback успешного retry**. На текущем head: **196 существующих shared tests PASS + 2 дополнительных probes PASS / 1 новый probe FAIL**. Проверочная однострочная правка только в изолированной копии даёт **199 PASS**; в PR она не внесена. Pixel validators обеих платформ PASS. CI завершён: **53 SUCCESS / 25 SKIPPED**, failures и pending нет; повторный probe подтвердил тот же незакрытый дефект. Предыдущие 197 unit и app 9→6→9 относятся к `fc87237a47`; новая база убрала один retired-telemetry тест. Подробности и границы воспроизведения — в разделе «Полное ревью после P4 detection — error-6 attribution». История ниже сохранена. @@ -40,8 +40,8 @@ tags: | `alex/cpm-web-extension-remaining-failures` | та же; `a0717cf098cd` | Основное расследование без A/B watchdog: P1 (3 wake), P2 (9 load failure), P3 (2 cache/cleanup), новые P5/P6 (12 lifecycle + 2 flag). Все 28 repro opt-in; `CPMRepro/` untracked. Production dirty telemetry — прежняя копия, не переносить вместе с тестами | | `cpm-repro-harness` | `alex/cpm-repro-harness`; `dfb96279196d` | PR #7378: базовый harness, быстрые CI-контроли, медленные сценарии и raw WebKit characterization; без новых P5/P6 | | `cpm-fix-init-loss` — историческая строка; worktree удалён 16 Oct | `alex/cpm-fix-init-loss`; `7ad771e227bb` | PR #7379: A, первые init при install/upgrade mid-session; красное/зелёное доказательство отдельно от remaining-failures | -| **`alex/cpm-fix-p1-p2` — актуально 19 Oct** | **`alex/cpm-fix-init-loss`; local/remote `a00dc4afeb`** | PR #7379 / база #7376 `c7adf28e12`: 7 commits / 22 paths, 36 новых shared regressions, 196 штатных PASS. Полное review: 1 открытый P2 error-6/P4 attribution, новый probe FAIL; candidate fix только в копии: 199 PASS. Флаги/формы не менялись | -| — (отдельная ветка, без своего worktree) | **`codex/cpm-fix-init-loss-integration-tests`; tracking `475095b335`** | Harness содержит прежний production `fc87237a47`; 9 app methods, 12 paths вне main. Последний signed app ON 9 PASS → OFF 6 functional FAIL → ON 9 PASS, detection-only OFF PASS дважды, SHA256 совпали — на прежнем head. Новый rebase `a00dc4afeb` и review probe этими app runs не объявляются проверенными | +| **`alex/cpm-fix-p1-p2` — актуально 19 Oct** | **Production `alex/cpm-fix-init-loss`; remote `8275bcce36`** | PR #7379 / база #7376 `39fe56af4c`: 10 commits / 23 paths, 38 новых shared regressions, 201 штатный PASS. Error-6/P4 attribution исправлен `fc124938e0` + 2 штатные регрессии; late flag OFF/ON. Worktree временно на harness, содержит чужие параллельные незакоммиченные изменения; в validation они не включены. Флаги/формы не менялись | +| Временно `alex/cpm-fix-p1-p2`; чистый validation checkout `/private/tmp/cpm-pr7379-error6-fix-20261019/source` | **`codex/cpm-fix-init-loss-integration-tests`; published `6d04496882`** | Harness содержит production `8275bcce36`; 9 app methods, ровно 12 paths вне main. README: 38 новых shared regressions. Первый signed app ON: 9 PASS на `fc124938e0`; финальный ON 9 → OFF 6 functional FAIL → ON 9 на новой базе выполняется, завершённым пока не объявлен | | `cpm-fix-network-crash` | `alex/cpm-fix-network-crash`; local `f1085846e7ff` | B поверх A; 5 network/termination сценариев в FullFailure + 11 watchdog unit tests. Remote PR #7381 остаётся на `39f94e12eaa4`, красный Non-Sandbox; локальный fix не запушен | | `cpm-fix-pixels` | `alex/cpm-fix-pixels`; `d6d800846d1f` | A/B + PR0, измерение `first_load_wait`/`background_restart`; отдельный PR не зарегистрирован в текущем статусе | | `alex/cpm-messaging-readiness-telemetry` | та же; `619869ee84c6` | PR0 #7376: readiness/failure/recovery параметры, CI без failure/pending, review required |