From 060971da757482647c37a1f080fa2f9d245f198f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B0=D0=BD=D1=8F=20=D0=90=D1=80=D1=85=D0=B8=D0=BF?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Thu, 16 Jul 2026 08:43:37 +0000 Subject: [PATCH] docs: re-verify production identity and domain cutover status Co-authored-by: Cursor --- docs/CLOUDFLARE_NAMED_TUNNEL_SETUP.md | 7 ++++--- docs/DEMO_RUNBOOK.md | 6 +++--- docs/DNS_MIGRATION_INVENTORY.md | 2 +- docs/FINAL_DEMO_READINESS.md | 8 ++++---- docs/HEADED_GPU_PERFORMANCE_REPORT.md | 7 +++++-- docs/PERFORMANCE_AFTER_MAXIMUM_DEMO.md | 2 +- docs/PLAYWRIGHT_E2E_REPORT.md | 7 ++++--- docs/PRODUCTION_DEPLOYMENT_REPORT.md | 10 +++++----- docs/PUBLIC_DOMAIN_DIAGNOSTIC.md | 18 +++++++++--------- docs/RISK_REGISTER.md | 2 +- e2e/production.smoke.spec.ts | 2 +- 11 files changed, 38 insertions(+), 33 deletions(-) diff --git a/docs/CLOUDFLARE_NAMED_TUNNEL_SETUP.md b/docs/CLOUDFLARE_NAMED_TUNNEL_SETUP.md index 41fce10..fa6d445 100644 --- a/docs/CLOUDFLARE_NAMED_TUNNEL_SETUP.md +++ b/docs/CLOUDFLARE_NAMED_TUNNEL_SETUP.md @@ -89,12 +89,13 @@ Never commit: * API tokens * tunnel tokens in systemd unit Environment= -## Status +## Status (2026-07-16) ```text -Named Tunnel created: NO (auth missing) +Named Tunnel created: NO (auth missing — no cert.pem / CLOUDFLARE_API_TOKEN) Ingress prepared as docs: YES Connector healthy: N/A DNS route: N/A -NS cutover: WAITING_USER +NS cutover: WAITING_USER — Cloudflare nameservers not assigned yet +Quick Tunnel: KEEP RUNNING until permanent HTTPS PASS ``` diff --git a/docs/DEMO_RUNBOOK.md b/docs/DEMO_RUNBOOK.md index a4f473d..6f1b7ce 100644 --- a/docs/DEMO_RUNBOOK.md +++ b/docs/DEMO_RUNBOOK.md @@ -1,10 +1,10 @@ # Demo Runbook — OZON Tech Sorter Simulation **Назначение:** провести живую демонстрацию жюри/заказчику без сюрпризов. -**Дата актуализации:** 2026-07-15 -**Рабочий публичный URL (временный):** Quick Tunnel — см. `PRODUCTION_DEPLOYMENT_REPORT.md` +**Дата актуализации:** 2026-07-16 +**Рабочий публичный URL (временный):** `https://invitations-based-characters-accent.trycloudflare.com/` **Ожидаемый постоянный домен:** https://arhipovdan.ru/ — **BLOCKED_EXTERNAL** (`PUBLIC_DOMAIN_DIAGNOSTIC.md`) -**Локальный production:** http://127.0.0.1:3100/ +**Локальный production:** http://127.0.0.1:3100/ — commit `4fcce5b` **Проверка версии:** `curl -s http://127.0.0.1:3100/version.json` **Репозиторий:** `/home/coder/arhipovdan/app` diff --git a/docs/DNS_MIGRATION_INVENTORY.md b/docs/DNS_MIGRATION_INVENTORY.md index e70545d..d6f64c5 100644 --- a/docs/DNS_MIGRATION_INVENTORY.md +++ b/docs/DNS_MIGRATION_INVENTORY.md @@ -1,6 +1,6 @@ # DNS_MIGRATION_INVENTORY -Дата: 2026-07-15 +Дата: 2026-07-16 (re-verified) Домен: `arhipovdan.ru` Источник: публичные `dig` запросы с OwlPrime/coder. diff --git a/docs/FINAL_DEMO_READINESS.md b/docs/FINAL_DEMO_READINESS.md index f7497f0..32d79ea 100644 --- a/docs/FINAL_DEMO_READINESS.md +++ b/docs/FINAL_DEMO_READINESS.md @@ -1,6 +1,6 @@ # FINAL_DEMO_READINESS -Дата: 2026-07-15 +Дата: 2026-07-16 (re-verified) ## Status board @@ -10,13 +10,13 @@ | Production container | PASS | `20260715-2221` / `index-AagIOJbd.js` / `version.json` → `4fcce5b` | | Permanent domain | BLOCKED_EXTERNAL | REG.RU → openresty; CF Named Tunnel not auth'd | | TLS (permanent) | BLOCKED_EXTERNAL | SNI fail on 185.160.137.162 | -| Quick Tunnel | PASS | Temporary public URL OK | +| Quick Tunnel | PASS | Temporary public URL OK; smoke PASS | | Main / details | PASS | Local + tunnel | -| Unit / E2E / visual | PASS | 166 / 15 / 10 | +| Unit / E2E / visual | PASS | 166 / 15 / 10 (2026-07-16) | | GPU hardware (server) | BLOCKED_BY_DISPLAY_ENVIRONMENT | SwiftShader only | | Portable benchmark | PASS tooling | `npm run perf:browser` on laptop | | Replay stability | STABLE | See `REPLAY_RESOURCE_STABILITY.md` | -| Rollback | PASS | docker rename backup | +| Rollback | PASS | `owl-web-1-backup-20260715-2221` | | Agent / secrets | PASS | no credentials in git | ## Application readiness diff --git a/docs/HEADED_GPU_PERFORMANCE_REPORT.md b/docs/HEADED_GPU_PERFORMANCE_REPORT.md index e84e9f2..de3dabd 100644 --- a/docs/HEADED_GPU_PERFORMANCE_REPORT.md +++ b/docs/HEADED_GPU_PERFORMANCE_REPORT.md @@ -7,9 +7,12 @@ Display: headed (:99) Software renderer detected: **YES** Verdict: **NOT A GPU BASELINE — software renderer (SwiftShader/llvmpipe/etc.)** -## Server hardware WebGL re-check (2026-07-15) +## Server hardware WebGL re-check (2026-07-15 / 2026-07-16) -Tried Chromium flags independently (`--use-gl=egl`, `--use-angle=gl-egl`, `--use-angle=gl`, Vulkan ANGLE) with NVIDIA EGL vendor file present. All resolved to **SwiftShader**. +- `nvidia-smi`: GTX 1080 ×2 present; `/dev/nvidia*`, `/dev/dri` exist. +- Current user/groups: root; `video` group exists but no display server (`DISPLAY` empty, no `/tmp/.X11-unix`). +- Chromium probes (`--use-gl=egl`, `--use-angle=gl-egl`, `--use-angle=gl`, Vulkan ANGLE, `--ignore-gpu-blocklist`) all resolve to **SwiftShader**. +- No driver/display-server changes applied. ```text BLOCKED_BY_DISPLAY_ENVIRONMENT diff --git a/docs/PERFORMANCE_AFTER_MAXIMUM_DEMO.md b/docs/PERFORMANCE_AFTER_MAXIMUM_DEMO.md index eeda9a9..2c67f03 100644 --- a/docs/PERFORMANCE_AFTER_MAXIMUM_DEMO.md +++ b/docs/PERFORMANCE_AFTER_MAXIMUM_DEMO.md @@ -6,7 +6,7 @@ | ----- | ----- | | Release | `20260715-2215` | | Bundle | `index-AagIOJbd.js` | -| Commit | `16e7930` (via `/version.json`) | +| Commit | `4fcce5b` (via `/version.json`) | ## software/headless WebGL diagnostic baseline diff --git a/docs/PLAYWRIGHT_E2E_REPORT.md b/docs/PLAYWRIGHT_E2E_REPORT.md index ea536a1..72ed568 100644 --- a/docs/PLAYWRIGHT_E2E_REPORT.md +++ b/docs/PLAYWRIGHT_E2E_REPORT.md @@ -56,7 +56,8 @@ HUD snapshots preferred over full WebGL pixel-perfect. Golden files are not auto ```text 15 passed (e2e, excl. production) -Production smoke @ :3100 — PASS (index-ncgt6PBL.js) -Production smoke @ Quick Tunnel — PASS -Production smoke @ arhipovdan.ru — FAIL (TLS/DNS blocker) +Unit: 166 passed +Production smoke @ :3100 — PASS (version.json → 4fcce5b, index-AagIOJbd.js) +Production smoke @ Quick Tunnel — PASS (same commit) +Production smoke @ arhipovdan.ru — BLOCKED_EXTERNAL (TLS/DNS) ``` diff --git a/docs/PRODUCTION_DEPLOYMENT_REPORT.md b/docs/PRODUCTION_DEPLOYMENT_REPORT.md index 72de64d..a061a51 100644 --- a/docs/PRODUCTION_DEPLOYMENT_REPORT.md +++ b/docs/PRODUCTION_DEPLOYMENT_REPORT.md @@ -1,6 +1,6 @@ # PRODUCTION_DEPLOYMENT_REPORT -Дата: 2026-07-15 +Дата: 2026-07-16 (re-verified) Ветка: `feature/maximum-demo-realism` ## Current production @@ -28,7 +28,7 @@ | URL | Status | | --- | ------ | -| `http://127.0.0.1:3100/` | PASS — commit `16e7930` | +| `http://127.0.0.1:3100/` | PASS — commit `4fcce5b` | | Quick Tunnel | PASS — same commit (kept running) | | `https://arhipovdan.ru/` | BLOCKED_EXTERNAL — openresty / TLS SNI | @@ -46,7 +46,7 @@ Build args inject `BUILD_COMMIT` / `BUILD_BRANCH` / `BUILD_RELEASE` because `.gi ```bash export DOCKER_HOST=tcp://127.0.0.1:2375 docker stop owl-web-1 && docker rm owl-web-1 -docker rename owl-web-1-backup-20260715-2215 owl-web-1 +docker rename owl-web-1-backup-20260715-2221 owl-web-1 docker start owl-web-1 ``` @@ -54,8 +54,8 @@ docker start owl-web-1 ```bash curl -s http://127.0.0.1:3100/version.json -PLAYWRIGHT_BASE_URL=http://127.0.0.1:3100 EXPECTED_COMMIT=16e7930 npm run test:e2e:production -PLAYWRIGHT_BASE_URL=https://invitations-based-characters-accent.trycloudflare.com EXPECTED_COMMIT=16e7930 npm run test:e2e:production +PLAYWRIGHT_BASE_URL=http://127.0.0.1:3100 EXPECTED_COMMIT=4fcce5b npm run test:e2e:production +PLAYWRIGHT_BASE_URL=https://invitations-based-characters-accent.trycloudflare.com EXPECTED_COMMIT=4fcce5b npm run test:e2e:production ``` Both local and Quick Tunnel: **PASS**. diff --git a/docs/PUBLIC_DOMAIN_DIAGNOSTIC.md b/docs/PUBLIC_DOMAIN_DIAGNOSTIC.md index 1b1e8d4..4fea192 100644 --- a/docs/PUBLIC_DOMAIN_DIAGNOSTIC.md +++ b/docs/PUBLIC_DOMAIN_DIAGNOSTIC.md @@ -10,7 +10,7 @@ BLOCKED_EXTERNAL ``` Постоянный домен `https://arhipovdan.ru/` **не** обслуживает `owl-web-1`. -Production на `:3100` и Quick Tunnel обновлены до commit `16e7930` (`/version.json`). +Production на `:3100` и Quick Tunnel обновлены до commit `4fcce5b` (`/version.json` → release `20260715-2221`, bundle `index-AagIOJbd.js`). Named Tunnel: **не создан** из этого окружения — нет Cloudflare origin cert / API token. См. `CLOUDFLARE_NAMED_TUNNEL_SETUP.md` и `DNS_MIGRATION_INVENTORY.md`. @@ -40,7 +40,7 @@ dig NS arhipovdan.ru +short # ns1.reg.ru. ns2.reg.ru. | Egress IP хоста (ipify) | `185.160.137.162` (совпадает с A) | | `127.0.0.1:80` / `:443` на хосте | **closed** | | `185.160.137.162:80` / `:443` | **open**, отвечает **openresty** | -| `127.0.0.1:3100` | **open**, `owl-web-1` nginx → `index-ncgt6PBL.js` | +| `127.0.0.1:3100` | **open**, `owl-web-1` nginx → `index-AagIOJbd.js` / `version.json` → `4fcce5b` | Вывод: порт-форвард / другой хост за тем же публичным IP принимает 80/443. Это **не** namespace текущего Docker host listener set (на host net видны лишь `:3100` и `:8082`). @@ -62,7 +62,7 @@ dig NS arhipovdan.ru +short # ns1.reg.ru. ns2.reg.ru. | Process | `/usr/local/bin/cloudflared tunnel --url http://127.0.0.1:3100` (pid в coder) | | Named Tunnel | **не найден** (нет systemd unit, нет config.yml credentials) | | Permanent ingress for arhipovdan.ru | **отсутствует** | -| Working public URL | `https://invitations-based-characters-accent.trycloudflare.com/` → bundle `index-ncgt6PBL.js` | +| Working public URL | `https://invitations-based-characters-accent.trycloudflare.com/` → `version.json` → `4fcce5b` | Quick Tunnel **не** является завершённым production DNS-решением. @@ -75,8 +75,8 @@ Quick Tunnel **не** является завершённым production DNS-р ## Что было исправлено в коде/инфре приложения -- Production container уже отдаёт `index-ncgt6PBL.js` на `:3100`. -- Добавлены диагностика, production smoke script, документация (этот файл). +- Production container отдаёт `index-AagIOJbd.js` + `/version.json` на `:3100` (commit `4fcce5b`). +- Добавлены диагностика, Named Tunnel prep docs, production smoke с `EXPECTED_COMMIT`, DNS inventory. - DNS/openresty **не** изменялись из этого окружения (нет доступа к REG.RU и к openresty vhost). ## Действия пользователя (точные) @@ -94,8 +94,8 @@ Quick Tunnel **не** является завершённым production DNS-р ```bash dig A arhipovdan.ru +short curl -I https://arhipovdan.ru/ -curl -s https://arhipovdan.ru/ | grep -Eo 'index-[A-Za-z0-9_-]+\.js' -# ожидается: index-ncgt6PBL.js +curl -s https://arhipovdan.ru/version.json +# ожидается: "commit": "4fcce5b" (или актуальный production SHA) ``` ### Вариант 2 — починить openresty на том, кто слушает 185.160.137.162:80/443 @@ -120,7 +120,7 @@ Proxy status: DNS only (если не Cloudflare) или Proxied (если Cloud ```bash curl -I https://arhipovdan.ru/ curl -I https://arhipovdan.ru/details -curl -I https://arhipovdan.ru/assets/index-ncgt6PBL.js +curl -s https://arhipovdan.ru/version.json curl -s https://arhipovdan.ru/ | grep -Eo 'index-[A-Za-z0-9_-]+\.js' -PLAYWRIGHT_BASE_URL=https://arhipovdan.ru/ npm run test:e2e:production +PLAYWRIGHT_BASE_URL=https://arhipovdan.ru EXPECTED_COMMIT=4fcce5b npm run test:e2e:production ``` diff --git a/docs/RISK_REGISTER.md b/docs/RISK_REGISTER.md index 299d7d9..0a13569 100644 --- a/docs/RISK_REGISTER.md +++ b/docs/RISK_REGISTER.md @@ -13,7 +13,7 @@ | ID | Риск | Вероятность | Влияние | Статус | Митигация | | -- | ---- | ----------- | ------- | ------ | --------- | -| R01 | Production :3100 / arhipovdan.ru | Medium | Critical | Partially mitigated | Local+tunnel on `16e7930`+version.json; domain still BLOCKED_EXTERNAL | +| R01 | Production :3100 / arhipovdan.ru | Medium | Critical | Partially mitigated | Local+tunnel on `4fcce5b`+version.json; domain still BLOCKED_EXTERNAL | | R18 | Tunnel/cloudflared outage / permanent DNS | High | Critical | Open | Quick Tunnel kept; Named Tunnel needs CF login — `CLOUDFLARE_NAMED_TUNNEL_SETUP.md` | | R21 | Hardware GPU baseline недоступен в coder | High | Medium | Accepted | `BLOCKED_BY_DISPLAY_ENVIRONMENT`; portable `perf:browser` | | R22 | DNS NS cutover теряет MX/TXT | Medium | High | Open | `DNS_MIGRATION_INVENTORY.md` — check REG.RU panel before NS change | diff --git a/e2e/production.smoke.spec.ts b/e2e/production.smoke.spec.ts index 184e897..92d320b 100644 --- a/e2e/production.smoke.spec.ts +++ b/e2e/production.smoke.spec.ts @@ -2,7 +2,7 @@ import { test, expect } from '@playwright/test'; /** * Production smoke — manual only: - * PLAYWRIGHT_BASE_URL=http://127.0.0.1:3100 EXPECTED_COMMIT=16e7930 npm run test:e2e:production + * PLAYWRIGHT_BASE_URL=http://127.0.0.1:3100 EXPECTED_COMMIT=4fcce5b npm run test:e2e:production */ test.describe('production smoke @production', () => { test('version, routes, controls, safety, webgl', async ({ page }) => {