Factory Ready Standard
The single source of truth for launch-ready projects. Every App Factory build must pass these quality gates before deployment.
Quick Reference
1
BuildRequired
2
RunRequired
3
TestRequired
4
ValidateRequired
5
PackageRequired
6
Launch ReadyRequired
7
Token IntegrationOptional
Gate Details
Gate 1: Build
Verify the project compiles and all dependencies resolve
Pass Criteria
- npm install exits with code 0
- npm run build exits with code 0 (if build script exists)
- No TypeScript errors
- No missing peer dependencies
Fail Examples
- Unresolved imports
- TypeScript type errors
- Missing required dependencies
Gate 2: Run
Verify the project actually runs
Pass Criteria
- Server/process starts without crashing
- Listens on expected port
- Responds to basic request (health check or root route)
Fail Examples
- Server crashes on startup
- Missing environment variables cause crash
- Infinite loop or hang
Gate 3: Test
Verify basic functionality works
Pass Criteria
- At least one smoke test documented in TESTING.md
- Smoke test passes when run against fresh build
- Expected output documented
Fail Examples
- No tests documented
- Tests documented but fail
- Tests require unavailable external services
Gate 4: Validate
Verify project meets pipeline contract requirements
Pass Criteria
- Required files present
- Forbidden files absent (no .env, no node_modules, no secrets)
- No hardcoded secrets or private keys
- File size limits respected
Fail Examples
- Missing required file
- Forbidden file present (e.g., .env.local committed)
- Hardcoded API key in source
Gate 5: Package
Prepare for deployment via GitHub import
Pass Criteria
- Code pushed to GitHub repository
- Repository is accessible
- All required files included in commit
- factory_ready.json present
Fail Examples
- Repository not pushed to GitHub
- Committed secrets in repository history
- Missing required files
Gate 6: Launch Ready
Final human checklist before deployment
Pass Criteria
- README.md present and accurate
- RUNBOOK.md with copy-pasteable commands
- TESTING.md with expected output
- LAUNCH_CHECKLIST.md with no blocking items
- FACTORY_IMPORT.md with preparation instructions
Fail Examples
- Missing documentation file
- RUNBOOK commands reference nonexistent files
- Documentation contains TODO placeholders
Gate 7: Token Integration
OptionalContract address configured (only if opted-in)
Pass Criteria
- Config variable clearly documented
- Integration module compiles
- Dry run mode works without real contract
- TOKEN_INTEGRATION.md explains post-launch steps
Fail Examples
- Hardcoded contract address
- Integration requires real chain connection to build
- No documentation for where to paste address
Machine-Readable Output
Every pipeline validator produces a factory_ready.json file with gate results.
{
"version": "1.0",
"timestamp": "2026-01-13T12:00:00Z",
"project": {
"name": "my-app",
"pipeline": "website-builder",
"path": "/path/to/project"
},
"gates": {
"build": { "status": "PASS", "details": "npm install and build succeeded" },
"run": { "status": "PASS", "details": "dev server started on port 3000" },
"test": { "status": "PASS", "details": "smoke test returned 200" },
"validate": { "status": "PASS", "details": "all contract requirements met" },
"package": { "status": "PASS", "details": "ready for GitHub import" },
"launch_ready": { "status": "PASS", "details": "all docs present" },
"token_integration": { "status": "SKIP", "details": "not opted in" }
},
"overall": "PASS",
"next_steps": [
"Push to GitHub",
"Prepare project metadata",
"Deploy to production"
]
}Status Values
PASSGate requirements fully met
FAILGate requirements not met (see details)
SKIPGate not applicable (e.g., token integration when not opted in)
WARNGate passed with non-blocking warnings
Common Failure Remediation
Build Failures
npm ERR! peer depRun npm install --legacy-peer-deps or fix versionsCannot find module XAdd to package.json and reinstallRun Failures
EADDRINUSEKill process on port or use different portMissing required envCopy .env.example to .env and fill in valuesValidate Failures
Forbidden file presentRemove file, add to .gitignoreHardcoded secretMove to environment variable