memorydetective 1.13.0 → 1.14.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +6 -2
  3. package/USAGE.md +29 -0
  4. package/dist/index.js +9 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/parsers/schemaDiscovery.d.ts +88 -0
  7. package/dist/parsers/schemaDiscovery.js +144 -0
  8. package/dist/parsers/schemaDiscovery.js.map +1 -0
  9. package/dist/parsers/xctraceXml.d.ts +5 -0
  10. package/dist/parsers/xctraceXml.js +3 -0
  11. package/dist/parsers/xctraceXml.js.map +1 -1
  12. package/dist/tools/analyzeAllocations.d.ts +5 -1
  13. package/dist/tools/analyzeAllocations.js +17 -1
  14. package/dist/tools/analyzeAllocations.js.map +1 -1
  15. package/dist/tools/analyzeAnimationHitches.d.ts +5 -1
  16. package/dist/tools/analyzeAnimationHitches.js +17 -1
  17. package/dist/tools/analyzeAnimationHitches.js.map +1 -1
  18. package/dist/tools/analyzeAppLaunch.d.ts +3 -0
  19. package/dist/tools/analyzeAppLaunch.js +17 -1
  20. package/dist/tools/analyzeAppLaunch.js.map +1 -1
  21. package/dist/tools/analyzeHangs.d.ts +63 -3
  22. package/dist/tools/analyzeHangs.js +143 -19
  23. package/dist/tools/analyzeHangs.js.map +1 -1
  24. package/dist/tools/analyzeNetworkActivity.d.ts +99 -0
  25. package/dist/tools/analyzeNetworkActivity.js +312 -0
  26. package/dist/tools/analyzeNetworkActivity.js.map +1 -0
  27. package/dist/tools/analyzeTimeProfile.d.ts +10 -1
  28. package/dist/tools/analyzeTimeProfile.js +63 -8
  29. package/dist/tools/analyzeTimeProfile.js.map +1 -1
  30. package/dist/tools/countAlive.d.ts +35 -1
  31. package/dist/tools/countAlive.js +124 -29
  32. package/dist/tools/countAlive.js.map +1 -1
  33. package/dist/tools/inspectTrace.js +112 -18
  34. package/dist/tools/inspectTrace.js.map +1 -1
  35. package/dist/tools/recordTimeProfile.d.ts +83 -0
  36. package/dist/tools/recordTimeProfile.js +135 -0
  37. package/dist/tools/recordTimeProfile.js.map +1 -1
  38. package/dist/tools/replayScenario.d.ts +4 -4
  39. package/dist/tools/summarizeTrace.d.ts +2 -2
  40. package/dist/tools/verifyFix.d.ts +27 -0
  41. package/dist/tools/verifyFix.js +78 -4
  42. package/dist/tools/verifyFix.js.map +1 -1
  43. package/dist/types.d.ts +28 -0
  44. package/package.json +2 -2
@@ -1,8 +1,10 @@
1
1
  import { z } from "zod";
2
2
  import { existsSync, mkdirSync } from "node:fs";
3
+ import { spawn } from "node:child_process";
3
4
  import { resolve as resolvePath, dirname, isAbsolute as isAbsolutePath, join as joinPath, } from "node:path";
4
5
  import { runCommand } from "../runtime/exec.js";
5
6
  import { getSecurityFlags, maxRecordingExceededMessage, } from "../runtime/securityFlags.js";
7
+ import { getPlatformAdvisory } from "../runtime/platformCheck.js";
6
8
  /**
7
9
  * Base shape, exposed so the MCP layer can read `.shape` (ZodEffects from
8
10
  * `.superRefine()` doesn't expose shape).
@@ -91,6 +93,115 @@ const XCTRACE_TIMEOUT_GRACE_SEC = 30;
91
93
  * when xctrace is wedged.
92
94
  */
93
95
  const XCTRACE_GRACEFUL_KILL_MS = 10_000;
96
+ const PREFLIGHT_TIME_LIMIT_SEC = 2;
97
+ const PREFLIGHT_WRAPPER_TIMEOUT_MS = (PREFLIGHT_TIME_LIMIT_SEC + 6) * 1000;
98
+ const PREFLIGHT_GRACEFUL_KILL_MS = 2000;
99
+ /**
100
+ * Returns true when a pre-flight probe should run before the user's
101
+ * actual recording. v1.14 item H.
102
+ *
103
+ * - `MEMORYDETECTIVE_PREFLIGHT_XCTRACE=1` forces preflight on.
104
+ * - `MEMORYDETECTIVE_PREFLIGHT_XCTRACE=0` forces it off.
105
+ * - Default: auto-enabled when host is macOS 26.x AND target is a
106
+ * simulator AND attach mode (`--attach`, not `--launch`). The set of
107
+ * configurations where the regression is known to fire.
108
+ *
109
+ * The `osPlatform` and `osRelease` params are threaded through to
110
+ * `getPlatformAdvisory` so tests can simulate non-macOS-26 hosts even
111
+ * when running on a real macOS 26.x machine.
112
+ */
113
+ export function shouldPreflightXctrace(input, env = process.env, osPlatform, osRelease) {
114
+ const explicit = env.MEMORYDETECTIVE_PREFLIGHT_XCTRACE;
115
+ if (explicit === "1")
116
+ return true;
117
+ if (explicit === "0")
118
+ return false;
119
+ // Auto: only when the known-broken combination applies.
120
+ const onMacOS26 = getPlatformAdvisory(env, osPlatform, osRelease) != null;
121
+ const isSimTarget = !!input.simulatorId && !input.deviceId;
122
+ const isAttachMode = !input.launchBundleId;
123
+ return onMacOS26 && isSimTarget && isAttachMode;
124
+ }
125
+ /**
126
+ * Runs the 2-second probe. Reuses runCommand's timeout wrapper with the
127
+ * same SIGINT-first / SIGKILL-fallback shape that the full recording
128
+ * uses, so the probe's salvage behavior matches the real path.
129
+ *
130
+ * The output bundle is placed at `<output>.preflight` to keep it
131
+ * recognizable in cleanup tools and not collide with the user's actual
132
+ * output path.
133
+ */
134
+ export async function preflightXctraceRecord(input, resolvedOutput) {
135
+ const probeOutput = `${resolvedOutput}.preflight`;
136
+ const probeInput = {
137
+ ...input,
138
+ durationSec: PREFLIGHT_TIME_LIMIT_SEC,
139
+ output: probeOutput,
140
+ };
141
+ const args = buildXctraceArgs(probeInput);
142
+ const probeOutDir = dirname(probeOutput);
143
+ if (!existsSync(probeOutDir)) {
144
+ mkdirSync(probeOutDir, { recursive: true });
145
+ }
146
+ const start = Date.now();
147
+ const result = await runCommand("xcrun", args, {
148
+ timeoutMs: PREFLIGHT_WRAPPER_TIMEOUT_MS,
149
+ timeoutSignal: "SIGINT",
150
+ gracefulKillAfterMs: PREFLIGHT_GRACEFUL_KILL_MS,
151
+ });
152
+ const durationMs = Date.now() - start;
153
+ if (result.timedOut) {
154
+ return {
155
+ healthy: false,
156
+ reason: `Pre-flight probe wedged: 2s recording exceeded ${PREFLIGHT_WRAPPER_TIMEOUT_MS / 1000}s wrapper window without exiting. The same wedge will hit the full recording.`,
157
+ durationMs,
158
+ };
159
+ }
160
+ if (result.code !== 0) {
161
+ return {
162
+ healthy: false,
163
+ reason: `Pre-flight probe exited non-zero (code ${result.code}): ${(result.stderr || result.stdout || "").slice(0, 200)}`,
164
+ durationMs,
165
+ };
166
+ }
167
+ return { healthy: true, durationMs };
168
+ }
169
+ /**
170
+ * v1.14 item J. When a `recordTimeProfile` call times out, optionally
171
+ * launch the partial `.trace` in Instruments.app so the user has a GUI
172
+ * escape hatch. Returns `true` when `open -a Instruments <tracePath>`
173
+ * was spawned, `false` otherwise.
174
+ *
175
+ * Gated on `MEMORYDETECTIVE_AUTO_OPEN_INSTRUMENTS=1` to avoid spamming
176
+ * the user's GUI on unattended runs and CI. Also requires the trace
177
+ * bundle to exist on disk (xctrace's SIGINT path may have failed to
178
+ * write anything).
179
+ *
180
+ * The `open` invocation is fire-and-forget: `detached: true` + `unref()`
181
+ * so the recording tool returns immediately. Failures to launch
182
+ * Instruments.app are swallowed; the user is no worse off than without
183
+ * the flag enabled.
184
+ *
185
+ * Exported so the env-gating logic can be tested without spawning
186
+ * Instruments in test runs.
187
+ */
188
+ export function maybeOpenInInstruments(tracePath) {
189
+ if (process.env.MEMORYDETECTIVE_AUTO_OPEN_INSTRUMENTS !== "1")
190
+ return false;
191
+ if (!existsSync(tracePath))
192
+ return false;
193
+ try {
194
+ const child = spawn("open", ["-a", "Instruments", tracePath], {
195
+ detached: true,
196
+ stdio: "ignore",
197
+ });
198
+ child.unref();
199
+ return true;
200
+ }
201
+ catch {
202
+ return false;
203
+ }
204
+ }
94
205
  /** Pure: build the xctrace argv for the given input. Exposed for testing. */
95
206
  export function buildXctraceArgs(input) {
96
207
  const args = ["xctrace", "record", "--template", input.template];
@@ -132,6 +243,28 @@ export async function recordTimeProfile(input) {
132
243
  // parent.
133
244
  mkdirSync(outDir, { recursive: true });
134
245
  }
246
+ // v1.14 item H. Pre-flight the xctrace `--time-limit` ignore regression
247
+ // before spending the user's durationSec on a wedge. Gated to macOS 26.x
248
+ // simulator targets in attach mode by default; opt-in / opt-out via
249
+ // MEMORYDETECTIVE_PREFLIGHT_XCTRACE.
250
+ if (shouldPreflightXctrace({ ...input, output })) {
251
+ const probe = await preflightXctraceRecord({ ...input, output }, output);
252
+ if (!probe.healthy) {
253
+ return {
254
+ ok: false,
255
+ command: `xcrun ${buildXctraceArgs({ ...input, output }).join(" ")}`,
256
+ output,
257
+ durationSec: input.durationSec,
258
+ template: input.template,
259
+ recordingTimedOut: true,
260
+ workaroundNotice: {
261
+ issue: "xctrace-time-limit-ignored",
262
+ message: `Pre-flight probe detected the xctrace wedge in ${probe.durationMs}ms. Skipping the full ${input.durationSec}s recording so you do not pay the wrapper timeout. ${probe.reason ?? ""}`,
263
+ fallbacks: XCTRACE_TIMEOUT_FALLBACKS,
264
+ },
265
+ };
266
+ }
267
+ }
135
268
  const args = buildXctraceArgs({ ...input, output });
136
269
  // External timeout wrapper. xctrace itself receives `--time-limit Ns`, so
137
270
  // the normal exit path is xctrace finishing on its own at N seconds. The
@@ -147,6 +280,7 @@ export async function recordTimeProfile(input) {
147
280
  gracefulKillAfterMs: XCTRACE_GRACEFUL_KILL_MS,
148
281
  });
149
282
  if (result.timedOut) {
283
+ const openedInInstrumentsApp = maybeOpenInInstruments(output);
150
284
  return {
151
285
  ok: false,
152
286
  command: `xcrun ${args.join(" ")}`,
@@ -160,6 +294,7 @@ export async function recordTimeProfile(input) {
160
294
  message: XCTRACE_TIMEOUT_MESSAGE,
161
295
  fallbacks: XCTRACE_TIMEOUT_FALLBACKS,
162
296
  },
297
+ openedInInstrumentsApp,
163
298
  };
164
299
  }
165
300
  if (result.code !== 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"recordTimeProfile.js","sourceRoot":"","sources":["../../src/tools/recordTimeProfile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recordTimeProfile.js","sourceRoot":"","sources":["../../src/tools/recordTimeProfile.ts"],"names":[],"mappings":"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"}
@@ -33,9 +33,9 @@ declare const actionSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
33
33
  durationMs: z.ZodDefault<z.ZodNumber>;
34
34
  }, "strip", z.ZodTypeAny, {
35
35
  type: "swipe";
36
+ durationMs: number;
36
37
  from: [number, number];
37
38
  to: [number, number];
38
- durationMs: number;
39
39
  }, {
40
40
  type: "swipe";
41
41
  from: [number, number];
@@ -85,9 +85,9 @@ export declare const replayScenarioShape: {
85
85
  durationMs: z.ZodDefault<z.ZodNumber>;
86
86
  }, "strip", z.ZodTypeAny, {
87
87
  type: "swipe";
88
+ durationMs: number;
88
89
  from: [number, number];
89
90
  to: [number, number];
90
- durationMs: number;
91
91
  }, {
92
92
  type: "swipe";
93
93
  from: [number, number];
@@ -140,9 +140,9 @@ export declare const replayScenarioSchema: z.ZodObject<{
140
140
  durationMs: z.ZodDefault<z.ZodNumber>;
141
141
  }, "strip", z.ZodTypeAny, {
142
142
  type: "swipe";
143
+ durationMs: number;
143
144
  from: [number, number];
144
145
  to: [number, number];
145
- durationMs: number;
146
146
  }, {
147
147
  type: "swipe";
148
148
  from: [number, number];
@@ -180,9 +180,9 @@ export declare const replayScenarioSchema: z.ZodObject<{
180
180
  coords?: [number, number] | undefined;
181
181
  } | {
182
182
  type: "swipe";
183
+ durationMs: number;
183
184
  from: [number, number];
184
185
  to: [number, number];
185
- durationMs: number;
186
186
  } | {
187
187
  type: "wait";
188
188
  seconds: number;
@@ -37,11 +37,11 @@ export declare const summarizeTraceSchema: z.ZodObject<{
37
37
  verbose: z.ZodDefault<z.ZodBoolean>;
38
38
  }, "strip", z.ZodTypeAny, {
39
39
  tracePath: string;
40
- focus: "all" | "allocations" | "hangs" | "hitches" | "launch";
40
+ focus: "allocations" | "all" | "hangs" | "hitches" | "launch";
41
41
  verbose: boolean;
42
42
  }, {
43
43
  tracePath: string;
44
- focus?: "all" | "allocations" | "hangs" | "hitches" | "launch" | undefined;
44
+ focus?: "allocations" | "all" | "hangs" | "hitches" | "launch" | undefined;
45
45
  verbose?: boolean | undefined;
46
46
  }>;
47
47
  export type SummarizeTraceInput = z.infer<typeof summarizeTraceSchema>;
@@ -14,21 +14,40 @@ import type { LeaksReport, NextCallSuggestion } from "../types.js";
14
14
  * Designed for CI gating: a build script can check `overallVerdict` and
15
15
  * fail the merge if the pattern resolved by the PR has regressed.
16
16
  */
17
+ /**
18
+ * v1.14 item M. Default list of classes that legitimately stay alive
19
+ * across before/after snapshots in normal iOS app activity. Sourced from
20
+ * DebugSwift's `Performance.LeakDetector.swift` `_ignoredViewControllerClassNames`,
21
+ * `_ignoredViewClassNames`, and `_ignoredWindowClassNames` curated lists
22
+ * (FLEXTool fork lineage via Janneman84/LeakedViewControllerDetector).
23
+ *
24
+ * When these appear in `regressionClasses[]` we surface them under
25
+ * `expectedAlive[]` for transparency but don't let them flip the verdict
26
+ * to FAIL. Users can extend via `expectedAliveClasses` input or disable
27
+ * with `disableDefaultWhitelist: true` for strict matching.
28
+ */
29
+ export declare const DEFAULT_EXPECTED_ALIVE_CLASSES: readonly string[];
17
30
  export declare const verifyFixSchema: z.ZodObject<{
18
31
  before: z.ZodString;
19
32
  after: z.ZodString;
20
33
  expectedPatternId: z.ZodOptional<z.ZodString>;
34
+ expectedAliveClasses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
35
+ disableDefaultWhitelist: z.ZodDefault<z.ZodBoolean>;
21
36
  verbosity: z.ZodDefault<z.ZodEnum<["compact", "normal", "full"]>>;
22
37
  }, "strip", z.ZodTypeAny, {
23
38
  verbosity: "compact" | "normal" | "full";
24
39
  after: string;
25
40
  before: string;
41
+ disableDefaultWhitelist: boolean;
26
42
  expectedPatternId?: string | undefined;
43
+ expectedAliveClasses?: string[] | undefined;
27
44
  }, {
28
45
  after: string;
29
46
  before: string;
30
47
  verbosity?: "compact" | "normal" | "full" | undefined;
31
48
  expectedPatternId?: string | undefined;
49
+ expectedAliveClasses?: string[] | undefined;
50
+ disableDefaultWhitelist?: boolean | undefined;
32
51
  }>;
33
52
  export type VerifyFixInput = z.infer<typeof verifyFixSchema>;
34
53
  export interface PatternResolution {
@@ -93,6 +112,14 @@ export interface VerifyFixResult {
93
112
  * entries of `analyzeAbandonedMemory.actionableGrowth[]`.
94
113
  */
95
114
  regressionClasses?: AbandonedMemoryEntry[];
115
+ /**
116
+ * v1.14+. Class names from the effective whitelist
117
+ * (DEFAULT_EXPECTED_ALIVE_CLASSES + user-supplied) that DID appear in
118
+ * the raw regression set before filtering. Surfaced for transparency:
119
+ * the agent can see which "regressions" were intentionally ignored.
120
+ * Empty array when nothing was filtered. Absent when no fallback ran.
121
+ */
122
+ expectedAlive?: string[];
96
123
  }
97
124
  /** Pure function: compute verifyFix result from two parsed reports. */
98
125
  export declare function verifyFromReports(beforeReport: LeaksReport, afterReport: LeaksReport, beforePath: string, afterPath: string, input: VerifyFixInput): VerifyFixResult;
@@ -17,6 +17,34 @@ import { analyzeAbandonedMemory, } from "./analyzeAbandonedMemory.js";
17
17
  * Designed for CI gating: a build script can check `overallVerdict` and
18
18
  * fail the merge if the pattern resolved by the PR has regressed.
19
19
  */
20
+ /**
21
+ * v1.14 item M. Default list of classes that legitimately stay alive
22
+ * across before/after snapshots in normal iOS app activity. Sourced from
23
+ * DebugSwift's `Performance.LeakDetector.swift` `_ignoredViewControllerClassNames`,
24
+ * `_ignoredViewClassNames`, and `_ignoredWindowClassNames` curated lists
25
+ * (FLEXTool fork lineage via Janneman84/LeakedViewControllerDetector).
26
+ *
27
+ * When these appear in `regressionClasses[]` we surface them under
28
+ * `expectedAlive[]` for transparency but don't let them flip the verdict
29
+ * to FAIL. Users can extend via `expectedAliveClasses` input or disable
30
+ * with `disableDefaultWhitelist: true` for strict matching.
31
+ */
32
+ export const DEFAULT_EXPECTED_ALIVE_CLASSES = [
33
+ // ViewControllers Apple keeps alive for system functions.
34
+ "UICompatibilityInputViewController",
35
+ "_SFAppPasswordSavingViewController",
36
+ "UIKeyboardHiddenViewController_Save",
37
+ "_UIAlertControllerTextFieldViewController",
38
+ "UISystemInputAssistantViewController",
39
+ "UIPredictionViewController",
40
+ // Internal views with persistent backing.
41
+ "PLTileContainerView",
42
+ "CAMPreviewView",
43
+ "_UIPointerInteractionAssistantEffectContainerView",
44
+ // Windows the OS retains.
45
+ "UIRemoteKeyboardWindow",
46
+ "UITextEffectsWindow",
47
+ ];
20
48
  export const verifyFixSchema = z.object({
21
49
  before: z
22
50
  .string()
@@ -30,6 +58,14 @@ export const verifyFixSchema = z.object({
30
58
  .string()
31
59
  .optional()
32
60
  .describe("If provided, the verdict is gated on whether this specific patternId disappeared from `after`. Defaults to checking every classified pattern."),
61
+ expectedAliveClasses: z
62
+ .array(z.string().min(1))
63
+ .optional()
64
+ .describe("v1.14+. Class names (substrings) that legitimately stay alive across the before/after snapshots. Singletons, framework registrars, persistent caches. When a class in this list appears in regressionClasses[], it is moved to expectedAlive[] and does not flip the verdict to FAIL. Merged with the curated default list (DebugSwift's ignoredViewControllerClassNames + ignoredViewClassNames + ignoredWindowClassNames) unless `disableDefaultWhitelist: true`."),
65
+ disableDefaultWhitelist: z
66
+ .boolean()
67
+ .default(false)
68
+ .describe("v1.14+. When true, the curated DEFAULT_EXPECTED_ALIVE_CLASSES list is NOT applied. Only the user-supplied expectedAliveClasses (if any) is used. Useful for strict regression mode in tests where every alive class should be evaluated."),
33
69
  verbosity: z
34
70
  .enum(["compact", "normal", "full"])
35
71
  .default("compact"),
@@ -227,7 +263,30 @@ const ABANDONED_MEMORY_TOPN = 100;
227
263
  * Returns null when even the abandoned-memory path can't run (paths
228
264
  * inaccessible, etc.); the caller falls back to the cycle-pattern result.
229
265
  */
230
- async function buildAbandonedMemoryFallback(beforePath, afterPath) {
266
+ /**
267
+ * Build the effective expected-alive whitelist by merging the curated
268
+ * default list (unless disabled) with the user-supplied set. Returns a
269
+ * lowercase Set for case-insensitive substring matching. v1.14.
270
+ */
271
+ function buildExpectedAliveSet(userSupplied, disableDefault) {
272
+ const base = disableDefault ? [] : DEFAULT_EXPECTED_ALIVE_CLASSES;
273
+ const all = [...base, ...(userSupplied ?? [])];
274
+ return new Set(all.map((s) => s.toLowerCase()));
275
+ }
276
+ /**
277
+ * Returns true when the className matches any entry in the whitelist
278
+ * (substring match, case-insensitive). v1.14.
279
+ */
280
+ function isExpectedAlive(className, whitelist) {
281
+ if (whitelist.size === 0)
282
+ return false;
283
+ const lc = className.toLowerCase();
284
+ for (const w of whitelist)
285
+ if (lc.includes(w))
286
+ return true;
287
+ return false;
288
+ }
289
+ async function buildAbandonedMemoryFallback(beforePath, afterPath, expectedAliveWhitelist) {
231
290
  let amResult;
232
291
  try {
233
292
  amResult = await analyzeAbandonedMemory({
@@ -240,7 +299,20 @@ async function buildAbandonedMemoryFallback(beforePath, afterPath) {
240
299
  return null;
241
300
  }
242
301
  const freedClasses = (amResult.actionableShrinkage ?? []).filter((e) => Math.abs(e.delta) >= ACTIONABLE_DELTA_THRESHOLD);
243
- const regressionClasses = (amResult.actionableGrowth ?? []).filter((e) => Math.abs(e.delta) >= ACTIONABLE_DELTA_THRESHOLD);
302
+ // Partition raw regression set into "really regressed" vs "in the
303
+ // expected-alive whitelist" so the verdict ignores the latter while
304
+ // surfacing them on the response for transparency.
305
+ const rawRegressions = (amResult.actionableGrowth ?? []).filter((e) => Math.abs(e.delta) >= ACTIONABLE_DELTA_THRESHOLD);
306
+ const regressionClasses = [];
307
+ const expectedAlive = [];
308
+ for (const entry of rawRegressions) {
309
+ if (isExpectedAlive(entry.className, expectedAliveWhitelist)) {
310
+ expectedAlive.push(entry.className);
311
+ }
312
+ else {
313
+ regressionClasses.push(entry);
314
+ }
315
+ }
244
316
  // Magnitude check: a fix that frees thousands of instances and incidentally
245
317
  // grows a hundred Swift Metadata / pthread_mutex_t / ObjC class table
246
318
  // entries (these scale with app activity, not user code) should be PASS,
@@ -292,7 +364,7 @@ async function buildAbandonedMemoryFallback(beforePath, afterPath) {
292
364
  diagnosis =
293
365
  "No actionable class-count changes between snapshots (|delta| < 10). Either both snapshots are clean or the workflow did not exercise the targeted code.";
294
366
  }
295
- return { verdict, freedClasses, regressionClasses, diagnosis };
367
+ return { verdict, freedClasses, regressionClasses, expectedAlive, diagnosis };
296
368
  }
297
369
  export async function verifyFix(input) {
298
370
  const [{ report: beforeReport, resolvedPath: bp }, { report: afterReport, resolvedPath: ap },] = await Promise.all([
@@ -306,11 +378,13 @@ export async function verifyFix(input) {
306
378
  // cycle-pattern path takes precedence when patterns DO fire, so this
307
379
  // is a strict fallback.
308
380
  if (result.patternResolution.length === 0) {
309
- const fallback = await buildAbandonedMemoryFallback(input.before, input.after);
381
+ const whitelist = buildExpectedAliveSet(input.expectedAliveClasses, input.disableDefaultWhitelist ?? false);
382
+ const fallback = await buildAbandonedMemoryFallback(input.before, input.after, whitelist);
310
383
  if (fallback) {
311
384
  result.verdictSource = "abandoned-memory";
312
385
  result.freedClasses = fallback.freedClasses;
313
386
  result.regressionClasses = fallback.regressionClasses;
387
+ result.expectedAlive = fallback.expectedAlive;
314
388
  result.overallVerdict = fallback.verdict;
315
389
  result.diagnosis = fallback.diagnosis;
316
390
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verifyFix.js","sourceRoot":"","sources":["../../src/tools/verifyFix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifyFix.js","sourceRoot":"","sources":["../../src/tools/verifyFix.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -75,6 +75,34 @@ export interface LeaksReport {
75
75
  * all, not just "exists but cannot be read".
76
76
  */
77
77
  export type DataStatus = "available" | "partial" | "not_exportable" | "not_present";
78
+ /**
79
+ * v1.14 item I. Unified per-area status surface across trace analyzers.
80
+ *
81
+ * Pre-v1.14 each analyzer had its own variation: `status: DataStatus`,
82
+ * an optional `notice` string for the SIGSEGV path, and ad-hoc fields
83
+ * for things like time-profile's workaround text. Agents had to know
84
+ * each shape to branch correctly. The unified `supportStatus[]` puts
85
+ * everything in one array of records so an LLM driver can iterate over
86
+ * the result without knowing the analyzer's history.
87
+ *
88
+ * Mirrors XcodeTraceMCP's `supportStatus[]` shape so cross-tool
89
+ * tooling can be consistent. Old `status` / `notice` fields stay on
90
+ * each analyzer's result as deprecated aliases for backwards compat;
91
+ * we'll drop them in a future major bump.
92
+ *
93
+ * `failed` is reserved for hard exceptions caught during the analyze
94
+ * step, distinct from `not_exportable` (xctrace ran but refused) and
95
+ * `not_present` (schema absent from the trace TOC).
96
+ */
97
+ export type SupportStatusKind = "potential-hangs" | "hang-risks" | "animation-hitches" | "time-profile" | "allocations" | "app-launch" | "network-connections";
98
+ export interface SupportStatus {
99
+ kind: SupportStatusKind;
100
+ status: "available" | "partial" | "not_exportable" | "not_present" | "failed";
101
+ /** Free-text reason: workaround tip, xctrace stderr snippet, etc. */
102
+ reason?: string;
103
+ /** Schema names this entry sourced from (e.g. ["potential-hangs", "hang-risks"]). */
104
+ sourceSchemas?: string[];
105
+ }
78
106
  /**
79
107
  * HATEOAS-style hint that an LLM agent can chain after the current tool's
80
108
  * result. We pre-populate `args` from the current response so the agent can
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "memorydetective",
3
- "version": "1.13.0",
3
+ "version": "1.14.0",
4
4
  "mcpName": "io.github.carloshpdoc/memorydetective",
5
- "description": "MCP server for iOS leak hunting and performance investigation. 34 tools across .memgraph and .trace files, 36-pattern retain-cycle classifier with Swift fixTemplate snippets, abandoned-memory diff for KVO/NotificationCenter/cache shapes that escape leaks(1), per-test CI gate (detectLeaksInXCTest + detectLeaksInXCUITest with self-contained HTML reports), main-thread violation classifier on analyzeHangs, single-call build+boot+launch for the macOS 26.x leaks --outputGraph regression, replayScenario + captureScenarioState verify-fix loop, compareTracesByPattern CI gate on hangs/hitches/launch regressions, SourceKit-LSP source bridging. macOS only (depends on leaks(1) and xctrace).",
5
+ "description": "MCP server for iOS leak hunting and performance investigation. 37 tools across .memgraph and .trace files, 36-pattern retain-cycle classifier with Swift fixTemplate snippets, abandoned-memory diff for KVO/NotificationCenter/cache shapes that escape leaks(1), per-test CI gate (detectLeaksInXCTest + detectLeaksInXCUITest with self-contained HTML reports), main-thread violation classifier on analyzeHangs, single-call build+boot+launch for the macOS 26.x leaks --outputGraph regression, replayScenario + captureScenarioState verify-fix loop, compareTracesByPattern CI gate on hangs/hitches/launch regressions, SourceKit-LSP source bridging. macOS only (depends on leaks(1) and xctrace).",
6
6
  "type": "module",
7
7
  "bin": {
8
8
  "memorydetective": "dist/index.js"