Debt ledger
âDebt only shrinks.â
Total: 272 directives.
Count by directive kind
| Kind | Count |
|---|---|
| effect-diagnostics | 110 |
| oxlint | 158 |
| typescript | 4 |
The vendored tools/oxlint/anti-slop/ plugin is excluded. It is Dillon Mulroyâs code, not our debt.
Every directive
| File | Directive | Reason |
|---|---|---|
| apps/cli/ratstack.config.ts:88 | @effect-diagnostics-next-line asyncFunction:off | Vite awaits generateBundle as a plugin hook, so this is the edge where the Effect program runs. |
| apps/cli/src/cli.ts:18 | oxlint-disable-next-line promise/prefer-await-to-callbacks | Oxlint mistakes this Effect handler for an async Promise callback. |
| apps/cli/src/surfaces.ts:1 | @effect-diagnostics-next-line nodeBuiltinImport:off | The Node HTTP server is the one place where nothing in Effect wraps the built-in: NodeHttpServer.layer takes a node:http server factory. |
| apps/cli/test/cli.e2e.test.ts:1 | @effect-diagnostics nodeBuiltinImport:off asyncFunction:off newPromise:off globalTimers:off | Black-box tests of the built binary: they spawn dist/cli.js as a child process and assert on stdout, stderr, and exit codes. Node built-ins and a Promise-based stdio conversation are the right tools at that boundary, so the Effect-native diagnostics are off here. |
| apps/cli/test/cli.e2e.test.ts:72 | oxlint-disable-next-line promise/avoid-new | A child process conversation has no library Promise to return. |
| apps/cli/test/ratstack.e2e.test.ts:1 | @effect-diagnostics nodeBuiltinImport:off asyncFunction:off newPromise:off globalTimers:off | Black-box tests of the published ratstack package: they spawn dist/npm/ratstack as npm would install it and assert on its files, stdout, and an MCP stdio conversation. Node built-ins and a Promise-based stdio conversation are the right tools at that boundary. |
| apps/cli/test/ratstack.e2e.test.ts:61 | oxlint-disable-next-line promise/avoid-new | A child process conversation has no library Promise to return. |
| apps/infra/test/preview-content.test.ts:101 | @effect-diagnostics-next-line asyncFunction:off | The in-memory HTTP handler exposes a Promise boundary. |
| apps/infra/test/preview-stack.test.ts:23 | @effect-diagnostics-next-line asyncFunction:off | Alchemyâs module loader is a native Promise boundary. |
| apps/site/scripts/content-blocks.ts:1 | @effect-diagnostics-next-line nodeBuiltinImport:off | Build-only block IDs use SHA-256. |
| apps/site/scripts/emit-assets.ts:1 | @effect-diagnostics-next-line nodeBuiltinImport:off | Build-only content addressing uses Nodeâs SHA-256 implementation. |
| apps/site/scripts/generate-content.ts:1 | @effect-diagnostics-next-line nodeBuiltinImport:off | Build-only hashing uses Nodeâs stable SHA-256 implementation. |
| apps/site/scripts/generate-content.ts:444 | @effect-diagnostics-next-line asyncFunction:off | satori and resvg own this Promise boundary. |
| apps/site/scripts/source-regex-policy.ts:43 | oxlint-disable-next-line eslint/no-template-curly-in-string | Audited entries preserve literal interpolation syntax in RegExp source. |
| apps/site/scripts/source-regex-policy.ts:50 | oxlint-disable-next-line eslint/no-template-curly-in-string | Audited entries preserve literal interpolation syntax in RegExp source. |
| apps/site/src/a2a.ts:34 | oxlint-disable-next-line unicorn/no-array-method-this-argument | Effect.forEach is the Effect combinator, not Array#forEach with a thisArg. |
| apps/site/src/app.ts:421 | oxlint-disable-next-line typescript/promise-function-async | Cloudflareâs Cache API owns this Promise-returning boundary. |
| apps/site/src/app.ts:451 | oxlint-disable-next-line typescript/promise-function-async | Cloudflareâs Cache API owns this Promise-returning boundary. |
| apps/site/src/app.ts:738 | oxlint-disable-next-line typescript/promise-function-async | The Fetch Request owns this Promise-returning boundary. |
| apps/site/src/app.ts:882 | @effect-diagnostics-next-line cryptoRandomUUID:off | Workers ship Web Crypto and Effect has no Web Crypto layer; a random session id needs no injectable service. |
| apps/site/src/auth/private-worker.ts:36 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Alchemy intentionally erases exporter layer requirements in its per-event registry. |
| apps/site/src/auth/private-worker.ts:41 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | The existing registry layer retains SDK-erased requirements until WorkerBridge provides them. |
| apps/site/src/auth/private-worker.ts:84 | @effect-diagnostics-next-line unsafeEffectTypeAssertion:off | Identical Alchemy pins have incompatible recursive host types across pnpm peer graphs. |
| apps/site/src/auth/private-worker.ts:84 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | @effect-diagnostics-next-line unsafeEffectTypeAssertion:off â Identical Alchemy pins have incompatible recursive host types across pnpm peer graphs. |
| apps/site/src/config-fingerprint.ts:32 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| apps/site/src/interest/handlers.ts:54 | @effect-diagnostics-next-line cryptoRandomUUIDInEffect:off | Web Crypto is the Worker runtime; the Effect Crypto service needs a platform layer this Worker does not provide. |
| apps/site/src/interest/handlers.ts:160 | @effect-diagnostics-next-line cryptoRandomUUIDInEffect:off | Web Crypto is the Worker runtime; the Effect Crypto service needs a platform layer this Worker does not provide. |
| apps/site/src/interest/interest-durable-object.ts:26 | @effect-diagnostics-next-line returnEffectInGen:off | Alchemyâs DurableObject contract returns the per-instance Effect. |
| apps/site/src/interest/interest-index-durable-object.ts:24 | @effect-diagnostics-next-line returnEffectInGen:off | Alchemyâs DurableObject contract returns the per-instance Effect. |
| apps/site/src/interest/join-contact-store.ts:108 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise boundary. |
| apps/site/src/interest/page-templates.ts:4 | @effect-diagnostics-next-line asyncFunction:off | lint requires an awaiting async thunk around the dynamic import that splits the interest page templates out of the entry chunk |
| apps/site/src/legacy-mcp/durable-object.ts:24 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| apps/site/src/legacy-mcp/durable-object.ts:41 | @effect-diagnostics-next-line returnEffectInGen:off | Alchemyâs DurableObject contract returns the per-instance Effect. |
| apps/site/src/legacy-mcp/runtime.ts:41 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | HttpRouter declares asHttpEffectâs error as unknown upstream; toWebHandler renders every failure as an HTTP response. |
| apps/site/src/observability.ts:49 | oxlint-disable-next-line eslint/no-empty-function | This privacy boundary deliberately discards all untrusted span metadata. |
| apps/site/src/observability.ts:162 | @effect-diagnostics-next-line asyncFunction:off | Cloudflare owns this per-request Promise import boundary. |
| apps/site/src/observability.ts:189 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Alchemy erases requirements in its per-event exporter registry; WorkerBridge supplies them. |
| apps/site/src/observability.ts:191 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | The SDK-erased registered exporter is rebuilt by WorkerBridge inside each event scope. |
| apps/site/src/outer-http-privacy.ts:11 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Alchemy intentionally erases exporter layer requirements in its per-event registry. |
| apps/site/src/outer-http-privacy.ts:16 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | The existing registry layer retains its SDK-erased requirements until WorkerBridge provides them. |
| apps/site/src/rate-limits.ts:82 | oxlint-disable-next-line typescript/promise-function-async | Cloudflare owns this Promise-returning runtime boundary. |
| apps/site/src/request-incidents.ts:158 | @effect-diagnostics-next-line cryptoRandomUUID:off | Workers provide Web Crypto but no Effect Crypto layer; incident ids belong to the native HTTP boundary. |
| apps/site/src/rpc-backend-runtime.ts:44 | @effect-diagnostics-next-line returnEffectInGen:off | Alchemyâs RPC Worker initialization returns its request Effect. |
| apps/site/src/sandbox-worker-loader.ts:1 | oxlint-disable-next-line typescript/triple-slash-reference | The Worker runtime module has no Node-resolvable declaration of its own. |
| apps/site/src/sandbox-worker-loader.ts:115 | oxlint-disable-next-line typescript/promise-function-async | The built-in exists only inside workerd; keeping it lazy lets Alchemy import the Stack under Node without resolving the special URL. |
| apps/site/src/sandbox-worker-loader.ts:122 | @effect-diagnostics-next-line asyncFunction:off | Cloudflare RPC requires a Promise-returning method at this boundary. This is the sandboxâs way out, so input arrives untrusted and is parsed as JSON before any capability sees it. |
| apps/site/src/sandbox-worker-loader.ts:125 | oxlint-disable-next-line anti-slop/no-unknown-parameters | no reason given |
| apps/site/src/sandbox-worker-loader.ts:283 | oxlint-disable-next-line typescript/promise-function-async | Effect.tryPromise accepts the platform Promise directly. |
| apps/site/src/sandbox-worker-loader.ts:289 | oxlint-disable-next-line promise/prefer-await-to-callbacks | Oxlint mistakes this Effect handler for a Promise callback. |
| apps/site/src/worker.ts:71 | oxlint-disable-next-line typescript/promise-function-async | Cloudflare provides this global only when a request reaches the Worker. |
| apps/site/src/worker.ts:73 | oxlint-disable-next-line typescript/promise-function-async | Cloudflare provides this global only when a request reaches the Worker. |
| apps/site/src/worker.ts:167 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| apps/site/test/code-mode-runtime.test.ts:55 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Alchemyâs ScratchStack erases provider errors; orDie closes this local runtime boundary. |
| apps/site/test/cold-content-runtime.test.ts:20 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Alchemyâs ScratchStack erases provider errors; orDie closes this local runtime boundary. |
| apps/site/test/component-registry.test.ts:274 | @ts-expect-error | A malformed external registration must fail the build even when it bypasses the TypeScript contract. |
| apps/site/test/crash-tail.test.ts:76 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | Alchemy erases native event export types to any. |
| apps/site/test/fixtures/code-mode-worker.ts:111 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| apps/site/test/fixtures/cold-content-worker.ts:67 | oxlint-disable-next-line typescript/promise-function-async | The Website stub implements a native service binding. |
| apps/site/test/generated-content.ts:1 | @effect-diagnostics-next-line nodeBuiltinImport:off | Module-evaluation fixtures cannot require a runtime; request IO stays inside the StaticAssets Effect layer. |
| apps/site/test/intake-applications.test.ts:43 | oxlint-disable-next-line typescript/promise-function-async | The in-memory router owns this Promise boundary. |
| apps/site/test/intake-redeliver.test.ts:69 | oxlint-disable-next-line typescript/promise-function-async | The in-memory router owns this Promise boundary. |
| apps/site/test/interest-capture-runtime.test.ts:20 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Alchemyâs ScratchStack erases provider errors; orDie closes this test boundary. |
| apps/site/test/interest-runtime.test.ts:20 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Alchemyâs ScratchStack erases provider errors; orDie closes this test boundary. |
| apps/site/test/join-request.test.ts:63 | oxlint-disable-next-line typescript/promise-function-async | The in-memory router owns this Promise boundary. |
| apps/site/test/legacy-mcp-routing.test.ts:22 | oxlint-disable-next-line typescript/promise-function-async | Matches Cloudflareâs Promise-returning binding. |
| apps/site/test/page-ticket.test.ts:256 | oxlint-disable-next-line typescript/promise-function-async | This fake matches the native Cache API Promise boundary. |
| apps/site/test/page-ticket.test.ts:264 | oxlint-disable-next-line typescript/promise-function-async | This fake matches the native Cache API Promise boundary. |
| apps/site/test/reader-website-headers.test.ts:99 | oxlint-disable-next-line typescript/promise-function-async | The service binding stub returns Cloudflareâs native Promise. |
| apps/site/test/reader-website.test.ts:90 | oxlint-disable-next-line typescript/promise-function-async | The service binding stub returns Cloudflareâs native Promise. |
| apps/site/test/rpc-worker.test.ts:34 | @effect-diagnostics-next-line asyncFunction:off | The in-memory HTTP handler exposes a Promise boundary. |
| apps/site/test/source-regex-policy.test.ts:1 | @effect-diagnostics nodeBuiltinImport:off | These tests write temporary lint fixtures and run the real oxlint binary against them. |
| apps/site/test/static-assets.test.ts:14 | oxlint-disable-next-line typescript/promise-function-async | The native ASSETS fixture implements the platform Promise API. |
| apps/site/test/static-assets.test.ts:33 | oxlint-disable-next-line typescript/promise-function-async | The missing-asset fixture implements the platform Promise API. |
| apps/site/test/static-assets.test.ts:37 | oxlint-disable-next-line typescript/promise-function-async | This fixture matches the native Cache API. |
| apps/site/test/static-assets.test.ts:39 | oxlint-disable-next-line unicorn/no-useless-undefined | An explicit miss preserves the native API Promise type rather than Promise<void>. |
| apps/site/test/static-assets.test.ts:42 | oxlint-disable-next-line typescript/promise-function-async | A populated Cache API fixture must not conceal a missing asset. |
| apps/site/test/static-assets.test.ts:50 | oxlint-disable-next-line typescript/promise-function-async | This fixture matches the native Cache API. |
| apps/site/test/static-assets.test.ts:53 | oxlint-disable-next-line typescript/promise-function-async | Native binding fixtures expose Promise-returning fetch. |
| apps/site/test/unsubscribe.test.ts:287 | oxlint-disable-next-line typescript/promise-function-async | A fake native Fetch boundary returns a Promise, not an Effect. |
| apps/site/test/worker-error-pages.test.ts:29 | oxlint-disable-next-line typescript/promise-function-async | Cloudflareâs binding returns a native Promise. |
| apps/site/test/worker-error-pages.test.ts:38 | @effect-diagnostics-next-line asyncFunction:off | The fake WEBSITE binding implements the native Promise fetch API. |
| apps/site/test/worker-error-pages.test.ts:115 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | the layer above provides the Worker init bindings. |
| apps/site/test/worker-error-pages.test.ts:130 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | makeRequestHandler erases its response effect type. |
| apps/site/test/worker-events.test.ts:26 | oxlint-disable-next-line typescript/promise-function-async | Cloudflareâs binding returns a native Promise. |
| apps/site/test/worker-events.test.ts:103 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | runtimeServices provides the Worker init bindings. |
| apps/site/test/worker-events.test.ts:128 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | makeRequestHandler erases its response effect type. |
| apps/site/test/worker-runtime-init.test.ts:24 | oxlint-disable-next-line typescript/promise-function-async | Cloudflareâs binding returns a native Promise. |
| apps/site/test/worker-runtime-init.test.ts:44 | oxlint-disable-next-line typescript/promise-function-async | The Website stub implements a native service binding. |
| apps/site/test/worker-runtime-init.test.ts:90 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | runtimeServices provides the Worker init bindings. |
| apps/site/test/worker-runtime-init.test.ts:121 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | makeRequestHandler erases its response effect type. |
| apps/site/test/worker.test.ts:65 | oxlint-disable-next-line typescript/promise-function-async | This fake deliberately matches Cloudflareâs Promise-returning Cache API. |
| apps/site/test/worker.test.ts:73 | oxlint-disable-next-line typescript/promise-function-async | This fake deliberately matches Cloudflareâs Promise-returning Cache API. |
| apps/site/test/worker.test.ts:117 | oxlint-disable-next-line typescript/promise-function-async | The fake deliberately matches Cloudflareâs Promise-returning binding. |
| apps/site/test/worker.test.ts:136 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns the Promise at this test boundary. |
| apps/site/test/worker.test.ts:360 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns the Promise at this test boundary. |
| apps/site/test/worker.test.ts:369 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns the Promise at this test boundary. |
| apps/site/test/worker.test.ts:1585 | oxlint-disable-next-line typescript/promise-function-async | Fetch owns this Promise-returning test boundary. |
| apps/site/test/worker.test.ts:1626 | oxlint-disable-next-line typescript/promise-function-async | Fetch owns this Promise-returning test boundary. |
| apps/web/reader-finalization.ts:10 | @effect-diagnostics-next-line asyncFunction:off | Vite awaits finalization after the Foldkit prerender hook. |
| apps/web/reader-pages.ts:48 | @effect-diagnostics-next-line asyncFunction:off | Vite awaits preparation before loading any reader module. |
| apps/web/reader-pages.ts:52 | @effect-diagnostics-next-line asyncFunction:off | Vite awaits this build-time virtual module boundary. |
| apps/web/src/client/reader/command.ts:29 | @effect-diagnostics-next-line asyncFunction:off | The native Clipboard API owns this Promise boundary. |
| apps/web/src/entry.server.ts:215 | @effect-diagnostics-next-line asyncFunction:off | Foldkit awaits the Web request boundary. |
| apps/web/src/server/website-bindings.ts:26 | @effect-diagnostics-next-line asyncFunction:off | Effect.tryPromise owns the lazy Cloudflare module import boundary. |
| apps/web/src/server/website-bindings.ts:96 | @effect-diagnostics-next-line asyncFunction:off | Effect.tryPromise owns the service binding Promise boundary. |
| apps/web/test/dev-content-routes.test.ts:29 | oxlint-disable-next-line anti-slop-effect/no-manual-tagged-construction | This is the Effect RPC wire message the browser sends; the test writes it by hand on purpose. |
| apps/web/test/dev-content-routes.test.ts:38 | @effect-diagnostics-next-line asyncFunction:off | The Effect web handler is a Promise boundary. |
| apps/web/test/dev-server.test.ts:1 | @effect-diagnostics nodeBuiltinImport:off asyncFunction:off newPromise:off globalTimers:off globalFetch:off | Black-box test of vite dev: it spawns the real dev server and talks HTTP to it, so Node built-ins, Promises, and fetch are the right tools at that boundary. |
| apps/web/test/dev-server.test.ts:18 | oxlint-disable-next-line promise/avoid-new | A child processâs first log line has no library Promise to await. |
| apps/web/test/dev-server.test.ts:49 | oxlint-disable-next-line anti-slop-effect/no-manual-tagged-construction | This is the Effect RPC wire message the browser sends; the black-box test writes it by hand on purpose. |
| apps/web/test/production-bundle.test.ts:1 | @effect-diagnostics nodeBuiltinImport:off | These tests build the app with the real Vite binary and read the emitted source maps from disk. |
| apps/web/test/reader-worker-first-head.test.ts:11 | @effect-diagnostics-next-line asyncFunction:off | The built server entry loads through a dynamic import Promise. |
| apps/web/test/reader-worker-first-head.test.ts:47 | @effect-diagnostics-next-line asyncFunction:off | The Worker fetch handler returns a host Promise. |
| apps/web/vite.config.ts:79 | @effect-diagnostics-next-line asyncFunction:off | Connect middleware and Viteâs module loader use Promises. |
| packages/auth/src/auth-service.ts:5 | @effect-diagnostics-next-line leakingRequirements:off | Better Auth intentionally retains per-request RuntimeContext requirements. |
| packages/auth/src/auth.ts:25 | @effect-diagnostics-next-line leakingRequirements:off | Better Auth methods intentionally retain per-request RuntimeContext requirements. |
| packages/auth/src/current-person-middleware.ts:27 | oxlint-disable-next-line promise/prefer-await-to-callbacks | Effect.tapError needs an Effect continuation, not a Promise callback. |
| packages/auth/src/devtools.ts:54 | @effect-diagnostics-next-line asyncFunction:off | Better Authâs raw API is Promise-based. |
| packages/auth/src/devtools.ts:61 | @effect-diagnostics-next-line asyncFunction:off | Better Authâs raw API is Promise-based. |
| packages/auth/src/feedback.ts:65 | oxlint-disable-next-line typescript/promise-function-async | Better Auth and Web Crypto own native Promises at this adapter boundary. |
| packages/auth/src/feedback.ts:75 | oxlint-disable-next-line typescript/promise-function-async | Better Auth and Web Crypto own native Promises at this adapter boundary. |
| packages/auth/src/feedback.ts:92 | oxlint-disable-next-line typescript/promise-function-async | Better Auth and Web Crypto own native Promises at this adapter boundary. |
| packages/auth/src/feedback.ts:154 | oxlint-disable-next-line typescript/promise-function-async | Better Auth and Web Crypto own native Promises at this adapter boundary. |
| packages/auth/src/feedback.ts:209 | oxlint-disable-next-line typescript/promise-function-async | Better Auth and Web Crypto own native Promises at this adapter boundary. |
| packages/auth/src/feedback.ts:256 | oxlint-disable-next-line typescript/promise-function-async | Better Auth and Web Crypto own native Promises at this adapter boundary. |
| packages/auth/src/feedback.ts:299 | oxlint-disable-next-line typescript/promise-function-async | Better Auth and Web Crypto own native Promises at this adapter boundary. |
| packages/auth/src/feedback.ts:324 | oxlint-disable-next-line typescript/promise-function-async | Better Auth and Web Crypto own native Promises at this adapter boundary. |
| packages/auth/src/feedback.ts:345 | @effect-diagnostics-next-line leakingRequirements:off | Provider operations retain RuntimeContext until the composition root binds them inside a request. |
| packages/auth/test/feedback.test.ts:237 | oxlint-disable-next-line typescript/promise-function-async | Better Auth and Web Crypto own native Promises at this adapter boundary. |
| packages/auth/test/feedback.test.ts:242 | oxlint-disable-next-line typescript/promise-function-async | Better Auth and Web Crypto own native Promises at this adapter boundary. |
| packages/capability/src/approval.ts:10 | oxlint-disable-next-line anti-slop/no-unknown-parameters | Every capabilityâs decoded input passes through one gate, so its type is erased here; an implementation that shows it to a human encodes it. |
| packages/capability/src/call-watch.ts:8 | oxlint-disable-next-line anti-slop/no-unknown-parameters | The decoded input is erased by implement across heterogeneous capability lists. |
| packages/capability/src/catalog-model.ts:114 | oxlint-disable-next-line no-use-before-define | printNode and the object/primitive printers are mutually recursive. |
| packages/capability/src/catalog-model.ts:145 | oxlint-disable-next-line no-use-before-define | no reason given |
| packages/capability/src/contract.ts:272 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/implement.ts:54 | oxlint-disable-next-line typescript/no-unsafe-type-assertion, anti-slop/no-chained-type-assertions | The heterogeneous record erases its handler channels until the public generic type is restored. |
| packages/capability/src/implement.ts:81 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | The erased handler of a heterogeneous list; Around preserves whatever channels it has. |
| packages/capability/src/sandbox-diagnostic.ts:22 | oxlint-disable-next-line anti-slop/no-unknown-parameters | Capability failures arrive erased at this schema-decoding boundary. |
| packages/capability/src/to-code-mode.ts:1 | @effect-diagnostics anyUnknownInErrorContext:off unsafeEffectTypeAssertion:off missingEffectContext:off | See to-toolkit.ts: a projection over a heterogeneous list erases error and requirement types at the boundary and recovers them for callers. |
| packages/capability/src/to-code-mode.ts:196 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-code-mode.ts:198 | oxlint-disable-next-line anti-slop/no-unknown-parameters | no reason given |
| packages/capability/src/to-code-mode.ts:291 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-code-mode.ts:336 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-command.ts:99 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-command.ts:132 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | PlainSchema has no requirements, so the CLI environment satisfies the codec. |
| packages/capability/src/to-command.ts:177 | @effect-diagnostics-next-line unstableApiUsage:off | The CLI projection uses the workspace-pinned experimental prompt environment. |
| packages/capability/src/to-command.ts:184 | @effect-diagnostics-next-line unstableApiUsage:off | Interactive CLI approval uses the workspace-pinned confirmation widget. |
| packages/capability/src/to-command.ts:190 | @effect-diagnostics-next-line unstableApiUsage:off | Interactive CLI approval uses the workspace-pinned prompt runner. |
| packages/capability/src/to-command.ts:267 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-command.ts:293 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | Decoded through contract.input, whose Type C makes precise. |
| packages/capability/src/to-http-api.ts:1 | @effect-diagnostics anyUnknownInErrorContext:off unsafeEffectTypeAssertion:off missingEffectContext:off | See to-toolkit.ts: a projection over a heterogeneous list erases error and requirement types at the boundary and recovers them for callers. |
| packages/capability/src/to-http-api.ts:38 | oxlint-disable-next-line typescript/no-unsafe-type-assertion, anti-slop/no-chained-type-assertions | no reason given |
| packages/capability/src/to-http-api.ts:50 | oxlint-disable-next-line typescript/no-unsafe-type-assertion, anti-slop/no-chained-type-assertions | no reason given |
| packages/capability/src/to-http-api.ts:397 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-http-api.ts:401 | oxlint-disable-next-line typescript/no-unsafe-type-assertion, anti-slop/no-chained-type-assertions | no reason given |
| packages/capability/src/to-http-api.ts:420 | oxlint-disable-next-line typescript/no-unsafe-type-assertion, anti-slop/no-chained-type-assertions | no reason given |
| packages/capability/src/to-http-api.ts:435 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-http-api.ts:450 | oxlint-disable-next-line typescript/no-unsafe-type-assertion, anti-slop/no-chained-type-assertions | no reason given |
| packages/capability/src/to-http-api.ts:507 | oxlint-disable-next-line typescript/no-unsafe-type-assertion, anti-slop/no-chained-type-assertions | no reason given |
| packages/capability/src/to-http-api.ts:521 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-http-api.ts:523 | oxlint-disable-next-line anti-slop/no-unknown-parameters | no reason given |
| packages/capability/src/to-http-api.ts:540 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-http-api.ts:560 | oxlint-disable-next-line typescript/no-unsafe-type-assertion, anti-slop/no-chained-type-assertions | no reason given |
| packages/capability/src/to-rpc-group.ts:43 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-rpc.ts:1 | @effect-diagnostics anyUnknownInErrorContext:off unsafeEffectTypeAssertion:off missingEffectContext:off | This projection erases each capabilityâs schema and requirement types while building the heterogeneous RpcGroup and recovers them at its public boundary. |
| packages/capability/src/to-rpc.ts:29 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-rpc.ts:40 | oxlint-disable-next-line anti-slop/no-unknown-parameters | RpcGroup invokes this only after decoding the RPC payload schema. |
| packages/capability/src/to-rpc.ts:47 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-rpc.ts:49 | oxlint-disable-next-line anti-slop/no-unknown-parameters | RpcGroup invokes this only after decoding the RPC payload schema. |
| packages/capability/src/to-rpc.ts:58 | oxlint-disable-next-line typescript/no-unsafe-type-assertion, anti-slop/no-chained-type-assertions | This heterogeneous projection recovers the mapped handlers after the runtime name-indexed loop. |
| packages/capability/src/to-rpc.ts:66 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-toolkit.ts:1 | @effect-diagnostics anyUnknownInErrorContext:off unsafeEffectTypeAssertion:off missingEffectContext:off | A projection over a heterogeneous list of capabilities erases each oneâs error and requirement types at the boundary and recovers them for callers through ToolsOf / RequirementsOf. The three diagnostics above cannot distinguish that boundary from a leak, so they are off for this file only. |
| packages/capability/src/to-toolkit.ts:101 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-toolkit.ts:110 | oxlint-disable-next-line anti-slop/no-unknown-parameters | The toolkit decodes each toolâs parameters before calling; this record erases them because a loop cannot name each capability. |
| packages/capability/src/to-toolkit.ts:116 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/src/to-toolkit.ts:118 | oxlint-disable-next-line anti-slop/no-unknown-parameters | no reason given |
| packages/capability/src/to-toolkit.ts:140 | oxlint-disable-next-line typescript/no-unsafe-type-assertion, anti-slop/no-chained-type-assertions | no reason given |
| packages/capability/test/fixtures/wiki/foreign-runtime-boundary.ts:20 | @effect-diagnostics-next-line asyncFunction:off | This foreign framework boundary exposes a native Promise API. |
| packages/capability/test/mcp-harness.ts:1 | @effect-diagnostics asyncFunction:off | The fetch shim below must be a Promise-returning function because that is what FetchHttpClient.Fetch calls; everything around it is Effect. |
| packages/capability/test/sandbox.test.ts:1 | @effect-diagnostics-next-line nodeBuiltinImport:off | This integration test needs a real loopback socket; NodeHttpServer.layer accepts the Node server factory. |
| packages/capability/test/to-http-api-routes.test.ts:107 | oxlint-disable-next-line typescript/promise-function-async | HttpRouter exposes a Promise API for this in-memory web handler test. |
| packages/capability/test/to-http-api-routes.test.ts:110 | oxlint-disable-next-line typescript/promise-function-async | Web Response.text returns a Promise at this in-memory transport boundary. |
| packages/capability/test/to-http-api-routes.test.ts:126 | oxlint-disable-next-line typescript/promise-function-async | HttpRouter exposes a Promise API for this in-memory web handler test. |
| packages/capability/test/to-http-api-routes.test.ts:129 | oxlint-disable-next-line typescript/promise-function-async | Web Response.text returns a Promise at this in-memory transport boundary. |
| packages/capability/test/to-http-api-routes.test.ts:230 | @ts-expect-error | a path parameter must name an input field; this call proves the type check, and toHttpApiâs throw covers contracts only known as AnyContract. |
| packages/capability/test/to-http-api-routes.test.ts:340 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/test/to-http-api-routes.test.ts:370 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/capability/test/to-http-api-routes.test.ts:500 | @ts-expect-error | from must answer the tagâs service, not a number. |
| packages/capability/test/to-http-api-routes.test.ts:511 | @ts-expect-error | from may fail only with its declared failure. |
| packages/capability/test/to-http-api-routes.test.ts:512 | @effect-diagnostics-next-line missingEffectError:off | this hook fails with an undeclared value on purpose, to prove the type error. |
| packages/capability/test/to-rpc.test.ts:164 | oxlint-disable-next-line typescript/promise-function-async | HttpRouter exposes a Promise API for this in-memory RPC transport test. |
| packages/capability/test/to-rpc.test.ts:182 | oxlint-disable-next-line typescript/promise-function-async | Web Response.text returns a Promise at this in-memory transport boundary. |
| packages/code-snippets/src/shiki.ts:122 | @effect-diagnostics-next-line asyncFunction:off | Shiki owns the variadic Promise grammar-loader boundary. |
| packages/core/src/config-service.ts:24 | @effect-diagnostics-next-line classSelfMismatch:off | The generic factory hands the Self type in from the caller, which is the point of the pattern, so the class-name check does not apply here. |
| packages/core/src/config-service.ts:35 | oxlint-disable-next-line typescript/no-unsafe-type-assertion | no reason given |
| packages/core/src/flag-audit.ts:188 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Expected failures travel in Exit output; an unexpected machine failure is a defect. |
| packages/core/src/inspect-machine.ts:70 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | A machine-level error or an early stop is a programming error here: the domain failure travels through the unreadable state, not the actor. A machineâs ErrorFrom is unknown by design (statelyai/xstate#5725), so the unknown-error diagnostic is off for this one call and orDie closes it. |
| packages/core/src/interest-machine.ts:360 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | A machineâs ErrorFrom is unknown (statelyai/xstate#5725); a machine-level error here is a programming error and orDie closes it. |
| packages/core/src/interest-services.ts:9 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| packages/core/src/interest-token.ts:21 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| packages/core/src/interest-token.ts:50 | oxlint-disable-next-line rat-stack-patterns/no-shared-pending-cache | This service caches CryptoKey import from a fixed secret with no request-bound I/O. |
| packages/core/src/interest-token.ts:60 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| packages/core/src/interest-token.ts:96 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| packages/core/src/interest-token.ts:128 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| packages/core/src/join-delivery-machine.ts:111 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Machine-level defects are not domain failures; only the typed IntakeResult leaves the actor. |
| packages/core/src/join-interest-port.ts:7 | @effect-diagnostics-next-line cryptoRandomUUIDInEffect:off | Web Crypto is available in both Worker and Node composition roots. |
| packages/core/test/boundaries-rule.test.ts:1 | @effect-diagnostics nodeBuiltinImport:off | These tests create temporary source fixtures and run the real oxlint binary against them. |
| packages/core/test/docs-pins.test.ts:1 | @effect-diagnostics nodeBuiltinImport:off | This test reads the repositoryâs manifests and docs from disk. |
| packages/core/test/inspect-machine.model.test.ts:171 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Machine-level failures are defects; FileStatsError travels through the final outcome. |
| packages/core/test/inspect-machine.test.ts:18 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | A machineâs ErrorFrom is unknown (statelyai/xstate#5725); a machine-level error here is a test failure, not a case under test. |
| packages/core/test/no-comments-rule.test.ts:1 | @effect-diagnostics nodeBuiltinImport:off | These tests run the real oxlint binary against fixture files, so they use Nodeâs file system and child process modules directly. |
| packages/core/test/patterns-rule.test.ts:1 | @effect-diagnostics nodeBuiltinImport:off | These tests create temporary source fixtures and run the real oxlint binary against them. |
| packages/core/test/unknown-parameters-rule.test.ts:1 | @effect-diagnostics nodeBuiltinImport:off | These tests write temporary source fixtures and run the real oxlint binary against them. |
| packages/database/src/hyperdrive-postgres.ts:71 | oxlint-disable-next-line promise-function-async | Effect.promise consumes a Promise factory directly. |
| packages/database/src/postgres-migrations.ts:60 | oxlint-disable-next-line promise-function-async | Effect.promise consumes a Promise factory directly. |
| packages/database/src/postgres-migrations.ts:68 | @effect-diagnostics-next-line asyncFunction:off | The pg client exposes Promise-based connection setup. |
| packages/database/src/postgres-migrations.ts:86 | @effect-diagnostics-next-line asyncFunction:off | The pg client exposes Promise-based shutdown. |
| packages/database/src/store.ts:82 | oxlint-disable-next-line unicorn/no-array-method-this-argument | Effect.forEach is not Array#forEach; the callback is an effectful mapper. |
| packages/database/src/store.ts:91 | oxlint-disable-next-line unicorn/no-array-method-this-argument | Effect.forEach is not Array#forEach; the callback is an effectful mapper. |
| packages/database/test/local-layers.ts:49 | @effect-diagnostics-next-line asyncFunction:off | SQL.js initializes its local SQLite engine through a Promise API. |
| packages/database/test/local-layers.ts:81 | @effect-diagnostics-next-line asyncFunction:off | The SQL.js Drizzle adapter exposes Promise-based queries. |
| packages/database/test/local-layers.ts:102 | @effect-diagnostics-next-line asyncFunction:off | The SQL.js Drizzle adapter exposes Promise-based queries. |
| packages/database/test/local-layers.ts:122 | @effect-diagnostics-next-line asyncFunction:off | PGlite creates its local Postgres engine through a Promise API. |
| packages/database/test/local-layers.ts:127 | @effect-diagnostics-next-line asyncFunction:off | PGlite closes its local Postgres engine through a Promise API. |
| packages/database/test/local-layers.ts:144 | @effect-diagnostics-next-line asyncFunction:off | PGlite transactions use a Promise callback. |
| packages/database/test/local-layers.ts:147 | @effect-diagnostics-next-line asyncFunction:off | PGlite exposes the transaction callback as a Promise API. |
| packages/database/test/local-layers.ts:150 | oxlint-disable-next-line no-await-in-loop | Migration statements must stay ordered inside one transaction. |
| packages/database/test/local-layers.ts:165 | @effect-diagnostics-next-line asyncFunction:off | PGlite queries use a Promise API. |
| packages/database/test/local-layers.ts:188 | @effect-diagnostics-next-line asyncFunction:off | PGliteâs Drizzle adapter exposes Promise-based queries. |
| packages/database/test/local-layers.ts:209 | @effect-diagnostics-next-line asyncFunction:off | PGliteâs Drizzle adapter exposes Promise-based queries. |
| packages/deploy/src/local.ts:438 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Alchemy imports arbitrary stack modules; this adapter maps the upstream unknown failure into DeployStepError. |
| packages/deploy/src/machine.ts:615 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Step crashes are explicit states; an unexpected machine failure remains a defect. |
| packages/deploy/src/rollback.ts:130 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Unexpected recovery machine failures remain defects and never establish health. |
| packages/deploy/src/watch.ts:397 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Unexpected watch actor failures remain defects rather than a passing observation. |
| packages/deploy/test/machine.model.test.ts:332 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Machine-level errors remain defects; the model checks explicit terminal step outcomes. |
| packages/deploy/test/machine.model.test.ts:458 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Machine-level errors remain defects; the property checks the refused verdict. |
| packages/deploy/test/worker-version-readback.model.test.ts:176 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Unexpected actor defects are not a passing qualification. |
| packages/devtools/src/actor-watcher.ts:47 | oxlint-disable-next-line anti-slop/no-unknown-parameters | Machine context, state values, and events are user-defined and erased at the XState inspection boundary; turning them into JSON is this functionâs job. |
| packages/devtools/src/json.ts:42 | oxlint-disable-next-line anti-slop/no-unknown-parameters | Handler values arrive erased across the heterogeneous capability list; the schema encodes them before anything reads them. |
| packages/devtools/test/devtools.test.ts:601 | oxlint-disable-next-line anti-slop/no-unknown-parameters | CallWatch preserves the erased input across heterogeneous capability lists. |
| packages/devtools/test/devtools.test.ts:619 | oxlint-disable-next-line anti-slop/no-unknown-parameters | aroundHandlers erases input across a heterogeneous capability list. |
| packages/events/src/web-crypto.ts:6 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| packages/flags/src/evaluate.ts:25 | oxlint-disable-next-line eslint/no-bitwise | FNV-1a mixes each Unicode code point into a fixed 32-bit hash. |
| packages/flags/src/evaluate.ts:29 | oxlint-disable-next-line eslint/no-bitwise | Unsigned conversion maps the FNV-1a result into the rollout bucket range. |
| packages/intake-live/src/basin-intake-events.ts:43 | oxlint-disable-next-line unicorn/no-array-method-this-argument | Effect.forEach is the Effect combinator, not Array#forEach with a thisArg. |
| packages/intake-live/src/hmac-tickets.ts:34 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| packages/intake-live/src/hmac-tickets.ts:46 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| packages/intake-live/src/hmac-tickets.ts:96 | oxlint-disable-next-line rat-stack-patterns/no-shared-pending-cache | This service caches CryptoKey derivation from a fixed secret with no request-bound I/O. |
| packages/intake-live/src/hmac-tickets.ts:114 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| packages/intake-live/src/hmac-tickets.ts:136 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| packages/intake-live/src/read-application.ts:23 | oxlint-disable-next-line unicorn/no-array-method-this-argument | Effect.forEach is the Effect combinator, not an Array method with a thisArg. |
| packages/intake-live/src/sealed-intake-events.ts:43 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| packages/intake-live/src/sealed-intake-events.ts:63 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| packages/intake-live/src/sealed-intake-events.ts:85 | oxlint-disable-next-line typescript/promise-function-async | Web Crypto owns this Promise-returning boundary. |
| packages/intake-live/src/sealed-intake-events.ts:146 | oxlint-disable-next-line unicorn/no-array-method-this-argument | Effect.forEach is the Effect combinator, not Array#forEach with a thisArg. |
| packages/learn/src/commit-machine.ts:54 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Unexpected machine failures are defects; the typed append failure travels through the final output. |
| packages/learn/src/feedback-machine.ts:154 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Unexpected machine failures stay defects; expected unauthentication is carried in the final context. |
| packages/learn/src/feedback-machine.ts:179 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Credential checks return explicit states; machine failures must not become authentication decisions. |
| packages/learn/test/feedback.model.test.ts:49 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Unexpected machine failures must fail the model check. |
| packages/learn/test/feedback.model.test.ts:66 | @effect-diagnostics-next-line anyUnknownInErrorContext:off | Unexpected machine failures must fail the model check. |
| scripts/find-peers.ts:1 | @effect-diagnostics nodeBuiltinImport:off | This Node CLI reads manifests and a local roster directly from disk. |
| scripts/find-peers.ts:118 | @effect-diagnostics-next-line asyncFunction:off | This one-shot Node CLI batches Sourcegraph requests with native Promise I/O. |
| scripts/find-peers.ts:125 | @effect-diagnostics-next-line globalFetch:off | This Node CLI fetches a public Sourcegraph endpoint outside an Effect runtime. |
| scripts/oxlint-plugin-boundaries.ts:1 | @effect-diagnostics nodeBuiltinImport:off | This Oxlint plugin runs as Node tooling and reads repository files directly. |
| scripts/oxlint-plugin-boundaries.ts:104 | oxlint-disable-next-line anti-slop/no-runtime-typeof | ESTree Literal also represents numbers and booleans, so module sources need a string boundary check. |
| scripts/oxlint-plugin-boundaries.ts:259 | oxlint-disable-next-line anti-slop/no-runtime-typeof | ESTree Literal also represents numbers and booleans, so object keys need a string check. |
| scripts/oxlint-plugin-boundaries.ts:284 | oxlint-disable-next-line anti-slop/no-runtime-typeof | ESTree Literal also represents numbers, booleans, and regexes, so a computed key needs a string check. |
| scripts/oxlint-plugin-patterns.ts:1 | @effect-diagnostics nodeBuiltinImport:off | This Oxlint plugin runs as Node tooling and reads repository files directly. |
| scripts/oxlint-plugin-patterns.ts:68 | oxlint-disable-next-line anti-slop/no-runtime-typeof | ESTree Literal also represents numbers, booleans, and regexes, so computed API names need a string check. |
| scripts/oxlint-plugin-patterns.ts:92 | oxlint-disable-next-line anti-slop/no-runtime-typeof | ESTree Literal also represents numbers and booleans, so destructuring keys need a string check. |
| scripts/oxlint-plugin-patterns.ts:111 | oxlint-disable-next-line anti-slop/no-runtime-typeof | ESTree Literal also represents numbers and booleans, so contract names need a string check. |
| scripts/oxlint-plugin-xstate-effect.ts:14 | oxlint-disable anti-slop/no-runtime-typeof | The walker below reads every child of an ESTree node generically, so each child arrives as unknown. Lint tooling has no schema layer; this structural guard is the boundary check the anti-slop rule asks for. |