mjolnir-qa 3.0.0 → 5.0.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.th.md CHANGED
@@ -18,7 +18,7 @@ Mjölnir ค้นหาเทสต์ที่ไม่มีวันล้
18
18
  [![node](https://img.shields.io/badge/node-%E2%89%A5%2022.18-1F6F7C.svg?style=flat-square&labelColor=0A1119)](https://nodejs.org)
19
19
 
20
20
  ```bash
21
- npx mjolnir-qa@latest
21
+ npx mjolnir-qa@3.0.0
22
22
  ```
23
23
 
24
24
  [ดูการทำงานจริง](#ดูการทำงานจริง) · [เริ่มต้นอย่างรวดเร็ว](#เริ่มต้นอย่างรวดเร็ว) · [สิ่งที่ตรวจพบ](#สิ่งที่-mjölnir-ตรวจพบ) · [คะแนน](#คะแนนความน่าเชื่อถือ) · [หลักฐาน](#แบบจำลองหลักฐาน) · [นิติวิเคราะห์การรัน](#นิติวิเคราะห์ขณะรัน) · [CI](#ความสมบูรณ์ของ-ci) · [เอเจนต์](#เอเจนต์-ai) · [ความปลอดภัย](#ความเชื่อถือและความปลอดภัย) · [ข้อจำกัด](#สิ่งที่-mjölnir-บอกคุณไม่ได้) · [เอกสาร](#เอกสารประกอบ)
@@ -28,9 +28,9 @@ npx mjolnir-qa@latest
28
28
 
29
29
  [English](README.md) | [简体中文](README.zh.md) | [繁體中文](README.zht.md) | [한국어](README.ko.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Français](README.fr.md) | [Italiano](README.it.md) | [Dansk](README.da.md) | [日本語](README.ja.md) | [Polski](README.pl.md) | [Русский](README.ru.md) | [Norsk](README.no.md) | [Português (Brasil)](README.br.md) | ไทย | [Türkçe](README.tr.md) | [Українська](README.uk.md) | [বাংলা](README.bn.md) | [Ελληνικά](README.gr.md) | [Tiếng Việt](README.vi.md) | [עברית](README.he.md) | [العربية](README.ar.md) | [Bosanski](README.bs.md)
30
30
 
31
- > 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-15.
31
+ > 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-26.
32
32
 
33
- <!-- Source hash: 3541b09e8d04 -->
33
+ <!-- Source hash: `de04dfb1677b` -->
34
34
 
35
35
  </details>
36
36
 
@@ -38,6 +38,20 @@ npx mjolnir-qa@latest
38
38
 
39
39
  <br />
40
40
 
41
+ ## Release status (English canonical)
42
+
43
+ The published line is `3.0.0`; this working tree is the `4.0.0-rc.1`
44
+ candidate. `3.0.0` must not be republished or retagged. The M26–M50 program is
45
+ tracked in
46
+ [`docs/ROADMAP.yaml`](docs/ROADMAP.yaml); provisional capability contracts
47
+ are not automatically enabled or certified. Repository-owned checks pass, but
48
+ Trust certification remains `NOT_CERTIFIED` until the protected holdout,
49
+ real-world, platform/consumer, remote-workflow, support-matrix, and corpus
50
+ evidence gates pass. Run `npm run m26:readiness` before treating any candidate
51
+ as releasable. This document does not publish a tag or authorize a release.
52
+
53
+ > Machine-assisted canonical text. Translate this block before treating it as localized copy.
54
+
41
55
  ## เครื่องหมายถูกสีเขียวคือคำกล่าวอ้าง ไม่ใช่ข้อพิสูจน์
42
56
 
43
57
  เครื่องหมายถูกสีเขียวหมายความว่าไปป์ไลน์ไม่ล้มเหลว ไม่ได้หมายความว่าเทสต์ถูกรันจริง หรือว่าเทสต์มีโอกาสล้มเหลวได้ ทุกกรณีต่อไปนี้ผ่านเป็นสีเขียวทั้งสิ้น:
@@ -58,7 +72,7 @@ npx mjolnir-qa@latest
58
72
 
59
73
  <sub>ทุกข้อค้นพบที่การสแกนสาธิตรายงานสำหรับ workflow นี้ ณ บรรทัดที่รายงาน สร้างโดย `npm run docs:readme-brand` จาก [`demo-report.json`](assets/readme/demo-report.json) และถูกล็อกไม่ให้คลาดเคลื่อนใน CI</sub>
60
74
 
61
- **โหมดเข้มงวด.** การตรวจจับที่รุนแรงที่สุด — `.only`, `continue-on-error`, การทดสอบว่าง, การใช้ retry ในทางที่ผิด — อยู่ในชั้นกักกัน ทำงานเฉพาะภายใต้ `--strict` และจำกัดที่ความรุนแรง `info`: ตั้งค่าสถานะ แต่ไม่เคยบล็อก การสแกนเริ่มต้น (`npx mjolnir-qa@latest` โดยไม่มี `--strict`) ครอบคลุมเฉพาะกฎหลักและกฎขยาย เพิ่ม `--strict` เมื่อคุณต้องการชั้นที่ปรึกษาด้วย
75
+ **โหมดเข้มงวด.** การตรวจจับที่รุนแรงที่สุด — `.only`, `continue-on-error`, การทดสอบว่าง, การใช้ retry ในทางที่ผิด — อยู่ในชั้นกักกัน ทำงานเฉพาะภายใต้ `--strict` และจำกัดที่ความรุนแรง `info`: ตั้งค่าสถานะ แต่ไม่เคยบล็อก การสแกนเริ่มต้น (`npx mjolnir-qa@3.0.0` โดยไม่มี `--strict`) ครอบคลุมเฉพาะกฎหลักและกฎขยาย เพิ่ม `--strict` เมื่อคุณต้องการชั้นที่ปรึกษาด้วย
62
76
 
63
77
  Mjölnir อ่านชุดเทสต์ CI workflow และรายงานจากการรันจริงหากคุณมี มันไม่รันเทสต์ของคุณ ไม่ติดตั้ง dependency และไม่รันโค้ดที่มันสแกน และเมื่อไม่มีหลักฐาน มันจะบอกตรง ๆ แทนที่จะแต่งความมั่นใจขึ้นมา:
64
78
 
@@ -93,7 +107,7 @@ Mjölnir อ่านชุดเทสต์ CI workflow และรายง
93
107
 
94
108
  <p align="center">
95
109
  <a href="assets/video/mjolnir-demo.mp4">
96
- <img src="assets/video/mjolnir-demo-poster.png" alt="เฟรมหนึ่งจากวิดีโอสาธิต: npx mjolnir-qa@latest กำลังสแกนรีโพสาธิตในหน้าต่างเทอร์มินัล" width="900" />
110
+ <img src="assets/video/mjolnir-demo-poster.png" alt="เฟรมหนึ่งจากวิดีโอสาธิต: npx mjolnir-qa@3.0.0 กำลังสแกนรีโพสาธิตในหน้าต่างเทอร์มินัล" width="900" />
97
111
  </a>
98
112
  </p>
99
113
 
@@ -162,7 +176,7 @@ Docs: mjolnir rules --md (full catalog, this rule included)
162
176
  ## เริ่มต้นอย่างรวดเร็ว
163
177
 
164
178
  ```bash
165
- npx mjolnir-qa@latest
179
+ npx mjolnir-qa@3.0.0
166
180
  ```
167
181
 
168
182
  มันสแกนไดเรกทอรีปัจจุบันและพิมพ์ Trust Report: สิ่งที่พบ เชื่อถือได้แค่ไหน เพราะอะไร และควรทำอะไรต่อ มันออกด้วยรหัส `0` เมื่อไม่พบสิ่งใดที่ระดับด่านหรือสูงกว่า
@@ -170,24 +184,39 @@ npx mjolnir-qa@latest
170
184
  ใน CI ให้สแกนเฉพาะสิ่งที่ branch นำเข้ามา เพื่อไม่ให้ชุดเทสต์เก่าท่วม pull request แรกของคุณ:
171
185
 
172
186
  ```bash
173
- npx mjolnir-qa@latest --scope changed
187
+ npx mjolnir-qa@3.0.0 --scope changed
174
188
  ```
175
189
 
176
- `mjolnir ci install` เขียนสิ่งนี้เป็น GitHub Actions workflow โดยใช้ [action](https://github.com/Sergey-Bar/Mjolnir#readme) ที่ปักไว้กับแท็กหลัก `v1` (หรือใช้ `npx` ธรรมดาด้วย `--no-action`) มันจะอยู่ในโหมดให้คำแนะนำจนกว่าคุณจะตัดสินใจให้มันบล็อก
177
-
178
- | คำสั่ง | สิ่งที่ทำ |
179
- | ----------------------------------- | -------------------------------------------------------- |
180
- | `mjolnir` | Trust Report: คำตัดสิน ความมั่นใจ ขั้นตอนถัดไป |
181
- | `mjolnir --scope changed` | เฉพาะสิ่งที่ branch ของคุณนำเข้ามา (รูปแบบสำหรับ CI) |
182
- | `mjolnir ci install` | สร้าง PR workflow แบบให้คำแนะนำ (ใช้ action) |
183
- | `mjolnir explain QA-CI-001` | อะไร ทำไม และวิธีแก้ พร้อมอัตรา FP ที่วัดได้ |
184
- | `mjolnir why src/a.spec.ts:42` | เหตุผลที่บรรทัดนี้ถูกทำเครื่องหมาย ไม่บล็อกเลย |
185
- | `mjolnir forensics ./test-results/` | หลักฐานรันไทม์จากการรันจริง |
186
- | `mjolnir trust-report` | Trust Artifact แบบครบในตัว (md + json) |
187
- | `mjolnir handoff` | แผนการแก้ไขสำหรับเอเจนต์เขียนโค้ด |
188
- | `mjolnir --json` / `--format sarif` | ผลลัพธ์ที่เครื่องอ่านได้, GitHub Code Scanning |
189
- | `mjolnir --format codequality` | รายงาน GitLab Code Quality (อาร์ติแฟกต์สำหรับวิดเจ็ต MR) |
190
- | `mjolnir --strict` | รันกฎระดับ quarantine ด้วย (ความเสี่ยง FP สูงกว่า) |
190
+ `mjolnir ci install` เขียนสิ่งนี้เป็น GitHub Actions workflow โดยใช้ [action](https://github.com/Sergey-Bar/Mjolnir#readme) ที่ปักไว้กับแท็กหลัก `v3` (หรือใช้ `npx` ธรรมดาด้วย `--no-action`) มันจะอยู่ในโหมดให้คำแนะนำจนกว่าคุณจะตัดสินใจให้มันบล็อก
191
+
192
+ | คำสั่ง | สิ่งที่ทำ |
193
+ | --------------------------------------------- | -------------------------------------------------------- |
194
+ | `mjolnir` | Trust Report: คำตัดสิน ความมั่นใจ ขั้นตอนถัดไป |
195
+ | `mjolnir --scope changed` | เฉพาะสิ่งที่ branch ของคุณนำเข้ามา (รูปแบบสำหรับ CI) |
196
+ | `mjolnir ci install` | สร้าง PR workflow แบบให้คำแนะนำ (ใช้ action) |
197
+ | `mjolnir business-case` | ROI estimate: projected savings per finding |
198
+ | `mjolnir release-report` | Release readiness: GO, CONDITIONAL GO, or NO-GO |
199
+ | `mjolnir release-trust` | 12-dimension release assurance verdict |
200
+ | `mjolnir report` | Generate a Playwright-compatible report |
201
+ | `mjolnir trend` | Record, show, or diff local quality snapshots |
202
+ | `mjolnir policy` | Initialize, validate, or check policy gates |
203
+ | `mjolnir quarantine` | Review deterministic proposals (prototype) |
204
+ | `mjolnir analyze --cross-file` | Bounded cross-file analysis |
205
+ | `mjolnir ci-adapter github .` | Generate CI templates for supported providers |
206
+ | `mjolnir dashboard` | Generate a self-contained quality dashboard |
207
+ | `mjolnir exec-report` | Executive KPIs and recommendations (advisory) |
208
+ | `mjolnir enterprise` | Self-hosted templates (prototype) |
209
+ | `mjolnir maturity` | Assess maturity or display maturity levels |
210
+ | `mjolnir mutation tests/mutation-report.json` | Analyze mutation reports; never promotes trust |
211
+ | `mjolnir mcp` | Read-only MCP tools over stdio |
212
+ | `mjolnir explain QA-CI-001` | อะไร ทำไม และวิธีแก้ พร้อมอัตรา FP ที่วัดได้ |
213
+ | `mjolnir why src/a.spec.ts:42` | เหตุผลที่บรรทัดนี้ถูกทำเครื่องหมาย ไม่บล็อกเลย |
214
+ | `mjolnir forensics ./test-results/` | หลักฐานรันไทม์จากการรันจริง |
215
+ | `mjolnir trust-report` | Trust Artifact แบบครบในตัว (md + json) |
216
+ | `mjolnir handoff` | แผนการแก้ไขสำหรับเอเจนต์เขียนโค้ด |
217
+ | `mjolnir --json` / `--format sarif` | ผลลัพธ์ที่เครื่องอ่านได้, GitHub Code Scanning |
218
+ | `mjolnir --format codequality` | รายงาน GitLab Code Quality (อาร์ติแฟกต์สำหรับวิดเจ็ต MR) |
219
+ | `mjolnir --strict` | รันกฎระดับ quarantine ด้วย (ความเสี่ยง FP สูงกว่า) |
191
220
 
192
221
  <details>
193
222
  <summary><strong>คำสั่งอื่นทั้งหมด</strong> — คัดแยกเทสต์ไม่เสถียร การรายงาน การกำกับดูแล</summary>
@@ -452,18 +481,18 @@ mjolnir ci install
452
481
  หรือเพิ่ม action จาก Marketplace ลงใน workflow ที่คุณมีอยู่แล้ว:
453
482
 
454
483
  ```yaml
455
- - uses: Sergey-Bar/Mjolnir@v1
484
+ - uses: Sergey-Bar/Mjolnir@v3
456
485
  with:
457
486
  scope: changed
458
487
  fail-on: error
459
488
  ```
460
489
 
461
- ปัก `@v1` เพื่อติดตามสายเวอร์ชันหลัก หรือปักแท็กที่แน่นอน (`@v0.5.32`) เพื่อด่านที่ทำซ้ำได้ [docs/DISTRIBUTION-KIT.md](docs/DISTRIBUTION-KIT.md) ครอบคลุม Marketplace, Smithery และทะเบียน MCP
490
+ ปัก `@v3` เพื่อติดตามสายเวอร์ชันหลัก หรือปักแท็กที่แน่นอน (`@v0.5.32`) เพื่อด่านที่ทำซ้ำได้ [docs/DISTRIBUTION-KIT.md](docs/DISTRIBUTION-KIT.md) ครอบคลุม Marketplace, Smithery และทะเบียน MCP
462
491
 
463
492
  หากต้องการส่งข้อค้นพบเข้า GitHub Code Scanning ให้อัปโหลด SARIF (ต้องมี `security-events: write` ที่ระดับ workflow หรือ job):
464
493
 
465
494
  ```yaml
466
- - run: npx mjolnir-qa@latest --format sarif > mjolnir.sarif
495
+ - run: npx mjolnir-qa@3.0.0 --format sarif > mjolnir.sarif
467
496
  continue-on-error: true
468
497
  - uses: github/codeql-action/upload-sarif@v3
469
498
  if: ${{ !cancelled() }}
@@ -476,7 +505,7 @@ mjolnir ci install
476
505
  ### การระบุที่มาในขอบเขตที่เปลี่ยนแปลง
477
506
 
478
507
  ```bash
479
- npx mjolnir-qa@latest --scope changed
508
+ npx mjolnir-qa@3.0.0 --scope changed
480
509
  ```
481
510
 
482
511
  ข้อค้นพบถูกระบุไปยังบรรทัดที่ branch ของคุณเพิ่มเข้ามา โดยวัดเทียบกับ **merge-base** ขอบเขตคือชุดไฟล์เดียวกับที่การสแกนเต็มค้นพบ (spec ของ TS/JS และการตั้งค่า adapter, `test_*.py`, `*Test.java`, `*Tests.cs`, `.github/workflows/*.yml`) รวมกับการเปลี่ยนแปลงที่ยังไม่คอมมิตและที่ไม่ได้ติดตาม จึงใช้ได้ตั้งแต่ก่อนคอมมิต ฐานถูกหาตามลำดับ `main → master → origin/main → origin/master → origin/HEAD` และแทนที่ได้ด้วย `--base <ref>`
@@ -504,7 +533,7 @@ SCAN → EVIDENCE → HANDOFF → AGENT → RE-SCAN → PROOF
504
533
  เพิ่มลงในไคลเอนต์ที่มี CLI ของตัวเอง:
505
534
 
506
535
  ```bash
507
- claude mcp add mjolnir -- npx -y mjolnir-qa@latest mcp
536
+ claude mcp add mjolnir -- npx -y mjolnir-qa@3.0.0 mcp
508
537
  ```
509
538
 
510
539
  หรือในไคลเอนต์ใดก็ได้ที่รับบล็อก `mcpServers`:
@@ -512,7 +541,7 @@ claude mcp add mjolnir -- npx -y mjolnir-qa@latest mcp
512
541
  ```json
513
542
  {
514
543
  "mcpServers": {
515
- "mjolnir": { "command": "npx", "args": ["-y", "mjolnir-qa@latest", "mcp"] }
544
+ "mjolnir": { "command": "npx", "args": ["-y", "mjolnir-qa@3.0.0", "mcp"] }
516
545
  }
517
546
  }
518
547
  ```
@@ -603,7 +632,7 @@ mjolnir create-rule QA-PW-140 --title "Screenshot without diff bound"
603
632
  <img src="assets/readme/closing.svg" alt="ลองรันกับรีโพของคุณ" width="100%" />
604
633
 
605
634
  ```bash
606
- npx mjolnir-qa@latest
635
+ npx mjolnir-qa@3.0.0
607
636
  ```
608
637
 
609
638
  [อ่านคู่มือ](https://sergey-bar.github.io/Mjolnir/guide/getting-started) · [เว็บไซต์เอกสาร](https://sergey-bar.github.io/Mjolnir/) · [npm](https://www.npmjs.com/package/mjolnir-qa)
package/README.tr.md CHANGED
@@ -18,7 +18,7 @@ ardından sonuca ne kadar güvenilebileceğini, her puanın kanıtıyla birlikte
18
18
  [![node](https://img.shields.io/badge/node-%E2%89%A5%2022.18-1F6F7C.svg?style=flat-square&labelColor=0A1119)](https://nodejs.org)
19
19
 
20
20
  ```bash
21
- npx mjolnir-qa@latest
21
+ npx mjolnir-qa@3.0.0
22
22
  ```
23
23
 
24
24
  [Çalışırken görün](#çalışırken-görün) · [Hızlı başlangıç](#hızlı-başlangıç) · [Neler bulur](#mjölnir-neler-bulur) · [Puan](#güvenilirlik-puanı) · [Kanıt](#kanıt-modeli) · [Çalıştırma analizi](#test-çalıştırma-analizi) · [CI](#ci-bütünlüğü) · [Ajanlar](#yapay-zekâ-ajanları) · [Güvenlik](#güven-ve-güvenlik) · [Sınırlar](#mjölnirin-size-söyleyemedikleri) · [Belgeler](#belgeler)
@@ -28,9 +28,9 @@ npx mjolnir-qa@latest
28
28
 
29
29
  [English](README.md) | [简体中文](README.zh.md) | [繁體中文](README.zht.md) | [한국어](README.ko.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Français](README.fr.md) | [Italiano](README.it.md) | [Dansk](README.da.md) | [日本語](README.ja.md) | [Polski](README.pl.md) | [Русский](README.ru.md) | [Norsk](README.no.md) | [Português (Brasil)](README.br.md) | [ไทย](README.th.md) | Türkçe | [Українська](README.uk.md) | [বাংলা](README.bn.md) | [Ελληνικά](README.gr.md) | [Tiếng Việt](README.vi.md) | [עברית](README.he.md) | [العربية](README.ar.md) | [Bosanski](README.bs.md)
30
30
 
31
- > 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-15.
31
+ > 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-26.
32
32
 
33
- <!-- Source hash: 3541b09e8d04 -->
33
+ <!-- Source hash: `de04dfb1677b` -->
34
34
 
35
35
  </details>
36
36
 
@@ -38,6 +38,20 @@ npx mjolnir-qa@latest
38
38
 
39
39
  <br />
40
40
 
41
+ ## Release status (English canonical)
42
+
43
+ The published line is `3.0.0`; this working tree is the `4.0.0-rc.1`
44
+ candidate. `3.0.0` must not be republished or retagged. The M26–M50 program is
45
+ tracked in
46
+ [`docs/ROADMAP.yaml`](docs/ROADMAP.yaml); provisional capability contracts
47
+ are not automatically enabled or certified. Repository-owned checks pass, but
48
+ Trust certification remains `NOT_CERTIFIED` until the protected holdout,
49
+ real-world, platform/consumer, remote-workflow, support-matrix, and corpus
50
+ evidence gates pass. Run `npm run m26:readiness` before treating any candidate
51
+ as releasable. This document does not publish a tag or authorize a release.
52
+
53
+ > Machine-assisted canonical text. Translate this block before treating it as localized copy.
54
+
41
55
  ## Yeşil onay işareti bir iddiadır, kanıt değil
42
56
 
43
57
  Yeşil onay işareti pipeline'ın başarısız olmadığı anlamına gelir. Testlerin çalıştığı ya da başarısız olabilecekleri anlamına gelmez. Bunların her biri yeşil geçer:
@@ -58,7 +72,7 @@ Hiçbiri pipeline'ı kırmızıya çevirmez ve her biri incelemede kasıtlı gö
58
72
 
59
73
  <sub>Demo taramasının bu workflow için raporladığı her bulgu, raporlandığı satırda. `npm run docs:readme-brand` ile [`demo-report.json`](assets/readme/demo-report.json) kaynağından üretilir ve CI'da sapmaya karşı kilitlenir.</sub>
60
74
 
61
- **Katı mod.** En agresif tespitler — `.only`, `continue-on-error`, boş testler, tekrar kötüye kullanımı — karantina katında yaşar. Yalnızca `--strict` altında çalışır ve `info` şiddetindedir: işaretlerler, asla engellemezler. Varsayılan tarama (`--strict` olmayan `npx mjolnir-qa@latest`) yalnızca çekirdek ve genişletilmiş kuralları kapsar. Danışmanlık katmanını da istediğinizde `--strict` ekleyin.
75
+ **Katı mod.** En agresif tespitler — `.only`, `continue-on-error`, boş testler, tekrar kötüye kullanımı — karantina katında yaşar. Yalnızca `--strict` altında çalışır ve `info` şiddetindedir: işaretlerler, asla engellemezler. Varsayılan tarama (`--strict` olmayan `npx mjolnir-qa@3.0.0`) yalnızca çekirdek ve genişletilmiş kuralları kapsar. Danışmanlık katmanını da istediğinizde `--strict` ekleyin.
62
76
 
63
77
  Mjölnir test paketini, CI workflow'larını ve varsa gerçek bir çalıştırmanın raporunu okur. Testlerinizi çalıştırmaz, bağımlılıklarınızı kurmaz ve taradığı kodu yürütmez. Kanıtı olmadığında da güven uydurmak yerine bunu açıkça söyler:
64
78
 
@@ -93,7 +107,7 @@ CI workflow'u olan küçük bir Playwright paketi olan [`examples/demo-repo`](ex
93
107
 
94
108
  <p align="center">
95
109
  <a href="assets/video/mjolnir-demo.mp4">
96
- <img src="assets/video/mjolnir-demo-poster.png" alt="Demo kaydından bir kare: npx mjolnir-qa@latest bir terminal penceresinde demo deposunu tarıyor" width="900" />
110
+ <img src="assets/video/mjolnir-demo-poster.png" alt="Demo kaydından bir kare: npx mjolnir-qa@3.0.0 bir terminal penceresinde demo deposunu tarıyor" width="900" />
97
111
  </a>
98
112
  </p>
99
113
 
@@ -162,7 +176,7 @@ Değer birimi budur: CI'ın hak etmediği bir geçişi raporladığı tek bir ye
162
176
  ## Hızlı başlangıç
163
177
 
164
178
  ```bash
165
- npx mjolnir-qa@latest
179
+ npx mjolnir-qa@3.0.0
166
180
  ```
167
181
 
168
182
  Geçerli dizini tarar ve Trust Report'u yazdırır: ne bulduğunu, ne kadar güvenebileceğinizi, nedenini ve sırada ne yapmanız gerektiğini. Kapı düzeyinde ya da üstünde hiçbir şey bulunmazsa `0` ile çıkar.
@@ -170,24 +184,39 @@ Geçerli dizini tarar ve Trust Report'u yazdırır: ne bulduğunu, ne kadar güv
170
184
  CI'da yalnızca dalın getirdiklerini tarayın; böylece eski bir test paketi ilk pull request'inizi boğmaz:
171
185
 
172
186
  ```bash
173
- npx mjolnir-qa@latest --scope changed
187
+ npx mjolnir-qa@3.0.0 --scope changed
174
188
  ```
175
189
 
176
- `mjolnir ci install` bunu, ana `v1` etiketine sabitlenmiş [action](https://github.com/Sergey-Bar/Mjolnir#readme) ile bir GitHub Actions workflow'u olarak yazar (ya da `--no-action` ile düz `npx`). Siz engellemesi gerektiğine karar verene kadar tavsiye niteliğinde kalır.
177
-
178
- | Komut | Ne yapar |
179
- | ----------------------------------- | --------------------------------------------------------------------- |
180
- | `mjolnir` | Trust Report: karar, güven düzeyi, sonraki adım |
181
- | `mjolnir --scope changed` | Yalnızca dalınızın getirdikleri (CI biçimi) |
182
- | `mjolnir ci install` | Tavsiye niteliğindeki PR workflow'unu üretir (action tabanlı) |
183
- | `mjolnir explain QA-CI-001` | Ne, neden ve düzeltme; ayrıca ölçülmüş FP oranı |
184
- | `mjolnir why src/a.spec.ts:42` | Tam olarak bu satırın neden işaretlendiği. Asla engellemez. |
185
- | `mjolnir forensics ./test-results/` | Gerçek bir çalıştırmadan çalışma zamanı kanıtı |
186
- | `mjolnir trust-report` | Kendi içinde bütün Trust Artifact (md + json) |
187
- | `mjolnir handoff` | Kodlama ajanı için iyileştirme planı |
188
- | `mjolnir --json` / `--format sarif` | Makine tarafından okunabilir çıktı, GitHub Code Scanning |
189
- | `mjolnir --format codequality` | GitLab Code Quality raporu (MR widget'ı artefaktı) |
190
- | `mjolnir --strict` | quarantine düzeyindeki kuralları da çalıştırır (daha yüksek FP riski) |
190
+ `mjolnir ci install` bunu, ana `v3` etiketine sabitlenmiş [action](https://github.com/Sergey-Bar/Mjolnir#readme) ile bir GitHub Actions workflow'u olarak yazar (ya da `--no-action` ile düz `npx`). Siz engellemesi gerektiğine karar verene kadar tavsiye niteliğinde kalır.
191
+
192
+ | Komut | Ne yapar |
193
+ | --------------------------------------------- | --------------------------------------------------------------------- |
194
+ | `mjolnir` | Trust Report: karar, güven düzeyi, sonraki adım |
195
+ | `mjolnir --scope changed` | Yalnızca dalınızın getirdikleri (CI biçimi) |
196
+ | `mjolnir ci install` | Tavsiye niteliğindeki PR workflow'unu üretir (action tabanlı) |
197
+ | `mjolnir business-case` | ROI estimate: projected savings per finding |
198
+ | `mjolnir release-report` | Release readiness: GO, CONDITIONAL GO, or NO-GO |
199
+ | `mjolnir release-trust` | 12-dimension release assurance verdict |
200
+ | `mjolnir report` | Generate a Playwright-compatible report |
201
+ | `mjolnir trend` | Record, show, or diff local quality snapshots |
202
+ | `mjolnir policy` | Initialize, validate, or check policy gates |
203
+ | `mjolnir quarantine` | Review deterministic proposals (prototype) |
204
+ | `mjolnir analyze --cross-file` | Bounded cross-file analysis |
205
+ | `mjolnir ci-adapter github .` | Generate CI templates for supported providers |
206
+ | `mjolnir dashboard` | Generate a self-contained quality dashboard |
207
+ | `mjolnir exec-report` | Executive KPIs and recommendations (advisory) |
208
+ | `mjolnir enterprise` | Self-hosted templates (prototype) |
209
+ | `mjolnir maturity` | Assess maturity or display maturity levels |
210
+ | `mjolnir mutation tests/mutation-report.json` | Analyze mutation reports; never promotes trust |
211
+ | `mjolnir mcp` | Read-only MCP tools over stdio |
212
+ | `mjolnir explain QA-CI-001` | Ne, neden ve düzeltme; ayrıca ölçülmüş FP oranı |
213
+ | `mjolnir why src/a.spec.ts:42` | Tam olarak bu satırın neden işaretlendiği. Asla engellemez. |
214
+ | `mjolnir forensics ./test-results/` | Gerçek bir çalıştırmadan çalışma zamanı kanıtı |
215
+ | `mjolnir trust-report` | Kendi içinde bütün Trust Artifact (md + json) |
216
+ | `mjolnir handoff` | Kodlama ajanı için iyileştirme planı |
217
+ | `mjolnir --json` / `--format sarif` | Makine tarafından okunabilir çıktı, GitHub Code Scanning |
218
+ | `mjolnir --format codequality` | GitLab Code Quality raporu (MR widget'ı artefaktı) |
219
+ | `mjolnir --strict` | quarantine düzeyindeki kuralları da çalıştırır (daha yüksek FP riski) |
191
220
 
192
221
  <details>
193
222
  <summary><strong>Diğer tüm komutlar</strong> — kararsız test triyajı, raporlama, yönetişim</summary>
@@ -452,18 +481,18 @@ mjolnir ci install
452
481
  Ya da Marketplace action'ını mevcut bir workflow'a ekleyin:
453
482
 
454
483
  ```yaml
455
- - uses: Sergey-Bar/Mjolnir@v1
484
+ - uses: Sergey-Bar/Mjolnir@v3
456
485
  with:
457
486
  scope: changed
458
487
  fail-on: error
459
488
  ```
460
489
 
461
- Ana sürüm hattını izlemek için `@v1`'i, tekrarlanabilir bir kapı için ise tam bir etiketi (`@v0.5.32`) sabitleyin. [docs/DISTRIBUTION-KIT.md](docs/DISTRIBUTION-KIT.md) Marketplace'i, Smithery'yi ve MCP kayıtlarını kapsar.
490
+ Ana sürüm hattını izlemek için `@v3`'i, tekrarlanabilir bir kapı için ise tam bir etiketi (`@v0.5.32`) sabitleyin. [docs/DISTRIBUTION-KIT.md](docs/DISTRIBUTION-KIT.md) Marketplace'i, Smithery'yi ve MCP kayıtlarını kapsar.
462
491
 
463
492
  Bulguları GitHub Code Scanning'e aktarmak için SARIF yükleyin (workflow veya job kapsamında `security-events: write` gerekir):
464
493
 
465
494
  ```yaml
466
- - run: npx mjolnir-qa@latest --format sarif > mjolnir.sarif
495
+ - run: npx mjolnir-qa@3.0.0 --format sarif > mjolnir.sarif
467
496
  continue-on-error: true
468
497
  - uses: github/codeql-action/upload-sarif@v3
469
498
  if: ${{ !cancelled() }}
@@ -476,7 +505,7 @@ GitLab'de `--format codequality`, MR widget'ının ve diff açıklamalarının o
476
505
  ### Değişen kapsamda atıf
477
506
 
478
507
  ```bash
479
- npx mjolnir-qa@latest --scope changed
508
+ npx mjolnir-qa@3.0.0 --scope changed
480
509
  ```
481
510
 
482
511
  Bulgular, dalınızın eklediği satırlara **merge-base**'e göre ölçülerek atfedilir. Kapsam, tam bir taramanın keşfettiği dosya kümesinin aynısıdır (TS/JS spec'leri ve adaptör yapılandırmaları, `test_*.py`, `*Test.java`, `*Tests.cs`, `.github/workflows/*.yml`); buna commit edilmemiş ve izlenmeyen değişiklikler de eklenir, böylece commit etmeden önce de çalışır. Taban `main → master → origin/main → origin/master → origin/HEAD` sırasıyla çözülür; `--base <ref>` ile geçersiz kılabilirsiniz.
@@ -504,7 +533,7 @@ SCAN → EVIDENCE → HANDOFF → AGENT → RE-SCAN → PROOF
504
533
  Kendi CLI'ı olan bir istemciye ekleyin:
505
534
 
506
535
  ```bash
507
- claude mcp add mjolnir -- npx -y mjolnir-qa@latest mcp
536
+ claude mcp add mjolnir -- npx -y mjolnir-qa@3.0.0 mcp
508
537
  ```
509
538
 
510
539
  Ya da `mcpServers` bloğu kabul eden herhangi bir istemciye:
@@ -512,7 +541,7 @@ Ya da `mcpServers` bloğu kabul eden herhangi bir istemciye:
512
541
  ```json
513
542
  {
514
543
  "mcpServers": {
515
- "mjolnir": { "command": "npx", "args": ["-y", "mjolnir-qa@latest", "mcp"] }
544
+ "mjolnir": { "command": "npx", "args": ["-y", "mjolnir-qa@3.0.0", "mcp"] }
516
545
  }
517
546
  }
518
547
  ```
@@ -603,7 +632,7 @@ Geliştirme ortamı, kalıcı kapı komutları ve anti-creep ile fixture güvenl
603
632
  <img src="assets/readme/closing.svg" alt="Deponuzda çalıştırın." width="100%" />
604
633
 
605
634
  ```bash
606
- npx mjolnir-qa@latest
635
+ npx mjolnir-qa@3.0.0
607
636
  ```
608
637
 
609
638
  [Rehberi okuyun](https://sergey-bar.github.io/Mjolnir/guide/getting-started) · [Belge sitesi](https://sergey-bar.github.io/Mjolnir/) · [npm](https://www.npmjs.com/package/mjolnir-qa)
package/README.uk.md CHANGED
@@ -18,7 +18,7 @@ Mjölnir знаходить тести, які не можуть впасти,
18
18
  [![node](https://img.shields.io/badge/node-%E2%89%A5%2022.18-1F6F7C.svg?style=flat-square&labelColor=0A1119)](https://nodejs.org)
19
19
 
20
20
  ```bash
21
- npx mjolnir-qa@latest
21
+ npx mjolnir-qa@3.0.0
22
22
  ```
23
23
 
24
24
  [Подивитися в роботі](#подивитися-в-роботі) · [Швидкий старт](#швидкий-старт) · [Що знаходить](#що-знаходить-mjölnir) · [Оцінка](#оцінка-надійності) · [Докази](#модель-доказів) · [Аналіз прогонів](#аналіз-прогонів-тестів) · [CI](#цілісність-ci) · [Агенти](#ші-агенти) · [Безпека](#довіра-і-безпека) · [Обмеження](#чого-mjölnir-сказати-не-може) · [Документація](#документація)
@@ -28,9 +28,9 @@ npx mjolnir-qa@latest
28
28
 
29
29
  [English](README.md) | [简体中文](README.zh.md) | [繁體中文](README.zht.md) | [한국어](README.ko.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Français](README.fr.md) | [Italiano](README.it.md) | [Dansk](README.da.md) | [日本語](README.ja.md) | [Polski](README.pl.md) | [Русский](README.ru.md) | [Norsk](README.no.md) | [Português (Brasil)](README.br.md) | [ไทย](README.th.md) | [Türkçe](README.tr.md) | Українська | [বাংলা](README.bn.md) | [Ελληνικά](README.gr.md) | [Tiếng Việt](README.vi.md) | [עברית](README.he.md) | [العربية](README.ar.md) | [Bosanski](README.bs.md)
30
30
 
31
- > 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-15.
31
+ > 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-26.
32
32
 
33
- <!-- Source hash: 3541b09e8d04 -->
33
+ <!-- Source hash: `de04dfb1677b` -->
34
34
 
35
35
  </details>
36
36
 
@@ -38,6 +38,20 @@ npx mjolnir-qa@latest
38
38
 
39
39
  <br />
40
40
 
41
+ ## Release status (English canonical)
42
+
43
+ The published line is `3.0.0`; this working tree is the `4.0.0-rc.1`
44
+ candidate. `3.0.0` must not be republished or retagged. The M26–M50 program is
45
+ tracked in
46
+ [`docs/ROADMAP.yaml`](docs/ROADMAP.yaml); provisional capability contracts
47
+ are not automatically enabled or certified. Repository-owned checks pass, but
48
+ Trust certification remains `NOT_CERTIFIED` until the protected holdout,
49
+ real-world, platform/consumer, remote-workflow, support-matrix, and corpus
50
+ evidence gates pass. Run `npm run m26:readiness` before treating any candidate
51
+ as releasable. This document does not publish a tag or authorize a release.
52
+
53
+ > Machine-assisted canonical text. Translate this block before treating it as localized copy.
54
+
41
55
  ## Зелена галочка — це заява, а не доказ
42
56
 
43
57
  Зелена галочка означає, що пайплайн не впав. Вона не означає, що тести запускалися або що вони могли впасти. Кожен із цих випадків проходить зеленим:
@@ -58,7 +72,7 @@ npx mjolnir-qa@latest
58
72
 
59
73
  <sub>Кожна знахідка, яку демонстраційне сканування видало для цього workflow, на вказаному рядку. Згенеровано командою `npm run docs:readme-brand` з [`demo-report.json`](assets/readme/demo-report.json) і захищено від розбіжностей у CI.</sub>
60
74
 
61
- **Суворий режим.** Найагресивніші детекції — `.only`, `continue-on-error`, порожні тести, зловживання повторами — живуть у карантинному ярусі. Вони запускаються лише з `--strict` і обмежені серйозністю `info`: позначають, але ніколи не блокують. Сканування за замовчуванням (`npx mjolnir-qa@latest` без `--strict`) покриває лише основні та розширені правила. Додайте `--strict`, коли хочете і консультаційний шар.
75
+ **Суворий режим.** Найагресивніші детекції — `.only`, `continue-on-error`, порожні тести, зловживання повторами — живуть у карантинному ярусі. Вони запускаються лише з `--strict` і обмежені серйозністю `info`: позначають, але ніколи не блокують. Сканування за замовчуванням (`npx mjolnir-qa@3.0.0` без `--strict`) покриває лише основні та розширені правила. Додайте `--strict`, коли хочете і консультаційний шар.
62
76
 
63
77
  Mjölnir читає набір тестів, CI-workflow і, якщо він є, звіт реального прогону. Він не запускає ваші тести, не встановлює залежності й не виконує код, який сканує. А коли доказів немає, він так і каже, замість того щоб вигадувати впевненість:
64
78
 
@@ -93,7 +107,7 @@ Mjölnir читає набір тестів, CI-workflow і, якщо він є,
93
107
 
94
108
  <p align="center">
95
109
  <a href="assets/video/mjolnir-demo.mp4">
96
- <img src="assets/video/mjolnir-demo-poster.png" alt="Кадр демонстраційного запису: npx mjolnir-qa@latest сканує демонстраційний репозиторій у вікні термінала" width="900" />
110
+ <img src="assets/video/mjolnir-demo-poster.png" alt="Кадр демонстраційного запису: npx mjolnir-qa@3.0.0 сканує демонстраційний репозиторій у вікні термінала" width="900" />
97
111
  </a>
98
112
  </p>
99
113
 
@@ -162,7 +176,7 @@ Docs: mjolnir rules --md (full catalog, this rule included)
162
176
  ## Швидкий старт
163
177
 
164
178
  ```bash
165
- npx mjolnir-qa@latest
179
+ npx mjolnir-qa@3.0.0
166
180
  ```
167
181
 
168
182
  Він сканує поточний каталог і виводить Trust Report: що знайдено, наскільки цьому можна довіряти, чому і що робити далі. Він завершується з кодом `0`, якщо на рівні гейта або вище нічого не знайдено.
@@ -170,24 +184,39 @@ npx mjolnir-qa@latest
170
184
  У CI скануйте лише те, що внесла гілка, щоб успадкований набір тестів не втопив ваш перший pull request:
171
185
 
172
186
  ```bash
173
- npx mjolnir-qa@latest --scope changed
187
+ npx mjolnir-qa@3.0.0 --scope changed
174
188
  ```
175
189
 
176
- `mjolnir ci install` записує це як workflow GitHub Actions з [action](https://github.com/Sergey-Bar/Mjolnir#readme), закріпленим на мажорному тезі `v1` (або просто `npx` з `--no-action`). Він залишається рекомендаційним, доки ви не вирішите, що він має блокувати.
177
-
178
- | Команда | Що робить |
179
- | ----------------------------------- | ---------------------------------------------------------- |
180
- | `mjolnir` | Trust Report: вердикт, упевненість, наступна дія |
181
- | `mjolnir --scope changed` | Лише те, що внесла ваша гілка (варіант для CI) |
182
- | `mjolnir ci install` | Створює рекомендаційний workflow для PR (на основі action) |
183
- | `mjolnir explain QA-CI-001` | Що, чому і як виправити, плюс виміряна частка FP |
184
- | `mjolnir why src/a.spec.ts:42` | Чому позначено саме цей рядок. Ніколи не блокує. |
185
- | `mjolnir forensics ./test-results/` | Докази з реального прогону |
186
- | `mjolnir trust-report` | Самодостатній Trust Artifact (md + json) |
187
- | `mjolnir handoff` | План виправлень для агента-програміста |
188
- | `mjolnir --json` / `--format sarif` | Машинозчитуваний вивід, GitHub Code Scanning |
189
- | `mjolnir --format codequality` | Звіт GitLab Code Quality (артефакт віджета MR) |
190
- | `mjolnir --strict` | Також запускає правила рівня quarantine (вищий ризик FP) |
190
+ `mjolnir ci install` записує це як workflow GitHub Actions з [action](https://github.com/Sergey-Bar/Mjolnir#readme), закріпленим на мажорному тезі `v3` (або просто `npx` з `--no-action`). Він залишається рекомендаційним, доки ви не вирішите, що він має блокувати.
191
+
192
+ | Команда | Що робить |
193
+ | --------------------------------------------- | ---------------------------------------------------------- |
194
+ | `mjolnir` | Trust Report: вердикт, упевненість, наступна дія |
195
+ | `mjolnir --scope changed` | Лише те, що внесла ваша гілка (варіант для CI) |
196
+ | `mjolnir ci install` | Створює рекомендаційний workflow для PR (на основі action) |
197
+ | `mjolnir business-case` | ROI estimate: projected savings per finding |
198
+ | `mjolnir release-report` | Release readiness: GO, CONDITIONAL GO, or NO-GO |
199
+ | `mjolnir release-trust` | 12-dimension release assurance verdict |
200
+ | `mjolnir report` | Generate a Playwright-compatible report |
201
+ | `mjolnir trend` | Record, show, or diff local quality snapshots |
202
+ | `mjolnir policy` | Initialize, validate, or check policy gates |
203
+ | `mjolnir quarantine` | Review deterministic proposals (prototype) |
204
+ | `mjolnir analyze --cross-file` | Bounded cross-file analysis |
205
+ | `mjolnir ci-adapter github .` | Generate CI templates for supported providers |
206
+ | `mjolnir dashboard` | Generate a self-contained quality dashboard |
207
+ | `mjolnir exec-report` | Executive KPIs and recommendations (advisory) |
208
+ | `mjolnir enterprise` | Self-hosted templates (prototype) |
209
+ | `mjolnir maturity` | Assess maturity or display maturity levels |
210
+ | `mjolnir mutation tests/mutation-report.json` | Analyze mutation reports; never promotes trust |
211
+ | `mjolnir mcp` | Read-only MCP tools over stdio |
212
+ | `mjolnir explain QA-CI-001` | Що, чому і як виправити, плюс виміряна частка FP |
213
+ | `mjolnir why src/a.spec.ts:42` | Чому позначено саме цей рядок. Ніколи не блокує. |
214
+ | `mjolnir forensics ./test-results/` | Докази з реального прогону |
215
+ | `mjolnir trust-report` | Самодостатній Trust Artifact (md + json) |
216
+ | `mjolnir handoff` | План виправлень для агента-програміста |
217
+ | `mjolnir --json` / `--format sarif` | Машинозчитуваний вивід, GitHub Code Scanning |
218
+ | `mjolnir --format codequality` | Звіт GitLab Code Quality (артефакт віджета MR) |
219
+ | `mjolnir --strict` | Також запускає правила рівня quarantine (вищий ризик FP) |
191
220
 
192
221
  <details>
193
222
  <summary><strong>Усі інші команди</strong> — розбір нестабільних тестів, звіти, контроль</summary>
@@ -452,18 +481,18 @@ mjolnir ci install
452
481
  Або додайте action із Marketplace до вже наявного workflow:
453
482
 
454
483
  ```yaml
455
- - uses: Sergey-Bar/Mjolnir@v1
484
+ - uses: Sergey-Bar/Mjolnir@v3
456
485
  with:
457
486
  scope: changed
458
487
  fail-on: error
459
488
  ```
460
489
 
461
- Закріпіть `@v1`, щоб слідувати мажорній лінії, або точний тег (`@v0.5.32`) для відтворюваного гейта. [docs/DISTRIBUTION-KIT.md](docs/DISTRIBUTION-KIT.md) описує Marketplace, Smithery та реєстри MCP.
490
+ Закріпіть `@v3`, щоб слідувати мажорній лінії, або точний тег (`@v0.5.32`) для відтворюваного гейта. [docs/DISTRIBUTION-KIT.md](docs/DISTRIBUTION-KIT.md) описує Marketplace, Smithery та реєстри MCP.
462
491
 
463
492
  Щоб надіслати знахідки в GitHub Code Scanning, завантажте SARIF (потрібен `security-events: write` на рівні workflow або job):
464
493
 
465
494
  ```yaml
466
- - run: npx mjolnir-qa@latest --format sarif > mjolnir.sarif
495
+ - run: npx mjolnir-qa@3.0.0 --format sarif > mjolnir.sarif
467
496
  continue-on-error: true
468
497
  - uses: github/codeql-action/upload-sarif@v3
469
498
  if: ${{ !cancelled() }}
@@ -476,7 +505,7 @@ mjolnir ci install
476
505
  ### Прив'язка до змін гілки
477
506
 
478
507
  ```bash
479
- npx mjolnir-qa@latest --scope changed
508
+ npx mjolnir-qa@3.0.0 --scope changed
480
509
  ```
481
510
 
482
511
  Знахідки прив'язуються до рядків, доданих вашою гілкою, відносно **merge-base**. Область — той самий набір файлів, що знаходить повне сканування (специфікації TS/JS і конфігурації адаптерів, `test_*.py`, `*Test.java`, `*Tests.cs`, `.github/workflows/*.yml`), плюс незакомічені й невідстежувані зміни, тож це працює ще до коміту. Базу визначають у порядку `main → master → origin/main → origin/master → origin/HEAD`; її можна перевизначити через `--base <ref>`.
@@ -504,7 +533,7 @@ SCAN → EVIDENCE → HANDOFF → AGENT → RE-SCAN → PROOF
504
533
  Додайте його до клієнта, який має власний CLI:
505
534
 
506
535
  ```bash
507
- claude mcp add mjolnir -- npx -y mjolnir-qa@latest mcp
536
+ claude mcp add mjolnir -- npx -y mjolnir-qa@3.0.0 mcp
508
537
  ```
509
538
 
510
539
  Або до будь-якого клієнта, що приймає блок `mcpServers`:
@@ -512,7 +541,7 @@ claude mcp add mjolnir -- npx -y mjolnir-qa@latest mcp
512
541
  ```json
513
542
  {
514
543
  "mcpServers": {
515
- "mjolnir": { "command": "npx", "args": ["-y", "mjolnir-qa@latest", "mcp"] }
544
+ "mjolnir": { "command": "npx", "args": ["-y", "mjolnir-qa@3.0.0", "mcp"] }
516
545
  }
517
546
  }
518
547
  ```
@@ -603,7 +632,7 @@ mjolnir create-rule QA-PW-140 --title "Screenshot without diff bound"
603
632
  <img src="assets/readme/closing.svg" alt="Запустіть його на своєму репозиторії." width="100%" />
604
633
 
605
634
  ```bash
606
- npx mjolnir-qa@latest
635
+ npx mjolnir-qa@3.0.0
607
636
  ```
608
637
 
609
638
  [Читати посібник](https://sergey-bar.github.io/Mjolnir/guide/getting-started) · [Сайт документації](https://sergey-bar.github.io/Mjolnir/) · [npm](https://www.npmjs.com/package/mjolnir-qa)