mjolnir-qa 2.0.0 → 2.0.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/CHANGELOG.md CHANGED
@@ -9,6 +9,18 @@ Rule behavior changes (new rules, FP-rate changes against the corpus,
9
9
  severity changes) are first-class entries here — rule IDs are immutable
10
10
  once shipped, so this file is the record of what changed between versions.
11
11
 
12
+ ## [Unreleased]
13
+
14
+ ## [2.0.2] — 2026-09-22
15
+
16
+ ### Fixed
17
+
18
+ - **NPM executable metadata** — shipped the package-name `mjolnir-qa` bin
19
+ alias alongside `mjolnir` in the packed tarball, so fresh installs and
20
+ `npx mjolnir-qa@latest` resolve the CLI consistently. This intentionally
21
+ keeps the Mjölnir package/CLI identity and does not include the abandoned
22
+ QA Doctor rebrand.
23
+
12
24
  ## [2.0.0] — 2026-09-17
13
25
 
14
26
  ### Fixed
@@ -19,8 +31,6 @@ once shipped, so this file is the record of what changed between versions.
19
31
 
20
32
  - **Version bump** — bumped package version from 1.1.1 to 2.0.0 across all surfaces (package.json, ENGINE_VERSION, smithery.yaml, rule metadata, docs).
21
33
 
22
- ## [Unreleased]
23
-
24
34
  ## [1.1.1] — 2026-09-16
25
35
 
26
36
  ### Fixed
package/README.ar.md CHANGED
@@ -81,7 +81,7 @@ npx mjolnir-qa@latest
81
81
  فحص حقيقي لـ [`examples/demo-repo`](examples/demo-repo)، وهي مجموعة Playwright صغيرة مع workflow لـ CI. هنا ذهبت نقاطها:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="تفصيل الخصومات في Mjölnir: WORTHINESS 75/100 NEEDS WORK، والدرجة حسب الفئة، ومربع الخصومات حسب الخطورة، وقائمة FIX THIS FIRST" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="تفصيل الخصومات في Mjölnir: WORTHINESS 80/100 WORTHY، والدرجة حسب الفئة، ومربع الخصومات حسب الخطورة، وقائمة FIX THIS FIRST" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>مولَّد بواسطة `npm run docs:hero` من فحص حقيقي ومقفل ضد الانحراف في CI. تقرير `--verbose` الكامل للفحص نفسه هو [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  هذا يقيس **المتانة، لا الصحة**. ينجح `.btn.btn-primary > div:nth-child(2)` اليوم ويظل ينجح إلى أن يلمس أحدٌ الترميز. الدرجة المنخفضة لا تدّعي أبدًا أن الاختبار معطوب، بل فقط أنه يعتمد على ترميز لم يعد أحد بالحفاظ عليه.
package/README.bn.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir স্যুট, CI workflow, এবং আপনার কাছে
81
81
  [`examples/demo-repo`](examples/demo-repo)-এর একটি প্রকৃত স্ক্যান, CI workflow সহ একটি ছোট Playwright স্যুট। এখানেই এর পয়েন্ট গেছে:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="Mjölnir-এর deduction breakdown: WORTHINESS 75/100 NEEDS WORK, বিভাগ অনুযায়ী স্কোর, severity অনুযায়ী deduction box, এবং একটি FIX THIS FIRST তালিকা" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="Mjölnir-এর deduction breakdown: WORTHINESS 80/100 WORTHY, বিভাগ অনুযায়ী স্কোর, severity অনুযায়ী deduction box, এবং একটি FIX THIS FIRST তালিকা" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>`npm run docs:hero` দ্বারা একটি প্রকৃত স্ক্যান থেকে তৈরি এবং CI-তে বিচ্যুতির বিরুদ্ধে লক করা। একই স্ক্যানের সম্পূর্ণ `--verbose` রিপোর্ট হলো [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`)।</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  এটি **resilience পরিমাপ করে, correctness নয়**। `.btn.btn-primary > div:nth-child(2)` আজ পাস করে এবং কেউ markup স্পর্শ না করা পর্যন্ত পাস হতে থাকে। একটি কম স্কোর কখনো দাবি করে না যে টেস্টটি ভাঙা, শুধু বলে যে এটি এমন markup-এর উপর নির্ভরশীল যা রাখার প্রতিশ্রুতি কেউ দেয়নি।
package/README.br.md CHANGED
@@ -81,7 +81,7 @@ O Mjölnir lê a suíte, os workflows de CI e, se você tiver, o relatório de u
81
81
  Um scan real de [`examples/demo-repo`](examples/demo-repo), uma pequena suíte Playwright com um workflow de CI. Foi para cá que os pontos dela foram:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="O detalhamento das deduções do Mjölnir: WORTHINESS 75/100 NEEDS WORK, a pontuação por categoria, o quadro de deduções por severidade e uma lista FIX THIS FIRST" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="O detalhamento das deduções do Mjölnir: WORTHINESS 80/100 WORTHY, a pontuação por categoria, o quadro de deduções por severidade e uma lista FIX THIS FIRST" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>Gerado por `npm run docs:hero` a partir de um scan real e travado contra desvios na CI. O relatório `--verbose` completo do mesmo scan é [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  Isso mede **resiliência, não correção**. `.btn.btn-primary > div:nth-child(2)` passa hoje e continua passando até alguém mexer no markup. Uma pontuação baixa nunca afirma que o teste está quebrado, só que ele depende de um markup que ninguém prometeu manter.
package/README.bs.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir čita skup testova, CI workflowe i, ako ga imate, izvještaj stvarnog p
81
81
  Stvarno skeniranje [`examples/demo-repo`](examples/demo-repo), malog Playwright skupa testova s CI workflowom. Evo gdje su otišli njegovi bodovi:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="Mjölnirov pregled odbitaka: WORTHINESS 75/100 NEEDS WORK, ocjena po kategoriji, okvir odbitaka po ozbiljnosti i lista FIX THIS FIRST" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="Mjölnirov pregled odbitaka: WORTHINESS 80/100 WORTHY, ocjena po kategoriji, okvir odbitaka po ozbiljnosti i lista FIX THIS FIRST" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>Generisano naredbom `npm run docs:hero` iz stvarnog skeniranja i zaključano protiv odstupanja u CI-ju. Puni `--verbose` izvještaj istog skeniranja je [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  Ovo mjeri **otpornost, a ne ispravnost**. `.btn.btn-primary > div:nth-child(2)` prolazi danas i nastavlja prolaziti dok neko ne dirne markup. Niska ocjena nikad ne tvrdi da je test pokvaren, samo da zavisi od markupa koji niko nije obećao sačuvati.
package/README.da.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir læser testsuiten, CI-workflowene og, hvis du har en, rapporten fra en
81
81
  Et rigtigt scan af [`examples/demo-repo`](examples/demo-repo), en lille Playwright-suite med et CI-workflow. Her er, hvor dens point forsvandt hen:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="Mjölnirs opgørelse af fradrag: WORTHINESS 75/100 NEEDS WORK, scoren pr. kategori, fradragsboksen pr. alvorlighed og en FIX THIS FIRST-liste" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="Mjölnirs opgørelse af fradrag: WORTHINESS 80/100 WORTHY, scoren pr. kategori, fradragsboksen pr. alvorlighed og en FIX THIS FIRST-liste" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>Genereret af `npm run docs:hero` ud fra et rigtigt scan og låst mod afvigelser i CI. Den fulde `--verbose`-rapport fra samme scan er [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  Det måler **robusthed, ikke korrekthed**. `.btn.btn-primary > div:nth-child(2)` består i dag og bliver ved med at bestå, indtil nogen rører ved markuppen. En lav score påstår aldrig, at testen er i stykker, kun at den afhænger af markup, som ingen har lovet at bevare.
package/README.de.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir liest die Testsuite, die CI-Workflows und, falls vorhanden, den Report
81
81
  Ein echter Scan von [`examples/demo-repo`](examples/demo-repo), einer kleinen Playwright-Suite mit CI-Workflow. Hier sind seine Punkte geblieben:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="Mjölnirs Abzugsaufschlüsselung: WORTHINESS 75/100 NEEDS WORK, der Score nach Kategorie, die Abzugsbox nach Schweregrad und eine FIX THIS FIRST-Liste" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="Mjölnirs Abzugsaufschlüsselung: WORTHINESS 80/100 WORTHY, der Score nach Kategorie, die Abzugsbox nach Schweregrad und eine FIX THIS FIRST-Liste" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>Erzeugt mit `npm run docs:hero` aus einem echten Scan und in der CI gegen Abweichungen gesichert. Der vollständige `--verbose`-Report desselben Scans ist [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  Das misst **Robustheit, nicht Korrektheit**. `.btn.btn-primary > div:nth-child(2)` besteht heute und besteht weiter, bis jemand das Markup anfasst. Ein niedriger Score behauptet nie, der Test sei kaputt, nur dass er von Markup abhängt, dessen Erhalt niemand versprochen hat.
package/README.es.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir lee la suite, los workflows de CI y, si lo tienes, el informe de una ej
81
81
  Un escaneo real de [`examples/demo-repo`](examples/demo-repo), una pequeña suite de Playwright con un workflow de CI. Aquí es adonde fueron sus puntos:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="El desglose de deducciones de Mjölnir: WORTHINESS 75/100 NEEDS WORK, la puntuación por categoría, el cuadro de deducciones por severidad y una lista FIX THIS FIRST" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="El desglose de deducciones de Mjölnir: WORTHINESS 80/100 WORTHY, la puntuación por categoría, el cuadro de deducciones por severidad y una lista FIX THIS FIRST" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>Generado con `npm run docs:hero` a partir de un escaneo real y bloqueado contra desviaciones en CI. El informe `--verbose` completo del mismo escaneo es [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  Esto mide **resiliencia, no corrección**. `.btn.btn-primary > div:nth-child(2)` pasa hoy y sigue pasando hasta que alguien toca el marcado. Una puntuación baja nunca afirma que el test esté roto, solo que depende de un marcado que nadie prometió mantener.
package/README.fr.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir lit la suite, les workflows CI et, si vous en avez un, le rapport d'une
81
81
  Un vrai scan de [`examples/demo-repo`](examples/demo-repo), une petite suite Playwright avec un workflow CI. Voici où sont partis ses points :
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="Le détail des déductions de Mjölnir : WORTHINESS 75/100 NEEDS WORK, le score par catégorie, l'encadré des déductions par sévérité et une liste FIX THIS FIRST" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="Le détail des déductions de Mjölnir : WORTHINESS 80/100 WORTHY, le score par catégorie, l'encadré des déductions par sévérité et une liste FIX THIS FIRST" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>Généré par `npm run docs:hero` à partir d'un vrai scan et verrouillé contre toute dérive en CI. Le rapport `--verbose` complet du même scan est [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  Cela mesure la **robustesse, pas l'exactitude**. `.btn.btn-primary > div:nth-child(2)` passe aujourd'hui et continue de passer jusqu'à ce que quelqu'un touche au balisage. Un score bas n'affirme jamais que le test est cassé, seulement qu'il dépend d'un balisage que personne n'a promis de conserver.
package/README.gr.md CHANGED
@@ -81,7 +81,7 @@ npx mjolnir-qa@latest
81
81
  Μια πραγματική σάρωση του [`examples/demo-repo`](examples/demo-repo), μιας μικρής σουίτας Playwright με CI workflow. Εδώ πήγαν οι πόντοι της:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="Η ανάλυση αφαιρέσεων του Mjölnir: WORTHINESS 75/100 NEEDS WORK, η βαθμολογία ανά κατηγορία, το πλαίσιο αφαιρέσεων ανά σοβαρότητα και μια λίστα FIX THIS FIRST" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="Η ανάλυση αφαιρέσεων του Mjölnir: WORTHINESS 80/100 WORTHY, η βαθμολογία ανά κατηγορία, το πλαίσιο αφαιρέσεων ανά σοβαρότητα και μια λίστα FIX THIS FIRST" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>Δημιουργείται με `npm run docs:hero` από πραγματική σάρωση και κλειδώνεται έναντι αποκλίσεων στο CI. Η πλήρης αναφορά `--verbose` της ίδιας σάρωσης είναι το [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  Αυτό μετρά **ανθεκτικότητα, όχι ορθότητα**. Το `.btn.btn-primary > div:nth-child(2)` περνά σήμερα και θα συνεχίσει να περνά μέχρι κάποιος να αγγίξει το markup. Μια χαμηλή βαθμολογία δεν ισχυρίζεται ποτέ ότι το τεστ είναι χαλασμένο, μόνο ότι εξαρτάται από markup που κανείς δεν υποσχέθηκε να διατηρήσει.
package/README.he.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir קורא את חבילת הבדיקות, את ה-workflows של ה-CI,
81
81
  סריקה אמיתית של [`examples/demo-repo`](examples/demo-repo), חבילת Playwright קטנה עם workflow של CI. לכאן הלכו הנקודות שלה:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="פירוט הניכויים של Mjölnir: WORTHINESS 75/100 NEEDS WORK, הציון לפי קטגוריה, תיבת הניכויים לפי חומרה ורשימת FIX THIS FIRST" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="פירוט הניכויים של Mjölnir: WORTHINESS 80/100 WORTHY, הציון לפי קטגוריה, תיבת הניכויים לפי חומרה ורשימת FIX THIS FIRST" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>נוצר על ידי `npm run docs:hero` מסריקה אמיתית ונעול מפני סטייה ב-CI. דוח ה-`--verbose` המלא של אותה סריקה הוא [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  זה מודד **עמידות, לא נכונות**. `.btn.btn-primary > div:nth-child(2)` עובר היום וימשיך לעבור עד שמישהו ייגע ב-markup. ציון נמוך אף פעם לא טוען שהבדיקה שבורה, רק שהיא תלויה ב-markup שאף אחד לא הבטיח לשמור.
package/README.it.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir legge la suite, i workflow CI e, se ce l'hai, il report di un'esecuzion
81
81
  Una scansione reale di [`examples/demo-repo`](examples/demo-repo), una piccola suite Playwright con un workflow CI. Ecco dove sono finiti i suoi punti:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="Il dettaglio delle detrazioni di Mjölnir: WORTHINESS 75/100 NEEDS WORK, il punteggio per categoria, il riquadro delle detrazioni per gravità e una lista FIX THIS FIRST" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="Il dettaglio delle detrazioni di Mjölnir: WORTHINESS 80/100 WORTHY, il punteggio per categoria, il riquadro delle detrazioni per gravità e una lista FIX THIS FIRST" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>Generato da `npm run docs:hero` a partire da una scansione reale e bloccato contro le derive in CI. Il report `--verbose` completo della stessa scansione è [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  Questo misura la **resilienza, non la correttezza**. `.btn.btn-primary > div:nth-child(2)` passa oggi e continua a passare finché qualcuno non tocca il markup. Un punteggio basso non afferma mai che il test è rotto, solo che dipende da un markup che nessuno ha promesso di mantenere.
package/README.ja.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir は、テストスイート、CI workflow、そして手元にあれば
81
81
  CI workflow を持つ小さな Playwright スイート、[`examples/demo-repo`](examples/demo-repo) の実際のスキャンです。点数がどこで失われたかはこちら:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="Mjölnir の減点内訳:WORTHINESS 75/100 NEEDS WORK、カテゴリ別スコア、重大度別の減点ボックス、そして FIX THIS FIRST リスト" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="Mjölnir の減点内訳:WORTHINESS 80/100 WORTHY、カテゴリ別スコア、重大度別の減点ボックス、そして FIX THIS FIRST リスト" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>`npm run docs:hero` により実際のスキャンから生成され、CI でずれがないよう固定されています。同じスキャンの完全な `--verbose` レポートは [`demo.svg`](assets/readme/demo.svg)(`npm run docs:demo`)です。</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  これが測るのは**正しさではなく耐久性**です。`.btn.btn-primary > div:nth-child(2)` は今日は通り、誰かがマークアップに触れるまで通り続けます。低いスコアはテストが壊れていると主張するものではなく、誰も維持を約束していないマークアップに依存していることを示すだけです。
package/README.ko.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir는 테스트 스위트와 CI workflow, 그리고 있다면 실제 실
81
81
  CI workflow가 있는 작은 Playwright 스위트인 [`examples/demo-repo`](examples/demo-repo)를 실제로 스캔한 결과입니다. 점수는 여기서 깎였습니다.
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="Mjölnir의 감점 내역: WORTHINESS 75/100 NEEDS WORK, 카테고리별 점수, 심각도별 감점 상자, 그리고 FIX THIS FIRST 목록" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="Mjölnir의 감점 내역: WORTHINESS 80/100 WORTHY, 카테고리별 점수, 심각도별 감점 상자, 그리고 FIX THIS FIRST 목록" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>`npm run docs:hero`가 실제 스캔으로 생성하며 CI에서 변경되지 않도록 고정됩니다. 같은 스캔의 전체 `--verbose` 리포트는 [`demo.svg`](assets/readme/demo.svg)입니다 (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  이 점수는 **정확성이 아니라 복원력**을 측정합니다. `.btn.btn-primary > div:nth-child(2)`는 오늘 통과하고, 누군가 마크업을 건드리기 전까지 계속 통과합니다. 낮은 점수는 테스트가 망가졌다고 주장하지 않으며, 아무도 유지하겠다고 약속하지 않은 마크업에 의존한다는 뜻일 뿐입니다.
package/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  <div align="center">
2
2
 
3
- <img src="assets/readme/hero.svg" alt="Mjölnir. Tests tell you what passed. Mjölnir tells you what you can trust." width="100%" />
3
+ <img src="assets/readme/hero.svg" alt="Mjölnir. Prevents release-blocking false-green." width="100%" />
4
4
 
5
5
  <br />
6
6
 
7
- Mjölnir finds tests that cannot fail and pipelines that cannot go red,<br />
8
- then scores how far the result can be trusted, with the evidence for every point.
7
+ Mjölnir quantifies how much you can trust your CI — and blocks releases
8
+ when verification isn't earning its keep.
9
9
 
10
10
  <br />
11
11
 
@@ -39,8 +39,9 @@ it; `npm run docs:translations` reports how far.
39
39
 
40
40
  ## A green check is a claim, not a proof
41
41
 
42
- A green check means the pipeline did not fail. It does not mean the tests
43
- ran, or that they could have failed. Every one of these ships green:
42
+ A green check means the pipeline did not fail. It does not mean
43
+ the tests ran, or that they could have failed. Every one of these
44
+ ships green — and every one of them makes your release untrustworthy:
44
45
 
45
46
  - a committed `.only` that ran 3 tests instead of 900
46
47
  - `continue-on-error: true` on the job that was supposed to gate
@@ -50,8 +51,10 @@ ran, or that they could have failed. Every one of these ships green:
50
51
  - a report the workflow uploads but never generated
51
52
  - a hard sleep holding a race condition together
52
53
 
53
- None of them turns the pipeline red, and each one looks deliberate in
54
- review. That is why they survive. Here is Mjölnir reading a real one:
54
+ None of them turns the pipeline red, and each one looks deliberate
55
+ in review. That is why they survive. **They are the reason releases ship bugs.**
56
+
57
+ Here is Mjölnir reading a real one:
55
58
 
56
59
  <p align="center">
57
60
  <img src="assets/readme/scan.svg" alt="The demo repository's CI workflow, read line by line. Mjölnir flags each finding at the line it reported, with its rule, what is wrong, its evidence level and its measured false-positive rate." width="800" />
@@ -98,7 +101,7 @@ A real scan of [`examples/demo-repo`](examples/demo-repo), a small
98
101
  Playwright suite with a CI workflow. This is where its points went:
99
102
 
100
103
  <p align="center">
101
- <img src="assets/readme/terminal-hero.svg" alt="Mjölnir's deduction breakdown: WORTHINESS 75/100 NEEDS WORK, the score by category, the per-severity deduction box, and a FIX THIS FIRST list" width="520" />
104
+ <img src="assets/readme/terminal-hero.svg" alt="Mjölnir's deduction breakdown: WORTHINESS 80/100 WORTHY, the score by category, the per-severity deduction box, and a FIX THIS FIRST list" width="520" />
102
105
  </p>
103
106
 
104
107
  <sub>Generated by `npm run docs:hero` from a real scan and drift-locked in
@@ -188,35 +191,45 @@ That is the unit of value: one place where CI reports a pass it did not earn.
188
191
  npx mjolnir-qa@latest
189
192
  ```
190
193
 
191
- It scans the current directory and prints the Trust Report: what it found,
192
- how far you can trust it, why, and what to do next. It exits `0` when
193
- nothing at or above the gate was found.
194
+ Three steps to trust your release pipeline:
195
+
196
+ 1. **Scan** — `npx mjolnir-qa@latest` — scans the current directory, prints the Trust Report, exits `1` if findings at the gate
197
+ 2. **Block in CI** — `npx mjolnir-qa@latest --scope changed` — scans only changed lines, blocks PRs with error findings
198
+ 3. **Fix and re-verify** — `mjolnir fix` applies safe auto-fixes, then re-scans to prove each one landed
194
199
 
195
- In CI, scan only what the branch introduced, so a legacy suite does not
196
- drown your first pull request:
200
+ Add it to your pipeline so it gates releases on error findings:
197
201
 
198
202
  ```bash
199
- npx mjolnir-qa@latest --scope changed
203
+ npx mjolnir-qa@latest --scope changed --blocking error
204
+ ```
205
+
206
+ `mjolnir ci install` writes the GitHub Actions workflow with a blocking gate (error severity), pinned to this version:
207
+
208
+ ```bash
209
+ mjolnir ci install --gate error
210
+ ```
211
+
212
+ Run advisory mode only when you want to preview findings without blocking:
213
+
214
+ ```bash
215
+ mjolnir ci install --gate advisory
200
216
  ```
201
217
 
202
- `mjolnir ci install` writes that as a GitHub Actions workflow, using the
203
- [action](https://github.com/Sergey-Bar/Mjolnir#readme) pinned to the `v1`
204
- major tag (or plain `npx` with `--no-action`). It stays advisory until you
205
- decide it should block.
206
-
207
- | Command | What it does |
208
- | ----------------------------------- | ------------------------------------------------ |
209
- | `mjolnir` | Trust Report: verdict, confidence, next action |
210
- | `mjolnir --scope changed` | Only what your branch introduced (the CI form) |
211
- | `mjolnir ci install` | Generate the advisory PR workflow (action-based) |
212
- | `mjolnir explain QA-CI-001` | What, why and fix, plus the measured FP rate |
213
- | `mjolnir why src/a.spec.ts:42` | Why this exact line was flagged. Never gates. |
214
- | `mjolnir forensics ./test-results/` | Runtime evidence from a real run |
215
- | `mjolnir trust-report` | Self-contained Trust Artifact (md + json) |
216
- | `mjolnir handoff` | Remediation plan for a coding agent |
217
- | `mjolnir --json` / `--format sarif` | Machine-readable output, GitHub Code Scanning |
218
- | `mjolnir --format codequality` | GitLab Code Quality report (MR widget artifact) |
219
- | `mjolnir --strict` | Also run quarantine-tier rules (higher FP risk) |
218
+ | Command | What it does |
219
+ | ----------------------------------- | ----------------------------------------------- |
220
+ | `mjolnir` | Trust Report: verdict, confidence, next action |
221
+ | `mjolnir --scope changed` | Only what your branch introduced (CI form) |
222
+ | `mjolnir --blocking error` | Exit 1 on error findings — gate releases |
223
+ | `mjolnir ci install --gate error` | Write the blocking PR workflow |
224
+ | `mjolnir business-case` | ROI estimate: projected savings per finding |
225
+ | `mjolnir explain QA-CI-001` | What, why and fix, plus the measured FP rate |
226
+ | `mjolnir why src/a.spec.ts:42` | Why this exact line was flagged. Never gates. |
227
+ | `mjolnir forensics ./test-results/` | Runtime evidence from a real run |
228
+ | `mjolnir trust-report` | Self-contained Trust Artifact (md + json) |
229
+ | `mjolnir handoff` | Remediation plan for a coding agent |
230
+ | `mjolnir --json` / `--format sarif` | Machine-readable output, GitHub Code Scanning |
231
+ | `mjolnir --format codequality` | GitLab Code Quality report (MR widget artifact) |
232
+ | `mjolnir --strict` | Also run quarantine-tier rules (higher FP risk) |
220
233
 
221
234
  <details>
222
235
  <summary><strong>Every other command</strong> — flake triage, reporting, governance</summary>
@@ -360,8 +373,8 @@ e2e/login.spec.ts
360
373
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
361
374
 
362
375
  e2e/checkout.spec.ts
363
- [█████████████████░░░] 86 / 100
364
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
376
+ [██████████████████░░] 88 / 100
377
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
365
378
  ```
366
379
 
367
380
  This measures **resilience, not correctness**.
@@ -543,24 +556,35 @@ propagate, always-success steps, reports consumed but never generated, and
543
556
  gates skipped on the events that should block. Each finding names the job,
544
557
  the step and the line, and carries its own evidence level.
545
558
 
546
- Generate the PR workflow, advisory by default:
559
+ Generate the PR workflow with a blocking gate (error severity) — this is the
560
+ default for a reason: findings that survive your pipeline survive your release.
547
561
 
548
562
  ```bash
549
- mjolnir ci install
563
+ mjolnir ci install --gate error
550
564
  ```
551
565
 
552
- Or add the Marketplace action to a workflow you already have:
566
+ The gate is pinned to this version — a new release must not change your gate
567
+ semantics without a commit of yours. Switch to advisory only when you want
568
+ to preview findings without blocking:
569
+
570
+ ```bash
571
+ mjolnir ci install --gate advisory
572
+ ```
573
+
574
+ In your existing workflow, pin the action and gate on error severity:
553
575
 
554
576
  ```yaml
555
- - uses: Sergey-Bar/Mjolnir@v1
577
+ - uses: Sergey-Bar/Mjolnir@4a588bc62d517bc85fc44c0eae64c6587d3bf70b0
556
578
  with:
557
579
  scope: changed
558
580
  fail-on: error
559
581
  ```
560
582
 
561
- Pin `@v1` to follow the major line, or an exact tag (`@v0.5.32`) for a
562
- reproducible gate. [docs/DISTRIBUTION-KIT.md](docs/DISTRIBUTION-KIT.md)
563
- covers the Marketplace, Smithery and the MCP registries.
583
+ The `--blocking error` flag does the same in any CI pipeline:
584
+
585
+ ```bash
586
+ npx mjolnir-qa@latest --scope changed --blocking error
587
+ ```
564
588
 
565
589
  To put findings in GitHub Code Scanning, upload SARIF (requires
566
590
  `security-events: write` at workflow or job scope):
@@ -719,6 +743,7 @@ The full docs site is at <https://sergey-bar.github.io/Mjolnir/>.
719
743
 
720
744
  | Document | What's in it |
721
745
  | ------------------------------------------------------ | ------------------------------------------------- |
746
+ | [docs/EXECUTIVE-ROI.md](docs/EXECUTIVE-ROI.md) | Business case for decision-makers |
722
747
  | [docs/SCORING.md](docs/SCORING.md) | Score normalization and evidence weighting |
723
748
  | [docs/TERMINOLOGY.md](docs/TERMINOLOGY.md) | Canonical vocabulary: one word per concept |
724
749
  | [docs/FP-AUDIT.md](docs/FP-AUDIT.md) | Measured false-positive rates and the method |
package/README.no.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir leser testsuiten, CI-workflowene og, hvis du har en, rapporten fra en e
81
81
  En ekte skanning av [`examples/demo-repo`](examples/demo-repo), en liten Playwright-suite med en CI-workflow. Her er hvor poengene ble av:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="Mjölnirs oversikt over trekk: WORTHINESS 75/100 NEEDS WORK, scoren per kategori, trekkboksen per alvorlighetsgrad og en FIX THIS FIRST-liste" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="Mjölnirs oversikt over trekk: WORTHINESS 80/100 WORTHY, scoren per kategori, trekkboksen per alvorlighetsgrad og en FIX THIS FIRST-liste" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>Generert av `npm run docs:hero` fra en ekte skanning og låst mot avvik i CI. Den fullstendige `--verbose`-rapporten fra samme skanning er [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  Dette måler **robusthet, ikke korrekthet**. `.btn.btn-primary > div:nth-child(2)` består i dag og fortsetter å bestå til noen rører markupen. En lav score påstår aldri at testen er ødelagt, bare at den avhenger av markup ingen har lovet å beholde.
package/README.pl.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir czyta zestaw testów, workflow CI oraz, jeśli go masz, raport z prawdz
81
81
  Prawdziwy skan [`examples/demo-repo`](examples/demo-repo), małego zestawu Playwright z workflow CI. Oto, gdzie poszły jego punkty:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="Rozbicie potrąceń Mjölnira: WORTHINESS 75/100 NEEDS WORK, wynik według kategorii, ramka potrąceń według ważności i lista FIX THIS FIRST" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="Rozbicie potrąceń Mjölnira: WORTHINESS 80/100 WORTHY, wynik według kategorii, ramka potrąceń według ważności i lista FIX THIS FIRST" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>Wygenerowane przez `npm run docs:hero` z prawdziwego skanu i zabezpieczone w CI przed rozjazdem. Pełny raport `--verbose` z tego samego skanu to [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  To mierzy **odporność, a nie poprawność**. `.btn.btn-primary > div:nth-child(2)` przechodzi dziś i będzie przechodzić, dopóki ktoś nie ruszy znaczników. Niski wynik nigdy nie twierdzi, że test jest zepsuty, tylko że zależy od znaczników, których nikt nie obiecał zachować.
package/README.ru.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir читает набор тестов, CI-workflow и, если он е
81
81
  Реальное сканирование [`examples/demo-repo`](examples/demo-repo), небольшого набора тестов Playwright с CI-workflow. Вот куда ушли его баллы:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="Разбивка вычетов Mjölnir: WORTHINESS 75/100 NEEDS WORK, оценка по категориям, блок вычетов по серьёзности и список FIX THIS FIRST" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="Разбивка вычетов Mjölnir: WORTHINESS 80/100 WORTHY, оценка по категориям, блок вычетов по серьёзности и список FIX THIS FIRST" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>Сгенерировано командой `npm run docs:hero` из реального сканирования и защищено от расхождений в CI. Полный отчёт `--verbose` того же сканирования — [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  Это измеряет **устойчивость, а не корректность**. `.btn.btn-primary > div:nth-child(2)` проходит сегодня и будет проходить, пока кто-нибудь не тронет разметку. Низкая оценка никогда не утверждает, что тест сломан, — только что он зависит от разметки, сохранять которую никто не обещал.
package/README.th.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir อ่านชุดเทสต์ CI workflow และรายง
81
81
  การสแกนจริงของ [`examples/demo-repo`](examples/demo-repo) ซึ่งเป็นชุดเทสต์ Playwright ขนาดเล็กที่มี CI workflow คะแนนของมันหายไปตรงนี้:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="รายละเอียดการหักคะแนนของ Mjölnir: WORTHINESS 75/100 NEEDS WORK คะแนนแยกตามหมวดหมู่ กล่องการหักคะแนนตามความรุนแรง และรายการ FIX THIS FIRST" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="รายละเอียดการหักคะแนนของ Mjölnir: WORTHINESS 80/100 WORTHY คะแนนแยกตามหมวดหมู่ กล่องการหักคะแนนตามความรุนแรง และรายการ FIX THIS FIRST" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>สร้างโดย `npm run docs:hero` จากการสแกนจริง และถูกล็อกไม่ให้คลาดเคลื่อนใน CI รายงาน `--verbose` ฉบับเต็มของการสแกนเดียวกันคือ [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`)</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  สิ่งนี้วัด **ความทนทาน ไม่ใช่ความถูกต้อง** `.btn.btn-primary > div:nth-child(2)` ผ่านในวันนี้ และจะผ่านต่อไปจนกว่าจะมีคนแตะ markup คะแนนต่ำไม่เคยอ้างว่าเทสต์พัง เพียงบอกว่ามันพึ่งพา markup ที่ไม่มีใครสัญญาว่าจะคงไว้
package/README.tr.md CHANGED
@@ -81,7 +81,7 @@ Mjölnir test paketini, CI workflow'larını ve varsa gerçek bir çalıştırma
81
81
  CI workflow'u olan küçük bir Playwright paketi olan [`examples/demo-repo`](examples/demo-repo) üzerinde gerçek bir tarama. Puanlarının nereye gittiği burada:
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/terminal-hero.svg" alt="Mjölnir'in kesinti dökümü: WORTHINESS 75/100 NEEDS WORK, kategoriye göre puan, önem derecesine göre kesinti kutusu ve bir FIX THIS FIRST listesi" width="520" />
84
+ <img src="assets/readme/terminal-hero.svg" alt="Mjölnir'in kesinti dökümü: WORTHINESS 80/100 WORTHY, kategoriye göre puan, önem derecesine göre kesinti kutusu ve bir FIX THIS FIRST listesi" width="520" />
85
85
  </p>
86
86
 
87
87
  <sub>`npm run docs:hero` ile gerçek bir taramadan üretilir ve CI'da sapmaya karşı kilitlenir. Aynı taramanın tam `--verbose` raporu [`demo.svg`](assets/readme/demo.svg) dosyasıdır (`npm run docs:demo`).</sub>
@@ -312,8 +312,8 @@ e2e/login.spec.ts
312
312
  role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
313
313
 
314
314
  e2e/checkout.spec.ts
315
- [█████████████████░░░] 86 / 100
316
- role/text: 3 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
315
+ [██████████████████░░] 88 / 100
316
+ role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
317
317
  ```
318
318
 
319
319
  Bu, **doğruluğu değil dayanıklılığı** ölçer. `.btn.btn-primary > div:nth-child(2)` bugün geçer ve biri işaretlemeye dokunana kadar geçmeye devam eder. Düşük bir puan asla testin bozuk olduğunu iddia etmez; yalnızca kimsenin korumayı vaat etmediği işaretlemeye bağlı olduğunu söyler.