docs: re-verify production identity and domain cutover status
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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
|
||||
```
|
||||
|
||||
@@ -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`
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# DNS_MIGRATION_INVENTORY
|
||||
|
||||
Дата: 2026-07-15
|
||||
Дата: 2026-07-16 (re-verified)
|
||||
Домен: `arhipovdan.ru`
|
||||
Источник: публичные `dig` запросы с OwlPrime/coder.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
```
|
||||
|
||||
@@ -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**.
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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 }) => {
|
||||
|
||||
Reference in New Issue
Block a user