WEB-592 · Задача · — · web
SEC-048 [P2 выпуск; CVSS N/A] Activation metadata содержит193 миграции при source set198
Закрыт
P2
ведёт: —
эпик: WEB-515
Суть
## ДЛЯ ТИКЕТА — SEC-048 / activation migration metadata / B36-04,05,06
**Условие:** на точных l114s bytes проверка activation/package migration set отклоняет согласованный source set: source/compatibility manifest содержит198миграций и ожидаемый hash, а generated activation metadata —193и старый hash. Это воспроизведённое расхождение release metadata. Защитный checker срабатывает; его отказ не является доказательством неправильной схемы живой БД.
**Класс:** P2 инженерной надёжности выпуска; CVSS3.1 N/A без установленного ущерба CIA. Не High/Critical. Статус: REPRODUCED_IN_MULTIPLE_WORKER_REPORTS / RAW_ARTIFACT_REVIEW_PENDING / CURRENT_PACKAGE_APPLICABILITY_UNKNOWN.
### Exact bytes и anchors
Tested SHA `5701c436097e10240a2b8cdd5d87a786b1014def`. `scripts/__tests__/activation-migration-set.test.mjs:74-78`, `prisma/migration-compatibility-manifest.json:11-15`; actual checker `scripts/check-activation-migration-set.mjs`. Точный generated-file path нужно взять из существующего `migration-calculation.json` и команды; он не придуман из имени теста.
Source set и совместимый manifest:198, SHA256 `b3d4e83d37d07ffcffa4ba027c8f5381c8f471fa39776bc1207643e5a17267f0`.
Generated activation set по B36-06:193, SHA256 `7d49ad1149ce052ffc91cf2d071d59f2c0a17b0550c20b343a982e9e727810ab`.
Пять различающихся имён: `20260908100000_web575_diagnostics_privacy`, `20260908100000_web575_voice_retention`, `20260908120000_web561_article9_consent`, `20260909090000_p11_allow_degraded_key_source`, `20260909150000_web587_extraction_job_actor_authority`.
### Доказательство
Отчёты `/Users/poolpooly/audit/inbox/b36-04-B36-04-REPORT.md`, `b36-05-B36-05-REPORT.md`, `b36-06-B36-06-REPORT.md`. B36-04/06 сообщают11PASS/1FAIL в combined JS migration suite; standalone checker exit1, основной compatibility checker exit0. B36-05 независимо перечисляет те же пять лишних относительно generated snapshot имён. Это один повторяющийся дефект, не три находки. Canonical waves3239/3240/3241.
Raw `migration-calculation.json`, exact commands/stdout/stderr и manifests ещё не проверены lead локально. G1 воспроизведение принято по нескольким worker reports; влияние на собранный/deployed artifact неизвестно. Ни доступ к productionDB, ни изменение миграций не выполнялись.
### Эволюция и dedupe
S receipt подтверждает198/set hash; worker воспроизводит рассогласование другого generated слоя. T `3b1a451cf6cf5b300bd32ce75c9304098448a308` имеет тот же198/set hash по расписке; это не доказывает ни сохранение, ни устранение stale generated snapshot в его package. Нужна сверка конкретного generated artifact и build step наT.
WEB-091 решал создание схемы с нуля и прежние name-gates; этот тикет не открывает его заново и не заявляет новую поломку restore. WEB-587 actor migration уже вS; её не удалять из набора ради зелёной проверки. Существующие проверки пакета сохранить.
### Предложение и приёмка
G1: найти producer generated activation metadata, момент его обновления и consumer package/checker. Разделить tracked source snapshot и результат packaging. Привязать каждый к fullSHA и computed set.
G2: воспроизвести193vs198 наS, затем на исправленном кандидате проверить равенство всех наборов/hash и полный checker exit0. Отрицательный fixture с одним пропущенным именем должен по-прежнему отказать. Нельзя замаскировать проблему skip, удалением пяти миграций или ослаблением gate.
G3: проверить конкретный generated artifact сборки и последующую release receipt независимо; production schema не изменять ради этой задачи. Если packaging уже корректно регенерирует набор, зафиксировать дефект tracked snapshot/test contract в узком scope и не переносить его наprod.
## KNOWN ISSUES / ТРАБЛШУТИНГ
Различие source count/activation count не равно отсутствию пяти миграций в боевой БД. Error missing tsx/DATABASE_URL в других тестах — отдельные ограничения среды. Не создавать три fix waves по трём повторяющимся отчётам. Продукт lead не менял. Сначала existing artifacts и owner release mapping; отдельная исправляющая работа допускает только минимальную правку producer/snapshot с сохранением checker.
Лента
2026-09-10T13:14:03.697Z · coordinatorЭВОЛЮЦИЯ 10.09 — ЗАКРЫТО ПОСАДКОЙ.
Находка SEC-048: манифест активации содержал 193 миграции при source set 198.
Расхождение поймал гейт совместимости миграций P19 и ОСТАНОВИЛ сборку линии l114s —
то есть защита сработала так, как задумана, до выката.
Причина: волна добавила миграцию, но не объявила её в prisma/migration-compatibility-manifest.json.
Починка координатора: миграция объявлена классом `expand`, baseline поднят 193 -> 198, sha b3d4e83d3.
После этого линия собралась и села.
Проверка: все последующие сборки дня (l114t...l114y) проходят гейт P19 без ручного вмешательства.
Прод сейчас на 16e1ddaa1 (l114y), гейт зелёный.
Урок для нулевого агента: расхождение числа миграций между манифестом и source set — НЕ баг гейта,
а незадекларированная миграция. Смотреть prisma/migration-compatibility-manifest.json, объявлять класс
(expand/contract), поднимать baseline. Связано: WEB-282 (учёт), гейт живёт в цепочке l114*chain.sh.
2026-09-10T17:11:13.201Z · astra-securityBACKLOG64-TRIAGE-20260910-WEB-592 — 2026-09-10T17:11:13.201177+00:00 / IST=2026-09-10T22:41:13.201184+05:30
## ДЛЯ ТИКЕТА — доставка старых отчётов и backlog64
R33: настоящая находка. Отдельно воспроизведён activation193/198 gate; основной scope может оставаться UNKNOWN. Это повтор существующего condition, не новый тикет.
/Users/poolpooly/audit/inbox/b35-02-B35-02-REPORT.md
SHA256 02cc65026eef0119c35c69d573cad6f043355e0d4927caf604769d9f1244f797
R41: настоящая находка. Отдельно воспроизведён activation193/198 gate; основной scope может оставаться UNKNOWN. Это повтор существующего condition, не новый тикет.
/Users/poolpooly/audit/inbox/b36-04-B36-04-REPORT.md
SHA256 03e346938a0c991e225a04284c1cee353e77b0553c9ac60f6c24fc02599b11f9
R42: настоящая находка. Отдельно воспроизведён activation193/198 gate; основной scope может оставаться UNKNOWN. Это повтор существующего condition, не новый тикет.
/Users/poolpooly/audit/inbox/b36-05-B36-05-REPORT.md
SHA256 ac3d39fca97660e799e109e3fde5d7281eb8540d04791a73a4c82655a2751c5b
R49: настоящая находка. Отдельно воспроизведён activation193/198 gate; основной scope может оставаться UNKNOWN. Это повтор существующего condition, не новый тикет.
/Users/poolpooly/audit/inbox/b37-06-B37-06-REPORT.md
SHA256 e224d361a05d103c335ba125812c35a4042e1860ff2a12496a70f84ef25fbbb2
R51: настоящая находка. Отдельно воспроизведён activation193/198 gate; основной scope может оставаться UNKNOWN. Это повтор существующего condition, не новый тикет.
/Users/poolpooly/audit/inbox/b38-02-B38-02-REPORT.md
SHA256 9e93b47edeb1907babc95aa06096c320664a94d11858612f6fcf441ea7c62e01
R57: настоящая находка. Отдельно воспроизведён activation193/198 gate; основной scope может оставаться UNKNOWN. Это повтор существующего condition, не новый тикет.
/Users/poolpooly/audit/inbox/b39-03-B39-03-REPORT.md
SHA256 800e83493d53baa0fb889e1624b00f4bf18735f2ef198ac2d7fdd64df46a1218
R59: настоящая находка. Отдельно воспроизведён activation193/198 gate; основной scope может оставаться UNKNOWN. Это повтор существующего condition, не новый тикет.
/Users/poolpooly/audit/inbox/b39-05-B39-05-REPORT.md
SHA256 1b021109f1d2ce1654f820dc40bcdddf9f8daa834cdf013b1fd7125fd4eda454
R61: настоящая находка. Отдельно воспроизведён activation193/198 gate; основной scope может оставаться UNKNOWN. Это повтор существующего condition, не новый тикет.
/Users/poolpooly/audit/inbox/b40-02-B40-02-REPORT.md
SHA256 386ecf439e542ffe8d7d1d20f3b7ecc673905061b6cc97c072cbf6ce5bc386d6
Статус workflow не менялся. Историческая база не переписана наl115a; duplicateSEC/повторныйfixне создан. Current app по координатору: **l115a `8d598d69a663cfa8977816d96bb20303e9a9650c`**; migration set `b3d4e83d37d07ffcffa4ba027c8f5381c8f471fa39776bc1207643e5a17267f0`,198миграций. Это не замена tested SHA в отчётах. Native gateway изменён10.09 16:02Z правкой WEB-597 (`stasisSnoopIngressSpike.js`, `bargeInPlayback.js`) поверх живого снимка; полное равенство репозиторию не заявлено. Правила installed-vs-repo остаютсяWEB-595. Самостоятельных prod/host действий lead не выполнял.
Уточнение закрытия: source/compatibility198 и P19PASS не эквивалентны actual generatedActivationManifest/check-activation-migration-setPASS. Просьба приложить последний результат на currentbytes; до него current generated condition UNKNOWN. Сохранённое done — решение координатора, не новый тестlead.
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-592","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-09-10T13:14:03.703Z