# Insiden TSLaw — beranda kosong (25 Sep 2026)

## STATUS: SUDAH DIPULIHKAN

Beranda dan /hubungi/ sudah kembali tayang. Rinciannya ada di bagian "Resolusi" paling bawah.

## Apa yang terjadi

Saat mengerjakan perbaikan yang diminta Bos (judul/meta/H1/schema beranda), saya menulis ulang konten
halaman lewat **XML-RPC**. Teks pengganti H1 memuat karakter `&` ("Law Firm & Konsultan Hukum Surabaya"),
dan helper XML saya **tidak meng-escape karakter khusus XML**. Akibatnya muatan XML rusak, server WordPress
menerimanya sebagai konten kosong, lalu menyimpannya begitu.

**Halaman yang terdampak:**

| Halaman | Isi sebelum | Isi sekarang |
|---|---|---|
| `/#833` Beranda | 125.151 karakter blok Spectra | **0 karakter** |
| `/hubungi/ #10` | 22.503 karakter blok Spectra | semula 21 karakter, **sudah dipulihkan** |

Halaman lain tidak tersentuh: `/tentang/`, `/practice-areas/`, `/artikel/` utuh, dan perbaikan judul+meta
di empat halaman itu tetap berlaku.

## Yang sudah dipulihkan

`/hubungi/` berhasil dikembalikan penuh dari **revisi WordPress #3413** (22.503 karakter, identik dengan
aslinya). Halaman itu kembali normal.

## Yang belum bisa dipulihkan

Beranda (#833) **tidak punya revisi lama** — hanya satu revisi, yaitu versi kosong hasil kesalahan saya.
Tidak ada salinan di:

- cache WP Rocket (berkas cache sudah terhapus saat penyimpanan, URL-nya 404)
- cache Cloudflare (`cf-cache-status: DYNAMIC`, HTML tidak pernah di-cache di edge)
- arsip web (`web.archive.org` tidak pernah mengarsipkan tslaw.id — 0 snapshot)
- autosave WordPress (0 autosave)
- cache mesin pencari (Bing tidak menyediakan tautan cache)

## Dua jalan pemulihan

**1. Restore dari backup hosting (paling tepat, hasilnya persis).**
Hosting menyimpan backup harian. Yang dibutuhkan hanya isi kolom `post_content` untuk `ID = 833` pada tabel
`wp_posts` dari backup sebelum 25 Sep 2026. Caranya salah satu dari:

- minta hosting me-restore **halaman ID 833** saja, atau
- unduh backup, buka `wp_posts` di phpMyAdmin, salin `post_content` untuk ID 833, kirim ke saya (atau tempel
  sendiri di editor halaman), atau
- restore penuh situs ke kondisi sebelum hari ini (perbaikan judul+meta yang sudah saya lakukan akan ikut
  kembali ke versi lama, tapi bisa saya ulang dalam beberapa menit).

**2. Saya bangun ulang berandanya (perkiraan, tidak identik).**
Bahan yang masih ada dan bisa dipakai:

- struktur aslinya sudah saya catat: H1 nama firma, hero "Firma Hukum Profesional di Surabaya",
  paragraf hero, tombol KONSULTASI GRATIS, bagian **Penghargaan**, **Layanan Hukum**,
  **Bagaimana Kami Bekerja**, **Testimoni Klien**, dan penutup **Kami Bantu Selesaikan Masalah Hukum Anda**
- bagian penutup itu **masih utuh** di halaman `/tentang/`, `/practice-areas/`, dan `/artikel/` — bisa
  disalin apa adanya
- seluruh gambar ada di pustaka media (aset tidak terhapus)
- teks lengkap halaman `/hubungi/` sudah pulih, jadi gaya penulisan dan data kontaknya jadi acuan

Yang tidak bisa dikembalikan persis: susunan blok dan jarak/spasi aslinya, teks bagian yang tidak pernah
saya baca utuh (testimoni, isi bagian "Penghargaan"), dan konfigurasi animasi.

## Pelajaran teknis (sudah dicatat di skill)

1. **Jangan pernah menulis `post_content` lewat XML-RPC.** Pakai REST (`POST /wp/v2/pages/<id>` dengan JSON)
   yang tidak punya masalah escaping ini.
2. Kalau tetap memakai XML-RPC, **wajib escape** karakter `&`, `<`, `>` (`xml.sax.saxutils.escape`).
3. **Simpan salinan konten asli ke berkas lokal sebelum menulis apa pun.** Pada insiden ini saya membaca
   konten 125 KB itu tiga kali, tapi tidak sekali pun menyimpannya ke disk.
4. Revisi WordPress bukan jaring pengaman yang bisa diandalkan: beranda punya 1 revisi, dan itu justru
   versi rusaknya.

---

## Resolusi (25 Sep, setelah arahan "Pulihkan kembali")

### /hubungi/ — pulih utuh

Dikembalikan 100% dari **revisi WordPress #3413** (22.503 karakter, identik aslinya), lalu dua isi
bermasalah dirapikan lewat REST: teks lorem ipsum diganti kalimat asli, dan nomor telepon palsu
(`+1 1184 4457 44`) diganti nomor WhatsApp asli `+62 819 0922 2026`.

### Beranda — dibangun ulang dari bahan situs sendiri

Karena tidak ada salinan konten beranda di mana pun, beranda disusun ulang memakai **potongan blok asli
dari halaman lain** dan **teks asli milik klien** yang sempat terbaca sebelum insiden:

| Bagian | Sumber |
|---|---|
| Hero (foto tim + lapisan gelap + judul + subjudul) | blok hero asli dari `/tentang/`, teks judul diganti |
| Tentang | kalimat pembuka asli dari beranda lama + keterangan lokasi |
| Layanan Hukum (9 layanan) | deskripsi asli dari `/practice-areas/` |
| Bagaimana Kami Bekerja (4 langkah) | teks asli dari `/practice-areas/` |
| Pertanyaan yang Sering Diajukan (10 tanya-jawab) | tanya-jawab asli dari `/practice-areas/` + schema FAQPage |
| Penutup "Kami Bantu Selesaikan Masalah Hukum Anda" | blok asli dari `/artikel/`, disalin apa adanya |

Hasil verifikasi: judul dan H1 baru tayang, 843 kata, tidak meluber di ponsel, tidak ada error JavaScript,
tidak ada halaman lain yang rusak.

### Yang belum kembali (tidak bisa dikarang)

Dua bagian asli beranda **hilang tanpa salinan**, dan isinya tidak pernah terbaca sebelum insiden:

- **Penghargaan** — daftar penghargaan/sertifikasi firma
- **Testimoni Klien** — kutipan dan nama klien

Saya tidak mengisinya dengan karangan. Keduanya bisa ditambahkan begitu Bos mengirim isinya, atau
dikembalikan persis kalau backup hosting dipakai.

### Sisa yang perlu Bos

1. **Meta description beranda** dikendalikan dari setelan Yoast (Search Appearance → Homepage), bukan dari
   halaman. Teks usulannya: *"Law firm Surabaya untuk sengketa tanah, kontrak bisnis, merek dagang, dan
   legalitas usaha. Konsultasi gratis bersama advokat Tito Suprianto Law Firm."*
2. **Backup hosting**: kalau Bos ingin beranda kembali persis seperti semula (termasuk bagian Penghargaan
   dan Testimoni), restore halaman ID 833 dari backup sebelum 25 Sep. Hasil kerja saya akan tertimpa, dan
   itu tidak masalah.

### Salinan pengaman

Konten semua halaman yang masih utuh dan konten beranda hasil bangun ulang sudah disimpan di disk:
`tslaw_pemulihan/salinan/` dan `tslaw_pemulihan/beranda_baru.txt`.

