From e19879328a11fe38b49b6b133a8ebde908ea980e Mon Sep 17 00:00:00 2001 From: morluto <76467478+morluto@users.noreply.github.com> Date: Mon, 12 Oct 2026 08:54:32 +0800 Subject: [PATCH] refactor: prune obsolete provider and verification code Remove unused imports, private inferred types, superseded limit constants and a duplicate MCP assertion. Preserve intentional field omissions while deleting unused local bindings. Validation: typecheck, lint, formatting, unused-code and architecture checks pass. Runtime behavior is unchanged. --- scripts/lib/real-ghidra-boundaries.mjs | 2 -- scripts/verify-real-ghidra-com.mjs | 2 +- scripts/verify/apple/legacy-simulator.mjs | 3 +-- scripts/verify/architecture-guards.mjs | 1 - scripts/verify/firmware/analysis.mjs | 4 +++- src/adb/AdbProvider.ts | 2 -- src/apktool/ApktoolProvider.ts | 2 +- src/application/AnalysisContextQueries.ts | 3 +-- src/artifacts/apple/MachoLoadCommandReader.ts | 2 +- src/browser/history/CaptureFailures.ts | 1 - src/domain/apktool/apktoolResourceAnalysis.ts | 2 -- src/domain/apple/interfaceBuilderGraph.ts | 2 -- src/domain/native/nativeInvestigationGraph.ts | 9 --------- src/domain/webRuntime.ts | 1 - src/ghidra/GhidraInstallation.ts | 1 - src/ghidra/GhidraProvider.ts | 1 - src/native/NativeMacOSProvider.ts | 1 - src/native/pwntools/PwntoolsDecoder.ts | 1 - src/server/registerFirmwareTools.ts | 1 - .../mcp/reconstructionObligationLedgerMcp.test.ts | 4 ---- .../boundary/process/filesystemSnapshotFifoRace.test.ts | 1 - tests/boundary/process/jadxIntegration.test.ts | 2 +- tests/boundary/process/packagePackIsolation.test.ts | 9 +-------- 23 files changed, 10 insertions(+), 47 deletions(-) diff --git a/scripts/lib/real-ghidra-boundaries.mjs b/scripts/lib/real-ghidra-boundaries.mjs index 83cc74b220..f6ee1527a7 100644 --- a/scripts/lib/real-ghidra-boundaries.mjs +++ b/scripts/lib/real-ghidra-boundaries.mjs @@ -13,8 +13,6 @@ import { promisify } from "node:util"; import Ajv from "ajv/dist/2020.js"; import addFormats from "ajv-formats"; -import { analysisErrorProjectionSchema } from "../../dist/contracts/errorSchemas.js"; - import { verifyLegacyGhidraReferenceSnapshot } from "./ghidra-reference-snapshot-e2e.mjs"; import { verifyGhidraSnapshotLifecycle } from "./real-ghidra-snapshot-lifecycle.mjs"; import { verifyGhidraTargetAdmission } from "./real-ghidra-target-admission.mjs"; diff --git a/scripts/verify-real-ghidra-com.mjs b/scripts/verify-real-ghidra-com.mjs index aaba1871b5..5fabc1b8bc 100644 --- a/scripts/verify-real-ghidra-com.mjs +++ b/scripts/verify-real-ghidra-com.mjs @@ -158,7 +158,7 @@ try { observations: { ...x.observations, source_files: x.observations.source_files.map( - ({ name, ...file }) => file, + ({ name: _name, ...file }) => file, ), }, }); diff --git a/scripts/verify/apple/legacy-simulator.mjs b/scripts/verify/apple/legacy-simulator.mjs index 6ccc10ae28..1d3110cf58 100644 --- a/scripts/verify/apple/legacy-simulator.mjs +++ b/scripts/verify/apple/legacy-simulator.mjs @@ -1,7 +1,6 @@ import assert from "node:assert/strict"; import { execFile } from "node:child_process"; -import { createHash } from "node:crypto"; -import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; +import { mkdtemp, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { promisify } from "node:util"; diff --git a/scripts/verify/architecture-guards.mjs b/scripts/verify/architecture-guards.mjs index ea92bf9d26..967e210de6 100644 --- a/scripts/verify/architecture-guards.mjs +++ b/scripts/verify/architecture-guards.mjs @@ -1,4 +1,3 @@ -import assert from "node:assert/strict"; import { readFile, readdir } from "node:fs/promises"; import { join, relative, sep } from "node:path"; import { fileURLToPath } from "node:url"; diff --git a/scripts/verify/firmware/analysis.mjs b/scripts/verify/firmware/analysis.mjs index 71b40bdac5..1f84681c9d 100644 --- a/scripts/verify/firmware/analysis.mjs +++ b/scripts/verify/firmware/analysis.mjs @@ -100,7 +100,9 @@ const verifyRegions = (evidence) => { ); assert.equal(gzip.reported_size, oracle.length); assert.equal(gzip.size_basis, "provider_reported_validation_unknown"); - return result.regions.map(({ provider_id, ...region }) => region); + return result.regions.map( + ({ provider_id: _provider_id, ...region }) => region, + ); }; const verifyFiles = async (evidence) => { const result = firmwareResultSchemas.extract_firmware.parse( diff --git a/src/adb/AdbProvider.ts b/src/adb/AdbProvider.ts index d4e353e30f..eec3169786 100644 --- a/src/adb/AdbProvider.ts +++ b/src/adb/AdbProvider.ts @@ -80,8 +80,6 @@ export const ADB_PROVIDER_IDENTITY = { version: null, } as const; -const VERSION_TIMEOUT_MS = 10_000; -const VERSION_MAX_OUTPUT_BYTES = 64 * 1024; const DEVICES_TIMEOUT_MS = 20_000; const DEVICES_MAX_OUTPUT_BYTES = 1024 * 1024; const SHELL_TIMEOUT_MS = 30_000; diff --git a/src/apktool/ApktoolProvider.ts b/src/apktool/ApktoolProvider.ts index 699bccb9a5..eaf21c3e63 100644 --- a/src/apktool/ApktoolProvider.ts +++ b/src/apktool/ApktoolProvider.ts @@ -1,5 +1,5 @@ import { createHash, randomUUID } from "node:crypto"; -import { createWriteStream, constants as fsConstants } from "node:fs"; +import { createWriteStream } from "node:fs"; import { access, chmod, diff --git a/src/application/AnalysisContextQueries.ts b/src/application/AnalysisContextQueries.ts index cdb008e1fc..379ebc322c 100644 --- a/src/application/AnalysisContextQueries.ts +++ b/src/application/AnalysisContextQueries.ts @@ -3,12 +3,11 @@ import type { AnalysisOperation, AnalysisOperationPort, } from "./AnalysisProvider.js"; -import { AnalysisOutputError } from "../domain/analysisErrorCore.js"; import type { AnalysisError } from "../domain/analysisErrorBase.js"; import type { JsonValue } from "../domain/jsonValue.js"; import { analysisBookmarkSchema } from "../domain/hopperValues.js"; import { resolveAnalysisDocument } from "./AnalysisDocument.js"; -import { err, ok, type Result } from "../domain/result.js"; +import { ok, type Result } from "../domain/result.js"; type Facet = | { readonly state: "available"; readonly value: JsonValue } diff --git a/src/artifacts/apple/MachoLoadCommandReader.ts b/src/artifacts/apple/MachoLoadCommandReader.ts index 8a0112fab9..14b1aa070f 100644 --- a/src/artifacts/apple/MachoLoadCommandReader.ts +++ b/src/artifacts/apple/MachoLoadCommandReader.ts @@ -234,7 +234,7 @@ const readFatSlices = async ( ): Promise => { const slices: MachoSlice[] = []; for (const declaration of declarations) { - const { index, offset, size: length, cpuType, cpuSubtype } = declaration; + const { offset, size: length, cpuType, cpuSubtype } = declaration; const rangeIssue = validateFatSlice(declaration, size, tableEnd); if (rangeIssue !== null) throw new MachoFormatIssue( diff --git a/src/browser/history/CaptureFailures.ts b/src/browser/history/CaptureFailures.ts index 78a5f0a43d..228541545c 100644 --- a/src/browser/history/CaptureFailures.ts +++ b/src/browser/history/CaptureFailures.ts @@ -5,7 +5,6 @@ import { AnalysisAccessDeniedError, AnalysisArtifactChangedError, AnalysisCancelledError, - AnalysisCapabilityUnavailableError, AnalysisInputError, AnalysisOutputError, AnalysisResourceConstraintError, diff --git a/src/domain/apktool/apktoolResourceAnalysis.ts b/src/domain/apktool/apktoolResourceAnalysis.ts index e4a19634bf..df217d040b 100644 --- a/src/domain/apktool/apktoolResourceAnalysis.ts +++ b/src/domain/apktool/apktoolResourceAnalysis.ts @@ -2,8 +2,6 @@ import { z } from "zod"; import { localPathStringSchema } from "../localPath.js"; import { digestSchema } from "../digests.js"; -/** Upper bound for one decoded resource projection in one response. */ -const MAX_MANIFEST_BYTES = 512 * 1024; const MAX_STRINGS = 2_000; /** diff --git a/src/domain/apple/interfaceBuilderGraph.ts b/src/domain/apple/interfaceBuilderGraph.ts index cfb80d91bf..f25c8b9b16 100644 --- a/src/domain/apple/interfaceBuilderGraph.ts +++ b/src/domain/apple/interfaceBuilderGraph.ts @@ -30,8 +30,6 @@ export const interfaceBuilderAnalysisSchema = z.strictObject({ limitations: z.array(z.string()), }); -type InterfaceBuilderAnalysis = z.infer; - export interface InterfaceBuilderDocumentInput { readonly relativePath: string; readonly archiveSha256: string; diff --git a/src/domain/native/nativeInvestigationGraph.ts b/src/domain/native/nativeInvestigationGraph.ts index cc5073d798..0dd0dbe8b2 100644 --- a/src/domain/native/nativeInvestigationGraph.ts +++ b/src/domain/native/nativeInvestigationGraph.ts @@ -38,10 +38,6 @@ export const nativeInvestigationNodeKindSchema = z.enum([ "unknown", ]); -type NativeInvestigationNodeKind = z.infer< - typeof nativeInvestigationNodeKindSchema ->; - /** One UI, dispatch, or value entity with optional decoded source location. */ export const nativeInvestigationNodeSchema = z.strictObject({ id: z.string().min(1), @@ -51,7 +47,6 @@ export const nativeInvestigationNodeSchema = z.strictObject({ attributes: z.record(z.string(), jsonValueSchema), evidence: z.array(nativeMetadataEvidenceSchema), }); -type NativeInvestigationNode = z.infer; /** Relationship types preserve UI wiring, native dispatch, and value flow. */ export const nativeInvestigationRelationSchema = z.enum([ @@ -72,10 +67,6 @@ export const nativeInvestigationRelationSchema = z.enum([ "controls", ]); -type NativeInvestigationRelation = z.infer< - typeof nativeInvestigationRelationSchema ->; - /** An observed, inferred, or unresolved relationship between entities. */ export const nativeInvestigationEdgeSchema = z.discriminatedUnion( "resolution", diff --git a/src/domain/webRuntime.ts b/src/domain/webRuntime.ts index 289d523250..57abb4835b 100644 --- a/src/domain/webRuntime.ts +++ b/src/domain/webRuntime.ts @@ -3,7 +3,6 @@ import { browserAllowedOriginsSchema, browserEndpointSchema, } from "./browserObservation.js"; -import { browserVersionSchema } from "./browserObservationSchemas.js"; import { jsonObjectSchema } from "./jsonValue.js"; // CDP positions are zero-based and relative to the resource named by url. diff --git a/src/ghidra/GhidraInstallation.ts b/src/ghidra/GhidraInstallation.ts index 4ff7a68689..ffdb2e0837 100644 --- a/src/ghidra/GhidraInstallation.ts +++ b/src/ghidra/GhidraInstallation.ts @@ -28,7 +28,6 @@ import { ghidraReleaseCompatibility, ghidraReleaseLine, ghidraVersionDetail, - SUPPORTED_GHIDRA_JAVA_MAJOR, SUPPORTED_GHIDRA_VERSION, type GhidraApplicationProperties, type GhidraJavaRequirement, diff --git a/src/ghidra/GhidraProvider.ts b/src/ghidra/GhidraProvider.ts index 3936d5c99a..98564faeb0 100644 --- a/src/ghidra/GhidraProvider.ts +++ b/src/ghidra/GhidraProvider.ts @@ -46,7 +46,6 @@ import { CAPABILITIES, windowsP0Capabilities, GHIDRA_PROVIDER_IDENTITY, - GHIDRA_OPERATIONS, } from "./GhidraProviderCapabilities.js"; import { createGhidraProviderClient, diff --git a/src/native/NativeMacOSProvider.ts b/src/native/NativeMacOSProvider.ts index 75227b02d3..8ab92abacd 100644 --- a/src/native/NativeMacOSProvider.ts +++ b/src/native/NativeMacOSProvider.ts @@ -36,7 +36,6 @@ import { AnalysisResourceConstraintError, AnalysisTimeoutError, } from "../domain/analysisErrorCore.js"; -import { projectAnalysisError } from "../domain/analysisErrorProjection.js"; import { BinaryTargetError } from "../domain/configurationErrors.js"; import { ProviderAdapterError } from "../domain/providerAdapterError.js"; import { ProviderCleanupError } from "../domain/providerCleanupError.js"; diff --git a/src/native/pwntools/PwntoolsDecoder.ts b/src/native/pwntools/PwntoolsDecoder.ts index 4c1add09ce..fef52bff94 100644 --- a/src/native/pwntools/PwntoolsDecoder.ts +++ b/src/native/pwntools/PwntoolsDecoder.ts @@ -27,7 +27,6 @@ import { ProviderAdapterError } from "../../domain/providerAdapterError.js"; import { ProviderCleanupError } from "../../domain/providerCleanupError.js"; import { err, ok, type Result } from "../../domain/result.js"; import { runOwnedCommand } from "../../process/OwnedCommand.js"; -import { OwnedCommandFailure } from "../../process/OwnedCommand.js"; import { pwntoolsResourceLimitsSchema, readPwntoolsFailureEvidence, diff --git a/src/server/registerFirmwareTools.ts b/src/server/registerFirmwareTools.ts index 7a1a95800d..84aa1b394f 100644 --- a/src/server/registerFirmwareTools.ts +++ b/src/server/registerFirmwareTools.ts @@ -1,7 +1,6 @@ import type { EvidenceMcpServer } from "./EvidenceMcpServer.js"; import type { FirmwareAnalysisService } from "../application/firmware/FirmwareAnalysisService.js"; import { toolContract } from "../contracts/toolContracts.js"; -import type { FirmwareOperation } from "../domain/firmware/firmwareAnalysis.js"; import type { Logger } from "pino"; import type { EvidenceWriter } from "../application/investigation/InvestigationRecordPort.js"; import type { WithAdmittedAnalysis } from "./analysisAdmission.js"; diff --git a/tests/boundary/mcp/reconstructionObligationLedgerMcp.test.ts b/tests/boundary/mcp/reconstructionObligationLedgerMcp.test.ts index 572b18d635..653977a8fa 100644 --- a/tests/boundary/mcp/reconstructionObligationLedgerMcp.test.ts +++ b/tests/boundary/mcp/reconstructionObligationLedgerMcp.test.ts @@ -40,10 +40,6 @@ describe("reconstruction obligation ledger MCP parity", () => { summary: { total: 0 }, }, }); - expect(result.structuredContent).toHaveProperty( - "normalized_result.schema", - "ReconstructionObligationLedger", - ); } finally { await client.close(); await server.close(); diff --git a/tests/boundary/process/filesystemSnapshotFifoRace.test.ts b/tests/boundary/process/filesystemSnapshotFifoRace.test.ts index 5843158e3b..871a1d8ca7 100644 --- a/tests/boundary/process/filesystemSnapshotFifoRace.test.ts +++ b/tests/boundary/process/filesystemSnapshotFifoRace.test.ts @@ -1,6 +1,5 @@ import { randomUUID } from "node:crypto"; import { tmpdir } from "node:os"; -import { join } from "node:path"; import { fileURLToPath } from "node:url"; import { expect, it } from "vitest"; diff --git a/tests/boundary/process/jadxIntegration.test.ts b/tests/boundary/process/jadxIntegration.test.ts index 768438c0c0..864808beb6 100644 --- a/tests/boundary/process/jadxIntegration.test.ts +++ b/tests/boundary/process/jadxIntegration.test.ts @@ -525,7 +525,7 @@ it("rejects bytes changed after target admission without launching an engine", a }); it("retains an uncertain workspace and blocks later launches after cleanup cannot be verified", async () => { - const { service, apk, launches, provider } = await setup("cleanup-failure"); + const { service, apk, launches } = await setup("cleanup-failure"); const outcome = await service.execute("inspect_android_package", { path: apk, }); diff --git a/tests/boundary/process/packagePackIsolation.test.ts b/tests/boundary/process/packagePackIsolation.test.ts index 48c88eaf26..0ad8a900ce 100644 --- a/tests/boundary/process/packagePackIsolation.test.ts +++ b/tests/boundary/process/packagePackIsolation.test.ts @@ -1,12 +1,5 @@ import { execFile } from "node:child_process"; -import { - access, - mkdir, - readFile, - readdir, - rm, - writeFile, -} from "node:fs/promises"; +import { access, mkdir, readFile, readdir, writeFile } from "node:fs/promises"; import { join, resolve } from "node:path"; import { promisify } from "node:util"; import { pathToFileURL } from "node:url";