Skip to content

Anthropic built Scion for itself. Carbon Forge is yours →

Carbon Forge
Menu

गाइड

लैंडिंग नियम: रिकॉर्ड में रखे गए कोड ओनर, और गेट के रूप में एक AEGIS वर्कफ़्लो

CODEOWNERS फ़ाइल समीक्षकों के नाम बताती है, पर अनुमोदन किसी फ़ोर्ज में रहता है और ऐसे बदलाव से जुड़ा होता है जो तब से बदल चुका हो सकता है। Carbon Forge नियम और अनुमोदन रिकॉर्ड में रखता है, सटीक बदलाव से जुड़े हुए, और एक वर्कफ़्लो को अनुमोदकों में से एक बनने देता है।

अन्य भाषाओं में: English, Español, Português, 日本語, Deutsch, Français, 한국어, 简体中文, Italiano · हिन्दी में सभी गाइड

प्रकटीकरण: Carbon Forge, और उसके साथ AEGIS, को 100monkeys.ai बनाता है, इसलिए इसे बनाने वाले का विवरण मानकर पढ़ें। इस गाइड का मसौदा हमारे एक AI एजेंट ने सार्वजनिक दस्तावेज़ों से तैयार किया, ख़ासकर Working in lanes के कदम 8, Source control settings, MCP tools catalog: Lanes, continued और Source control: how it is built and why से, और कंपनी ने इसकी समीक्षा की; यह हिन्दी संस्करण मूल अंग्रेज़ी गाइड का अनुवाद है। तालिका, कॉल और अस्वीकृति दस्तावेज़ों की अपनी हैं, और उद्धरण अंग्रेज़ी में हैं, अनुवाद साथ में। जहाँ दस्तावेज़ कोई सवाल खुला छोड़ते हैं, आख़िरी सेक्शन यह बताता है।

नियम को रिकॉर्ड में क्यों रखें

दस्तावेज़ कारण दो वाक्यों में देते हैं: "Landing rules are the code-owners rule kept in the record. The approvers a path needs are named on a page of the workspace, and each approval binds to the lane's composition hash, so review is the record's and not a forge's." (लैंडिंग नियम रिकॉर्ड में रखा गया कोड-ओनर नियम हैं। किसी पाथ को जिन अनुमोदकों की ज़रूरत है उनके नाम वर्कस्पेस के एक पेज पर होते हैं, और हर अनुमोदन lane के कंपोज़िशन हैश से जुड़ता है, इसलिए समीक्षा रिकॉर्ड की होती है, किसी फ़ोर्ज की नहीं।) इसके बिना "a landing can carry code no approver saw." (एक लैंडिंग ऐसा कोड ले जा सकती है जिसे किसी अनुमोदक ने नहीं देखा।) शुरू में ही एक सीमा: "Carbon runs no review itself." (Carbon ख़ुद कोई समीक्षा नहीं करता।) यह दर्ज करता है कि किसने क्या अनुमोदित किया; समीक्षा वे लोग और वर्कफ़्लो करते हैं जिनके नाम आप देते हैं।

कदम 1. trunk को सुरक्षित करें

नियम सिर्फ़ सुरक्षित trunk पर पढ़े जाते हैं। वर्कस्पेस एडमिन Settings, Workspace, Source control में Protect the trunk चुनता है, और चाहे तो Protect pages and atoms too भी। एजेंट यह सेटिंग इससे जाँचता है:

workspaces.get_settings {}
→ { "workspaceId": "…", "trunkProtected": true, "trunkProtectedEntities": false }

तब से "the trunk moves only by a lane's landing" (trunk सिर्फ़ किसी lane की लैंडिंग से आगे बढ़ता है), और सीधा लिखना workspace <slug> protects its trunk: the trunk lands by lanes.land only; write on a lane के साथ अस्वीकार होता है।

कदम 2. .landing-rules पेज लिखें

आरक्षित पाथ .landing-rules पर एक पेज बनाएँ जिसकी पहली Markdown तालिका का हेडर glob | approvers | gate हो। दस्तावेज़ों का उदाहरण:

| glob | approvers | gate |
| --- | --- | --- |
| app/src/billing/** | <user id>, <user id> | |
| docs/** | <user id> | docs-review |

यह पेज सिर्फ़ वर्कस्पेस एडमिन लिखता है, trunk पर या किसी lane पर; बाक़ी सबको यह अस्वीकृति मिलती है: The landing rules page .landing-rules is reserved: only a workspace admin writes it.

कदम 3. जाँचें कि सर्वर इसे मान्य पढ़ता है

सेटिंग्स डायलॉग का Landing rules सेक्शन <n> rules, valid. बताता है, या किसी ग़लत पंक्ति का नाम Every landing is refused until it is fixed. के साथ देता है। जो पंक्ति किसी ग़ैर-सदस्य का नाम दे, या न अनुमोदक बताए न गेट, वह ग़लत है। टूटा पेज हर लैंडिंग रोक देता है, इसलिए भरोसा करने से पहले जाँच लें।

कदम 4. काम एक lane पर करें

एक lane खोलें और उस पर वैसे लिखें जैसे Working in lanes दिखाता है। लैंडिंग पर lane जिस भी पाथ को छूती है उसे हर पंक्ति से मिलाया जाता है: पेज उसके पाथ से, खिसकाया गया पेज दोनों पाथ से, ट्री फ़ाइल <tree path>/<entry path> के रूप में।

कदम 5. पढ़ें कि lane को अभी क्या चाहिए

lanes.create { "label": "agent/7/fix-login" }
lanes.get { "label": "agent/7/fix-login" }
lanes.export { "lane": "agent/7/fix-login" }   // header line: # composition: <hash>
lanes.approve { "lane": "agent/7/fix-login" }

lanes.get बताता है कि किसने अनुमोदन किया, कौन बाक़ी है, और हर गेट pending है या satisfied। ऐप में lane का Overview यही दिखाता है: वह किन नियमों से मेल खाती है, m में से n अनुमोदित, और गेट से मिला अनुमोदन "via gate <workflow>" के रूप में चिह्नित।

कदम 6. सटीक बदलाव को अनुमोदित करें

समीक्षक lanes.export पढ़ता है, जो # composition: <hash> से शुरू होने वाला एक यूनिफ़ाइड diff है, और फिर lanes.approve कॉल करता है। अनुमोदन उस हैश से जुड़ता है, इसलिए "a reviewer who reads the export and approves at its # composition: value has approved exactly that change." (जो समीक्षक एक्सपोर्ट पढ़कर उसके # composition: मान पर अनुमोदन करता है, उसने ठीक उसी बदलाव को अनुमोदित किया है।) बाद का कोई भी पैच, समाधान या trunk का बदलाव जो लैंड होने वाली चीज़ बदल दे, हैश बदल देता है, और पहले के अनुमोदन गिने जाने बंद हो जाते हैं। आख़िरी बदलाव के बाद अनुमोदन करें, पहले नहीं।

कदम 7. AEGIS वर्कफ़्लो को गेट के रूप में अनुमोदन करने दें

गेट सिर्फ़ उसी वर्कफ़्लो से संतुष्ट होता है। एक्ज़ीक्यूशन का टोकन tokens.mint_execution से जारी होता है, वैकल्पिक आर्ग्युमेंट workflow में गेट के नाम के साथ, 1 से 128 कैरेक्टर; फिर एक्ज़ीक्यूशन उस टोकन से lanes.approve कॉल करता है। मिलान सटीक होता है, "case included" (बड़े-छोटे अक्षर समेत)। "A person's approval, and one given through a token minted without workflow, satisfies no gate." (किसी व्यक्ति का अनुमोदन, और workflow के बिना जारी टोकन से दिया गया अनुमोदन, किसी गेट को संतुष्ट नहीं करते।) एक्ज़ीक्यूशन टोकन कॉलर के टोकन का चाइल्ड है, एक वर्कस्पेस, एक ट्री पाथ, एक lane, टूल की एक सूची और अधिकतम एक दिन तक सीमित। AEGIS by 100monkeys.ai, in beta के साथ गेट आपका एक वर्कफ़्लो है: पंक्ति उसका नाम देती है, और Carbon Forge सिर्फ़ यह जाँचता है कि उसके किसी एक्ज़ीक्यूशन ने अनुमोदन किया।

कदम 8. लैंड करें

lanes.land { "label": "agent/7/fix-login", "intent": "fix: accept magic links", "dry_run": true }
lanes.land { "label": "agent/7/fix-login", "intent": "fix: accept magic links" }

जिस लैंडिंग में अनुमोदन कम हों वह पूरी की पूरी अस्वीकार होती है, और बताती है कि क्या कम है:

Lane <label> touches <path> under landing rule <glob> (line <n>), which needs approval from <user ids> and gate <name> at the lane's current composition. Approve with lanes.approve; nothing was written.

लैंड होने पर, उसने जो अनुमोदन इस्तेमाल किए, गेट वाला भी, वे "follow its intent as Approved-by: lines" (उसके इरादे के बाद Approved-by: पंक्तियों के रूप में आते हैं), और चेंजसेट किसी भी दूसरे की तरह सील होता है। ध्यान दें: dry_run वाली लैंडिंग नियमों की जाँच नहीं करती; उसके लिए lanes.get पढ़ें।

दस्तावेज़ किन सवालों का जवाब नहीं देते

संबंधित गाइड

समीक्षा को रिकॉर्ड में रखें।