Files
codex 5c26bbe8b5
CI / tests-and-images (pull_request) Successful in 2m17s
Runner smoke test / runner-smoke (pull_request) Successful in 2s
docs: record SID-native Windows ACL checks
2026-11-03 12:05:19 +03:00

21 KiB
Raw Permalink Blame History

История изменений

Не выпущено

  • Deployment: подготовлен внешний handoff для Windows-клиента от точного Gitea commit. Bundle фиксирует commit/tree/blob identity и SHA-256; installer проверяет bundle и ACL до записи и не запускает Git. Bootstrap на release A может подготовить release B только при точном совпадении pinned runtime-файлов и release policy. Первый Windows task остаётся preparation-only; отдельные auto-apply config и task выключены. Изолированный PowerShell 5.1 harness для bundle-проверки завершился успешно на точном PR SHA; реальная установка, регистрация задач, SSH и production не выполнялись и не активировались.
  • Infrastructure: Windows release installer и external receiver читают владельцев и ACL ACE напрямую как SID, без преобразования в имена учётных записей. Это устраняет зависимость проверки от разрешения имён; неизвестные SID остаются видимыми и отклоняются существующими fail-closed guard-политиками. Проверены synthetic unmapped-SID fixtures и read-only ACL preflight; production ACL не менялись.
  • Документация: объединены продуктовый, UI- и deployment-планы; уточнены внешняя backup-retention политика и обязательный owner-approved maintenance window для cold backup. Передача корпуса требует атомарной публикации проверенного staging в DATA_ROOT; безопасное возобновление либо fail-closed при прерывании остаётся release gate. Механизм атомарной публикации ещё не реализован.
  • Backend 0.13.4 / Frontend 0.3.4, алгоритм поиска search-8: для явно заданного multi-index поиска включена глобальная статистика DFS; signed review snapshots сохраняют полный index scope, а пустую выдачу можно сохранить с обязательным общим комментарием и точной проверкой рангов. Узкое расширение термина аренды сохранено без глобальных весов. На executable SHA 1c7ddf2 выполнен полный isolated прогон 7 500 запросов: изменились 537 порядков относительно исходного baseline, 6 выдач остались пустыми; это наблюдения ранжирования, не экспертная оценка права. Три актуальных акта проверялись только в отдельном локальном supplement; production и исходный индекс не менялись.
  • Успешный CI на push в main запускает release workflow: при настроенных registry secrets он собирает образы rootless Kaniko, публикует digest references и сохраняет schema-v4 descriptor с SHA-256 в Gitea artifact; sidecar проверяется после извлечения из корня. Следующий workflow проверяет source-run identity и, при доступном gitea-api, метаданные артефакта только в dry-run и явно сообщает NOT DEPLOYED: ZIP не скачивается, SSH и host apply не выполняются. Добавлена отдельная root-verified status→fixed-tuple→ Windows --once привязка через строгий SSH dispatcher; она не использует Gitea/PR runner и не требует Gitea token на Windows. Config и Task Scheduler template выключены, задача не зарегистрирована и production CD не активирован. Зелёный handoff не означает деплой. Подготовлены owner-run cutover и rollback с проверкой backup, image IDs, RU/KY canaries и recovery journal; CI проверяет synthetic artifact и завершается ошибкой при отсутствии файлов. Windows receiver прошёл 17 synthetic client checks, 8 protocol checks и проверку private owner ACL на disposable real-NTFS fixture. Inert Windows argv probe подтвердил передачу пути скрипта с пробелами; Task Scheduler COM проверил XML с TASK_VALIDATE_ONLY — задачу не регистрировали, не обновляли и не запускали. Production D: path, SSH, установка на VPS и полный backup/restore не проверены; cutover остаётся заблокирован до отдельного restore-теста и owner bootstrap. Принимаются только завершённые успешные Gitea runs; pending recovery journal записывается до остановки сервисов, повторно применённый release отклоняется до простоя, а проверка main использует явно заданный production checkout. Windows preflight проверяет owner ACL и требует свободное место под максимальный допустимый архив.
  • Frontend 0.3.3 / Backend 0.13.2: управление пользователями отображается согласно правам аккаунта, подписи ролей локализованы, повторяющиеся действия кабинета убраны, а знак лаборатории приведён к основному бренду.
  • Добавлена политика Delivery First по уровням LOW/MEDIUM/HIGH: описаны обязательная глубина проверок, регрессионные тесты и доказательства угроз, совместимости и отката; обычные CI, одобрение и защита main остаются обязательными.
  • Frontend 0.3.2: устранены пересечения названия бренда с поиском и мобильной навигации документа; навигационные ссылки получили общие quiet и primary состояния.
  • Frontend 0.3.1: уточнена компоновка поиска, лаборатории и кабинета; splitter сохраняет минимальную ширину панелей, а на средних экранах фильтры открываются доступной боковой панелью. Исправлено отображение футера на маршруте пользователей и browser fixture смены пароля.
  • Frontend 0.3.0 / Backend 0.13.1: добавлен доступный splitter для изменения ширины результатов и документа. Язык поиска находится в фильтрах; состояния открытия, оглавление правовых заголовков, лаборатория и кабинет приведены к последовательной и компактной компоновке.
  • Добавлен план развития платформы со сравнением возможностей «Токтом Онлайн», пробелов Акылдаша и этапов продуктовой проверки.
  • Frontend 0.2.6 / Backend 0.13.1: двухпанельная компоновка поиска сохраняется до ширины 1175 px, чтобы три панели не обрезались при промежуточных ширинах окна.
  • Frontend 0.2.5 / Backend 0.13.1: устранены промежуточные переполнения навигации, старый текст больше не остаётся при ошибке загрузки другого документа; очищаются дополнительные URL-атрибуты юридической разметки, включая srcset и ping. Добавлены fixture-проверки ошибок и гонок загрузки, изоляции ссылок, reflow и безопасных форм управления пользователями.
  • Frontend 0.2.4 / Backend 0.13.1: исправлены состояния и адаптивный поиск, чтение документа и лаборатории, доступные диалоги; управление пользователями вынесено на отдельный защищённый экран. Документная разметка очищается от активного HTML и небезопасных ссылок. Добавлены проверки маршрутов и reflow; правовой текст и API управления пользователями не менялись.
  • Frontend 0.2.3: добавлен публичный поиск по правовой базе с фильтрами, адаптивной выдачей, просмотром редакций и поиском по тексту документа; внутренняя лаборатория сохранена, её подсказки стали компактнее и привязаны к целевым элементам. Интерфейс использует локальные шрифты Noto Sans и Noto Serif.
  • Исправлены переключение на доступный язык редакции, очистка содержимого и ссылки на официальный источник при смене документа или ошибке загрузки; подписи фильтров локализуются на кыргызский язык.
  • Infrastructure: systemd unit Gitea Actions runner теперь использует ProtectHome=read-only, сохраняя доступность /run/user и существующий writable carve-out для rootless runtime; VPS не изменялся.
  • Backend 0.12.1: добавлен ограниченный возобновляемый staging редакций из текущего API Минюста с проверкой точных ID и метаданных, изоляцией от legacy-корпуса и сохранением исходного порядка редакций при нормализации и экспорте. Тест overlap guard задаёт безопасные права fixture независимо от umask CI; сам guard не ослаблен.
  • Rollback preflight проверяет digest-pinned image references по сохранённому image ID и останавливается до изменений deployment; переключение production на digest и полноценный digest rollback пока не реализованы.
  • Infrastructure: добавлен офлайн-контракт release manifest с точной схемой, digest-ссылками и repository allowlist; проверен Compose override с --no-build как требованием будущего deploy. Публикация, provenance и production-деплой не включены.
  • Добавлен read-only возобновляемый inventory корпуса с полным хешированием, потоковой сверкой, индексируемыми диапазонами путей и provenance SHA-256 проверяющего; значения stat хранятся без ограничения SQLite INTEGER. Сравнение source/staging сверяет путь, размер и SHA-256, удерживает shared locks и отклоняет пустые корпуса без документов или фрагментов. Runbook и CURRENT_STATE.md отражают, что полный аудит корпуса ещё выполняется; это изменение не означает готовность корпуса или production.
  • CI actions теперь используют workspace, переданный Gitea, для Caddyfile и Kaniko build context; CI run 69 и smoke run 70 прошли на self-hosted runner.
  • Runner installer сохраняет HOME и XDG-пути в user-unit docker.service, перезапускает активный daemon и проверяет окружение его процесса.
  • Runner installer защищает image и mountpoint root-owned home-каталогом, оставляет регистрацию и workspace в runner-owned каталоге, безопасно форматирует образ по открытому FD и проверяет nosuid,nodev.
  • Backend 0.11.3: ключ подписи поисковых снимков читается из Docker secret-файла, а не из аргументов процесса. Добавлена базовая инфраструктура VPS, Caddy HTTPS proxy с разделёнными Compose-сетями и CI-проверка конфигурации; публикация образов и production-деплой остаются выключены до проверки runner, registry, backup/restore и ограниченного deploy-helper.
  • Frontend 0.1.2: на планшетной ширине экран поиска переходит в одну колонку, чтобы фильтры, результаты и документ помещались в окно.
  • Backend 0.11.2: смена пароля требует текущий пароль и запрещает оставить прежний, включая временный пароль при первом входе.
  • Backend 0.11.1 и frontend 0.1.1: в управлении пользователями показываются даты первого и последнего входа, а также последнего сброса пароля.
  • Backend 0.11.0 и frontend 0.1.0: лаборатория переоформлена по дизайн-системе «Түндүк»; добавлены учетные записи, обязательная смена временного пароля, личный кабинет и управление пользователями для admin.
  • Backend обновлён до 0.10.4: многословный поиск получил низковесный OR fallback с требованием совпадения минимум двух терминов; fallback пропускает распознанные названия нормативных актов.
  • Backend обновлён до 0.10.3: запрос о налоге на прибыль поднимает действующий Налоговый кодекс; точное совпадение фразы дополнительно усиливает результат.
  • Backend обновлён до 0.10.2: действующие документы ранжируются выше, а утратившие силу — после остальных; из лаборатории удалён пустой блок фрагмента.
  • Backend обновлён до 0.10.1: поисковая выдача по регистрации больше не ограничивается только тремя заранее выбранными нормативными актами.
  • Backend обновлён до 0.10.0: поисковый API использует общий планировщик запросов, расширяет аббревиатуры ОсОО/ООО/ЖЧК и для запроса о регистрации приоритизирует положение КР 2026 года, закон об обществах и ГК КР.
  • Backend обновлён до 0.9.4: из поисковых фрагментов убраны технические маркеры подсветки OpenSearch.
  • Backend обновлён до 0.9.3: исправлен локальный индекс production Search API, ошибки поиска показываются в общем status-блоке, а панель сохранения и footer выстроены в обычном порядке документа.
  • Backend обновлён до 0.9.2: внутренняя лаборатория получила визуальный polish-проход и короткий повторно запускаемый tutorial для новых проверяющих.
  • Backend обновлён до 0.9.1: все статусы из нормализованного корпуса доступны как отдельные фильтры, варианты конституционного закона и указа сопоставляются с подтверждённой юридической силой, неизвестные типы документов сохраняются под общим фильтром без вывода юридической силы.
  • Уточнено, что внутренняя лаборатория оценивает выдачу собственного OpenSearch; ЦБД Минюста служит источником для подтверждения документов, а прежние Excel/PDF бланки удалены.
  • Исключены секреты и локальные данные из Docker build context; синхронизирована версия интерфейса.
  • Добавлен production deployment baseline для Search API и OpenSearch с постоянными хранилищами и healthcheck.
  • Добавлено восстановление незавершённой разметки из localStorage после перезагрузки страницы.
  • Добавлена внутренняя лаборатория проверки поисковой выдачи: просмотр документов, оценка релевантности 0–3, комментарии и SQLite-экспорт подписанных снимков.
  • Уточнены доступные состояния и адаптивное поведение внутреннего интерфейса оценки поисковой выдачи.
  • Добавлен план внутреннего интерфейса оценки поисковой выдачи юристами.
  • Завершён Search API v1: стабильные справочники, валидный OpenAPI, безопасная пагинация и проверка актуальных редакций в локальном OpenSearch.
  • Добавлен фильтр Search API v1 по укрупнённой юридической силе. Полная иерархия GeneralClassifiers экспортирована в отдельный черновой каталог; тематическая навигация остаётся вне API v1 до ручного утверждения рубрик и подписей.
  • Добавлено безопасное переключение alias на новую версию поискового индекса после полной загрузки; checkpoint защищает возобновление загрузки от смены alias.
  • Добавлен roadmap готовности данных, поиска и API перед проектированием frontend.
  • Исправлена выдача для явных запросов об открытии ОсОО и ЖЧК: первыми показываются действующие положение о регистрации и закон о хозяйственных товариществах и обществах.
  • Добавлен CLI python3 -m search.query для проверки текущей выдачи локального OpenSearch.
  • Добавлена инструкция по подготовке и независимой проверке relevance set.
  • Улучшено ранжирование relevance-оценки: запрос теперь сопоставляет название и текст документа как единое поле.

0.5.0 — 2026-08-15

  • Добавлена воспроизводимая оценка качества поиска по Recall@10 и MRR@10.
  • Подготовлен шаблон relevance set из 25 русских и 25 кыргызских запросов с инструкцией по ручной разметке.