mjolnir-qa 0.5.10 → 0.5.12
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 +15 -0
- package/README.ar.md +21 -15
- package/README.bn.md +17 -9
- package/README.br.md +25 -16
- package/README.bs.md +23 -15
- package/README.da.md +23 -16
- package/README.de.md +24 -16
- package/README.es.md +25 -16
- package/README.fr.md +25 -16
- package/README.gr.md +24 -16
- package/README.he.md +22 -15
- package/README.it.md +25 -16
- package/README.ja.md +16 -9
- package/README.ko.md +23 -15
- package/README.md +12 -10
- package/README.no.md +23 -16
- package/README.pl.md +17 -9
- package/README.ru.md +26 -17
- package/README.th.md +16 -9
- package/README.tr.md +23 -16
- package/README.uk.md +24 -16
- package/README.vi.md +22 -15
- package/README.zh.md +21 -15
- package/README.zht.md +21 -15
- package/dist/cli.d.mts +1 -1
- package/dist/cli.mjs +19 -5
- package/dist/mcp/stdio.mjs +19 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -74,6 +74,21 @@ scan`. Unknown categories are a usage error (exit 10).
|
|
|
74
74
|
- help registry gained `why`, `handoff`, `install` and the new flags;
|
|
75
75
|
site/reference/cli.md documents the handoff trust model.
|
|
76
76
|
|
|
77
|
+
## [0.5.12] — 2026-09-07
|
|
78
|
+
|
|
79
|
+
### Changes since 0.5.11
|
|
80
|
+
|
|
81
|
+
- Product-Experience Master Plan: content integrity, canonical terminology, brand cleanup, CI path integrity (#44)
|
|
82
|
+
|
|
83
|
+
## [0.5.11] — 2026-09-07
|
|
84
|
+
|
|
85
|
+
### Changes since 0.5.10
|
|
86
|
+
|
|
87
|
+
- Merge pull request #45 from Sergey-Bar/eng/closeout-recommendations
|
|
88
|
+
- docs: FP-AUDIT status column settles on the second generator pass (stale module import in single-pass)
|
|
89
|
+
- docs: regenerate QA-ENV-001 + QA-PW-147 rule docs (now measured)
|
|
90
|
+
- close-out: 39 verdicts adjudicated (AI-assisted, owner-authorized) — 78/99 measured
|
|
91
|
+
|
|
77
92
|
## [0.5.10] — 2026-09-06
|
|
78
93
|
|
|
79
94
|
### Changes since 0.5.9
|
package/README.ar.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
[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.uk.md) | [বাংলা](README.bn.md) | [Ελληνικά](README.gr.md) | [Tiếng Việt](README.vi.md) | [עברית](README.he.md) | العربية | [Bosanski](README.bs.md)
|
|
16
16
|
|
|
17
|
-
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-
|
|
17
|
+
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-07.
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
npx mjolnir-qa@latest
|
|
@@ -290,13 +290,13 @@ npx mjolnir-qa@latest --scope changed
|
|
|
290
290
|
|
|
291
291
|
### كم من هذا مقيس
|
|
292
292
|
|
|
293
|
-
**
|
|
293
|
+
**78 من 99 قاعدة تحمل معدل إنذارات كاذبة مقيسًا على كود OSS حقيقي**
|
|
294
294
|
(≥ 10 اكتشافات مصنفة يدويًا لكل منها؛ راجع
|
|
295
|
-
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). الـ
|
|
295
|
+
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). الـ21 الأخرى تُشحن على تقدير
|
|
296
296
|
المؤلف. ذيل كل فحص يخبرك كم من القواعد التي _انطلقت_ مقيسة؛ و
|
|
297
297
|
`mjolnir rules --unmeasured` يسرد غير المقيسة؛ وصفحة `mjolnir explain`
|
|
298
298
|
لكل قاعدة تُصرّح بحالتها. ننشر المعدل حتى حين يكون قبيحًا — QA-CS-103
|
|
299
|
-
يدقّق عند 95% ولذلك هو في الحجر الصحي. تنمية
|
|
299
|
+
يدقّق عند 95% ولذلك هو في الحجر الصحي. تنمية ذلك العدد هي العمل
|
|
300
300
|
المستمر للمشروع.
|
|
301
301
|
|
|
302
302
|
### طبقات القواعد ونضج اللغات
|
|
@@ -440,14 +440,14 @@ FAILING declines an expired card (e2e/checkout.spec.ts)
|
|
|
440
440
|
في فرق؛ لكنها لا تثبت أن نظام التحقق ككل جدير بالثقة — وهي لا ترى إلا
|
|
441
441
|
الفرق الذي تريه لها.
|
|
442
442
|
|
|
443
|
-
| | مراجعة بالذكاء الاصطناعي (Copilot وغيره) |
|
|
444
|
-
| ----------------------------- | :--------------------------------------: |
|
|
445
|
-
| الكلفة لكل فحص | رموز (تتدرج بحجم الفرق) |
|
|
446
|
-
| يرى الطقم كله + كل إعدادات CI | الفرق الذي تريه فقط |
|
|
447
|
-
| حتمي (مدخل واحد → مخرج واحد) | ❌ (غير حتمي) |
|
|
448
|
-
| يلتقط أنماطًا راقدة أشهرًا | فقط إن وردت في السياق |
|
|
449
|
-
| يتذكر الاكتشافات بين الجولات | ❌ (لا ذاكرة عبر الجلسات) |
|
|
450
|
-
| يعمل دون استداء بشري | يحتاج PR أو موجهًا | **✅** (خُطّاف CI،
|
|
443
|
+
| | مراجعة بالذكاء الاصطناعي (Copilot وغيره) | **Mjölnir** |
|
|
444
|
+
| ----------------------------- | :--------------------------------------: | :-------------------------------: |
|
|
445
|
+
| الكلفة لكل فحص | رموز (تتدرج بحجم الفرق) | **صفر** (محلي، مثبَّت) |
|
|
446
|
+
| يرى الطقم كله + كل إعدادات CI | الفرق الذي تريه فقط | **كل شيء، كل مرة** |
|
|
447
|
+
| حتمي (مدخل واحد → مخرج واحد) | ❌ (غير حتمي) | **✅** |
|
|
448
|
+
| يلتقط أنماطًا راقدة أشهرًا | فقط إن وردت في السياق | **✅** (يفحص كل الملفات) |
|
|
449
|
+
| يتذكر الاكتشافات بين الجولات | ❌ (لا ذاكرة عبر الجلسات) | **✅** (baseline + diff) |
|
|
450
|
+
| يعمل دون استداء بشري | يحتاج PR أو موجهًا | **✅** (خُطّاف CI، يعمل في ثوانٍ) |
|
|
451
451
|
|
|
452
452
|
**استخدم كليهما.** يلتقط الذكاء الاصطناعي الدقائق والقصد وعيوب التصميم
|
|
453
453
|
التي لا يعثر عليها أي regex. يلتقط Mjölnir الأنماط البنيوية التي يغفلها
|
|
@@ -562,10 +562,16 @@ Mjölnir صفر إعداد. ملف `mjolnir.config.json` اختياري (أو `.
|
|
|
562
562
|
حقيقي تُشحن في الطبقات الرئيسية (انظر
|
|
563
563
|
[كم من هذا مقيس](#كم-من-هذا-مقيس))؛ ذيل الفحص و`mjolnir rules --unmeasured`
|
|
564
564
|
يخبرانك أيُّها أي.
|
|
565
|
-
- **الثقة
|
|
565
|
+
- **الثقة بالإضافات وبوابة التنفيذ** — الإضافات حزم npm معلنة تحت
|
|
566
|
+
`"plugins"`؛ وحدات JS تعيش في `mjolnir-rules/*.mjs`.
|
|
566
567
|
**لا غرفة رمل**: كود الإضافة يجري بكامل صلاحيات Node، النموذج نفسه
|
|
567
|
-
لإضافات ESLint أو Vitest.
|
|
568
|
-
|
|
568
|
+
لإضافات ESLint أو Vitest. لهذا فإن تنفيذ الكود **اختياري في كل فحص**:
|
|
569
|
+
مرّر `--enable-plugins` (أو اضبط `MJOLNIR_ENABLE_PLUGINS=1`)، وإلا
|
|
570
|
+
فلن تُحمَّل المصادر — تنبيه صريح على stderr يسرد بالضبط ما تم تخطيه.
|
|
571
|
+
فحص كود غير موثوق لا ينفّذه أبدًا. بيانات القواعد JSON
|
|
572
|
+
(`mjolnir-rules/*.json`) غير متأثرة: تعلن أنماط regex ولا تنفذ أي
|
|
573
|
+
كود بحكم تصميمها. بادئات معرّفات القواعد الأساسية محجوزة
|
|
574
|
+
وتُرفض من الإضافات والقواعد الخارجية منعًا للانتحال.
|
|
569
575
|
- **قواعد خارجية محلية للمساحة** (مجلدية، صفر شبكة) — مجلد
|
|
570
576
|
`mjolnir-rules/` بجوار هدف الفحص يحمّل قواعد مخصصة: ملفات JSON تعلن
|
|
571
577
|
أنماط regex (لا يُنفَّذ كود)، ووحدات `.mjs`/`.js` تصدّر `rules` (ثقة
|
package/README.bn.md
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
[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.uk.md) | বাংলা | [Ελληνικά](README.gr.md) | [Tiếng Việt](README.vi.md) | [עברית](README.he.md) | [العربية](README.ar.md) | [Bosanski](README.bs.md)
|
|
17
17
|
|
|
18
|
-
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-
|
|
18
|
+
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-07.
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
npx mjolnir-qa@latest
|
|
@@ -293,14 +293,14 @@ false-positive ফায়ারওয়াল।
|
|
|
293
293
|
|
|
294
294
|
### এর মধ্যে কতটা পরিমাপ করা হয়েছে
|
|
295
295
|
|
|
296
|
-
**৯৯টি রুলের
|
|
296
|
+
**৯৯টি রুলের ৭৮টি বাস্তব OSS কোডের বিরুদ্ধে পরিমাপকৃত false-positive
|
|
297
297
|
হার বহন করে** (প্রতিটিতে ≥ ১০টি হাতে-শ্রেণিবদ্ধ finding; দেখুন
|
|
298
|
-
[docs/FP-AUDIT.md](docs/FP-AUDIT.md))। বাকি
|
|
298
|
+
[docs/FP-AUDIT.md](docs/FP-AUDIT.md))। বাকি ২১টি লেখকের অনুমানে শিপ হয়।
|
|
299
299
|
প্রতিটি স্ক্যানের ফুটার বলে দেয় _ফায়ার_ করা রুলগুলোর কতগুলো পরিমাপকৃত;
|
|
300
300
|
`mjolnir rules --unmeasured` যেগুলো নয় তা তালিকাভুক্ত করে; প্রতিটি রুলের
|
|
301
301
|
`mjolnir explain` পেজ তার অবস্থা জানায়। আমরা হারটি প্রকাশ করি — এমনকি
|
|
302
302
|
কুৎসিত হলেও — QA-CS-103 ৯৫%-এ অডিট হয় এবং এজন্যই কোয়ারেন্টাইনে। সেই
|
|
303
|
-
|
|
303
|
+
সংখ্যা বাড়ানোই প্রজেক্টের চলমান কাজ।
|
|
304
304
|
|
|
305
305
|
### রুল টিয়ার ও ভাষা-পরিপক্বতা
|
|
306
306
|
|
|
@@ -454,7 +454,7 @@ flakiness রিপোর্ট তৈরি করে না।
|
|
|
454
454
|
| নির্ধারণী (একই ইনপুট → একই আউটপুট) | ❌ (অনির্ধারণী) | **✅** |
|
|
455
455
|
| মাসের পর মাস সুপ্ত প্যাটার্ন ধরে | শুধু কনটেক্সটে থাকলে | **✅** (সব ফাইল স্ক্যান করে) |
|
|
456
456
|
| রানের মাঝে finding মনে রাখে | ❌ (সেশনের মাঝে কোনো স্মৃতি নেই) | **✅** (baseline + diff) |
|
|
457
|
-
| মানুষের ট্রিগার ছাড়াই চলে | PR বা prompt দরকার |
|
|
457
|
+
| মানুষের ট্রিগার ছাড়াই চলে | PR বা prompt দরকার | **✅** (CI হুক, সেকেন্ডে চলে) |
|
|
458
458
|
|
|
459
459
|
**দুটোই ব্যবহার করুন।** AI সূক্ষ্মতা, অভিপ্রায় ও এমন ডিজাইন-ত্রুটি ধরে
|
|
460
460
|
যা কোনো regex খুঁজে পায় না। Mjölnir সেই কাঠামোগত প্যাটার্ন ধরে যা AI
|
|
@@ -572,10 +572,18 @@ JSON/SARIF রিপোর্ট `schemaVersion: 1`। রুল ID (`QA-<FAMILY
|
|
|
572
572
|
false-positive হার আছে তা হেডলাইন টিয়ারে শিপ হয় (দেখুন
|
|
573
573
|
[এর মধ্যে কতটা পরিমাপ করা হয়েছে](#এর-মধ্যে-কতটা-পরিমাপ-করা-হয়েছে));
|
|
574
574
|
স্ক্যান ফুটার ও `mjolnir rules --unmeasured` কোনটি কী তা বলে।
|
|
575
|
-
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
575
|
+
- **প্লাগইন-আস্থা এবং এক্সিকিউশন গেট** — প্লাগইন হলো `"plugins"`-এর
|
|
576
|
+
অধীনে ঘোষিত npm
|
|
577
|
+
প্যাকেজ; JS মডিউল থাকে `mjolnir-rules/*.mjs`-এ।
|
|
578
|
+
**কোনো sandbox নেই**: প্লাগইন কোড পূর্ণ Node বিশেষাধিকারে
|
|
579
|
+
চলে, ESLint বা Vitest প্লাগইনের একই আস্থার মডেল। এজন্যই কোড এক্সিকিউশন
|
|
580
|
+
**প্রতিটি স্ক্যানে opt-in**: `--enable-plugins` দিন (অথবা
|
|
581
|
+
`MJOLNIR_ENABLE_PLUGINS=1` সেট করুন), নইলে সোর্স লোড হয় না —
|
|
582
|
+
stderr-এ একটি স্পষ্ট বার্তা ঠিক কী বাদ পড়েছে তা তালিকাভুক্ত করে।
|
|
583
|
+
অবিশ্বস্ত কোড স্ক্যান করা কখনোই তা চালায় না। JSON রুল ম্যানিফেস্ট
|
|
584
|
+
(`mjolnir-rules/*.json`) প্রভাবিত হয় না: সেগুলো regex প্যাটার্ন
|
|
585
|
+
ঘোষণা করে এবং ডিজাইনগতভাবে কোনো কোড চালায় না। core রুল-ID প্রিফিক্স
|
|
586
|
+
সংরক্ষিত এবং জালিয়াতি রোধে প্লাগইন ও বাহ্যিক রুল থেকে প্রত্যাখ্যাত।
|
|
579
587
|
- **Workspace-লোকাল বাহ্যিক রুল** (ফোল্ডার-ভিত্তিক, শূন্য নেটওয়ার্ক) —
|
|
580
588
|
স্ক্যান টার্গেটের পাশে একটি `mjolnir-rules/` ডিরেক্টরি কাস্টম রুল লোড
|
|
581
589
|
করে: JSON ফাইল regex প্যাটার্ন ঘোষণা করে (কোনো কোড চালানো হয় না),
|
package/README.br.md
CHANGED
|
@@ -15,7 +15,7 @@ exatamente onde a confiança se quebra.
|
|
|
15
15
|
|
|
16
16
|
[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.th.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)
|
|
17
17
|
|
|
18
|
-
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-
|
|
18
|
+
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-07.
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
npx mjolnir-qa@latest
|
|
@@ -299,14 +299,14 @@ que dispara na própria fixture negativa não pode ser publicada — esse
|
|
|
299
299
|
|
|
300
300
|
### Quanto disso é medido
|
|
301
301
|
|
|
302
|
-
**
|
|
302
|
+
**78 de 99 regras carregam uma taxa de falsos positivos medida contra
|
|
303
303
|
código OSS real** (≥ 10 findings classificados à mão cada; veja
|
|
304
|
-
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). As outras
|
|
304
|
+
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). As outras 21 são publicadas com
|
|
305
305
|
a estimativa do autor. O rodapé de cada escaneio diz quantas das regras
|
|
306
306
|
_que dispararam_ são medidas; `mjolnir rules --unmeasured` lista as que
|
|
307
307
|
não são; a página `mjolnir explain` de cada regra declara seu status.
|
|
308
308
|
Publicamos a taxa mesmo quando ela é feia — QA-CS-103 audita em 95 % e
|
|
309
|
-
está em quarentena por isso. Fazer esse
|
|
309
|
+
está em quarentena por isso. Fazer esse número crescer é o trabalho contínuo
|
|
310
310
|
do projeto.
|
|
311
311
|
|
|
312
312
|
### Tiers de regras e maturidade por linguagem
|
|
@@ -459,14 +459,14 @@ Problema diferente, camada diferente. A revisão com IA pode detectar uma
|
|
|
459
459
|
mudança suspeita de teste em um diff; ela não prova que o sistema de
|
|
460
460
|
verificação como um todo é confiável — e só vê o diff que você mostra.
|
|
461
461
|
|
|
462
|
-
| | Revisão de código com IA (Copilot etc.) |
|
|
463
|
-
| -------------------------------------------- | :-------------------------------------: |
|
|
464
|
-
| Custo por escaneio | Tokens (escala com o tamanho do diff) |
|
|
465
|
-
| Vê toda a suíte + todas as configs de CI | Só o diff da PR que você mostra |
|
|
466
|
-
| Determinístico (mesma entrada → mesma saída) | ❌ (não determinístico) |
|
|
467
|
-
| Pega padrões dormentes por meses | Só se estiver no contexto |
|
|
468
|
-
| Lembra dos findings entre execuções | ❌ (sem memória entre sessões) |
|
|
469
|
-
| Roda sem gatilho humano | Precisa de uma PR ou prompt |
|
|
462
|
+
| | Revisão de código com IA (Copilot etc.) | **Mjölnir** |
|
|
463
|
+
| -------------------------------------------- | :-------------------------------------: | :-----------------------------------: |
|
|
464
|
+
| Custo por escaneio | Tokens (escala com o tamanho do diff) | **Zero** (local, instalado) |
|
|
465
|
+
| Vê toda a suíte + todas as configs de CI | Só o diff da PR que você mostra | **Tudo, toda vez** |
|
|
466
|
+
| Determinístico (mesma entrada → mesma saída) | ❌ (não determinístico) | **✅** |
|
|
467
|
+
| Pega padrões dormentes por meses | Só se estiver no contexto | **✅** (escaneia todos os arquivos) |
|
|
468
|
+
| Lembra dos findings entre execuções | ❌ (sem memória entre sessões) | **✅** (baseline + diff) |
|
|
469
|
+
| Roda sem gatilho humano | Precisa de uma PR ou prompt | **✅** (hook de CI, roda em segundos) |
|
|
470
470
|
|
|
471
471
|
**Use ambos.** A IA captura nuance, intenção e defeitos de design que
|
|
472
472
|
nenhuma regex encontra. O Mjölnir captura os padrões estruturais que a
|
|
@@ -591,11 +591,20 @@ O relatório JSON/SARIF é `schemaVersion: 1`. Os IDs de regra
|
|
|
591
591
|
de código OSS real entram nos tiers de destaque (veja
|
|
592
592
|
[Quanto disso é medido](#quanto-disso-é-medido)); o rodapé do
|
|
593
593
|
escaneio e o `mjolnir rules --unmeasured` dizem qual é qual.
|
|
594
|
-
- **Confiança em plugins** — plugins são pacotes
|
|
595
|
-
|
|
594
|
+
- **Confiança em plugins e porta de execução** — plugins são pacotes
|
|
595
|
+
npm declarados sob
|
|
596
|
+
`"plugins"`; módulos JS vivem em `mjolnir-rules/*.mjs`.
|
|
597
|
+
**Não há sandbox**: o código do plugin roda com todos os
|
|
596
598
|
privilégios do Node, o mesmo modelo de confiança dos plugins ESLint
|
|
597
|
-
ou Vitest.
|
|
598
|
-
|
|
599
|
+
ou Vitest. Por isso, a execução de código é **opt-in a cada
|
|
600
|
+
escaneio**: passe `--enable-plugins` (ou defina
|
|
601
|
+
`MJOLNIR_ENABLE_PLUGINS=1`), ou as fontes NÃO são carregadas — um
|
|
602
|
+
aviso sonoro no stderr lista exatamente o que foi pulado. Escanear
|
|
603
|
+
código não confiável nunca o executa. Manifestos de regras JSON
|
|
604
|
+
(`mjolnir-rules/*.json`) não são afetados: eles declaram padrões
|
|
605
|
+
regex e por projeto não executam código. Prefixos de IDs de regras
|
|
606
|
+
core são reservados e rejeitados
|
|
607
|
+
de plugins e regras externas para evitar falsificação.
|
|
599
608
|
- **Regras externas locais ao workspace** (baseadas em pasta, zero
|
|
600
609
|
rede) — um diretório `mjolnir-rules/` ao lado do alvo do escaneio
|
|
601
610
|
carrega regras personalizadas: arquivos JSON declaram padrões regex
|
package/README.bs.md
CHANGED
|
@@ -15,7 +15,7 @@ povjerenje lomi.
|
|
|
15
15
|
|
|
16
16
|
[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.uk.md) | [বাংলা](README.bn.md) | [Ελληνικά](README.gr.md) | [Tiếng Việt](README.vi.md) | [עברית](README.he.md) | [العربية](README.ar.md) | Bosanski
|
|
17
17
|
|
|
18
|
-
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-
|
|
18
|
+
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-07.
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
npx mjolnir-qa@latest
|
|
@@ -291,14 +291,14 @@ Ukupno 20 Python pravila (QA-PY-001…012 pytest higijena + QA-PY-101…108 Play
|
|
|
291
291
|
|
|
292
292
|
### Koliko je od ovoga izmjereno
|
|
293
293
|
|
|
294
|
-
**
|
|
294
|
+
**78 od 99 pravila nose stopu lažnih pozitiva izmjerenu nad stvarnim
|
|
295
295
|
OSS kodom** (≥ 10 ručno klasificiranih nalaza svako; vidi
|
|
296
|
-
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). Ostalih
|
|
296
|
+
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). Ostalih 21 izlazi na autorovoj
|
|
297
297
|
procjeni. Podnožje svakog skana kaže koliko od _okinutih_ pravila je
|
|
298
298
|
izmjereno; `mjolnir rules --unmeasured` izlista neizmjerena; stranica
|
|
299
299
|
`mjolnir explain` svakog pravila navodi njen status. Objavljujemo stopu
|
|
300
300
|
čak i kad je ružna — QA-CS-103 se audita na 95 % i u karanteni je radi
|
|
301
|
-
toga. Rast tog
|
|
301
|
+
toga. Rast tog broja je neprekidni rad projekta.
|
|
302
302
|
|
|
303
303
|
### Tierovi pravila i jezična zrelost
|
|
304
304
|
|
|
@@ -448,14 +448,14 @@ Drugi problem, drugi sloj. AI review može primijetiti sumnjivu promjenu
|
|
|
448
448
|
testa u diffu; ne dokazuje da je verifikacioni sistem kao cjelina
|
|
449
449
|
dostojan povjerenja — i vidi samo diff koji mu pokažeš.
|
|
450
450
|
|
|
451
|
-
| | AI code review (Copilot i sl.) |
|
|
452
|
-
| ---------------------------------------- | :------------------------------: |
|
|
453
|
-
| Trošak po skanu | Tokeni (raste s veličinom diffa) |
|
|
454
|
-
| Vidi cijeli suite + sve CI konfiguracije | Samo PR diff koji pokažeš |
|
|
455
|
-
| Deterministički (isti ulaz → isti izlaz) | ❌ (nedeterministički) |
|
|
456
|
-
| Hvata obrasce dormantne mjesecima | Samo ako je u kontekstu |
|
|
457
|
-
| Pamti nalaze između runova | ❌ (nema memorije između sesija) |
|
|
458
|
-
| Radi bez ljudskog okidača | Treba PR ili prompt |
|
|
451
|
+
| | AI code review (Copilot i sl.) | **Mjölnir** |
|
|
452
|
+
| ---------------------------------------- | :------------------------------: | :-------------------------------------: |
|
|
453
|
+
| Trošak po skanu | Tokeni (raste s veličinom diffa) | **Nula** (lokalno, instalirano) |
|
|
454
|
+
| Vidi cijeli suite + sve CI konfiguracije | Samo PR diff koji pokažeš | **Sve, svaki put** |
|
|
455
|
+
| Deterministički (isti ulaz → isti izlaz) | ❌ (nedeterministički) | **✅** |
|
|
456
|
+
| Hvata obrasce dormantne mjesecima | Samo ako je u kontekstu | **✅** (skenira sve fajlove) |
|
|
457
|
+
| Pamti nalaze između runova | ❌ (nema memorije između sesija) | **✅** (baseline + diff) |
|
|
458
|
+
| Radi bez ljudskog okidača | Treba PR ili prompt | **✅** (CI hook, izvodi se u sekundama) |
|
|
459
459
|
|
|
460
460
|
**Koristi oba.** AI hvata nijansu, namjeru i dizajnerske mane koje
|
|
461
461
|
nijedan regex ne nađe. Mjölnir hvata strukturne obrasce koje AI
|
|
@@ -578,11 +578,19 @@ ponovo koriste.
|
|
|
578
578
|
stopom lažnih pozitiva iz stvarnog OSS koda (vidi
|
|
579
579
|
[Koliko je od ovoga izmjereno](#koliko-je-od-ovoga-izmjereno));
|
|
580
580
|
podnožje skana i `mjolnir rules --unmeasured` kažu koje su koje.
|
|
581
|
-
- **Povjerenje u pluginove** — pluginovi su npm
|
|
582
|
-
|
|
581
|
+
- **Povjerenje u pluginove i kapija izvršavanja** — pluginovi su npm
|
|
582
|
+
paketi deklarirani pod
|
|
583
|
+
`"plugins"`; JS moduli žive u `mjolnir-rules/*.mjs`.
|
|
584
|
+
**Nema sandboxa**: plugin kod radi s punim Node
|
|
583
585
|
privilegijama, isti model povjerenja kao ESLint ili Vitest pluginovi.
|
|
586
|
+
Zato je izvršavanje koda **opt-in pri svakom skanu**: proslijedite
|
|
587
|
+
`--enable-plugins` (ili postavite `MJOLNIR_ENABLE_PLUGINS=1`), inače
|
|
588
|
+
se izvori NE učitavaju — glasna stderr obavijesta izlista tačno što
|
|
589
|
+
je preskočeno. Skeniranje nepouzdanog koda nikada ga ne izvršava.
|
|
590
|
+
JSON pravila manifesti (`mjolnir-rules/*.json`) nisu pogođeni:
|
|
591
|
+
deklariraju regex obrasce i po konstrukciji ne izvršavaju kod.
|
|
584
592
|
Core prefiksi ID-jeva pravila su rezervirani i odbijaju se od
|
|
585
|
-
pluginova radi sprečavanja spoofinga.
|
|
593
|
+
pluginova i eksternih pravila radi sprečavanja spoofinga.
|
|
586
594
|
- **Eksterna pravila lokalna workspaceu** (folder-bazirana, nula
|
|
587
595
|
mreže) — `mjolnir-rules/` direktorij pored skan cilja učitava
|
|
588
596
|
vlastita pravila: JSON fajlovi deklariraju regex obrasce (nikakav kod
|
package/README.da.md
CHANGED
|
@@ -15,7 +15,7 @@ tilliden brister.
|
|
|
15
15
|
|
|
16
16
|
[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.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.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)
|
|
17
17
|
|
|
18
|
-
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-
|
|
18
|
+
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-07.
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
npx mjolnir-qa@latest
|
|
@@ -297,14 +297,14 @@ det er false-positive-firewallen.
|
|
|
297
297
|
|
|
298
298
|
### Hvor meget er målt
|
|
299
299
|
|
|
300
|
-
**
|
|
300
|
+
**78 af 99 regler bærer en false-positive-rate målt mod rigtig OSS-kode**
|
|
301
301
|
(≥ 10 håndklassificerede fund hver; se
|
|
302
|
-
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). De andre
|
|
302
|
+
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). De andre 21 skiber på forfatterens
|
|
303
303
|
estimat. Hver scan-fodnote fortæller, hvor mange af de _udløste_ regler,
|
|
304
304
|
der er målt; `mjolnir rules --unmeasured` lister de uregistrerede; hver
|
|
305
305
|
regels `mjolnir explain`-side angiver dens status. Vi offentliggør
|
|
306
306
|
raten, selv når den er grim — QA-CS-103 auditeres til 95 % og er sat i
|
|
307
|
-
karantæne for det. At få
|
|
307
|
+
karantæne for det. At få det tal til at vokse er projektets fortsatte
|
|
308
308
|
arbejde.
|
|
309
309
|
|
|
310
310
|
### Regel-tiers og sproglig modenhed
|
|
@@ -456,14 +456,14 @@ Andet problem, andet lag. AI-review kan spotte en mistænkelig
|
|
|
456
456
|
testændring i en diff; det beviser ikke, at verifikationssystemet som
|
|
457
457
|
helhed er troværdigt — og det ser kun den diff, du viser det.
|
|
458
458
|
|
|
459
|
-
| | AI-kodereview (Copilot m.fl.) |
|
|
460
|
-
| ------------------------------------------- | :-----------------------------------------: |
|
|
461
|
-
| Omkostning pr. scan | Tokens (skalerer med diff-størrelse) |
|
|
462
|
-
| Ser hele suiten + alle CI-konfigs | Kun den PR-diff, du viser |
|
|
463
|
-
| Deterministisk (samme input → samme output) | ❌ (ikke-deterministisk) |
|
|
464
|
-
| Fanger mønstre, der har sovet i måneder | Kun hvis det er i konteksten |
|
|
465
|
-
| Husker fund mellem kørsler | ❌ (ingen hukommelse på tværs af sessioner) |
|
|
466
|
-
| Kører uden menneskelig udløser | Kræver en PR eller prompt | **✅** (CI-hook,
|
|
459
|
+
| | AI-kodereview (Copilot m.fl.) | **Mjölnir** |
|
|
460
|
+
| ------------------------------------------- | :-----------------------------------------: | :--------------------------------: |
|
|
461
|
+
| Omkostning pr. scan | Tokens (skalerer med diff-størrelse) | **Nul** (lokal, installeret) |
|
|
462
|
+
| Ser hele suiten + alle CI-konfigs | Kun den PR-diff, du viser | **Alt, hver gang** |
|
|
463
|
+
| Deterministisk (samme input → samme output) | ❌ (ikke-deterministisk) | **✅** |
|
|
464
|
+
| Fanger mønstre, der har sovet i måneder | Kun hvis det er i konteksten | **✅** (scanner alle filer) |
|
|
465
|
+
| Husker fund mellem kørsler | ❌ (ingen hukommelse på tværs af sessioner) | **✅** (baseline + diff) |
|
|
466
|
+
| Kører uden menneskelig udløser | Kræver en PR eller prompt | **✅** (CI-hook, kører i sekunder) |
|
|
467
467
|
|
|
468
468
|
**Brug begge.** AI fanger nuance, intention og designfejl, ingen regex
|
|
469
469
|
kan finde. Mjölnir fanger de strukturelle mønstre, AI overser, fordi de
|
|
@@ -587,11 +587,18 @@ genbruges aldrig.
|
|
|
587
587
|
rigtig OSS-kode skiber i overskriftstierne (se
|
|
588
588
|
[Hvor meget er målt](#hvor-meget-er-målt)); scan-fodnoten og
|
|
589
589
|
`mjolnir rules --unmeasured` fortæller dig, hvilke der er hvad.
|
|
590
|
-
- **Plugin-tillid** — plugins er npm-pakker deklareret under
|
|
591
|
-
`"plugins"
|
|
590
|
+
- **Plugin-tillid og kørselsport** — plugins er npm-pakker deklareret under
|
|
591
|
+
`"plugins"`; JS-moduler bor i `mjolnir-rules/*.mjs`.
|
|
592
|
+
Der er **ingen sandbox**: plugin-kode kører med fulde
|
|
592
593
|
Node-privilegier, samme tillidsmodel som ESLint- eller
|
|
593
|
-
Vitest-plugins.
|
|
594
|
-
|
|
594
|
+
Vitest-plugins. Derfor er kodekørsel **opt-in ved hver scan**: giv
|
|
595
|
+
`--enable-plugins` (eller sæt `MJOLNIR_ENABLE_PLUGINS=1`), ellers
|
|
596
|
+
indlæses kilderne IKKE — en højlydt stderr-meddelelse lister
|
|
597
|
+
præcis, hvad der blev sprunget over. At skanne utroværdig kode
|
|
598
|
+
udfører den aldrig. JSON-regelmanifester (`mjolnir-rules/*.json`)
|
|
599
|
+
berøres ikke: de deklarerer regex-mønstre og udfører ingen kode af
|
|
600
|
+
konstruktion. Core regel-ID-præfikser er reserverede og afvises
|
|
601
|
+
fra plugins og eksterne regler mod spoofing.
|
|
595
602
|
- **Workspace-lokale eksterne regler** (mappebaserede, nul netværk) —
|
|
596
603
|
en `mjolnir-rules/`-mappe ved siden af scan-målet loader brugerdefinerede
|
|
597
604
|
regler: JSON-filer deklarerer regex-mønstre (ingen kode eksekveres),
|
package/README.de.md
CHANGED
|
@@ -15,7 +15,7 @@ bricht.
|
|
|
15
15
|
|
|
16
16
|
[English](README.md) | [简体中文](README.zh.md) | [繁體中文](README.zht.md) | [한국어](README.ko.md) | Deutsch | [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.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)
|
|
17
17
|
|
|
18
|
-
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-
|
|
18
|
+
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-07.
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
npx mjolnir-qa@latest
|
|
@@ -301,15 +301,15 @@ geshippt werden — das ist die False-Positive-Firewall.
|
|
|
301
301
|
|
|
302
302
|
### Wie viel davon gemessen ist
|
|
303
303
|
|
|
304
|
-
**
|
|
304
|
+
**78 von 99 Regeln tragen eine False-Positive-Rate, gemessen an echtem
|
|
305
305
|
OSS-Code** (jeweils ≥ 10 handklassifizierte Befunde; siehe
|
|
306
|
-
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). Die anderen
|
|
306
|
+
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). Die anderen 21 gehen auf der
|
|
307
307
|
Schätzung des Autors. Jeder Scan-Footer sagt dir, wie viele der
|
|
308
308
|
_ausgelösten_ Regeln gemessen sind; `mjolnir rules --unmeasured` listet
|
|
309
309
|
die nicht gemessenen; die `mjolnir explain`-Seite jeder Regel nennt
|
|
310
310
|
ihren Status. Wir veröffentlichen die Rate, selbst wenn sie hässlich
|
|
311
311
|
ist — QA-CS-103 auditiert bei 95 % und ist deshalb quarantäniert. Diese
|
|
312
|
-
|
|
312
|
+
Zahl zu vergrößern ist die fortlaufende Arbeit des Projekts.
|
|
313
313
|
|
|
314
314
|
### Regel-Tiers und Sprachreife
|
|
315
315
|
|
|
@@ -463,14 +463,14 @@ Teständerung in einem Diff erkennen; sie beweist nicht, dass das
|
|
|
463
463
|
Verifikationssystem als Ganzes vertrauenswürdig ist — und sie sieht nur
|
|
464
464
|
das Diff, das du ihr zeigst.
|
|
465
465
|
|
|
466
|
-
| | KI-Code-Review (Copilot & co.) |
|
|
467
|
-
| -------------------------------------------------- | :--------------------------------: |
|
|
468
|
-
| Kosten pro Scan | Tokens (skaliert mit Diff-Größe) |
|
|
469
|
-
| Sieht die ganze Suite + alle CI-Konfigs | Nur das PR-Diff, das du zeigst |
|
|
470
|
-
| Deterministisch (gleicher Input → gleicher Output) | ❌ (nicht-deterministisch) |
|
|
471
|
-
| Findet monatelang schlafende Muster | Nur, wenn es im Kontext steht |
|
|
472
|
-
| Erinnert sich an Befunde zwischen Läufen | ❌ (kein Gedächtnis über Sessions) |
|
|
473
|
-
| Läuft ohne menschlichen Auslöser | Braucht einen PR oder Prompt | **✅** (CI-Hook,
|
|
466
|
+
| | KI-Code-Review (Copilot & co.) | **Mjölnir** |
|
|
467
|
+
| -------------------------------------------------- | :--------------------------------: | :---------------------------------: |
|
|
468
|
+
| Kosten pro Scan | Tokens (skaliert mit Diff-Größe) | **Null** (lokal, installiert) |
|
|
469
|
+
| Sieht die ganze Suite + alle CI-Konfigs | Nur das PR-Diff, das du zeigst | **Alles, jedes Mal** |
|
|
470
|
+
| Deterministisch (gleicher Input → gleicher Output) | ❌ (nicht-deterministisch) | **✅** |
|
|
471
|
+
| Findet monatelang schlafende Muster | Nur, wenn es im Kontext steht | **✅** (scannt alle Dateien) |
|
|
472
|
+
| Erinnert sich an Befunde zwischen Läufen | ❌ (kein Gedächtnis über Sessions) | **✅** (Baseline + Diff) |
|
|
473
|
+
| Läuft ohne menschlichen Auslöser | Braucht einen PR oder Prompt | **✅** (CI-Hook, läuft in Sekunden) |
|
|
474
474
|
|
|
475
475
|
**Benutze beides.** KI findet Nuance, Intent und Designfehler, die
|
|
476
476
|
keine Regex findet. Mjölnir findet die strukturellen Muster, die KI
|
|
@@ -597,11 +597,19 @@ nie wiederverwendet.
|
|
|
597
597
|
Headline-Tiers (siehe [Wie viel davon gemessen ist](#wie-viel-davon-gemessen-ist));
|
|
598
598
|
der Scan-Footer und `mjolnir rules --unmeasured` sagen dir, welche
|
|
599
599
|
welche sind.
|
|
600
|
-
- **Plugin-Vertrauen** — Plugins sind npm-Pakete,
|
|
601
|
-
`"plugins"
|
|
600
|
+
- **Plugin-Vertrauen & Ausführungs-Gate** — Plugins sind npm-Pakete,
|
|
601
|
+
deklariert unter `"plugins"`; JS-Module liegen in `mjolnir-rules/*.mjs`.
|
|
602
|
+
Es gibt **keine Sandbox**: Plugin-Code läuft mit vollen
|
|
602
603
|
Node-Privilegien, dasselbe Vertrauensmodell wie ESLint- oder
|
|
603
|
-
Vitest-Plugins.
|
|
604
|
-
|
|
604
|
+
Vitest-Plugins. Deshalb ist Code-Ausführung **bei jedem Scan
|
|
605
|
+
Opt-in**: Übergib `--enable-plugins` (oder setze
|
|
606
|
+
`MJOLNIR_ENABLE_PLUGINS=1`), sonst werden die Quellen NICHT geladen —
|
|
607
|
+
ein deutlicher stderr-Hinweis listet genau, was übersprungen wurde.
|
|
608
|
+
Das Scannen nicht vertrauenswürdigen Codes führt ihn nie aus.
|
|
609
|
+
JSON-Regel-Manifeste (`mjolnir-rules/*.json`) sind davon unberührt:
|
|
610
|
+
sie deklarieren Regex-Muster und führen per Design keinen Code aus.
|
|
611
|
+
Kern-Regel-ID-Präfixe sind reserviert und werden von Plugins und
|
|
612
|
+
externen Regeln abgelehnt, um Spoofing zu verhindern.
|
|
605
613
|
- **Workspace-lokale externe Regeln** (ordnerbasiert, null Netzwerk) —
|
|
606
614
|
ein `mjolnir-rules/`-Verzeichnis neben dem Scan-Ziel lädt eigene
|
|
607
615
|
Regeln: JSON-Dateien deklarieren Regex-Muster (kein Code wird
|
package/README.es.md
CHANGED
|
@@ -15,7 +15,7 @@ exactamente dónde se rompe la confianza.
|
|
|
15
15
|
|
|
16
16
|
[English](README.md) | [简体中文](README.zh.md) | [繁體中文](README.zht.md) | [한국어](README.ko.md) | [Deutsch](README.de.md) | Español | [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.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)
|
|
17
17
|
|
|
18
|
-
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-
|
|
18
|
+
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-07.
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
npx mjolnir-qa@latest
|
|
@@ -299,14 +299,14 @@ ese es el cortafuegos de falsos positivos.
|
|
|
299
299
|
|
|
300
300
|
### Cuánto está medido
|
|
301
301
|
|
|
302
|
-
**
|
|
302
|
+
**78 de 99 reglas llevan una tasa de falsos positivos medida contra
|
|
303
303
|
código OSS real** (≥ 10 hallazgos clasificados a mano cada una; ver
|
|
304
|
-
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). Las otras
|
|
304
|
+
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). Las otras 21 salen sobre la
|
|
305
305
|
estimación del autor. Cada pie de escaneo te dice cuántas de las reglas
|
|
306
306
|
_que se dispararon_ están medidas; `mjolnir rules --unmeasured` lista
|
|
307
307
|
las que no; la página `mjolnir explain` de cada regla declara su
|
|
308
308
|
estado. Publicamos la tasa aunque sea fea — QA-CS-103 audita al 95 % y
|
|
309
|
-
está en cuarentena por ello. Hacer crecer
|
|
309
|
+
está en cuarentena por ello. Hacer crecer esa cifra es el trabajo continuo
|
|
310
310
|
del proyecto.
|
|
311
311
|
|
|
312
312
|
### Tiers de reglas y madurez por lenguaje
|
|
@@ -461,14 +461,14 @@ cambio de test sospechoso en un diff; no demuestra que el sistema de
|
|
|
461
461
|
verificación en su conjunto sea confiable — y solo ve el diff que le
|
|
462
462
|
muestras.
|
|
463
463
|
|
|
464
|
-
| | Revisión de código con IA (Copilot, etc.) |
|
|
465
|
-
| ------------------------------------------- | :---------------------------------------: |
|
|
466
|
-
| Coste por escaneo | Tokens (escala con el tamaño del diff) |
|
|
467
|
-
| Ve toda la suite + todas las configs de CI | Solo el diff de PR que le muestras |
|
|
468
|
-
| Determinista (misma entrada → misma salida) | ❌ (no determinista) |
|
|
469
|
-
| Detecta patrones dormidos durante meses | Solo si está en el contexto |
|
|
470
|
-
| Recuerda hallazgos entre ejecuciones | ❌ (sin memoria entre sesiones) |
|
|
471
|
-
| Corre sin disparador humano | Necesita una PR o un prompt |
|
|
464
|
+
| | Revisión de código con IA (Copilot, etc.) | **Mjölnir** |
|
|
465
|
+
| ------------------------------------------- | :---------------------------------------: | :------------------------------------: |
|
|
466
|
+
| Coste por escaneo | Tokens (escala con el tamaño del diff) | **Cero** (local, instalado) |
|
|
467
|
+
| Ve toda la suite + todas las configs de CI | Solo el diff de PR que le muestras | **Todo, cada vez** |
|
|
468
|
+
| Determinista (misma entrada → misma salida) | ❌ (no determinista) | **✅** |
|
|
469
|
+
| Detecta patrones dormidos durante meses | Solo si está en el contexto | **✅** (escanea todos los archivos) |
|
|
470
|
+
| Recuerda hallazgos entre ejecuciones | ❌ (sin memoria entre sesiones) | **✅** (baseline + diff) |
|
|
471
|
+
| Corre sin disparador humano | Necesita una PR o un prompt | **✅** (hook de CI, corre en segundos) |
|
|
472
472
|
|
|
473
473
|
**Usa ambos.** La IA capta el matiz, la intención y los defectos de
|
|
474
474
|
diseño que ninguna regex encuentra. Mjölnir capta los patrones
|
|
@@ -594,11 +594,20 @@ reutilizan.
|
|
|
594
594
|
código OSS real salen en los tiers titulares (ver
|
|
595
595
|
[Cuánto está medido](#cuánto-está-medido)); el pie del escaneo y
|
|
596
596
|
`mjolnir rules --unmeasured` te dicen cuál es cuál.
|
|
597
|
-
- **Confianza en plugins** — los plugins son
|
|
598
|
-
|
|
597
|
+
- **Confianza en plugins y puerta de ejecución** — los plugins son
|
|
598
|
+
paquetes npm declarados
|
|
599
|
+
bajo `"plugins"`; los módulos JS viven en `mjolnir-rules/*.mjs`.
|
|
600
|
+
**No hay sandbox**: el código del plugin corre con
|
|
599
601
|
todos los privilegios de Node, el mismo modelo de confianza que los
|
|
600
|
-
plugins de ESLint o Vitest.
|
|
601
|
-
|
|
602
|
+
plugins de ESLint o Vitest. Por eso, la ejecución de código es
|
|
603
|
+
**opt-in en cada escaneo**: pasa `--enable-plugins` (o define
|
|
604
|
+
`MJOLNIR_ENABLE_PLUGINS=1`), o las fuentes NO se cargan — un aviso
|
|
605
|
+
ruidoso en stderr lista exactamente qué se omitió. Escanear código
|
|
606
|
+
no confiable nunca lo ejecuta. Los manifiestos de reglas JSON
|
|
607
|
+
(`mjolnir-rules/*.json`) no se ven afectados: declaran patrones regex
|
|
608
|
+
y por diseño no ejecutan código. Los prefijos de IDs de reglas core
|
|
609
|
+
están reservados y se rechazan de plugins y reglas externas para
|
|
610
|
+
evitar suplantación.
|
|
602
611
|
- **Reglas externas locales al workspace** (basadas en carpeta, cero
|
|
603
612
|
red) — un directorio `mjolnir-rules/` junto al objetivo del escaneo
|
|
604
613
|
carga reglas personalizadas: archivos JSON declaran patrones regex
|