no-mistakes 0.93.0 → 0.95.0

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.
@@ -55,13 +55,14 @@ type BatchedServerRouteRelatedOptions = BatchedProjectOptions &
55
55
  ({ files: string[] } | { roots: string[] });
56
56
  type BatchedReactUsagesOptions = Pick<
57
57
  ProjectOptions,
58
- "root" | "tsconfig" | "config" | "targets" | "include"
58
+ "root" | "tsconfig" | "config" | "targets" | "include" | "effort"
59
59
  > &
60
60
  Required<Pick<ProjectOptions, "target">>;
61
61
  type BatchedCheckOptions = Pick<
62
62
  CheckOptions,
63
- "root" | "tsconfig" | "config" | "includeSuppressed" | "includeRunnerConfigDeadlines"
64
- >;
63
+ "root" | "tsconfig" | "config" | "includeSuppressed" | "effort"
64
+ > &
65
+ Pick<CheckOptions, "includeRunnerConfigDeadlines" | "includeSqlVerdicts">;
65
66
  type BatchedQueryFileOptions<T> = Omit<T, "root" | "tsconfig">;
66
67
  type BatchedRootConfigOptions<T> = Omit<T, "root" | "config">;
67
68
  type BatchedRootTsConfigOptions<T> = Omit<T, "root" | "tsconfig" | "config">;
@@ -84,7 +85,7 @@ export type AnalyzeProjectReportRequest =
84
85
  | ({ type: "serverRouteRelated"; id?: string } & BatchedServerRouteRelatedOptions)
85
86
  | ({ type: "reactAnalyze" | "reactCheck"; id?: string } & Pick<
86
87
  ProjectOptions,
87
- "targets" | "depth" | "assertNoFetch"
88
+ "targets" | "depth" | "assertNoFetch" | "effort"
88
89
  >)
89
90
  | ({ type: "reactUsages"; id?: string } & BatchedReactUsagesOptions)
90
91
  | ({
@@ -1,20 +1,69 @@
1
1
  import type { QueueCheckFinding } from "./queue-report-types";
2
2
  import type { ReactViolation } from "./react-report-types";
3
+ import type { Effort } from "./traversal-types";
4
+
5
+ /** A low-effort rule that used maximum analysis because a required partner was unavailable. */
6
+ export interface AnalysisFallback {
7
+ /** Canonical rule identifier. */
8
+ rule: string;
9
+ /** Required partner check that could not be validated in scope. */
10
+ partner: string;
11
+ requested: Effort;
12
+ effective: Effort;
13
+ }
3
14
 
4
15
  export interface CheckReport {
5
16
  react: ReactViolation[];
6
17
  queues: QueueCheckFinding[];
7
18
  rules: RuleFinding[];
8
19
  integration: IntegrationFinding[];
20
+ /** Partner-backed low-effort rules that fell back to maximum analysis; omitted when empty. */
21
+ analysisFallbacks?: AnalysisFallback[];
9
22
  /** Present only when requested; declaration evidence, not runtime closure. */
10
23
  runnerConfigDeadlines?: RunnerConfigDeadlineEvidence[];
11
24
  codebase: UniqueExportFinding[];
12
25
  warnings: string[];
26
+ /**
27
+ * SQL-looking member `.query` calls that were not proven to be executors.
28
+ * Omitted when zero. Not a failure and not part of `warnings`.
29
+ */
30
+ unprovenMemberQuerySql?: number;
13
31
  advisories: RuleFinding[];
32
+ /** Present only when `includeSqlVerdicts` is requested, including an empty array. */
33
+ sqlVerdicts?: SqlObligationVerdict[];
14
34
  /** Present when `includeSuppressed` is requested; empty when no directives matched. */
15
35
  suppressed?: SuppressedFinding[];
16
36
  }
17
37
 
38
+ export type SqlVerdictStatus = "violation" | "proven-clear" | "abstain";
39
+ export type SqlEvidenceKind = "exact" | "exhaustive-union" | "verified-prefix" | "policy-exemption";
40
+ export interface SqlExecutorProfile {
41
+ importSpecifier: string;
42
+ executorNames: string[];
43
+ executorFactoryNames: string[];
44
+ executorTypeNames: string[];
45
+ trustedSqlTags: { module: string; name: string }[];
46
+ }
47
+ /** Zero-based ordinal among enabled applications of the same rule in config order. */
48
+ export interface SqlRuleApplication {
49
+ index: number;
50
+ name?: string;
51
+ }
52
+ export interface SqlObligationVerdict {
53
+ profile: SqlExecutorProfile;
54
+ rule: string;
55
+ application?: SqlRuleApplication;
56
+ subcheck: string;
57
+ file: string;
58
+ span: [number, number];
59
+ status: SqlVerdictStatus;
60
+ advisory: boolean;
61
+ evidence?: SqlEvidenceKind;
62
+ knownPrefix?: string;
63
+ helperLines?: number[];
64
+ residualReasons?: string[];
65
+ }
66
+
18
67
  export interface SuppressedFinding {
19
68
  domain: "react" | "queues" | "rules" | "filesystem" | "integration" | "codebase" | "advisories";
20
69
  rule: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "no-mistakes",
3
- "version": "0.93.0",
3
+ "version": "0.95.0",
4
4
  "description": "Deterministic impact maps, test plans, Playwright coverage, and repository checks for coding agents",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -65,9 +65,9 @@
65
65
  }
66
66
  },
67
67
  "optionalDependencies": {
68
- "no-mistakes-darwin-arm64": "0.93.0",
69
- "no-mistakes-linux-arm64-gnu": "0.93.0",
70
- "no-mistakes-linux-x64-gnu": "0.93.0",
71
- "no-mistakes-win32-x64-msvc": "0.93.0"
68
+ "no-mistakes-darwin-arm64": "0.95.0",
69
+ "no-mistakes-linux-arm64-gnu": "0.95.0",
70
+ "no-mistakes-linux-x64-gnu": "0.95.0",
71
+ "no-mistakes-win32-x64-msvc": "0.95.0"
72
72
  }
73
73
  }
@@ -1,5 +1,7 @@
1
- /** Policy for executor SQL whose leading text cannot be proven. Defaults to `report`. */
2
- export type PostgresUnanalyzableSql = "report" | "ignore";
1
+ import type { Effort, Unanalyzable } from "./traversal-types";
2
+
3
+ /** Backward-compatible SQL-specific name for the shared unanalyzable policy. */
4
+ export type PostgresUnanalyzableSql = Unanalyzable;
3
5
 
4
6
  /** Configuration options for the `postgres-require-query-annotation` check rule. */
5
7
  export interface PostgresRequireQueryAnnotationOptions {
@@ -9,6 +11,9 @@ export interface PostgresRequireQueryAnnotationOptions {
9
11
  executorNames?: string[];
10
12
  executorFactoryNames?: string[];
11
13
  executorTypeNames?: string[];
14
+ /** @deprecated At effort "low" only; ignored there and warns when configured. Still used at effort "max". */
12
15
  trustedSqlTags?: { module: string; name: string }[];
16
+ effort?: Effort;
17
+ unanalyzable?: Unanalyzable;
13
18
  unanalyzableSql?: PostgresUnanalyzableSql;
14
19
  }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Literal per-package Swift runner argv from `tests.swift.baseCommands`.
3
+ * Keys are declared `tests.swift.packages` paths. Omitted packages use
4
+ * `["swift", "test"]`.
5
+ */
6
+ export interface SwiftPackageBaseCommands {
7
+ [packageRoot: string]: string[];
8
+ }
@@ -0,0 +1,38 @@
1
+ export interface SymbolExport {
2
+ name: string;
3
+ kind: string;
4
+ line: number;
5
+ reExport?: {
6
+ source: string;
7
+ imported: string;
8
+ resolved?: string;
9
+ };
10
+ }
11
+
12
+ export interface SymbolImport {
13
+ source: string;
14
+ imported: string;
15
+ local: string;
16
+ line: number;
17
+ typeOnly: boolean;
18
+ resolved?: string;
19
+ }
20
+
21
+ export interface SymbolFile {
22
+ path: string;
23
+ exports?: SymbolExport[];
24
+ imports?: SymbolImport[];
25
+ }
26
+
27
+ export interface SymbolsResult {
28
+ roots: string[];
29
+ files: SymbolFile[];
30
+ }
31
+
32
+ export type {
33
+ SignatureImpactCaller,
34
+ SignatureImpactLocation,
35
+ SignatureImpactResult,
36
+ SignatureImpactTest,
37
+ SignatureImpactWarning,
38
+ } from "./signature-impact-types";
package/test-types.d.ts CHANGED
@@ -101,6 +101,18 @@ export interface TestsTargetsOptions {
101
101
  files: string[];
102
102
  }
103
103
 
104
+ /**
105
+ * Why dependency coverage in a plan is unfinished.
106
+ * `fallbackTriggered` is not a substitute for this marker.
107
+ */
108
+ export type TestPlanIncompletenessKind = "dependency-baseline-missing";
109
+
110
+ export interface TestPlanIncompleteness {
111
+ kind: TestPlanIncompletenessKind;
112
+ /** Root-relative manifests or lockfiles that had no comparison baseline. */
113
+ files: string[];
114
+ }
115
+
104
116
  export interface TestPlan {
105
117
  /** Complete deterministic changed-file inventory, relative to the request root. */
106
118
  changedFiles: string[];
@@ -109,6 +121,11 @@ export interface TestPlan {
109
121
  warnings: TestPlanWarning[];
110
122
  fallbackTriggered: boolean;
111
123
  fallbackReason?: string | null;
124
+ /**
125
+ * Present when dependency coverage is unfinished. A scoped fallback can
126
+ * still set `fallbackTriggered` without covering these files.
127
+ */
128
+ incomplete?: TestPlanIncompleteness[];
112
129
  executionTargets?: GroupedExecutionTarget[];
113
130
  comment?: string | null;
114
131
  }
@@ -139,6 +156,7 @@ export interface TestExecutionTarget {
139
156
  project?: string | null;
140
157
  /** Path-prefix display name, such as a Swift package root. */
141
158
  name?: string;
159
+ /** Swift uses {@link SwiftPackageBaseCommands} or `["swift", "test"]`. */
142
160
  baseCommand: string[];
143
161
  runnerArgs: string[];
144
162
  }
@@ -143,46 +143,21 @@ export type SymbolsSignatureImpactOptions = SymbolsOptions & {
143
143
  symbol: string;
144
144
  };
145
145
 
146
- export interface SymbolExport {
147
- name: string;
148
- kind: string;
149
- line: number;
150
- reExport?: {
151
- source: string;
152
- imported: string;
153
- resolved?: string;
154
- };
155
- }
156
-
157
- export interface SymbolImport {
158
- source: string;
159
- imported: string;
160
- local: string;
161
- line: number;
162
- typeOnly: boolean;
163
- resolved?: string;
164
- }
165
-
166
- export interface SymbolFile {
167
- path: string;
168
- exports?: SymbolExport[];
169
- imports?: SymbolImport[];
170
- }
171
-
172
- export interface SymbolsResult {
173
- roots: string[];
174
- files: SymbolFile[];
175
- }
176
-
177
146
  export type {
147
+ SymbolExport,
148
+ SymbolImport,
149
+ SymbolFile,
150
+ SymbolsResult,
178
151
  SignatureImpactCaller,
179
152
  SignatureImpactLocation,
180
153
  SignatureImpactResult,
181
154
  SignatureImpactTest,
182
155
  SignatureImpactWarning,
183
- } from "./signature-impact-types";
156
+ } from "./symbol-traversal-types";
184
157
 
185
158
  export interface ProjectOptions {
159
+ /** Accepted by shared N-API options; applies to check reports and is ignored by other commands. */
160
+ effort?: Effort;
186
161
  /** Project root. Defaults to the current working directory. */
187
162
  root?: string;
188
163
  /** Path to tsconfig.json for alias resolution. Searched upward if omitted. */
@@ -202,9 +177,19 @@ export interface ProjectOptions {
202
177
  include?: string;
203
178
  }
204
179
 
180
+ /** Analysis effort for configured rules. `max` preserves the current analysis. */
181
+ export type Effort = "low" | "max";
182
+
183
+ /** Policy for rule inputs that the selected effort cannot analyze. */
184
+ export type Unanalyzable = "report" | "advise" | "ignore";
185
+
205
186
  export interface CheckOptions extends ProjectOptions {
187
+ /** Override configured rule effort for this check invocation. Defaults to `max`. */
188
+ effort?: Effort;
206
189
  /** Add deterministic accounting for findings hidden by no-mistakes directives. */
207
190
  includeSuppressed?: boolean;
208
191
  /** Add declared config evidence; absent slots never imply SDK defaults. */
209
192
  includeRunnerConfigDeadlines?: boolean;
193
+ /** Include per-obligation SQL proof and residual uncertainty in the check report. */
194
+ includeSqlVerdicts?: boolean;
210
195
  }
package/types.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from "./analyze-project-types";
4
4
  export * from "./flow-types";
5
5
  export * from "./import-usage-types";
6
6
  export * from "./test-types";
7
+ export * from "./swift-command-types";
7
8
  export * from "./test-audit-types";
8
9
  export * from "./report-types";
9
10
  export * from "./server-contract-types";