# Perbaikan logout akun dan multi-instance Launch SDK, pengujian bersama kedua sisi

Tanggal: 2026-10-24. Perbaikan yang menjadi tanggung jawab Launch SDK dalam butir 1 dan 3 yang diotorisasi pengguna telah selesai, sesuai bagian persistensi akun AUTH-08 dan AUTH-10. Pembaruan yang diberikan Licentivo telah disinkronkan dan pengujian bersama lokal selesai. **Tugas ini tidak diluncurkan, SDK tidak dirilis, dan Git tidak dikomit atau di-push.**

## Hasil perbaikan

Tugas logout akun tertunda dan login saat ini yang dapat dipulihkan menggunakan kunci berbeda dalam penyimpanan aman. Jika penulisan penanda logout gagal, hanya login lama milik instance tersebut yang dibersihkan, tanpa menghapus sesi lain. Intent logout akun lokal tambahan dicatat menggunakan ringkasan cakupan dan kredensial sesi; periksa sebelum memulihkan akun, termasuk skenario restart setelah kegagalan penulisan/penghapusan penyimpanan aman atau timeout mutex. Catatan ini tidak menyimpan bearer, assertion identitas, atau lisensi, dan tidak menentukan izin fitur.

Operasi siklus hidup akun pada pengguna OS dan perangkat yang sama menggunakan koordinasi lintas instance dan proses. Logout terlambat instance lama, pembersihan HTTP 401, pengiriman ulang setelah gagal, dan logout lagi setelah berhasil tidak dapat menimpa atau menghapus login baru yang disimpan kemudian. Tugas sesi lama dapat mengirim ulang pencabutan akun secara independen tanpa membangun ulang runtime otorisasi sesi lain yang aktif.

Titik masuk siklus hidup Application, contoh native, dan petunjuk integrasi untuk Go, JavaScript, Python, C#, Java, Ruby, Rust, C/C++ telah disinkronkan. Tanda tangan metode publik Store aman tetap tidak berubah dan harus mendukung beberapa kunci opaque serta penyimpanan atomik dengan benar. Kredensial akun MemoryStore default tetap hanya disimpan dalam memori. Jika Store aman dan penanda logout lokal sama-sama tidak dapat disimpan secara persisten, SDK melaporkan kesalahan dengan jelas dan menghentikan instance ini tanpa mengklaim logout yang dapat bertahan setelah restart selesai.

## Pembaruan Licentivo

Pengujian runtime nyata putaran ini menggunakan SDK resmi 0.11.1, dengan pengenal snapshot tetap `local-20261024-5d74ba5ea131`. Sinkronisasi menggunakan skrip impor yang sudah ada di repositori; manifest berisi 115 file, **23 benar-benar berubah, 92 tidak berubah, tanpa file baru**. Perubahan terkait dengan 17 file sumber upstream; inti C dikemas berulang dalam paket native, Ruby, dan Rust. Impor yang diuji ini memverifikasi hash file target dan snapshot upstream saat pengujian selesai.

Kode sumber server Licentivo tidak diubah oleh tugas ini; implementasi otorisasi SDK menggunakan versi yang disediakan pihak tersebut. Pengujian lokal disesuaikan dengan ketentuan yang diperbarui: logout mempertahankan kredensial mesin bersama dan file lisensi, dengan catatan logout SDK memblokir sesi lama; tanda terima kedua pelepasan berulang dapat berupa stale. Penolakan eksekusi aktual, pemulihan pengikatan baru, dan jatah mandiri tetap diperiksa; persyaratan bisnis ini tidak dilonggarkan.


<!-- final-workspace-sdk-version-2026-10-24 -->

Pada akhir pekerjaan, workspace telah diperbarui secara terpisah ke Licentivo SDK **0.11.2** (`licentivo-sdk-v0.11.2-release-20261024`). Hash seluruh 115 file target saat ini cocok dengan manifest dan file sumber upstream. Dibandingkan snapshot yang diuji pada putaran ini, file upstream hanya berubah pada VERSION, konstanta Ruby VERSION, dan nomor versi CMake; implementasi otorisasi sama. Skrip impor saat ini juga menambahkan pencarian pustaka native di direktori ekstensi gem Ruby. Catatan pengujian runtime di atas merujuk pada snapshot tetap 0.11.1; laporan ini bukan catatan penerimaan paket rilis 0.11.2.

## Verifikasi

| Cakupan | Hasil |
| --- | --- |
| HTTP akun Launch Go, DPAPI, kegagalan penyimpanan logout, dan kunci lintas proses | 26 catatan lulus, termasuk subkasus; tanpa kegagalan atau pelewatan |
| Regresi akun Go dan SDK bertanda tangan setelah sinkronisasi SDK resmi | 21 lulus; dua pengujian HTTP yang memerlukan basis data terpisah dilewati dan telah diverifikasi pada baris sebelumnya serta pengujian bersama nyata |
| Regresi otorisasi HTTP Licentivo saat ini dan kontrol khusus | Dua pelaksanaan digabungkan per kasus, 62 catatan lulus akhir; termasuk pemeriksaan ulang setelah memperbaiki assertion tanda terima duplikat |
| SDK Go resmi saat ini | 67 catatan lulus, tanpa kegagalan |
| JavaScript / Python | 14 / 12 lulus, termasuk runtime bertanda tangan nyata |
| C# / Java | Siklus hidup dan runtime resmi lulus; 9 kelompok pengujian akun/keamanan Java lulus |
| Ruby / Rust | 17 pengujian wrapper Ruby dan SDK native nyata lulus; 16 pengujian Rust lulus |
| C / C++ | Kedua driver siklus hidup SDK bertanda tangan nyata lulus, mencakup DPAPI, gangguan jaringan, kegagalan penyimpanan, dan logout instance lama |

Pengujian bersama nyata kedua sisi menggunakan Launch nyata, Licentivo saat ini, MySQL, Go Launch SDK, SDK otorisasi resmi, dan DPAPI, menghasilkan **18 catatan tahap lulus (17 tahap verifikasi dan catatan penyelesaian)**. Mencakup sinkronisasi masa pembelian, fitur terlindungi nyata, pemulihan penutupan biasa, kegagalan penulisan penyimpanan logout/kegagalan penulisan dan penghapusan bersamaan dengan gangguan jaringan kedua sisi, penolakan pemulihan akun lama setelah restart, pengiriman ulang pencabutan setelah jaringan pulih, login baru, respons hilang, pelepasan jarak jauh, pengembalian dana perpanjangan, dan penolakan otorisasi setelah chargeback.

Verifikasi khusus pada layanan nyata juga memastikan: pengiriman nomor operasi berbeda untuk generasi pengikatan yang sama hanya mengonsumsi jatah mandiri satu kali; logout lama tidak menghapus kredensial dan lisensi pengikatan baru, dan pengikatan baru masih dapat dipulihkan saat jaringan terputus; JWT baru untuk sid lama yang sama tidak dapat memulihkan pengikatan yang telah logout, sedangkan login nyata baru dapat mengaktifkan; tiket logout lama tidak memengaruhi pengikatan baru; eksekusi offline tidak melampaui tenggat tanda tangan yang diketahui.

Tidak ditemukan masalah bisnis baru yang memblokir pada putaran ini. Pengujian runtime dilakukan di Windows; rantai bisnis nyata kedua sisi menggunakan Go, sedangkan bahasa lain menyelesaikan pengujian SDK bertanda tangan lokal. Layanan pembayaran dan terjemahan adalah simulasi terisolasi, tanpa penagihan, pengembalian dana, atau deployment nyata; 192.168.2.177 tidak diakses. Layanan Licentivo dan MySQL sementara telah dipastikan berhenti; layanan yang ada dan perubahan workspace lain dipertahankan.

Log asli, snapshot kode sumber yang diuji, dan probe berada di direktori yang diabaikan `.local/account-store-fix-20261024/`. Ringkasan yang dapat dibagikan ada di [bukti verifikasi](https://github.com/spf86/licentivo-launch/blob/main/docs/account-store-fix-evidence-2026-10-24.json).
