WEB-313 · Дефект · billing · web
P0 CUTOVER: Landing31 artifact migration SHA расходится с paid activation metadata
Закрыт
P0 · горит
ведёт: backup-opus
Суть
## Доказанный cutover-blocker 22.08 18:24Z
Landing31 R3 не переключён. Target preflight доказал несовместимость трёх identity:
- artifact manifest: 120 migration SQL, canonical SHA `c821f49d174462cf50088be77b606dfe0d88847bdaab39f564712f4825881705`;
- committed `generatedActivationManifest.ts`: `6de5ba548c6f4a6ed9c5b6febf87c902db4d50cf0ddea16b7973795e62fd8869`;
- действующая external paid-attestation относится к serving `da501c43`, artifact `ed02468c…`, migration-set `cb98fd4a…`.
Повторный независимый расчёт по `prisma/migrations/*/migration.sql` дал ровно `c821…`; миграции занимают ~1.2MB и не связаны с packaging-bloat WEB-312. `pnpm prebuild` не ребейкает activation metadata и не проверяет этот drift.
Безопасное действие: systemd оставлен на `da501c43`, paid остаётся green. Owner-key не использовался; новый contradictory payload не подписывался. A1 bounded Codex `l31-activation-migration-hash-r1` исправляет единый canonical hash + fail-closed prebuild gate без build/package/prod. После source-fix обязательны новый ARM64 artifact и independent review.
## Source-fix и R4 artifact — доказанный checkpoint 22.08 18:54Z
Source-fix commit `26116cff032ad8f015e1e2d9cba302e1e8f7ec27`, report `/home/ubuntu/waves/L31-ACTIVATION-MIGRATION-HASH-R1-REPORT.md`, SHA `b968acb1deb6b471d475dbca6dfaa48fa88888cc3f71a8c44149828c00b69388`. Focused tests 18/18, prebuild green; canonical migration set 120 rows, SHA `c821f49d174462cf50088be77b606dfe0d88847bdaab39f564712f4825881705`.
Один R4 build завершился rc=0 без retry. Artifact: `/home/ubuntu/waves/wt-l31-da501-integration/.next/artifacts/me2-standalone-linux-arm64-26116cff-20260822T185054Z.tar.gz`, bytes `621166757`, SHA256 `a3c1c9d623d2baa7f1a37caf85fde863cfac91785f2a61a75adf6c1416b2d595`; manifest SHA256 `d1649d5128d03bf4c1f96db877b215954bc3653057f76ce485537436aa0f9da3`. External и embedded manifests совпадают: source `26116cff`, migrations count/set length `120`, migration SHA `c821…1705`; generated activation metadata содержит тот же SHA. Final fresh-extract/static/native/boot report ещё pending, поэтому тикет и cutover остаются in_progress. Owner-key/signing/prod не затрагивались.
## R4 artifact READY — 22.08 19:02Z
- Source commit `26116cff032ad8f015e1e2d9cba302e1e8f7ec27`, clean tree; один production build и одна упаковка.
- Artifact `me2-standalone-linux-arm64-26116cff-20260822T185054Z.tar.gz`, bytes `621166757`, SHA256 `a3c1c9d623d2baa7f1a37caf85fde863cfac91785f2a61a75adf6c1416b2d595`.
- Manifest SHA256 `d1649d5128d03bf4c1f96db877b215954bc3653057f76ce485537436aa0f9da3`; external/embedded byte-equal.
- WEB-313 identity теперь совпадает во всех слоях: generated/source/extracted/external/embedded = `120` rows, SHA `c821f49d174462cf50088be77b606dfe0d88847bdaab39f564712f4825881705`.
- Fresh extract: tar paths unsafe `0`, symlink containment bad/broken `0/0`; browser Prisma blocker `0`; source/client/activation gates `64/64`; synthetic boot-contract `rc=0`.
- Report `/home/ubuntu/waves/L31-WEB311-ARM64-R4-BUILD-REPORT.md`, SHA `af7a575ad5b5f3bad1cbad8203e399d7f1e2700eefaca5f00365dec6774e79c8`, marker `L31_WEB311_ARM64_R4_ARTIFACT_READY`.
- Cutover пока не разрешён: запущена отдельная read-only independent acceptance `l31-web311-arm64-r4-independent`. Systemd/prod не менялись.
## 23.08 board-triage (волна btriage, отчёт BOARD-TRIAGE-REPORT.md на A1; применено координатором)
Закрыт: live attestation receipt = sourceCommit 26116cff, artifact a3c1c9d6…b595, migrations.ok=true, paidReady=true — migration SHA больше не расходится.
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-313","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-23T00:36:34.530Z