Skip to content

Auditor Pakai Penggaris yang Sama dengan Gerbang

Adityo Guni Waluyo

Laporan audit menuduh delapan commit dokumen tanpa trailer; semuanya false positive. Satu baris filter menyelaraskan kebijakan auditor dengan gerbang.

Ringkasan

Laporan audit nandain 19 commit tanpa trailer Security-review, tapi 8 di antaranya cuma file QA atau screenshot yang emang dikecualikan gerbang commit. Akar masalahnya auditor gak baca daftar pengecualian yang sama, jadi hasilnya banyak false positive. Fixnya cuma satu baris filter git show, dan tes nomor 18 jadi hijau semua.

Laporan audit selesai dijalankan dan menampilkan sembilan belas baris temuan: commit kode yang kehilangan trailer Security-review: sejak tanggal adopsi. Delapan di antaranya menuduh commit yang hanya menyentuh berkas laporan QA dan tangkapan layar. Secara teknis laporan itu benar, trailernya memang tidak ada. Secara kebijakan laporan itu salah, karena jalur-jalur tersebut dikecualikan gerbang commit sejak hari pertama. Trailer sendiri artinya pasangan key-value dengan pemisah titik dua di ekor pesan commit [1]; pada commit dokumentasi, gerbang memang tidak pernah menuntutnya.

Ketidaksesuaian ini punya nama: drift kebijakan antara gerbang dan auditor-nya sendiri. Gerbang commit di repositori KotaPortal memeriksa pesan hanya ketika ada minimal satu jalur staged di luar daftar pengecualian. Commit yang seluruh jalurnya berada di folder dokumentasi, catatan manajemen proyek, atau laporan QA tidak pernah dituntut membawa trailer. Auditor retroaktif belum punya filter itu: ia menyapu semua commit pada jalur kode dan menandai setiap trailer yang hilang, termasuk dari commit yang menurut gerbang bukan kode. Delapan dari sembilan belas temuan menjadi false positive. Angka itu belum menghitung biaya di baliknya: setiap baris temuan tetap harus dibuka satu per satu, dibandingkan dengan kebijakan, lalu diputuskan bahwa semuanya memang aman. Itu pekerjaan review yang dibayar untuk kesimpulan kosong. Satu laporan yang tiga perempat isinya salah tidak akan dibaca lagi siapa pun, dan sapuan berikutnya mulai dianggap rutinitas yang boleh dilewati.

Diagnosis: dua aturan untuk satu kebijakan

Akar masalahnya bukan bug pada parsing, melainkan dua implementasi yang berjalan tanpa berbagi definisi. Gerbang mengevaluasi jalur pada saat commit dibuat; audit mengevaluasi ulang riwayat berbulan-bulan kemudian. Keduanya memakai bahasa yang berbeda soal siapa yang wajib diperiksa. Selama auditor tidak membaca daftar pengecualian yang sama, ia otomatis menerapkan standar yang lebih ketat terhadap artefak non-kode.

Perbaikan satu baris

Solusinya satu baris, disisipkan tepat sebelum pemeriksaan trailer di loop audit. Di hulu loop, git log memilih kandidat sejak tanggal adopsi dan git log -1 --format=%B mengambil badan mentah pesannya [3]. Saringan barunya membaca jalur yang diubah setiap commit:

git show --name-only --format="" "$sha" | grep -qvE "$EXEMPT_RE" || continue

git show --name-only mencetak daftar jalur yang diubah sebuah commit, dan flag format kosong menahan metadata agar tidak ikut tercetak. Tes grep -qvE bernilai sukses hanya ketika ada minimal satu jalur di luar pola pengecualian. Jika semua jalur cocok, pola lompat di ujung baris melompatkan commit itu tanpa memeriksa trailer. Pola pengecualiannya dipakai langsung dari konstanta yang sama dengan gerbang, mencakup folder dokumentasi, catatan manajemen, konfigurasi agen, serta laporan QA dan tangkapan layar. Satu konstanta, dua konsumen; tidak ada ruang untuk versi kebijakan kedua.

Merah dulu, lalu hijau

Perubahan ini dibuktikan lewat kasus uji ke-18 pada pengujian mandiri skrip. Kasusnya menanam commit yang isinya hanya laporan QA tanpa trailer, menjalankan audit, lalu memastikan commit tersebut tidak muncul di daftar temuan. Sebelum filter diterapkan, hasilnya merah: tujuh belas lulus, satu gagal. Setelah filter masuk, hasilnya hijau penuh: delapan belas lulus, nol gagal. Urutan ini penting. Kasus uji ditulis lebih dulu dan memang merah sebelum perbaikan ada, jadi warna hijau sesudahnya adalah bukti filter bekerja, bukan asumsi.

Presisi detektor adalah fitur

Pelajaran umumnya sederhana: auditor wajib memakai kebijakan pengecualian yang sama dengan gerbang yang diaudit. Kontrol preventif menghentikan pelanggaran sebelum terjadi; kontrol detektif menemukan dan mengoreksi kejadian yang sudah lewat [4]. Nilai sisi detektif bertumpu pada satu hal, yaitu setiap baris temuan memang layak ditindak. False positive melatih pembaca untuk mengabaikan laporan, dan kepercayaan yang sudah hilang itu mahal dikembalikan. Ketika auditor mencerminkan aturan gerbang secara persis, laporannya pendek, jarang, dan selalu berarti ada sesuatu yang perlu diperbaiki.

Sumber

Artikel terkait