mjolnir-qa 1.0.1 → 1.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 +6 -0
- package/dist/cli.d.mts +55 -1
- package/dist/cli.mjs +287 -9
- package/dist/mcp/stdio.mjs +287 -9
- 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
|
+
## [1.0.2] — 2026-09-09
|
|
13
|
+
|
|
14
|
+
### Changes since 1
|
|
15
|
+
|
|
16
|
+
- P8: depth adjudication — no unexplained depth (all 89 LEXICAL rules + matrix completion + migration deferral) (#70)
|
|
17
|
+
|
|
12
18
|
## [1.0.1] — 2026-09-09
|
|
13
19
|
|
|
14
20
|
### Changes since 0
|
package/dist/cli.d.mts
CHANGED
|
@@ -400,6 +400,51 @@ interface Workspace {
|
|
|
400
400
|
* Phase 6).
|
|
401
401
|
*/
|
|
402
402
|
type DetectionStrategy = "LEXICAL" | "AST" | "SEMANTIC" | "QA_MODEL" | "FRAMEWORK" | "RUNTIME";
|
|
403
|
+
/**
|
|
404
|
+
* Closed reason-code set for `strategyJustification` (master plan P8,
|
|
405
|
+
* plan 1788853205786 — flag 6, decision 9: "no unexplained depth").
|
|
406
|
+
* A LEXICAL rule ships only when its lexical form is JUSTIFIED by one
|
|
407
|
+
* of these codes; the depth-adjudication doc renders them.
|
|
408
|
+
*/
|
|
409
|
+
type StrategyReasonCode =
|
|
410
|
+
/** The detection target is a config/workflow surface whose statements
|
|
411
|
+
* ARE string literals (shell in YAML, key=value) — a syntax tree adds
|
|
412
|
+
* nothing the text does not already carry. */
|
|
413
|
+
"shell-string-in-config" |
|
|
414
|
+
/** The detection is an exact, unambiguous runner-API token (`.only`,
|
|
415
|
+
* `test.skip`, `fit`) — lexical precision equals structural precision. */
|
|
416
|
+
"exact-key-match" |
|
|
417
|
+
/** The defect IS the lexical artifact (commented-out test code, a
|
|
418
|
+
* recorder's default title left committed) — the text is the finding. */
|
|
419
|
+
"lexical-artifact" |
|
|
420
|
+
/** The semantics live in runner behavior (retries, report generation,
|
|
421
|
+
* fixture lifecycle) that no language syntax tree represents. */
|
|
422
|
+
"runner-semantic" |
|
|
423
|
+
/** The defect lives in string content (selector, URL) that the
|
|
424
|
+
* code-text masking deliberately excludes from structural analysis. */
|
|
425
|
+
"string-content-defect" |
|
|
426
|
+
/** Absence detection over a suite/directory — there is no single
|
|
427
|
+
* syntax node; the evidence is the aggregate shape of the tree. */
|
|
428
|
+
"absence-aggregate" |
|
|
429
|
+
/** The variant must stay in lockstep with its family's §13.2 mandatory
|
|
430
|
+
* regex fallback — the family's structural path already carries the
|
|
431
|
+
* depth, and the lexical path is the deterministic degraded mode. */
|
|
432
|
+
"family-fallback-lockstep" |
|
|
433
|
+
/** Migration to AST/QA_MODEL is plausible but UNPROVEN: no measurement
|
|
434
|
+
* yet demonstrates an FP reduction. Deferred to the next measurement
|
|
435
|
+
* round by owner directive (2026-09-09); the lexical detector ships
|
|
436
|
+
* with its measured tier in the meantime. */
|
|
437
|
+
"migration-deferred-next-measurement";
|
|
438
|
+
interface StrategyJustification {
|
|
439
|
+
/** One of the closed codes above — the machine-readable verdict. */
|
|
440
|
+
reasonCode: StrategyReasonCode;
|
|
441
|
+
/**
|
|
442
|
+
* The human-readable derivation: WHY this code applies to THIS rule,
|
|
443
|
+
* citing the detector's actual shape. Rendered by the rule docs and
|
|
444
|
+
* the depth-adjudication doc; vague boilerplate is a review rejection.
|
|
445
|
+
*/
|
|
446
|
+
detail: string;
|
|
447
|
+
}
|
|
403
448
|
interface RuleMeta {
|
|
404
449
|
/** Frozen public API — never reused (§18.4). */
|
|
405
450
|
id: string;
|
|
@@ -482,6 +527,15 @@ interface RuleMeta {
|
|
|
482
527
|
* findings that merely weaken a single test.
|
|
483
528
|
*/
|
|
484
529
|
suiteInvalidating?: boolean;
|
|
530
|
+
/**
|
|
531
|
+
* Depth-adjudication record (master plan P8, plan 1788853205786 —
|
|
532
|
+
* flag 6, decision 9: "no unexplained depth"). REQUIRED for every
|
|
533
|
+
* rule whose `detectionStrategy` is LEXICAL (enforced by the doctor's
|
|
534
|
+
* registry-sanity check): the reason the lexical form is the honest
|
|
535
|
+
* shipped detector, with a closed reason code and a derivation that
|
|
536
|
+
* cites the detector's actual shape. Non-LEXICAL rules may omit it.
|
|
537
|
+
*/
|
|
538
|
+
strategyJustification?: StrategyJustification;
|
|
485
539
|
}
|
|
486
540
|
interface SourceFileContext {
|
|
487
541
|
/** Repo-relative path, forward slashes. */
|
|
@@ -826,7 +880,7 @@ declare const runScan: typeof runScan$1, buildUniversalRules: typeof buildUniver
|
|
|
826
880
|
* `scripts/sync-sarif-version.cjs` on release and guarded by
|
|
827
881
|
* `tests/version-consistency.spec.ts` locally.
|
|
828
882
|
*/
|
|
829
|
-
declare const CLI_VERSION = "1.0.
|
|
883
|
+
declare const CLI_VERSION = "1.0.2";
|
|
830
884
|
/** A usage-error detail: the offending token, when one exists. */
|
|
831
885
|
interface UsageErrorDetail {
|
|
832
886
|
/** The unknown flag or rejected value (e.g. `--nope`, `loud`). */
|