एमसीपी रजिस्ट्री आपूर्ति श्रृंखलाः प्रवेश, बहाव और रोलबैक
Type: Build
Languages: Python
Prerequisites: Phase 13 · 17 (gateways and registries), Phase 13 · 18 (production authentication)
Time: ~90 minutes
सीखने के लक्ष्य
- अलग रजिस्ट्री प्रकाशन, पैकेज उत्पत्ति, रनटाइम डिस्कवरी और स्थानीय अनुमोदन।
- अपने स्वयं के रिकॉर्ड के भीतर नाम पर भरोसा किए बिना MCP सर्वर नाम स्थान की जांच करें।
- पिन अपरिवर्तनीय प्रकाशन, निष्पादन-स्रोत, उत्पत्ति, और लाइव वर्णक प्रमाण।
- प्रवेश के बाद रजिस्ट्री स्थिति परिवर्तन और रनटाइम ड्रेफ का पता लगाएं।
- इतिहास को पुनर्लेखन के बिना पहले स्वीकार किए गए संस्करण पर रूटिंग को वापस रोल करें।
- एक स्पष्ट प्रवेश पुस्तिका बनाए रखें जो हर निर्णय की व्याख्या करती है।
समस्या
आप पाओगेcom.example/inventoryएक रजिस्ट्री में. इसका विवरण सही लग रहा है. इसका पैकेज मौजूद है. सर्वर जवाब देता है.server/discover. .
यह एक तथ्य नहीं है, बल्कि विभिन्न अधिकारियों की एक श्रृंखला है।
- नामस्थान के लिए प्रमाणित एक प्रकाशक ने एक रिकॉर्ड प्रस्तुत किया।
- एक पैकेज रजिस्ट्री एक विशिष्ट पहचान और पाचन के साथ एक कलाकृतियों की सेवा की।
- एक चल रहे एंडपॉइंट ने प्रोटोकॉल संस्करण, क्षमताओं, उपकरणों और डायग्नोस्टिक सर्वर की जानकारी की रिपोर्ट की।
- आपके संगठन ने तय किया कि यह सटीक संयोजन अनुमति दी गई थी।
इन तथ्यों को it में ढकना रजिस्ट्री में है, इसलिए इस पर भरोसा करें यह एक आपूर्ति श्रृंखला अंधे स्थान बनाता है। एक वैध प्रकाशन अभी भी अप्रचलित हो सकता है। यदि आप इसका पाचन नहीं करते हैं तो एक पैकेज टैग एक अप्रत्याशित कलाकृतियों की ओर इशारा कर सकता है। एक सर्वर समीक्षा के बाद एक विनाशकारी उपकरण जोड़ सकता है। एक रोलबैक चुपचाप एक संस्करण चुन सकता है जिसे कभी स्वीकार नहीं किया गया था।
फिक्स एक प्रवेश नियंत्रक है हर सीमा पर सबूत के साथ।
रजिस्ट्री एक सूचकांक है, आपकी स्वीकृति प्रणाली नहीं
आधिकारिक एमसीपी रजिस्ट्री सर्वर मेटाडेटा संग्रहीत करता है।server.jsonरिकॉर्ड सर्वर संस्करण का नाम और एक या एक से अधिक पैकेज या दूरस्थ अंत बिंदुओं की घोषणा करता है। प्रकाशन नियम नामस्थान प्रमाणीकरण, पैकेज स्वामित्व जांच, प्रतिबंधित रजिस्ट्री नियम और एक संकीर्ण प्रकाशक मेटाडेटा स्थान जोड़ते हैं।
आपके उत्पादन नीति अभी भी तैनाती के प्रश्नों का उत्तर देती हैः
| Boundary | Question | Evidence owner |
|---|---|---|
| Namespace | Was the publisher allowed to use this name? | Registry authentication plus your verified namespace input |
| Record | What did the publisher declare for this version? | Immutable server.json digest |
| Execution source | Which package or remote endpoint will execute? | Declared source fields, verified ownership result, transport, and trusted digest |
| Runtime | What does the endpoint expose now? | server/discover and tool descriptors |
| Admission | Did your policy approve this exact set? | Local pin and ledger entry |
| Operations | Is it still safe, and what can replace it? | Drift checks, status sync, health, and rollback route |
रजिस्ट्री स्कीम संस्करण और एमसीपी प्रोटोकॉल संस्करण स्वतंत्र हैं। एक रिकॉर्ड प्रकाशित का उपयोग कर सकता है 2025-12-11सर्वर स्कीम जबकि लाइव सर्वर MCP का समर्थन करता है 2026-07-28एक दूसरे से कभी मत मत निकलो।
एक प्रवेश निर्णय में सात नियंत्रण
1. नामस्थान सत्यापन
आधिकारिक रजिस्ट्री नामों में प्रमाणीकृत नाम स्थानों का उपयोग किया जाता है। एक सत्यापित डोमेन एक उल्टे डोमेन पूर्वावलोकन के लिए मैप कर सकता है। उदाहरण के लिए, नियंत्रण example.comस्थापित कर सकते हैं com.example/*. .
स्ट्रिंग प्रीफिक्स चेक को स्वीकार न करेंः
pythonserver_name.startswith("com.example")जो भी स्वीकार करता है com.exampleevil/tool. . . नाम को विभाजित करें /, एक गैर-खाली स्लग की आवश्यकता है, और सही ढंग से नामस्थान खंड की तुलना करें. अधिक महत्वपूर्ण बात यह है कि सत्यापित नामस्थान प्रमाणीकरण परिणाम से प्रवेश में पारित करें. अविश्वसनीय रिकॉर्ड से विश्वास प्राप्त न करें.
GitHub समर्थित नामस्थान और डोमेन समर्थित नामस्थान विभिन्न प्रमाणीकरण पथों का उपयोग करते हैं। किसी भी पथ को एक प्रवेश इनपुट में सामान्य बनाएंः सटीक सत्यापित नामस्थान स्ट्रिंग।
2. मूल सम्मिलित
पैकेज रिकॉर्ड के लिए, घोषणा और प्राप्त कलाकृतियों को स्पष्ट क्षेत्रों पर एक साथ होना चाहिएः
- पैकेज रजिस्ट्री प्रकार
- पैकेज पहचानकर्ता
- पैकेज संस्करण
- सत्यापित स्वामित्व परिणाम
- डाउनलोड की गई कलाकृतियों का पचास
घोषित पैकेज परिवहन को भी मान्य करें। केवल एक रिमोट एंडपॉइंट वाला रिकॉर्ड मान्य है और पैकेज की कमी के कारण अस्वीकार नहीं किया जा सकता है। रिमोट स्रोत के लिए, घोषित यूआरएल और परिवहन प्रकार को स्वतंत्र रूप से सत्यापित एंडपॉइंट स्वामित्व और विश्वसनीय कनेक्शन या तैनाती सबूतों का एक डाइजेस्ट में शामिल करें।
पाठ कोड स्रोत प्रकारों का समर्थन करता है और रजिस्ट्री स्रोत, सर्वर नाम, रजिस्ट्री संस्करण, रिकॉर्ड डाइजेस्ट और सबूत डाइजेस्ट के साथ चयनित स्रोत को हैश करता है। परिणामस्वरूप उत्पत्ति डाइजेस्ट पूर्ण सबूत सेट का एक कॉम्पैक्ट पॉइंटर है। यह सबूत को बनाए रखने के लिए एक विकल्प नहीं है।
कभी भी एक डिजेस्ट न स्वीकारें जो केवल उस आर्टिफैक्ट द्वारा प्रदान की जाती है जिसे आप सत्यापित करने की कोशिश कर रहे हैं। इसे एक विश्वसनीय आहरण सीमा पर गणना करें, या इसे एक पैकेज सेवा से प्राप्त करें जिसका सत्यापन परिणाम आप मान्य करते हैं।
3. निर्णय को पिन करें, न केवल संस्करण
रजिस्ट्री संस्करण अद्वितीय प्रकाशन पहचानकर्ता हैं। प्रकाशित मेटाडेटा अपरिवर्तनीय है। एक बदलते रिकॉर्ड के लिए एक नया संस्करण की आवश्यकता होती है। अर्थिक संस्करण अनुशंसित है, लेकिन रजिस्ट्री इसकी आवश्यकता नहीं है और संस्करण रेंज को स्वीकार नहीं करता है।
इसका मतलब है^1.4अंतिम नहीं है। एक उपयोगी पिन में निम्नलिखित शामिल हैंः
json{
"server": "com.example/inventory",
"version": "1.0.0",
"recordDigest": "...",
"source": {"kind": "package", "registryType": "pypi"},
"sourceDigest": "...",
"toolsetDigest": "...",
"provenanceDigest": "...",
"registryStatus": "active"
}कई परतों को चिपकाकर आप यह पहचान सकते हैं कि कौन सी सीमा बदल गई है। एक ही रजिस्ट्री संस्करण के तहत रिकॉर्ड डाइजेस्ट परिवर्तन एक रजिस्ट्री अखंडता विफलता है। एक ही पैकेज निर्देशांक या दूरस्थ तैनाती के तहत स्रोत डाइजेस्ट परिवर्तन एक निष्पादन स्रोत अखंडता विफलता है। एक टूलसेट डाइजेस्ट परिवर्तन रनटाइम बहाव है।
4. प्रत्यक्ष बहाव का पता लगाना
प्रवेश द्वार को सर्वर का निरीक्षण करना चाहिए जो वास्तव में ट्रैफ़िक प्राप्त करेगा।server/discover, सूची या अन्यथा अपने विश्वसनीय पथ के माध्यम से उजागर उपकरण वर्णकों प्राप्त करें, और सत्यापित करेंः
2026-07-28हैsupportedVersions- सभी स्थानीय रूप से आवश्यक क्षमताएं मौजूद हैं
- प्रत्येक उपकरण वर्णक में आवश्यक पहचान और स्कीमा सतह है
- सामान्यीकृत वर्णक डाइजेस्ट बाद की जांच में स्वीकार किए गए पिन से मेल खाता है
वैकल्पिक परिणाम _meta["io.modelcontextprotocol/serverInfo"]मूल्य स्व-रिपोर्ट प्रदर्शित, लॉग, और डिबगिंग संदर्भ है। इसे नैदानिक सबूत के रूप में रिकॉर्ड करें, लेकिन इसे नामस्थान, पैकेज स्वामित्व, एंडपॉइंट स्वामित्व, प्रवेश, या किसी अन्य सुरक्षा निर्णय को स्थापित करने के लिए कभी भी उपयोग न करें। एक प्रत्यक्ष serverInfoउपनाम बाहर _metaअनुबंध क्षेत्र नहीं है और इसका प्रचार निदान साक्ष्य में नहीं किया जाना चाहिए।
केवल उन फ़ील्ड को सामान्य करें जिनका क्रम कोई अर्थ नहीं है। नमूना हैशिंग से पहले टूल सूची को स्थिर नाम से सॉर्ट करता है, इसलिए हानिरहित सूची-क्रम परिवर्तन ड्रिफ्ट का कारण नहीं बनता है। यह वर्णक फ़ील्ड को नहीं छोड़ता है। एक नया टूल, बदल गया स्कीमा, बदल गया विवरण, या नए टिप्पणी पिन को बदलती है।
नमूना गलत रूप से वर्णक और किसी भी वर्णक पचाई परिवर्तन के रूप में बहती है, पिन को संगरोध करता है, इसके सक्रिय मार्ग को हटा देता है, और उस संस्करण को रोलबैक लक्ष्य के रूप में ब्लॉक करता है। एक उत्पादन नीति केवल एक नई समीक्षा के माध्यम से संपादकीय परिवर्तन की अनुमति दे सकती है, क्योंकि विवरण मॉडल उपकरण चयन को प्रभावित करते हैं।
5. रजिस्ट्री की स्थिति लाइव स्टेट है
रजिस्ट्री एपीआई प्रतिक्रिया स्तर संलग्न करता है _metaप्रत्येक सर्वर रिकॉर्ड के बगल में वस्तु. रजिस्ट्री प्रबंधित फ़ील्ड में रहते हैं _meta["io.modelcontextprotocol.registry/official"]. प्रतिक्रिया पारित करें _metaप्रवेश का विरोध और पढ़ना _meta["io.modelcontextprotocol.registry/official"].status. एक प्रत्यक्ष_meta.statusप्रतिक्रिया मेटाडेटा को प्रकाशन रिकॉर्ड के अपने साथ भ्रमित न करें _metaस्थिति हो सकती हैः
active: डिफ़ॉल्ट रूप से लौटाया गया और स्थानीय प्रवेश के लिए पात्रdeprecated: अभी भी चेतावनी के साथ पता लगाया जा सकता है, लेकिन अब एक सुरक्षित स्वचालित विकल्प नहीं हैdeleted: डिफ़ॉल्ट रूप से छिपा हुआ जबकि इसके ऐतिहासिक रिकॉर्ड हटाए गए या अतिरिक्त दृश्यों के माध्यम से उपलब्ध रहता है
प्रवेश के बाद सिंक्रनाइज़ स्थिति। यदि कोई सक्रिय संस्करण अप्रचलित या हटा दिया जाता है, तो उसके पिन को संगरोधित करें और नए काम को उस पर रूट करना बंद करें। सबूत रखें। डिफ़ॉल्ट सूची से हटाने से आपके ऑडिट ट्रेल को हटाने की अनुमति नहीं है।
प्रकाशक द्वारा प्रदान किए गए कस्टम मेटाडेटा केवल _meta.io.modelcontextprotocol.registry/publisher-providedरजिस्ट्री-प्रबंधित प्रतिक्रिया मेटाडेटा अलग है. किसी प्रकाशक को अपनी आधिकारिक स्थिति निर्धारित करने की अनुमति न दें।
6. रोलबैक का अर्थ है मार्ग की बहाली
रोलबैक के दौरान एक अपरिवर्तनीय प्रकाशन को संपादित नहीं किया जाता है। रोलबैक पहले स्वीकार किए गए, वर्तमान में पात्र पिन का चयन करता है और सक्रिय मार्ग बदलता है।
एक सुरक्षित लक्ष्य को:
- प्रवेश रिकॉर्ड पूरा करें।
- अभी भी आपकी पॉलिसी के तहत सक्रिय रजिस्ट्री की स्थिति है।
- रनटाइम या सुरक्षा सबूतों से संगरोध में नहीं होना।
- अभी भी चिपके हुए पैकेज और लाइव वर्णक सेट पर तय करें।
- वर्तमान स्वास्थ्य जांच पास करें।
नमूना पहले तीन शर्तों पर केंद्रित है। एक वास्तविक मेल खाने वाले को पैकेज को फिर से लेना चाहिए और सक्रियण से पहले लाइव एंडपॉइंट को फिर से जांचना चाहिए।
7. प्रवेश पुस्तिका जोड़ें
प्रवेश डेटाबेस में यह बताया गया है कि क्या सक्रिय है।
प्रत्येक नमूना प्रविष्टि में एक अनुक्रम, समय, घटना, सर्वर, संस्करण, परिणाम, कारण, सबूत, पिछले प्रविष्टि हैश और अपना हैश होता है। पुराने परिणाम को बदलना उस प्रविष्टि और प्रत्येक बाद के लिंक की सत्यापन को तोड़ता है।
यह हेरफेर-प्रमाणित है, जादू से हेरफेर-प्रमाणित नहीं है। एंकर आवधिक लेजर एक अलग ट्रस्ट डोमेन में हेड करता है, जैसे हस्ताक्षरित रिलीज मेटाडेटा या एक बार लिखने के भंडारण। कौन जोड़ सकता है, प्रतिबंधित करें। प्राधिकरण टोकन, पैकेज क्रेडेंशियल, टूल तर्कों और निजी एंडपॉइंट डेटा को सबूत से बाहर रखें।
इसे बनाओ
चलाने योग्य नियंत्रक चालू है code/main.pyयह केवल पायथन मानक पुस्तकालय का उपयोग करता है।
अंतहीन प्रदर्शन से शुरू करेंः
bashcd phases/13-tools-and-protocols/30-mcp-registry-supply-chain-and-drift
python3 code/main.pyप्रदर्शन पांच कार्य करता हैः
- स्वीकार करें
1.0.0नाम स्थान, पैकेज उत्पत्ति, प्रोटोकॉल, क्षमताओं और उपकरणों के साथ मेल खाता है। - स्वीकार करें
1.1.0और इसे सक्रिय करें। - रनटाइम पर एक अप्रत्याशित हटाने उपकरण का अवलोकन करें।
- रजिस्ट्री की स्थिति का निरीक्षण करें
1.1.0बनेंdeprecated. . - अभी भी स्वीकार किए गए को रूटिंग बहाल करें
1.0.0पिन।
अपेक्षित आकारः
json{
"admitted": [true, true],
"driftAllowed": false,
"rollbackAllowed": true,
"activeVersion": "1.0.0",
"ledgerValid": true
}इस क्रम में कार्यान्वयन पढ़ेंः
namespace_for_domain()औरnamespace_matches()सटीक नामकरण प्राधिकरण स्थापित करें।digest()औरnormalized_tools()निर्धारक साक्ष्य प्रस्तुत करें।RegistryAdmissionController.admit()प्रकाशन, उत्पत्ति, रनटाइम और नीति में शामिल होता है।check_live()एक नई अवलोकन की तुलना पिन के साथ करता है।observe_registry_status()क्वारंटीन संस्करण जिनके रजिस्ट्री स्टेट में बदलाव होता है।rollback()केवल एक पहले स्वीकार किए गए पात्र लक्ष्य को सक्रिय करता है।AdmissionLedger.verify()रिकॉर्ड किए गए इतिहास में परिवर्तन का पता लगाता है।
इसका प्रयोग करें
पता लगाने और रूटिंग के बीच नियंत्रक रखेंः
textRegistry sync -> artifact verifier -> live discovery -> admission controller -> route table
| |
v v
evidence store admission ledgerइन कार्यों के लिए अलग पहचान का उपयोग करें। एक रजिस्ट्री सिंक कार्यकर्ता को मेटाडेटा तक पढ़ने के लिए पहुंच की आवश्यकता होती है। एक आर्टिफैक्ट सत्यापनकर्ता को पैकेज प्राप्त करने के लिए पहुंच की आवश्यकता होती है। एक मार्ग संगतकर्ता को एक स्वीकृत पिन को सक्रिय करने के लिए अनुमति की आवश्यकता होती है। उनमें से किसी को भी सभी प्रमाण पत्र की आवश्यकता नहीं होती है।
प्रमाणित का अर्थ है कि प्रमाणीकरण नीति पारित की गई है। Active का अर्थ है कि मार्ग वर्तमान में इसे चुनता है। Quarantine का अर्थ है कि यह नया काम प्राप्त नहीं कर सकता है। Superseded का अर्थ है कि एक और स्वीकार किया गया संस्करण सक्रिय है। एक बुल में सभी चार अर्थों को एन्कोड न करें।
सर्वर को उजागर करने से पहले प्रवेश चलाएँ tools/listअन्यथा ग्राहक प्रकाशन और नीति मूल्यांकन के बीच के अंतर के दौरान एक उपकरण का पता लगा सकता है।
इंटरैक्टिव लैब
आप एक समय में एक सीमा टूटते देखेंगे।
लैब ए: नामस्थान टकराव
कोड निर्देशिका से एक पायथन खोलेंः
bashcd phases/13-tools-and-protocols/30-mcp-registry-supply-chain-and-drift/code
python3 -qफिर चलाओः
pythonfrom main import namespace_matches
namespace_matches("com.example/inventory", "com.example")
namespace_matches("com.exampleevil/inventory", "com.example")पहला परिणाम है True; दूसरा है False. सटीक तुलना को से बदलेंstartswithस्थानीय रूप से और देखते हैं कि दूसरा नाम सीमा पार क्यों करता है। आगे बढ़ने से पहले सटीक तुलना बहाल करें।
लैब बी: वर्णक बहाव
pythonfrom main import *
times = iter(f"2026-08-21T12:00:{n:02d}+00:00" for n in range(10))
c = RegistryAdmissionController(clock=lambda: next(times))
meta = {OFFICIAL_META_KEY: {"status": "active"}}
c.admit(sample_record("1.0.0"), meta, "com.example", evidence_for("1.0.0"), sample_live("1.0.0"))
c.check_live("com.example/inventory", "1.0.0", sample_live("1.0.0", True))कारणों और मार्ग की स्थिति की जांच करें। पैकेज और रजिस्ट्री रिकॉर्ड में कोई बदलाव नहीं हुआ। रनटाइम टूल सतह ने किया, इसलिए नियंत्रक ने पिन को संगरोधित और निष्क्रिय कर दिया। यही कारण है कि स्थापना के बाद आपूर्ति श्रृंखला नियंत्रण जारी रखना चाहिए।
लैब सी: स्थिति और वापसी
स्वीकार करें1.1.0, इसे अप्रचलित चिह्नित करें, और दोनों रोलबैक लक्ष्य की कोशिश करेंः
pythonc.admit(sample_record("1.1.0"), meta, "com.example", evidence_for("1.1.0"), sample_live("1.1.0"))
c.observe_registry_status("com.example/inventory", "1.1.0", "deprecated")
c.rollback("com.example/inventory", "1.1.0", "unsafe retry")
c.rollback("com.example/inventory", "1.0.0", "restore known release")
c.ledger.verify()क्वारंटीन लक्ष्य को अस्वीकार कर दिया गया है। पहले सक्रिय पिन को स्वीकार कर लिया गया है।
अभ्यास प्रयोगशाला
दो व्यक्ति के लिए अनुमोदन गेट के साथ नियंत्रक का विस्तार करें।
आवश्यकताएँः
- पिन में परिवर्तनशील नाम नहीं, हस्ताक्षरित साक्ष्य संदर्भ के रूप में अनुमोदनों को संग्रहीत करें।
- एक उपकरण सेट के लिए दो अलग-अलग समीक्षक पहचान की आवश्यकता होती है जिसमें के साथ एक उपकरण होता है।
destructiveHint: true. . - दोहरी समीक्षक पहचानों को अस्वीकार करें।
- जब अनुमोदन अधूरा हो तो मूल प्रवेश प्रयास को पुस्तक में रखना।
- शून्य, एक, दोहरी और दो अलग-अलग स्वीकृति के लिए परीक्षण जोड़ें।
- हस्ताक्षर, क्रेडेंशियल या पूर्ण निजी टूल तर्क को लॉग न करें।
सफलता का अर्थ है कि जब तक दोनों पहचानें सटीक रिकॉर्ड, पैकेज और टूलसेट को मान्य नहीं करतीं तब तक विनाशकारी उपकरण सक्रिय नहीं हो सकता है।
शिप की गई कलाकृतियाँ
यह सबक जहाजों outputs/skill-mcp-registry-admission.md. इसे एक नए रजिस्ट्री संस्करण की समीक्षा या बहाव की जांच करते समय एक फ्लैट, पुनः प्रयोज्य रनबुक के रूप में उपयोग करें। यह इनपुट, अस्वीकार नियम, साक्ष्य बंडल, स्थिति संगतता और रॉलबैक प्रमाण को परिभाषित करता है। नमूना वर्ग नामों पर निर्भर किए बिना।
जाँचें
प्रदर्शन और निर्धारक सूट चलाएंः
bashcd phases/13-tools-and-protocols/30-mcp-registry-supply-chain-and-drift
python3 code/main.py
python3 -m unittest discover -s code/tests -vसत्यापन से साबित होना चाहिएः
- सटीक नामस्थान सीमाएं समान रूप से पूर्वावलोकन को अस्वीकार करें
- केवल आधिकारिक नामों के साथ रजिस्ट्री की स्थिति एक संस्करण को पात्र बना सकती है
- सत्यापित या असंगत पैकेज और दूरस्थ सबूत अस्वीकार कर दिया गया है
- प्रकाशक मेटाडेटा रजिस्ट्री द्वारा प्रबंधित मेटाडेटा का नक्कल नहीं कर सकते
- वर्णक परिवर्तनों को छिपाने के बिना उपकरण आदेश सामान्य हो जाता है
- गलत रूप से तैयार पैकेज और उपकरण संरचना सुरक्षित रूप से अस्वीकार
serverInfoनिदान के लिए रहता है और कभी भी प्रवेश प्राधिकरण प्रदान नहीं करता है- वर्णक ड्रिफ्ट क्वारंटीन, निष्क्रिय करता है, और पिन पर रोलबैक ब्लॉक करता है
- स्थिति में परिवर्तन क्वारंटीन सक्रिय पिन
- रोलबैक क्वारंटीन या अज्ञात संस्करण का चयन नहीं कर सकता है
- लेजर में हेरफेर का पता लगाया जाता है
उत्पादन विफलता मोड
| Failure | Why it happens | Required response |
|---|---|---|
| Name looks valid but namespace was never authenticated | Policy trusted record text | Reject until a trusted namespace verifier supplies the exact prefix |
| Same package coordinate returns new bytes | Mutable upstream or compromised distribution | Stop activation, retain both digests, investigate the fetch boundary |
| “Latest” changes without review | Floating selection escaped the pin | Resolve only exact admitted versions and digests |
| New tool appears after approval | Runtime drift or a different deployment | Quarantine the route and capture a fresh descriptor observation |
| Deprecated version remains active | Status sync is missing or delayed | Reconcile status on a schedule and before activation |
| Deleted record disappears from default sync | Client requested only active records | Use incremental or deleted-aware reconciliation and preserve local history |
| Rollback target was never admitted | Route control and approval state are disconnected | Refuse rollback and run a new admission for the target |
| Ledger verifies locally after an attacker rewrites all entries | Hash chain has no external anchor | Publish signed ledger heads to a separate trust domain |
| Evidence contains bearer tokens or tool arguments | Logging copied whole requests | Redact at collection time and store only the minimum proof |
परिचालन नियम
प्रकाशन उत्तर क्या यह पहचान इस नाम को प्रकाशित कर सकती है? प्रवेश उत्तर क्या हम इस सटीक कलाकृतियों को निष्पादित करेंगे और इस सटीक व्यवहार को उजागर करेंगे? उन निर्णयों को अलग रखें, प्रत्येक जोड़ को चिपकाएं, और रूलबैक को स्मृति के बजाय सबूत चुनें।
आगे पढ़ना
- Official Registry server.json requirements
- Official Registry OpenAPI contract
- MCP 2026-07-28 server discovery
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.