# IQON Deployment Readiness Purpose: зафиксировать локальную готовность статического deployment-пакета после реализации следующих шагов аудита. ## Contents - [Scope](#scope) - [Implemented](#implemented) - [Verification](#verification) - [Remaining Gate](#remaining-gate) ## Scope Локальная проверка выполнена 20 May 2026. Удалённый deploy на reg.ru выполнен 20 May 2026 через FTP без удаления WordPress-файлов. ## Implemented | Area | Result | |------|--------| | Case studies | `/case-studies/` переведён на anonymized outcome snapshots | | Contact data | `/contact/` использует `office@iqon.com`, `@infobidgebot`, Bucharest | | Cache busting | Static HTML assets updated from `qa6` to `qa7` | | Security headers draft | `deploy/.htaccess` CSP tightened and `www.iqon.com` canonical redirect added | | Content brief | Case-study and contact blockers marked resolved for launch | | Mobile CTA | Contact CTA heading wrap fixed at 390px | | Live upload | Static files uploaded to `www/iqon.com` by FTP | | Live redirect loop | Removed Apache `%{HTTPS}` force block behind nginx | | Accessibility | Skip link added to all static pages | ## Verification Live legacy baseline: ```bash scripts/iqon-phase1-verify.sh https://iqon.com ``` Observed signal: - Missing security headers. - Missing viewport and skip link. - Known HTTP URLs still present. - Public REST users still exposed. - `readme.html` still returns `200`. - XML-RPC HEAD smoke still returns empty reply. Local static smoke: ```bash python3 local ThreadingHTTPServer smoke ``` Observed signal: - `/` returned `200`. - `/services/` returned `200`. - `/services/strategy-governance/` returned `200`. - `/services/enterprise-architecture/` returned `200`. - `/services/data-analytics/` returned `200`. - `/services/infrastructure-cloud/` returned `200`. - `/services/security-continuity/` returned `200`. - `/industries/` returned `200`. - `/case-studies/` returned `200`. - `/contact/` returned `200`. - `/sitemap.xml` returned `200`. - `/robots.txt` returned `200`. - `case_has_selected_outcomes True`. - `case_has_old_blocker False`. - `contact_has_infobidgebot 6`. - `contact_has_phone_fax False`. Headless Chrome visual smoke: ```bash python3 -m http.server 8073 --bind 127.0.0.1 Google Chrome --headless=new --window-size=1440,1200 Google Chrome --headless=new --window-size=390,1000 ``` Observed signal: - 10 desktop screenshots created. - 10 mobile screenshots created. - `contact-mobile` clipping found and fixed. - `contact-mobile-fixed.png` captured after the CSS fix. Static files: ```bash python3 -c "import xml.etree.ElementTree as ET; ET.parse('sitemap.xml'); print('sitemap ok')" bash -n scripts/iqon-phase1-verify.sh PYTHONPYCACHEPREFIX=/private/tmp/iqon-pycache python3 -m py_compile scripts/iqon-sitemap-inventory.py scripts/iqon-generate-redirect-map.py ``` Observed signal: - `sitemap ok`. - Shell script syntax passed. - Python scripts compiled with temporary pycache path. ## Remaining Gate Before destructive cleanup: 1. Confirm `u0012812_iqon` database archive is downloaded. 2. Keep WordPress files on server until rollback window closes. 3. Decide whether to move WordPress files into `_wordpress_backup/` later. 4. Do not delete `wp-content`, `wp-admin`, `wp-includes`, or DB until explicit cleanup approval. ## Live Deployment FTP target: ```text server71.hosting.reg.ru:/www/iqon.com/ ``` Rollback set downloaded locally before upload: ```text /private/tmp/iqon-remote-prestatic-20260520-ftp/ ``` Observed live verification: ```bash scripts/iqon-phase1-verify.sh https://iqon.com ``` Final signal: - `[OK] iqon Phase 1 verification passed for https://iqon.com`. - 10 target pages returned `200`. - `/sitemap.xml` returned `200`. - `/robots.txt` returned `200`. - `/wp-json/` returned `403`. - `/readme.html` returned `403`. - `/homepage/` redirected to `/`. - `/services-solutions/` redirected to `/services/`. --- *Created: 20 May 2026* *Updated: 20 May 2026*