Governance · संरचना से ही read-only

नीति कोड है।
प्रॉम्प्ट नहीं।

SQAI मॉडल को वही मानता है जो वह है: एक अविश्वसनीय क्लाइंट। Allow-lists टूल के निर्माण के समय कोड में स्थिर हो जाती हैं, निष्पादन से पहले in-process जाँची जाती हैं, और मॉडल के protocol में अनुपस्थित रहती हैं। सिस्टम को मनाने के लिए कुछ है ही नहीं।

4,574contract द्वारा उजागर क्षमताएँ — सभी read-only
6एक ऐप की नीति में grants
1typed अनुरोध जो चलता है

IIसंकुचन, पूर्ण विवरण

तीन परतें। हर एक केवल घटा सकती है।

हर उत्तर एक ही नियंत्रण से गुज़रता है। एक hash-pinned contract परिभाषित करता है कि क्या अस्तित्व में है। आपकी नीति उसे केवल अनुमत तक सीमित करती है। एक typed अनुरोध को दोनों के भीतर फिट होना होगा।

  1. 01

    Contract

    pinned runtime में 4,778 क्षमताएँ; एजेंट्स को 4,574 उजागर, सभी read-only। शेष 204 पूरी तरह बाहर — मॉडल के लिए उनका अस्तित्व नहीं।

  2. 02

    आपकी नीति

    तीन allow-lists — allowedSources, allowedFields प्रति source, allowedFunctions — createSQAI() के समय स्थिर। Functions का डिफ़ॉल्ट "all-readonly" है।

  3. 03

    एक अनुरोध

    एक typed plan, contract के विरुद्ध validated, फिर निष्पादन से पहले in-process नीति के विरुद्ध जाँचा गया — कभी बाद में नहीं।

Layer 01 · Contract4,574 उजागर · read-only
Layer 02 · आपकी नीति6 grants
allowedSourcesorders
allowedFieldsregionrevenueunit_price
allowedFunctionsstats.medianfinance.npv
Layer 03 · एक अनुरोध1 typed plan

QuerySpec v1 · median(revenue) by region · policy ✓

contract_hash sha256:79f1c5a6c7164e7e9e1750e70a5c03292fa87eb52d8148a740c06695924be9a1

केवल संकुचन।

एक नीति सतह को घटा सकती है; कोई भी उसे बढ़ा नहीं सकता। ऐसी क्षमता का नाम लें जो contract उजागर नहीं करता, और createSQAI() निर्माण के समय unsupported_operation फेंकता है — कोई एजेंट जुड़ने से पहले ही ऐप विफल हो जाता है।

और मॉडल के टूल input में कोई allowed* फ़ील्ड नहीं है। नीति protocol में नहीं है, इसलिए कोई प्रॉम्प्ट — या injection — उसे विस्तृत नहीं कर सकता।

IIIनीति, कोड में

एक बार लिखी। हर बार जाँची।

अधिकांश governance टूलिंग डेटा पथ के बगल में बैठकर उसे देखती है। SQAI की नीति पथ के भीतर है: constructor में तीन allow-lists, हर निष्पादन से पहले in-process लागू।

const sqai = createSQAI({
  sources: { orders },

  // policy — fixed here, invisible to the model
  allowedSources: ['orders'],
  allowedFields: {
    orders: ['region', 'revenue', 'unit_price'],
  },
  // functions default: 'all-readonly'
  allowedFunctions: [
    'stats.median', 'finance.npv',
  ],
});
allowedSources
वे registered sources जिन्हें एक plan नाम दे सकता है। अन्य कुछ भी policy_denied_source लौटाता है।
allowedFields
प्रति source कॉलम। किसी अन्य कॉलम को छूने वाला plan policy_denied_field लौटाता है।
allowedFunctions
वे read-only functions जिन्हें एक plan कॉल कर सकता है — डिफ़ॉल्ट "all-readonly"। इससे बाहर कुछ भी policy_denied_function लौटाता है।
tool input
कोई allowed* फ़ील्ड नहीं। मॉडल नीति कभी नहीं देखता, इसलिए वह कभी व्यापक नीति नहीं भेज सकता।

अस्वीकृति का लेखा

अस्वीकृतियाँ डेटा हैं, exceptions नहीं। हर एक में एक स्थिर कोड होता है जिसे एजेंट पढ़ सकता है — और कोई भी retryable नहीं है, इसलिए कोई लूप नीति को घिस नहीं सकता।

निर्माण के समय

unsupported_operation

नीति ऐसी क्षमता का नाम लेती है जो contract उजागर नहीं करता। निर्माण विफल होता है; कोई एजेंट जुड़ने से पहले ही ऐप बंद हो जाता है।

अनुरोध के समय

policy_denied_source

plan, allowedSources से बाहर किसी source का नाम लेता है।

policy_denied_field

plan उस source के allowedFields से बाहर किसी कॉलम को छूता है।

policy_denied_function

plan, allowedFunctions से बाहर किसी function को कॉल करता है।

source: "sqai"हर नीति अस्वीकृति एक संरचित, non-retryable परिणाम के रूप में आती है। टूल कभी throw नहीं करते।

IVअभिरक्षा

परिणाम रखे जाते हैं, संग्रहीत नहीं।

पूरा result set कभी मॉडल के context में नहीं आता। इसे एक governed store में रखा जाता है और id से संदर्भित किया जाता है; मॉडल को एक घोषित sample प्राप्त होता है।

Result store

नियंत्रित स्टोर · TTL 15 मिनट

result_id
16 यादृच्छिक bytes, base64url। अनुमान-अयोग्य, कभी क्रमिक नहीं।
authorization
Tenant-bound। गलत tenant को result_not_found मिलता है — store कभी अस्तित्व की पुष्टि नहीं करता।
ttl
15 मिनट। उसके बाद entry मिट जाती है।
capacity
अधिकतम 256 results — कुल 64 MB, प्रति tenant 16 MB।

Store परिणाम रखता है। मॉडल एक sample पढ़ता है और यह स्पष्ट करता है।

Model-context सीमाएँ

defaultLimit100जब plan में कोई सीमा निर्धारित न हो तब लागू row limit
maxExecutionRows1,000किसी भी execution द्वारा लौटाई जाने वाली rows की अधिकतम सीमा
maxRowsToModel25model context को अधिकतम इतनी ही rows मिलती हैं
maxCellsToModel250model context को अधिकतम इतनी ही cells मिलती हैं
maxBytesToModel32,000model को result data के अधिकतम इतने ही bytes मिलते हैं

Truncation सदैव result में घोषित होता है। आंशिक rows कभी नहीं दिखाई जातीं — row या तो पूरी आती है या बिल्कुल नहीं।

ऑडिट दृष्टिकोण

17%संगठन किसी agent की पूरी tool-call sequence को बाद में पुनर्निर्मित कर सकते हैं

GDPR Article 30 और SOC 2 CC7.2 ठीक ऐसे ही records की अपेक्षा करते हैं।

हर SQAI उत्तर अपना पुनर्निर्माण स्वयं वहन करता है:

plan_hash · invocation_hash · computation_hash · contract_hash

Replay एक lookup है, जाँच नहीं। Replay कैसे काम करता है

VIप्रश्न

Governance, सीधे पूछा गया

क्या मॉडल अपनी पहुँच स्वयं बढ़ा सकता है?

नहीं। नीति createSQAI() के समय निर्धारित होती है और execution से पहले in-process जाँची जाती है। मॉडल के tool input में कोई allowed* field नहीं होता, इसलिए protocol में विस्तार की कोई गुंजाइश नहीं — नीति से बाहर का अनुरोध एक structured policy_denied परिणाम लौटाता है।

क्या read-only एक ऐसा flag है जिसे bypass किया जा सकता है?

यह flag नहीं है। उजागर contract में 4,574 read-only capabilities हैं; write path निर्माण से ही अनुपस्थित है, अक्षम नहीं। Prompt injection मॉडल की माँग बदल सकता है — वह किसी pinned contract में capabilities नहीं जोड़ सकता।

GDPR Article 30 या SOC 2 CC7.2 समीक्षा के लिए कौन से records उपलब्ध हैं?

हर result में plan_hash, invocation_hash, computation_hash और contract_hash होते हैं। सटीक computation को बाद में भी उन hashes के विरुद्ध replay और सत्यापित किया जा सकता है।

Query के बाद result data कहाँ रहता है?

एक tenant-authorized result store में: ids 16 यादृच्छिक bytes के होते हैं, entries 15 मिनट बाद समाप्त हो जाती हैं, और store कुल 64 MB तथा प्रति tenant 16 MB तक सीमित है। Model context को अधिकतम 25 rows, 250 cells और 32,000 bytes मिलते हैं — truncation सदैव घोषित।

VIIआगे

उत्तर को नियंत्रित करें।

एक schema और एक compliance प्रश्न लाएँ। हम वह नीति दिखाएँगे जो उसका उत्तर देती है।