# Launch SDK खाता लॉगआउट पुनः प्रयास सुधार

तारीख: 2026-10-24। AUTH-07 ठीक किया गया और Go, JavaScript, Python, C#, Java, Ruby, Rust, C, C++ के खाता जीवनचक्र प्रवेश सिंक्रनाइज़ किए गए। **SDK डिप्लॉय या प्रकाशित नहीं हुआ, Git कमिट या पुश नहीं हुआ।** इस कार्य ने Launch या Licentivo सर्वर व्यवसाय कोड नहीं बदला।

## व्यवहार

स्पष्ट लॉगआउट पहले सुरक्षित स्टोरेज का खाता रिकॉर्ड “केवल निरस्तीकरण लंबित” चिह्नित करता है, फिर आधिकारिक SDK लॉगआउट कॉल कर Launch को खाता सत्र निरस्तीकरण भेजता है। नेटवर्क या रद्दीकरण स्थिति चाहे जो हो, स्थानीय रनटाइम रुकता है और संरक्षित सुविधा जारी नहीं चल सकती।

Launch द्वारा निरस्तीकरण पुष्ट न होने पर SDK लंबित कार्य और पुनः प्रयास के लिए मूल खाता क्रेडेंशियल रखता है, लेकिन इसे लॉग इन खाता नहीं मानता। फिर `Logout`, `Login` या `Restore` मूल निरस्तीकरण अनुरोध बहाल करता है; `Restore` लंबित कार्य से पहचान नहीं माँगता या प्राधिकरण रनटाइम शुरू नहीं करता। सफलता या मूल सत्र अब प्रमाणित न हो सकने वाला HTTP 401 मिलने पर ही खाता लंबित कार्य हटता है। इसलिए प्रतिक्रिया खोने पर भी बहाली संभव है और “दूसरा लॉगआउट सफल लौटे लेकिन निरस्तीकरण कभी फिर न भेजा गया” स्थिति नहीं होती।

सामान्य लॉग इन रिकॉर्ड अब भी v2 संगत हैं। लंबित निरस्तीकरण रिकॉर्ड निजी v3 प्रारूप उपयोग करते हैं; Java, Rust ने सामान्य लॉगिन के लिए आवश्यक क्रेडेंशियल फ़ील्ड का आकार भी हटाया ताकि पुराना SDK लंबित कार्य को सामान्य लॉगिन न समझे। लंबित कार्य अल्पकालिक पहचान assertion, लाइसेंस कुंजी या हस्ताक्षरित अनुमति नहीं रखता।

खाता लंबित कार्य पहले कॉन्फ़िगर सुरक्षित `Store` उपयोग करता है। **प्रक्रिया-पार बहाली के लिए स्थायी सुरक्षित स्टोरेज आवश्यक है**, जैसे Windows DPAPI या SDK समर्थित एन्क्रिप्टेड स्टोरेज; डिफ़ॉल्ट `MemoryStore` केवल इसी प्रक्रिया में डेटा रखता है। पुनः प्रयास बाद के लॉगिन, बहाली या लॉगआउट से शुरू होता है, नया स्वतंत्र बैकग्राउंड कार्य नहीं है। स्टोरेज या निरस्तीकरण अधूरा होने पर त्रुटि या लंबित परिणाम लौटता है, सफलता नहीं दिखाई जाती।

Licentivo SDK के डिवाइस लॉगआउट टिकट और `.logout.json` उसी के प्रबंधन में रहते हैं; Launch उसकी कैश निर्देशिका नहीं हटाता, डिवाइस, सुविधा या ऑफ़लाइन अधिकार तय नहीं करता। नेटिव उदाहरण और सभी भाषा SDK दस्तावेज़ भी अपडेट किए गए।

## सत्यापन

| दायरा | परिणाम |
| --- | --- |
| Launch Go स्रोत पैकेज | 185 सफल परीक्षण रिकॉर्ड, उप-परीक्षण सहित; कोई विफलता नहीं; `go vet` सफल |
| वास्तविक Launch HTTP और MySQL | लॉगआउट अनुरोध बाधित होने पर सुरक्षित लंबित कार्य बना रहा; SDK पुनर्निर्माण के बाद लॉगिन बहाल नहीं हुआ; नेटवर्क बहाल होने पर निरस्तीकरण फिर भेजा गया, पुराने token के प्रमाणीकरण और पहचान इंटरफ़ेस दोनों ने अस्वीकार किया |
| JavaScript | 10 सफल, लॉगआउट विफलता, पुनर्निर्माण बहाली, 401 पुष्टि सहित |
| Python | 8 सफल, लॉगआउट के बाद स्थानीय खाता सफ़ाई, पुनर्निर्माण बहाली और Windows DPAPI सहित |
| C# | जीवनचक्र, लंबित कार्य बहाली, SDK लॉगआउट लॉग संरक्षण और DPAPI जाँच सफल |
| Java | 7 समूह जीवनचक्र और सुरक्षा परीक्षण सफल, ऑफ़लाइन लॉगआउट पुनः प्रयास सहित |
| Ruby | खाता जीवनचक्र, लंबित कार्य बहाली और एन्क्रिप्टेड स्टोरेज रिग्रेशन सफल |
| Rust | सभी स्थानीय परीक्षण सफल, लंबित कार्य पुनर्निर्माण बहाली और वास्तविक SDK रन सहित |
| C / C++ | वास्तविक हस्ताक्षरित SDK, नेटवर्क बाधा में पुनर्निर्माण बहाली, 401 पुष्टि, DPAPI और C++ रन प्रवेश सफल |
| वर्तमान Licentivo प्राधिकरण सुधार | 45 सफल परीक्षण रिकॉर्ड, कोई विफलता या छोड़ा परीक्षण नहीं; नीति विचलन में नकारात्मक सूचना, कम क्षमता डिवाइस समन्वय, मैनुअल डिवाइस सीमा और मौजूदा प्राधिकरण रिग्रेशन सहित |
| समाहित आधिकारिक SDK | मेनिफ़ेस्ट के सभी 115 फ़ाइल हैश मेल खाते हैं, उनका प्राधिकरण या एन्क्रिप्शन कार्यान्वयन नहीं बदला |

Launch स्रोत रिग्रेशन में `TestMySQLBaseline`, `TestProductUploadRoundTrip`, `TestInitialAdministratorMustChangePasswordBeforeAdministration`, `TestNewPaymentProvidersAndRegistrationWithoutMail` चार अन्य समर्पित डेटाबेस पर निर्भर परीक्षण छोड़े गए, सफलता में नहीं गिने गए; इस SDK, खाता HTTP, खरीद सिंक और मैपिंग प्रवाह का सत्यापन अलग परीक्षण डेटाबेस से हुआ।

## दोनों पक्षों का संयुक्त परीक्षण

स्थानीय अलग MySQL 8.0.32, वर्तमान Launch, Licentivo सेवा और उसके वर्कर, वास्तविक Go Launch SDK और आधिकारिक प्राधिकरण रनटाइम, DPAPI खाता स्टोरेज से **15 व्यावसायिक चरण** पूरे हुए।

दो प्रकार की लॉगआउट विफलता जाँच जोड़ी गई:

1. **अनुरोध Launch तक नहीं पहुँचा**: खाता लॉगआउट इंटरफ़ेस अस्थायी रूप से 503 लौटाता है। SDK स्थानीय सुविधा रोकता है, वास्तविक Licentivo डिवाइस बाइंडिंग रिलीज़ होती है, खाता निरस्तीकरण लंबित कार्य रहता है। SDK पुनर्निर्माण के बाद भी केवल लॉगआउट पुनः प्रयास होता है; कनेक्शन बहाल होने पर मूल Launch सत्र निरस्त और Licentivo संबंधित सत्र सूचना प्राप्त होने की पुष्टि करता है।
2. **सर्वर ने निरस्त किया, लेकिन प्रतिक्रिया खो गई**: Launch ने लॉगआउट संसाधित किया, परीक्षण प्रॉक्सी ने प्रतिक्रिया 503 से बदली। लंबित कार्य SDK पुनर्निर्माण के पार बना रहा; कनेक्शन बहाल होने पर HTTP 401 से मूल सत्र अमान्य होने की पुष्टि कर लंबित कार्य हटाया गया। इस दौरान लॉगिन बहाल या डिवाइस पुनः सक्रिय नहीं हुआ।

अन्य चरणों में वास्तविक खरीद सिंक और हस्ताक्षरित सुविधा संचालन, सामान्य बंद कर बहाली, सामान्य लॉगआउट, दूरस्थ अनलिंक और पुरानी पीढ़ी, नवीनीकरण रिफ़ंड, खाता निरस्तीकरण और पुनः लॉगिन, पूर्ण रिफ़ंड पर निष्पादन अस्वीकृति, रिफ़ंड बहाली, चार्जबैक और बड़े दस्तावेज़ अनुवाद रिग्रेशन शामिल थे। Licentivo के तीन अपडेट उसके ज़िम्मेदार पक्ष ने दिए; इस कार्य ने केवल निर्माण और सत्यापन किया।

भुगतान चैनल और DeepL अलग सिमुलेटेड सेवाएँ थीं, वास्तविक शुल्क, रिफ़ंड या भुगतान अनुवाद नहीं हुआ। वास्तविक संयुक्त सेवा सत्यापन Go से हुआ; अन्य भाषाओं में स्थानीय SDK रिग्रेशन पूरा हुआ, नौ भाषाओं के लिए अलग वास्तविक सेवा डिप्लॉयमेंट स्वीकृति का दावा नहीं है।

इस दौर में `192.168.2.177` तक पहुँच नहीं की गई। MySQL और Licentivo अस्थायी प्रक्रियाएँ बंद हुईं, मौजूदा सेवाएँ और परीक्षण प्रमाण सुरक्षित हैं। मूल सामग्री `.local/logout-retry-fix-20261024/` में, सारांश और स्रोत हैश [सत्यापन प्रमाण](https://github.com/spf86/licentivo-launch/blob/main/docs/logout-retry-fix-evidence-2026-10-24.json) में हैं।
