mjolnir-qa 0.5.31 → 0.5.32
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 +6 -0
- package/README.md +4 -4
- package/dist/cli.d.mts +1 -1
- package/dist/cli.mjs +2 -2
- package/dist/mcp/stdio.mjs +2 -2
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,12 @@ 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
|
+
## [0.5.32] — 2026-09-08
|
|
13
|
+
|
|
14
|
+
### Changes since 0.5.31
|
|
15
|
+
|
|
16
|
+
- P0: repo state + truth drift — single measured count with drift lock (#62)
|
|
17
|
+
|
|
12
18
|
## [0.5.31] — 2026-09-08
|
|
13
19
|
|
|
14
20
|
### Changes since 0.5.30
|
package/README.md
CHANGED
|
@@ -241,7 +241,7 @@ globally with `npm i -g mjolnir-qa` if you prefer it over `npx`.
|
|
|
241
241
|
|
|
242
242
|
## What Mjölnir finds
|
|
243
243
|
|
|
244
|
-
|
|
244
|
+
**<!-- census:total-rules -->99 rules<!-- /census:total-rules -->** in four families — **test hygiene**, **test quality**,
|
|
245
245
|
**Playwright**, **CI integrity** — over TypeScript/JavaScript, Python,
|
|
246
246
|
Java, C# and GitHub Actions YAML, covering Playwright in all four bindings
|
|
247
247
|
plus pytest, JUnit, TestNG, NUnit, xUnit, MSTest, Jest, Vitest and Mocha,
|
|
@@ -433,9 +433,9 @@ Rung by rung: [docs/TERMINOLOGY.md](docs/TERMINOLOGY.md).
|
|
|
433
433
|
|
|
434
434
|
### How much of this is measured
|
|
435
435
|
|
|
436
|
-
|
|
436
|
+
**<!-- census:measured-of-total -->78 of 99<!-- /census:measured-of-total --> rules carry a false-positive rate measured against real OSS code**
|
|
437
437
|
(≥ 10 hand-classified findings each — [docs/FP-AUDIT.md](docs/FP-AUDIT.md)).
|
|
438
|
-
The other 21 ship on the author's estimate and say so, per rule, in
|
|
438
|
+
The other <!-- census:unmeasured -->21<!-- /census:unmeasured --> ship on the author's estimate and say so, per rule, in
|
|
439
439
|
`mjolnir explain`; `mjolnir rules --unmeasured` lists them, and every scan
|
|
440
440
|
footer reports how many of the rules that actually _fired_ are measured.
|
|
441
441
|
|
|
@@ -658,7 +658,7 @@ artifacts.
|
|
|
658
658
|
product does what the requirement asked for.
|
|
659
659
|
- **A 100 is not proof of a good suite.** Whether your suite covers your
|
|
660
660
|
actual risk is a different question, and this tool does not answer it.
|
|
661
|
-
-
|
|
661
|
+
- **<!-- census:unmeasured-of-total -->21 of 99<!-- /census:unmeasured-of-total --> rules ship on an estimate**, not a measured rate — disclosed
|
|
662
662
|
per rule, not buried here.
|
|
663
663
|
- **E1 is not E2.** Heuristic findings are worth reading, not worth
|
|
664
664
|
applying blindly.
|
package/dist/cli.d.mts
CHANGED
|
@@ -728,7 +728,7 @@ declare const runScan: typeof runScan$1, buildUniversalRules: typeof buildUniver
|
|
|
728
728
|
* `scripts/sync-sarif-version.cjs` on release and guarded by
|
|
729
729
|
* `tests/version-consistency.spec.ts` locally.
|
|
730
730
|
*/
|
|
731
|
-
declare const CLI_VERSION = "0.5.
|
|
731
|
+
declare const CLI_VERSION = "0.5.32";
|
|
732
732
|
/** A usage-error detail: the offending token, when one exists. */
|
|
733
733
|
interface UsageErrorDetail {
|
|
734
734
|
/** The unknown flag or rejected value (e.g. `--nope`, `loud`). */
|
package/dist/cli.mjs
CHANGED
|
@@ -13290,7 +13290,7 @@ function renderSarif(result, repoRootUri) {
|
|
|
13290
13290
|
tool: { driver: {
|
|
13291
13291
|
name: "Mjölnir",
|
|
13292
13292
|
informationUri: "https://github.com/Sergey-Bar/Mjolnir",
|
|
13293
|
-
version: "0.5.
|
|
13293
|
+
version: "0.5.32",
|
|
13294
13294
|
rules: [...rules.values()].map((r) => {
|
|
13295
13295
|
const meta = RULES.find((x) => x.id === r.id);
|
|
13296
13296
|
return {
|
|
@@ -18662,7 +18662,7 @@ const { runScan, buildUniversalRules, fallbackWorkspace, pathMatchesGlob, isVali
|
|
|
18662
18662
|
* `scripts/sync-sarif-version.cjs` on release and guarded by
|
|
18663
18663
|
* `tests/version-consistency.spec.ts` locally.
|
|
18664
18664
|
*/
|
|
18665
|
-
const CLI_VERSION = "0.5.
|
|
18665
|
+
const CLI_VERSION = "0.5.32";
|
|
18666
18666
|
function parseArgs(argv, onError) {
|
|
18667
18667
|
const args = {
|
|
18668
18668
|
target: ".",
|
package/dist/mcp/stdio.mjs
CHANGED
|
@@ -13289,7 +13289,7 @@ function renderSarif(result, repoRootUri) {
|
|
|
13289
13289
|
tool: { driver: {
|
|
13290
13290
|
name: "Mjölnir",
|
|
13291
13291
|
informationUri: "https://github.com/Sergey-Bar/Mjolnir",
|
|
13292
|
-
version: "0.5.
|
|
13292
|
+
version: "0.5.32",
|
|
13293
13293
|
rules: [...rules.values()].map((r) => {
|
|
13294
13294
|
const meta = RULES.find((x) => x.id === r.id);
|
|
13295
13295
|
return {
|
|
@@ -18298,7 +18298,7 @@ const { runScan, buildUniversalRules, fallbackWorkspace, pathMatchesGlob, isVali
|
|
|
18298
18298
|
* `scripts/sync-sarif-version.cjs` on release and guarded by
|
|
18299
18299
|
* `tests/version-consistency.spec.ts` locally.
|
|
18300
18300
|
*/
|
|
18301
|
-
const CLI_VERSION = "0.5.
|
|
18301
|
+
const CLI_VERSION = "0.5.32";
|
|
18302
18302
|
function parseArgs(argv, onError) {
|
|
18303
18303
|
const args = {
|
|
18304
18304
|
target: ".",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mjolnir-qa",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.32",
|
|
4
4
|
"description": "Mjölnir — the Verification Trust Engine for QA. Audits test suites and CI pipelines, reports a worthiness score and prioritized findings.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"corpus:sample": "tsx scripts/corpus-sample.ts",
|
|
37
37
|
"fp-audit:generate": "tsx scripts/generate-fp-audit-table.ts",
|
|
38
38
|
"docs:rules": "tsx scripts/generate-rule-docs.ts",
|
|
39
|
+
"docs:counts": "tsx scripts/generate-counts.ts",
|
|
39
40
|
"docs:capability": "tsx scripts/generate-capability-matrix.ts",
|
|
40
41
|
"docs:machine-contract": "tsx scripts/generate-machine-contract-doc.ts",
|
|
41
42
|
"docs:hero": "tsx scripts/generate-readme-hero.ts",
|