mjolnir-qa 0.5.15 → 0.5.16

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,7 +9,13 @@ 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.4] — 2026-09-06
12
+ ## [0.5.16] — 2026-09-07
13
+
14
+ ### Changes since 0.5.15
15
+
16
+ - Curation + mechanical hygiene: QA-PW-124 D3 alignment, F7-F10 closures (#51)
17
+
18
+ ## [0.5.4] — 2026-09-06
13
19
 
14
20
  ### Agent Handoff + Minimized Reporting (plan 1788599400000)
15
21
 
package/dist/cli.d.mts CHANGED
@@ -699,7 +699,7 @@ declare const runScan: typeof runScan$1, buildUniversalRules: typeof buildUniver
699
699
  * `scripts/sync-sarif-version.cjs` on release and guarded by
700
700
  * `tests/version-consistency.spec.ts` locally.
701
701
  */
702
- declare const CLI_VERSION = "0.5.15";
702
+ declare const CLI_VERSION = "0.5.16";
703
703
  /** A usage-error detail: the offending token, when one exists. */
704
704
  interface UsageErrorDetail {
705
705
  /** The unknown flag or rejected value (e.g. `--nope`, `loud`). */
package/dist/cli.mjs CHANGED
@@ -5403,6 +5403,13 @@ const pwNoTraceOnRetry = defineRule({
5403
5403
  * QA-PW-124 — Projects defined but no smoke/regression split.
5404
5404
  * Severity: info · Confidence: high · deterministic-defect
5405
5405
  * One monolithic project forces full-suite-or-nothing; PR feedback dies.
5406
+ *
5407
+ * detectorRevision 2 (certification-audit D3, 2026-09-07): the rule is now
5408
+ * DECLARED as a config-gated rule (`configRule` + `configFiles`) instead of
5409
+ * relying only on its internal basename gate — same gating surface as
5410
+ * QA-PW-121/122/141/143/144. Detection logic is unchanged (the internal
5411
+ * basename gate remains as defense in depth), so scan output is
5412
+ * byte-identical; the revision bump declares the metadata change per §07.
5406
5413
  */
5407
5414
  const pwNoProjectSplit = defineRule({
5408
5415
  id: "QA-PW-124",
@@ -5413,13 +5420,16 @@ const pwNoProjectSplit = defineRule({
5413
5420
  findingType: "heuristic-risk",
5414
5421
  qaImpact: "HYGIENE",
5415
5422
  appliesTo: "test-files",
5423
+ configRule: true,
5424
+ configFiles: ["^playwright\\.config\\.(?:ts|js|mjs|cts)$"],
5416
5425
  languages: ["typescript", "javascript"],
5417
5426
  frameworks: ["playwright"],
5418
5427
  falsePositiveRisk: "low",
5419
5428
  autofix: false,
5420
5429
  detectionStrategy: "LEXICAL",
5421
- detectionNotes: "regex heuristic",
5430
+ detectionNotes: "regex heuristic over playwright.config.* (adapter-gated)",
5422
5431
  introduced: "0.3.0",
5432
+ detectorRevision: 2,
5423
5433
  run(ctx) {
5424
5434
  const text = ctx.text;
5425
5435
  const findings = [];
@@ -13254,7 +13264,7 @@ function renderSarif(result, repoRootUri) {
13254
13264
  tool: { driver: {
13255
13265
  name: "Mjölnir",
13256
13266
  informationUri: "https://github.com/Sergey-Bar/Mjolnir",
13257
- version: "0.5.15",
13267
+ version: "0.5.16",
13258
13268
  rules: [...rules.values()].map((r) => {
13259
13269
  const meta = RULES.find((x) => x.id === r.id);
13260
13270
  return {
@@ -18064,7 +18074,7 @@ const { runScan, buildUniversalRules, fallbackWorkspace, pathMatchesGlob, isVali
18064
18074
  * `scripts/sync-sarif-version.cjs` on release and guarded by
18065
18075
  * `tests/version-consistency.spec.ts` locally.
18066
18076
  */
18067
- const CLI_VERSION = "0.5.15";
18077
+ const CLI_VERSION = "0.5.16";
18068
18078
  function parseArgs(argv, onError) {
18069
18079
  const args = {
18070
18080
  target: ".",
@@ -5402,6 +5402,13 @@ const pwNoTraceOnRetry = defineRule({
5402
5402
  * QA-PW-124 — Projects defined but no smoke/regression split.
5403
5403
  * Severity: info · Confidence: high · deterministic-defect
5404
5404
  * One monolithic project forces full-suite-or-nothing; PR feedback dies.
5405
+ *
5406
+ * detectorRevision 2 (certification-audit D3, 2026-09-07): the rule is now
5407
+ * DECLARED as a config-gated rule (`configRule` + `configFiles`) instead of
5408
+ * relying only on its internal basename gate — same gating surface as
5409
+ * QA-PW-121/122/141/143/144. Detection logic is unchanged (the internal
5410
+ * basename gate remains as defense in depth), so scan output is
5411
+ * byte-identical; the revision bump declares the metadata change per §07.
5405
5412
  */
5406
5413
  const pwNoProjectSplit = defineRule({
5407
5414
  id: "QA-PW-124",
@@ -5412,13 +5419,16 @@ const pwNoProjectSplit = defineRule({
5412
5419
  findingType: "heuristic-risk",
5413
5420
  qaImpact: "HYGIENE",
5414
5421
  appliesTo: "test-files",
5422
+ configRule: true,
5423
+ configFiles: ["^playwright\\.config\\.(?:ts|js|mjs|cts)$"],
5415
5424
  languages: ["typescript", "javascript"],
5416
5425
  frameworks: ["playwright"],
5417
5426
  falsePositiveRisk: "low",
5418
5427
  autofix: false,
5419
5428
  detectionStrategy: "LEXICAL",
5420
- detectionNotes: "regex heuristic",
5429
+ detectionNotes: "regex heuristic over playwright.config.* (adapter-gated)",
5421
5430
  introduced: "0.3.0",
5431
+ detectorRevision: 2,
5422
5432
  run(ctx) {
5423
5433
  const text = ctx.text;
5424
5434
  const findings = [];
@@ -13253,7 +13263,7 @@ function renderSarif(result, repoRootUri) {
13253
13263
  tool: { driver: {
13254
13264
  name: "Mjölnir",
13255
13265
  informationUri: "https://github.com/Sergey-Bar/Mjolnir",
13256
- version: "0.5.15",
13266
+ version: "0.5.16",
13257
13267
  rules: [...rules.values()].map((r) => {
13258
13268
  const meta = RULES.find((x) => x.id === r.id);
13259
13269
  return {
@@ -17700,7 +17710,7 @@ const { runScan, buildUniversalRules, fallbackWorkspace, pathMatchesGlob, isVali
17700
17710
  * `scripts/sync-sarif-version.cjs` on release and guarded by
17701
17711
  * `tests/version-consistency.spec.ts` locally.
17702
17712
  */
17703
- const CLI_VERSION = "0.5.15";
17713
+ const CLI_VERSION = "0.5.16";
17704
17714
  function parseArgs(argv, onError) {
17705
17715
  const args = {
17706
17716
  target: ".",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mjolnir-qa",
3
- "version": "0.5.15",
3
+ "version": "0.5.16",
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": {
@@ -87,7 +87,6 @@
87
87
  "@playwright/test": "^1.50.0",
88
88
  "@types/node": "^26.4.0",
89
89
  "@vitest/coverage-istanbul": "^4.1.11",
90
- "@vitest/coverage-v8": "^4.1.11",
91
90
  "axe-core": "^4.13.0",
92
91
  "eslint": "^10.9.1",
93
92
  "eslint-plugin-regexp": "^3.3.0",