CodeVetter · Repo Unpack · Contributor handoff
adonisjs/core
Work from the pinned source and preserve the boundary between local integration code and dependency-owned implementations. Read lifecycle, provider, and service files together before changing startup or container behavior. Generator changes require reviewing commands, codemods, templates, generated types, and package output configuration as appropriate. Tests and CI were inspected, not executed; this report is a bounded source investigation and supplies no passing-test evidence. Future verification must respect authorization because some repository tests install packages, write fixtures, and open listeners.
- Read package.json, index.ts, Ignitor, and AppServiceProvider first for public exports, application creation, and baseline service registration; these files define the primary integration boundaries.
- Preserve the shared-application initialization order and booted service resolution; services/server.ts and services/encryption.ts use top-level await to resolve bindings through app.booted.
- Follow the npm lockfile and existing scripts: quick:test is the direct Japa entrypoint, lint runs eslint, typecheck runs tsc --noEmit, and npm test adds lint plus debug-enabled runner execution.
- Tests and CI were inspected, not executed in this investigation. Their source describes intended checks and assertions, not observed successful results.
- Use task-specific specs as initial verification candidates when execution is authorized: HTTP/Ace lifecycle specs for process edits, controller command specs for scaffolding, and codegen specs for generated-output ordering.
- Account for test side effects before executing: Codemods installation tests fetch dependencies, HTTP tests bind ports and mutate process environment, and Ace lifecycle tests manipulate process.exitCode.
- Preserve mixed .ts/.js import conventions in context: tsconfig enables TypeScript import extensions and rewriting, while source tests explicitly avoid public provider exports that resolve to unavailable build output.
- For generator changes, edit the command and stub deliberately rather than generated application files; generation calculates destinations in templates and defaults to overwriteExisting=false.
- For codegen changes, preserve indexes-before-boot and router-commit-before-types ordering; maintain JSON serialization parity between standalone codegen and development route handoff.
- Cryptographic adapter changes should retain Legacy cross-version decoding and purpose semantics; relevant specs compare both old-to-new and new-to-old encryption.
- Respect repository formatting configuration: two-space LF text, shared AdonisJS ESLint/Prettier presets, and inherited package TypeScript settings. Broader compiler and lint behavior resides in external presets.
- The publish path has concrete artifact requirements: copied stubs, generated commands/main.js and commands.json, package export targets, and separate TypeScript declarations. A source-only change should be assessed against these boundaries before any authorized release.