# adonisjs/core — codebase unpack

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

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

- Scanned commit: e1b2357eacc2e8e72e0815abbc5f2e94264acffb (2026-10-01)
- Last upstream commit: feat(codemods): add import alias and directory helpers (#5151)
- Generated by codevetter 1.15.0 on 2026-10-02
- 230 files scanned · 683 KB

Source inspection; upstream code and tests were not executed.

## Languages

- TypeScript: 194 files
- YAML: 6 files
- JSON: 4 files
- Markdown: 2 files
- JavaScript: 1 files

## Repository structure

- tests/ — 58 files
- modules/ — 40 files
- commands/ — 25 files
- src/ — 22 files
- stubs/ — 21 files
- types/ — 14 files
- services/ — 13 files
- factories/ — 12 files

Probable source entrypoint: `index.ts` (inferred from the tree, not upstream docs)

## Source layout — src/

- src/assembler_hooks/ — 1 file
- src/cli_formatters/ — 1 file
- src/helpers/ — 8 files
- src/ignitor/ — 4 files
- src/test_utils/ — 2 files
- src/config_provider.ts — 1 file
- src/debug.ts — 1 file
- src/exceptions.ts — 1 file
- src/types.ts — 1 file
- src/utils.ts — 1 file
- src/vine.ts — 1 file

## Package

- package.json: @adonisjs/core v7.5.2 — 63 declared dependencies

## Structural health signals

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

## Recent history

- e1b2357eacc2 (2026-10-01) feat(codemods): add import alias and directory helpers (#5151)
- 7eeff6a8da6e (2026-09-23) chore(release): 7.5.2
- 184621fc5e30 (2026-09-23) fix: fail the build when commands index generation fails
- 2b10591a1c6b (2026-09-23) chore: update dependencies
- 4dc76eda6847 (2026-09-23) chore(release): 7.5.1

## Overview

@adonisjs/core 7.5.2 is the TypeScript integration layer for AdonisJS, a Node.js framework for web applications and services. It connects application lifecycle management, dependency injection, HTTP handling, validation, encryption, templates, and developer commands through providers and stable package exports. Distinctive features include lazy command loading, configurable scaffolding, generated route and transformer types, and machine-oriented CLI output.

## System map

The repository packages the integration surface of AdonisJS rather than implementing every framework subsystem locally. Ignitor creates web, console, and test processes, while providers register the services those processes consume. Package exports separate public modules, service facades, providers, factories, helpers, and commands. Persistent outputs inspected here are generated application files and development artifacts; token persistence is delegated to consumers. Distribution and release are centered on an npm ESM package.
- The package is @adonisjs/core 7.5.2, requires Node >=24.0.0, uses ESM, and publishes build output while excluding built tests and bin files. — [package.json#L2-17](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L2-L17)
- index.ts exports Ignitor, prettyPrintError, inject, configProvider, indexEntities, and stubsRoot, and aggregates errors from the application, HTTP, encryption, Ace, and environment packages. — [index.ts#L10-35](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/index.ts#L10-L35)
- Public subpath exports expose commands, factories, services, providers, helpers, lifecycle entrypoints, drivers, and framework modules through compiled build paths. — [package.json#L18-64](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L18-L64)
- Application and HTTP primitives are re-exported from @adonisjs/application and @adonisjs/http-server; the HTTP wrapper also loads bodyparser augmentation and exports the local RequestValidator. — [modules/app.ts#L10-27](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/app.ts#L10-L27) [modules/http/main.ts#L10-16](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/http/main.ts#L10-L16)
- Ignitor creates Application with an environment and optional importer, sets the shared app service, runs tap callbacks, and constructs HttpServerProcess, AceProcess, or TestRunnerProcess. — [src/ignitor/main.ts#L94-100](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/main.ts#L94-L100) [src/ignitor/main.ts#L108-132](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/main.ts#L108-L132)
- AppServiceProvider.register wires application, Ace, dumper, logger, config, events, encryption, test utilities, server, router, and bodyparser bindings; its boot hook assigns the emitter to BaseEvent. — [providers/app_provider.ts#L338-365](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/app_provider.ts#L338-L365)
- The framework Server singleton receives application, default Encryption, emitter, logger, and app.http configuration; Router resolves to that server's router. — [providers/app_provider.ts#L216-244](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/app_provider.ts#L216-L244)
- The inspected storage boundaries include generated route declarations and JSON, scaffold destinations, and REPL history under the user's home directory. — [src/utils.ts#L38-58](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/utils.ts#L38-L58) [providers/app_provider.ts#L307-319](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/app_provider.ts#L307-L319) [modules/ace/codemods.ts#L660-672](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/codemods.ts#L660-L672) [providers/repl_provider.ts#L79-85](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/repl_provider.ts#L79-L85)
- npm run compile cleans build, runs tsdown and declaration-only tsc; postcompile copies stub templates and indexes commands. The test script invokes Japa through @poppinss/ts-exec. — [package.json#L66-84](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L66-L84)
- The package binary adonis-kit constructs an Ace kernel containing IndexCommand, which generates a lazy command index from a directory relative to cwd. — [package.json#L15-17](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L15-L17) [toolkit/main.ts#L12-34](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/toolkit/main.ts#L12-L34) [toolkit/commands/index_commands.ts#L14-25](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/toolkit/commands/index_commands.ts#L14-L25)
- Release CI waits for checks, uses the npm-publish environment with contents and OIDC write permissions, installs with npm ci --ignore-scripts, audits signatures, verifies generated command artifacts, and invokes release-it. — [.github/workflows/release.yml#L18-50](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/.github/workflows/release.yml#L18-L50) [package.json#L280-295](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L280-L295)

## Feature catalog

The developer-facing product includes application startup APIs, scaffolding, package configuration, inspection commands, development serving, production builds, and test orchestration. HTTP integrations add VineJS request validation and Edge rendering to dependency-provided request and routing APIs. Security utilities include configurable hash and encryption drivers and verification-token helpers. Generated declarations connect server routes and transformers to application type checking. This catalog reflects the inspected public surfaces, not exhaustive dependency behavior.
- serve supports watch, HMR, polling, and terminal clearing; it rejects simultaneous watch and HMR and delegates startup to assembler.DevServer. — [commands/serve.ts#L124-145](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/serve.ts#L124-L145) [commands/serve.ts#L169-176](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/serve.ts#L169-L176)
- build delegates production compilation to assembler.Bundler with RC hooks and meta files, optional tsconfig and package manager, and an ignore-ts-errors switch. — [commands/build.ts#L91-126](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/build.ts#L91-L126)
- codegen refreshes generated indexes and route declarations through assembler.CodeGen and warms the app in the web environment without starting an HTTP listener. — [commands/codegen.ts#L80-103](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/codegen.ts#L80-L103) [commands/codegen.ts#L109-133](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/codegen.ts#L109-L133)
- test exposes suite, file, tag, group, title, reporter, timeout, retry, failed-test, watch, and polling controls, then passes these to assembler.TestRunner. — [commands/test.ts#L200-226](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/test.ts#L200-L226) [commands/test.ts#L250-256](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/test.ts#L250-L256)
- add installs multiple packages before configuring them sequentially, recognizes vinejs and edge shorthand names, and reports partial configuration failures; configure supports built-in VineJS, Edge, and health_checks setup plus package-exported hooks. — [commands/add.ts#L87-95](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/add.ts#L87-L95) [commands/add.ts#L119-169](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/add.ts#L119-L169) [commands/configure.ts#L161-205](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/configure.ts#L161-L205)
- list:routes offers keyword and middleware filters, ANSI list/table, JSON, and JSONL output; AI-agent mode defaults to JSONL unless JSON or table is explicitly requested. inspect:rcfile prints resolved RC settings with module entries stringified. — [commands/list/routes.ts#L103-150](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/list/routes.ts#L103-L150) [commands/inspect_rcfile.ts#L39-64](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/inspect_rcfile.ts#L39-L64)
- generate:key creates a 32-character APP_KEY, normally writes outside production, honors force, and lets show override writing; env:add prompts for values and adds a normalized variable plus its validation schema. — [commands/generate_key.ts#L52-70](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/generate_key.ts#L52-L70) [commands/env/add.ts#L96-160](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/env/add.ts#L96-L160)
- make:controller supports custom actions, resource/API variants, singular naming, force, and contents-from. make:validator, make:view, and make:transformer also generate entities through configurable stubs. — [commands/make/controller.ts#L106-159](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/controller.ts#L106-L159) [commands/make/validator.ts#L96-111](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/validator.ts#L96-L111) [commands/make/view.ts#L65-80](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/view.ts#L65-L80) [commands/make/transformer.ts#L75-92](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/transformer.ts#L75-L92)
- make:command, make:service, make:event, and make:exception each pass parsed flags and an application-generated entity into Codemods.makeUsingStub, with overwrite and replacement-content options. — [commands/make/command.ts#L66-81](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/command.ts#L66-L81) [commands/make/service.ts#L66-81](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/service.ts#L66-L81) [commands/make/event.ts#L74-89](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/event.ts#L74-L89) [commands/make/exception.ts#L74-89](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/exception.ts#L74-L89)
- make:listener can create its associated event first; make:middleware generates and registers middleware in server/router/named stacks; make:preload and make:provider optionally register environment-scoped RC entries. — [commands/make/listener.ts#L94-123](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/listener.ts#L94-L123) [commands/make/middleware.ts#L78-105](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/middleware.ts#L78-L105) [commands/make/preload.ts#L148-159](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/preload.ts#L148-L159) [commands/make/provider.ts#L146-157](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/provider.ts#L146-L157)
- make:test selects a configured suite and destination directory; eject copies package scaffolding templates into the application for customization. — [commands/make/test.ts#L140-172](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/test.ts#L140-L172) [commands/eject.ts#L57-65](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/eject.ts#L57-L65)
- repl boots the application and stays alive until REPL exit; its provider adds importDefault, importAll, make, service-loading helpers, and persistent history. — [commands/repl.ts#L40-55](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/repl.ts#L40-L55) [providers/repl_provider.ts#L79-85](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/repl_provider.ts#L79-L85) [providers/repl_provider.ts#L102-134](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/repl_provider.ts#L102-L134) [providers/repl_provider.ts#L136-193](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/repl_provider.ts#L136-L193)
- Edge integration mounts application views, enables production caching, supplies route/config/query helpers, creates request-scoped renderers, and adds BriskRoute.render. — [providers/edge_provider.ts#L128-168](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/edge_provider.ts#L128-L168) [providers/edge_provider.ts#L212-234](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/edge_provider.ts#L212-L234)
- VineJS integration provides request.validateUsing, request.tryValidateUsing, and vine.file; multipart validation applies size/extension options and reports bodyparser file errors. — [providers/vinejs_provider.ts#L67-86](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/vinejs_provider.ts#L67-L86) [src/vine.ts#L40-84](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/vine.ts#L40-L84)
- Additional public APIs include Argon2/bcrypt/scrypt configuration, five encryption driver factories including v6 Legacy compatibility, verification tokens, HTML/ANSI dumping, synthetic HTTP contexts, and re-exported health and transformer primitives. — [modules/hash/define_config.ts#L146-171](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/hash/define_config.ts#L146-L171) [modules/encryption/define_config.ts#L237-290](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/encryption/define_config.ts#L237-L290) [package.json#L28-64](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L28-L64) [src/test_utils/main.ts#L62-91](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/test_utils/main.ts#L62-L91)

## Data flow

Application-root URLs and RC configuration feed lifecycle creation and lazy container bindings. Incoming HTTP traffic crosses from a Node server into the dependency-provided framework handler, while local validation adapters assemble request data for VineJS. CLI inputs become command state, generated entities, AST transformations, or assembler operations. Development routing data is written to disk and announced to the parent process; standalone codegen passes equivalent serialized routes in memory. Verification tokens separate public secrets from hashes intended for consumer-owned persistence.
- Ignitor passes appRoot, environment, and importer into Application, then publishes the instance through setApp before running tap callbacks. — [src/ignitor/main.ts#L94-100](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/main.ts#L94-L100) [services/app.ts#L22-26](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/services/app.ts#L22-L26)
- Encryption configuration flows from app.config.get('encryption') through configProvider.resolve into EncryptionManager; the default Encryption class binding calls manager.use(). — [providers/app_provider.ts#L181-202](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/app_provider.ts#L181-L202)
- HTTP requests and responses enter server.handle through a bound Node HTTP handler; the framework server retains the Node server through setNodeServer. — [src/ignitor/http.ts#L171-179](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/http.ts#L171-L179)
- RequestValidator spreads request.all() first, then assigns params, headers, and cookies from their request APIs, making these reserved fields override same-named body properties. — [modules/http/request_validator.ts#L59-67](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/http/request_validator.ts#L59-L67)
- Validation options receive request-specific defaults only when caller overrides are missing; options.data replaces automatic request assembly before validate or tryValidate receives the data. — [modules/http/request_validator.ts#L69-89](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/http/request_validator.ts#L69-L89) [modules/http/request_validator.ts#L124-153](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/http/request_validator.ts#L124-L153)
- Multipart schema values are checked for the isMultipartFile marker; configured limits fill missing file limits, file.validate runs, and file.errors are translated into VineJS reports. — [src/vine.ts#L28-30](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/vine.ts#L28-L30) [src/vine.ts#L49-84](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/vine.ts#L49-L84)
- Controller CLI input becomes an entity through app.generators.createEntity; the selected stub calculates class/file names and exports its destination through app.httpControllersPath before stub generation writes it. — [commands/make/controller.ts#L144-159](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/controller.ts#L144-L159) [stubs/make/controller/main.stub#L1-11](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/stubs/make/controller/main.stub#L1-L11) [modules/ace/codemods.ts#L634-660](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/codemods.ts#L634-L660)
- Committed router state feeds router.generateTypes(2), which is written as ScannedRoutes plus RoutesList augmentation; development output also serializes router.toJSON and notifies the parent of routesFileLocation. — [src/utils.ts#L38-58](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/utils.ts#L38-L58) [providers/app_provider.ts#L307-319](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/app_provider.ts#L307-L319)
- Standalone codegen JSON-round-trips router.toJSON to discard closure handlers and unserializable properties, then returns that route shape to the assembler callback. — [commands/codegen.ts#L87-103](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/codegen.ts#L87-L103) [commands/codegen.ts#L127-131](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/codegen.ts#L127-L131)
- Edge clientRoutes exports only named routes and selects domain, methods, pattern, tokens, and name; routesJSON turns this selected structure into JSON. — [providers/edge_provider.ts#L105-122](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/edge_provider.ts#L105-L122) [providers/edge_provider.ts#L148-152](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/edge_provider.ts#L148-L152)
- VerificationToken.seed returns a Secret and SHA-256 hash; transient tokens add userId and expiration, computeValue encodes identifier and secret, and verify compares a recomputed hash without performing persistence itself. — [src/helpers/verification_token.ts#L81-105](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/helpers/verification_token.ts#L81-L105) [src/helpers/verification_token.ts#L145-167](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/helpers/verification_token.ts#L145-L167)

## Behavior traces

The principal flows were followed across entrypoints, providers, adapters, and output code. HTTP startup establishes lifecycle and dependency ordering before listening. Request validation moves from a provider-installed request macro to context-derived data and a compiled VineJS validator. Controller generation moves from Ace dispatch through command lifecycle and stub generation to a destination file. Additional traces cover generated route persistence, codegen ordering, package setup, shutdown, and test startup.
- HTTP startup: Ignitor.httpServer() → HttpServerProcess.start() → Ignitor.createApp('web') → app.init() → app.boot() → app.start(callback) → container.make('server') → server.boot(). — [src/ignitor/main.ts#L116-118](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/main.ts#L116-L118) [src/ignitor/http.ts#L162-172](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/http.ts#L162-L172)
- HTTP listen/readiness: start callback → createHTTPServer(server.handle.bind(server)) → server.setNodeServer → #listen → app.notify → logger.info → emitter.emit('http:server_ready') → #monitorAppAndServer. — [src/ignitor/http.ts#L125-144](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/http.ts#L125-L144) [src/ignitor/http.ts#L178-200](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/http.ts#L178-L200)
- HTTP shutdown: app.terminating callback → #close → nodeHttpServer.close; a post-start server error instead sets process.exitCode=1, logs fatal, and calls app.terminate. — [src/ignitor/http.ts#L52-56](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/http.ts#L52-L56) [src/ignitor/http.ts#L76-88](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/http.ts#L76-L88)
- Ace dispatch: AceProcess.handle(argv) → createApp('console') → app.init → createAceKernel(app, commandName) → bindValue('ace') → loading hook optionally boots/starts the app → configure callback → kernel.handle → conditional termination. — [src/ignitor/ace.ts#L66-94](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/ace.ts#L66-L94) [src/ignitor/ace.ts#L101-120](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/ace.ts#L101-L120)
- Controller scaffolding: BaseCommand.exec hydrates and invokes prepare/run through the container; MakeController.prepare selects main/actions/resource/API stub; run creates Codemods, sets force, builds entity state, and calls makeUsingStub. — [modules/ace/commands.ts#L105-123](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/commands.ts#L105-L123) [commands/make/controller.ts#L106-142](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/controller.ts#L106-L142) [commands/make/controller.ts#L144-159](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/controller.ts#L144-L159)
- Scaffold persistence: makeUsingStub → app.stubs.create → stubs.build → optional readFile/replaceWith → stub.generate → relative destination normalization → skipped/succeeded CLI action. The controller stub sets its output path through exports({to: ...}). — [modules/ace/codemods.ts#L634-672](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/codemods.ts#L634-L672) [stubs/make/controller/main.stub#L1-7](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/stubs/make/controller/main.stub#L1-L7)
- Request validation: VineJSServiceProvider.boot installs HttpRequest.validateUsing → new RequestValidator(request.ctx) → #processValidatorOptions → options.data or #requestData → validator.validate. tryValidateUsing follows the equivalent path with validator.tryValidate. — [providers/vinejs_provider.ts#L80-86](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/vinejs_provider.ts#L80-L86) [modules/http/request_validator.ts#L59-89](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/http/request_validator.ts#L59-L89) [modules/http/request_validator.ts#L124-153](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/http/request_validator.ts#L124-L153)
- Development route persistence: AppServiceProvider.ready checks !inProduction and router.commited → emitRoutes → emitRouteTypes → mkdir/writeFile routes.d.ts → writeFile routes.json → app.notify; failures are caught and logged. — [providers/app_provider.ts#L307-325](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/app_provider.ts#L307-L325) [providers/app_provider.ts#L377-383](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/app_provider.ts#L377-L383) [src/utils.ts#L38-58](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/utils.ts#L38-L58)
- Standalone generation: Codegen.run → importAssembler → new CodeGen with RC hooks → codegen.run callback after index output → #warmUpApp → setEnvironment('web')/setMode('warmup') → boot/warmUp → router.commit → emitRouteTypes → JSON route return. — [commands/codegen.ts#L80-103](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/codegen.ts#L80-L103) [commands/codegen.ts#L109-133](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/codegen.ts#L109-L133) [tests/commands/codegen.spec.ts#L156-191](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/commands/codegen.spec.ts#L156-L191)
- Package setup: Add.run resolves shorthand npm names → createCodemods → installPackages → sequential kernel.exec('configure') → built-in setup or app.import(package) → packageExports.configure(command) → aggregate success/failure reporting. — [commands/add.ts#L101-150](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/add.ts#L101-L150) [commands/add.ts#L154-169](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/add.ts#L154-L169) [commands/configure.ts#L161-205](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/configure.ts#L161-L205)
- Application test startup: TestRunnerProcess.run → createApp('test') → init → boot → start(configure callback) → user test callback; the method does not itself terminate the application. — [src/ignitor/test.ts#L67-73](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/test.ts#L67-L73)

## Testing signals

Tests and CI were inspected, not executed; no passing result or coverage percentage is asserted. The Japa runner discovers repository specs and enables assertion, type, filesystem, and snapshot plugins. Inspected tests cover lifecycle transitions, actual HTTP interactions, validation, scaffolding, codegen order, file-format preservation, and encryption compatibility. Some tests perform real package installation or bind ports, so execution is not purely isolated computation. The inventory and coverage assessment are bounded rather than exhaustive.
- bin/test.ts processes runner arguments, discovers tests/**/*.spec.ts, installs assert/expectTypeOf/fileSystem/snapshot plugins, and calls run; these definitions were inspected without execution. — [bin/test.ts#L1-5](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/bin/test.ts#L1-L5) [bin/test.ts#L20-34](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/bin/test.ts#L20-L34)
- npm test runs lint first and invokes quick:test with NODE_DEBUG=adonisjs:core; quick:test starts bin/test.ts with the TypeScript import hook and --force-exit. — [package.json#L66-83](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L66-L83)
- HTTP lifecycle specs use Supertest against a real started server and assert response content, default port behavior, shutdown, occupied-port rejection, and crash exit status. — [tests/ignitor/http_server_process.spec.ts#L28-57](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/ignitor/http_server_process.spec.ts#L28-L57) [tests/ignitor/http_server_process.spec.ts#L88-118](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/ignitor/http_server_process.spec.ts#L88-L118) [tests/ignitor/http_server_process.spec.ts#L147-185](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/ignitor/http_server_process.spec.ts#L147-L185)
- An Ace regression test exercises a staysAlive command calling app.terminate during run and asserts both process.exitCode=1 and terminated application state. — [tests/ignitor/ace_process.spec.ts#L261-300](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/ignitor/ace_process.spec.ts#L261-L300)
- Validation specs assert required-field error details, successful output and inferred TypeScript type, and tryValidateUsing success/error tuples. — [tests/request_validator.spec.ts#L46-67](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/request_validator.spec.ts#L46-L67) [tests/request_validator.spec.ts#L89-101](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/request_validator.spec.ts#L89-L101) [tests/request_validator.spec.ts#L340-382](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/request_validator.spec.ts#L340-L382)
- Controller command tests compare exact generated contents, verify existing files are skipped, cover singular API/action variants, and exercise absolute contents-from input. — [tests/commands/make_controller.spec.ts#L17-58](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/commands/make_controller.spec.ts#L17-L58) [tests/commands/make_controller.spec.ts#L286-329](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/commands/make_controller.spec.ts#L286-L329) [tests/commands/make_controller.spec.ts#L339-359](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/commands/make_controller.spec.ts#L339-L359)
- Codegen tests check missing-assembler handling, warmed web state, route declaration output without routes.json, and the requirement to generate controller indexes before providers boot. — [tests/commands/codegen.spec.ts#L69-97](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/commands/codegen.spec.ts#L69-L97) [tests/commands/codegen.spec.ts#L119-133](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/commands/codegen.spec.ts#L119-L133) [tests/commands/codegen.spec.ts#L156-191](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/commands/codegen.spec.ts#L156-L191)
- Codemods tests assert CRLF/indentation, minified JSON, BOM preservation, existing-alias immutability, and missing-file errors; installation tests actually request @adonisjs/assembler and assert its node_modules directory. — [tests/ace/codemods.spec.ts#L159-201](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/ace/codemods.spec.ts#L159-L201) [tests/ace/codemods.spec.ts#L204-235](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/ace/codemods.spec.ts#L204-L235) [tests/ace/codemods.spec.ts#L413-442](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/ace/codemods.spec.ts#L413-L442)
- Legacy encryption specs assert rejection of tampered ciphertext, MAC, and IV, cross-decryption with the old v6 encrypter in both directions, and compatible 16-byte ASCII-safe IV encoding. — [tests/encryption/legacy.spec.ts#L101-134](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/encryption/legacy.spec.ts#L101-L134) [tests/encryption/legacy.spec.ts#L234-278](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/encryption/legacy.spec.ts#L234-L278) [tests/encryption/legacy.spec.ts#L307-333](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/encryption/legacy.spec.ts#L307-L333)
- safeTiming tests cover minimum duration, returned values, slow callbacks, early return, and thrown Error objects; the inspected file does not exercise falsy thrown values. Dumper tests exercise HTML, CSP nonce, ANSI output, and dd exceptions, without adversarial title/link inputs in that file. — [tests/safe_timing.spec.ts#L13-84](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/safe_timing.spec.ts#L13-L84) [tests/dumper/dumper.spec.ts#L19-91](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/dumper/dumper.spec.ts#L19-L91)
- CI definitions were inspected, not executed: checks delegates test, lint, and typecheck jobs; test.yml runs npm test on Linux and Windows with lts/krypton and latest Node, while release verifies built command files. — [.github/workflows/checks.yml#L9-19](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/.github/workflows/checks.yml#L9-L19) [.github/workflows/test.yml#L19-44](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/.github/workflows/test.yml#L19-L44) [.github/workflows/test.yml#L46-72](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/.github/workflows/test.yml#L46-L72) [.github/workflows/release.yml#L44-48](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/.github/workflows/release.yml#L44-L48)
- c8 configuration lists text/html reporters and excludes tests, build, factories, and .yalc; the inspected npm test and CI test commands do not invoke c8 or specify a coverage threshold. — [package.json#L67-83](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L67-L83) [package.json#L209-219](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L209-L219) [.github/workflows/test.yml#L40-44](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/.github/workflows/test.yml#L40-L44)

## Risk map

These are source observations and explicitly labeled hypotheses, not confirmed vulnerabilities. Sensitive boundaries include network listeners, package installation and hooks, arbitrary replacement-file reads, generated-file writes, home-directory REPL history, cryptographic compatibility, and diagnostic HTML. Lifecycle and generated-artifact ordering create broad coupling between providers, services, and developer tooling. No exploit, production configuration, dependency implementation, or runtime outcome was verified.
- HTTP startup binds HOST or 0.0.0.0 and PORT or 3333 using Node createServer by default; a caller-supplied server factory is the local hook for HTTPS or other server customization. — [src/ignitor/http.ts#L97-112](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/http.ts#L97-L112) [src/ignitor/http.ts#L152-163](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/http.ts#L152-L163)
- generate:key can write APP_KEY through EnvEditor or print it to logs; --force permits production writes and --show overrides force. This is a sensitive operator command, not an inspected secret file. — [commands/generate_key.ts#L52-70](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/generate_key.ts#L52-L70)
- Codemods.makeUsingStub intentionally accepts absolute contents-from paths and reads their UTF-8 contents; generation also supports forced replacement of destination files. — [modules/ace/codemods.ts#L641-660](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/codemods.ts#L641-L660) [commands/make/controller.ts#L144-158](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/controller.ts#L144-L158)
- add crosses a package-installation boundary through assembler CodeTransformer.installPackage and then executes imported package configure hooks with the command object. Shell/process details belong to the assembler dependency and were not established here. — [modules/ace/codemods.ts#L710-733](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/codemods.ts#L710-L733) [commands/configure.ts#L172-200](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/configure.ts#L172-L200)
- The REPL provider stores history at homedir()/.adonisjs_v6_repl_history and exposes module import and container construction helpers, making it a privileged local development surface outside the application root. — [providers/repl_provider.ts#L79-85](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/repl_provider.ts#L79-L85) [providers/repl_provider.ts#L102-134](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/repl_provider.ts#L102-L134)
- Ignitor explicitly assumes one entrypoint creates the application per process; setApp overwrites shared module state and service facades resolve through that shared app's boot hook. — [src/ignitor/main.ts#L47-55](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/main.ts#L47-L55) [services/app.ts#L22-26](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/services/app.ts#L22-L26) [services/server.ts#L19-23](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/services/server.ts#L19-L23)
- configProvider.resolve checks only that an object has a type property before calling resolver; it does not locally check type==='provider' or resolver callability. — [src/config_provider.ts#L69-74](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/config_provider.ts#L69-L74) [src/types.ts#L52-56](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/types.ts#L52-L56)
- Optional-import helpers swallow import errors, and Codemods.#getCodeTransformer also catches all initialization errors; broken packages can therefore reach the same missing-dependency path as unavailable packages. — [src/utils.ts#L75-103](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/utils.ts#L75-L103) [modules/ace/codemods.ts#L100-110](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/codemods.ts#L100-L110)
- Route generation requires committed routes and correctly ordered generated indexes; development emitRoutes catches write failures and continues after logging, while standalone codegen depends on indexes existing before boot. — [src/utils.ts#L26-27](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/utils.ts#L26-L27) [providers/app_provider.ts#L307-325](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/app_provider.ts#L307-L325) [commands/codegen.ts#L127-131](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/codegen.ts#L127-L131)
- Legacy encryption intentionally preserves v6 string-IV and ciphertext formatting, verifies HMAC before decryption, and rejects blind-index operations; edits have a compatibility blast radius documented by cross-version tests. — [modules/encryption/drivers/legacy.ts#L121-142](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/encryption/drivers/legacy.ts#L121-L142) [modules/encryption/drivers/legacy.ts#L169-207](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/encryption/drivers/legacy.ts#L169-L207) [tests/encryption/legacy.spec.ts#L234-278](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/encryption/legacy.spec.ts#L234-L278)
- Hypothesis requiring targeted verification: diagnostic HTML could be unsafe if callers supply untrusted titles, source metadata, editor templates, or CSP nonces, because these wrapper values are directly interpolated into HTML. The inspected tests use ordinary values and do not establish exploitability. (inferred) — [modules/dumper/dumper.ts#L127-135](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/dumper/dumper.ts#L127-L135) [modules/dumper/dumper.ts#L188-196](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/dumper/dumper.ts#L188-L196) [modules/dumper/dumper.ts#L228-236](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/dumper/dumper.ts#L228-L236) [tests/dumper/dumper.spec.ts#L27-59](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/dumper/dumper.spec.ts#L27-L59)
- Hypothesis requiring a regression test: safeTiming may resolve after a callback throws null, false, 0, or an empty string because it rethrows only when caughtError is truthy; inspected error tests throw Error objects. (inferred) — [src/helpers/safe_timing.ts#L49-69](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/helpers/safe_timing.ts#L49-L69) [tests/safe_timing.spec.ts#L58-82](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/safe_timing.spec.ts#L58-L82)
- The route formatter's keyword-match branches return true independently of allowRoute, so supplying a keyword can bypass an earlier middleware-filter rejection in this local filtering function. This is an inspection-output behavior observation, not evidence of an authorization bypass. — [src/cli_formatters/routes_list.ts#L119-178](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/cli_formatters/routes_list.ts#L119-L178)

## Extension points

Extension is organized around application providers, container bindings, command loaders, macros, configuration factories, and assembler hooks. Types expose open interfaces for application-specific services and registries. Stubs and codemods let packages add generated entities and modify consumer applications. The public export map and compiled command index connect these extension mechanisms to package distribution.
- Ignitor.tap provides application setup callbacks and IgnitorOptions.importer allows custom module resolution during Application construction. — [src/ignitor/main.ts#L94-110](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/main.ts#L94-L110) [src/types.ts#L67-70](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/types.ts#L67-L70)
- HttpServerProcess.start accepts a factory receiving the framework request handler and returning a Node HTTP or HTTPS server. — [src/ignitor/http.ts#L152-179](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/http.ts#L152-L179)
- Ace loads RC command modules through callable or string import loaders and supplements them with FsLoader over app.commandsPath; a known already-registered command can skip application command metadata loading. — [modules/ace/create_kernel.ts#L42-64](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/create_kernel.ts#L42-L64)
- BaseCommand subclasses declare options and lifecycle methods; exec invokes prepare, interact, run, and completed through container.call, enabling dependency injection into command hooks. — [modules/ace/commands.ts#L34-53](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/commands.ts#L34-L53) [modules/ace/commands.ts#L105-138](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/commands.ts#L105-L138)
- Package configure hooks receive the Configure command, including parsedArgs, parsedFlags, optional package stubsRoot, and a Codemods instance configured for force/verbose behavior. — [commands/configure.ts#L53-61](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/configure.ts#L53-L61) [commands/configure.ts#L150-154](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/configure.ts#L150-L154) [commands/configure.ts#L192-200](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/configure.ts#L192-L200)
- Codemods exposes AST extension methods for middleware, policies, RC settings, Vite and Japa plugins, validators, limiters, model mixins, and controller methods through assembler CodeTransformer. — [modules/ace/codemods.ts#L309-320](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/codemods.ts#L309-L320) [modules/ace/codemods.ts#L378-389](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/codemods.ts#L378-L389) [modules/ace/codemods.ts#L445-456](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/codemods.ts#L445-L456) [modules/ace/codemods.ts#L587-598](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/codemods.ts#L587-L598)
- indexEntities returns an assembler init hook with configurable sources, aliases, globs, skipped segments, enablement, transformer shared props, and manifest exclusions. — [src/assembler_hooks/index_entities.ts#L53-114](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/assembler_hooks/index_entities.ts#L53-L114) [src/types.ts#L310-371](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/types.ts#L310-L371)
- Hash defineConfig accepts direct driver factories or configuration providers; encryption defineConfig accepts concrete configurations or providers, and BaseDriver is exported for custom encryption drivers. — [modules/hash/define_config.ts#L93-115](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/hash/define_config.ts#L93-L115) [modules/encryption/define_config.ts#L114-133](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/encryption/define_config.ts#L114-L133) [modules/encryption/main.ts#L64-82](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/encryption/main.ts#L64-L82)
- EventsList, LoggersList, HashersList, EncryptorsList, and ContainerBindings are exported interfaces intended for type augmentation; generated route declarations augment RoutesList. — [src/types.ts#L86-107](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/types.ts#L86-L107) [src/types.ts#L130-165](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/types.ts#L130-L165) [src/types.ts#L257-282](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/types.ts#L257-L282) [src/utils.ts#L51-56](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/utils.ts#L51-L56)
- Vine and HttpRequest are extended with macros; Edge extends HttpContext through a view getter and BriskRoute through render, while RequestValidator exposes static per-request reporter and message-provider factories. — [providers/vinejs_provider.ts#L72-86](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/vinejs_provider.ts#L72-L86) [providers/edge_provider.ts#L212-231](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/edge_provider.ts#L212-L231) [modules/http/request_validator.ts#L48-57](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/http/request_validator.ts#L48-L57)
- Local scaffold customization is supported by eject and app.stubs.build; new public module surfaces also require coordination with package exports and tsdown entry configuration. — [commands/eject.ts#L57-65](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/eject.ts#L57-L65) [modules/ace/codemods.ts#L634-635](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/codemods.ts#L634-L635) [package.json#L18-35](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L18-L35) [package.json#L226-245](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L226-L245)
- TestUtils extends Macroable, and IgnitorFactory supplies merge, preload, core-provider, and core-configuration hooks for constructing test applications. — [src/test_utils/main.ts#L10-31](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/test_utils/main.ts#L10-L31) [factories/core/ignitor.ts#L70-85](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/factories/core/ignitor.ts#L70-L85) [factories/core/ignitor.ts#L108-136](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/factories/core/ignitor.ts#L108-L136) [factories/core/ignitor.ts#L200-216](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/factories/core/ignitor.ts#L200-L216)

## Contributor handoff

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. — [package.json#L18-64](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L18-L64) [index.ts#L16-35](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/index.ts#L16-L35) [src/ignitor/main.ts#L94-100](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/src/ignitor/main.ts#L94-L100) [providers/app_provider.ts#L338-365](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/app_provider.ts#L338-L365)
- 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. — [services/app.ts#L22-26](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/services/app.ts#L22-L26) [services/server.ts#L19-23](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/services/server.ts#L19-L23) [services/encryption.ts#L19-23](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/services/encryption.ts#L19-L23)
- 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. — [package-lock.json#L1-10](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package-lock.json#L1-L10) [package.json#L66-84](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L66-L84)
- Tests and CI were inspected, not executed in this investigation. Their source describes intended checks and assertions, not observed successful results. — [bin/test.ts#L20-34](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/bin/test.ts#L20-L34) [.github/workflows/checks.yml#L9-19](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/.github/workflows/checks.yml#L9-L19) [.github/workflows/test.yml#L40-44](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/.github/workflows/test.yml#L40-L44)
- 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. — [tests/ignitor/http_server_process.spec.ts#L28-57](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/ignitor/http_server_process.spec.ts#L28-L57) [tests/ignitor/ace_process.spec.ts#L261-300](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/ignitor/ace_process.spec.ts#L261-L300) [tests/commands/make_controller.spec.ts#L17-58](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/commands/make_controller.spec.ts#L17-L58) [tests/commands/codegen.spec.ts#L156-191](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/commands/codegen.spec.ts#L156-L191)
- 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. — [tests/ace/codemods.spec.ts#L416-442](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/ace/codemods.spec.ts#L416-L442) [tests/ignitor/http_server_process.spec.ts#L28-57](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/ignitor/http_server_process.spec.ts#L28-L57) [tests/ignitor/ace_process.spec.ts#L261-300](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/ignitor/ace_process.spec.ts#L261-L300)
- 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. — [tsconfig.json#L2-7](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tsconfig.json#L2-L7) [tests/commands/codegen.spec.ts#L24-38](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/commands/codegen.spec.ts#L24-L38)
- For generator changes, edit the command and stub deliberately rather than generated application files; generation calculates destinations in templates and defaults to overwriteExisting=false. — [commands/make/controller.ts#L144-159](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/make/controller.ts#L144-L159) [stubs/make/controller/main.stub#L1-11](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/stubs/make/controller/main.stub#L1-L11) [modules/ace/codemods.ts#L69-73](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/ace/codemods.ts#L69-L73)
- For codegen changes, preserve indexes-before-boot and router-commit-before-types ordering; maintain JSON serialization parity between standalone codegen and development route handoff. — [commands/codegen.ts#L87-103](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/codegen.ts#L87-L103) [commands/codegen.ts#L127-131](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/commands/codegen.ts#L127-L131) [providers/app_provider.ts#L311-319](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/providers/app_provider.ts#L311-L319) [tests/commands/codegen.spec.ts#L156-191](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/commands/codegen.spec.ts#L156-L191)
- Cryptographic adapter changes should retain Legacy cross-version decoding and purpose semantics; relevant specs compare both old-to-new and new-to-old encryption. — [modules/encryption/drivers/legacy.ts#L121-142](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/encryption/drivers/legacy.ts#L121-L142) [modules/encryption/drivers/legacy.ts#L169-193](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/modules/encryption/drivers/legacy.ts#L169-L193) [tests/encryption/legacy.spec.ts#L234-299](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tests/encryption/legacy.spec.ts#L234-L299)
- 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. — [.editorconfig#L3-12](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/.editorconfig#L3-L12) [eslint.config.js#L1-4](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/eslint.config.js#L1-L4) [package.json#L304-305](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L304-L305) [tsconfig.json#L2-7](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/tsconfig.json#L2-L7)
- 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. — [package.json#L70-84](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L70-L84) [package.json#L18-30](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/package.json#L18-L30) [.github/workflows/release.yml#L44-48](https://github.com/adonisjs/core/blob/e1b2357eacc2e8e72e0815abbc5f2e94264acffb/.github/workflows/release.yml#L44-L48)

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

## Public product links

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