Перейти к содержанию

Текущее состояние SKUARO

Обновлено: 2026-08-26.

Инициализация

  • Статус: завершена.
  • Локальный Git и приватный origin настроены.
  • Рабочая ветка DEV отслеживает origin/DEV.
  • Candidate 5e63c5e в приватной origin/DEV был откатан после live-header FAIL. Проверенный immediate + deferred fix и evidence включены в текущий безопасный Git-closeout ветки DEV; runtime после обязательного rollback остаётся на прежнем artifact и этим closeout не обновляется.

Текущий этап

Целевая production-архитектура принята, локальная техническая основа фазы 1B выполнена, защищённые DEV и STAGE запущены на тестовом сервере. Владелец проекта объявил результат product gate как ПОДТВЕРЖДЕНО 2026-08-21.

Решением 0032 обычная разработка переведена на live STAGE-цикл: реализовать, выполнить минимальную сборку/запуск, сразу разместить текущий snapshot, передать URL владельцу и исправлять по ручной UI/UX-проверке. Независимые gates, hashes, полные tests/security и повторные проверки запускаются только отдельной командой или перед PROD. Решением 0033 снята граница «SKUARO не CRM»: функциональный состав открыт. Решение 0034 закрепляет production-like STAGE: регистрация не закрывается, test-only аккаунты/bypass/mocks не используются, Product behavior совпадает с будущим боевым контуром при отдельных DB, sessions, credentials и домене.

Решением 0035 принят отдельный production-readiness контур. После ручного STAGE-тестирования команда ПОДГОТОВИТЬ К ПРОДАКШНУ запускает полный audit, repair loop и независимый GO/NO-GO; фактический PROD deploy остаётся отдельной командой. Созданы prompt, профиль production-release, канонический runbook и Skill candidate. Независимый reviewer выдал VERIFIED после исправления модели candidate revisions, production backup/restore boundary, версии CIS Docker и revision ledger. Первый realistic dry-run ещё не выполнен, поэтому процедура пока не активируется на реальном candidate.

Параллельно разрешены четыре направления:

  1. последовательный вертикальный backend-срез «Сегодня»; Auth PoC начат после разрешения зависимости;
  2. эксплуатационная доводка защищённых DEV/STAGE без расширения продуктового backend.
  3. продолжение решения 0018 после принятой локальной реализации AppShell, /home и личных settings: организационные настройки остаются зависимы от Organization, Membership и permissions.
  4. развитие системы AI-агентов по решениям 0021–0023 и 0027–0028 с общей памятью, проверяемыми Skills, доказательным handoff и внешним UI-reference workspace.

Решение 0023 применено локально и доказательно принято: созданы шесть project-scoped профилей, tester дважды остановил передачу и выдал VERIFIED только в третьей итерации, reviewer остановил передачу на противоречии scope и после исправления выдал VERIFIED. Orchestrator присвоил ACCEPTED_FOR_HANDOFF; профили и процесс разрешены как вход следующей отдельно ограниченной задачи.

Владелец 2026-08-26 принял решения 0027–0029 и 0031: внешний UI/UX-агент создаёт reference package в docs/ui-agent/results/, а завершённый result автоматически принимается целиком как точный visual source of truth без повторного UI audit/tester/reviewer gate. Revision 1 UIREF-2026-08-26-full-ui-redesign перенесена во весь существующий Product UI: Control Surface tokens, responsive composition, tables/cards, canonical logo, иконки и UI interactions. Product routes, data, permissions и Auth/API contracts сохранены. Текущий Product status visual memory: IMPLEMENTED_TEST_CANDIDATE.

2026-08-26 в 14:21 +05 полный snapshot 2269b24 развёрнут только в live STAGE на https://skuaro.top. API/web healthy, worker running, restart counters и fatal log markers 0; один synthetic SuperAdmin имеет capabilities settings/today/admin. Credentials сохранены вне Git в config_skuaro_Stage-Test.env с mode 600. Login/access и семь основных route URL получили 200; no-referrer, HSTS и noindex присутствуют. DEV runtime не переключался. Повторные UI/full-suite проверки не проводились по решениям 0031–0032 и прямой инструкции владельца.

2026-08-26 exact candidate 4f9d715 развёрнут только в STAGE и независимо получил VERIFIED; координатор присвоил ACCEPTED_FOR_HANDOFF. Полный синтетический sign-up → EMAIL_NOT_VERIFIED → Resend delivered → verify → replay → login/access прошёл, raw literal/encoded token markers в API/edge отсутствуют, effective access остаётся fail-closed для today и admin. DEV runtime не переключался.

Приватный webuzateam/SkuAro-Docs создан; его live-stage snapshot установлен в изолированный loopback-only runtime тестового сервера, а отдельный Caddy host прошёл validate и независимый pre-DNS review. Владелец создал A-record dev-doc.skuaro.top; авторитетный Regway, Cloudflare и Google возвращают правильный ответ, валидный HTTPS выпущен, guest/wrong/authenticated smoke дал 401/401/200 с обязательными security headers. Владелец принял один полный post-deploy smoke как достаточный для тестового сервера и остановил дополнительные повторные циклы.

Условие входа в фазу 4 выполнено. Auth PoC развёрнут в DEV: миграция применена, PostgreSQL/Auth/worker/API/web работают, Gmail runtime настроен. Синтетический PostgreSQL-сценарий прошёл. Из-за блокировки SMTP 587/465 владелец 2026-08-25 принял решение 0025: основной кандидат DEV transport меняется на Resend HTTPS API 443, Gmail сохраняется как fallback. Локальный adapter, provider config и deploy-safe env mapping реализованы без новой зависимости и получили ACCEPTED_FOR_HANDOFF после независимых tester/reviewer gates. Resend account и sending domain mail.skuaro.top созданы, требуемые DKIM/SPF/MX/DMARC опубликованы в авторитетной DNS-зоне Regway и независимо видны через публичный resolver; 2026-08-25 в 01:42 +05 Resend присвоил домену статус Verified. Минимальный API key ограничен Sending access только для этого домена и сохранён вне Git в отдельном secret-файле с mode 600. В 02:00 +05 фактический локальный adapter успешно отправил одно контролируемое синтетическое письмо владельцу, Resend подтвердил Delivered, а в 02:09 +05 владелец подтвердил фактическое получение. Exact candidate 5e63c5e был кратко развёрнут для runtime smoke, но обязательный STAGE header gate дал FAIL; до Auth send выполнен полный rollback на прежний DEV Gmail artifact и прежний edge. Live sign-up → email verify → login не запускался и остаётся обязательным.

Владелец 2026-08-24 принял решение 0024: подтверждение email открывает /onboarding/organization, а tenant-контекст создаётся только после формы одной транзакцией Organization + Membership(owner) + OrganizationModule(today) + AuditEvent + OutboxMessage. Архитектор подтвердил backend-границу platform/organizations, но владелец остановил реализацию до успешного live email gate; transport-путь теперь определяет решение 0025. Task card 2026-08-24-organization-onboarding-backend имеет статус BLOCKED_BY_EMAIL_GATE. Обход verification, локальная подмена результата и временное ослабление product policy запрещены. Entitlement today на этом шаге не открывает /today: до MemberModuleAccess + today.view доступ остаётся fail-closed.

Локальная задача 2026-08-25-resend-dev-email получила ACCEPTED_FOR_HANDOFF: tester и reviewer независимо подтвердили explicit provider, mixed config, exact-body idempotency, whitespace response validation, Gmail fallback, безопасные ошибки и обязательные проверки. До приёмки tester трижды и reviewer один раз останавливали handoff; все code/docs findings исправлены и перепроверены. Решение относится только к локальному transport/config и не снимает live email gate.

Последний завершённый шаг

  • 2026-08-26 весь текущий Product snapshot с автоматически принятым UI-reference зафиксирован в приватной origin/DEV commit 2269b24 и размещён только в STAGE. Server image sha256:ca6f474c…029e, web image sha256:d0d9be54…d47b; live login/access/routes smoke прошёл, synthetic SuperAdmin создан, credentials сохранены только во внешнем mode-600 secret-файле, DEV не изменён.
  • 2026-08-26 проверен внешний result UIREF-2026-08-26-full-ui-redesign revision 1. Подтверждены 14 desktop + 14 mobile screens, 22 state references, работа всех routes и отсутствие overflow на 360/390/412. Gate REJECTED из-за contract, synthetic-data, accessibility, metadata/provenance и repository-hygiene defects; точные требования revision 2 сохранены в docs/agent-tasks/2026-08-26-external-ui-full-redesign-verification.md.
  • 2026-08-26 владелец разрешил не ждать developer-сайт и назначил первую внешнюю UI-reference задачу UIREF-2026-08-26-full-ui-redesign revision 1. Brief охватывает Auth, общий AppShell, /home, /today, личные settings и Admin на desktop/mobile, требует новый UI-kit, полный screen/state package и кликабельный reference prototype. Источник контекста до Docs — перечисленный в задаче локальный snapshot; Product implementation, Git и deploy не разрешены.
  • 2026-08-26 создан и независимо проверен (VERIFIED, координатором ACCEPTED_FOR_HANDOFF) reference-only workspace внешнего UI/UX-агента: один stateful docs/ui-agent/TASK.md, полный будущий developer-сайт как контекст, revision-specific results/ для окон/UI-kit/prototypes и controlled promotion принятой visual memory в memory/ACCEPTED.md. На момент завершения workspace-задачи текущая задача была EMPTY; позднее это состояние изменено решением 0028 и первой UI-reference задачей. Код, runtime, Docs site, Git remote и внешние сервисы тогда не изменялись.
  • 2026-08-26 разрешённый DEV deploy exact commit 5e63c5e прошёл content-addressed build, production audit 0, logical dump и migration 0; DEV был healthy на Resend без активных Gmail credentials. External smoke обнаружил, что обычный edge header не перекрывает strict-origin-when-cross-origin legacy STAGE App. До Auth send выполнен обязательный rollback DEV и общего edge: DEV readiness 200, прежние images/Gmail восстановлены, STAGE images/start times/data неизменны, актуальный dump повторно проходит pg_restore --list. Локальный immediate + deferred Caddy fix после первого REJECTED независимо получил tester VERIFIED, reviewer VERIFIED, coordinator ACCEPTED_FOR_HANDOFF только к новому Git-closeout. Новый deploy заблокирован до clean SHA в origin/DEV и CI.
  • 2026-08-25 владелец принял решение 0026: защита Auth-токенов является общей production-ready policy Product App, а не DEV-only логикой. Первый независимый gate дал REJECTED: percent-encoded query key to%6ben декодировался Auth parser в token, но оставался в API/Caddy process log. Executor устранил bypass одновременно в API и edge/app regex, добавил partial/full encoded-key regression и подтвердил реальный Caddy 2.10.2 fail-path с REDACTED. Cycle 2 получил tester VERIFIED, reviewer VERIFIED и coordinator ACCEPTED_FOR_HANDOFF; reviewer проверил все 32 semantic-equivalent encoding-комбинации имени token. Оба текущих App edge-block импортируют один contract с no-referrer и narrow log_skip, а переход skuaro.top -> lk.skuaro.top обязан переносить contract с App. Focused 6/6, unit 128/128, coverage 70.55/67.24/63.29/73.32, toolchain, boundaries, lint, typecheck, build, Storybook, OpenAPI и diff-check успешны; оба Caddyfile прошли validate/adapt. Git, server, project runtime, DNS и email не изменялись; одноразовые test containers удалены.
  • 2026-08-25 DEV deploy candidate 0ddd04d остановлен до server mutation независимым preflight review: verification/reset tokens попадали бы в Fastify request, Caddy access и Caddy process/error logs. Первоначальное локальное исправление получило VERIFIED, но сохраняло DEV/STAGE-развилку и было заменено решением 0026 до Git/deploy. Исторические focused 29/29, E2E 25/25 и visual 30/30 остаются вспомогательным evidence, а не итогом нового gate.
  • 2026-08-25 локальный Resend HTTPS transport/config получил ACCEPTED_FOR_HANDOFF после циклов executor → tester → reviewer → orchestrator. Итоговый gate: focused 15/15, unit 122/122, coverage 70.38/67.20/62.79/73.07, lint, typecheck, boundaries, build, Compose и diff-check успешны. Внешние API key, deploy, письмо и live Auth flow не входили в эту локальную задачу.
  • 2026-08-25 по отдельному разрешению владельца создан Resend account и зарегистрирован sending domain mail.skuaro.top. Авторитетные NS skuaro.top принадлежат Regway; в его зоне опубликованы выданные Resend DKIM, SPF TXT, SPF MX и DMARC. Независимый Cloudflare DNS-over-HTTPS resolver возвращает все четыре записи с ожидаемыми значениями. В 01:42 +05 Resend подтвердил Verified — Your domain is ready to send emails. Затем создан минимальный API key с Sending access только для mail.skuaro.top и сохранён во внешнем config_skuaro_Resend.env с mode 600; значение не выводилось и не попало в Git. Контролируемый локальный adapter smoke в 02:00 +05 получил RESEND_SMOKE_SEND_OK, provider UI подтвердил Delivered, а владелец в 02:09 +05 подтвердил фактическое получение; использована синтетическая ссылка без verification token и клиентских данных. Временные recipient/smoke-файлы удалены. Runtime не развёртывался.
  • 2026-08-25 локально устранены три расхождения между интерфейсом и принятыми решениями: Auth-формы честно сообщают об отправке тестовых данных в сервис авторизации, CurrentAccess.startPath стандартизирован на /home, а карта проекта синхронизирована с решениями 0024–0025 и состоянием READY_FOR_VERIFICATION у Resend. Проверены boundaries, lint, typecheck, 115 unit-тестов с coverage, 25 E2E и 30 visual checks; интеграционный набор не стартовал без SKUARO_DATABASE_URL. Commit, deploy и внешние email-действия не выполнялись.
  • 2026-08-24 локально реализованы и доказательно приняты platform/shell и platform/home: один защищённый AppShell, capability-зависимая /home, зоны S1–S3/P1–P6/O1–O3, внутренние переходы, безопасный next, выход из сессии и разделённые /settings/profile и /settings/security. today, Admin и Account перенесены в общий каркас без backend, schema или deploy изменений. Tester и reviewer завершили итоговые gates со статусом VERIFIED; координатор присвоил ACCEPTED_FOR_HANDOFF после полного npm run check.
  • Пользователь 2026-08-23 принял решение 0023 и результат первого реального dry-run профилей: tester дважды вернул REJECTED, затем VERIFIED; reviewer вернул REJECTED, затем VERIFIED; orchestrator присвоил ACCEPTED_FOR_HANDOFF только после исправлений. Шесть project-scoped профилей и лимит трёх subagents проверены.
  • Пользователь 2026-08-23 принял решение 0022: заявление агента о готовности получает только READY_FOR_VERIFICATION; следующая зависимая работа разрешена после проверки артефактов и критериев, статуса VERIFIED и решения координатора ACCEPTED_FOR_HANDOFF. Созданы доказательный workflow, первая запись опыта и project Skill task-verification.
  • Пользователь 2026-08-23 принял решение 0021: агенты используют общую Git-версионируемую память опыта, а повторяемые процедуры улучшают существующий Skill при совпадающем контракте. Созданы политика памяти, первая запись и project Skill agent-learning.
  • Пользователь 2026-08-23 принял решение 0020 и docs/STAGE_TESTING_STRATEGY.md: разрешённый merge DEV -> STAGE должен автоматически запускать deploy соответствующего контура; весь candidate проходит независимые gates G1–G12 с бинарным итогом. Архитектура принята, но pipeline не активирован: удалённой ветки STAGE, deploy workflow, GitHub Environment и новых доменов пока нет.
  • Пользователь 2026-08-23 принял решение 0019: production сохраняется на .com; .top разделяется на DEV, developer docs и три STAGE-контура Site/App/user docs; прежнее требование очищать STAGE до runtime-only состава отменено. Решение зафиксировано в документации, DNS, Caddy, Compose и server runtime не менялись.
  • Пользователь 2026-08-23 принял решение 0018: /home является capability-зависимым главным экраном платформы; today остаётся продуктовым модулем /today; защищённые страницы используют общий AppShell и зоны S1–S3, P1–P6, O1–O3; личные и организационные настройки разделены. Первый frontend-срез решения реализован локально 2026-08-24 и включён в Git-closeout 2026-08-25, но ещё не развёрнут в DEV runtime.
  • На DEV реализован и развёрнут application authorization contour: GET /api/v1/access вычисляет доступ из сессии, подтверждения email, статуса пользователя и платформенной роли; отсутствие сессии даёт 401, неподтверждённый или inactive пользователь — 403, а сессии inactive пользователя отзываются.
  • В развёрнутом DEV runtime frontend routes /settings, /today и /admin/* закрыты общим route guard: обычный активный подтверждённый пользователь пока допускается только в /settings, а today и Admin fail-closed доступны платформенным администраторам до появления Organization, Membership, module entitlement и организационных permissions. В принятом локальном worktree та же сессия получает /home, но tenant-данные и /today остаются закрыты по текущим capabilities.
  • Решением 0030 Basic Auth снят со всех фактических test origins и больше не применяется по умолчанию: dev.skuaro.top, skuaro.top, dev-doc.skuaro.top и DEV API reference открыты без server-login dialog. SKUARO Auth и backend permissions защищённых Product-маршрутов сохранены.
  • Создана первая DEV-учётная запись super_admin отдельной операторской bootstrap-командой из внешнего secret-файла. Email и пароль не выводились и не сохранялись в проекте или временных server-файлах; live login, роль, полный набор capabilities и отзыв тестовой сессии проверены.
  • Для визуальной оценки добавлена платформа organizations и защищённая страница /admin/organizations с тремя полностью синтетическими демоорганизациями. Это не продуктовый модуль и не запись в PostgreSQL; демонстрационные данные явно отделены от будущих Organization/Membership.
  • DEV обновлён до content artifact worktree-9f9113f60287; migration завершилась с кодом 0, API/web/PostgreSQL healthy, worker работает. Перед переключением создан и проверен logical dump и сохранены rollback-копии конфигурации.
  • Решение 0014 реализовано физически: today перенесён в modules/today, общие Auth/Admin/Account capabilities — в platform/, Gmail adapter — в integrations/email; пользовательское поведение не менялось.
  • apps/web и apps/api оставлены composition roots, а module-specific компоненты «Сегодня» удалены из packages/ui; для каждого созданного контура добавлен публичный index.
  • Добавлен обязательный npm run boundaries:check: он проверяет manifest первого модуля, запрещённые внутренние и обратные импорты и циклические зависимости. Проверка включена в полный npm run check.
  • Playwright E2E и visual servers разведены по изолированным портам и больше не переиспользуют случайный процесс на 4173; первый диагностический запуск обнаружил там чужой локальный Python-сайт, который не останавливался и не изменялся.
  • Docker build теперь получает modules/, platform/ и integrations/, Compose запускает новый API entrypoint, а рекурсивная маска .dockerignore исключает stale tsconfig.tsbuildinfo. Fresh server/web images собраны и проверены локально.
  • Оставшаяся точная фиксация Node.js 24.19.0 удалена из Dockerfile: build image использует поддерживаемую линию node:24-bookworm-slim, сохраняя принятый минимум без закрепления patch-релиза.
  • Структурная миграция и следующий authorization release применены в product DEV; ветка и runtime STAGE не изменялись.
  • Владелец закрепил постоянную структуру новой разработки: product modules в modules/<module-id>, SaaS-основа в platform/, внешние adapters в integrations/, общие блоки в packages/, composition roots в apps/ и runtime/deploy в infra/.
  • Перед любой новой функцией теперь обязательно обсуждаются её класс, границы, данные, permissions, зависимости и точки интеграции; неоднозначная классификация останавливает создание папки до решения владельца.
  • Подтверждён Material for MkDocs 9.x OSS для отдельного webuzateam/SkuAro-Docs; developer docs опубликованы на dev-doc.skuaro.top публично для тестов, с noindex, в изолированном static-only контуре.
  • Подтверждено и реализовано, что product routes /settings, /today, /admin/* защищаются SKUARO Auth и backend-правами, а не общим Basic Auth; STAGE не изменяется.
  • Владелец проекта выбрал итог product gate ПОДТВЕРЖДЕНО; «Сегодня» принят первым production-модулем, а фаза 4 открыта для последовательной реализации.
  • Карточки участников и измерения критериев в репозитории отсутствуют; факт их проведения и конкретные результаты не выводятся из краткого подтверждения владельца.
  • Проведён read-only аудит тестового сервера и публичных DNS-записей без вывода значений доступов.
  • Установлены Docker Engine 29.1.3 и Compose 2.40.3; UFW разрешает только SSH, HTTP и HTTPS.
  • DEV обновлён из снимка незакоммиченного рабочего дерева до worktree-9f9113f60287; STAGE по прямому указанию владельца не обновлялся и остаётся на worktree-3d10591aed41.
  • dev.skuaro.top и skuaro.top работают через Caddy/HTTPS без Basic Auth; Product application guards, noindex, HSTS, token-log policy и log rotation сохранены. DEV /api/docs/* также доступен без серверного логина.
  • DEV/STAGE имеют отдельные PostgreSQL volumes, credentials, networks и runtime config; базы и API не публикуются наружу.
  • Исправлены отмена формы, проверка календарной даты, статус будущего действия, динамический счётчик очереди и фиктивные элементы управления.
  • Runtime API ограничен безопасным same-origin путём; SKUARO_LOG_LEVEL применяется API.
  • Локальные API, worker и Drizzle generation читают корневой .env через Node.js без копирования значений.
  • По решению владельца точная фиксация Node.js/npm снята; preflight проверяет только минимумы Node.js >=24 и npm >=11.
  • Unit-набор расширен до 49 проверок; coverage включает исходники и защищён минимальными порогами.
  • CI дополнен PostgreSQL service, database integration, coverage, production dependency audit и OpenAPI drift gate.
  • Намеренные disabled-состояния проверены визуально; полный набор desktop/mobile baseline повторно прошёл 26 visual checks.
  • Добавлены локальные адаптивные auth-прототипы: регистрация, вход, восстановление, новый пароль и ожидание подтверждения email; значения не сохраняются и не отправляются.
  • Добавлены /settings и отдельный /admin с картой проекта, разделами «Администраторы» и «Пользователи»; все операции работают только с демонстрационным состоянием в памяти страницы.
  • Карта проекта показывает состояние модулей, активные и будущие маршруты и три следующих задания разработки, не смешивая UI-прототип с готовностью backend.
  • Права платформенных ролей вынесены в проверяемое правило: super_admin может управлять любой платформенной учётной записью, а platform_admin не может изменять super_admin, назначать эту роль или подтверждать пользователя без email.
  • После отдельного разрешения установлен и зафиксирован better-auth@1.7.1 для PoC; Gmail выбран только как DEV email-провайдер.
  • Добавлены auth-таблицы, UUID/timestamptz SQL-миграция, обязательная email-verification, PostgreSQL sessions, recovery, revoke после сброса, блокировка создания сессии для inactive и явный rate limit.
  • Формы регистрации, входа и восстановления вызывают /api/v1/auth/*; прежняя демонстрационная успешная авторизация удалена.
  • Email sender отделён интерфейсом; добавлены безопасные шаблоны, memory sender и Gmail STARTTLS sender на nodemailer@9.0.5. Gmail-секрет читается только из внешнего файла в память процесса, credentials в проект не записывались.
  • Синтетический PostgreSQL integration-тест прошёл sign-up, обязательное подтверждение email, login, recovery и revoke прежней сессии; локальный container/network после теста остановлены, именованный test volume сохранён.
  • Точная фиксация Node.js 24.19.0/npm 11.17.0 отменена владельцем; поддерживаются Node.js >=24 и npm >=11, текущие 26.7.0/11.19.0 проходят preflight.
  • В DEV добавлен одноразовый migration service, применена одна Drizzle-миграция и создан проверенный по каталогу pre-migration dump; rollback-конфигурация сохранена.
  • Auth/Gmail-секреты установлены только в root-only DEV .env с режимом 600; временный Gmail source-файл с сервера удалён.
  • Исправлено восстановление публичного /api/v1/auth пути после Caddy proxy; гостевой get-session возвращает 200 null.

Фактически реализовано

  • apps/web — React/TypeScript/Vite composition root: runtime config, providers и router подключают product module и platform pages через публичные entrypoints.
  • apps/api — Fastify composition root с health/OpenAPI; он подключает platform Auth и внешний email adapter без размещения их реализации внутри app.
  • apps/worker — запускаемый pg-boss-контур без продуктовых очередей; локальный запуск читает корневой .env.
  • modules/today — фактическая граница первого продуктового модуля с module.yaml, публичным index.ts, frontend, module-specific UI, unit/component tests и Storybook stories; необязательные backend/schema-каталоги не создавались.
  • platform/auth, platform/admin, platform/account, platform/organizations — общие SaaS-возможности авторизации, платформенного администрирования, личного кабинета и синтетической витрины организаций.
  • platform/shell и platform/home реализованы локально: AppShell владеет общей capability-зависимой навигацией и сервисной зоной, PageFrame — областями страницы, а HomePage использует только подтверждённый CurrentAccess и явно синтетические сводки.
  • integrations/email — Gmail/SMTP fallback, локальный Resend/HTTPS adapter, provider-aware env loader и Gmail runtime verify; секреты в каталог не переносились.
  • packages/contracts, config, database, testing, ui — общие технические границы monorepo; packages/ui больше не содержит бизнес-компоненты очереди «Сегодня».
  • infra/compose — локальный PostgreSQL; API/frontend запускаются Node.js-процессами.
  • infra/deploy — server/web images, изолированные DEV/STAGE Compose-контуры, Caddy ingress и подготовленные backup units.
  • .github/workflows/ci.yml — действующий CI с database/coverage/audit/OpenAPI gates; результат удалённого запуска закрытия проверяется после push.
  • На тестовом сервере работают по 4 постоянных сервиса DEV/STAGE, общий Caddy ingress и отдельный static developer-docs container; migration jobs остаются одноразовыми.
  • HTTPS-доступность api.resend.com с DEV-хоста подтверждена через 443 с корректной TLS-проверкой; не завершены authenticated runtime-проверка текущего API key и полный Auth flow, post-verification создание организации и membership, tenant/module authorization для обычных пользователей, административный CRUD backend, продуктовые API-модули, реальные очереди и отдельный сайт developer docs.

Принятые продуктовые решения и оставшаяся цель

  • Разрешена открытая самостоятельная регистрация по email и паролю.
  • Организация и membership владельца создаются только после подтверждения email.
  • Принята парольная политика: 5–128 печатных ASCII-символов без пробелов, кириллицы и emoji; обязательного состава по группам символов нет.
  • На будущее отложен отдельный реестр неподтверждённых регистраций, куда копируется только email, и письма о продолжении регистрации.
  • Для всех пользователей принята ролевая модель с раздельными платформенными и организационными правами.
  • super_admin является глобальной ролью разработчика с полным доступом внутри приложения и отдельным /admin; раздел «Пользователи» позволяет менять email и статус active / inactive.
  • platform_admin («Администратор SKUARO») имеет полный доступ внутри приложения, но не может изменять, деактивировать или удалять учётные записи super_admin, а также назначать или отзывать эту роль.
  • Для /admin приняты начальные разделы «Администраторы» и «Пользователи»: super_admin управляет ролями администраторов, email, статусами, безопасной сменой пароля и архивированием.
  • Только super_admin может вручную подтвердить пользователя без перехода из email; действие требует причины, фиксирует способ super_admin_manual и запускает тот же атомарный post-verification flow.
  • Пользователь, зарегистрировавший организацию, после подтверждения email получает роль owner с названием «Руководитель организации» только в этой организации.
  • У каждого подтверждённого пользователя предусмотрен /settings; первый состав — email и безопасная смена пароля, остальные поля отложены.
  • После входа целевой стартовый маршрут — /home, содержимое которого определяется эффективными capabilities и выбранным контекстом; стандартный вход может вернуть пользователя только на допустимую deep-link.
  • Все защищённые внутренние страницы должны использовать единый AppShell; зоны S1–S3, P1–P6, O1–O3 являются постоянным словарём визуальных областей.
  • Личный кабинет разделяется на /settings/profile и /settings/security, а сведения об организации, участниках, модулях и permissions — на /organization/settings/*.
  • Принята продуктовая модульность: каждая самостоятельная функция оформляется как модуль; первым является today («Сегодня»), dashboard руководителя о состоянии дел организации.
  • Доступ сотрудников будет вычисляться из роли, активированных организацией модулей и отдельных permissions внутри каждого модуля.
  • Руководитель видит подключённые модули и позднее управляет доступом сотрудников; будущие тарифные пакеты отличаются набором модулей.
  • Production остаётся на skuaro.com, lk.skuaro.com, doc.skuaro.com. Целевой STAGE разделяется на skuaro.top для Site, lk.skuaro.top для App и doc.skuaro.top для user docs; developer docs публикуются на dev-doc.skuaro.top.
  • STAGE принимает текущий рабочий snapshot для быстрого ручного UI/UX и функционального тестирования; commit/hash/merge gate не обязателен.
  • Product, Site и Docs могут размещаться в существующий STAGE сразу после минимальной сборки/запуска в рамках разрешённой задачи.
  • Gates G1–G12, tester/reviewer и evidence handoff запускаются только отдельной командой ПРОВЕРИТЬ или перед PROD.
  • Для AI-агентов сохраняются общая память и профильные Skills, но обычная итерация выполняется основным агентом без обязательного делегирования.

Открытые решения

  • результат PoC Better Auth и резервный auth-вариант;
  • production email-провайдер и эксплуатационный email-контур; Resend выбран только как основной кандидат DEV transport, Gmail SMTP сохранён как fallback;
  • consent, retention, удаление, количество и интервалы писем и anti-abuse для отдельного реестра email неподтверждённых регистраций;
  • матрица функций, сущностей и меню для ролей организации owner, admin, member, viewer;
  • процедура назначения super_admin, MFA и подтверждение критических административных действий;
  • процедура назначения и отзыва platform_admin;
  • безопасная процедура смены email администратором и точный состав dashboard «Пользователи»;
  • точный UX административной смены пароля, уведомления о критических изменениях и retention архивированных аккаунтов;
  • отдельная иерархия управления между разными platform_admin, несмотря на их принятое правило полного доступа;
  • реестр следующих продуктовых модулей и permissions today для командных ролей;
  • названия, состав, цены и лимиты тарифных пакетов, trial и правила смены тарифа;
  • billing provider и поведение подписки при задолженности;
  • создание приватных Site и Docs репозиториев;
  • включение nightly backup timer, retention и окно обновления ОС;
  • AI-провайдер и первая внешняя интеграция после подтверждения потребности;
  • правовые, security и operational требования до реальных данных;
  • бюджет, сроки, RPO/RTO и retention до соответствующих обязательств.

Риски и блокеры

  • Владелец объявил гипотезу «Сегодня» подтверждённой, но обезличенные карточки участников и измерения порогов не сохранены в репозитории; доказательную базу решения нельзя независимо проверить.
  • Текущий frontend по-прежнему сбрасывает демонстрационные изменения после перезагрузки; технический API не доказывает готовность продуктового backend.
  • AppShell и /home приняты для handoff и включены в Git-closeout, но не развёрнуты: фактический DEV runtime продолжает использовать прежний каркас до отдельного release.
  • Целевая доменная схема решения 0019 реализована частично: dev-doc.skuaro.top настроен для developer docs, skuaro.top пока обслуживает прежний STAGE приложения, а lk.skuaro.top и doc.skuaro.top не настроены.
  • Решение 0020 ещё не активировано: текущий .github/workflows/ci.yml содержит один quality job без deploy, существует только ветка DEV, а автоматические gates, branch protection и GitHub Environment не созданы.
  • Реальные клиентские и персональные данные вводить нельзя.
  • Тестовый сервер имеет только 1 CPU, около 2 ГБ RAM и после deploy около 7,1 ГБ свободного диска; он годится для демо, но не для нагрузки.
  • На сервере ожидают установки 174 обновления ОС; broad upgrade и возможный reboot не разрешались.
  • Nightly backup units подготовлены, но timer не включён и retention не определён. Первый DEV pre-migration dump создан и проходит pg_restore --list; полноценный restore drill ещё не выполнен.
  • DEV artifact был собран до Git-закрытия как content ID worktree-9f9113f60287; после deploy в runtime-код не вносились изменения, а closeout добавил документацию и компонентный coverage-тест. Следующий deploy всё равно должен собираться из зафиксированного commit, а не переиспользовать локальный worktree.
  • Better Auth установлен только для PoC и не признан постоянной зависимостью до интеграционной проверки; AI остаётся кандидатом.
  • Route и API guards развёрнуты, но полноценный доступ обычного руководителя к /today намеренно остаётся закрыт до реализации Organization, Membership, module entitlement и permissions; server runtime fail-closed при неполной DB/Auth-конфигурации.
  • Двухэтапная аутентификация и Google App Password для DEV-ящика настроены, но исходящие TCP 587/465 завершаются таймаутом. Resend account, sending domain, публичные DNS-записи и отдельный STAGE domain-scoped API key настроены; provider verification имеет статус Verified. Повторная read-only проверка 2026-08-26 подтвердила одинаковые DKIM/SPF/MX ответы у Cloudflare и Google resolver, организационный DMARC p=none и HTTPS reachability. Active DEV по-прежнему использует Gmail, а STAGE Resend runtime и полный live Auth flow независимо подтверждены.
  • Candidate 5e63c5e откатан после live STAGE header FAIL; Auth email не отправлялся. Узкий immediate + deferred edge fix локально принят и включён в текущий Git-closeout candidate; full deployed Auth/log runtime не проверен.
  • Административный dashboard пока не получает фактический статус проекта из backend и не выполняет реальные операции над пользователями; после обновления страницы демоизменения сбрасываются.
  • Визуальные baseline зависят от macOS и версии Chromium; Linux CI потребует отдельного эталонного решения.
  • Папка секретов находится внутри дерева MEGA; права 700 не устраняют риск компрометации аккаунта или устройства.
  • Четыре moderate advisory остаются в dev-only цепочке drizzle-kit; совместимого автоматического исправления пока нет.
  • Синтетический PostgreSQL sign-up → verify → login → recovery → revoke исторически выполнен; 2026-08-26 exact STAGE candidate также прошёл полный live email flow через отдельный Resend credential. Email transport/Auth gate подтверждён; связанный organization task меняет статус отдельным coordinator update, а не автоматически.

Следующий шаг

Ближайший frontend-срез решения 0018 завершён локально и принят для handoff. Следующая зависимая UI-работа с организационным контекстом и /organization/settings/* начинается только после появления подтверждённых Organization, Membership и permissions; текущий DEV runtime до отдельного release продолжает показывать прежний commit.

Ближайший backend-шаг — согласовать и реализовать минимальные Organization и Membership, атомарное создание организации/роли owner после подтверждения email и entitlement модуля today. До этого локальная /home не показывает tenant-данные, /today для обычного пользователя закрывается fail-closed, а три организации в Admin остаются только синтетической визуальной витриной. Развёрнутый DEV runtime до отдельного release сохраняет прежний стартовый маршрут /settings для такого пользователя.

Обязательный email transport/Auth gate пройден в exact STAGE candidate без клиентских данных. Следующий backend-шаг — отдельно обновить organization task card и начать атомарный срез решения 0024 только в его принятой границе; DEV runtime при этом остаётся прежним и не считается доказательством STAGE.

Первая product task card проведена через executor → tester → reviewer → orchestrator и получила ACCEPTED_FOR_HANDOFF только после исправления manifest dependency, полноты S3, O1 breakpoint и horizontal overflow. Отдельным улучшением остаётся автоматическая сверка module.yaml dependencies с import graph; реализация pipeline 0020 по-прежнему требует отдельной задачи и внешних разрешений.

Developer-site опубликован и готов к передаче внешнему агенту; Product-контекст синхронизируется как живой STAGE snapshot без обязательной hash-revision. Доступ внешнему агенту фиксируется через актуальный TASK.md. Отдельно требуется согласовать безопасное окно обновления 174 пакетов ОС и возможный reboot. Product commit/push, merge, pipeline и PROD текущими deploy-разрешениями не выполнялись.

Отдельно остаются решения о nightly backup timer/retention, окне обновления ОС и окончательном принятии Better Auth после live email integration.

Новые CRM, коммуникационные, AI и другие продуктовые функции разрешены по необходимости и проходят обычную модульную классификацию. Реальные персональные данные, PROD, платные обязательства, migrations и разрушительные внешние действия по-прежнему требуют отдельного решения.

Проверки

  • STAGE exact candidate 4f9d715 — independent VERIFIED, coordinator ACCEPTED_FOR_HANDOFF; G1–G12 PASS. API/web images соответствуют exact SHA, migration/health/restore успешны, restart counters 0, DEV invariant сохранён.
  • STAGE live Auth — sign-up 200, pre-verify login 403 EMAIL_NOT_VERIFIED, Resend delivered, verify/replay 302 без replay-session, login/access/home 200; capabilities settings true, today/admin false, startPath=/home.
  • STAGE live log security — synthetic literal/encoded raw markers API 0/0, edge 0/0, [REDACTED] 2, API error markers 0; отдельный фактический Fastify regression 7/7, targeted ESLint и diff-check успешны.
  • Developer docs live — live-stage snapshot, strict Material build/nav/link/secret/mobile/keyboard/search checks успешны; authoritative Regway, Cloudflare и Google A-answer совпадает, HTTPS валиден. После решения 0030 docs guest получает 200 без Basic challenge; no-referrer/HSTS/noindex и ключевые content/search routes работают. Дополнительные повторные циклы остановлены владельцем как избыточные для тестового сервера.
  • Live deploy/rollback 2026-08-26 — exact archive SHA и image labels подтверждены; server production audit 0; два DEV dump mode 600 прошли pg_restore --list; migration 0; до rollback DEV API/web/PostgreSQL healthy и worker running. Mandatory STAGE header gate дал FAIL, поэтому Auth send не выполнялся. После rollback DEV readiness 200, прежние images/Gmail и edge восстановлены; STAGE images/start times/data не изменились.
  • Live-header fix — focused 6/6, полный unit 128/128, lint, typecheck, git diff --check, Caddy 2.10.2 validate/adapt успешны. Independent cycle 1 REJECTED deferred-only вариант; cycle 2 подтвердил ровно один no-referrer на proxied 200, Basic Auth 401 и upstream 502, sensitive access-log skip и ordinary logging. Tester и reviewer — VERIFIED, coordinator — ACCEPTED_FOR_HANDOFF только к Git-closeout.
  • Финальный closeout решения 0026 — npm run check успешно прошёл toolchain, boundaries, lint, typecheck, 128/128 unit, product build, Storybook и OpenAPI drift; browser-этап ожидаемо остановился только на sandbox listen EPERM. Отдельный разрешённый loopback-повтор подтвердил E2E 25/25 и visual 30/30. Предыдущий post-fix coverage gate остаётся применимым: 70.55/67.24/63.29/73.32; после него менялась только evidence-документация. Caddy 2.10.2 validate/adapt и encoded-key fail-path gates остаются успешными.
  • Decision 0026 cycle 2 — focused 6/6, unit 128/128, coverage 70.55% statements, 67.24% branches, 63.29% functions, 73.32% lines; toolchain, boundaries, lint, typecheck, build, Storybook, OpenAPI и git diff --check успешны. Edge/app Caddyfile прошли validate и adapt --validate на Caddy 2.10.2; adapted edge JSON содержит две no-referrer App policy и два log_skip. Реальные upstream fail-path проверки подтвердили literal, partial/full encoded key, reset path и Referer redaction; reviewer проверил 32/32 encoding-комбинации. Tester и reviewer — VERIFIED, coordinator — ACCEPTED_FOR_HANDOFF. E2E/visual не повторялись: локальный browser runtime не использует изменённый Caddy, а исторические suites не заменяют будущий live marker gate.
  • Token-log security fix — focused 29/29, unit 127/127, E2E 25/25, visual 30/30; lint, typecheck, build, Storybook, OpenAPI и git diff --check успешны. Coverage: 70.52% statements, 67.24% branches, 63.29% functions, 73.29% lines. Оба Caddyfile валидны на runtime Caddy 2.10.2, adapted JSON подтверждает runtime URI/Referer filters; independent reviewer выдал VERIFIED. Live marker search отложен до нового зафиксированного deploy candidate.
  • Resend focused environment/adapter tests — 15 из 15 успешно; проверены explicit provider, обе mixed secret-file цепочки, exact-body idempotency, смена sender/rendered payload, legacy Gmail mapping, network/HTTP/malformed response и whitespace provider id.
  • npm run typecheck, npm run lint, npm run boundaries:check — успешно; новая npm-зависимость не добавлялась.
  • npm run test:unit — 122 из 122 успешно.
  • npm run test:coverage — 122 из 122; 70.38% statements, 67.20% branches, 62.79% functions, 73.07% lines; пороги не снижались.
  • npm run build — успешно; frontend bundle 674.71 kB, gzip 202.45 kB, прежнее предупреждение о chunk больше 500 kB остаётся неблокирующим.
  • npm run test:integration не дошёл до тестов без SKUARO_DATABASE_URL; локальный Docker daemon не запущен. Исторический PostgreSQL Auth flow не считается новой проверкой Resend, а live provider send намеренно не выполнялся.
  • На момент локального code-gate Local/deploy Compose YAML и git diff --check были успешны; secrets, deploy и runtime не менялись. Позднее отдельным разрешённым шагом изменён только публичный DNS для mail.skuaro.top.
  • Resend DNS PoC — авторитетные NS определены как dns1dns4.regway.com; публичный Cloudflare DNS-over-HTTPS resolver подтвердил DKIM TXT resend._domainkey.mail, SPF TXT и MX send.mail, DMARC TXT _dmarc. Google resolver сначала сохранял отрицательный кэш для двух TXT-записей, поэтому источником проверки служил независимый положительный ответ Cloudflare. Resend UI на 2026-08-25 01:42 +05 подтвердил Verified — Your domain is ready to send emails.
  • Resend API key — создан с Sending access, ограничен mail.skuaro.top, сохранён только во внешнем config_skuaro_Resend.env; mode 600, формат обязательных env-полей проверен без вывода значений, защищённая временная копия удалена.
  • Resend controlled send — две первые временные попытки остановились до network request из-за CJS/top-level-await и workspace export resolution; после явного ESM .mts запуска фактический createResendAuthEmailSender вернул RESEND_SMOKE_SEND_OK. Resend UI подтвердил Delivered для темы «Подтвердите email в SKUARO», а владелец подтвердил фактическое получение. Recipient и API key не выводились; synthetic action URL не содержал verification token; временные файлы удалены.
  • Closeout 2026-08-25 — toolchain, boundaries, lint, typecheck, 122 unit/component/API-теста, product build, Storybook и OpenAPI drift прошли. Общий npm run check остановился только на sandbox listen EPERM; отдельные запуски с разрешённым loopback подтвердили 25 из 25 E2E и 30 из 30 visual tests. Coverage: 70.38% statements, 67.20% branches, 62.79% functions, 73.07% lines. Integration-набор не стартовал без .env и SKUARO_DATABASE_URL; значения секретов не читались.
  • Финальный npm run check для локального AppShell/home — успешно на Node.js 26.7.0/npm 11.19.0: toolchain, boundaries, lint, typecheck, 107 unit/component/API-тестов, product build, Storybook, OpenAPI drift, 25 E2E и 30 visual checks.
  • npm run test:coverage — 107 из 107; 69.38% statements, 65.28% branches, 62.28% functions, 72.06% lines; пороги не снижались.
  • Независимые tester/reviewer gates — итоговый VERIFIED; проверены 401/403/503, safe next, sign-out success/error/retry, ширины O1 на 412/768/1023/1024, отсутствие root horizontal overflow и сохранение внутреннего scroll таблицы.
  • Product bundle — 673.93 kB, gzip 202.10 kB; предупреждение Vite о chunk больше 500 kB остаётся неблокирующим риском.
  • Текущий documentation/Git audit — 89 Markdown-файлов, 70 относительных ссылок, пропущенных целей нет; 51 изменённый или новый файл, secret signatures/conflict markers/env/build artifacts не обнаружены, крупнейший файл 376175 байт.
  • npm run lint — успешно.
  • npm run boundaries:check — manifest today, публичные entrypoints, направление импортов и отсутствие циклов проверены успешно.
  • npm run typecheck — успешно.
  • npm run toolchain:check — проверяет минимумы Node.js >=24 и npm >=11; точная patch-версия не ограничивается.
  • npm run test:unit — 81 из 81 unit/component/API-проверок успешно на Node.js 26.7.0.
  • npm run test:integration — 2 из 2 PostgreSQL-проверок успешно в отдельном синтетическом Compose-контуре, включая полный Auth lifecycle; контейнер и сеть остановлены, test volume сохранён.
  • npm run test:coverage — успешно после добавления компонентной проверки новой Organizations-страницы: 66.00% statements, 65.42% branches, 59.92% functions, 69.07% lines; принятые пороги не снижались.
  • npm run build — API вместе с platform/integration sources и frontend успешно; frontend bundle 653.62 kB, gzip 197.86 kB; предупреждение Vite о chunk больше 500 kB неблокирующее для PoC, оптимизация отложена.
  • npm run build:storybook — успешно; предупреждение о крупных служебных chunks неблокирующее.
  • Fresh Docker build — локальные server/web images успешно собраны без прежних dist; API entrypoint отвечает live=200, ожидаемо ready=503 без БД, web image отдаёт SKUARO HTML на loopback.
  • npm run test:e2e — 15 из 15 behavioral browser-проверок успешно, включая auth, административные права и отсутствие ложного сохранения демоданных.
  • npm run test:visual — 26 из 26 desktop/mobile-проверок успешно; 6 новых admin/settings-снимков просмотрены.
  • npm run openapi:verify — OpenAPI и fetch-client воспроизводимы, generated diff отсутствует.
  • Remote server build — server image 84 MiB, web image 21 MiB; production dependency audit внутри image — 0 известных уязвимостей.
  • DEV/STAGE — по 4 running services, readiness 200, одинаковые server/web image ID, раздельные БД и volumes.
  • Внешний HTTPS smoke — без авторизации 401, с правильными раздельными credentials 200, чужие credentials 401, HTTP → HTTPS 308.
  • Chromium live smoke — DEV/STAGE отображают «Сегодня», console/page errors и горизонтальный overflow отсутствуют.
  • Security headers — X-Robots-Tag: noindex, nofollow, noarchive, HSTS; сертификаты валидны ещё около 89 дней.
  • Server security — UFW и Docker активны; наружу открыты только 22/80/443, web-порты доступны только через loopback, PostgreSQL/API не опубликованы.
  • Runtime audit — 9 контейнеров работают без unhealthy/restarting; за последние 5 минут error/fatal записей в их логах не обнаружено, доступно около 1,2 ГБ RAM и 8,2 ГБ диска.
  • Docker Compose config и локальный PostgreSQL runtime проверены; после теста container/network остановлены без удаления именованного volume.
  • Gmail SMTP probe — внешний secret-file читается, TCP 587/465 устанавливается, но greeting/TLS handshake не приходит; команда AUTH и отправка письма не выполнялись.
  • Первый browser-запуск внутри sandbox получил listen EPERM; e2e и visual suites повторены с разрешённым loopback bind и прошли.
  • Исторически первый итоговый npm run check блокировал Node.js 26.7.0; 2026-08-21 владелец отменил точную фиксацию, и совместимые версии Node.js >=24 больше не блокируются.
  • Повторный полный npm run check после Auth PoC — успешно: lint, typecheck, 75 unit, build, Storybook, OpenAPI drift, 15 E2E и 26 visual checks.
  • Полный npm run check после Gmail/toolchain изменений — успешно на Node.js 26.7.0/npm 11.19.0: lint, typecheck, 80 unit, build, Storybook, OpenAPI drift, 15 E2E и 26 visual checks; browser-часть повторена с разрешённым loopback после ожидаемого sandbox EPERM.
  • Полный npm run check после структурной миграции — успешно на Node.js 26.7.0/npm 11.19.0: toolchain, boundaries, lint, typecheck, 81 unit, build, Storybook, OpenAPI drift, 15 E2E и 26 visual checks.
  • Финальный npm run check после authorization, SuperAdmin bootstrap, витрины организаций и closeout coverage-теста — успешно на Node.js 26.7.0/npm 11.19.0: toolchain, boundaries, lint, typecheck, 94 unit/component/API, build, Storybook, OpenAPI drift, 19 E2E и 28 visual checks.
  • Изолированный PostgreSQL integration — 5 из 5 сценариев успешно: Auth lifecycle, access contract, inactive revoke, neutral recovery response, anti-abuse и повторяемый bootstrap SuperAdmin; test container/network остановлены, именованный volume сохранён.
  • Caddy-конфигурация DEV проверена до переключения; внешний smoke: /, /login, /register200, guest session — 200 null, /api/v1/access401, /api/docs/401, skuaro.top401; HSTS и noindex сохранены.
  • Встроенный Browser ChatGPT подтвердил гостевой переход /today/login?next=%2Ftoday; локальные visual baselines подтвердили desktop/mobile страницу трёх организаций. Authenticated API smoke SuperAdmin подтвердил super_admin, capabilities all, после проверки сессия отозвана.
  • STAGE после authorization deploy не изменён: прежние image IDs a0c17.../324a136... и времена запуска совпадают с контрольным снимком; внешний skuaro.top остаётся 401 без Basic Auth.
  • Полный npm audit0 critical, 0 high, 4 moderate; остаток в drizzle-kit -> @esbuild-kit -> esbuild, автоматический breaking downgrade не применялся.
  • npm audit --omit=dev --omit=optional — фактический production runtime tree без известных уязвимостей; server image также исключает необязательный CLI peer drizzle-kit.
  • Install scripts — точные версии esbuild и fsevents разрешены; необязательный postinstall msw явно запрещён; pending-позиций нет.
  • Локальные Markdown-ссылки — 87 файлов и 70 относительных ссылок проверены, отсутствующих целей нет.
  • GitHub Actions YAML и Docker Compose config — синтаксис успешно проверен.
  • Предыдущий DEV deploy worktree-9595b32dcc0b — migration job 0, API/web/PostgreSQL healthy, worker подключён к БД, Auth guest session 200 null, пароль с пробелом отклонён 400, тестовых пользователей 0.
  • DEV deploy worktree-9f9113f60287 — migration job 0, API/web/PostgreSQL healthy, worker работает, первая активная подтверждённая учётная запись super_admin создана безопасным bootstrap; временные credential-файлы удалены.
  • Внешний DEV HTTPS — Product, Auth-страницы и /api/docs/* публичны без Basic Auth; protected routes используют SKUARO Auth, HSTS и noindex присутствуют.
  • STAGE после DEV deploy не изменён: прежние image ID, compose checksum, времена запуска и пустая public-схема совпадают с контрольным снимком; readiness 200.
  • Gmail с тестового сервера — DNS работает, исходящие 587/465 завершаются timeout; credentials не дошли до SMTP AUTH, письмо не отправлялось.
  • Встроенный браузер доступен и использован для live guest route-guard smoke; ввод SuperAdmin credentials через браузер не выполнялся, а authenticated access отдельно проверен API-сценарием без раскрытия значений.
  • Проверка текущих изменённых и новых документов по сигнатурам приватных ключей и типовых токенов — совпадений нет.
  • Оба project Skills проверены встроенным Ruby YAML parser: frontmatter читается, обязательные name/description присутствуют, имена совпадают с каталогами, дубликатов нет. Штатный quick_validate.py не запустился из-за отсутствующего глобального Python-модуля yaml; зависимость не устанавливалась без разрешения, эквивалентные структурные проверки выполнены локально.
  • Отдельный доказательный dry-run требований 0021–0022 сопоставил их с фактическими ADR, workflow, memory records, Skills, policy, integration registry и recovery. Dry-run профилей по решению 0023 завершил последовательность executor → tester → reviewer → orchestrator со статусом ACCEPTED_FOR_HANDOFF после всех исправлений.
  • Closeout pre-commit audit 2026-08-25: git diff --check, conflict-marker и high-entropy secret-signature checks успешны; .agents/.codex не менялись, фактические .env и build/test artifacts в candidate не попали. Проверены 96 изменённых или новых файлов; крупнейший admin-project-map-desktop-chromium-darwin.png имеет 425 472 байт, все файлы существенно меньше порога 50 MiB.
  • Closeout-проверка повторила toolchain, boundaries, lint, typecheck, 94 unit/component/API-теста, product build, Storybook build и OpenAPI drift — успешно. Первый browser-этап общего npm run check остановился на ожидаемом sandbox listen EPERM; отдельные запуски с разрешённым loopback подтвердили 19 из 19 E2E и 28 из 28 visual tests.

Git-состояние

  • Текущая ветка: DEV, отслеживает origin/DEV.
  • origin: https://github.com/webuzateam/SkuAro-DEV.git.
  • До текущего closeout Local HEAD и tracking ref origin/DEV совпадали на 5e63c5e, divergence 0/0; GitHub CI run 32884394033 был успешен. Verified live-header fix и evidence входят только в новый private DEV candidate; deploy запрещён до успешного remote CI и отдельного разрешения владельца.
  • До closeout DEV была синхронизирована с origin/DEV на commit 26e389c; расхождение ahead/behind составляло 0/0.
  • Принятые frontend, email transport и первоначальный security diff решения 0026 зафиксированы в 5e63c5e; live-header precedence fix в этот commit не входит.
  • Git-ветки STAGE и PROD не создавались и не продвигались; STAGE runtime не обновлялся и остаётся на прежнем worktree artifact.
  • Merge, PR и продвижение веток не выполняются; STAGE runtime остаётся на прежнем worktree artifact.