Quality · Patch authority

Dari Temuan Bug ke Patch Aman dan Terverifikasi

Patch bukan sekadar potongan kode yang terlihat benar. Ia harus terikat pada source aktif, memiliki batas dampak, serta lulus pengujian yang relevan.

Temuan bug baru menjadi perubahan yang aman ketika hubungan antara penyebab, modifikasi, dan hasil verifikasi dapat ditelusuri. Proses ini penting terutama pada project besar yang memiliki import lintas file, state persisten, service worker, dan beberapa runtime backend.

Klasifikasikan temuan

Pisahkan defect terkonfirmasi, risiko yang membutuhkan verifikasi, dan improvement. Severity harus mempertimbangkan dampak, kemungkinan terjadi, serta kemudahan eksploitasi atau pemulihan. Jangan mempromosikan pola mencurigakan menjadi bug pasti tanpa reproduksi.

Ikat patch pada source identity

Sebelum patch dibuat, hitung hash source atau file yang menjadi target. Ketika source berubah setelah patch dirancang, candidate lama harus masuk REVIEW. Cara ini mencegah perubahan diterapkan pada basis yang sudah berbeda.

expectedSourceHash === activeSourceHash
  ? candidate dapat diverifikasi
  : candidate REVIEW / harus dibuat ulang

Batasi blast radius

Daftar target file, simbol yang berubah, dependent file, dan perilaku yang tidak boleh berubah. Untuk patch multi-file, commit harus bersifat all-or-nothing. Kegagalan satu file tidak boleh meninggalkan workspace dalam keadaan setengah diperbarui.

Gunakan test yang memiliki otoritas

Jumlah test yang tertulis tidak sama dengan jumlah test yang dijalankan. Runner harus membuktikan collected, passed, failed, dan skipped. Critical suite yang tidak terkoleksi harus memblokir promosi.

  • Focused test untuk bug yang diperbaiki.
  • Syntax/compiler check untuk struktur.
  • Regression test untuk fitur lama.
  • Real-browser E2E untuk UI, navigation, IndexedDB, dan service worker.
  • Negative test untuk tamper, replay, timeout, serta kegagalan dependency.

Siapkan rollback sebelum deployment

Rollback bukan rencana yang baru ditulis setelah produksi bermasalah. Simpan exact predecessor, hash artefak, urutan pemulihan, dan bukti bahwa data persisten tetap kompatibel. Untuk sistem multi-runtime, frontend, Worker, dan Python harus memiliki identity yang dapat direkonsiliasi.

Rule of thumbJika patch tidak dapat menjelaskan cara membuktikan keberhasilan dan cara kembali ke versi aman, patch tersebut belum siap dipromosikan.

Promosikan berdasarkan evidence

Local PASS menunjukkan source kandidat sehat pada lingkungan lokal. Production LIVE membutuhkan bukti tambahan: exact build aktif, request jaringan nyata, health berturut-turut, canary, dan post-deploy attestation. Jangan mengganti bukti tersebut dengan boolean operator.