@mcptoolshop/housekeeping 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.hi.md CHANGED
@@ -10,7 +10,8 @@
10
10
 
11
11
  <p align="center">
12
12
  An operational-health warehouse for a GitHub organization.<br>
13
- One sweep, one SQLite database, findings you can argue with.
13
+ One sweep, one SQLite database, findings you can argue with,<br>
14
+ and the whole-organization view an AI agent needs to coordinate every repository.
14
15
  </p>
15
16
 
16
17
  <p align="center">
@@ -20,38 +21,95 @@
20
21
  <a href="https://mcp-tool-shop-org.github.io/housekeeping/handbook/"><img src="https://img.shields.io/badge/Handbook-read-blue" alt="Handbook" /></a>
21
22
  </p>
22
23
 
23
- एक बार स्कैन करने पर, प्रत्येक रिपॉजिटरी की सीआई स्थिति, खुली समस्याओं और पुल अनुरोधों, रिलीज़, संस्करण टैग, वर्कफ़्लो फ़ाइलों, शाखा सुरक्षा, सुरक्षा अलर्ट, लॉकफ़ाइलों और एक्शन बिलिंग को SQLite में एकत्र किया जाता है, फिर उन सभी का लिखित नियमों के अनुसार ऑडिट किया जाता है।
24
+ एक बार में सभी रिपॉजिटरी की सीआई स्थिति, खुली समस्याओं और पुल अनुरोधों, रिलीज़, संस्करण टैग, वर्कफ़्लो फ़ाइलों, शाखा सुरक्षा, सुरक्षा अलर्ट, लॉकफ़ाइलों और एक्शन बिलिंग को एकत्र करता है, फिर इसे SQLite में संग्रहीत करता है और फिर इसे लिखित नियमों के विरुद्ध ऑडिट करता है।
24
25
 
25
26
  यह एक साथ पूरी संस्था के लिए उत्तर देता है:
26
27
 
27
28
  - कौन सी डिफ़ॉल्ट शाखाएँ लाल हैं, और क्या यह एक टूटी हुई मुख्य शाखा या पुरानी इतिहास है?
28
- - कौन से पुल अनुरोध कभी भी मर्ज नहीं हो सकते, क्योंकि एक आवश्यक जाँच अवरुद्ध हो रही है?
29
- - रिपॉजिटरी की अपनी सेटिंग्स कौन से डिप्लॉय को अस्वीकार करती हैं?
29
+ - कौन से पुल अनुरोध कभी भी मर्ज नहीं हो सकते, क्योंकि एक आवश्यक जाँच कुछ भी उत्सर्जित नहीं कर रही है और उन्हें अवरुद्ध कर रही है?
30
+ - रिपॉजिटरी की अपनी सेटिंग्स कौन से परिनियोजन को अस्वीकार करती हैं?
30
31
  - `package.json`, गिट टैग और npm रजिस्ट्री कहाँ अलग हो गए हैं?
31
- - कौन से वर्कफ़्लो एक्शन लागत नियमों का उल्लंघन करते हैं, उनकी लागत क्या थी, और किन कार्यों ने इसे खर्च किया?
32
- - किन रिपॉजिटरी में ऐसी सलाहें हैं जिन्हें GitHub के अपने अलर्ट काउंट में शामिल नहीं किया गया है?
32
+ - कौन से वर्कफ़्लो एक्शन लागत नियमों का उल्लंघन करते हैं, उनकी लागत क्या थी, और किन नौकरियों ने इसे खर्च किया?
33
+ - कौन सी रिपॉजिटरी ऐसी सलाहें रखती हैं जिन्हें GitHub का अपना अलर्ट काउंट याद नहीं करता?
33
34
 
34
- यह एक ऑडिट उपकरण है, न कि एक सुधारक। यह GitHub को पढ़ता है और कुछ भी नहीं बदलता है।
35
+ यह एक ऑडिट उपकरण है, न कि एक सुधारक। यह GitHub को पढ़ता है और कुछ भी नहीं बदलता।
35
36
 
36
- ## यह इस तरह से क्यों बनाया गया है
37
+ ## प्रत्येक रिपॉजिटरी पर एक एजेंट
37
38
 
38
- | लेयर | विकल्प | तर्क |
39
+ दर्जनों रिपॉजिटरी वाली संस्था के पास कोई एक स्थान नहीं है जहाँ उसकी स्थिति संग्रहीत हो। हाउसकीपिंग वह स्थान है, और इसका एमसीपी सर्वर, `hk-mcp`, इसे एक एआई एजेंट को सौंपता है। इसके साथ, एक एजेंट पूरी संस्था के लिए समन्वयक के रूप में कार्य कर सकता है:
40
+
41
+ 1. **स्वीप।** `hk refresh` प्रत्येक रिपॉजिटरी का एक स्नैपशॉट लेता है।
42
+ 2. **ट्राइएज।** एजेंट पूछता है कि क्या लाल है, क्या अवरुद्ध है और क्या बदतर हो गया है, और ऐसे उत्तर प्राप्त करता है जो पहले से ही एक टूटी हुई मुख्य शाखा को पुरानी इतिहास से और एक अटकी हुई पुल अनुरोध को एक संघर्षपूर्ण से अलग बताते हैं।
43
+ 3. **एक लहर की योजना बनाएं।** एक `hk_sql` क्वेरी प्रत्येक रिपॉजिटरी को समान आकार के साथ ढूंढती है, इसलिए एक सुधार एक शिकार के बजाय प्रति रिपॉजिटरी एक पुल अनुरोध बन जाता है।
44
+ 4. **काम करें।** हाउसकीपिंग कभी भी नहीं लिखता। एजेंट अपने स्वयं के उपकरणों के साथ, अपनी अनुमति के तहत और आपकी समीक्षा के तहत पुल अनुरोध खोलता है।
45
+ 5. **सत्यापित करें।** फिर से स्वीप करें। निष्कर्ष चला गया है या नहीं, और दो स्नैपशॉट के बीच का परिवर्तन एक क्वेरी है।
46
+
47
+ एक एजेंट एक या दो कॉल में जिन प्रश्नों का उत्तर देता है:
48
+
49
+ - कौन सी डिफ़ॉल्ट शाखाएँ लाल हैं, और कौन सी नौकरी और चरण विफल हो गए?
50
+ - कौन से पुल अनुरोध कभी भी मर्ज नहीं हो सकते, और क्या ट्रिगर या संघर्ष को दोषी ठहराया जा सकता है?
51
+ - कौन सी रिपॉजिटरी एक उत्पादन सलाह रखती हैं जिसके लिए GitHub कोई अलर्ट नहीं दिखाता है?
52
+ - कौन से अनुसूचित वर्कफ़्लो शेड्यूल के लिए नियमों का उल्लंघन करते हैं, और कैसे?
53
+ - एक्शन की लागत क्या थी, और किस नौकरी ने इसे खर्च किया?
54
+ - पिछली स्वीप के बाद से क्या बदल गया?
55
+
56
+ | उपकरण | यह क्या उत्तर देता है |
57
+ |---|---|
58
+ | `hk_summary` | नवीनतम स्वीप के लिए कुल: रिपॉजिटरी, मुद्दे, पुल अनुरोध, वर्कफ़्लो, निष्कर्ष। |
59
+ | `hk_findings` | कोड, गंभीरता, श्रेणी या रिपॉजिटरी द्वारा निष्कर्ष; जब फ़िल्टर नहीं किया जाता है तो कोड द्वारा गणना। एक लाल मुख्य शाखा का निष्कर्ष उस नौकरी और चरण का नाम देता है जो विफल हो गया। |
60
+ | `hk_ci` | वे रिपॉजिटरी जिनकी डिफ़ॉल्ट शाखा लाल है और वे वर्कफ़्लो जो विफल हो गए; साथ ही विफल शेड्यूल, विफल पुल-अनुरोध शाखाएँ और ऐसी रिपॉजिटरी जिनमें कोई सीआई नहीं है। |
61
+ | `hk_repo` | एक पूरी रिपॉजिटरी: निष्कर्ष, वर्कफ़्लो, खुले पुल अनुरोध और मुद्दे। |
62
+ | `hk_backlog` | पूरी संस्था में खुले पुल अनुरोध या मुद्दे, सबसे पुराने पहले। |
63
+ | `hk_health` | प्रति रिपॉजिटरी एक स्वास्थ्य स्कोर, सबसे खराब पहले। |
64
+ | `hk_cost` | एक्शन खर्च, रिपॉजिटरी, वर्कफ़्लो या नौकरी द्वारा, सकल और शुद्ध अलग-अलग। |
65
+ | `hk_sql` | वेयरहाउस के विरुद्ध एक रीड-ओनली `SELECT` या `WITH` स्टेटमेंट। |
66
+ | `hk_schema` | `hk_sql` क्वेरी लिखने के लिए तालिकाएँ और कॉलम। |
67
+
68
+ प्रत्येक उत्तर नवीनतम स्नैपशॉट से आता है, जो रीड-ओनली है। एक विफल कॉल एक संरचित त्रुटि लौटाता है, कभी भी स्टैक ट्रेस नहीं।
69
+
70
+ ### इसे कनेक्ट करें
71
+
72
+ ```json
73
+ {
74
+ "mcpServers": {
75
+ "housekeeping": { "command": "hk-mcp", "env": { "HK_HOME": "/path/to/warehouse" } },
76
+ "atlas": { "command": "atlas", "args": ["mcp"] }
77
+ }
78
+ }
79
+ ```
80
+
81
+ `HK_HOME` वह निर्देशिका है जिससे आप स्वीप करते हैं। एक क्लोन से, `"command": "node", "args": ["/path/to/housekeeping/src/mcp.mjs"]` का उपयोग करें। दूसरा सर्वर [एटलस](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas) है, जो एक समय में एक रिपॉजिटरी के बारे में उसी एजेंट का उत्तर देता है (नीचे देखें)। विंडोज पर, `cmd /c` के माध्यम से वैश्विक रूप से स्थापित कमांड शुरू करें।
82
+
83
+ ## हाउसकीपिंग और एटलस
84
+
85
+ [एटलस](https://github.com/dogfood-lab/testing-os/tree/main/packages/atlas) (`@dogfood-lab/atlas`) एक रिपॉजिटरी को मैप करता है: इसके भाग, और इसके द्वार, जिसका अर्थ है कि प्रत्येक वर्कफ़्लो क्या चलाता है, प्रकाशित करता है और तैनात करता है। मानचित्र को `atlas/` के रूप में प्रतिबद्ध किया जाता है और सीआई में जाँच की जाती है। हाउसकीपिंग संस्था का दृश्य है। दोनों को एक साथ काम करने के लिए बनाया गया है।
86
+
87
+ - **प्रत्येक मानचित्र, स्वीप किया गया।** एक स्वीप प्रत्येक रिपॉजिटरी के प्रतिबद्ध मानचित्र को अन्य सभी के साथ पढ़ता है, और रिपोर्ट करता है कि किन रिपॉजिटरी में कोई नहीं है, कौन से `atlas check` कभी नहीं चलाते हैं, और किनमें बाकी संस्था द्वारा पिन किए गए इंजन के पीछे एक इंजन है।
88
+ - **जहां एक लाल रन विफल हो गया।** जब एक डिफ़ॉल्ट शाखा लाल होती है, तो निष्कर्ष उस नौकरी और चरण का नाम देता है जो विफल हो गया, और मानचित्र के माध्यम से, उस चरण द्वारा चलाया जाने वाला कमांड, ताकि मरम्मत सही फ़ाइल में शुरू हो।
89
+ - **मानचित्र से परिनियोजन तथ्य।** एक नौकरी जिस वातावरण में तैनात होती है, वह मानचित्र से लिया जाता है जहां यह एक को रिकॉर्ड करता है, इसलिए दोनों उपकरण एक वर्कफ़्लो को एक ही तरह से पढ़ते हैं।
90
+ - **पूरे बेड़े में चेतावनी।** एटलस एक वर्कफ़्लो चरण को चिह्नित करता है जो चलने से पहले विफल हो जाएगा, जैसे कि एक उपकरण जिसे नौकरी द्वारा स्थापित की तुलना में एक नए रनटाइम की आवश्यकता होती है। रिपोर्ट में ये सभी एक साथ सूचीबद्ध हैं।
91
+
92
+ दोनों सर्वरों वाले एक एजेंट "ये बारह रिपॉजिटरी अवरुद्ध हैं" (हाउसकीपिंग) से "यह वर्कफ़्लो, नौकरी और वे फ़ाइलें हैं जिन तक एक परिवर्तन पहुंचेगा" (एटलस) तक जाता है, बिना प्रत्येक रिपॉजिटरी को मैन्युअल रूप से खोले।
93
+
94
+ ## यह इस तरह क्यों आकार दिया गया है
95
+
96
+ | परत | विकल्प | तर्क |
39
97
  |---|---|---|
40
- | परिवहन | `gh` CLI | इसमें पहले से ही आपका टोकन है। उपकरण कभी भी क्रेडेंशियल संग्रहीत या मांगता नहीं है। |
41
- | संग्रह | GitHub GraphQL, पेज किया गया | एक क्वेरी एक पृष्ठ की रिपॉजिटरी के लिए मेटाडेटा, खुली समस्याएं, खुले पुल अनुरोध, रिलीज़ और फ़ाइल ट्री लौटाती है। एक ऐसा पृष्ठ जो लगातार समय समाप्त हो रहा है, उसे आधा कर दिया जाता है और उसी कर्सर से फिर से पूछा जाता है। |
98
+ | परिवहन | `gh` सीएलआई | इसमें पहले से ही आपका टोकन है। उपकरण कभी भी क्रेडेंशियल संग्रहीत या नहीं मांगता है। |
99
+ | संग्रह | GitHub GraphQL, पृष्ठबद्ध | एक क्वेरी रिपॉजिटरी के एक पृष्ठ के लिए मेटाडेटा, खुली समस्याओं, खुले पुल अनुरोधों, रिलीज़ और फ़ाइल ट्री लौटाती है। एक पृष्ठ जो समय समाप्त करना जारी रखता है, उसे आधा कर दिया जाता है और उसी कर्सर से फिर से पूछा जाता है। |
42
100
  | एक्शन रन | REST | GraphQL में कोई एक्शन सतह नहीं है। |
43
- | एक्शन लागत | बिलिंग API प्लस प्रति-कार्य अवधि | चालान में बताया गया है कि कौन सी रिपॉजिटरी है; केवल कार्यों में बताया गया है कि कौन सा वर्कफ़्लो। GitHub के `/timing` एंडपॉइंट शून्य लौटाते हैं, इसलिए प्रति-कार्य योग को फिर से बनाया जाता है और फिर चालान के साथ मिलान किया जाता है। |
44
- | रनर दरें | चालान से पढ़ें | एक बिल की गई दर सूची मूल्य से भिन्न हो सकती है, और स्रोत में एक स्थिर मान हर संख्या को गलत बताएगा। |
101
+ | कार्रवाइयों की लागत | बिलिंग एपीआई और प्रति-कार्य अवधि | चालान में यह बताया गया है कि कौन सी रिपॉजिटरी है; केवल कार्यों में यह बताया गया है कि कौन सा वर्कफ़्लो है। GitHub के `/timing` एंडपॉइंट शून्य लौटाते हैं, इसलिए प्रति-कार्य योग को फिर से बनाया जाता है और फिर चालान के साथ मिलान किया जाता है। |
102
+ | रनर दरें | चालान से पढ़ें | बिल की गई दर सूची मूल्य से भिन्न हो सकती है, और स्रोत में एक स्थिर मान हर संख्या को गलत बताएगा। |
45
103
  | भंडारण | अंतर्निहित `node:sqlite` के माध्यम से SQLite | कोई देशी बिल्ड चरण नहीं। |
46
- | सत्य का स्रोत | `data/snapshots/*.json` | कच्चा, तुलना करने योग्य और केवल जोड़ने योग्य। डेटाबेस व्युत्पन्न है: `npm run rebuild` इसे ऑफ़लाइन पुनर्निर्मित करता है। |
47
- | स्कैन लॉग | `data/sweeps.jsonl` | प्रत्येक स्कैन के लिए एक पंक्ति, जिसमें वे स्कैन भी शामिल हैं जो विफल रहे और वे स्कैन जिनमें कुछ भी नया नहीं मिला। |
104
+ | सत्य का स्रोत | `data/snapshots/*.json` | कच्चा, तुलना करने योग्य और केवल जोड़ने योग्य। डेटाबेस प्राप्त किया जाता है: `npm run rebuild` इसे ऑफ़लाइन पुनर्निर्मित करता है। |
105
+ | स्वीप लॉग | `data/sweeps.jsonl` | प्रत्येक स्वीप के लिए एक पंक्ति, जिसमें विफल स्वीप और नए कुछ भी नहीं खोजने वाले स्वीप शामिल हैं। |
48
106
 
49
107
  स्नैपशॉट अपरिवर्तनीय और योज्य होते हैं, इसलिए दो तिथियों के बीच का विचलन `JOIN` है।
50
108
 
51
- ## आवश्यकताएँ
109
+ ## आवश्यकताएं
52
110
 
53
111
  - Node.js 22.5 या बाद का संस्करण।
54
- - [GitHub CLI](https://cli.github.com/), साइन इन किया हुआ (`gh auth status`) एक ऐसे खाते के रूप में जो संगठन को पढ़ सकता है। बिलिंग और सुरक्षा अलर्ट पढ़ने के लिए संबंधित एक्सेस की आवश्यकता होती है; इसके बिना स्कैन "मापा नहीं गया" रिकॉर्ड करता है और आगे बढ़ता है। यह कभी भी गुम अनुमति को एक स्वच्छ परिणाम के रूप में रिकॉर्ड नहीं करता है।
112
+ - [GitHub CLI](https://cli.github.com/), लॉग इन (`gh auth status`) एक ऐसे खाते के रूप में जो संगठन को पढ़ सकता है। बिलिंग और सुरक्षा अलर्ट पढ़ने के लिए संबंधित एक्सेस की आवश्यकता होती है; इसके बिना स्वीप "मापा नहीं गया" रिकॉर्ड करता है और आगे बढ़ता है। यह कभी भी किसी छूटी हुई अनुमति को एक स्पष्ट परिणाम के रूप में रिकॉर्ड नहीं करता है।
55
113
  - विंडोज या लिनक्स। इसे विंडोज पर विकसित किया गया है और इसके परीक्षण CI में लिनक्स पर चलते हैं। macOS को काम करना चाहिए और इसका परीक्षण नहीं किया गया है।
56
114
 
57
115
  ## उपयोग
@@ -62,9 +120,9 @@ mkdir warehouse && cd warehouse # housekeeping keeps its data here
62
120
  hk refresh your-org # collect, load, analyze, write reports/AUDIT-<date>.md
63
121
  ```
64
122
 
65
- सेटिंग्स को बनाए रखने के लिए, उस निर्देशिका में `housekeeping.config.json` रखें (कॉन्फ़िगरेशन देखें); फिर `hk refresh` को किसी तर्क की आवश्यकता नहीं होगी।
123
+ स्वीपों के बीच सेटिंग्स को बनाए रखने के लिए, उस निर्देशिका में एक `housekeeping.config.json` रखें (कॉन्फ़िगरेशन देखें); फिर `hk refresh` को किसी तर्क की आवश्यकता नहीं है।
66
124
 
67
- या इसे क्लोन से चलाएं, जो अपने डेटा को क्लोन में रखता है:
125
+ या इसे एक क्लोन से चलाएं, जो अपने डेटा को क्लोन में रखता है:
68
126
 
69
127
  ```bash
70
128
  git clone https://github.com/mcp-tool-shop-org/housekeeping.git
@@ -91,13 +149,13 @@ hk sql "SELECT ..." # one read-only statement
91
149
  hk help # every command and flag
92
150
  ```
93
151
 
94
- एक क्लोन में जिसमें `npm link` नहीं है, प्रत्येक `hk <command>` `node src/cli.mjs <command>` होता है।
152
+ `npm link` के बिना एक क्लोन में, प्रत्येक `hk <command>` `node src/cli.mjs <command>` है।
95
153
 
96
- `npm run rebuild` डेटाबेस और रिपोर्ट को डिस्क पर पहले से मौजूद स्नैपशॉट से पुनर्निर्मित करता है, बिना किसी नेटवर्क एक्सेस के।
154
+ `npm run rebuild` डेटाबेस और रिपोर्ट को पहले से डिस्क पर मौजूद स्नैपशॉट से फिर से प्राप्त करता है, बिना किसी नेटवर्क एक्सेस के।
97
155
 
98
- एक पूर्ण स्कैन कुछ सौ API कॉल करता है। `refresh` को लूप में न चलाएं।
156
+ एक पूर्ण स्वीप कुछ सौ एपीआई कॉल करता है। `refresh` को लूप में न चलाएं।
99
157
 
100
- परिणाम मानक आउटपुट पर जाते हैं; प्रगति और त्रुटियां मानक त्रुटि पर जाती हैं। प्रत्येक त्रुटि एक कोड और एक संकेत प्रिंट करती है। निकास कोड: 0 ठीक, 1 उपयोगकर्ता त्रुटि, 2 रनटाइम त्रुटि, 3 आंशिक (स्कैन समाप्त हो गया, अंतराल के साथ)।
158
+ परिणाम मानक आउटपुट पर जाते हैं; प्रगति और त्रुटियां मानक त्रुटि पर जाती हैं। प्रत्येक त्रुटि एक कोड और एक संकेत प्रिंट करती है। निकास कोड: 0 ठीक, 1 उपयोगकर्ता त्रुटि, 2 रनटाइम त्रुटि, 3 आंशिक (स्वीप समाप्त हो गया, अंतराल के साथ)।
101
159
 
102
160
  ## कॉन्फ़िगरेशन
103
161
 
@@ -110,70 +168,70 @@ hk help # every command and flag
110
168
  }
111
169
  ```
112
170
 
113
- - `org` वह संगठन है जिसे स्कैन करना है। `hk refresh <org>` इसे ओवरराइड करता है। दोनों में से किसी के बिना, स्कैन शुरू करने से इनकार कर देगा।
114
- - `metaRepos` वे रिपॉजिटरी हैं जिनमें संगठन डिफ़ॉल्ट, संपत्ति या उपकरण होते हैं, न कि एक शिप किया गया उत्पाद। वे उन निष्कर्षों से छूट प्राप्त हैं जो केवल किसी उत्पाद के लिए समझ में आते हैं: गुम README, LICENSE और समान फ़ाइलें, कोई वर्कफ़्लो नहीं होना और कोई रिलीज़ नहीं होना।
171
+ - `org` वह संगठन है जिसका स्वीप किया जाना है। `hk refresh <org>` इसे ओवरराइड करता है। दोनों में से किसी के बिना, स्वीप शुरू करने से इनकार कर देगा।
172
+ - `metaRepos` वे रिपॉजिटरी हैं जिनमें संगठन डिफ़ॉल्ट, संपत्ति या उपकरण होते हैं, न कि कोई शिप किया गया उत्पाद। वे उन निष्कर्षों से छूट प्राप्त हैं जो केवल किसी उत्पाद के लिए समझ में आते हैं: लापता README, LICENSE और समान फ़ाइलें, कोई वर्कफ़्लो नहीं होना और कोई रिलीज़ नहीं होना।
115
173
 
116
174
  एक गलत फ़ाइल एक त्रुटि है, कभी भी एक मौन डिफ़ॉल्ट नहीं: एक अज्ञात कुंजी, एक गलत प्रकार या टूटा हुआ JSON रन को रोक देता है।
117
175
 
118
176
  एक क्लोन से चलाएं, हाउसकीपिंग `data/`, `reports/` और कॉन्फ़िगरेशन फ़ाइल को क्लोन में रखता है। एक स्थापित पैकेज के रूप में चलाएं, यह उन्हें उस निर्देशिका में रखता है जिससे आप इसे चलाते हैं, या `HK_HOME` में जब वह सेट हो।
119
177
 
120
- पर्यावरण: `HK_HOME` (जहां डेटा, रिपोर्ट और कॉन्फ़िगरेशन रहते हैं), `HK_CONFIG` (कॉन्फ़िगरेशन पथ), `HK_DB` (डेटाबेस पथ), `HK_LOG` (`silent`, `normal`, `verbose` या `debug`), `HK_COST_REPOS` और `HK_COST_BUDGET` (प्रति-कार्य लागत सीमा), `GH_PATH` (`gh` का पथ)।
178
+ पर्यावरण: `HK_HOME` (जहां डेटा, रिपोर्ट और कॉन्फ़िगरेशन मौजूद हैं), `HK_CONFIG` (कॉन्फ़िगरेशन पथ), `HK_DB` (डेटाबेस पथ), `HK_LOG` (`silent`, `normal`, `verbose` या `debug`), `HK_COST_REPOS` और `HK_COST_BUDGET` (प्रति-कार्य लागत पास पर सीमाएं), `GH_PATH` (`gh` का पथ)।
121
179
 
122
180
  ## डेटा को निजी रखें
123
181
 
124
- **एक स्कैन जो लिखता है वह संवेदनशील है। `data/` या `reports/` को सार्वजनिक रिपॉजिटरी में कमिट न करें।**
125
-
126
- एक स्नैपशॉट निजी रिपॉजिटरी के नाम और विवरण, प्रत्येक खुली सुरक्षा अलर्ट जिसमें वह पैकेज है जिसका वह उल्लेख करता है, वर्कफ़्लो फ़ाइलें और एक्शन बिलिंग रिकॉर्ड करता है। GitHub जानबूझकर एक सार्वजनिक रिपॉजिटरी की सुरक्षा अलर्ट को सभी से छिपा देता है, सिवाय इसके रखरखावकर्ताओं के; एक प्रकाशित स्नैपशॉट उस सूची को दे देगा।
127
-
128
- इस रिपॉजिटरी का `.gitignore` `data/`, `reports/` और `housekeeping.config.json` को बाहर करता है। इतिहास को बनाए रखने के लिए, जो स्नैपशॉट का बिंदु है, अपने स्वयं के एक निजी रिपॉजिटरी से उपकरण चलाएं और उन्हें वहां कमिट करें।
182
+ **एक स्वीप क्या लिखता है, यह संवेदनशील है। `data/` या `reports/` को सार्वजनिक रिपॉजिटरी में कमिट न करें।**
129
183
 
130
- ## MCP सर्वर
184
+ एक स्नैपशॉट निजी रिपॉजिटरी के नाम और विवरण, उस पैकेज के साथ प्रत्येक खुली सुरक्षा अलर्ट, वर्कफ़्लो फ़ाइलें और क्रियाओं की बिलिंग रिकॉर्ड करता है। GitHub जानबूझकर एक सार्वजनिक रिपॉजिटरी की सुरक्षा अलर्ट को उसके रखरखावकर्ताओं के अलावा सभी से छिपा देता है; एक प्रकाशित स्नैपशॉट उस सूची को दे देगा।
131
185
 
132
- `hk-mcp` (या क्लोन में `npm run mcp`) stdio के माध्यम से डेटाबेस को सेवा प्रदान करता है, इसलिए एक सहायक बिना मल्टी-मेगाबाइट स्नैपशॉट पढ़े प्रश्न पूछ सकता है:
133
-
134
- `hk_summary` · `hk_findings` · `hk_ci` · `hk_repo` · `hk_backlog` · `hk_health` · `hk_cost` · `hk_sql` · `hk_schema`
135
-
136
- ```json
137
- {
138
- "mcpServers": {
139
- "housekeeping": { "command": "hk-mcp", "env": { "HK_HOME": "/path/to/warehouse" } }
140
- }
141
- }
142
- ```
143
-
144
- `HK_HOME` वह निर्देशिका है जिससे आप डेटा लेते हैं। क्लोन से, इसके बजाय `"command": "node", "args": ["/path/to/housekeeping/src/mcp.mjs"]` का उपयोग करें।
145
-
146
- `hk_sql` एक एकल `SELECT` या `WITH` कथन स्वीकार करता है और डेटाबेस को केवल-पढ़ने के लिए खोलता है। एक विफल कॉल एक संरचित त्रुटि लौटाती है, कभी भी स्टैक ट्रेस नहीं।
186
+ इस रिपॉजिटरी का `.gitignore` `data/`, `reports/` और `housekeeping.config.json` को बाहर करता है। इतिहास को बनाए रखने के लिए, जो स्नैपशॉट का बिंदु है, अपने स्वयं के एक **निजी** रिपॉजिटरी से उपकरण चलाएं और उन्हें वहां कमिट करें।
147
187
 
148
188
  ## निष्कर्ष
149
189
 
150
190
  नियम `src/analyze.mjs` में रहते हैं। प्रत्येक नियम उस लिखित नियम का हवाला देता है जिसे वह लागू करता है, इसलिए एक निष्कर्ष को एक मानक के खिलाफ तर्क दिया जा सकता है, न कि स्वाद के खिलाफ। इस रिपॉजिटरी में शिप किए गए नियम [`rules/`](rules/) में हैं:
151
191
 
152
- - [`rules/github-actions.md`](rules/github-actions.md): पाथ फ़िल्टर, रनर, मैट्रिक्स आकार, वर्कफ़्लो फ़ाइल सीमा, समवर्तीता।
153
- - [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md): सीआई को पास होना चाहिए, शिप गेट, संस्करण।
192
+ - [`rules/github-actions.md`](rules/github-actions.md): पथ फ़िल्टर, रनर, मैट्रिक्स आकार, वर्कफ़्लो फ़ाइल सीमा, समवर्ती।
193
+ - [`rules/shipcheck-product-standards.md`](rules/shipcheck-product-standards.md): CI को पास होना चाहिए, शिप गेट, संस्करण।
154
194
  - [`rules/repo-first.md`](rules/repo-first.md): डिफ़ॉल्ट शाखा।
155
- - [`rules/atlas-map.md`](rules/atlas-map.md): प्रत्येक रिपॉजिटरी का एक प्रतिबद्ध मानचित्र, सीआई में जांचा गया।
195
+ - [`rules/atlas-map.md`](rules/atlas-map.md): प्रत्येक रिपॉजिटरी का एक कमिट किया गया मानचित्र, CI में जांचा गया।
156
196
 
157
- ये किसी एक संगठन के मानक हैं। यदि आपके मानक अलग हैं, तो नियम फ़ाइल और नियम को बदलें।
197
+ ये एक संगठन के मानक हैं। यदि आपके अलग हैं, तो नियम फ़ाइल और नियम दोनों को बदलें।
158
198
 
159
199
  नियम उन चीजों को अलग रखने का ध्यान रखते हैं जो समान दिखती हैं, क्योंकि उन्हें एक साथ मिलाने से शोर उत्पन्न होता है:
160
200
 
161
- - **एक लाल डिफ़ॉल्ट शाखा, लाल पुल-अनुरोध शाखा नहीं है।** एक विफल डिपेंडबॉट शाखा बैकलॉग है; डिफ़ॉल्ट शाखा पर एक विफल `push` रन, खराबी है। रन का इवेंट यह तय करता है कि कौन सा।
162
- - **इतिहास खराबी नहीं है।** केवल रिलीज़ के लिए ट्रिगर करने वाले वर्कफ़्लो को स्थानांतरित करने से, इसकी पिछली डिफ़ॉल्ट-शाखा विफलता हमेशा बनी रहती है। एक हटाई गई वर्कफ़्लो अपनी रन को बरकरार रखती है। न तो यह कोई सक्रिय दोष है।
163
- - **एक आवश्यक जांच, जो कुछ भी उत्सर्जित नहीं कर सकती, वह जांच नहीं है जो यहां नहीं चली।** एक कहता है कि आवश्यकता को छोड़ दें; दूसरा कहता है कि ट्रिगर को ठीक करें। दोनों मरम्मत एक-दूसरे का खंडन करते हैं।
164
- - **एक विफल रन, रद्द किया गया रन नहीं है।** `cancel-in-progress` का उद्देश्य पुराने रन को समाप्त करना है, इसलिए रद्द किए गए मिनट आमतौर पर समवर्तीता नियम के काम करने का परिणाम होते हैं।
165
- - **कुल लागत, शुद्ध लागत नहीं है।** GitHub सार्वजनिक रिपॉजिटरी को पूरी कीमत पर मापता है और उन्हें शून्य पर छूट देता है। कुल वास्तविक कंप्यूट है; शुद्ध वास्तविक धन है। उन्हें कभी भी जोड़ा नहीं जाता है।
166
- - **जो मापा नहीं गया, वह साफ नहीं है।** एक रिपॉजिटरी जिसे GitHub स्कैन नहीं कर रहा है, उसमें शून्य अलर्ट होते हैं। एक रिपॉजिटरी जिसकी लागत सीमा तक नहीं पहुंची, उसमें कोई लागत पंक्ति नहीं है। दोनों को अज्ञात के रूप में रिपोर्ट किया जाता है।
167
-
168
- गंभीरता एक स्वास्थ्य स्कोर निर्धारित करती है: गंभीर 40, उच्च 15, मध्यम 6, निम्न 2, सूचना 0, जो 100 से घटाया जाता है। स्कोर गुणवत्ता के बजाय ध्यान को रैंक करता है।
169
-
170
- [हैंडबुक](https://mcp-tool-shop-org.github.io/housekeeping/handbook/) में प्रत्येक निष्कर्ष, कमांड, त्रुटि कोड और तालिका सूचीबद्ध है।
201
+ - **एक लाल डिफ़ॉल्ट शाखा, लाल पुल-अनुरोध शाखा नहीं है।** एक विफल
202
+ डिपेंडबॉट शाखा बैकलॉग है; डिफ़ॉल्ट शाखा पर एक विफल `push` रन,
203
+ समस्या है। रन की घटना यह तय करती है कि कौन सी।
204
+ - **इतिहास समस्या नहीं है।** रिलीज़-ओनली ट्रिगर में स्थानांतरित वर्कफ़्लो,
205
+ अपनी पिछली डिफ़ॉल्ट-शाखा विफलता को हमेशा बरकरार रखता है। एक हटाई गई वर्कफ़्लो,
206
+ अपने रन को बरकरार रखती है। न तो यह कोई सक्रिय दोष है।
207
+ - **एक आवश्यक जाँच, जो कुछ भी उत्सर्जित नहीं कर सकती, वह वह जाँच नहीं है जो यहाँ नहीं चली।**
208
+ एक कहता है कि आवश्यकता को छोड़ दें; दूसरा कहता है कि ट्रिगर को ठीक करें। मरम्मत
209
+ एक-दूसरे का खंडन करते हैं।
210
+ - **एक पुल अनुरोध, जिसे ट्रिगर ने छोड़ दिया, वह संघर्षपूर्ण नहीं है।** GitHub,
211
+ संघर्षों वाले पुल अनुरोध पर कोई भी पुल-अनुरोध वर्कफ़्लो नहीं चलाता है, इसलिए इसकी छूटी हुई
212
+ जाँच, ट्रिगर के बारे में कुछ भी नहीं बताती है। उस एक को रीबेस की आवश्यकता है।
213
+ - **एक विफल रन, रद्द किया गया रन नहीं है।** `cancel-in-progress` का उद्देश्य पुराने रन को समाप्त करना है,
214
+ इसलिए रद्द किए गए मिनट आमतौर पर समवर्ती नियम के काम करने का परिणाम होते हैं।
215
+ - **कुल लागत, शुद्ध लागत नहीं है।** GitHub सार्वजनिक रिपॉजिटरी को पूरी
216
+ कीमत पर मापता है और उन्हें शून्य पर छूट देता है। कुल वास्तविक गणना है; शुद्ध वास्तविक पैसा है।
217
+ उन्हें कभी भी जोड़ा नहीं जाता है।
218
+ - **मापा नहीं गया, साफ नहीं है।** एक रिपॉजिटरी, जिसे GitHub स्कैन नहीं कर रहा है,
219
+ शून्य अलर्ट रिपोर्ट करता है। एक रिपॉजिटरी, जिस पर लागत सीमा नहीं पहुंची, उसमें कोई लागत पंक्ति नहीं है। दोनों को अज्ञात के रूप में रिपोर्ट किया जाता है।
220
+
221
+ गंभीरता एक स्वास्थ्य स्कोर निर्धारित करती है: गंभीर 40, उच्च 15, मध्यम 6, निम्न 2, सूचना 0,
222
+ जो 100 से घटाया जाता है। स्कोर गुणवत्ता के बजाय ध्यान को रैंक करता है।
223
+
224
+ [हैंडबुक](https://mcp-tool-shop-org.github.io/housekeeping/handbook/)
225
+ प्रत्येक निष्कर्ष, कमांड, त्रुटि कोड और तालिका को सूचीबद्ध करता है।
171
226
 
172
227
  ## सुरक्षा
173
228
 
174
- - **केवल पढ़ने के लिए।** कलेक्टर GraphQL क्वेरी और REST `GET` जारी करता है। यह कभी भी किसी सेटिंग को मर्ज, पुश, रिलीज़, प्रकाशित या संपादित नहीं करता है।
175
- - **कोई क्रेडेंशियल नहीं।** प्रमाणीकरण वह है जो `gh` पहले से ही रखता है। इसके बारे में कुछ भी डिस्क पर नहीं लिखा जाता है।
176
- - **कोई टेलीमेट्री नहीं।** संपर्क किए गए एकमात्र होस्ट GitHub API हैं, `gh` के माध्यम से, और संस्करण और सलाह की जानकारी के लिए npm रजिस्ट्री।
229
+ - **केवल-पढ़ने के लिए।** कलेक्टर GraphQL प्रश्नों और REST `GET` जारी करता है। यह कभी भी
230
+ मर्ज, पुश, रिलीज़, प्रकाशित या किसी सेटिंग को संपादित नहीं करता है।
231
+ - **कोई क्रेडेंशियल नहीं।** प्रमाणीकरण वह है जो `gh` पहले से ही रखता है। इसके बारे में कुछ भी
232
+ डिस्क पर नहीं लिखा जाता है।
233
+ - **कोई टेलीमेट्री नहीं।** संपर्क किए गए एकमात्र होस्ट GitHub API हैं, `gh` के माध्यम से,
234
+ और संस्करण और सलाह की खोज के लिए npm रजिस्ट्री।
177
235
  - **यह जो संग्रहीत करता है** वह संवेदनशील भाग है: "डेटा को निजी रखें" देखें।
178
236
 
179
237
  [SECURITY.md](SECURITY.md) में वर्णित अनुसार किसी भेद्यता की रिपोर्ट करें।
@@ -184,7 +242,9 @@ hk help # every command and flag
184
242
  npm test
185
243
  ```
186
244
 
187
- प्रत्येक नियम का दोनों दिशाओं में परीक्षण किया जाता है: वह आकार जो सक्रिय होना चाहिए, और पड़ोसी आकार जो सक्रिय नहीं होना चाहिए। एक अलग सत्यापनकर्ता, अपने स्वयं के परिवहन के माध्यम से, लाइव GitHub से निष्कर्षों का एक नमूना फिर से प्राप्त करता है, और जब कोई डेटाबेस या नेटवर्क नहीं होता है, तो जोर से छोड़ देता है।
245
+ प्रत्येक नियम का दोनों दिशाओं में परीक्षण किया जाता है: वह आकार जो सक्रिय होना चाहिए, और
246
+ आस-पास का आकार जो सक्रिय नहीं होना चाहिए। एक अलग सत्यापनकर्ता, लाइव GitHub से निष्कर्षों का एक नमूना,
247
+ अपने स्वयं के परिवहन के माध्यम से पुनः प्राप्त करता है, और छोड़ देता है, जोर से, जब कोई डेटाबेस या नेटवर्क नहीं होता है।
188
248
 
189
249
  ## लाइसेंस
190
250