# IQON Deployment Readiness

Purpose: зафиксировать локальную готовность статического deployment-пакета после реализации следующих шагов аудита.

## Contents

- [Scope](#scope)
- [Implemented](#implemented)
- [Verification](#verification)
- [Remaining Gate](#remaining-gate)

## Scope

Проверка выполнена локально 20 May 2026. Удалённый деплой на reg.ru не выполнялся.

## 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 |

## 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 remote deployment:

1. Confirm `u0012812_iqon` database archive is downloaded.
2. Confirm fresh live file backup exists in reg.ru panel.
3. Confirm deployment window for replacing WordPress files with static files.
4. Execute `deploy/README.md` upload steps.
5. Run post-deploy verification from `deploy/README.md`.

---

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