The Problem with Booting Applications
Traditional PHP documentation tools boot the entire Laravel application kernel to inspect routes and controllers. This leads to serious operational issues:- Database Dependency: The application fails to boot or throws exceptions if database credentials are not configured, database servers are unreachable, or migrations have not run.
- Accidental Side Effects: Running controller constructors, service providers, or action methods can trigger external API requests, database queries, Redis connections, or file operations.
- Slow CI Execution: Running documentation commands in CI requires provisioning databases, seeders, and Redis instances just to build static documentation.
- Brittle Environments: Locked-down production or pre-commit hook environments without database access cannot run documentation generators.
How Geni Does Zero-Boot
Geni adheres strictly to a zero-boot philosophy for inference:No Database Connections
Geni never calls
DB::connection(), PDO, or database drivers. All database structure is reconstructed from your migration source files.No Controller Instantiation
Geni never executes
new $controllerClass() or invokes action methods. Analysis is performed statically on AST nodes.No Eloquent Hydration
Model relationships, table names, and column types are determined by static heuristics and migration schemas, not live queries.
Deterministic Output
Generating the documentation multiple times produces identical output with canonicalized key ordering and zero false drift.
What Touches the Runtime?
The only runtime element used by Geni is reading the LaravelRouteCollection via Route::getRoutes():