{ "$schema": "https://raw.githubusercontent.com/fallow-rs/fallow/main/schema.json", "entry": [ "tsdown.config.ts", "src/sdk/index.ts", "src/sdk/io.ts", "src/sdk/artifacts.ts", "src/sdk/metro.ts", "src/sdk/remote-config.ts", "src/sdk/install-source.ts", "src/sdk/android-adb.ts", "src/sdk/contracts.ts", "src/sdk/selectors.ts", "src/sdk/finders.ts", "src/bin.ts", "src/client/companion-tunnel.ts", "src/daemon.ts", "src/utils/png-worker.ts", "scripts/patch-xcuitest-runner-icon.ts", "scripts/runner-request-count/run.ts", "src/utils/update-check-entry.ts", "test/scripts/metro-prepare-packaged-smoke.mjs", "test/integration/*.test.ts", "website/docs/404.mdx", "website/rspress.config.ts" ], "ignorePatterns": [ "examples/test-app/**", "scripts/perf/**", "scripts/layering/**", "scripts/maestro-conformance/**", "apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests.xctestplan", "scripts/write-xcuitest-cache-metadata.mjs", "scripts/help-conformance-sample-outputs.d.mts" ], "ignoreDependencies": [ "@theme" ], "ignoreExports": [ { "comment": "Authoritative supported-command list; sole consumer is the conformance oracle (scripts/maestro-conformance, an ignored tooling tree).", "file": "src/compat/maestro/program-ir-command-parser.ts", "exports": [ "SUPPORTED_MAESTRO_COMMAND_NAMES" ] }, { "comment": "Daemon route handlers are reached only through the dynamic `import()` table in request-handler-chain.ts, which --production analysis cannot follow to a consumer.", "file": "src/daemon/handlers/{lease,session,snapshot,react-native,record-trace,find,interaction}.ts", "exports": [ "handleLeaseCommands", "handleSessionCommands", "handleSnapshotCommands", "handleReactNativeCommands", "handleRecordTraceCommands", "handleFindCommands", "handleInteractionCommands" ] }, { "comment": "Published package surface (see package.json#exports); consumed by SDK users, not internally.", "file": "src/sdk/*.ts", "exports": [ "*" ] }, { "comment": "Tool config default exports, loaded by the tool rather than imported.", "file": "{tsdown.config.ts,vitest.mutation.config.ts,website/rspress.config.ts,test/skillgym/skillgym.config.ts,test/skillgym/suites/*.ts}", "exports": [ "default" ] }, { "comment": "Type-level `AssertTrue<...>` registry-totality guards. Exported only so `noUnusedLocals` keeps them alive; a consumer would defeat the point.", "file": "{src/core/command-descriptor/registry.ts,src/core/interactors/register-builtins.ts,src/core/platform-descriptor/registry.ts,src/daemon/request-platform-providers.ts}", "exports": [ "CommandOwnerFileClaimsAreComplete", "BuiltinPluginsCoverAllPlatforms", "PlatformDescriptorsAreTotal", "GatedKeysAreResolverKeys" ] }, { "comment": "Mutation-lane seam: readTestScope is consumed by vitest.mutation.config.ts, a tool config outside --production analysis.", "file": "scripts/mutation/test-scope.ts", "exports": [ "readTestScope" ] }, { "comment": "Mutation-lane completeness gate: ownedTestFiles enumerates the whole derived ownership map, which only the assertion in ownership.test.ts consumes — a production consumer would defeat the point.", "file": "scripts/mutation/ownership.ts", "exports": [ "ownedTestFiles" ] }, { "comment": "Help-benchmark conformance seams: helpTopicIds feeds the topic-coverage gate and PRIVATE_AX_RECOVERY_SAMPLE feeds the skillgym suite; both consumers are test-tree files outside --production analysis.", "file": "{src/cli/parser/cli-help.ts,scripts/help-conformance-sample-outputs.mjs}", "exports": [ "helpTopicIds", "PRIVATE_AX_RECOVERY_SAMPLE" ] } ], "usedClassMembers": [ "name", "listActiveLeases", "delete", "values", "elapsedMs", "isExpired" ], "rules": { "unused-types": "error", "duplicate-exports": "off" }, "production": { "dupes": true }, "publicPackages": [ "agent-device" ], "audit": { "deadCodeBaseline": "fallow-baselines/dead-code.json", "healthBaseline": "fallow-baselines/health.json" }, "includeEntryExports": true, "ignoreExportsUsedInFile": { "type": true, "interface": true } }