# Contributor handoff — keystonejs/keystone

> Canonical page: https://codevetter.com/unpack/keystone/agent-handoff

# Contributor handoff — keystonejs/keystone

Scanned commit 1a8f2b7fae39ea5dac415745caea4f766109e669 (2026-09-14). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Begin with the owning package and relevant example, then trace configuration, generated schemas, request context, and persistence together. Tests and CI were inspected, not executed; future validation must distinguish selected test commands from actual results and use disposable databases. Keep source edits small, preserve generated/public API boundaries, and treat this inventory as bounded rather than exhaustive.
- Use the pinned pnpm version and workspace catalog; read root scripts before invoking checks because postinstall runs Preconstruct setup and recursive package checks. — [package.json#L10-26](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/package.json#L10-L26) [pnpm-workspace.yaml#L14-37](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/pnpm-workspace.yaml#L14-L37)
- For runtime changes, read schema.ts, getContext.ts, createContext.ts, and Express startup together: defaults, dual schemas, client construction, and request-session ownership reside in different modules. — [packages/core/src/schema.ts#L145-190](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/core/src/schema.ts#L145-L190) [packages/core/src/lib/getContext.ts#L77-107](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/core/src/lib/getContext.ts#L77-L107) [packages/core/src/lib/context/createContext.ts#L105-125](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/core/src/lib/context/createContext.ts#L105-L125) [packages/core/src/lib/express.ts#L93-100](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/core/src/lib/express.ts#L93-L100)
- Change schema generators/configuration rather than generated GraphQL, Prisma, type, or Admin output; frozen builds compare generated schemas to files, and non-live UI generation removes prior output except .next. — [packages/core/src/artifacts.ts#L16-21](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/core/src/artifacts.ts#L16-L21) [packages/core/src/artifacts.ts#L34-53](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/core/src/artifacts.ts#L34-L53) [packages/core/src/artifacts.ts#L76-98](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/core/src/artifacts.ts#L76-L98) [packages/core/src/admin-ui/system/generateAdminUI.ts#L62-75](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/core/src/admin-ui/system/generateAdminUI.ts#L62-L75)
- Keep internal(), sudo(), query, db, and Prisma semantics separate; schema omission and permission bypass are distinct switches, and direct Prisma operations do not inherit the example's Keystone access checks. — [packages/core/src/lib/context/createContext.ts#L123-141](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/core/src/lib/context/createContext.ts#L123-L141) [packages/core/src/lib/context/api.ts#L10-18](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/core/src/lib/context/api.ts#L10-L18) [examples/actions/schema.ts#L68-81](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/examples/actions/schema.ts#L68-L81)
- For authorized validation, select existing scripts or focused suites first: document edits use test:vitest, access changes use test:node/API tests, and Admin UI behavior uses test:admin-ui. These commands and CI were inspected, not executed here. — [package.json#L11-18](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/package.json#L11-L18) [.github/workflows/tests_ci.yml#L60-72](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/.github/workflows/tests_ci.yml#L60-L72) [.github/workflows/tests_ci.yml#L95-115](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/.github/workflows/tests_ci.yml#L95-L115) [.github/workflows/tests_ci.yml#L213-229](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/.github/workflows/tests_ci.yml#L213-L229)
- Use disposable database targets for tests: tests2 selects provider from DATABASE_URL, creates temporary project directories and isolated database locations, then generates artifacts/client and pushes Prisma schema. — [tests2/utils.ts#L27-46](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/tests2/utils.ts#L27-L46) [tests2/utils.ts#L61-89](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/tests2/utils.ts#L61-L89) [tests2/utils.ts#L92-107](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/tests2/utils.ts#L92-L107) [tests2/utils.ts#L136-147](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/tests2/utils.ts#L136-L147)
- Editor work should follow the architecture guide's normalization and rendering conventions: avoid reactive Slate hooks in element/leaf renderers, derive toolbar state centrally, and assert editor structure with snapshots. — [packages/fields-document/ARCHITECTURE.md#L42-47](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/fields-document/ARCHITECTURE.md#L42-L47) [packages/fields-document/ARCHITECTURE.md#L49-62](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/fields-document/ARCHITECTURE.md#L49-L62) [packages/fields-document/ARCHITECTURE.md#L95-101](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/fields-document/ARCHITECTURE.md#L95-L101)
- Before using examples as implementation templates, reconcile magic-link password metadata with core's KDF API and review lifecycle compatibility: bulk mutation errors deliberately preserve input ordering for legacy test expectations. — [examples/auth-magic-link/schema.ts#L165-181](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/examples/auth-magic-link/schema.ts#L165-L181) [packages/core/src/fields/types/password/index.ts#L223-240](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/core/src/fields/types/password/index.ts#L223-L240) [packages/core/src/lib/core/mutations/index.ts#L668-681](https://github.com/keystonejs/keystone/blob/1a8f2b7fae39ea5dac415745caea4f766109e669/packages/core/src/lib/core/mutations/index.ts#L668-L681)

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)
