dsh-doublecheck 0.7.0 → 0.7.2

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
@@ -1,74 +1,155 @@
1
+ <div align="center">
2
+
1
3
  # dsh-doublecheck
2
4
 
3
- > **DeepSeek Harness के लिए डिलीवरी गुणवत्ता-द्वार: आवश्यकताओं की पड़ताल करें, कार्यान्वयन का परीक्षण करें, डिलीवरी साबित करें — फिर deliverable / rework required निर्णय से हैंडऑफ़ को नियंत्रित करें।**
5
+ **DeepSeek Harness के लिए डिलीवरी गुणवत्ता-द्वार: आवश्यकताओं की पड़ताल करें, कार्यान्वयन का परीक्षण करें, डिलीवरी साबित करें — फिर deliverable / rework required निर्णय से हैंडऑफ़ को नियंत्रित करें।**
4
6
 
5
- [![version](https://img.shields.io/badge/version-0.7.0-blue)](https://github.com/PerryLink/dsh-doublecheck/releases)
6
- [![npm](https://img.shields.io/npm/v/dsh-doublecheck)](https://www.npmjs.com/package/dsh-doublecheck)
7
- [![downloads](https://img.shields.io/npm/dw/dsh-doublecheck)](https://www.npmjs.com/package/dsh-doublecheck)
8
- [![license](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
9
- [![topics](https://img.shields.io/badge/topics-dsh%20%7C%20dsh--plugin-22c55e)](https://github.com/topics/dsh-plugin)
10
- [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-doublecheck/ci.yml?branch=main)](https://github.com/PerryLink/dsh-doublecheck/actions/workflows/ci.yml)
7
+ *पहली एडिट से पहले आवश्यकताओं की पड़ताल होती है; डिलीवरी साबित की जाती है, दावा नहीं किया जाता।*
11
8
 
12
- [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) के लिए एक **इंजीनियरिंग-अनुशासन बंडल और डिलीवरी गुणवत्ता-द्वार पैनल**। एजेंट तुरंत कोड लिखना चाहते हैं; आवश्यकताएँ मान लिए जाना पसंद नहीं करतीं। `dsh-doublecheck` एक अनुशासन-चक्र स्थापित करता है जो एजेंट को **पहले संपादन से पहले आवश्यकताओं की पड़ताल करने** और **डिलीवरी का दावा करने के बजाय उसे साबित करने** के लिए बाध्य करता है — और एक **डिलीवरी द्वार पैनल** जो आवश्यकता-पड़ताल, परीक्षण-प्रमाण, diff↔आवश्यकता संगति और एक समीक्षा-निष्कर्ष को एक **deliverable / rework required** निर्णय में समेकित करता है, जो PR-तैयार markdown रिपोर्ट के रूप में प्रस्तुत होता है। पूरी तरह DSH के अपने एक्सटेंशन पॉइंट्स (स्किल रजिस्ट्री, टूल पॉलिसी पाइपलाइन, अप्रूवल सीम, उप-एजेंट और वर्कफ़्लो सीम, कमांड, सेशन प्रोजेक्शन, सेटिंग्स नेमस्पेस, प्लान मोड) पर मूल रूप से पुनः लागू, किसी उधार की प्रॉम्प्ट फ़ाइल पर नहीं। DSH `0.1.0-rc.6` के विरुद्ध परीक्षण किया गया।
9
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
10
+ [![DSH plugin](https://img.shields.io/badge/dsh-plugin-✅-green)](https://github.com/topics/dsh-plugin)
11
+ [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#)
12
+ [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-doublecheck/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-doublecheck/actions)
13
+ [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-doublecheck?label=version)](https://github.com/PerryLink/dsh-doublecheck/releases)
14
+ [![npm version](https://img.shields.io/npm/v/dsh-doublecheck)](https://www.npmjs.com/package/dsh-doublecheck)
15
+ [![npm downloads](https://img.shields.io/npm/dm/dsh-doublecheck)](https://www.npmjs.com/package/dsh-doublecheck)
13
16
 
14
- कार्यप्रणाली [obra/superpowers](https://github.com/obra/superpowers) और [TimothyVang/Grill-me](https://github.com/TimothyVang/Grill-me) से प्रेरित है। इस पैकेज का हर प्रॉम्प्ट, शब्द, उदाहरण और फ़ाइल शुरू से लिखा गया है — दोनों में से किसी भी परियोजना से कुछ भी कॉपी नहीं किया गया।
17
+ [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
15
18
 
16
- ## क्यों
19
+ </div>
17
20
 
18
- - अस्पष्ट कार्य गलत सॉफ़्टवेयर बनाते हैं। एक छोटा सा अनुरोध («मेरे लिए एक फ़ीचर बनाओ») छह अनसुलझे निर्णय छिपाता है; आज एजेंट सभी का अनुमान लगाता है और आप उस अनुमान की कीमत चुकाते हैं।
19
- - अनुशासित टीमें यही इंसानों के साथ करती हैं: आवश्यकता-समीक्षा → असफल परीक्षण → सफल परीक्षण → आत्म-समीक्षा → डिलीवरी-प्रमाण। एजेंट भी उसी चक्र के हक़दार हैं — हार्नेस द्वारा लागू, भरोसे से नहीं।
20
- - शिपिंग के लिए निर्णय चाहिए, अंदाज़ा नहीं। डिलीवरी द्वार चक्र के प्रमाण को लाल आइटमों और पुनर्कार्य सुझावों के साथ एक **deliverable / rework required** फ़ैसले में बदल देता है — वह पैनल जिसे मूल्यांकन प्लेटफ़ॉर्म अपने PR विवरण में चिपकाता है।
21
+ ---
21
22
 
22
- ## अनुशासन-चक्र
23
+ ## अनुकूलता
23
24
 
24
- ```
25
+ | सतह | स्थिति |
26
+ |---|---|
27
+ | Harness | DeepSeek Harness `0.1.0-rc.8` |
28
+ | Node | `^22.19.0 \|\| >=24.0.0` |
29
+ | प्लेटफ़ॉर्म | सभी (शुद्ध host; कोई नेटिव कोड नहीं, स्वयं का कोई सीधा नेटवर्क अनुरोध नहीं) |
30
+ | मॉडल | कोई भी (guard स्वयं कभी मॉडल नहीं बुलाता; critic और reviewer चरण harness subagent के रूप में चलते हैं) |
31
+
32
+ ## आपको क्या मिलता है
33
+
34
+ `dsh-doublecheck` दो plugin पंक्तियाँ स्थापित करता है जो एक ही टिकाऊ सत्र लॉग से पढ़ती और लागू करती हैं:
35
+
36
+ 1. **`doublecheck-grill`** — आवश्यकताओं की भट्टी: बंडल की गई `grill-requirements` skill, साथ ही मॉडल-मुखी `doublecheck_skills`, `doublecheck_spec` और `doublecheck_report` उपकरण, तथा प्रति-आयाम सत्यापन वर्कफ़्लो।
37
+ 2. **`doublecheck-guard`** — अनुशासन guard: grill द्वार, लाल/हरा साक्ष्य द्वार, प्रतिकूल समीक्षा, `/doublecheck` और `/gate` कमांड, `doublecheck.gate` सेटिंग्स नेमस्पेस, तथा चार-चरण डिलीवरी द्वार।
38
+
39
+ दोनों मिलकर **अनुशासन लूप** लागू करते हैं — *grill → design → red → green → review → verify*:
40
+
41
+ ```text
25
42
  grill ──▶ design ──▶ red ──▶ green ──▶ review ──▶ verify
26
- │ │
27
- │ (v0.1) (v0.2+) (v0.3) (v0.4)
28
- │
29
- └─ आवश्यकता-भट्टी: छह आयाम, सहमति-द्वार,
30
- संरचित spec सेशन और वर्कस्पेस में दर्ज
43
+ │
44
+ └─ छह आवश्यकता आयाम, सहमति द्वार,
45
+ संरचित spec सत्र + कार्यक्षेत्र में प्रतिबद्ध
31
46
  ```
32
47
 
33
- | चरण | अर्थ | स्थिति |
34
- |---|---|---|
35
- | **grill** | छह आवश्यकता-आयामों की पड़ताल; सहमति तक कार्यान्वयन से इनकार। | ✅ v0.1 |
36
- | **design** | `doublecheck_spec` से spec दर्ज। | ✅ v0.1 |
37
- | **red** | असफल परीक्षण अंतर साबित करता है; कार्यान्वयन संपादनों को यह लॉग में दर्ज चाहिए। | ✅ v0.2 |
38
- | **green** | संपादनों के बाद पास होने वाला परीक्षण चक्र पूरा करता है। | ✅ v0.2 |
39
- | **review** | एक फ़ॉर्क किया गया विरोधी-आलोचक spec के विरुद्ध डिलीवरी का ऑडिट करता है। | ✅ v0.3 |
40
- | **verify** | `doublecheck_report` + प्रति-आयाम सत्यापन वर्कफ़्लो डिलीवरी साबित करते हैं। | ✅ v0.4 |
41
-
42
- ## डिलीवरी द्वार (v0.7)
43
-
44
- द्वार चक्र का **उत्पाद-रूपी फ्रंट एंड** है: यह सेशन के टिकाऊ प्रमाण को एक कॉन्फ़िगर करने योग्य चार-चरण चेकलिस्ट में समेकित करता है और एक बाइनरी निर्णय देता है। हर चरण केवल सेशन लॉग को fold करता है (replay ही state है), इसलिए resume या fork के बाद द्वार रन समान रूप से फिर से निकाला जाता है।
45
-
46
- ```mermaid
47
- flowchart TD
48
- A["/gate run"] --> B["1. Requirements interrogation"]
49
- B --> C["2. Test evidence"]
50
- C --> D["3. Implementation consistency"]
51
- D --> E["4. Review conclusion"]
52
- E --> F{"any red item?"}
53
- F -- yes --> G["VERDICT: rework required"]
54
- F -- no --> H["VERDICT: deliverable"]
55
- G --> I["suggest plan-mode re-check + /gate run again"]
56
- H --> J["paste the report into the PR description"]
48
+ | चरण | अर्थ |
49
+ |---|---|
50
+ | **grill** | छह आवश्यकता आयामों की पड़ताल करें; सहमति तक कार्यान्वयन से इनकार करें। |
51
+ | **design** | तय किया गया spec `doublecheck_spec` के माध्यम से प्रतिबद्ध किया जाता है। |
52
+ | **red** | कार्यान्वयन एडिट से पहले एक असफल परीक्षण रन अंतर साबित करता है। |
53
+ | **green** | एडिट के बाद एक सफल परीक्षण रन लूप बंद करता है। |
54
+ | **review** | एक फ़ोर्क किया गया प्रतिकूल आलोचक spec के विरुद्ध डिलीवरी का ऑडिट करता है। |
55
+ | **verify** | `doublecheck_report` + प्रति-आयाम सत्यापन वर्कफ़्लो डिलीवरी साबित करते हैं। |
56
+
57
+ ## त्वरित शुरुआत
58
+
59
+ ```sh
60
+ # 1. install the bundle into your profile
61
+ dsh plugin --profile web add "github:PerryLink/dsh-doublecheck#main"
62
+
63
+ # or from npm (published releases)
64
+ dsh plugin --profile web add dsh-doublecheck
65
+
66
+ # 2. restart and verify the row
67
+ dsh --profile web --dump-config | grep -E -A3 'id: doublecheck-(grill|guard)'
57
68
  ```
58
69
 
59
- | चरण | जाँचें | प्रमाण-स्रोत | मॉडल लागत |
70
+ दोनों पंक्तियाँ (`doublecheck-grill` और `doublecheck-guard`) प्रोफ़ाइल के साथ स्वतः सक्रिय हो जाती हैं।
71
+
72
+ ## इंस्टॉल और अनइंस्टॉल
73
+
74
+ - **git चैनल** (नवीनतम `main`): `dsh plugin --profile web add "github:PerryLink/dsh-doublecheck#main"` — `prepare` स्क्रिप्ट केवल उत्पादन निर्भरताओं के साथ बिल्ड करती है।
75
+ - **npm चैनल** (प्रकाशित रिलीज़): `dsh plugin --profile web add dsh-doublecheck`।
76
+ - **tarball चैनल**: इस repo में `pnpm pack`, फिर `dsh plugin --profile web add ./dsh-doublecheck-<version>.tgz`।
77
+ - **अनइंस्टॉल**: `dsh plugin --profile web remove dsh-doublecheck` (या प्रोफ़ाइल पैच से पंक्तियाँ हटाएँ)।
78
+
79
+ बिना कॉन्फ़िगरेशन वाले सख्त मोड के लिए (हर द्वार `block` तीव्रता पर चालू, द्वार कवरेज आवश्यक), bundle पैच के ऊपर शामिल ओवरले लागू करें: `dsh --profile web --patch ./node_modules/dsh-doublecheck/strict.patch.yml`।
80
+
81
+ ## कॉन्फ़िगरेशन
82
+
83
+ सभी ट्यून करने योग्य चीज़ें Schemastery `Config` फ़ील्ड हैं (cordis.yml से बदलने योग्य)। id-लक्षित ओवरराइड पूरी पंक्ति बदल देता है — आपको जो भी कुंजी चाहिए उसे दोबारा घोषित करें। `cordis.patch.yml` हर कुंजी को इनलाइन दस्तावेज़ित करता है; Schema डिफ़ॉल्ट ही ट्यूनिंग डिफ़ॉल्ट का एकमात्र स्रोत हैं।
84
+
85
+ | कुंजी | डिफ़ॉल्ट | अर्थ |
86
+ |---|---|---|
87
+ | `specFile` | `'doublecheck-spec.md'` | प्रतिबद्ध spec markdown के लिए कार्यक्षेत्र फ़ाइल (grill पंक्ति)। |
88
+ | `reportFile` | `'doublecheck-report.md'` | डिलीवरी रिपोर्ट के लिए कार्यक्षेत्र फ़ाइल (grill पंक्ति)। |
89
+ | `reportVerify` | `true` | डिफ़ॉल्ट रूप से सत्यापन वर्कफ़्लो चलाएँ (grill पंक्ति)। |
90
+ | `verifyProvider` | `'fork'` | प्रति-आयाम जाँचकर्ताओं के लिए subagent प्रदाता (grill पंक्ति)। |
91
+ | `verifyMode` | `'all'` | `all` = प्रति आयाम एक समानांतर जाँचकर्ता; `single` = एक संयुक्त जाँचकर्ता (grill पंक्ति)। |
92
+ | `intensity` | `'remind'` | grill, लाल/हरा और समीक्षा द्वारों की प्रवर्तन शक्ति (`remind` / `warn` / `block`)। |
93
+ | `enableByDefault` | `true` | बिना `/doublecheck on\|off` रिकॉर्ड वाले सत्रों के लिए मास्टर स्विच। |
94
+ | `language` | `'en'` | इंजेक्ट किए गए अनुस्मारक/अस्वीकार/समीक्षा/द्वार गद्य की भाषा (`en` / `zh`)। |
95
+ | `guardTools` | `['edit', 'write']` | दोनों द्वारों द्वारा निगरानी किए जाने वाले म्यूटेशन उपकरण नाम। |
96
+ | `vagueTaskMaxChars` | `200` | इससे लंबे कार्य कभी अस्पष्ट नहीं माने जाते। |
97
+ | `remindOnce` | `true` | प्रत्येक अनुस्मारक प्रति सत्र अधिकतम एक बार इंजेक्ट करें (रीस्टार्ट के बाद भी टिकाऊ)। |
98
+ | `testToolNames` | `['bash', 'pwsh']` | शेल उपकरण नाम जो परीक्षण चला सकते हैं। |
99
+ | `testCommandPatterns` | *(pnpm/npm/yarn/bun test, pytest, go/cargo/make test, node --test, deno test, uv run pytest)* | किसी कमांड को परीक्षण रन गिने जाने के लिए मेल खाने वाले regex। |
100
+ | `testFilePatterns` | *(परीक्षण dirs, `*.test.*` / `*.spec.*`)* | परीक्षण फ़ाइलों की पहचान करने वाले regex — हमेशा संपादन योग्य, लाल द्वार से मुक्त। |
101
+ | `modules.grill` | `true` | बंद करने पर grill द्वार अक्षम हो जाता है। |
102
+ | `modules.tdd` | `true` | चालू करने पर लाल/हरा साक्ष्य द्वार सक्षम होते हैं। |
103
+ | `modules.adversary` | `false` | चालू करने पर हरे पर फ़ोर्क किए गए आलोचक समीक्षा सक्षम होती है। |
104
+ | `adversaryModel` | `null` | आलोचक मॉडल मार्ग; `null` = मुख्य मॉडल स्वयं समीक्षा करता है। |
105
+ | `adversaryProvider` | `'fork'` | वह subagent प्रदाता जिस पर आलोचक चलता है। |
106
+ | `adversaryMaxFindings` | `5` | सत्र में इंजेक्ट किए गए निष्कर्षों की सीमा (1–20)। |
107
+ | `adversaryTools` | `['read', 'glob', 'grep']` | आलोचक उपकरण अनुमति-सूची; इसे केवल-पढ़ने योग्य रखें। |
108
+ | `adversaryTimeoutMs` | `120000` | एक आलोचक रन के लिए कठोर समय बजट। |
109
+ | `gate.enabled` | `true` | द्वार पैनल और टर्न-सीमा लाल सूचना के लिए मास्टर स्विच। |
110
+ | `gate.planSuggestion` | `true` | लाल रिपोर्टों में प्लान-मोड पुनः-जाँच सुझाव जोड़ें। |
111
+ | `gate.reportFile` | `'gate-report.md'` | द्वार रिपोर्ट के लिए कार्यक्षेत्र फ़ाइल। |
112
+ | `gate.requirements.checklist` | *(छह spec-आयाम प्रश्न)* | प्लग करने योग्य मुख्य-प्रश्न सूची: `{ id, question, specDimension, required }`। |
113
+ | `gate.requirements.minConfirmed` | `6` | न्यूनतम अनिवार्य प्रश्न जिन्हें पास करना होगा (1..अनिवार्य संख्या)। |
114
+ | `gate.requirements.interrogateTool` | `'ask_user_question'` | वह उपकरण नाम जिसकी कॉलें पूछताछ साक्ष्य गिनी जाती हैं। |
115
+ | `gate.tests.requirePassingRun` | `true` | नवीनतम परीक्षण रन का पास न होना (या अनुपस्थित) लाल बत्ती है। |
116
+ | `gate.tests.allowFailingRuns` | `0` | नवीनतम हरे के बाद लाल से पहले अनुमत असफल रन। |
117
+ | `gate.tests.requireCoverage` | `false` | चालू करने पर परीक्षण आउटपुट में कवरेज साक्ष्य आवश्यक। |
118
+ | `gate.tests.minCoveragePct` | `80` | न्यूनतम कवरेज प्रतिशत (0–100)। |
119
+ | `gate.consistency.*` | `provider: 'fork'`, `model: null`, `tools: ['read','glob','grep']`, `timeoutMs: 120000`, `maxFindings: 5` | स्थानीय संगति समीक्षक के नॉब (`model: null` = मुख्य मॉडल)। |
120
+ | `gate.review.engine` | `'auto'` | `auto` = उपस्थित होने पर dsh-auto-review के निर्णय रिकॉर्ड, अन्यथा स्थानीय समीक्षक; `local` = हमेशा स्थानीय। |
121
+ | `gate.review.provider` | `'fork'` | स्थानीय समीक्षा समीक्षक का प्रदाता (इसके `model`/`tools`/`timeoutMs`/`maxFindings` `gate.consistency.*` से मेल खाते हैं)। |
122
+
123
+ गलत कॉन्फ़िगरेशन लोड पर ज़ोर से विफल होता है: अमान्य regex, खाली या दोहराई गई नाम सूचियाँ, सीमा से बाहर थ्रेशोल्ड और दोहराए गए सूची id चुपचाप कुछ न करने के बजाय त्रुटि फेंकते हैं। `strict.patch.yml` सभी-द्वार-अवरोध ओवरले है जो guard पंक्ति को `intensity: block`, सभी मॉड्यूल चालू और कवरेज आवश्यकता सक्षम करके दोबारा घोषित करता है।
124
+
125
+ ## उपकरण और सतहें
126
+
127
+ | सतह | प्रकार | नोट्स |
128
+ |---|---|---|
129
+ | `doublecheck_skills` | उपकरण | skill रजिस्ट्री इंटरफ़ेस के माध्यम से पैकेज की चार बंडल skills को सूचीबद्ध और लोड करता है। |
130
+ | `doublecheck_spec` | उपकरण | छह-आयाम spec को सत्र लॉग और कार्यक्षेत्र markdown कॉपी में प्रतिबद्ध करता है। |
131
+ | `doublecheck_report` | उपकरण | अनुशासन साक्ष्य को डिलीवरी रिपोर्ट में मोड़ता है (वैकल्पिक प्रति-आयाम सत्यापन वर्कफ़्लो)। |
132
+ | `/doublecheck status\|report\|on\|off` | कमांड | स्विच, मॉड्यूल, तीव्रता, चरण तथ्य, मुड़ी हुई रिपोर्ट, और टिकाऊ on/off ओवरराइड। |
133
+ | `/gate status\|run\|config` | कमांड | लाइव सूची प्रगति, तय deliverable/rework रिपोर्ट, और प्रभावी कॉन्फ़िग। |
134
+ | `grill-requirements`, `red-green-tdd`, `delivery-review`, `delivery-proof` | skill | सभी छह लूप चरणों को कवर करने वाली बंडल अनुशासन skills। |
135
+ | `doublecheck.gate` | सेटिंग्स नेमस्पेस | प्लग करने योग्य सूची, सेटिंग्स-सक्षम UI को उजागर (`expose: true`, `applies: restart`)। |
136
+ | `strict.patch.yml` | ओवरले | `block` तीव्रता पर हर द्वार चालू और कवरेज आवश्यकता, एक पैच परत में। |
137
+ | `dsh-doublecheck/invariant` | सहयोगी पंक्ति | host `invariants` रजिस्ट्री के माध्यम से पैकेज-स्वामित्व वाले लेखन-पथ विरोधाभासों की रिपोर्ट करता है। |
138
+
139
+ ## द्वार चरण
140
+
141
+ डिलीवरी द्वार सत्र के टिकाऊ साक्ष्य को एक कॉन्फ़िगर करने योग्य चार-चरण सूची में एकत्र करता है और एक **deliverable / rework required** निर्णय तय करता है। हर चरण केवल सत्र लॉग को मोड़ता है (रीप्ले ही स्थिति है), इसलिए एक रन रिज़्यूम या फ़ोर्क के बाद समान रूप से पुनः व्युत्पन्न होता है।
142
+
143
+ | चरण | जाँचें | साक्ष्य स्रोत | मॉडल लागत |
60
144
  |---|---|---|---|
61
- | **आवश्यकता-पड़ताल** | कॉन्फ़िगर करने योग्य प्रमुख-प्रश्न चेकलिस्ट, आइटम-दर-आइटम पुष्ट (डिफ़ॉल्ट रूप से छह spec-आयाम प्रश्न)। | दर्ज `doublecheck_spec` + `ask_user_question` कॉल। | कोई नहीं |
62
- | **परीक्षण-प्रमाण** | नवीनतम रन का रंग, green के बाद असफल रन, वैकल्पिक कवरेज-सीमा। | सेशन लॉग में शेल परीक्षण रन (`[exit code: N]`, कवरेज प्रतिशत)। | कोई नहीं |
63
- | **कार्यान्वयन संगति** | diff ↔ आवश्यकता मैपिंग: हर संपादन को एक spec-आयाम की पूर्ति करनी चाहिए। | स्थानीय फ़ॉर्क किया गया समीक्षक (संरचित निष्कर्ष, read-only टूल)। | एक उप-एजेंट |
64
- | **समीक्षा-निष्कर्ष** | डिलीवरी फ़ैसला। `engine: auto` **dsh-auto-review** के टिकाऊ फ़ैसले-रिकॉर्ड तब उपभोग करता है जब वे मौजूद हों और अन्यथा स्थानीय समीक्षक पर उतर आता है; `engine: local` हमेशा स्थानीय समीक्षक का उपयोग करता है। | `autoReview/verdict` / `autoReview/rejection` इवेंट, या स्थानीय फ़ॉर्क समीक्षक। | एक उप-एजेंट (local) |
145
+ | आवश्यकता पूछताछ | मुख्य-प्रश्न सूची एक-एक करके पुष्ट (डिफ़ॉल्ट रूप से छह spec-आयाम प्रश्न) | प्रतिबद्ध `doublecheck_spec` + `ask_user_question` कॉलें | कोई नहीं |
146
+ | परीक्षण साक्ष्य | नवीनतम रन रंग, हरे के बाद असफल रन, वैकल्पिक कवरेज थ्रेशोल्ड | सत्र लॉग में शेल परीक्षण रन (`[exit code: N]`, कवरेज प्रतिशत) | कोई नहीं |
147
+ | कार्यान्वयन संगति | diff ↔ आवश्यकता मैपिंग: हर एडिट को किसी spec आयाम की सेवा करनी चाहिए | स्थानीय फ़ोर्क समीक्षक (संरचित निष्कर्ष, केवल-पढ़ने वाले उपकरण) | एक subagent |
148
+ | समीक्षा निष्कर्ष | डिलीवरी निर्णय; `engine: auto` उपस्थित होने पर dsh-auto-review के टिकाऊ निर्णय रिकॉर्ड का उपभोग करता है, अन्यथा स्थानीय समीक्षक | `autoReview/verdict` / `autoReview/rejection` इवेंट, या स्थानीय फ़ोर्क समीक्षक | एक subagent (स्थानीय) |
65
149
 
66
- - **लाल बत्तियाँ** असफल जाँचें हैं: spec ग़ायब, नवीनतम परीक्षण रन असफल, न्यूनतम से कम कवरेज, बिना-मैप संपादन, अस्वीकृत engine कॉल, blocker/major समीक्षा-निष्कर्ष। हर लाल आइटम में पुनर्कार्य सुझाव होता है।
67
- - **चेतावनियाँ और skips निर्णय कभी नहीं बदलते**: छोड़ी गई समीक्षा रिपोर्ट को ईमानदार रखती है ("not reviewed") बिना लाल बत्ती गढ़े — दावों के लिए fail-closed, प्रमाण के लिए कभी नहीं।
68
- - **प्लान मोड और अनुमोदन**: पुनर्कार्य फ़ैसला काम को प्लान मोड में फिर खोलने का सुझाव देता है (रिपोर्ट बैनर, `/gate status` पैनल और प्रति-सेशन एक बार टर्न सूचना में)। नीचे के अनुशासन-द्वार अपना `warn`/`block` अप्रूवल-चेन प्रवर्तन बनाए रखते हैं; द्वार स्वयं परामर्शी है।
69
- - **निर्माण से ही ऑडिट-सुरक्षित**: रिपोर्ट केवल गणनाएँ, ids और फ़ैसले दर्ज करती हैं — कोई फ़ाइल सामग्री या सेशन पाठ नहीं। मॉडल-निर्मित निष्कर्ष-पाठ संग्रहीत या दिखाए जाने से पहले एक गुप्त redactor (क्लाउड कुंजियाँ, टोकन, निजी-कुंजी ब्लॉक, पासवर्ड असाइनमेंट, लंबी hex/base64 शृंखलाएँ) से गुज़रते हैं। निपटा हुआ राज्य टिकाऊ `doublecheck/gate` सेशन इवेंट और वर्कस्पेस `gate-report.md` पर सवार होता है।
150
+ लाल बत्तियाँ असफल जाँचें हैं (अनुपस्थित spec, असफल नवीनतम रन, न्यूनतम से कम कवरेज, अनमैप एडिट, blocker/major निष्कर्ष) — हर एक पुनः-कार्य सुझाव रखता है। चेतावनियाँ और छोड़े जाने कभी निर्णय नहीं बदलते। द्वार [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) को कमज़ोर निर्भरता के रूप में एकीकृत करता है: `review.engine: auto` उपस्थित होने पर उसके निर्णय रिकॉर्ड मोड़ता है और अन्यथा स्थानीय समीक्षक पर घट जाता है; द्वार कभी अनुमोदन अनुरोध संश्लेषित नहीं करता।
70
151
 
71
- ### उदाहरण रिपोर्ट
152
+ ## उदाहरण रिपोर्ट
72
153
 
73
154
  `/gate run` यह markdown लौटाता है — इसे PR विवरण में चिपकाएँ:
74
155
 
@@ -107,371 +188,71 @@ flowchart TD
107
188
  - counts, ids, and verdicts only: no file contents or session text are embedded, and recognized secrets are redacted.
108
189
  ````
109
190
 
110
- ### dsh-auto-review पर कमज़ोर निर्भरता
111
-
112
- द्वार [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) के साथ **"engine होने पर उसका उपयोग करें"** के रूप में जुड़ता है, कभी कठोर निर्भरता के रूप में नहीं:
113
-
114
- - `review.engine: auto` (डिफ़ॉल्ट) सेशन लॉग से engine के टिकाऊ फ़ैसले-रिकॉर्ड (`autoReview/verdict` / `autoReview/rejection`) fold करता है — इस सेशन की अप्रूवल-चेन समीक्षाओं पर engine के वास्तविक निष्कर्ष। अस्वीकृत या उच्च-जोखिम कॉल लाल आइटम बन जाते हैं।
115
- - कोई रिकॉर्ड नहीं (engine स्थापित नहीं, या इस सेशन में कुछ भी उसे ट्रिगर नहीं किया) → चरण स्थानीय फ़ॉर्क समीक्षक पर उतर आता है और कारण को चेतावनी-जाँच पर नामित करता है: `dsh-auto-review is not installed` / `dsh-auto-review is installed but has no verdict records in this session`।
116
- - द्वार **कभी अनुमोदन अनुरोध नहीं गढ़ता**: वह शृंखला मानव तक पहुँच सकती है। engine के अपने रिकॉर्ड ही प्रमाण हैं; `engine: local` इसे पूरी तरह छोड़ देता है।
117
-
118
- ### सेटिंग्स सतह
119
-
120
- प्लग करने योग्य चेकलिस्ट Schema-मान्य config है (`gate.*` guard पंक्ति में) और अतिरिक्त रूप से **`doublecheck.gate` सेटिंग्स नेमस्पेस** (`expose: true`, `applies: restart`) के रूप में पंजीकृत होती है जब harness सेटिंग्स सेवा माउंट हो — ताकि सेटिंग्स-सक्षम UI बिना profile हाथ से संपादित किए चेकलिस्ट पढ़ और संपादित कर सकें।
121
-
122
- ## विशेषताएँ
123
-
124
- - 🔥 **`grill-requirements` स्किल** — Agent Skills प्रारूप में पैक की गई स्किल, जो DSH की मूल `ask_user_question` UI से कार्य की छह आयामों (**लक्ष्य, दायरा, स्वीकृति-मानदंड, विफलता-स्थितियाँ, प्राथमिकताएँ, निषेध**) पर पड़ताल करती है, सहमति तक कोड लिखने से इनकार करती है और अनुबंध दर्ज करती है।
125
- - 🧰 **पूरे चक्र के लिए चरण-स्किल्स** — `red-green-tdd` (असफल परीक्षण लिखें, red चलाएँ, लागू करें, green चलाएँ), `delivery-review` (green के बाद spec के विरुद्ध प्रतिकूल आत्म-समीक्षा) और `delivery-proof` (प्रमाण को डिलीवरी रिपोर्ट में समेकित करें और पूर्णता घोषित करने से पहले डिलीवरी द्वार पार करें) `grill-requirements` से जुड़ गए: छहों चरणों में मॉडल-मार्गदर्शन है, सिर्फ़ पहले में नहीं।
126
- - 📜 **`doublecheck_spec` टूल** — सहमत spec को सेशन लॉग में दर्ज करता है और वर्कस्पेस में markdown प्रति लिखता है, ताकि अनुबंध बातचीत के बाद भी बचा रहे। खाली या केवल-व्हाइटस्पेस आयाम कमिट पर अस्वीकार होते हैं (v0.6): spec गिनने से पहले grill को छहों आयाम निपटाने होंगे।
127
- - 🔄 **कार्य-बदलाव पर फिर grill** — दर्ज spec अपने ही कार्य को कवर करता है: नवीनतम spec के बाद उपयोगकर्ता का नया सीधा अनुरोध उस फ़ॉलो-अप के लिए grill द्वार फिर खोल देता है, पुराने अनुबंध को चुपचाप विरासत में लेने के बजाय।
128
- - 🛡️ **अनुशासन गार्ड** — टूल पॉलिसी पाइपलाइन पर एक नरम द्वार। अस्पष्ट कार्य + spec नहीं + `edit`/`write` की ओर बढ़ना → `intensity` के अनुसार **याद दिलाना**, **मानव अनुमोदन माँगना** या **रोकना**।
129
- - 🟥🟩 **Red/green प्रमाण-द्वार** (`modules.tdd`) — सेशन लॉग पर कड़ी जाँचें: कार्यान्वयन संपादन के लिए पिछले पास होने वाले परीक्षण के बाद से एक **असफल परीक्षण लॉग में दर्ज** होना चाहिए (परीक्षण फ़ाइलें लिखना हमेशा अनुमत है — red चरण ऐसे ही घटता है), और जो टर्न संपादनों के साथ पर बिना किसी पास होने वाले परीक्षण के समाप्त होता है, उसमें green अनुस्मारक इंजेक्ट होता है। कस्टम guard टूल बॉक्स से बाहर काम करते हैं: द्वार `file_path` और `path` दोनों argument-कुंजियाँ पढ़ते हैं, और जो कॉल कोई फ़ाइल नहीं बताती वह कार्यान्वयन संपादन नहीं मानी जाती।
130
- - 👁️ **विरोधी-समीक्षा** (`modules.adversary`) — जब डिलीवरी green पर पहुँच जाती है, तब एक फ़ॉर्क किया गया आलोचक उप-एजेंट (DSH का मूल उप-एजेंट सीम, डिफ़ॉल्ट `fork` provider) प्रतिकूल रुख़ के साथ दर्ज spec के विरुद्ध सेशन का ऑडिट करता है और blocker-प्रथम क्रम में संरचित निष्कर्ष लौटाता है। `remind` आलोचना इंजेक्ट करता है; `warn`/`block` इसके अलावा एक राउंड चलाकर मॉडल से निष्कर्षों का उत्तर दिलवाते हैं। `adversaryModel` आलोचक को अलग मॉडल पर भेजता है; आलोचक की टूल allowlist डिफ़ॉल्ट रूप से read-only है। निष्कर्ष टिकाऊ `doublecheck-review` संदेश-स्रोत पर सवार होते हैं। आलोचक के निपटने के बाद समीक्षा फिर सक्रिय हो जाती है: नवीनतम समीक्षा-रिकॉर्ड के बाद कार्यान्वयन संपादन अगला राउंड चलाते हैं, और टर्न रद्द करने पर चालू आलोचक बाधित होता है।
131
- - 🚦 **डिलीवरी गुणवत्ता-द्वार** (v0.7) — ऊपर की कॉन्फ़िगर करने योग्य चार-चरण चेकलिस्ट: आवश्यकता-पड़ताल (प्रमुख प्रश्न आइटम-दर-आइटम पुष्ट), परीक्षण-प्रमाण (रन का रंग, असफल मामले, कवरेज-सीमा), कार्यान्वयन संगति (स्थानीय समीक्षक द्वारा diff ↔ आवश्यकता मैपिंग) और समीक्षा-निष्कर्ष (ईमानदार स्थानीय गिरावट के साथ dsh-auto-review फ़ैसले-रिकॉर्ड)। एक **deliverable / rework required** निर्णय, पुनर्कार्य सुझावों वाले लाल आइटम, लाल पर प्लान-मोड पुनः-जाँच सुझाव, टर्न-सीमा लाल सूचना (छोटी, प्रति सेशन एक बार) और PR-तैयार markdown रिपोर्ट।
132
- - ⌨️ **`/gate` सेशन कमांड** — `status` लाइव चेकलिस्ट प्रगति दिखाता है (नियतात्मक चरण वहीं fold होते हैं; समीक्षक चरण नवीनतम रन दिखाते हैं), `run` पूरा द्वार निपटाता है और रिपोर्ट लौटाता है, `config` प्रभावी चेकलिस्ट और सीमाएँ दिखाता है।
133
- - 🌐 **पूरी तरह स्थानीयकृत मॉडल सतह** — पैकेज द्वारा इंजेक्ट या उत्तर दिए गए हर मॉडल-दृश्य वाक्य (अनुस्मारक, अस्वीकृति/पूछताछ फ़ीडबैक, समीक्षा-steering, द्वार सूचनाएँ, स्विच सूचनाएँ, `/doublecheck` और `/gate` उत्तर, समीक्षक के कार्य-प्रॉम्प्ट) `language: 'en' | 'zh'` का सम्मान करते हैं; वर्कस्पेस spec/report/gate दस्तावेज़ अपने स्थिर अंग्रेज़ी शीर्षक और ऑडिट ids रखते हैं।
134
- - 📊 **Doublecheck रिपोर्ट + सत्यापन वर्कफ़्लो** (`doublecheck_report`, v0.4) — सेशन के अनुशासन-प्रमाण (spec, red/green समयरेखा, समीक्षा-निष्कर्ष, संपादन) को एक डिलीवरी रिपोर्ट में समेकित करता है, जिसमें व्युत्पन्न निर्णय होता है (`grill → draft → red → green → objections/verified → proven/challenged/unverified`), वर्कस्पेस में लिखी जाती है। `verify` के साथ, प्रति-आयाम जाँचकर्ता DSH के वर्कफ़्लो सीम से चलते हैं (`verifyMode: all` हर आयाम के लिए एक समानांतर जाँचकर्ता लॉन्च करता है; `single` एक संयुक्त जाँचकर्ता चलाता है) और उनके निर्णय रिपोर्ट में समाहित होते हैं — `proven` के लिए हर आयाम का निर्णय ज़रूरी है।
135
- - 🚦 **डिलीवरी द्वार** — टर्न-सीमा पर, जो डिलीवरी बिना दर्ज `doublecheck_report` के green पर पहुँची है, उसे पूर्णता घोषित करने से पहले रिपोर्ट-अपेक्षित अनुस्मारक मिलता है; सफल रिपोर्ट चरण को `verify` पर बढ़ा देती है।
136
- - 🔁 **टिकाऊ स्थिति** — मॉडल को दिखने वाली हर चीज़ (spec, अनुस्मारक, अस्वीकृति-फ़ीडबैक, समीक्षा-निष्कर्ष, द्वार रन, `/doublecheck on|off` स्विच) सेशन लॉग में दर्ज होती है; द्वारों के निर्णय केवल लॉग से निकलते हैं (`tool/call` + `tool/result`, Code Mode उप-प्रेषण सहित), इसलिए पुनः आरंभ या फ़ॉर्क की गई सेशन भी वैसा ही व्यवहार करती हैं। `remindOnce` भी टिकाऊ है: जिस सेशन को अनुस्मारक मिल चुका, उसे दोबारा कभी नहीं मिलता, रीस्टार्ट के बाद भी। स्विच-fold इंक्रीमेंटल snapshot पर चलता है, इसलिए लंबी सेशनों में प्रति टूल-कॉल O(नए इवेंट) ही खर्च होता है।
137
- - ⌨️ **`/doublecheck` सेशन कमांड** — `status` प्रभावी स्विच, कॉन्फ़िगर किए मॉड्यूल, प्रवर्तन-तीव्रता, folded चरण-तथ्य (spec, परीक्षण-रंग, समीक्षा, संपादन-संख्या) और नवीनतम द्वार-फ़ैसला बताता है; `report` डिलीवरी रिपोर्ट वहीं fold करता है; `on|off` टिकाऊ `doublecheck/state` ओवरराइड लिखता है और स्विच-सूचना इंजेक्ट करता है।
138
- - 📚 **`doublecheck_skills` टूल** — आधिकारिक स्किल-रजिस्ट्री सीम से पैकेज की स्किल्स सूचीबद्ध व लोड करता है।
139
- - 🔒 **सख़्त overlay** — `strict.patch.yml` एक patch परत में सभी द्वारों को `block` तीव्रता पर चालू करता है और कवरेज आवश्यकता (80%) सक्षम करता है (पैकेज के साथ शिप होता है)।
140
- - 🧩 **स्वतंत्र invariant साथी** — `dsh-doublecheck/invariant` पंक्ति एक वास्तविक उप-पथ निर्यात है: guard लोड किए बिना host के `invariants` रजिस्ट्री से पैकेज-स्वामित्व वाले लेखन-पथ विरोधाभासों (spec/report/review/gate आकार और फ़ैसला-संगति) की रिपोर्ट करती है।
141
-
142
- ## डेमो
143
-
144
- `intensity: block` और सभी द्वार सक्षम के साथ एक वास्तविक headless रन, टिकाऊ सेशन लॉग से दर्ज की गई ट्रांसक्रिप्ट:
145
-
146
- ```sh
147
- dsh --profile demo headless "把这个项目里最慢的代码直接改快,别问我任何问题,直接改文件。"
148
- ```
149
-
150
- 1. **grill** पहले संपादन को रोकता है — कोई spec दर्ज नहीं:
151
- `Error: Blocked by the dsh-doublecheck requirements guard: the task statement is vague and no doublecheck_spec exists for this session.`
152
- 2. मॉडल spec (`doublecheck_spec`) दर्ज करता है, एक असफल परीक्षण लिखता है (परीक्षण फ़ाइलें हमेशा संपादन-योग्य होती हैं) और उसे चलाता है — लॉग `[exit code: 1]` दर्ज करता है, red चरण।
153
- 3. कार्यान्वयन संपादन अब पास होते हैं; बाद का रन `4 passed` दर्ज करता है, green चरण।
154
- 4. फ़ॉर्क किया गया आलोचक डिलीवरी का ऑडिट करता है; उसके गंभीरता-टैग वाले निष्कर्ष इंजेक्ट होते हैं, और `warn`/`block` एक राउंड चलाते हैं ताकि मॉडल उनका उत्तर दे।
155
- 5. `doublecheck_report` सब कुछ एक markdown रिपोर्ट में समाहित कर देता है, जिसमें व्युत्पन्न निर्णय होता है — `proven` जब हर प्रति-आयाम सत्यापन जाँच पास होती है, `challenged` जब कोई जाँचकर्ता आपत्ति करता है।
156
- 6. **`/gate run`** चार-चरण चेकलिस्ट को **deliverable / rework required** निर्णय में निपटाता है; लाल फ़ैसला पुनर्कार्य सुझावों के साथ लाल आइटम सूचीबद्ध करता है और प्लान-मोड पुनः-जाँच का सुझाव देता है।
157
-
158
- ## स्थापना
159
-
160
- ```sh
161
- dsh plugin --profile <name> add dsh-doublecheck
162
- dsh --profile <name> --dump-config # "# == dsh-doublecheck" परत दिखनी चाहिए
163
- ```
164
-
165
- दोनों प्लगइन पंक्तियाँ profile के साथ अपने आप सक्रिय होती हैं। tarball से भी:
166
-
167
- ```sh
168
- pnpm pack
169
- dsh plugin --profile <name> add ./dsh-doublecheck-0.7.0.tgz
170
- ```
171
-
172
- git से स्थापना के लिए npm की ज़रूरत नहीं:
173
-
174
- ```sh
175
- dsh plugin --profile <name> add "github:PerryLink/dsh-doublecheck#v0.7.0"
176
- ```
177
-
178
- ज़ीरो-कॉन्फ़िगरेशन सख़्त मोड (सभी द्वार चालू, `block` तीव्रता, द्वार कवरेज आवश्यक) के लिए, bundle patch के ऊपर शिप किया गया overlay लगाएँ:
179
-
180
- ```sh
181
- dsh --profile <name> --patch ./node_modules/dsh-doublecheck/strict.patch.yml
182
- ```
183
-
184
- ## अनइंस्टॉल
185
-
186
- ```sh
187
- dsh plugin --profile <name> remove dsh-doublecheck
188
- ```
189
-
190
- पैकेज रखकर सिर्फ़ एक पंक्ति बंद करने के लिए: profile के `cordis.patch.yml` में उस पंक्ति को id से ओवरराइड कर `disabled: true` करें (`doublecheck-grill` / `doublecheck-guard`)।
191
-
192
- ## संगतता
193
-
194
- - `0.1.0-rc.6` peers (`@deepseek-ai/cordis ^4.0.1`) के विरुद्ध सत्यापित; अंतिम सत्यापन 2026-08-14 (Windows + Node 22)।
195
- - टिकाऊ सत्र-लेखन (`/doublecheck on|off` → `doublecheck/state`, `/gate run` → `doublecheck/gate`) को host की `ignorable` लेखन-सतह चाहिए (rc.6 के बाद का harness): rc.6 hosts options bag अनदेखा कर देते हैं और इवेंट required-on-read रहता है, इसलिए स्विच इन-मेमोरी रहता है और द्वार रिकॉर्ड केवल कमांड परिणाम + वर्कस्पेस फ़ाइल में रहता है, जब तक harness अपग्रेड न हो।
196
- - `doublecheck.gate` सेटिंग्स नेमस्पेस केवल तब पंजीकृत होता है जब harness सेटिंग्स सेवा माउंट हो; इसके बिना profiles में कोई सेटिंग्स सतह नहीं होती।
197
- - `/gate status` की `plan mode:` पंक्ति वैकल्पिक `ctx.planMode` सेवा पढ़ती है; इसके बिना profiles `unknown` दिखाते हैं।
198
-
199
191
  ## अनुमतियाँ और डेटा
200
192
 
201
- - **पढ़ता है**: केवल प्रक्रिया के भीतर सत्र लॉग (`tool/call` / `tool/result` / `tool/code-dispatch`, इंजेक्टेड `user/message` स्रोत और बाहरी `autoReview/*` फ़ैसले-रिकॉर्ड); वैकल्पिक प्लान-मोड सेवा स्थिति।
202
- - **लिखता है**: सत्र workspace में `doublecheck-spec.md`, `doublecheck-report.md` और `gate-report.md` (पथ configurable), `ctx.fs` seam से; टिकाऊ `doublecheck/state` और `doublecheck/gate` सेशन इवेंट।
203
- - **मॉडल कॉल**: द्वार की संगति और स्थानीय-समीक्षा चरण (प्रति `/gate run` एक-एक उप-एजेंट), वैकल्पिक एडवर्सरी समीक्षा (`modules.adversary`, डिफ़ॉल्ट off) और `doublecheck_report` का सत्यापन वर्कफ़्लो (डिफ़ॉल्ट on) subagent चलाते हैं; इसके अलावा न मॉडल कॉल, न नेटवर्क।
204
- - **कभी नहीं छूता**: क्रेडेंशियल, एनवायरनमेंट वेरिएबल या सत्र workspace से बाहर की कोई फ़ाइल। द्वार रिपोर्ट में केवल गणनाएँ, ids और फ़ैसले होते हैं; समीक्षक पाठों में पहचाने गए रहस्य संग्रहण या प्रदर्शन से पहले redact होते हैं।
193
+ - **पढ़ता है**: सत्र लॉग (`tool/call` / `tool/result` / `tool/code-dispatch`, इंजेक्ट किए गए `user/message` स्रोत, और बाहरी `autoReview/*` निर्णय रिकॉर्ड) केवल प्रक्रिया के भीतर; वैकल्पिक प्लान-मोड सेवा स्थिति।
194
+ - **लिखता है**: सत्र कार्यक्षेत्र में `doublecheck-spec.md`, `doublecheck-report.md` और `gate-report.md` (पथ कॉन्फ़िगर करने योग्य) `ctx.fs` इंटरफ़ेस के माध्यम से; टिकाऊ `doublecheck/state` और `doublecheck/gate` सत्र इवेंट।
195
+ - **मॉडल कॉलें**: द्वार के संगति और स्थानीय-समीक्षा चरण (प्रत्येक `/gate run` पर एक-एक subagent), वैकल्पिक प्रतिकूल समीक्षा, और `doublecheck_report` सत्यापन वर्कफ़्लो subagent रन शुरू करते हैं; इसके अलावा कुछ भी मॉडल या नेटवर्क नहीं बुलाता।
196
+ - **कभी नहीं छूता**: क्रेडेंशियल, पर्यावरण चर, या सत्र कार्यक्षेत्र के बाहर कोई फ़ाइल। workshop मेनिफ़ेस्ट केवल `filesystem:read` और `filesystem:write` घोषित करता है। द्वार रिपोर्टें केवल गणना, id और निर्णय रखती हैं; समीक्षक पाठों में पहचाने गए रहस्य भंडारण या प्रदर्शन से पहले संपादित (redacted) कर दिए जाते हैं।
205
197
 
206
- ## समस्या निवारण
198
+ ## सुरक्षा सीमाएँ
207
199
 
208
- | लक्षण | कारण और समाधान |
209
- |---|---|
210
- | `--dump-config` में `# == dsh-doublecheck` परत नहीं | bundle patch ग़ायब है या कोई पंक्ति `disabled` है — profile का patch क्रम और पंक्ति ids जाँचें। |
211
- | gates कभी प्रतिक्रिया नहीं देते | `/doublecheck status` चलाएँ: सत्र स्विच बंद हो सकता है, या guard पंक्ति के सारे `modules.*` false हैं। |
212
- | "Adversary review did not run: the subagents seam is not mounted" | इस profile संयोजन में subagent प्रदाता नहीं — एक लगाएँ (spine संयोजन लाते हैं) या `modules.adversary` बंद करें। |
213
- | `doublecheck_report` में `verification: null` | `workflowEngine` seam ग़ायब है या run अस्वीकृत/रुका — रिपोर्ट अनुमान लगाने के बजाय यही कहती है। |
214
- | रिपोर्ट कहती है `unverified` | सत्यापन चला पर हर spec आयाम का फ़ैसला नहीं मिला — `verify: true` से दोबारा चलाएँ; `proven` के लिए छहों चाहिए। |
215
- | `/gate run` में `Review conclusion — WARN: dsh-auto-review is not installed` दिखता है | अपेक्षित गिरावट: engine पंक्ति इस profile में नहीं है। `dsh-auto-review` स्थापित करें, या पहचान छोड़ने के लिए `gate.review.engine: local` सेट करें। |
216
- | `/gate run` में `Implementation consistency — SKIP` दिखता है | `subagents` seam ग़ायब है (या run टाइमआउट हुआ) — एक subagent प्रदाता माउंट करें; द्वार कभी फ़ैसला नहीं गढ़ता। |
217
- | `/gate status` में `plan mode: unknown` दिखता है | profile में प्लान-मोड सेवा माउंट नहीं है; सुझाव फिर भी रिपोर्ट और टर्न सूचना में दिखता है। |
218
- | द्वार रिकॉर्ड सत्र लॉग में नहीं है | यह rc.6 host `ignorable` मार्कर नहीं छापता — रिकॉर्ड केवल कमांड परिणाम और `gate-report.md` में रहता है। |
200
+ - **मॉडल-दृश्य ⟺ लॉग किया गया।** हर इंजेक्ट किया गया अनुस्मारक, समीक्षा और द्वार सूचना मानक चैनलों से होकर सत्र लॉग में पहुँचती है; टिकाऊ spec/state/gate तथ्य उपकरण परिणामों या `SessionEventMap` सदस्यों से चलते हैं।
201
+ - **बंद-विफल / ज़ोर से विफल।** guard और द्वार कॉन्फ़िग `apply` में मान्य होता है (assertions फेंकते हैं); जो समीक्षक या प्रतिकूल इंटरफ़ेस नहीं चल सकता वह नकली निर्णय के बजाय ईमानदार "unavailable"/छोड़ने की सूचना के रूप में तय होता है।
202
+ - **ऑडिट-सुरक्षित रिपोर्टें।** द्वार और डिलीवरी रिपोर्टें केवल गणना, id और निर्णय दर्ज करती हैं — कोई फ़ाइल सामग्री या सत्र पाठ नहीं — और मॉडल-निर्मित निष्कर्ष पाठ भंडारण या प्रदर्शन से पहले एक रहस्य-संपादक से गुज़रते हैं।
203
+ - **स्वयं का कोई नेटवर्क नहीं।** प्लगइन कोई सीधा नेटवर्क अनुरोध नहीं करता; आलोचक और समीक्षक subagent harness subagent इंटरफ़ेस से चलते हैं।
204
+ - **dsh-auto-review पर कमज़ोर निर्भरता।** यह कभी import या कठोरता से आवश्यक नहीं होता; द्वार उसके टिकाऊ निर्णय रिकॉर्ड मोड़ता है और स्थानीय समीक्षक पर घट जाता है, और कभी अनुमोदन अनुरोध संश्लेषित नहीं करता।
219
205
 
220
- ## कॉन्फ़िगरेशन
221
-
222
- profile के `cordis.patch.yml` में किसी भी पंक्ति को **id से** ओवरराइड करें। patch पंक्ति की पूरी config बदल देता है — हर कुंजी दोबारा लिखें:
223
-
224
- ```yaml
225
- - id: doublecheck-grill
226
- config:
227
- specFile: 'specs/doublecheck-spec.md' # default: 'doublecheck-spec.md'
228
- reportFile: 'specs/doublecheck-report.md' # default: 'doublecheck-report.md'
229
- reportVerify: true # run the verify workflow by default
230
- verifyProvider: 'fork' # provider for the per-dimension checkers
231
- reportTestToolNames: ['bash', 'pwsh']
232
- reportTestCommandPatterns:
233
- - '(?:^|[;&|]\s*)(?:(?:pnpm|npm|npx|yarn|bun)(?:\s+run)?\s+(?:test|vitest|jest|mocha)(?:\s|$))'
234
- - '(?:^|[;&|]\s*)(?:(?:pytest|go\s+test|cargo\s+test|make\s+test|ctest)(?:\s|$))'
235
- - '(?:^|[;&|]\s*)(?:node\s+--test(?:\s|$))'
236
- - '(?:^|[;&|]\s*)(?:deno\s+test|uv\s+run\s+pytest)(?:\s|$)'
237
- reportMutationTools: ['edit', 'write']
238
- reportTestFilePatterns:
239
- - '(^|[\\/])(tests?|__tests__|specs?)([\\/]|$)'
240
- - '\\.(test|spec)\\.[A-Za-z0-9]+$'
241
-
242
- - id: doublecheck-guard
243
- config:
244
- intensity: warn
245
- modules:
246
- grill: true
247
- tdd: true # red/green evidence gates (v0.2)
248
- adversary: true # forked critic review (v0.3)
249
- adversaryModel: null # or e.g. 'deepseek-v4-pro' for a separate critic model
250
- adversaryProvider: 'fork' # subagent provider the critic runs on
251
- adversaryMaxFindings: 5 # findings cap injected into the session
252
- adversaryTools: ['read', 'glob', 'grep'] # critic tool allowlist (read-only)
253
- adversaryTimeoutMs: 120000 # hard budget for one critic run
254
- guardTools: ['edit', 'write']
255
- vagueTaskMaxChars: 200
256
- remindOnce: true
257
- testToolNames: ['bash', 'pwsh']
258
- testCommandPatterns:
259
- - '(?:^|[;&|]\s*)(?:(?:pnpm|npm|npx|yarn|bun)(?:\s+run)?\s+(?:test|vitest|jest|mocha)(?:\s|$))'
260
- - '(?:^|[;&|]\s*)(?:(?:pytest|go\s+test|cargo\s+test|make\s+test|ctest)(?:\s|$))'
261
- - '(?:^|[;&|]\s*)(?:node\s+--test(?:\s|$))'
262
- - '(?:^|[;&|]\s*)(?:deno\s+test|uv\s+run\s+pytest)(?:\s|$)'
263
- testFilePatterns:
264
- - '(^|[\\/])(tests?|__tests__|specs?)([\\/]|$)'
265
- - '\\.(test|spec)\\.[A-Za-z0-9]+$'
266
- gate:
267
- enabled: true
268
- planSuggestion: true
269
- reportFile: 'gate-report.md'
270
- requirements:
271
- enabled: true
272
- checklist:
273
- - { id: goal, question: 'What outcome must the delivery produce?', specDimension: goal, required: true }
274
- - { id: scope, question: 'What is in scope, and what is out of scope?', specDimension: scope, required: true }
275
- - { id: acceptance, question: 'Which observable checks prove the work is done?', specDimension: acceptanceCriteria, required: true }
276
- - { id: failureModes, question: 'What can go wrong, and what is the correct behavior in each case?', specDimension: failureModes, required: true }
277
- - { id: priorities, question: 'What is traded when goals conflict; what is optional?', specDimension: priorities, required: true }
278
- - { id: nonGoals, question: 'What does the user explicitly not want?', specDimension: nonGoals, required: true }
279
- minConfirmed: 6
280
- interrogateTool: 'ask_user_question'
281
- tests:
282
- enabled: true
283
- requirePassingRun: true
284
- allowFailingRuns: 0
285
- requireCoverage: false
286
- minCoveragePct: 80
287
- coveragePattern: 'coverage[^\d]{0,40}(\d+(?:\.\d+)?)\s*%'
288
- consistency:
289
- enabled: true
290
- provider: fork
291
- model: null
292
- tools: ['read', 'glob', 'grep']
293
- timeoutMs: 120000
294
- maxFindings: 5
295
- review:
296
- enabled: true
297
- engine: auto # auto = dsh-auto-review verdict records, else local
298
- provider: fork
299
- model: null
300
- tools: ['read', 'glob', 'grep']
301
- timeoutMs: 120000
302
- maxFindings: 5
303
- ```
206
+ ## ज्ञात सीमाएँ
304
207
 
305
- शिप किया गया `strict.patch.yml` ठीक यही guard पंक्ति है `intensity: block`, सभी मॉड्यूल चालू और द्वार कवरेज आवश्यकता सक्षम — profile हाथ से संपादित किए बिना सख़्त मोड के लिए इसे bundle patch के बाद patch परत के रूप में लगाएँ।
306
-
307
- ### `intensity`
308
-
309
- | मान | द्वार-नियंत्रित `edit`/`write` पर व्यवहार |
310
- |---|---|
311
- | `remind` (डिफ़ॉल्ट) | कॉल जारी रहती है; अनुस्मारक परिणाम-संदर्भ के साथ अगले मॉडल अनुरोध में जाता है। |
312
- | `warn` | कॉल अप्रूवल सीम से एकबारगी मानव अनुमोदन हेतु रोकी जाती है (कोई चैनल न होने पर अस्वीकार)। |
313
- | `block` | कॉल अस्वीकार होती है; फ़ीडबैक मॉडल को पहले अनुशासन सुधारने की ओर भेजता है। |
314
-
315
- ### ट्यूनिंग
316
-
317
- | कुंजी | डिफ़ॉल्ट | अर्थ |
318
- |---|---|---|
319
- | `modules.grill` | `true` | `false` पर grill द्वार बंद। grill स्किल/टूल का स्विच उनकी पंक्ति का `disabled` फ़्लैग है। |
320
- | `modules.tdd` | `true` | `true` पर red/green प्रमाण-द्वार चालू (v0.2); v0.5 से डिफ़ॉल्ट रूप से सक्षम। |
321
- | `modules.adversary` | `false` | `true` पर green (v0.3) पर फ़ॉर्क किए आलोचक की समीक्षा चालू होती है; `ctx.subagents` सीम का उपयोग करती है — सीम अनुपस्थित होने पर «अनुपलब्ध» सूचना दर्ज होती है। |
322
- | `enableByDefault` | `true` | बिना `/doublecheck on|off` रिकॉर्ड वाली सेशनों के लिए मास्टर स्विच। |
323
- | `language` | `'en'` | इंजेक्ट होने वाले अनुस्मारक/अस्वीकृति/समीक्षा/द्वार गद्य की भाषा (`en` / `zh`)। |
324
- | `guardTools` | `['edit', 'write']` | वे परिवर्तन-टूल नाम जिन पर दोनों द्वार नज़र रखते हैं। |
325
- | `vagueTaskMaxChars` | `200` | इससे लंबे कार्य कभी अस्पष्ट नहीं माने जाते। फ़ाइल, पथ, URL, अंडरस्कोर कीवर्ड या हाइफ़न युक्त कीवर्ड बताने वाले छोटे कार्य ठोस होते हैं। |
326
- | `remindOnce` | `true` | प्रत्येक द्वार का अनुस्मारक प्रति सेशन अधिकतम एक बार — रीस्टार्ट के बाद भी टिकाऊ (लॉग से folded)। |
327
- | `testToolNames` | `['bash', 'pwsh']` | वे शेल टूल नाम जो परीक्षण चला सकते हैं। |
328
- | `testCommandPatterns` | *(pnpm/npm/yarn/bun test, pytest, go/cargo/make test, node --test, deno test, uv run pytest)* | वे regex जिनसे मेल खाने पर कमांड परीक्षण-रन माना जाता है। |
329
- | `testFilePatterns` | *(परीक्षण डायरेक्टरियाँ, `*.test.*` / `*.spec.*`)* | वे regex जो परीक्षण फ़ाइलें पहचानते हैं — हमेशा संपादन-योग्य, red द्वार से मुक्त। |
330
- | `adversaryModel` | `null` | आलोचक मॉडल मार्ग; `null` = मुख्य मॉडल स्वयं समीक्षा करता है। |
331
- | `adversaryProvider` | `'fork'` | वह उप-एजेंट provider नाम जिस पर आलोचक चलता है। |
332
- | `adversaryMaxFindings` | `5` | सेशन में इंजेक्ट होने वाले निष्कर्षों की सीमा (1–20)। |
333
- | `adversaryTools` | `['read', 'glob', 'grep']` | आलोचक की टूल allowlist; इसे read-only रखें। |
334
- | `adversaryTimeoutMs` | `120000` | एक आलोचक रन के लिए कठोर समय-बजट। |
335
-
336
- गलत कॉन्फ़िगरेशन ज़ोर से विफल होती है: अमान्य regex, खाली या दोहराई गई नाम-सूची, या सीमा से बाहर निष्कर्ष-सीमा लोड के समय एरर फेंकती है, चुपचाप कुछ न करने के बजाय। जो आलोचक नहीं चल सकता (सीम अनुपस्थित, provider विफलता, timeout) वह सेशन में एक ईमानदार «अनुपलब्ध» सूचना के रूप में दर्ज होता है।
337
-
338
- ### रिपोर्ट नियंत्रण (grill पंक्ति)
339
-
340
- | कुंजी | डिफ़ॉल्ट | अर्थ |
341
- |---|---|---|
342
- | `reportFile` | `'doublecheck-report.md'` | वह वर्कस्पेस फ़ाइल जो रिपोर्ट markdown प्राप्त करती है। |
343
- | `reportVerify` | `true` | टूल के `verify` फ़्लैग का डिफ़ॉल्ट। |
344
- | `verifyProvider` | `'fork'` | वह उप-एजेंट provider जिस पर प्रति-आयाम जाँचकर्ता चलते हैं। |
345
- | `verifyMode` | `'all'` | `all` = प्रति आयाम एक समानांतर जाँचकर्ता; `single` = एक संयुक्त जाँचकर्ता (एक उप-एजेंट, सस्ता)। |
346
- | `reportTestToolNames` / `reportTestCommandPatterns` | *(guard पंक्ति के समान डिफ़ॉल्ट)* | रिपोर्ट-स्कोप परीक्षण-रन वर्गीकरण। |
347
- | `reportMutationTools` / `reportTestFilePatterns` | *(guard पंक्ति के समान डिफ़ॉल्ट)* | रिपोर्ट-स्कोप कार्यान्वयन-संपादन वर्गीकरण। |
348
-
349
- रिपोर्ट के वर्गीकरण नियंत्रण गार्ड से स्वतंत्र हैं: द्वार-प्रवर्तन और रिपोर्ट-फ़ोल्ड को अलग-अलग ट्यून किया जा सकता है, बिना एक के चुपचाप दूसरे को बदले। सत्यापन ईमानदारी से घटता है: `workflowEngine` सीम अनुपस्थित या रन अस्वीकृत होने पर `verification: null` रह जाता है और markdown यह बताता है।
350
-
351
- ### द्वार नियंत्रण (guard पंक्ति)
352
-
353
- | कुंजी | डिफ़ॉल्ट | अर्थ |
354
- |---|---|---|
355
- | `gate.enabled` | `true` | द्वार पैनल और टर्न-सीमा लाल सूचना के लिए मास्टर स्विच। |
356
- | `gate.planSuggestion` | `true` | लाल रिपोर्टों और पैनलों में प्लान-मोड पुनः-जाँच सुझाव जोड़ता है। |
357
- | `gate.reportFile` | `'gate-report.md'` | वह वर्कस्पेस फ़ाइल जो द्वार रिपोर्ट प्राप्त करती है। |
358
- | `gate.requirements.enabled` | `true` | `false` पर आवश्यकता चरण छोड़ देता है। |
359
- | `gate.requirements.checklist` | *(छह spec-आयाम प्रश्न)* | प्लग करने योग्य प्रमुख-प्रश्न चेकलिस्ट: `{ id, question, specDimension, required }`। `specDimension: null` मैन्युअल-पुष्टि चेतावनी के रूप में दिखता है; असफल वैकल्पिक प्रश्न चेतावनियाँ हैं, लाल बत्तियाँ नहीं। |
360
- | `gate.requirements.minConfirmed` | `6` | न्यूनतम अनिवार्य प्रश्न जो पास होने चाहिए (1..अनिवार्य संख्या)। |
361
- | `gate.requirements.interrogateTool` | `'ask_user_question'` | वह टूल नाम जिसकी कॉल पड़ताल-प्रमाण मानी जाती हैं। |
362
- | `gate.tests.enabled` | `true` | `false` पर परीक्षण-प्रमाण चरण छोड़ देता है। |
363
- | `gate.tests.requirePassingRun` | `true` | नवीनतम परीक्षण रन पास न होना (या ग़ायब होना) लाल बत्ती है। |
364
- | `gate.tests.allowFailingRuns` | `0` | नवीनतम green के बाद लाल से पहले अनुमत असफल रन। |
365
- | `gate.tests.requireCoverage` | `false` | `true` पर परीक्षण आउटपुट में कवरेज प्रमाण आवश्यक। |
366
- | `gate.tests.minCoveragePct` | `80` | न्यूनतम कवरेज प्रतिशत (0–100)। |
367
- | `gate.tests.coveragePattern` | `coverage…(\d+…)%` | एक कैप्चर-ग्रुप वाला regex जो कवरेज प्रतिशत पार्स करता है (case-insensitively संकलित)। |
368
- | `gate.consistency.enabled` | `true` | `false` पर diff ↔ आवश्यकता मैपिंग चरण छोड़ देता है। |
369
- | `gate.consistency.provider` / `.model` / `.tools` / `.timeoutMs` / `.maxFindings` | `fork` / `null` / `read,glob,grep` / `120000` / `5` | स्थानीय संगति समीक्षक के नियंत्रण (model `null` = मुख्य मॉडल)। |
370
- | `gate.review.enabled` | `true` | `false` पर समीक्षा-निष्कर्ष छोड़ देता है। |
371
- | `gate.review.engine` | `'auto'` | `auto` = dsh-auto-review फ़ैसले-रिकॉर्ड जब मौजूद हों, अन्यथा स्थानीय समीक्षक; `local` = हमेशा स्थानीय समीक्षक। |
372
- | `gate.review.provider` / `.model` / `.tools` / `.timeoutMs` / `.maxFindings` | *(consistency के समान)* | स्थानीय समीक्षा-समीक्षक के नियंत्रण। |
373
-
374
- द्वार कॉन्फ़िगरेशन लोड पर fail-loud सत्यापित होती है (डुप्लिकेट ids, अज्ञात spec आयाम, सीमा से बाहर सीमाएँ, अमान्य regex, खाली टूल सूचियाँ एरर फेंकती हैं), और चेकलिस्ट सेटिंग्स सेवा माउंट होने पर `doublecheck.gate` सेटिंग्स नेमस्पेस से उजागर होती है। द्वार कभी अनुमोदन अनुरोध नहीं गढ़ता; स्थानीय समीक्षक डिफ़ॉल्ट रूप से read-only हैं।
375
-
376
- ## कार्य-प्रणाली (एक्सटेंशन पॉइंट)
377
-
378
- | योगदान | DSH तंत्र |
379
- |---|---|
380
- | पैक की गई स्किल्स | `ctx.skills.registerProvider()` — स्किल क्षमता सीम, `source: bundled` |
381
- | सूची/लोड टूल | `ctx.tools.register()` — `doublecheck_skills` |
382
- | spec + वर्कस्पेस फ़ाइल | `doublecheck_spec` टूल + वैकल्पिक `ctx.fs` लेखन |
383
- | आवश्यकता-द्वार | `tools/pre-execute` वॉटरफ़ॉल — `allow` / `ask` (अप्रूवल सीम) / `deny` |
384
- | red द्वार | `tools/pre-execute` वॉटरफ़ॉल — कार्यान्वयन संपादनों से पहले असफल-परीक्षण प्रमाण की कड़ी जाँच |
385
- | अनुस्मारक इंजेक्शन | `tools/post-execute` वॉटरफ़ॉल — `additionalContexts` → `user/message` के रूप में दर्ज |
386
- | green द्वार | `agent/turn-stopping` serial — जब संपादनों में पास होने वाला परीक्षण न हो तो समापन अनुस्मारक इंजेक्ट करता है |
387
- | विरोधी-समीक्षा | `ctx.subagents.start()` — संरचित findings schema वाला forked आलोचक, green पर इंजेक्ट; `warn`/`block` एक राउंड steer करते हैं |
388
- | डिलीवरी रिपोर्ट | `doublecheck_report` टूल — सेशन-लॉग fold + वर्कस्पेस markdown |
389
- | सत्यापन वर्कफ़्लो | `ctx.workflowEngine.start()` — प्रति spec आयाम एक समानांतर जाँचकर्ता, संरचित जाँचें |
390
- | द्वार के नियतात्मक चरण | शुद्ध सेशन-लॉग folds — दर्ज spec के विरुद्ध प्रमुख-प्रश्न चेकलिस्ट; परीक्षण-रन/कवरेज प्रमाण |
391
- | द्वार के समीक्षक चरण | `ctx.subagents.start()` — संगति मैपर + स्थानीय समीक्षक, संरचित निष्कर्ष, read-only टूल |
392
- | engine समीक्षा | टिकाऊ `autoReview/verdict` / `autoReview/rejection` folds + `ctx.commands.list()` उपस्थिति-जाँच (कमज़ोर निर्भरता, कोई import नहीं) |
393
- | प्लान-मोड सुझाव | रिपोर्ट/पैनल गद्य + प्रति-सेशन एक बार टर्न सूचना; स्थिति-पंक्ति के लिए `ctx.planMode` पठन (वैकल्पिक) |
394
- | `/gate` कमांड | `ctx.commands.register()` — `status|run|config`; `run` टिकाऊ `doublecheck/gate` इवेंट + `gate-report.md` लिखता है |
395
- | सेटिंग्स सतह | माउंट होने पर `ctx.settings.register('doublecheck.gate', schema, { expose: true, applies: 'restart' })` |
396
- | टिकाऊ स्थिति | `tool/call` + `tool/result` + `tool/code-dispatch` + इंजेक्टेड संरचित स्रोतों + `doublecheck/state` + `doublecheck/gate` पर सेशन-लॉग fold; model-visible ⟺ logged |
397
- | सेशन कमांड | `ctx.commands.register()` — `/doublecheck status|report|on|off`; `on|off` टिकाऊ `doublecheck/state` सेशन इवेंट लिखता है |
398
- | सेशन प्रोजेक्शन | `sessionProjections` रजिस्ट्री — `doublecheck` दृश्य अब `gateVerdict` + `gateRedCount` (stateVersion 2) रखता है |
399
- | आंतरिक इवेंट | `doublecheck/spec`, `doublecheck/reminder`, `doublecheck/review`, `doublecheck/report`, `doublecheck/gate` (declaration merging से typed, `@mode emit`) |
400
-
401
- agent-loop में कोई बदलाव नहीं। हर पंजीकरण प्रतिवर्ती `ctx.effect` / `ctx.on` / सेवा `register()` है।
402
-
403
- ## मॉडल क्या देखता है
404
-
405
- - `grill-requirements` स्किल सेशन स्किल-कैटलॉग में शामिल होती है और अंतर्निहित `skill` टूल (या `doublecheck_skills`) से लोड होती है।
406
- - `ask_user_question` उपयोगकर्ता से पूछने का DSH का मूल तरीका बना रहता है; स्किल केवल उसका निर्देशन करती है (और provider-रहित headless में गद्य-प्रश्नों पर उतर आती है)।
407
- - अनुस्मारक `{kind:'plugin'}` संदर्भ के रूप में आते हैं, इसलिए ट्रांसक्रिप्ट UI उन्हें इंजेक्शन मेटाडेटा के रूप में दिखाते हैं।
408
- - आलोचक के स्थिर होने के बाद विरोधी-आलोचना उसी तरह आती है, गंभीरता-टैग वाले निष्कर्षों के साथ; `warn`/`block` के तहत चक्र एक राउंड चलाया जाता है ताकि मॉडल उनका उत्तर दे।
409
- - `doublecheck_report` समेकित रिपोर्ट को टूल परिणाम के रूप में लौटाता है (spec, परीक्षण समयरेखा, समीक्षा, सत्यापन, निर्णय), इसलिए «डिलीवरी साबित करना» एक कॉल की दूरी पर है।
410
- - द्वार-लाल टर्न सूचना `{kind:'doublecheck-gate'}` संदर्भ के रूप में आती है — एक छोटा भूमिका-कथन वाक्य साथ ही लाल संख्या और प्लान-मोड सुझाव।
411
- - `/doublecheck` और `/gate` ट्रांसक्रिप्ट में सीधे उत्तर देते हैं: `status` स्विच, मॉड्यूल, तीव्रता, चरण-तथ्य और नवीनतम द्वार-फ़ैसला दिखाता है; `report` folded रिपोर्ट छापता है; `on|off` सेशन स्विच बदलता है; `/gate run` PR-तैयार द्वार रिपोर्ट लौटाता है।
412
-
413
- ## सेशन कमांड
414
-
415
- ```
416
- /doublecheck status|report|on|off
417
- /gate status|run|config
418
- ```
419
-
420
- - `/doublecheck status` — प्रभावी स्विच (टिकाऊ ओवरराइड कॉन्फ़िगरेशन डिफ़ॉल्ट से ऊपर), कॉन्फ़िगर किए मॉड्यूल, प्रवर्तन-तीव्रता, folded चरण-तथ्य (spec दर्ज, red/green रंग, समीक्षा दर्ज, संपादन-संख्या) और नवीनतम द्वार-फ़ैसला।
421
- - `/doublecheck report` — सेशन लॉग से डिलीवरी रिपोर्ट वहीं fold करता है (कोई सत्यापन वर्कफ़्लो नहीं; वह रास्ता `doublecheck_report` टूल का है)।
422
- - `/doublecheck on|off` — टिकाऊ `doublecheck/state` इवेंट लिखता है (रीस्टार्ट, रिज़्यूम और फ़ॉर्क के बाद भी बचा रहता है — replay ही state है) और मॉडल-दृश्य स्विच सूचना इंजेक्ट करता है।
423
- - `/gate status` — लाइव चेकलिस्ट प्रगति: नियतात्मक चरण वहीं fold होते हैं, समीक्षक चरण और फ़ैसला नवीनतम `doublecheck/gate` रन दिखाते हैं, साथ ही प्लान-मोड स्थिति।
424
- - `/gate run` — पूरी चार-चरण चेकलिस्ट निपटाता है (नियतात्मक folds + समानांतर में दो स्थानीय समीक्षक forks; मौजूद होने पर engine के फ़ैसले-रिकॉर्ड), टिकाऊ `doublecheck/gate` इवेंट और `gate-report.md` लिखता है, और रिपोर्ट markdown लौटाता है।
425
- - `/gate config` — प्रभावी चेकलिस्ट, सीमाएँ और समीक्षक नियंत्रण दिखाता है।
426
-
427
- सभी कमांड उत्तर guard पंक्ति की `language` सेटिंग का सम्मान करते हैं; रिपोर्ट दस्तावेज़ अपने स्थिर अंग्रेज़ी शीर्षक और ऑडिट ids रखते हैं।
428
-
429
- ## रोडमैप
430
-
431
- अनुशासन-चक्र और डिलीवरी द्वार दोनों शिप होते हैं: **grill → design → red → green → review → verify** (v0.1 → v0.6) साथ ही **deliverable/rework निर्णय वाला चार-चरण गुणवत्ता-द्वार** (v0.7)। वास्तविक-ट्रांसक्रिप्ट रिग्रेशन फ़िक्स्चर टिकाऊ इवेंट आकारों को पिन करते हैं (`tests/fixtures/`)। भावी कार्य: `doublecheck` प्रोजेक्शन के लिए एक Web-UI सेटिंग्स टैब और द्वार बैज, समृद्ध रिपोर्ट फ़ॉर्मेटिंग, और वर्कस्पेस फ़ाइल से क्रॉस-सेशन spec सीडिंग।
208
+ - **टिकाऊ लेखन।** `/doublecheck on\|off` → `doublecheck/state` और `/gate run` → `doublecheck/gate` को host की `ignorable` append सतह (rc.6 के बाद) चाहिए, जो हर समर्थित host (≥ `0.1.0-rc.8`) प्रदान करता है।
209
+ - **वैकल्पिक इंटरफ़ेस।** `doublecheck.gate` सेटिंग्स नेमस्पेस केवल तब पंजीकृत होता है जब सेटिंग्स सेवा माउंट हो; `/gate status` की प्लान-मोड पंक्ति वैकल्पिक `ctx.planMode` पढ़ती है (इसके बिना `unknown` दिखाती है); प्रतिकूल समीक्षा को `ctx.subagents` चाहिए; सत्यापन को `workflowEngine` चाहिए।
210
+ - **स्थानीय अवनति।** जब dsh-auto-review अनुपस्थित हो या इस सत्र में उसके कोई निर्णय रिकॉर्ड न हों, तो `gate.review.engine: auto` स्थानीय समीक्षक पर घट जाता है — रिपोर्ट निर्णय गढ़ने के बजाय कारण बताती है।
432
211
 
433
212
  ## विकास
434
213
 
435
214
  ```sh
436
- pnpm install --ignore-workspace
437
- pnpm run typecheck
438
- pnpm run lint
439
- pnpm run test
440
- pnpm run build
215
+ pnpm install # node ^22.19 || >=24
216
+ pnpm run build # tsc --noEmitOnError (lib/ is committed)
217
+ pnpm run prepare # tsc --noEmitOnError (git-install channel)
218
+ pnpm run prepublishOnly # build + full test suite
219
+ pnpm run typecheck # tsc --noEmit + tests tsconfig
220
+ pnpm run lint # eslint src tests
221
+ pnpm test # vitest run
222
+ pnpm run test:coverage # vitest run --coverage
223
+ pnpm run pack:check # build + pack the tarball
441
224
  ```
442
225
 
443
- ## आभार
226
+ ## विषय
444
227
 
445
- कार्यप्रणाली [obra/superpowers](https://github.com/obra/superpowers) (TDD-शैली इंजीनियरिंग अनुशासन) और [TimothyVang/Grill-me](https://github.com/TimothyVang/Grill-me) (कार्यान्वयन से पहले आवश्यकताओं की पड़ताल) से प्रेरित है। यह पैकेज एक मूल कार्यान्वयन है: दोनों में से किसी भी परियोजना का कोई पाठ, प्रॉम्प्ट या फ़ाइल कॉपी नहीं किया गया।
228
+ `dsh`, `dsh-plugin`, `deepseek-harness`, `engineering-discipline`, `requirements`, `guard`, `skill`, `quality-gate`, `delivery-gate`
446
229
 
447
230
  ## योगदानकर्ता
448
231
 
449
- - [PerryLink](https://github.com/PerryLink) — लेखक और अनुरक्षक: v0.1 → v0.7 अनुशासन-चक्र और डिलीवरी द्वार, पाँच-भाषा दस्तावेज़, CI/प्रकाशन पाइपलाइन और इकोसिस्टम सबमिशन ([awesome-dsh-plugin#451](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/451), [awesome-dsh-plugins#147](https://github.com/AdamPlatin123/awesome-dsh-plugins/pull/147), [awesome-deepseek-harness#179](https://github.com/0xsline/awesome-deepseek-harness/pull/179), [bruc3van/awesome-dsh-plugin#36](https://github.com/bruc3van/awesome-dsh-plugin/pull/36), [dsh-hub-workshop#13](https://github.com/omdsh-dev/dsh-hub-workshop/issues/13)/[#19](https://github.com/omdsh-dev/dsh-hub-workshop/pull/19))।
450
-
451
- Issues, PR और Discussions का स्वागत है — प्रवेश-द्वार इस दस्तावेज़ की शुरुआत में हैं।
232
+ - [@PerryLink](https://github.com/PerryLink) — निर्माता और अनुरक्षक: grill → design → red → green → review → verify अनुशासन लूप, चार-चरण डिलीवरी द्वार, पाँच-भाषा दस्तावेज़, और CI/रिलीज़ पाइपलाइन।
452
233
 
453
- ## PerryLink DSH प्लगइन परिवार
234
+ ## PerryLink DSH Plugin Family
454
235
 
455
- यह परियोजना [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [15 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। यदि यह आपकी मदद करता है, तो बाकी भी करेंगे:
236
+ यह परियोजना [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [15 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। यदि यह आपकी मदद करता है, तो बाकी भी संभवतः करेंगे:
456
237
 
457
- | प्लगइन | एक-पंक्ति |
238
+ | Plugin | One-liner |
458
239
  |---|---|
459
- | [dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel) | Read-only MCP रनटाइम पैनल: /mcp कमांड + स्थिति, टूल और त्रुटियों वाला Settings टैब |
460
- | **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | इंजीनियरिंग-अनुशासन गार्ड + डिलीवरी गुणवत्ता-द्वार: आवश्यकता grill, परीक्षण द्वार, विरोधी-समीक्षा, /gate deliverable/rework पैनल |
461
- | [dsh-background-agents](https://github.com/PerryLink/dsh-background-agents) | Web UI sidebar, मैसेजिंग और interrupt के साथ टिकाऊ बैकग्राउंड चाइल्ड एजेंट |
462
- | [dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions) | language servers पर LSP डायग्नोस्टिक्स, फ़ॉर्मेटिंग, completion, कोड एक्शन और rename |
463
- | [dsh-output-styles](https://github.com/PerryLink/dsh-output-styles) | Claude Code outputStyles-समतुल्य रनटाइम शैली बदलाव |
464
- | [dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind) | Claude Code /rewind-समतुल्य: snapshots, सेशन forks, एक-शॉट restore |
465
- | [dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules) | ऑडिट के साथ Claude Code-शैली घोषणात्मक allow/deny/ask अनुमति नियम |
466
- | [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) | अप्रूवल चेन पर दूसरे-मॉडल की ऑटो-समीक्षा, डिफ़ॉल्ट रूप से fail-closed |
467
- | [dsh-memento](https://github.com/PerryLink/dsh-memento) | अनुमोदन-गेटेड क्रॉस-सेशन मेमोरी: ctx.memory seam + SQLite + मेमोरी टूल |
468
- | [dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security) | सुरक्षा-ऑडिट स्किल पैक: रहस्य स्कैन, निर्भरता और आपूर्ति-शृंखला समीक्षा |
469
- | [dsh-session-pin](https://github.com/PerryLink/dsh-session-pin) | टिकाऊ क्रम के साथ Web sidebar में सेशन पिन करें |
470
- | [dsh-composer-history](https://github.com/PerryLink/dsh-composer-history) | वेब कंपोज़र के लिए टर्मिनल-शैली इनपुट इतिहास: तीर, Ctrl+R खोज |
471
- | [dsh-github](https://github.com/PerryLink/dsh-github) | DSH के लिए GitHub PR/issues एकीकरण, हर लेखन अनुमोदन-गेटेड |
472
- | [dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide) | ऑन-डिमांड एजेंट स्किल के रूप में प्लगइन-विकास ज्ञान-आधार |
473
- | [dsh-claude-move](https://github.com/PerryLink/dsh-claude-move) | Claude Code सेशन, मेमोरी, skills और CLAUDE.md को DSH में माइग्रेट करें |
240
+ | [dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel) | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors |
241
+ | **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard + delivery quality gate: requirements grill, test gates, adversary review, /gate deliverable/rework panel |
242
+ | [dsh-background-agents](https://github.com/PerryLink/dsh-background-agents) | Durable background child agents with a Web UI sidebar, messaging and interrupt |
243
+ | [dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions) | LSP diagnostics, formatting, completion, code actions and rename over language servers |
244
+ | [dsh-output-styles](https://github.com/PerryLink/dsh-output-styles) | Claude Code outputStyles-equivalent runtime style switching |
245
+ | [dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind) | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore |
246
+ | [dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules) | Claude Code-style declarative allow/deny/ask permission rules with audit |
247
+ | [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) | Second-model auto-review on the approval chain, fail-closed by default |
248
+ | [dsh-memento](https://github.com/PerryLink/dsh-memento) | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool |
249
+ | [dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security) | Security-audit skill pack: secret scan, dependency and supply-chain review |
250
+ | [dsh-session-pin](https://github.com/PerryLink/dsh-session-pin) | Pin sessions in the Web sidebar with durable ordering |
251
+ | [dsh-composer-history](https://github.com/PerryLink/dsh-composer-history) | Terminal-style input history for the web composer: arrows, Ctrl+R search |
252
+ | [dsh-github](https://github.com/PerryLink/dsh-github) | GitHub PR/issues integration for DSH, every write gated by approval |
253
+ | [dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide) | Plugin-development knowledge base as an on-demand agent skill |
254
+ | [dsh-claude-move](https://github.com/PerryLink/dsh-claude-move) | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH |
474
255
 
475
256
  ## लाइसेंस
476
257
 
477
- [Apache-2.0](LICENSE)
258
+ [Apache License 2.0](LICENSE) © 2026 dsh-doublecheck contributors