GitHub Tulis Ulang Runtime Copilot Jadi 832.000 Baris Rust

Insinyur GitHub, Stephen Toub, mempublikasikan tulisan retrospektif pada 16 September yang mengulas penulisan ulang skala besar yang dipimpin agen Copilot: runtime di balik agen Copilot dibangun ulang sepenuhnya dari TypeScript/Node.js menjadi Rust. Sekitar 430.000 baris TypeScript produksi berakhir menjadi 832.378 baris Rust produksi, ditambah 468.000 baris unit test Rust dan 174.000 baris end-to-end test.

Proyek berjalan dari 12 Mei hingga 21 Agustus — sekitar 14,5 minggu. Selama periode itu, 128 pull request digabungkan secara bertahap ke branch utama, dengan rilis yang terus berjalan: total 135 versi (100 pre-release dan 35 versi stabil), rata-rata sekitar 1,3 rilis per hari.

Sebagian besar kode ditulis model, lalu apa peran manusia

Penilaian Toub soal praktik ini cukup blak-blakan:

"A project that would have taken a whole team of developers a year or two before agents was now completed primarily by a single developer, in only a few months."

Proyek yang sebelum ada agen AI membutuhkan satu tim developer penuh selama satu-dua tahun, kini selesai terutama oleh satu developer saja, hanya dalam beberapa bulan.

Model utama yang dipakai adalah Claude Opus 4.8, GPT-5.6 Sol, dan keluarga Claude Haiku; subagent yang menangani optimasi throughput lebih condong memakai Opus 4.8 dan GPT-5.6 Sol. Ada sinyal menarik di sini: untuk penulisan ulang tingkat produksi pada komponen inti miliknya sendiri, GitHub (milik Microsoft) justru mengandalkan model dari Anthropic, pesaingnya, dan bukan model OpenAI semata.

Pembagian kerja manusia digambarkan dengan jelas. Berdasarkan catatan insinyur utama proyek ini sendiri, 31% waktunya dihabiskan untuk "review, testing, dan CI", 17,4% untuk "menantang keputusan teknis", dan 15% untuk "mendorong pekerjaan sampai tuntas". Arsitektur, trade-off desain, dan keputusan akhir untuk menggabungkan kode tetap berada di tangan manusia sepanjang proyek. Model menghasilkan volume kode, manusia memegang arah dan kriteria penerimaan.

Validasi mengandalkan test lama, sekitar lima puluh masalah muncul

Penulisan ulang ini tidak membuat standar penerimaan baru — proses ini menjalankan test end-to-end yang sudah ada secara terus-menerus terhadap kode Rust yang baru, dirilis bertahap agar regresi cepat terdeteksi dalam cakupan kecil. Beberapa angka teknis lain juga layak dicatat: cache hit rate prompt sebesar 96,22%, dan kompresi konteks yang terpicu 5.116 kali di seluruh sesi.

Kegagalan juga dicatat apa adanya. Sekitar 50-an masalah yang diketahui muncul selama proyek berjalan, terbagi dalam lima kategori: migrasi yang belum tuntas, masalah state dan lifecycle, ketidaksesuaian kontrak perilaku, masalah batas host, serta kasus di mana ekspektasi pada test itu sendiri yang keliru. Sebagian besar diperbaiki sebelum mencapai versi stabil. Kategori terakhir ini patut jadi catatan bagi siapa pun yang melakukan migrasi serupa: saat test lama dipakai untuk menilai implementasi baru, terkadang yang salah justru test-nya, bukan kode barunya.

Apa artinya bagi tim engineering lain

Kasus seperti ini — memakai AI untuk merombak komponen inti milik perusahaan sendiri — lebih banyak mengungkap batas nyata agen coding saat ini dibandingkan papan peringkat benchmark mana pun. Ada tiga pelajaran yang bisa langsung diterapkan. Pertama, jangan berharap penulisan ulang bisa selesai sekali jalan — 128 pull request yang digabung bertahap dan beberapa rilis per hari adalah cara continuous integration menyebar risiko. Kedua, patok kriteria penerimaan sejak awal — seluruh proses ini mengandalkan test E2E yang sudah ada sebagai tolok ukur, dan tanpa itu, tidak ada cara untuk menilai apakah hasil model sudah benar. Ketiga, pekerjaan manusia bergeser dari menulis kode menjadi review, pengambilan keputusan, dan menangkap celah, dan itulah yang membuat satu orang bisa mengawasi penulisan ulang berskala jauh lebih besar dari sebelumnya.

Satu catatan penting: manfaat arsitektur (embedding dalam satu proses, overhead memori yang lebih rendah, startup yang lebih cepat) dalam tulisan aslinya hanya dijelaskan secara kualitatif, tanpa angka perbandingan sebelum-sesudah untuk memori, latensi, atau throughput. Seberapa besar peningkatan performa nyata dari penulisan ulang ini tidak bisa diverifikasi dari retrospektif ini. Jalur dari TypeScript ke Rust juga bukan resep standar bagi kebanyakan tim — ini berhasil karena ada test suite yang cukup solid untuk diandalkan dan tim yang bersedia merilis setiap hari.

Sumber: CocoLoop, GitHub Blog (Stephen Toub); angka seperti 832.000 baris, 128 pull request, 14,5 minggu, cache hit rate 96,22%, dan sekitar 50 masalah yang diketahui telah diverifikasi terhadap retrospektif resmi.