Mengapa banyak sistem agentic gagal di produksi dan bagaimana merancang agen yang andal dengan state machine, kontrak alat jelas, strategi retry, dan observabilitas mendalam.

Sistem agentic adalah aplikasi di mana LLM tidak sekadar menjawab prompt, tetapi memutuskan apa yang harus dilakukan selanjutnya: alat mana yang dipanggil, data apa yang diambil, langkah mana yang dijalankan, dan kapan ia “selesai.” Mereka menggabungkan model, sekumpulan alat (API, basis data, layanan), sebuah loop perencanaan/eksekusi, dan infrastruktur yang mengikat semuanya.
Dalam demo, ini terlihat magis: agen menyusun rencana, memanggil beberapa alat, dan mengembalikan hasil yang sempurna. Jalur bahagia singkat, latensi rendah, dan tak ada yang gagal bersamaan.
Dalam beban nyata, agen yang sama tertekan dengan cara yang tidak pernah dilihat demo:
Hasilnya: perilaku fluktuatif yang sulit direproduksi, korupsi data senyap, dan alur pengguna yang kadang menggantung atau berputar selamanya.
Agen yang fluktuatif bukan hanya mengurangi “kesenangan.” Mereka:
Artikel ini tentang pola rekayasa, bukan “prompt yang lebih baik.” Kita akan membahas state machine, kontrak alat eksplisit, strategi retry dan penanganan kegagalan, kontrol memori dan konkurensi, serta pola observabilitas yang membuat sistem agentic dapat diprediksi di bawah beban—bukan sekadar mengesankan di atas panggung.
Sebagian besar sistem agen tampak baik dalam demo jalur bahagia tunggal. Mereka gagal ketika trafik, alat, dan kasus tepi datang bersama.
Orkestrasi naif mengasumsikan model akan “melakukan yang benar” dalam satu atau dua panggilan. Dalam penggunaan nyata, Anda melihat pola berulang:
Tanpa state eksplisit dan kondisi akhir, perilaku ini tak terelakkan.
Sampling LLM, variabilitas latensi, dan timing alat menciptakan non-determinisme tersembunyi. Input yang sama bisa menempuh cabang berbeda, memanggil alat berbeda, atau menafsirkan hasil alat secara berbeda.
Dalam skala, isu alat mendominasi:
Setiap hal ini berubah menjadi loop palsu, retry, atau jawaban akhir yang salah.
Apa yang jarang rusak pada 10 RPS akan rusak terus-menerus pada 1.000 RPS. Konkurensi memperlihatkan:
Tim produk sering mengharapkan alur kerja deterministik, SLA jelas, dan auditabilitas. Agen, jika dibiarkan tanpa batasan, menawarkan perilaku probabilistik dan kerja upaya-terbaik dengan jaminan lemah.
Ketika arsitektur mengabaikan ketidaksesuaian ini—menganggap agen seperti layanan tradisional alih-alih perencana stokastik—sistem berperilaku tidak terduga tepat ketika reliabilitas paling bermakna.
Agen siap produksi kurang soal “prompt pintar” dan lebih soal desain sistem yang disiplin. Cara berguna memikirkan mereka adalah sebagai mesin kecil yang dapat diprediksi yang kadang memanggil LLM, bukan blob LLM misterius yang kadang menyentuh sistem Anda.
Empat properti paling penting:
Properti ini tidak didapat dari prompt semata. Mereka didapat dari struktur.
Pola default banyak tim adalah: “while not done, call the model, let it think, maybe call a tool, repeat”. Ini mudah prototipe dan sulit dioperasikan.
Pola yang lebih aman adalah merepresentasikan agen sebagai workflow eksplisit:
COLLECTING_INPUT, PLANNING, EXECUTING_STEP, WAITING_ON_HUMAN, DONE).Ini mengubah agen menjadi state machine di mana setiap langkah dapat diperiksa, diuji, dan direplay. Loop bebas terasa fleksibel, tetapi workflow eksplisitlah yang membuat insiden dapat di-debug dan perilaku dapat diaudit.
Agen monolitik yang “melakukan segalanya” menggoda, tetapi mereka menciptakan keterkaitan erat antara tanggung jawab yang tidak berhubungan: perencanaan, pengambilan, logika bisnis, orkestrasi UI, dan lain-lain.
Sebaliknya, susun agen kecil dan berdomain sempit atau skill:
Setiap skill bisa punya state machine, alat, dan aturan keamanan sendiri. Logika komposisi menjadi workflow tingkat tinggi, bukan prompt yang terus membesar di dalam satu agen.
Modularitas ini menjaga setiap agen cukup sederhana untuk dipahami dan memungkinkan Anda mengembangkan satu kapabilitas tanpa mendestabilisasi sisanya.
Model mental berguna adalah membagi agen ke tiga lapis:
Kebijakan keputusan (prompt LLM + model)
Mengenkapsulasi bagaimana agen memilih aksi berikutnya, diinterpretasikan di bawah batasan ketat. Anda harus bisa mengganti model, menyesuaikan temperatur, atau menyempurnakan prompt tanpa meraba-rubah wiring sistem.
State machine / engine workflow
Memiliki di mana Anda berada dalam proses, transisi yang mungkin, dan bagaimana mem-persist kemajuan. Kebijakan menyarankan langkah; state machine memvalidasi dan menerapkannya.
Lapisan tooling
Mengimplementasikan apa yang benar-benar dapat terjadi di dunia: API, basis data, antrean, layanan eksternal. Alat membuka kontrak yang sempit dan bertipe baik serta menegakkan otorisasi, rate limit, dan validasi input.
Dengan pemisahan ini, Anda menghindari jebakan menyembunyikan logika bisnis dalam prompt atau deskripsi alat. LLM menjadi komponen keputusan di dalam cangkang yang deterministik dan jelas, bukan cangkang itu sendiri.
Sistem agentic yang paling andal bukanlah demo paling mengesankan—melainkan yang perilakunya bisa Anda jelaskan di papan tulis.
Konkret:
Bias terhadap agen yang kecil, dapat disusun, dan terstruktur inilah yang memungkinkan sistem tumbuh cakupannya tanpa runtuh oleh kompleksitas sendiri.
Sebagian besar implementasi agen dimulai sebagai loop "think, act, observe" yang dibungkus panggilan LLM. Itu baik untuk demo, tetapi cepat menjadi opak dan rapuh. Pendekatan yang lebih baik adalah memperlakukan agen sebagai state machine eksplisit: himpunan terbatas state, dengan transisi yang didefinisikan dipicu oleh event.
Alih-alih membiarkan model secara implisit memutuskan langkah berikutnya, definisikan diagram state kecil:
Transisi antara state ini dipicu oleh event bertipe seperti UserRequestReceived, ToolCallSucceeded, ToolValidationFailed, TimeoutExceeded, atau HumanOverride. Setiap event, ditambah state saat ini, menentukan state dan aksi berikutnya.
Ini membuat retry dan timeout mudah: Anda menempelkan kebijakan ke state individual (mis. CALL_TOOL boleh retry 3 kali dengan exponential backoff, PLAN mungkin tidak retry sama sekali) alih-alih menyebarkan logika retry di seluruh basis kode.
Persist state saat ini dan konteks minimal di penyimpanan eksternal (database, antrean, atau engine workflow). Agen lalu menjadi fungsi murni:
next_state, actions = transition(current_state, event, context)
Ini memungkinkan:
Dengan state machine, setiap langkah perilaku agen eksplisit: state mana yang ditempati, event apa yang terjadi, transisi mana yang menyala, dan efek samping apa yang dihasilkan. Kejelasan itu mempercepat debugging, menyederhanakan investigasi insiden, dan menciptakan jejak audit alami untuk tinjauan kepatuhan. Anda bisa membuktikan, dari log dan riwayat state, bahwa aksi berisiko hanya diambil dari state tertentu dan di bawah kondisi yang terdefinisi.
Agen berperilaku jauh lebih dapat diprediksi ketika alat terlihat kurang seperti “API yang tersembunyi dalam prosa” dan lebih seperti antarmuka yang dirancang dengan eksplisit dan jaminan.
Setiap alat harus memiliki kontrak yang mencakup:
InvalidInput, NotFound, RateLimited, TransientFailure) dengan semantik jelas.Ekspos kontrak ini ke model sebagai dokumentasi terstruktur, bukan dinding teks. Perencana agen harus tahu error mana yang boleh di-retry, mana yang butuh intervensi pengguna, dan mana yang harus menghentikan workflow.
Perlakukan I/O alat seperti API produksi lainnya:
Ini membiarkan Anda menyederhanakan prompt: alih‑alih instruksi panjang, andalkan panduan berbasis skema. Batasan yang jelas mengurangi argumen yang dihalusinasi dan urutan alat yang tidak masuk akal.
Alat berevolusi; agen sebaiknya tidak rusak setiap kali begitu.
v1, v1.1, v2) dan pin agen ke versi.Logika perencanaan kemudian aman mencampur agen dan alat pada level kematangan berbeda.
Rancang kontrak dengan kegagalan parsial dalam pikiran:
Agen dapat beradaptasi: melanjutkan workflow dengan fitur berkurang, meminta konfirmasi pengguna, atau beralih ke alat fallback.
Kontrak alat adalah tempat alami untuk mengenkode batas keamanan:
confirm: true).Gabungkan ini dengan pemeriksaan sisi server; jangan mengandalkan model saja untuk “berperilaku”.
Ketika alat memiliki kontrak jelas, tervalidasi, dan versi, prompt bisa lebih singkat, logika orkestrasi menjadi lebih sederhana, dan debugging jauh lebih mudah. Anda memindahkan kompleksitas dari instruksi berbahasa alami yang rapuh ke skema dan kebijakan deterministik, mengurangi pemanggilan alat yang dihalusinasi dan efek samping tak terduga.
Sistem agentic andal mengasumsikan segala sesuatu pada akhirnya akan gagal: model, alat, jaringan, bahkan lapisan koordinasi Anda sendiri. Tujuannya bukan menghindari kegagalan, tetapi membuatnya murah dan aman.
Idempotensi berarti: mengulangi permintaan yang sama memiliki efek eksternal yang sama seperti melakukannya sekali. Ini krusial untuk agen LLM, yang sering mengeluarkan ulang panggilan alat setelah kegagalan parsial atau respons ambigu.
Buat alat idempoten dengan desain:
request_id stabil. Alat menyimpan ini dan mengembalikan hasil yang sama jika melihat ID lagi.Gunakan retry terstruktur untuk kegagalan transient (timeout, rate limit, 5xx): exponential backoff, jitter untuk menghindari kawanan herds, dan maks percobaan yang tegas. Log setiap upaya dengan correlation ID sehingga Anda dapat menelusuri perilaku agen.
Untuk kegagalan permanen (4xx, error validasi, pelanggaran aturan bisnis), jangan retry. Surface error terstruktur ke kebijakan agen sehingga agen dapat merencanakan ulang, menanyakan pengguna, atau memilih alat lain.
Implementasikan circuit breaker pada lapisan agen dan alat: setelah kegagalan berulang, blok sementara pemanggilan ke alat itu dan gagal cepat. Padukan ini dengan fallback yang terdefinisi: mode terdegradasi, data cache, atau alat alternatif.
Hindari retry buta dari loop agen. Tanpa alat idempoten dan kelas kegagalan yang jelas, Anda hanya menggandakan efek samping, latensi, dan biaya.
Agen andal dimulai dengan pemikiran jelas tentang apa itu state dan di mana ia berada.
Perlakukan agen seperti layanan yang menangani sebuah permintaan:
Mencampur keduanya menyebabkan kebingungan dan bug. Mis. memasukkan hasil alat sementara ke “memori” membuat agen menggunakan konteks usang di percakapan masa depan.
Ada tiga opsi utama:
Aturan bagus: LLM adalah fungsi stateless atas objek state eksplisit. Persist objek itu di luar model dan regenerasi prompt darinya.
Pola kegagalan umum adalah menggunakan log percakapan, trace, atau prompt mentah sebagai memori de facto.
Masalah:
Sebagai gantinya, definisikan skema memori terstruktur: user_profile, project, task_history, dll. Turunkan log dari state, bukan sebaliknya.
Saat banyak alat atau agen memperbarui entitas yang sama (mis. record CRM atau status tugas), Anda perlu kontrol konsistensi dasar:
Untuk operasi bernilai tinggi, catat log keputusan terpisah dari log percakapan: apa yang diubah, mengapa, dan berdasarkan input mana.
Agar tahan crash, deploy, dan rate limiting, workflow harus dapat dilanjutkan:
Ini juga memungkinkan debugging time travel: Anda dapat memeriksa dan menjalankan kembali state persis yang menyebabkan keputusan buruk.
Memori adalah liabilitas sebesar aset. Untuk agen produksi:
Perlakukan memori sebagai surface produk: dirancang, diberi versi, dan diatur—bukan hanya dump teks yang terus bertambah yang dilampirkan pada agen.
Agen terlihat sekuensial di papan tulis tetapi berperilaku seperti sistem terdistribusi di bawah beban nyata. Begitu Anda punya banyak pengguna bersamaan, alat, dan job background, Anda akan bergelut dengan kondisi race, kerja duplikat, dan masalah urutan.
Mode kegagalan umum:
Anda mitigasi ini dengan kontrak alat idempoten, state workflow eksplisit, dan locking optimistik atau pesimistis di layer data.
Alur request–response sinkron sederhana tetapi rapuh: setiap dependensi harus hidup, dalam batas rate, dan cepat. Begitu agen mem‑fan‑out ke banyak alat atau subtugas paralel, pindahkan langkah panjang atau ber‑efek samping ke belakang antrean.
Orkestrasi berbasis antrean memungkinkan Anda:
Agen biasanya menyentuh tiga kelas limit:
Anda perlu lapisan rate-limit eksplisit dengan throttle per-pengguna, per-tenant, dan global. Gunakan token bucket atau leaky bucket untuk menegakkan kebijakan, dan expose tipe error jelas (mis. RATE_LIMIT_SOFT, RATE_LIMIT_HARD) agar agen bisa mundur dengan anggun.
Backpressure adalah cara sistem melindungi diri di bawah stres. Strategi termasuk:
Pantau sinyal saturasi: kedalaman antrean, utilisasi worker, laju error model/alat, dan persentil latensi. Antrean naik bersamaan dengan latensi meningkat atau error 429/503 adalah peringatan dini bahwa agen melampaui lingkungan mereka.
Anda tidak bisa membuat agen andal jika Anda tidak bisa menjawab dua pertanyaan dengan cepat: apa yang dilakukannya? dan mengapa ia melakukan itu? Observability untuk sistem agentic adalah membuat jawaban tersebut murah dan presisi.
Rancang observability sehingga satu tugas memiliki trace yang menautkan:
Dalam trace itu, lampirkan log terstruktur untuk keputusan kunci (pilihan routing, revisi rencana, pemicu guardrail) dan metrik untuk volume dan kesehatan.
Trace yang berguna biasanya mencakup:
Log prompt, input alat, dan output dalam bentuk terstruktur, tetapi jalankan dulu melalui lapisan redaksi:
Simpan konten mentah di belakang feature flag di lingkungan non-produksi; produksi harus default ke tampilan ter‑redaksi.
Minimal, pantau:
Saat insiden terjadi, trace dan metrik yang baik memungkinkan Anda beralih dari “agen terasa rewel” ke pernyataan presisi seperti: “P95 tugas gagal di ToolSelection setelah 2 retry karena skema baru di billing_service,” memangkas diagnosis dari jam menjadi menit dan memberikan tuas konkret untuk menyetel perilaku.
Menguji agen berarti menguji alat yang mereka panggil dan alur yang menghubungkan semuanya. Perlakukan ini seperti pengujian sistem terdistribusi, bukan sekadar utak‑atik prompt.
Mulai dengan unit test di boundary alat:
Tes ini tidak pernah bergantung pada LLM. Anda memanggil alat langsung dengan input sintetis dan menegaskan output atau kontrak error tepatnya.
Integration test menjalankan workflow agen end‑to‑end: LLM + alat + orkestrasi.
Modelkan ini sebagai tes berbasis skenario:
Tes ini menegaskan transisi state dan panggilan alat, bukan setiap token keluaran LLM. Periksa: alat mana yang dipanggil, dengan argumen apa, dalam urutan apa, dan state/hasil akhir apa yang dicapai agen.
Agar tes repeatable, buat fixture untuk respons LLM dan output alat.
Polanya tipikal:
with mocked_llm(fixtures_dir="fixtures/llm"), mocked_tools():
result = run_agent_scenario(input_case)
assert result.state == "COMPLETED"
Setiap perubahan prompt atau skema harus memicu jalur regresi yang tidak bisa dinegosiasikan:
Evolusi skema (menambah field, mengetatkan tipe) mendapat kasus regresi sendiri untuk menangkap agen atau alat yang masih menganggap kontrak lama.
Jangan pernah mengirim model baru, kebijakan, atau strategi routing langsung ke trafik produksi.
Sebaliknya:
Hanya setelah melewati gate offline varian baru layak masuk produksi, idealnya di balik feature flag dan rollout bertahap.
Log agen sering berisi data sensitif pengguna. Pengujian harus menghormatinya.
Kodifikasikan aturan ini sebagai bagian dari pipeline CI sehingga tidak ada artefak tes yang dihasilkan atau disimpan tanpa pemeriksaan anonimisasi.
Mengoperasikan agen di produksi lebih mirip menjalankan sistem terdistribusi daripada mengirim model statis. Anda butuh kontrol untuk rollout, target reliabilitas yang jelas, dan manajemen perubahan yang disiplin.
Perkenalkan agen atau perilaku baru secara bertahap:
Dukung semua ini dengan feature flag dan kebijakan yang dikonfigurasi: aturan routing, alat yang diaktifkan, temperatur, setelan keamanan. Perubahan harus dapat dideploy lewat konfigurasi, bukan kode, dan segera dapat dibalik.
Tetapkan SLO yang mencerminkan kesehatan sistem dan nilai pengguna:
Kaitkan ini ke alert dan jalankan insiden seperti pada layanan produksi lainnya: kepemilikan jelas, runbook triase, dan langkah mitigasi standar (rollback flag, drain trafik, mode aman).
Gunakan log, trace, dan transkrip percakapan untuk menyempurnakan prompt, alat, dan kebijakan. Perlakukan setiap perubahan sebagai artefak bernomor versi dengan review, persetujuan, dan kemampuan rollback.
Hindari perubahan prompt atau alat diam‑diam. Tanpa kontrol perubahan, Anda tidak dapat mengaitkan regresi ke edit spesifik, dan respons insiden berubah menjadi menebak-nebak alih-alih rekayasa terstruktur.
Sistem agentic siap produksi mendapat manfaat dari pemisahan tanggung jawab yang jelas. Tujuannya adalah menjaga agen pintar pada keputusan, tetapi bodi infrastruktur sederhana dan dapat diprediksi.
1. Gateway / API edge
Titik masuk tunggal untuk klien (app, layanan, UI). Menangani:
2. Orchestrator
Orchestrator adalah “batang otak”, bukan otak. Ia mengoordinasikan:
LLM hidup di balik orchestrator, digunakan oleh planner dan oleh alat spesifik yang membutuhkan pemahaman bahasa.
3. Lapisan tooling dan penyimpanan
Logika bisnis tetap di microservice, antrean, dan sistem data yang ada. Alat adalah wrapper tipis di sekitar:
Orchestrator memanggil alat lewat kontrak ketat, sementara sistem penyimpanan tetap sumber kebenaran.
Terapkan auth dan kuota di gateway; terapkan keamanan, akses data, dan kebijakan di orchestrator. Semua panggilan (LLM dan alat) memancarkan telemetri terstruktur ke pipeline yang mengisi:
Arsitektur sederhana (gateway → orchestrator tunggal → alat) lebih mudah dioperasikan; menambah planner terpisah, policy engine, dan model gateway meningkatkan fleksibilitas dengan harga koordinasi, latensi, dan kompleksitas operasional lebih tinggi.
Sekarang Anda punya bahan inti untuk agen yang berperilaku dapat diprediksi di bawah beban nyata: state machine eksplisit, kontrak alat jelas, retry disiplin, dan observabilitas mendalam. Langkah terakhir adalah mengubah ide‑ide itu menjadi praktik yang dapat diulang untuk tim Anda.
Pikirkan setiap agen sebagai workflow stateful:
Saat elemen-elemen ini selaras, Anda mendapat sistem yang menurun secara anggun alih‑alih runtuh di bawah kasus tepi.
Sebelum mengirim prototipe agen ke pengguna nyata, pastikan:
Jika ada item yang hilang, Anda masih dalam mode prototipe.
Setup berkelanjutan biasanya memisahkan:
Ini memungkinkan tim produk bergerak cepat sementara tim platform menegakkan reliabilitas, keamanan, dan kontrol biaya.
Setelah fondasi stabil, Anda bisa mengeksplorasi:
Kemajuan di sini harus incremental: perkenalkan komponen pembelajaran baru di balik feature flag, dengan evaluasi offline dan guardrail yang kuat.
Tema sepanjang tulisan ini sama: rancang untuk kegagalan, utamakan kejelasan daripada kepintaran, dan iterasi di tempat Anda dapat mengamati dan membalik perubahan dengan aman. Dengan kendala‑kendala itu, sistem agentic berhenti menjadi prototipe menakutkan dan menjadi infrastruktur yang dapat diandalkan organisasi Anda.
Sebuah sistem agentic adalah aplikasi di mana LLM tidak hanya menjawab satu prompt tetapi memutuskan apa yang harus dilakukan selanjutnya: alat mana yang dipanggil, data apa yang diambil, langkah alur kerja mana yang dijalankan, dan kapan harus berhenti.
Berbeda dengan penyelesaian chat sederhana, sistem agentic menggabungkan:
Di produksi, LLM menjadi salah satu komponen keputusan di dalam suatu cangkang deterministik yang lebih besar—bukan seluruh sistem.
Demo biasanya berjalan pada jalur bahagia tunggal: satu pengguna, perilaku alat ideal, tanpa timeout, tanpa drift skema, dan percakapan singkat. Di beban produksi, agen menghadapi:
Tanpa workflow eksplisit, kontrak, dan penanganan kegagalan, faktor-faktor ini menciptakan loop, stall, pekerjaan parsial, dan error senyap yang tidak muncul di lingkungan demo.
Buat LLM beroperasi di dalam struktur yang jelas alih-alih loop bebas:
Modelkan agen sebagai workflow dengan nama-nama state dan event bertipe alih-alih while not done: call LLM.
State tipikal bisa meliputi:
Rancang alat seperti API produksi yang benar, bukan deskripsi prosa di dalam prompt. Setiap alat harus memiliki:
Asumsikan setiap panggilan eksternal akan kadang gagal dan rancang di sekitarnya.
Pola kunci:
Pisahkan state jangka pendek dari memori jangka panjang, dan biarkan LLM tetap stateless.
Pikirkan sistem agen sebagai sistem terdistribusi di bawah beban, meskipun tiap alur terlihat sekuensial.
Untuk tetap andal:
Anda harus bisa menjawab “apa yang dilakukan agen?” dan “mengapa ia melakukan itu?” untuk setiap tugas.
Persyaratan praktis:
Perlakukan agen seperti layanan yang berkembang, bukan prompt statis, dan kelola mereka dengan disiplin produksi.
Praktik yang direkomendasikan:
Ini memungkinkan Anda menjelaskan, menguji, dan men-debug perilaku langkah demi langkah alih-alih mengejar loop “pemikiran agen” yang tidak jelas.
PLAN – menginterpretasikan permintaan dan menghasilkan rencana langkah demi langkahCALL_TOOL – memanggil alat tertentu atau batch alatVERIFY – memeriksa output terhadap aturan sederhana atau cek model sekunderRECOVER – menangani error lewat retry, fallback, atau eskalasiDONE / FAILED – hasil terminalEvent (mis. ToolCallSucceeded, TimeoutExceeded) ditambah state saat ini menentukan state berikutnya. Ini membuat retry, timeout, dan penanganan error eksplisit alih-alih tersebar di prompt atau glue code.
InvalidInput, NotFound, RateLimited, TransientFailureValidasi input sebelum memanggil alat dan output setelahnya. Versi kontrak alat dan pin agen ke versi tertentu agar perubahan skema tidak merusak alur secara diam-diam.
request_id stabil atau business key dan mengembalikan hasil yang sama jika dipanggil ulang.Ini menjaga reliabilitas tinggi tanpa loop tak terkendali, efek samping ganda, atau biaya runaway.
Hindari menggunakan log mentah atau sejarah percakapan sebagai “memori”; turunkan catatan terstruktur yang ringkas dari mereka dengan kebijakan retensi dan privasi yang jelas.
Pantau depth queue, persentil latensi, dan laju 429/503 untuk mendeteksi overload sebelum menjadi outage.
Dengan ini, triase insiden berubah dari “agen terasa rewel” menjadi penentuan state, alat, dan perubahan spesifik yang menyebabkan regresi.
Ini memungkinkan peningkatan agen secara berkelanjutan sambil menjaga kegagalan terkandung, dapat didiagnosa, dan dapat dibalik.