Lewati ke konten utama

Pembaruan Policy Berkala

Government Policy Guard bukan artefak yang tetap. Bahasa berubah, pengelakan baru muncul, dan batas yang ingin ditetapkan pemerintah dapat bergeser. Halaman ini mendokumentasikan proses pembaruan policy berkala — item Policy Filter dalam TOR/KAK yang menjaga guard tetap mutakhir — dan, sama pentingnya, disiplin yang mencegah perbaikan di satu tempat diam-diam membuka celah di tempat lain.

Seluruh siklus ini berpusat pada satu perintah:

make eval-slice SLICE=policy

yang mengukur tingkat tangkapan dan tingkat penolakan keliru guard terhadap policy slice bank (eval/golden-seed/labels.jsonl) melalui guard deterministik (src/aceh_rag/eval/eval_tier.py).

Mengapa perlu proses, bukan sekadar "mengedit aturan"​

Aturan guard adalah daftar leksikon dan konstruksi itu sendiri (lihat permukaan kustomisasi aturan). Hal ini membuat setiap edit kuat dan kasar: memperlebar aturan untuk menangkap satu pengelakan lagi secara rutin menolak kelas jawaban yang sah, sedangkan mempersempitnya untuk menghentikan penolakan keliru membuka sebuah pengelakan. Di provinsi tempat pertanyaan tentang agama, etnis, dan penerapan Qanun merupakan pekerjaan sehari-hari, pelebaran yang ceroboh bukanlah regresi kosmetik — pelebaran itu diam-diam mulai menolak pekerjaan yang sah.

Karena itu, aturan tidak pernah dirilis hanya berdasarkan penilaian. Aturan dirilis melalui siklus di bawah ini, yang memaksa pertukaran tersebut diukur terhadap kasus-kasus nyata berlabel sebelum diterapkan.

Siklusnya​

  1. Amati. Pengelakan baru lolos, atau jawaban yang sah keliru ditolak — dari hasil review, laporan klien, atau pemeriksaan red-team.
  2. Beri label. Tambahkan string yang persis ke policy slice bank (eval/golden-seed/labels.jsonl; seleksi dijelaskan dalam Evaluation → Slices) dengan label yang benar (policy_expected: block atau allow), serta bahasanya (id / en / ace / mixed). Kasus historis berbentuk generasi langsung tetap menjadi regresi classifier, tetapi penegakan runtime hanya ada pada permukaan jawaban query (ADR-0050). Slice merupakan spesifikasi tentang apa yang harus dilakukan guard pada tempat guard diterapkan.
  3. Biarkan gate gagal. make eval-slice SLICE=policy kini melaporkan ketidaksesuaian antara label dan perilaku guard. Inilah tujuannya: proses akan keluar dengan status non-zero pada setiap ketidaksesuaian yang tidak terdokumentasi, sehingga pengelakan baru atau penolakan keliru baru merupakan kegagalan build, bukan persentase yang berubah diam-diam. Celah tersebut kini terlihat dan tidak dapat diabaikan.
  4. Selesaikan — salah satu dari dua cara, keduanya eksplisit:
    • Perbaiki aturan (src/aceh_rag/policy_guards/policy.py) agar kasus tersebut ditangani, lalu jalankan kembali make eval-slice SLICE=policy. Proses hanya lulus jika perbaikan tidak merusak kasus berlabel lainnya — suite penolakan keliru diberi bobot yang sama dengan suite pengelakan, sehingga perbaikan yang menangkap pengelakan baru dengan cara menolak jawaban yang sah akan gagal di gate. Ini adalah guard regresi.
    • Terima celah ketika menangkap satu pengelakan lagi akan mengorbankan penolakan yang sah. Catat kasus tersebut sebagai batasan yang diterima dan terdokumentasi (dengan id kasusnya) agar gate lulus dan batasan itu tertulis — jangan pernah menjadi kelalaian diam-diam. Celah yang diterima ini tepat seperti yang disebutkan dalam apa yang sengaja tidak ditangkap guard dan bagian batasan ADR-0008.
  5. Beri versi + rilis. Classifier melaporkan nama berversi (deterministic-rules-v2, src/aceh_rag/policy_guards/policy.py:69-73), sehingga baris audit yang ditulis sebelum dan sesudah perubahan aturan dapat dibedakan. Naikkan versinya ketika kumpulan aturan berubah secara material, agar reviewer dapat mengetahui guard versi mana yang menghasilkan keputusan terdahulu.

Hasilnya adalah guard yang dapat ditingkatkan selamanya tanpa mengalami regresi: setiap edit merupakan pertukaran yang diukur terhadap kumpulan kasus nyata yang terus bertambah, dan setiap kelemahan yang diterima tercatat dengan id kasus, bukan tersembunyi di balik angka yang berubah.

Yang masih memerlukan manusia​

Dua bagian dari "menjaga policy tetap mutakhir" sengaja bukan merupakan siklus engineering:

  • Di mana batas ditetapkan merupakan keputusan klien. Memutuskan bahwa Pemprov Aceh ingin suatu eufemisme tertentu diblokir, atau topik tertentu dibiarkan terbuka, merupakan sesi kerja "kustomisasi aturan bersama pemangku kepentingan" yang disebut dalam TOR — aktivitas delivery klien, bukan sesuatu yang ditetapkan secara sepihak oleh tim engineering. Proses ini memberikan artefak konkret dan dapat diuji untuk diarahkan oleh sesi tersebut: tambahkan kasus-kasus yang disepakati ke policy slice, dan gate akan menegakkannya setelah itu.
  • Policy slice baru menjadi ground truth setelah divalidasi. Setiap label dan setiap baris Bahasa Indonesia serta Bahasa Aceh dalam policy slice bank ditulis oleh agen AI dan laporan mencetak peringatan tersebut di sebelah setiap tingkat yang dilaporkannya. Persetujuan dari penutur asli Bahasa Indonesia, penutur asli Bahasa Aceh, dan pemilik kebijakan komunikasi pemerintahan Pemprov Aceh wajib diperoleh sebelum tingkat yang diukur menjadi pengukuran eksternal atas keamanan, bukan sekadar sinyal regresi pada perilaku guard itu sendiri. Memasukkan para reviewer tersebut ke dalam siklus ini — sehingga penilaian mereka menjadi kasus berlabel — merupakan tugas berkelanjutan yang membuat proses ini dapat dipercaya.

Terkait​