# redwoodjs/redwood — codebase unpack

> Canonical page: https://codevetter.com/unpack/redwood

This is a deterministic Repo Unpack scan of redwoodjs/redwood — a structural map, not a review, security audit, or maintainer-endorsed description.

- Scanned commit: a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd (2025-12-13)
- Last upstream commit: Fix docs.
- Generated by codevetter 1.15.0 on 2026-10-02
- 4000 files scanned · 27.2 MB

Source inspection; upstream code and tests were not executed.

## Languages

- Markdown: 2125 files
- TypeScript: 1604 files
- JavaScript: 739 files
- JSON: 344 files
- TOML: 52 files
- CSS: 44 files
- HTML: 34 files
- YAML: 31 files

## Repository structure

- docs/ — 1470 files
- packages/ — 1469 files
- __fixtures__/ — 728 files
- tasks/ — 195 files
- .github/ — 59 files
- .changesets/ — 54 files
- .ona/ — 1 files
- .devcontainer/ — 1 files

Probable source entrypoint: `packages/` (inferred from the tree, not upstream docs)

## Package

- package.json: null — 78 declared dependencies

## Structural health signals

Average score 7.4/10 across 96 files; 16 hotspots. These are deterministic review leads, not proof of a bug.

## Recent history

- a7852fb92d0e (2025-12-13) Fix docs.
- 3ff0bf08e1bf (2025-11-15) Update testing.md (#12092)
- 5358368bfae4 (2025-11-15) Simplify CI. (#12109)
- d0fcf2071333 (2025-10-13) chore(deps): Bump form-data to fix security alerts (#12103)
- 6ccff00166fe (2025-10-13) chore(deps): update dependency rollup to v4.46.2 (#12075)

## Overview

Redwood is a TypeScript/JavaScript framework monorepo for building React applications backed by GraphQL services and Prisma databases. Its distinctive integration spans declarative routing, query lifecycle components called Cells, authentication providers, application generators, background jobs, storage, and development tooling. At commit a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd, the inspected implementation belongs to Redwood GraphQL; the README separately promotes RedwoodSDK and describes Bighorn capabilities as aspirational.

## System map

The repository contains framework packages, generated application templates, integration fixtures, task tooling, and a separate Docusaurus documentation application. Application runtime boundaries divide browser rendering from API execution, with Prisma clients owned by applications. Fastify hosts ordinary functions and a dedicated GraphQL Yoga integration, while a separate handler adapts Yoga to Lambda events. Root scripts coordinate package builds and tests through Nx; package manifests define the published entrypoints.
- The root is a private Yarn 4.6.0 workspace covering framework packages, adapters, authentication providers, CLI packages, and mailer components; create-redwood-rsc-app is explicitly excluded from that workspace list. — [package.json#L1-13](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/package.json#L1-L13) [package.json#L137-138](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/package.json#L137-L138)
- Root build, test, test-ci, and test:types scripts dispatch Nx targets; tsconfig.json references internal, structure, API, server, auth, web, router, testing, prerender, GraphQL, forms, and codemod projects. — [package.json#L14-48](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/package.json#L14-L48) [tsconfig.json#L1-16](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/tsconfig.json#L1-L16)
- The CLI publishes rw and redwood binaries from dist/index.js; source startup resolves --cwd, RWJS_CWD, or the nearest redwood.toml before loading application environment files. — [packages/cli/package.json#L11-18](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/package.json#L11-L18) [packages/cli/src/index.js#L74-107](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/index.js#L74-L107)
- The browser entrypoint imports application root and routes through ~redwood aliases, then selects hydrateRoot for existing markup or createRoot for an empty redwood-app element. — [packages/web/src/entry/index.jsx#L1-29](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/entry/index.jsx#L1-L29)
- createServer constructs Fastify, creates request-scoped context, registers the generic API adapter, and separately imports compiled GraphQL options to register a Yoga server. — [packages/api-server/src/createServer.ts#L105-146](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/createServer.ts#L105-L146)
- createGraphQLYoga owns schema assembly and an ordered Envelop plugin chain covering authentication, context, directives, Armor, operation filtering, trusted documents, errors, readiness, and logging. — [packages/graphql-server/src/createGraphQLYoga.ts#L63-90](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/createGraphQLYoga.ts#L63-L90) [packages/graphql-server/src/createGraphQLYoga.ts#L103-159](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/createGraphQLYoga.ts#L103-L159) [packages/graphql-server/src/createGraphQLYoga.ts#L161-212](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/createGraphQLYoga.ts#L161-L212)
- Database clients are application-owned: the todo fixture constructs PrismaClient in src/lib/db.js and its service performs queries and mutations against db.todo. — [__fixtures__/example-todo-main/api/src/lib/db.js#L1-6](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/api/src/lib/db.js#L1-L6) [__fixtures__/example-todo-main/api/src/services/todos/todos.js#L1-21](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/api/src/services/todos/todos.js#L1-L21)
- The server executable defaults NODE_ENV to production and provides combined, api-only, and web-only modes; the Lambda GraphQL wrapper instead translates API Gateway events into yoga.fetch requests. — [packages/api-server/src/bin.ts#L35-63](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/bin.ts#L35-L63) [packages/graphql-server/src/functions/graphql.ts#L71-106](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/functions/graphql.ts#L71-L106)
- The router publishes ESM and CommonJS exports plus react-server conditionals for RSC routing; its dependencies pin a React 19 release candidate. — [packages/router/package.json#L10-20](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/package.json#L10-L20) [packages/router/package.json#L58-70](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/package.json#L58-L70) [packages/router/package.json#L96-103](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/package.json#L96-L103)
- Documentation is a separate Docusaurus application with build, serve, start, and deploy scripts; its maintenance instructions identify docs/docs as the editable source. — [docs/package.json#L1-12](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/docs/package.json#L1-L12) [docs/package.json#L26-37](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/docs/package.json#L26-L37) [docs/README.md#L15-19](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/docs/README.md#L15-L19)

## Feature catalog

The primary users are developers constructing applications with framework commands and runtime components. Inspected features include application creation, development servers, scaffolding, routing, GraphQL Cells, forms, authentication, realtime transport, background jobs, file storage, and mail delivery. The CLI also exposes operational and quality commands and loads Storybook and data-migration plugins. This catalog covers inspected interfaces and documented deployment targets; it is bounded rather than an exhaustive enumeration of the monorepo.
- create-redwood-app checks compatibility, collects target directory and TypeScript/Git preferences, copies the selected template, and conditionally installs dependencies and generates types. — [packages/create-redwood-app/src/create-redwood-app.js#L735-788](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/create-redwood-app/src/create-redwood-app.js#L735-L788)
- rw registers build, check, console, deploy, destroy, dev, exec, experimental, generate, info, jobs, lint, prerender, prisma, record, serve, setup, studio, test, ts-to-js, type-check, and upgrade commands. — [packages/cli/src/index.js#L202-224](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/index.js#L202-L224)
- rw dev supports selecting api/web sides, artifact generation, and an API debugger port; its handler chooses SPA or streaming-SSR frontend commands. — [packages/cli/src/commands/dev.js#L6-35](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/dev.js#L6-L35) [packages/cli/src/commands/devHandler.js#L158-175](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/devHandler.js#L158-L175)
- The scaffold generator produces Pages, SDL, and Services from a database model, supports nested path/model names, optional tests and Tailwind assets, and rollback configuration. — [packages/cli/src/commands/generate/scaffold/scaffold.js#L758-795](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/generate/scaffold/scaffold.js#L758-L795)
- Router supports named routes, path and search parameters, redirects, layout Sets, PrivateSets, lazy page loading, and not-found pages; the todo fixture demonstrates public and role-restricted routes. — [packages/router/src/router.tsx#L125-183](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/src/router.tsx#L125-L183) [packages/router/src/router.tsx#L218-252](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/src/router.tsx#L218-L252) [__fixtures__/example-todo-main/web/src/Routes.js#L15-34](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/web/src/Routes.js#L15-L34)
- Cells expose QUERY, beforeQuery, afterQuery, isEmpty, Loading, Failure, Empty, and Success hooks/components, with a separate suspending factory selected for streaming SSR. — [packages/web/src/components/cell/createCell.tsx#L15-47](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/components/cell/createCell.tsx#L15-L47) [packages/web/src/components/cell/createCell.tsx#L113-160](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/components/cell/createCell.tsx#L113-L160)
- Form wraps react-hook-form validation and submission, accepts externally created form methods, and exposes GraphQL validation messages through ServerErrorsContext. — [packages/forms/src/Form.tsx#L51-80](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/forms/src/Form.tsx#L51-L80)
- Authentication setup registers Auth0, Azure Active Directory, Clerk, custom auth, dbAuth, Firebase, Netlify, Supabase, and SuperTokens; dbAuth setup offers WebAuthn support. — [packages/cli/src/commands/setup/auth/auth.js#L33-105](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/setup/auth/auth.js#L33-L105) [packages/cli/src/commands/setup/auth/auth.js#L132-192](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/setup/auth/auth.js#L132-L192)
- DbAuthHandler dispatches login, logout, signup, password recovery/reset, token retrieval, and WebAuthn registration/authentication through an explicit method and HTTP verb table. — [packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L354-385](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L354-L385) [packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L526-543](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L526-L543)
- Apollo transport supports multipart uploads, SSE subscriptions/live queries, and persisted query hashes; the Fastify GraphQL adapter exposes GraphQL, health, readiness, and stream routes. — [packages/web/src/apollo/index.tsx#L224-278](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/apollo/index.tsx#L224-L278) [packages/api-server/src/plugins/graphql.ts#L67-78](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/plugins/graphql.ts#L67-L78) [packages/api-server/src/plugins/graphql.ts#L104-112](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/plugins/graphql.ts#L104-L112)
- Background jobs support named queues, delayed scheduling, priorities, configurable workers, retry limits, and configurable deletion of completed or failed jobs. — [packages/jobs/src/core/Scheduler.ts#L41-76](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/Scheduler.ts#L41-L76) [packages/jobs/src/core/JobManager.ts#L79-98](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/JobManager.ts#L79-L98) [packages/jobs/src/core/Executor.ts#L62-93](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/Executor.ts#L62-L93)
- FileSystemStorage saves, reads, and removes files, while UrlSigner generates HMAC-signed access URLs with optional expiration. — [packages/storage/src/adapters/FileSystemStorage/FileSystemStorage.ts#L16-45](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/storage/src/adapters/FileSystemStorage/FileSystemStorage.ts#L16-L45) [packages/storage/src/UrlSigner.ts#L28-58](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/storage/src/UrlSigner.ts#L28-L58) [packages/storage/src/UrlSigner.ts#L124-139](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/storage/src/UrlSigner.ts#L124-L139)
- Mailer selects configured renderers and delivery handlers, distinguishes production/test/development modes, and can substitute in-memory or Studio handlers in nonproduction modes. — [packages/mailer/core/src/mailer.ts#L51-102](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/mailer/core/src/mailer.ts#L51-L102) [packages/mailer/core/src/mailer.ts#L155-184](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/mailer/core/src/mailer.ts#L155-L184) [packages/mailer/core/src/mailer.ts#L192-247](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/mailer/core/src/mailer.ts#L192-L247)
- The deployment reference documents serverless and traditional hosting, naming Baremetal, Coherence, Flightcontrol, Edgio, Netlify, Render, Serverless, and Vercel; CLI plugin defaults expose Storybook and data-migrate commands. — [docs/docs/deploy/introduction.md#L7-28](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/docs/docs/deploy/introduction.md#L7-L28) [packages/cli/src/lib/plugin.js#L26-39](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/lib/plugin.js#L26-L39)

## Data flow

Application configuration determines paths, endpoints, feature flags, and browser-exposed values. Browser queries travel through Cell hooks and Apollo links to Yoga, where SDL fields map to service exports and application-owned Prisma clients. Authentication adds identity to request-scoped context before resolver execution. Jobs use a separate durable path that serializes invocation metadata into database records and later loads compiled code in workers.
- getRawConfig reads and interpolates TOML; getConfig merges the parsed values with defaults such as web port 8910, API port 8911, and /.redwood/functions. — [packages/project-config/src/config.ts#L130-148](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/project-config/src/config.ts#L130-L148) [packages/project-config/src/config.ts#L215-234](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/project-config/src/config.ts#L215-L234)
- getEnvVarDefinitions converts configuration into RWJS_ENV endpoint/title/feature values and exposes both explicitly included environment variables and REDWOOD_ENV_ prefixed values to browser expressions. — [packages/vite/src/lib/envVarDefinitions.ts#L5-17](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/src/lib/envVarDefinitions.ts#L5-L17) [packages/vite/src/lib/envVarDefinitions.ts#L29-53](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/src/lib/envVarDefinitions.ts#L29-L53)
- NamedCell removes children from query-variable derivation, runs beforeQuery, resolves a static or functional QUERY, and calls the GraphQLHooksProvider useQuery hook. — [packages/web/src/components/cell/createCell.tsx#L48-64](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/components/cell/createCell.tsx#L48-L64)
- Apollo obtains getToken for each operation, adds auth-provider and Bearer authorization headers, and sends operations through upload, SSE, or persisted-operation terminating links. — [packages/web/src/apollo/index.tsx#L191-219](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/apollo/index.tsx#L191-L219) [packages/web/src/apollo/index.tsx#L224-286](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/apollo/index.tsx#L224-L286)
- The Fastify GraphQL handler supplies a Lambda-shaped event alongside req/reply to yoga.handleNodeRequest, then copies response headers, status, and body into the Fastify reply. — [packages/api-server/src/plugins/graphql.ts#L83-101](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/plugins/graphql.ts#L83-L101)
- getAuthenticationContext prefers an auth-provider-bearing cookie over provider-header authorization, runs configured decoders until a payload is returned, and passes the result to getCurrentUser through the auth-context plugin. — [packages/api/src/auth/index.ts#L130-174](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api/src/auth/index.ts#L130-L174) [packages/graphql-server/src/plugins/useRedwoodAuthContext.ts#L22-46](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/plugins/useRedwoodAuthContext.ts#L22-L46)
- makeMergedSchema combines SDL, directive, subscription, and root definitions; service exports matching field names receive GraphQL args followed by root/context/info. — [packages/graphql-server/src/makeMergedSchema.ts#L97-124](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/makeMergedSchema.ts#L97-L124) [packages/graphql-server/src/makeMergedSchema.ts#L375-405](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/makeMergedSchema.ts#L375-L405)
- The todo mutation passes a body string from React state into createTodo, stores it through db.todo.create, and appends the returned Todo to Apollo's cached list. — [__fixtures__/example-todo-main/web/src/components/AddTodoControl/AddTodoControl.js#L5-16](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/web/src/components/AddTodoControl/AddTodoControl.js#L5-L16) [__fixtures__/example-todo-main/web/src/components/AddTodo/AddTodo.js#L17-39](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/web/src/components/AddTodo/AddTodo.js#L17-L39) [__fixtures__/example-todo-main/api/src/services/todos/todos.js#L1-5](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/api/src/services/todos/todos.js#L1-L5)
- Job scheduling converts job name/path/args, queue, priority, and computed runAt into a payload; PrismaAdapter persists invocation metadata as JSON in the handler column. — [packages/jobs/src/core/Scheduler.ts#L51-98](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/Scheduler.ts#L51-L98) [packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L255-265](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L255-L265)
- PrismaAdapter selects jobs by priority/runAt, conditionally updates a candidate's lock and attempt count, reloads the record, and deserializes name/path/args for Executor. — [packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L157-189](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L157-L189) [packages/jobs/src/core/Executor.ts#L62-72](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/Executor.ts#L62-L72)
- FileSystemStorage turns a File arrayBuffer into a Node Buffer at a configured or overridden path; UrlSigner binds a path and optional expiry into an HMAC and returns a decoded path after validation. — [packages/storage/src/adapters/FileSystemStorage/FileSystemStorage.ts#L24-40](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/storage/src/adapters/FileSystemStorage/FileSystemStorage.ts#L24-L40) [packages/storage/src/UrlSigner.ts#L39-52](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/storage/src/UrlSigner.ts#L39-L52) [packages/storage/src/UrlSigner.ts#L73-98](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/storage/src/UrlSigner.ts#L73-L98)

## Behavior traces

The investigation followed browser startup, development-command startup, todo creation and persistence, authentication context construction, and background-job execution through their relevant source files. These traces describe source call order, not observed execution. The todo fixture demonstrates the client-to-service data contract but contains a legacy GraphQL bootstrap, so the current server boundary is substantiated separately with test-project and framework sources. Job scheduling and consumption form an additional end-to-end persistence flow.
- Browser startup: index.jsx finds redwood-app → hydrateRoot or createRoot.render → App → FatalErrorBoundary → RedwoodProvider → RedwoodApolloProvider → supplied Routes. — [packages/web/src/entry/index.jsx#L13-28](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/entry/index.jsx#L13-L28) [packages/create-redwood-app/templates/ts/web/src/App.tsx#L14-19](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/create-redwood-app/templates/ts/web/src/App.tsx#L14-L19)
- Routing continuation: Router → LocationProvider → LocationAwareRouter → analyzeRoutes → matchPath/parseSearch → ParamsProvider → WrappedPage → ActiveRouteLoader → LazyRouteComponent. — [packages/router/src/router.tsx#L27-64](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/src/router.tsx#L27-L64) [packages/router/src/router.tsx#L129-179](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/src/router.tsx#L129-L179) [packages/router/src/active-route-loader.tsx#L47-61](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/src/active-route-loader.tsx#L47-L61) [packages/router/src/active-route-loader.tsx#L92-97](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/src/active-route-loader.tsx#L92-L97)
- Development startup: CLI resolves cwd → sets RWJS_CWD → loadEnvFiles → main/runYargs → registered dev handler dynamically imports devHandler.handler. — [packages/cli/src/index.js#L74-107](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/index.js#L74-L107) [packages/cli/src/index.js#L109-135](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/index.js#L109-L135) [packages/cli/src/commands/dev.js#L54-56](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/dev.js#L54-L56)
- Development continuation: devHandler reads paths/config → checks configured ports → generates Prisma client for the API side → constructs API/web/gen commands → concurrently starts eligible processes; port conflicts exit instead of automatically switching ports. — [packages/cli/src/commands/devHandler.js#L32-77](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/devHandler.js#L32-L77) [packages/cli/src/commands/devHandler.js#L80-107](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/devHandler.js#L80-L107) [packages/cli/src/commands/devHandler.js#L177-228](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/devHandler.js#L177-L228)
- Todo creation, client phase: HomePage renders AddTodo → AddTodoControl.handleChange stores input → handleSubmit calls submitTodo and clears input → AddTodo.submitTodo calls createTodo with variables and an optimistic Todo. — [__fixtures__/example-todo-main/web/src/pages/HomePage/HomePage.tsx#L3-12](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/web/src/pages/HomePage/HomePage.tsx#L3-L12) [__fixtures__/example-todo-main/web/src/components/AddTodoControl/AddTodoControl.js#L5-16](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/web/src/components/AddTodoControl/AddTodoControl.js#L5-L16) [__fixtures__/example-todo-main/web/src/components/AddTodo/AddTodo.js#L30-42](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/web/src/components/AddTodo/AddTodo.js#L30-L42)
- Todo creation, persistence contract: CREATE_TODO selects createTodo(body) → SDL declares that mutation → matching service export calls db.todo.create → SQLite schema supplies an autoincrement id and default off status → Apollo update appends the response to TODOS. — [__fixtures__/example-todo-main/web/src/components/AddTodo/AddTodo.js#L7-26](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/web/src/components/AddTodo/AddTodo.js#L7-L26) [__fixtures__/example-todo-main/api/src/graphql/todos.sdl.js#L13-17](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/api/src/graphql/todos.sdl.js#L13-L17) [__fixtures__/example-todo-main/api/src/services/todos/todos.js#L1-5](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/api/src/services/todos/todos.js#L1-L5) [__fixtures__/example-todo-main/api/prisma/schema.prisma#L1-15](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/api/prisma/schema.prisma#L1-L15)
- Current GraphQL startup: test-project creates a dbAuth decoder and passes SDL/services/directives/logger to createGraphQLHandler → createGraphQLYoga → makeMergedSchema → ordered plugin construction → createYoga. — [__fixtures__/test-project/api/src/functions/graphql.ts#L12-24](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/test-project/api/src/functions/graphql.ts#L12-L24) [packages/graphql-server/src/functions/graphql.ts#L24-69](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/functions/graphql.ts#L24-L69) [packages/graphql-server/src/createGraphQLYoga.ts#L83-90](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/createGraphQLYoga.ts#L83-L90) [packages/graphql-server/src/createGraphQLYoga.ts#L192-212](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/createGraphQLYoga.ts#L192-L212)
- Authenticated operation: Apollo withToken obtains credentials → authMiddleware sets headers → Yoga auth plugin calls getAuthenticationContext → decoders run → getCurrentUser resolves application identity → extendContext adds currentUser. — [packages/web/src/apollo/index.tsx#L191-219](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/apollo/index.tsx#L191-L219) [packages/api/src/auth/index.ts#L151-174](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api/src/auth/index.ts#L151-L174) [packages/graphql-server/src/plugins/useRedwoodAuthContext.ts#L17-46](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/plugins/useRedwoodAuthContext.ts#L17-L46)
- dbAuth login: constructor extracts/decrypts the session → invoke calls init/normalizeRequest → validates method and verb → dispatches login → _verifyUser → configured login.handler → _loginResponse → encrypted session and provider cookies plus csrf-token response header. — [packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L477-508](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L477-L508) [packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L526-543](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L526-L543) [packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L662-672](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L662-L672) [packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L1521-1539](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L1521-L1539)
- Job submission: JobManager.createScheduler returns a scheduling function → Scheduler.schedule → buildPayload/computeRunAt → adapter.schedule → PrismaAdapter creates the database record with serialized invocation metadata. — [packages/jobs/src/core/JobManager.ts#L50-67](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/JobManager.ts#L50-L67) [packages/jobs/src/core/Scheduler.ts#L41-76](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/Scheduler.ts#L41-L76) [packages/jobs/src/core/Scheduler.ts#L79-98](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/Scheduler.ts#L79-L98) [packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L255-265](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L255-L265)
- Job consumption: Worker.run → #work → adapter.find → conditional Prisma lock → Executor.perform → loadJob dynamically imports the compiled job → job.perform(...args) → adapter.success or adapter.error/failure. — [packages/jobs/src/core/Worker.ts#L153-198](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/Worker.ts#L153-L198) [packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L167-189](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L167-L189) [packages/jobs/src/core/Executor.ts#L62-93](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/Executor.ts#L62-L93) [packages/jobs/src/loaders.ts#L44-62](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/loaders.ts#L44-L62)

## Testing signals

Tests and CI were inspected, not executed; no passing result is asserted. The inspected framework packages use Vitest, with React Testing Library for component tests and jsdom for browser-oriented packages. Playwright smoke tests and Cypress tutorial CI exercise application integration, while background-job CI has a separate job. Coverage observations are bounded to inspected files: mocked component and worker tests do not establish real network, database-concurrency, provider, or deployment behavior.
- The CLI, router, and GraphQL-server package scripts invoke Vitest; router additionally exposes tstyche through test:types. — [packages/cli/package.json#L19-27](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/package.json#L19-L27) [packages/router/package.json#L83-94](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/package.json#L83-L94) [packages/graphql-server/package.json#L15-22](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/package.json#L15-L22)
- Web and router Vitest configurations use jsdom and exclude __typetests__; their type-test files therefore require a separate validation path. — [packages/web/vitest.config.mts#L3-11](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/vitest.config.mts#L3-L11) [packages/router/vitest.config.mts#L3-8](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/vitest.config.mts#L3-L8) [packages/router/package.json#L92-94](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/package.json#L92-L94)
- createCell.test.tsx uses React Testing Library and Vitest, injecting a custom useQuery through GraphQLHooksProvider rather than contacting a GraphQL server. — [packages/web/src/components/cell/createCell.test.tsx#L1-31](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/components/cell/createCell.test.tsx#L1-L31) [packages/web/src/components/cell/createCell.test.tsx#L34-59](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/components/cell/createCell.test.tsx#L34-L59)
- Cell tests explicitly cover Success with populated fields and the case where a later field contains data while the first field is empty. — [packages/web/src/components/cell/createCell.test.tsx#L34-59](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/components/cell/createCell.test.tsx#L34-L59) [packages/web/src/components/cell/createCell.test.tsx#L62-100](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/components/cell/createCell.test.tsx#L62-L100)
- lambdaLoader tests set RWJS_CWD to a fixture, reset LAMBDA_FUNCTIONS after each test, and assert function discovery, GraphQL ordering, and warning behavior for missing handlers. — [packages/api-server/src/__tests__/lambdaLoader.test.ts#L22-38](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/__tests__/lambdaLoader.test.ts#L22-L38) [packages/api-server/src/__tests__/lambdaLoader.test.ts#L41-83](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/__tests__/lambdaLoader.test.ts#L41-L83)
- Auth-context plugin tests mock getAuthenticationContext, assert currentUser enrichment and argument forwarding, and expect getCurrentUser exceptions to propagate. — [packages/graphql-server/src/plugins/__tests__/useRedwoodAuthContext.test.ts#L14-29](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/plugins/__tests__/useRedwoodAuthContext.test.ts#L14-L29) [packages/graphql-server/src/plugins/__tests__/useRedwoodAuthContext.test.ts#L47-99](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/plugins/__tests__/useRedwoodAuthContext.test.ts#L47-L99)
- Worker.test.ts explicitly mocks Executor and uses MockAdapter; its constructor tests verify option extraction and defaults, without executing real job implementations in those tests. — [packages/jobs/src/core/__tests__/Worker.test.ts#L1-24](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/__tests__/Worker.test.ts#L1-L24) [packages/jobs/src/core/__tests__/Worker.test.ts#L51-59](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/__tests__/Worker.test.ts#L51-L59)
- Signed URL tests cover expiration rejection, URL-encoded paths, wrong signatures, and signing a different file path. — [packages/storage/src/__tests__/signedUrls.test.ts#L23-58](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/storage/src/__tests__/signedUrls.test.ts#L23-L58) [packages/storage/src/__tests__/signedUrls.test.ts#L61-96](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/storage/src/__tests__/signedUrls.test.ts#L61-L96)
- GraphQL-server's Vitest configuration forces graphql/index.js and enables fallbackCJS to avoid loading multiple GraphQL module instances. — [packages/graphql-server/vitest.config.mts#L10-17](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/vitest.config.mts#L10-L17) [packages/graphql-server/vitest.config.mts#L21-35](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/vitest.config.mts#L21-L35)
- Playwright's dev smoke configuration launches a fixture dev server and waits for the API GraphQL endpoint; the shared smoke flow checks blog data, selected CSS, and navigation to About, Contact, and Admin. — [tasks/smoke-tests/dev/playwright.config.ts#L11-24](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/tasks/smoke-tests/dev/playwright.config.ts#L11-L24) [tasks/smoke-tests/dev/tests/dev.spec.ts#L1-5](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/tasks/smoke-tests/dev/tests/dev.spec.ts#L1-L5) [tasks/smoke-tests/shared/common.ts#L4-51](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/tasks/smoke-tests/shared/common.ts#L4-L51)
- simple-ci runs on pull requests and pushes to next/release branches, invokes yarn test-ci, runs Cypress tutorial specs against a generated app, and includes a background-jobs E2E job. — [.github/workflows/simple-ci.yml#L3-6](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/.github/workflows/simple-ci.yml#L3-L6) [.github/workflows/simple-ci.yml#L23-37](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/.github/workflows/simple-ci.yml#L23-L37) [.github/workflows/simple-ci.yml#L66-82](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/.github/workflows/simple-ci.yml#L66-L82) [.github/workflows/simple-ci.yml#L92-119](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/.github/workflows/simple-ci.yml#L92-L119)

## Risk map

The observations below identify security-sensitive boundaries and correctness hotspots in source, not confirmed vulnerabilities. Authentication and filesystem APIs rely on application configuration and authorization decisions, while dynamic module loading trusts installed or compiled code. Several explicit comments document unfinished behavior, including CSRF validation and job runtime enforcement. Runtime severity, exploitability, and whole-repository coverage remain unverified.
- DbAuthHandler._validateCsrf compares the session token to the request header but is explicitly labeled 'not used yet'; login responses nevertheless issue a CSRF token and encrypted session cookie. — [packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L1255-1263](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L1255-L1263) [packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L1525-1536](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts#L1525-L1536)
- useRequireAuth catches authentication errors, clears currentUser, and still calls handlerFn; its development warning instructs applications to call requireAuth inside their own handlers. — [packages/graphql-server/src/functions/useRequireAuth.ts#L59-78](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/functions/useRequireAuth.ts#L59-L78)
- The Lambda GraphQL wrapper logs execution exceptions and returns an error body with statusCode 200, accompanied by a source comment saying it should be 500. — [packages/graphql-server/src/functions/graphql.ts#L125-134](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/functions/graphql.ts#L125-L134)
- Worker awaits Executor.perform in-process and explicitly leaves maxRuntime timeout enforcement as a TODO requiring a separate process; maxRuntime is currently passed to adapter.find. — [packages/jobs/src/core/Worker.ts#L181-198](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/Worker.ts#L181-L198)
- FileSystemStorage.read/remove accept caller-supplied paths directly, and save accepts a path override; these methods contain no local check confining operations to baseDir. — [packages/storage/src/adapters/FileSystemStorage/FileSystemStorage.ts#L24-45](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/storage/src/adapters/FileSystemStorage/FileSystemStorage.ts#L24-L45)
- CLI plugin auto-install defaults to true, and loadPluginPackage can install and dynamically import a configured package; the source also notes installed/requested version mismatch handling is incomplete. — [packages/project-config/src/config.ts#L183-192](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/project-config/src/config.ts#L183-L192) [packages/cli/src/lib/plugin.js#L180-204](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/lib/plugin.js#L180-L204)
- Vite publishes explicitly included and REDWOOD_ENV_ prefixed environment values in browser definitions and HTML substitutions; naming/configuration determines which values cross the server-to-browser boundary. — [packages/vite/src/lib/envVarDefinitions.ts#L29-53](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/src/lib/envVarDefinitions.ts#L29-L53) [packages/vite/src/index.ts#L95-109](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/vite/src/index.ts#L95-L109)
- lambdaLoader keys imported functions by basename and assigns them into a shared registry; hypothesis: two discovered files with the same basename could collide, which should be checked before changing discovery rules. (inferred) — [packages/api-server/src/plugins/lambdaLoader.ts#L18-48](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/plugins/lambdaLoader.ts#L18-L48) [packages/api-server/src/plugins/lambdaLoader.ts#L103-113](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/plugins/lambdaLoader.ts#L103-L113)
- Fastify server setup imports a Babel-generated __rw_graphqlOptions export from the application's compiled GraphQL function; this creates a coupling between the build transform and runtime registration. — [packages/api-server/src/createServer.ts#L128-145](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/createServer.ts#L128-L145) [packages/api-server/src/plugins/graphql.ts#L46-57](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/plugins/graphql.ts#L46-L57)
- The todo fixture retains a GraphQL bootstrap importing makeServices/makeMergedSchema from @redwoodjs/api and passing schema, whereas test-project uses @redwoodjs/graphql-server with sdls/services/loggerConfig; it should not be treated as a current server setup recipe. — [__fixtures__/example-todo-main/api/src/functions/graphql.js#L1-19](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/api/src/functions/graphql.js#L1-L19) [__fixtures__/test-project/api/src/functions/graphql.ts#L1-24](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/test-project/api/src/functions/graphql.ts#L1-L24)
- UrlSigner deliberately supports nonexpiring signatures when no expiresInMs is supplied and compares signatures with ordinary string inequality; expiration and comparison behavior are review points at this access boundary. — [packages/storage/src/UrlSigner.ts#L39-58](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/storage/src/UrlSigner.ts#L39-L58) [packages/storage/src/UrlSigner.ts#L84-98](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/storage/src/UrlSigner.ts#L84-L98)
- Job loaders join stored jobPath to the compiled jobs directory and dynamically import the result; protecting persisted invocation metadata is consequently part of the worker's code-execution trust boundary. — [packages/jobs/src/loaders.ts#L44-62](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/loaders.ts#L44-L62) [packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L185-189](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L185-L189)

## Extension points

The framework exposes explicit extension seams across commands, transport, schema assembly, authentication, jobs, storage, and mail. Most customization is expressed through configuration objects, exported functions, registries, or adapter classes. Build-time transforms provide some runtime metadata, so extensions must respect the compiler/runtime contract. Plugin ordering and package export conditions are especially consequential boundaries.
- New built-in CLI commands plug into the imports and yargs .command registrations in index.js; PLUGIN_CACHE_BUILTIN is a separate list that must remain aligned. — [packages/cli/src/index.js#L202-227](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/index.js#L202-L227) [packages/cli/src/lib/plugin.js#L43-74](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/lib/plugin.js#L43-L74)
- CLI plugins are configured under experimental.cli.plugins, expose plugin.commands, and are registered directly for @redwoodjs or beneath third-party namespaces. — [packages/cli/src/plugin.js#L44-71](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/plugin.js#L44-L71) [packages/cli/src/plugin.js#L241-253](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/plugin.js#L241-L253) [packages/cli/src/plugin.js#L299-320](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/plugin.js#L299-L320)
- createServer accepts configureApiServer, Fastify options, and discovery globs; the generic API plugin executes the custom configuration callback before loading functions. — [packages/api-server/src/createServer.ts#L66-74](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/createServer.ts#L66-L74) [packages/api-server/src/createServer.ts#L117-125](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/createServer.ts#L117-L125) [packages/api-server/src/plugins/api.ts#L60-70](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/plugins/api.ts#L60-L70)
- GraphQL applications extend execution through extraPlugins, custom context, directives, schemaOptions, and subscriptions; createGraphQLYoga inserts extra plugins into its ordered chain. — [packages/graphql-server/src/createGraphQLYoga.ts#L32-55](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/createGraphQLYoga.ts#L32-L55) [packages/graphql-server/src/createGraphQLYoga.ts#L120-157](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/createGraphQLYoga.ts#L120-L157)
- Named service exports implement Query/Mutation/Subscription fields, while other object types use an exported object named after the GraphQL type; explicit SDL resolvers take precedence over inferred service functions. — [packages/graphql-server/src/makeMergedSchema.ts#L91-124](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/makeMergedSchema.ts#L91-L124) [packages/graphql-server/src/makeMergedSchema.ts#L228-244](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/makeMergedSchema.ts#L228-L244)
- Authentication accepts a Decoder or ordered Decoder array and an application getCurrentUser callback, allowing provider verification and application identity lookup to be composed. — [packages/api/src/auth/index.ts#L93-100](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api/src/auth/index.ts#L93-L100) [packages/api/src/auth/index.ts#L151-174](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api/src/auth/index.ts#L151-L174) [packages/graphql-server/src/plugins/useRedwoodAuthContext.ts#L34-46](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/plugins/useRedwoodAuthContext.ts#L34-L46)
- GraphQLHooksProvider is the Cell-compatible client seam, while RedwoodApolloProvider accepts custom cache, cacheConfig, HTTP configuration, fragments, and an ApolloLink or link factory. — [packages/web/src/components/cell/createCell.tsx#L5-8](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/components/cell/createCell.tsx#L5-L8) [packages/web/src/apollo/index.tsx#L90-136](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/apollo/index.tsx#L90-L136) [packages/web/src/apollo/index.tsx#L350-395](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/apollo/index.tsx#L350-L395)
- Router accepts custom paramTypes and useAuth; route Sets supply wrapper components, and PrivateSets add AuthenticatedRoute around the wrapper chain. — [packages/router/src/router.tsx#L27-42](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/src/router.tsx#L27-L42) [packages/router/src/router.tsx#L218-251](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/src/router.tsx#L218-L251)
- JobManager accepts adapter, queue, logger, and worker configurations; createJob defines perform behavior, while name/path are supplied by the build process. — [packages/jobs/src/core/JobManager.ts#L35-47](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/JobManager.ts#L35-L47) [packages/jobs/src/core/JobManager.ts#L70-98](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/JobManager.ts#L70-L98)
- FileSystemStorage subclasses BaseStorageAdapter and overrides save/read/remove; PrismaAdapter subclasses the jobs BaseAdapter and implements persistence operations. — [packages/storage/src/adapters/FileSystemStorage/FileSystemStorage.ts#L9-45](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/storage/src/adapters/FileSystemStorage/FileSystemStorage.ts#L9-L45) [packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L72-95](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L72-L95) [packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L255-269](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L255-L269)
- Mailer configuration supplies named handler and renderer registries with defaults and per-send overrides; Mailer.send delegates rendering and delivery through those interfaces. — [packages/mailer/core/src/mailer.ts#L58-63](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/mailer/core/src/mailer.ts#L58-L63) [packages/mailer/core/src/mailer.ts#L192-247](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/mailer/core/src/mailer.ts#L192-L247)
- Trusted document integration accepts a hash-to-operation store and a configurable allowArbitraryOperations policy, with a built-in exception for the precise Redwood current-user query. — [packages/graphql-server/src/plugins/useRedwoodTrustedDocuments.ts#L17-28](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/plugins/useRedwoodTrustedDocuments.ts#L17-L28) [packages/graphql-server/src/plugins/useRedwoodTrustedDocuments.ts#L43-54](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/plugins/useRedwoodTrustedDocuments.ts#L43-L54) [packages/graphql-server/src/plugins/useRedwoodTrustedDocuments.ts#L57-84](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/plugins/useRedwoodTrustedDocuments.ts#L57-L84)

## Contributor handoff

Begin with the owning package and follow the application's configuration, compiler, and runtime boundaries before editing. The repository contains current implementations alongside legacy fixtures and documentation that can describe different development epochs. Tests and CI were inspected, not executed, and this inventory is bounded; future agents must obtain actual check results under appropriate execution authority. Keep changes small and account for generated metadata, browser environment exposure, and interfaces shared across deployment modes.
- Use the root's Yarn 4.6.0 package-manager declaration and existing Nx scripts as the tooling baseline; the empty-project fixture's Node 14–16/Yarn 1 constraints describe that fixture rather than the root. — [package.json#L45-48](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/package.json#L45-L48) [package.json#L137-138](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/package.json#L137-L138) [__fixtures__/empty-project/package.json#L17-20](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/empty-project/package.json#L17-L20)
- For CLI changes, read index.js, the command module, and its handler first; the dev command illustrates lazy handler import and a documented hidden forwarding option. — [packages/cli/src/index.js#L202-224](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/index.js#L202-L224) [packages/cli/src/commands/dev.js#L9-25](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/dev.js#L9-L25) [packages/cli/src/commands/dev.js#L54-56](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/commands/dev.js#L54-L56)
- For Cell changes, inspect createCell.tsx together with GraphQLHooksProvider-based tests and Apollo defaults, since variables, lifecycle rendering, and cache-and-network behavior cross those boundaries. — [packages/web/src/components/cell/createCell.tsx#L28-64](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/components/cell/createCell.tsx#L28-L64) [packages/web/src/components/cell/createCell.test.tsx#L17-31](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/components/cell/createCell.test.tsx#L17-L31) [packages/web/src/apollo/index.tsx#L297-315](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/web/src/apollo/index.tsx#L297-L315)
- For GraphQL changes, read both createGraphQLHandler and the Fastify GraphQL plugin: Lambda uses yoga.fetch, while the server uses handleNodeRequest and can add realtime plugins. — [packages/graphql-server/src/functions/graphql.ts#L93-106](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/src/functions/graphql.ts#L93-L106) [packages/api-server/src/plugins/graphql.ts#L67-92](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/api-server/src/plugins/graphql.ts#L67-L92)
- Use __fixtures__/test-project/api/src/functions/graphql.ts as the inspected current bootstrap reference; compare older example-todo-main imports before copying them. — [__fixtures__/test-project/api/src/functions/graphql.ts#L1-24](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/test-project/api/src/functions/graphql.ts#L1-L24) [__fixtures__/example-todo-main/api/src/functions/graphql.js#L1-19](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/__fixtures__/example-todo-main/api/src/functions/graphql.js#L1-L19)
- Package export changes need ESM/CommonJS/react-server consideration, and GraphQL test setup contains a deliberate single-module-instance workaround that should not be removed casually. — [packages/router/package.json#L10-20](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/package.json#L10-L20) [packages/router/package.json#L58-70](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/router/package.json#L58-L70) [packages/graphql-server/vitest.config.mts#L21-35](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/vitest.config.mts#L21-L35)
- Under later execution authorization, start with the owning workspace's existing test script, such as yarn workspace @redwoodjs/cli test or yarn workspace @redwoodjs/graphql-server test; root yarn test is the broader Nx suite. — [packages/cli/package.json#L2-3](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/package.json#L2-L3) [packages/cli/package.json#L26-27](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/package.json#L26-L27) [packages/graphql-server/package.json#L2-3](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/package.json#L2-L3) [packages/graphql-server/package.json#L21-22](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/graphql-server/package.json#L21-L22) [package.json#L45-48](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/package.json#L45-L48)
- Tests and CI were inspected, not executed in this briefing; the active workflow's test-ci, tutorial Cypress, and background-job E2E commands are configured checks, not evidence of successful runs. — [.github/workflows/simple-ci.yml#L36-37](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/.github/workflows/simple-ci.yml#L36-L37) [.github/workflows/simple-ci.yml#L71-82](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/.github/workflows/simple-ci.yml#L71-L82) [.github/workflows/simple-ci.yml#L118-119](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/.github/workflows/simple-ci.yml#L118-L119)
- Documentation edits belong in docs/docs rather than generated versioned documentation; the README's separate SDK promotion and aspirational Bighorn section require care when describing implemented capabilities. — [docs/README.md#L15-19](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/docs/README.md#L15-L19) [README.md#L9-26](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/README.md#L9-L26) [README.md#L69-74](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/README.md#L69-L74)
- Framework-to-project synchronization is materially stateful: CONTRIBUTING documents rebuilding, copying dependencies, running installation, copying packages, and watching changes, controlled by RWFW_PATH. — [CONTRIBUTING.md#L110-135](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/CONTRIBUTING.md#L110-L135)
- Read Scheduler, PrismaAdapter, Worker, Executor, and loaders before altering jobs: persisted handler JSON, conditional locking, retries, and compiled module paths jointly define the execution contract. — [packages/jobs/src/core/Scheduler.ts#L69-98](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/Scheduler.ts#L69-L98) [packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L167-189](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/adapters/PrismaAdapter/PrismaAdapter.ts#L167-L189) [packages/jobs/src/core/Executor.ts#L62-93](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/core/Executor.ts#L62-L93) [packages/jobs/src/loaders.ts#L44-62](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/jobs/src/loaders.ts#L44-L62)
- Avoid exploratory CLI execution during source-only audits: CLI startup loads application environment files and starts telemetry unless disabled, while plugin loading can install packages and write commandCache.json. — [packages/cli/src/index.js#L63-72](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/index.js#L63-L72) [packages/cli/src/index.js#L102-112](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/index.js#L102-L112) [packages/cli/src/lib/plugin.js#L115-124](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/lib/plugin.js#L115-L124) [packages/cli/src/lib/plugin.js#L180-204](https://github.com/redwoodjs/redwood/blob/a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd/packages/cli/src/lib/plugin.js#L180-L204)

Source repository: https://github.com/redwoodjs/redwood
Full evidence corpus: https://github.com/Codevetter/codevetter/tree/main/benchmarks/repo-unpacks/redwood.json

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
