fix(certificates): учитывать подтверждённый часовой пояс устройства

This commit is contained in:
Denozordec committed 2026-10-14 21:50:11 +07:00
1 parent e78bc2d7cb
commit 0e86628d58
12 files changed
+176 -22

No files matched your search

+11 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: протокол внешней приёмки 12.5
Актуальное продолжение 2026-10-14: 254 — разрешённый первый выпуск exact mmt253-8e62a941.pngs.top выполнен через UI, native leaf/private-key совпал с доверенным TLS SHA-256. Renewal не запускался: RouterOS даты без timezone дают canonical unknown/null; guard252 сохранён. Полный own cleanup/DNS0/SQL settings/native stable export подтверждён, оба CHR доступны. Backend252/frontend251 сохранены. Следующий255 — корректное определение времени native сертификата без угадывания timezone, затем реальный renewal по сохранённому разрешению. Этап12.5 открыт.
Актуальное продолжение 2026-10-14: 255 — canonical native даты учитывают явно наблюдаемый стабильный gmt-offset, сохраняя raw и unknown при отсутствии/сбое/смене clock. Каталог и renewal используют общий reader; профиль8 scripts/build/lint прошёл. Runtime backend ux-certificates255/frontend ux-certificates251. Следующий256 — повторная реальная issuance + scheduler renewal/fingerprint по уже сохранённому разрешению254, свежий baseline и полный откат; реальный renewal пока не принят. Этап12.5 открыт.
IPsec78: реальный PSK responder established, mode-config198.18.78.10 и online=true подтверждены API; точные собственные объекты удалены. Сертификатный/DN online, late failure и history restore остаются открытыми. [Отчёт](ux-ui/acceptance/ipsec-mode-config-2026-10-09.json), [журнал](ux-ui-progress.md).
@@ -18,6 +18,16 @@ OSPF84: real GRE Full adjacency/private routes/Ping3/3 и4 live PC/320px URL/bro
BFD85: Up/Full/own route/Ping,4 live UI и loss/withdrawal/recovery приняты; exact own cleanup8 коллекций×2 passed. Withdrawal5,245ms не подтверждает sub-second BFD timing; этот вопрос открыт. Runtime routing83 без новой сборки. [Отчёт](ux-ui/acceptance/ospf-bfd-loss-2026-10-09.json).
## 12.5.255 — native даты с подтверждённым offset для каталога и renewal (2026-10-14)
После измерения254 добавлен общий readCertificateRowsWithClock: читает gmt-offset перед каталогом, для native timezone-less дат повторно читает clock после; принимает только одинаковые валидные offsets. Native YYYY-MM-DD HH:mm:ss преобразуется в offset-qualified datetime с проверкой календаря, затем UTC; explicit ISO сохраняет свой offset. Не предполагается UTC/пояс backend/будущий DST. rawValidFrom/rawValidUntil остаются исходными. Отсутствующий/некорректный/сменившийся/недоступный clock сохраняет unknown/null и не обходит renewal guard252; ошибка самого каталога сохраняет error. Legacy старые форматы без надёжного контекста не угадываются.
Общий reader подключён к live catalog и default renewal dependency, disabled/strict-ID guards сохранены. В штатном цикле добавлены read-only clock запросы, мутаций native/DNS нет. Успех этой калибровки подтверждён для CHR7.24.5; другие версии/форматы остаются ограничением до соответствующих измерений. Все восемь certificate profile scripts прошли, contracts/backend build и scoped lint passed. Новые проверки покрывают точные from/until254, январский expiry с текущим +02:00, raw preservation, explicit ISO, неверный календарь/offset и missing/changed/failed clock. Полная регрессия249 не повторялась для ограниченного изменения.
Production backend ux-certificates255 собран и развёрнут, source528/compiled1080 matched, healthy; frontend ux-certificates251 и DB/Portal сохранены. Read-only Portal/state после обновления: оба CHR200 без ошибки,1440/390 без overflow/JS errors/API writes. [Проверки/deployment](ux-ui/acceptance/certificates255-deployment.json), [live](ux-ui/acceptance/certificates255-live-ui.json). Собственных сертификатов после cleanup254 нет, поэтому этот read не объявляется real native-date/renewal acceptance нового образа. Новые выпуски255 не запускались.
Следующий256: по уже полученному разрешению254 снова снять свежий baseline, выполнить first issue exact mmt253-8e62a941.pngs.top, подтвердить canonical date против trusted X509; затем один enable-triggered scheduler renewal с порогом90/интервалом86400 без дополнительного run-now, сравнить изменённый native/TLS fingerprint и выполнить полный откат. Если импорт оставит старый TLS leaf или даты останутся unknown — зафиксировать реальный отказ, не маскировать. Из-за малого остатка лимита новый внешний цикл сейчас не начат: для него нужен запас на cleanup. Повторное разрешение на этот же сценарий не требуется.
## 12.5.254 — реальный выпуск и выявленное препятствие renewal (2026-10-14)
Пользователь разрешил first issue + scheduler renewal + полный откат для exact mmt253-8e62a941.pngs.top на CHR104. Сняты свежие приватные native/SQL baselines: сертификаты0, issue jobs0, CF token отсутствует. Renewal временно выключен штатным API. Token/zone/account проверены200; один UI POST с сохранённым requestId → terminal done/stepdone, UI завершение и JS errors0. [UI](ux-ui/acceptance/acme254-live-ui.json).