# 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/`.

## Live Redesign Switch

After owner feedback that the first static upload was not the intended design, live was rolled back to the WordPress entrypoint first, then switched to the `new_redesign` visual direction.

Observed signal:

- `https://iqon.com/` returns the dark `new_redesign` homepage.
- Live HTML contains `theme-color` `#09090b`.
- Live HTML contains `.topbar`, `.hero-cloud`, and `.skip-link`.
- `/styles.css` returns `200 text/css`.
- `/script.js` returns `200 application/javascript`.
- `scripts/iqon-phase1-verify.sh https://iqon.com` returns `[OK]`.
- Headless screenshot captured at `reports/screenshots/2026-05-20/live-new-redesign-home.png`.

## Final Live Rollback To Legacy Design

After owner clarified that the desired live state was the old design, live was rolled back again to the WordPress entrypoint.

Observed signal:

- Original WordPress `.htaccess` restored from `/private/tmp/iqon-remote-prestatic-20260520-ftp/.htaccess`.
- Static `index.html` renamed out of `DirectoryIndex` path; it was not deleted.
- `https://iqon.com/` returns `200 text/html; charset=UTF-8`.
- Live HTML contains `How’s business?`.
- Live HTML loads `wp-content/themes/iqon/css/style.css`.
- Live HTML no longer contains `theme-color`, `.topbar`, or `.hero-cloud` from `new_redesign`.

## Host Split: Apex Legacy, WWW New Design

Owner clarified that the new design is needed on `www.iqon.com`, while the apex `iqon.com` should remain on the old WordPress design.

Implemented state:

- `https://iqon.com/` serves the legacy WordPress homepage.
- `https://www.iqon.com/` serves `index-www-new-redesign.html`.
- `styles.css` and `script.js` are available for the `www` static design.
- WordPress files remain in place for the apex host.

Observed signal:

- `https://iqon.com/` returns `200 text/html; charset=UTF-8`.
- Apex HTML contains `How’s business?`.
- Apex HTML contains `wp-content/themes/iqon`.
- `https://www.iqon.com/` returns `200 text/html`.
- WWW HTML contains `theme-color` `#09090b`.
- WWW HTML contains `.topbar` and `.hero-cloud`.

---

*Created: 20 May 2026*
*Updated: 20 May 2026*
