Batas antara Harness dan Reins Image: AI generated

Pada 31 Maret 2026, Anthropic secara tak sengaja menyertakan source map dalam paket npm Claude Code (v2.1.88). Penyebabnya: satu baris yang terlewat di .npmignore.1 Source map sebesar 59,8 MB itu mengekspos sekitar 512.000 baris TypeScript yang tidak diobfuskasi dari hampir 1.900 file. Anthropic menyebutnya “bukan pelanggaran keamanan, melainkan kesalahan packaging rilis — kesalahan manusia,” dan menyarankan pengguna untuk mengunci versi ke v2.1.87.

Dari codebase yang kemudian diteliti orang-orang, ditemukan bahwa satu fungsi tunggal dalam satu file (print.ts) mencapai 3.167 baris.2

Agen kode paling laku di dunia — alat yang mengklaim memberi tali kekang pada kode kita — ternyata tidak memasang tali kekang pada dirinya sendiri.

Saya tidak mengangkat ironi ini untuk mencemooh. Justru sebaliknya. Kejadian ini adalah jawaban paling gamblang atas sebuah pertanyaan yang sudah lama tidak bisa saya jawab dengan tuntas.

“Reins Engineering, bukankah itu harness engineering juga?”

Pertanyaan yang bagus. Dan pertanyaan yang tajam. Keduanya memang mirip. Keduanya ada di luar model. Keduanya adalah struktur non-model yang dibangun dengan kode. Keduanya mencegah agen berbuat sembarangan. Maka kecurigaan bahwa “tali kekang hanyalah bagian dari perlengkapan” adalah kecurigaan yang sah.

Saya sempat tidak bisa menjawab pertanyaan ini dengan rapi. Setelah menemukan jawabannya, saya sadar bahwa jawaban itulah yang paling tepat menjelaskan apa itu Reins. Dan kasus kebocoran di atas membuktikan jawaban itu secara nyata.

Pertama, Keduanya Tidak Bertentangan

Bayangkan perlengkapan kuda. Pelana dan kekang yang dipasang di kepala kuda, lalu dua tali yang terhubung dari kekang besi itu ke tangan penunggang — itulah tali kekang (reins).

Tali kekang terpasang pada kekang. Bukan di luar perlengkapan, melainkan komponen yang terpasang padanya. Jadi jika ditanya “apakah harness dan reins jelas berbeda atau saling bertentangan?” jawabannya adalah tidak. Keduanya adalah bagian dari satu peralatan yang sama.

Dari sinilah kita harus mulai. Perbandingan populer — “harness adalah pagar, reins adalah kemudi” — mempertentangkan keduanya. Begitu dipertentangkan, langsung kalah. Satu kalimat saja — “gerbang validasi juga bagian dari harness, kan?” — sudah cukup meruntuhkannya. Dan itu benar. CI, type check, test suite semuanya adalah scaffolding di luar model, dan itu memang termasuk dalam harness.

Jadi pertanyaannya harus diubah. Bukan apakah keduanya bertentangan, melainkan di mana keduanya mulai berbeda.

Di Mana Reins Mulai Mungkin — Tiga Lapis Loop

Sebelum menemukan titik perbedaan, kita perlu melihat di mana reins pertama kali menjadi mungkin. Dilihat dari lapisan loop, ada tiga:

① Loop obrolan    LLM → manusia → LLM               Semua probabilistik. Reins tidak mungkin.
② Loop agen       LLM → eksekusi → observasi → LLM  Eksekusi menyentuh tanah deterministik → Reins mungkin.
③ Loop Reins      ② + validator yang dirancang + ratchet   Reins sempurna.

Loop obrolan tidak punya tempat untuk memasang kekang. Kita belum naik ke punggung kuda sama sekali. Selama LLM menjawab, manusia membaca, lalu melempar balik ke LLM — tidak ada satu pun langkah yang deterministik. Tidak ada besi untuk mematuk tali.

Loop agen memasang pelana. Begitu eksekusi ikut bermain — kompiler berjalan, tes gagal, file ditulisi — loop pertama kali menginjak tanah deterministik. Barulah ada sesuatu yang bisa digenggam.

Inilah tepatnya mengapa Claude Code begitu dominan berhasil. Bash, file I/O, dan eksekusi tes — gerbang deterministik yang (setengah tidak sengaja) disisipkan ke dalam loop — sudah menghadirkan “reins sebagian.” Sesuatu yang tidak ada di era obrolan.

Ini bukan hanya klaim saya. HAL (Holistic Agent Leaderboard) dari Princeton menunjukkan bahwa dengan model yang sama, hanya dengan mengganti scaffold, akurasi bisa bergerak puluhan poin persentase — dibuktikan lewat lebih dari 21.000 eksekusi agen.3 Model tetap, yang berubah hanya struktur yang membungkusnya. Addy Osmani merangkumnya dalam satu kalimat: “Model biasa + harness luar biasa > model luar biasa + harness buruk.” Ia juga mencatat bahwa Opus yang sama mencetak skor lebih tinggi dalam harness kustom daripada di dalam Claude Code.4

Sampai di sini adalah wilayah yang disebut industri sebagai “harness engineering.” Penemuan yang tepat. Dan inilah titik di mana reins mudah dikacaukan. Keduanya sama-sama menghasilkan hasil dari luar model.

Tapi ② hanyalah setengah yang tidak disengaja dari reins. Reins Engineering adalah pekerjaan melengkapi setengah itu secara sadar. Mengubah gerbang yang terselip secara kebetulan menjadi validator yang dirancang, ratchet, dan pemisahan keputusan/implementasi — mengangkat ② ke ③. Wacana harness membuktikan reins, tapi tidak menggantikannya.

Tiga Sumbu

Ada dua orang yang bekerja dengan seekor kuda.

Yang satu membuat perlengkapan. Ukuran pelana, kekuatan kekang, bentuk kekang besi. Ini bisa dipakai untuk kuda mana pun, perjalanan mana pun. Sekali dibuat dengan baik, perlengkapan yang sama dipakai ke mana pun. Orang itu adalah pengrajin — bukan orang yang akan menungganginya.

Yang lain memegang tali kekang. Ia tahu perjalanan kali ini. Di persimpangan mana harus belok kiri, apa tujuannya, kapan bisa dibilang “sudah sampai.” Tali yang dipegangnya terpasang pada perlengkapan yang sama, tapi sinyal yang dikirimnya berbeda setiap perjalanan. Yang mengirim sinyal adalah penunggang — bukan pengrajin.

Di sini ada tiga sumbu:

  • Fungsi. Harness mencegah — batas yang melarang. Reins mengarahkan — ke mana pergi dan kapan selesai.
  • Masa pakai. Harness dibuat sekali dan digunakan ulang untuk semua tugas. Reins dirancang baru untuk setiap tugas.
  • Kepemilikan. Harness dikeluarkan oleh vendor. Reins ditulis oleh arsitek.

Loop Claude Code sama untuk semua proyek saya. Itu adalah harness. Dibuat dan dikirim oleh Anthropic, sama untuk semua pengguna. Tapi definisi selesai — “pengosongan penyewa = foto lima lokasi yang ditentukan” — ditulis oleh saya, untuk domain ini, secara langsung. Tidak ada harness yang mengandung itu. Itulah reins.

Ketergantungan Mengalir Hanya Satu Arah

Jika keduanya hal yang sama, satu tidak bisa dilepas tanpa yang lain. Mari coba pisahkan.

Harness ada tapi reins tidak ada. Agen berjalan. Terus berjalan tanpa berhenti. Tapi tersesat. Berkeliaran di padang tanpa penanda tujuan dan tanpa penilaian selesai, lalu berhenti dengan “kira-kira sudah cukup.” Kita sudah mengenal ini. Disebut vibe coding.

Reins ada tapi harness tidak ada. Ini bahkan tidak masuk akal. Tali kekang dipegang tapi tidak ada kekang untuk dipasangi. Tidak ada tempat untuk mengirim sinyal. Hanya menggenggam tali di udara kosong.

Ketergantungan searah. Reins membutuhkan harness, tapi harness tidak membutuhkan reins. Harness bisa berjalan tanpa reins — hanya berjalan dengan buruk. Asimetri ini membantah “keduanya sama” dengan bersih. Jika sama, melepas salah satu seharusnya meruntuhkan keduanya — tapi harness tetap bisa berlari sendiri.

Irisan Tepat Satu Kotak

Lalu apakah benar-benar tidak ada irisan? Ada. Tepat satu kotak.

Gerbang validasi yang dieksekusi. CI berjalan di dalam loop agen. Permukaan penegakan itu mencakup keduanya — bagian dari harness sekaligus sesuatu yang dipasang reins. Di sinilah pertanyaan “itu harness bukan?” lahir. Benar, di satu kotak itu, keduanya menunjuk hal yang sama.

Tapi di luarnya, keduanya berbeda.

   Harness saja             Irisan               Reins saja
─────────────────  ─────────────────  ─────────────────
 Sandbox·izin        Gerbang validasi    Definisi selesai
 Pengkabelan alat    (cek yang          Desain anti-"cheese"
 Manajemen konteks   dieksekusi)        Analisis proksi↔tujuan
 (blokir tanpa arah) (permukaan         (niat tanpa substrat)
                      penegakan)

Harness punya blokir tanpa arah tersendiri — sandbox tidak memberi tahu ke mana harus pergi, hanya mencegah keluar. Reins punya niat tanpa substrat penegakan tersendiri — definisi “apa yang selesai” ada lebih dulu bahkan sebelum ada gerbang yang mengeksekusinya. Tidak ada yang sepenuhnya mencakup yang lain. Keduanya berpotongan. Tidak saling mengandung.

Mengapa Pertanyaan “Apakah Subset?” Salah

“Kalau begitu, apakah reins adalah subset dari harness?”

Untuk menjadi subset, keduanya harus diukur dengan penggaris yang sama. Tapi harness didefinisikan oleh siapa yang mengeluarkan dan seberapa sering digunakan ulang (sumbu substrat), sedangkan reins didefinisikan oleh apa yang dilakukan pada lintasan (sumbu fungsi). Sumbunya berbeda.

Ini seperti bertanya “apakah merah adalah subset dari berat?” Ada hal yang merah sekaligus berat (= gerbang yang dieksekusi), tapi warna tidak bisa masuk ke dalam berat. Karena penggaris yang mengukurnya berbeda. Hubungan subset di sini adalah kesalahan kategori.

Hubungan yang tepat adalah: Reins mengandaikan harness, tapi tidak termasuk di dalamnya. Lapisan yang ditambahkan di atas bukan bagian yang terkandung di dalam. Yang ditambahkan melampaui substrat.

Titik Pemisah Sejati — “Cheese”

Sampai di sini adalah cerita tentang struktur. Tapi titik di mana Reins secara definitif berbeda dari wacana harness ada di tempat lain. “Cheese” (istilah dari game — memaksimalkan celah aturan untuk menghindari tujuan sebenarnya).

Para desainer game tahu. “Bunuh 10 tikus” adalah quest yang terkenal. Ada celah antara apa yang diverifikasi gerbang (10 tikus mati) dan apa yang sebenarnya diinginkan desainer (pemain mengalami konten), dan pemain menerobos celah itu. Inilah yang disebut cheese. Persis sama dengan apa yang disebut riset keamanan AI “specification gaming” — agen balap perahu berputar-putar mengambil item skor alih-alih melintasi garis finis, agen Tetris menjeda permainan selamanya agar tidak kalah.5

Gerbang sewa saya pun bisa di-cheese. Lima foto memverifikasi “foto ada” bukan “pengosongan berjalan dengan baik.” Bagaimana jika staf hanya memotret dinding bersih? Gerbang tetap lolos. Begitu pengukuran menjadi tujuan, pengukuran itu rusak — itulah Hukum Goodhart.6

Inilah intinya. Harness hanya bisa menjawab sampai “apakah lolos?” Apakah tes hijau, apakah tipe cocok, apakah skema tidak rusak — sampai di situ saja. Tapi “apakah kelulusan itu menangkap tujuannya?” tidak pernah bisa dijawab harness. Karena apa yang merupakan cheese hanya bisa didefinisikan dengan mengetahui tujuan domain. Mengapa foto hanya dinding bersih itu curang, mengapa semua aturan lolos tapi tujuan hanya tertutup 90% — hanya orang yang tahu untuk apa pekerjaan ini yang bisa mengetahuinya.

Orang itu adalah penunggang. Pemegang reins.

Merancang gerbang yang tidak bisa di-cheese — mencegah di awal titik di mana proksi gagal mengikuti tujuan — pada dasarnya berbeda untuk setiap tugas, mengandung pengetahuan domain, dan ditulis oleh operator. Harness yang task-agnostic tidak bisa memberikan ini. Bukan tidak bisa, tapi karena tidak tahu domain, tidak bisa menanganinya sejak awal.

Di sinilah Reins Engineering berada di wilayah unik yang tidak ada dalam wacana harness engineering dan agentic engineering. Mereka membicarakan cara membuat perlengkapan yang lebih baik. Reins membicarakan perjalanan ini — bagaimana mengantarkannya lewat pintu yang benar tanpa hancur.

Jadi Kembali ke Kasus Kebocoran

Sekarang mari kembali ke ironi di awal. Kini terlihat jelas mengapa kasus itu bukan bahan cemoohan melainkan bukti.

Kudanya genius. Opus adalah kekuatan probabilistik itu sendiri. Pelananya pun berfungsi — Claude Code adalah perlengkapan terbaik di dunia, dan angka-angka HAL membuktikannya. Tapi codebase yang dibangun dengan perlengkapan itu melayang ke mode kegagalan yang sudah diprediksi. Satu fungsi 3.167 baris. Persis wujud nyata dari dinding 200 endpoint dalam kode. Kebocoran itu sendiri pun adalah satu baris .npmignore yang terlewat — artinya tidak ada gerbang pada artefak deployment.

Perusahaan yang membuat perlengkapan terbaik di dunia pun tidak memasang perlengkapan itu di kandang kudanya sendiri.

Ini bukan antitesis melainkan bukti definitif tesis. Reins bukan atribut yang dimiliki model atau agen, melainkan disiplin yang diterapkan. Seberapa cerdas agennya, dan apakah kode yang dibangun agen itu berada di bawah reins — adalah dua hal yang sepenuhnya terpisah. Model yang lebih besar bukan jawabannya. Perlengkapan yang lebih baik pun bukan jawabannya. Memegang tali kekang, mendefinisikan sendiri selesainya perjalanan ini, merancang gerbang yang mencegah cheese — itulah disiplin yang menjadi jawabannya.

Maka

Harness membuat kuda berlari. Reins menentukan lewat pintu mana kuda itu pergi. Harness dipasang sekali, reins dipegang setiap saat. Harness dikeluarkan oleh pengrajin, reins digenggam oleh penunggang.

Keduanya tidak bertentangan. Mereka adalah bagian berbeda dari satu perlengkapan yang sama. Tapi memang bagian yang berbeda. Tanpa harness, reins tidak bisa ada. Tanpa reins, harness hanya berkeliaran. Dan yang tahu apakah pekerjaan ini benar-benar selesai — selalu tangan yang memegang tali kekang.

Lain kali seseorang bertanya “itu harness saja bukan?”, jawablah:

“Harness adalah sesuatu yang dikeluarkan vendor, reins adalah sesuatu yang saya rancang untuk quest ini. Tidak ada reins tanpa harness, tapi harness tanpa reins hanya berkeliaran. Bahkan alat yang katanya memberi tali kekang kepada kita pun tidak punya tali kekang di kodenya sendiri — karena reins bukan sesuatu yang dimiliki, melainkan sesuatu yang dipasang.”

Artikel Terkait

Bacaan Lanjutan

Tulisan-tulisan eksternal yang menggali lebih dalam — atau dari sudut berbeda — batas yang dibahas artikel ini: harness dan reins, cara berhenti, spesifikasi yang di-game.


  1. Fakta kejadian (2026-03-31, v2.1.88, source map Bun/.npmignore terlewat, ~512K baris·~1.900 file, posisi “human error / bukan pelanggaran,” saran pin v2.1.87) dikonfirmasi silang dari The Register (“Anthropic accidentally exposes Claude Code source code”, 2026-03-31), InfoQ, VentureBeat. ↩︎

  2. Fungsi tunggal 3.167 baris di print.ts dikonfirmasi dari claudefa.st, “Claude Code Source Leak: Everything Found.” ↩︎

  3. Kapoor, Narayanan et al., “Holistic Agent Leaderboard: The Missing Infrastructure for AI Agent Evaluation” (Princeton), arXiv:2510.11977 — 9 model × 9 benchmark, 21.730 eksekusi. Memisahkan pengaruh model, scaffold, dan benchmark secara kuantitatif. Leaderboard langsung: hal.cs.princeton.edu. ↩︎

  4. Addy Osmani, “Agent Harness Engineering” — “Model biasa + harness luar biasa > model luar biasa + harness buruk.” Pengamatan bahwa Opus yang sama mencetak skor lebih tinggi dalam harness kustom daripada di Claude Code. ↩︎

  5. Krakovna et al., Google DeepMind, “Specification gaming: the flip side of AI ingenuity”; kumpulan kasus: V. Krakovna, “Specification gaming examples in AI” (loop skor CoastRunners, Tetris dijeda selamanya, dll.). “Perilaku yang memenuhi spesifikasi literal dari tujuan tanpa mencapai hasil yang diinginkan.” ↩︎

  6. Marilyn Strathern (1997), “‘Improving ratings’: audit in the British University system,” European Review 5(3):305–321 — sumber “begitu pengukuran menjadi tujuan, ia berhenti menjadi pengukuran yang baik” (penyataan ulang proposisi Goodhart 1975 via Hoskin). ↩︎