doctor, dan tetap
dapat menginstal, memuat, memperbarui, serta menghapus plugin dari sumber yang
didukung.
Untuk peta test runner yang lebih luas, lihat Pengujian. Untuk
kunci penyedia live dan suite yang menyentuh jaringan, lihat Pengujian live.
Yang kita lindungi
Pengujian pembaruan dan plugin melindungi kontrak berikut:- Tarball paket lengkap, memiliki
dist/postinstall-inventory.jsonyang valid, dan tidak bergantung pada file repo yang belum dipaketkan. - Pengguna dapat berpindah dari paket terbitan lama ke paket kandidat tanpa kehilangan konfigurasi, agen, sesi, workspace, allowlist plugin, atau konfigurasi channel.
openclaw doctor --fix --non-interactivememiliki jalur pembersihan dan perbaikan legacy. Startup tidak boleh menambah migrasi kompatibilitas tersembunyi untuk status plugin yang usang.- Instalasi plugin berfungsi dari direktori lokal, repo git, paket npm, dan jalur registri ClawHub.
- Dependensi npm plugin diinstal dalam satu proyek npm terkelola per plugin, dipindai sebelum dipercaya, dan dihapus melalui npm saat uninstall agar dependensi yang di-hoist tidak tertinggal.
- Pembaruan plugin stabil ketika tidak ada yang berubah: catatan instalasi, sumber yang diselesaikan, tata letak dependensi terinstal, dan status aktif tetap utuh.
Pembuktian lokal selama pengembangan
Mulai dari cakupan sempit:release:check menjalankan pemeriksaan drift konfigurasi/dokumentasi/API,
menulis inventaris dist paket, menjalankan npm pack --dry-run, menolak file
terlarang yang ikut dipaketkan, menginstal tarball ke prefix sementara,
menjalankan postinstall, dan melakukan smoke test pada entrypoint channel
bawaan.
Lane Docker
Lane Docker adalah pembuktian tingkat produk. Lane ini menginstal atau memperbarui paket nyata di dalam container Linux dan memverifikasi perilaku melalui perintah CLI, startup Gateway, probe HTTP, status RPC, dan status filesystem. Gunakan lane terfokus saat iterasi:test:docker:pluginsmemvalidasi smoke test instalasi plugin, instalasi folder lokal, perilaku skip pembaruan folder lokal, folder lokal dengan dependensi yang sudah terinstal, instalasi paketfile:, instalasi git dengan eksekusi CLI, pembaruan moving-ref git, instalasi registri npm dengan dependensi transitif yang di-hoist, no-op pembaruan npm, penolakan metadata paket npm yang malformed, instalasi fixture ClawHub lokal dan no-op pembaruan, perilaku pembaruan marketplace, serta enable/inspect bundle Claude. AturOPENCLAW_PLUGINS_E2E_CLAWHUB=0untuk menjaga blok ClawHub hermetik/offline.test:docker:plugin-lifecycle-matrixmenginstal paket kandidat dalam container kosong, menjalankan plugin npm melalui install, inspect, disable, enable, upgrade eksplisit, downgrade eksplisit, dan uninstall setelah menghapus kode plugin. Lane ini mencatat metrik RSS dan CPU untuk setiap fase.test:docker:plugin-updatememvalidasi bahwa plugin terinstal yang tidak berubah tidak diinstal ulang atau kehilangan metadata instalasi selamaopenclaw plugins update.test:docker:upgrade-survivormenginstal tarball kandidat di atas fixture pengguna lama yang kotor, menjalankan pembaruan paket plus doctor non-interaktif, lalu memulai Gateway loopback dan memeriksa pelestarian status.test:docker:published-upgrade-survivorpertama menginstal baseline yang sudah diterbitkan, mengonfigurasinya melalui resepopenclaw config setyang sudah dipanggang, memperbaruinya ke tarball kandidat, menjalankan doctor, memeriksa pembersihan legacy, memulai Gateway, dan mem-probe/healthz,/readyz, serta status RPC.test:docker:update-restart-authmenginstal paket kandidat, memulai Gateway token-auth terkelola, menghapus env auth gateway pemanggil untukopenclaw update --yes --json, dan mewajibkan perintah pembaruan kandidat me-restart Gateway sebelum probe normal.test:docker:update-migrationadalah lane pembaruan-terbitan yang berat pada pembersihan. Lane ini dimulai dari status pengguna bergaya Discord/Telegram yang sudah dikonfigurasi, menjalankan doctor baseline agar dependensi plugin yang dikonfigurasi punya kesempatan untuk terwujud, menanam sisa dependensi plugin legacy untuk plugin paket yang dikonfigurasi, memperbarui ke tarball kandidat, dan mewajibkan doctor pasca-pembaruan menghapus root dependensi legacy.
base, feishu-channel, bootstrap-persona,
plugin-deps-cleanup, configured-plugin-installs,
stale-source-plugin-shadow, tilde-log-path, dan versioned-runtime-deps. Dalam run agregat,
OPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issues diekspansi ke semua
skenario berbentuk isu yang dilaporkan, termasuk migrasi instalasi plugin yang
dikonfigurasi.
Migrasi pembaruan penuh sengaja dipisahkan dari CI Rilis Penuh. Gunakan workflow
manual Update Migration ketika pertanyaan rilisnya adalah “bisakah setiap
rilis stabil yang diterbitkan sejak 2026.4.23 memperbarui ke kandidat ini dan
membersihkan sisa dependensi plugin?”:
Package Acceptance
Package Acceptance adalah gate paket native GitHub. Gate ini menyelesaikan satu paket kandidat menjadi tarballpackage-under-test, mencatat versi dan SHA-256,
lalu menjalankan lane E2E Docker reusable terhadap tarball persis tersebut. Ref
harness workflow terpisah dari ref sumber paket, sehingga logika pengujian
terkini dapat memvalidasi rilis tepercaya yang lebih lama.
Sumber kandidat:
source=npm: validasiopenclaw@beta,openclaw@latest, atau versi terbitan yang persis.source=ref: kemas branch, tag, atau commit tepercaya dengan harness terkini yang dipilih.source=url: validasi tarball HTTPS publik denganpackage_sha256wajib. Jalur ini menolak kredensial URL, port HTTPS non-default, hostname atau hasil DNS/IP privat/internal, ruang IP penggunaan khusus, dan redirect yang tidak aman.source=trusted-url: validasi tarball HTTPS denganpackage_sha256dantrusted_source_idwajib terhadap kebijakan milik maintainer di.github/package-trusted-sources.json. Gunakan ini untuk mirror enterprise/privat alih-alih melemahkansource=urldengan switch allow-private tingkat input. Auth Bearer, ketika dikonfigurasi oleh kebijakan, menggunakan secret tetapOPENCLAW_TRUSTED_PACKAGE_TOKEN.source=artifact: gunakan kembali tarball yang diunggah oleh run Actions lain.
source=artifact secara default, yang dibangun
dari SHA rilis yang diselesaikan. Untuk pembuktian pasca-terbit, teruskan
package_acceptance_package_spec=openclaw@YYYY.M.PATCH agar matriks upgrade yang
sama menargetkan paket npm yang sudah dikirim sebagai gantinya.
Pemeriksaan rilis memanggil Package Acceptance dengan set paket/pembaruan/restart/plugin:
last-stable-4 diselesaikan ke empat rilis stabil OpenClaw terbaru yang
diterbitkan di npm. Package acceptance rilis mem-pin 2026.4.23 sebagai batas
kompatibilitas pembaruan plugin pertama, 2026.5.2 sebagai batas churn
arsitektur plugin, dan 2026.4.15 sebagai baseline pembaruan-terbitan 2026.4.1x
yang lebih lama; resolver menghapus duplikat pin yang sudah ada dalam empat
terbaru. Untuk cakupan migrasi pembaruan-terbitan yang menyeluruh, gunakan
all-since-2026.4.23 dalam workflow Update Migration terpisah alih-alih CI
Rilis Penuh. release-history tetap tersedia untuk sampling manual yang lebih
luas ketika Anda juga menginginkan anchor legacy pra-tanggal.
Ketika beberapa baseline survivor pembaruan-terbitan dipilih, workflow Docker
reusable memecah setiap baseline menjadi job runner tertargetnya sendiri. Setiap
shard baseline tetap menjalankan set skenario yang dipilih, tetapi log dan
artefak tetap per-baseline dan waktu dinding dibatasi oleh shard paling lambat
alih-alih satu job serial besar.
Jalankan profil paket secara manual saat memvalidasi kandidat sebelum rilis:
suite_profile=product ketika pertanyaan rilis mencakup channel MCP,
pembersihan cron/subagent, pencarian web OpenAI, atau OpenWebUI. Gunakan
suite_profile=full hanya ketika Anda memerlukan cakupan jalur rilis Docker
penuh.
Default rilis
Untuk kandidat rilis, tumpukan pembuktian default adalah:pnpm check:changeddanpnpm test:changeduntuk regresi tingkat sumber.pnpm release:checkuntuk integritas artefak paket.- Profil Package Acceptance
packageatau lane paket kustom release-check untuk kontrak instalasi/pembaruan/restart/plugin. - Pemeriksaan rilis lintas-OS untuk perilaku installer, onboarding, dan platform yang spesifik OS.
- Suite live hanya ketika surface yang berubah menyentuh perilaku penyedia atau layanan hosted.
Kompatibilitas legacy
Kelonggaran kompatibilitas sempit dan dibatasi waktu:- Paket hingga
2026.4.25, termasuk2026.4.25-beta.*, dapat menoleransi celah metadata paket yang sudah dikirim di Package Acceptance. - Paket
2026.4.26yang diterbitkan dapat memperingatkan untuk file stamp metadata build lokal yang sudah dikirim. - Paket yang lebih baru harus memenuhi kontrak modern. Celah yang sama akan gagal alih-alih memperingatkan atau melewati.
upgrade-survivor,
published-upgrade-survivor, atau update-restart-auth ketika perintah
pembaruan memiliki tanggung jawab restart.
Menambahkan cakupan
Saat mengubah perilaku pembaruan atau plugin, tambahkan cakupan pada lapisan terendah yang dapat gagal karena alasan yang tepat:- Logika jalur atau metadata murni: pengujian unit di samping sumber.
- Inventaris paket atau perilaku file yang dipaketkan: pengujian
package-dist-inventoryatau pemeriksa tarball. - Perilaku instalasi/pembaruan CLI: asersi lane Docker atau fixture.
- Perilaku migrasi rilis yang dipublikasikan: skenario
published-upgrade-survivor. - Perilaku mulai ulang milik pembaruan:
update-restart-auth. - Perilaku sumber registri/paket: fixture
test:docker:pluginsatau server fixture ClawHub. - Perilaku tata letak dependensi atau pembersihan: asersikan eksekusi runtime dan batas sistem berkas. Dependensi npm mungkin di-hoist di dalam proyek npm terkelola milik Plugin, jadi pengujian harus membuktikan bahwa proyek tersebut dipindai/dibersihkan alih-alih mengasumsikan hanya pohon
node_moduleslokal paket Plugin.
Triage kegagalan
Mulailah dengan identitas artefak:- Ringkasan Package Acceptance
resolve_package: sumber, versi, SHA-256, dan nama artefak. - Artefak Docker:
.artifacts/docker-tests/**/summary.json,failures.json, log lane, dan perintah rerun. - Ringkasan upgrade survivor:
.artifacts/upgrade-survivor/summary.json, termasuk versi baseline, versi kandidat, skenario, timing fase, dan langkah resep.