# Behavior traces — redwoodjs/redwood

> Canonical page: https://codevetter.com/unpack/redwood/behavior-traces

# Behavior traces — redwoodjs/redwood

Scanned commit a7852fb92d0e4ac2bcce1d9a755717ba6cf53ffd (2025-12-13). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

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)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

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