chore(certificates): подтвердить реальное продление и полный откат

This commit is contained in:
Denozordec committed 2026-10-15 13:47:24 +07:00
1 parent 8c5cfa0706
commit 9b0d7bb6e8
16 files changed
+377 -11

No files matched your search

+18 -4
View File
@@ -1,10 +1,24 @@
# Оставшаяся внешняя приёмка — 2026-10-14
Актуальное продолжение 2026-10-15: 258 — реализована unique generation rotation с проверкой нового leaf/SSL до архивации старого, сохранением прежнего ключа и финальным logical name. Profile9/build/lint passed, image ux-certificates258 source530/dist1084 prepared, ещё не активирован; runtime backend257/frontend251. Следующий259 — согласованный real first issue + scheduler renewal, trusted TLS, unique logical name/old archive и полный откат; разрешение сохраняется. Этап12.5 открыт.
Актуальное продолжение 2026-10-15: 259 — реальный first issue и scheduler renewal приняты: trusted TLS сменил SHA-256, один logical leaf, старые native ID/fingerprint/private-key сохранены в архиве. Native/export/SSL/SQL/DNS восстановлены, private fixtures удалены. Runtime backend258/frontend251 healthy. Следующий260 — актуализировать остаток и выполнить профильную приёмку UX/доступности/производительности; этап12.5 открыт.
Это актуальная матрица после 12.5.258. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
Это актуальная матрица после 12.5.259. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-certificates257`, frontend `ux-certificates251`; production lab с195 использует AUTH_REQUIRED=true и Portal1.3.1. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-certificates258`, frontend `ux-certificates251`; production lab с195 использует AUTH_REQUIRED=true и Portal1.3.1. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
## 12.5.259 — реальная ротация сертификата и подтверждённый откат (2026-10-15)
По сохранённому разрешению254 выполнен тот же exact mmt253-8e62a941.pngs.top на104.165.244.7. Перед началом снят свежий приватный native/export/SSL/files/SQL baseline; own certificate/files/jobs/DNS0, Cloudflare token/zone/account проверены. Renewal временно выключен. Подготовленный backend258 активирован; frontend251/Portal/DB сохранены, backend healthy. [Развёртывание](ux-ui/acceptance/acme259-deployment.json).
Настоящий Portal/UI без mocks: один manual issue POST, terminal done, JS errors0. Native logical leaf единственный, private-key=true, обе SSL службы enabled с logical name. Независимый trusted TLS/SNI/hostname совпал с native SHA-256. [UI](ux-ui/acceptance/acme259-live-ui.json), [первый TLS](ux-ui/acceptance/acme259-tls-before.json).
Один PUT enabled=true запустил штатный certificates_renew; отдельный run-now0. Canonical validity распознан, daysLeft90; revocationStatusunknown не подменяется valid. Единственная цель, scheduler ok/renewed1/errors0, затем renewal сразу disabled. Реальный цикл31.488s — не гарантия длительности следующих выдач. [Планировщик](ux-ui/acceptance/acme259-renewal.json).
После продления native logical name ровно1, unfinished _new_0; прежний leaf сохранён в одном _old_<12hex> с теми же ID/SHA-256/private-key. Новый ID и SHA-256 отличаются. Trusted TLS обслуживает новый leaf, canonical validFrom/validUntil совпадают с X509; обычный HTTPS REST200 после продления. [Ротация](ux-ui/acceptance/acme259-native-rotation.json), [новый TLS](ux-ui/acceptance/acme259-tls-after.json), [сравнение](ux-ui/acceptance/acme259-tls-comparison.json). Это успешная конкретная последовательная ротация двух SSL служб; zero-downtime, другие потребители старого ключа и несколько issuers не заявляются.
Очистка: SSL baseline → только собственные поколения/CA/files → два own terminal jobs → исходные ACME/renew settings целиком. Приложение удалило TXT; собственная A удалена по exact ID/name/type/content, оба DNS имени0. После scheduler refresh повторно восстановлены исходные SQL timestamps/meta. Native certificates/files/SSL, normalized export и приватные SQL строки совпали; при сравнении files исключён last-modified, export — комментарии/пустые строки. Private baseline/key fixtures удалены на Debian и локально. Оба CHR доступны, пароли не менялись. [Откат](ux-ui/acceptance/acme259-cleanup.json), [DNS](ux-ui/acceptance/acme259-cloudflare.json).
В ручном helper SQL count оказался number0, не string0: первая проверка restore остановилась до device writes, тип ожидания исправлен. Диагностический SELECT с несуществующим created_at отклонён без записей. Эти ошибки приёмочного кода не скрыты и не считаются дефектами продукта. Для неизменённого production кода build/profile не повторялись:258 уже проверен9 scripts/build/lint, общая transport regression257 —25 profiles. CA revocation не выполнен; удаление native сертификата не означает отзыв CA. Следующий260 — актуальный остаток и профильный UX/a11y/performance контроль.
## 12.5.258 — уникальное новое поколение и сохранение старого сертификата (2026-10-15)
@@ -338,7 +352,7 @@ Portal offline JWT действует доexp после logout/role change; э
## Следующая последовательность — 2026-10-14
1. **Сертификаты259:** unique generation rotation258/local checks/image готовы; activate258 + real first issue/renewal/TLS/archive/cleanup по сохранённому разрешению254. Active runtime257.
1. **Приёмка260:** обновить актуальный остаток без устаревших blockers; профильный UX/a11y/performance контроль текущего runtime. Реальная ротация и откат259 приняты.
2. **Профильный контроль:** для новых изменений выполнять затронутые SQL/API/UI проверки. Общая регрессия192 выполнена; не повторять её без изменений общей основы или нового основания.
3. **Внешние зависимости:** Portal issuer/login/revoke, Telegram bot/chat/разрешённое сообщение, клиентские ОС, независимые WAN/public IPv6 и scale/multi-instance — отдельные группы по таблице выше. Ограничения текущего стенда не превращать в обещание приёмки всех конфигураций.