10 KiB
Validation Checklist - Success Criteria
Per-Phase Validation
Phase 1: Docker Compose (infra-agent)
Container Renaming:
- traefik → mvp-traefik
- admin-frontend → mvp-frontend
- admin-backend → mvp-backend
- admin-postgres → mvp-postgres
- admin-redis → mvp-redis
- mvp-platform-vehicles-api → mvp-platform
Service Removal:
- admin-minio removed
- mvp-platform-landing removed
- mvp-platform-tenants removed
- platform-postgres removed
- platform-redis removed
- mvp-platform-vehicles-db removed
- mvp-platform-vehicles-redis removed
- mvp-platform-vehicles-etl removed
Configuration:
- docker-compose.yml validates:
docker compose config - Volume mount added:
./data/documents:/app/data/documents - Network count reduced from 5 to 3
- All Traefik labels updated with new service names
Validation Commands:
docker compose config # Should validate without errors
docker compose ps # Should show 6 services only
Phase 2: Remove Tenant (backend-agent)
Code Deletion:
- backend/src/core/middleware/tenant.ts deleted
- backend/src/core/config/tenant.ts deleted
- backend/src/features/tenant-management/ deleted
Code Modification:
- backend/src/app.ts - No tenant middleware import
- backend/src/app.ts - No tenant middleware registration
- backend/src/app.ts - No tenant-management routes
- backend/src/core/plugins/auth.plugin.ts - No tenant_id claim extraction
No Tenant References:
# Should return 0 results in application code
grep -r "tenant_id" backend/src/features/
grep -r "tenantId" backend/src/features/
grep -r "tenant-management" backend/src/
Build Check:
cd backend
npm run build # Should compile without errors
Phase 3: Filesystem Storage (storage-agent)
New Files:
- backend/src/core/storage/adapters/filesystem.adapter.ts created
- Implements StorageService interface correctly
- data/documents/ directory exists
Modified Files:
- backend/src/core/storage/storage.service.ts uses FilesystemAdapter
- backend/src/features/documents/ updated for filesystem
No MinIO References:
# Should return 0 results
grep -r "minio" backend/src/
grep -r "MinIO" backend/src/
grep -r "s3" backend/src/core/storage/
Functional Test:
# Test document upload/download
curl -X POST http://localhost:3001/api/documents/upload \
-H "Authorization: Bearer $TOKEN" \
-F "file=@test.pdf"
# Verify file exists in ./data/documents/{userId}/
Phase 4: Config Cleanup (config-agent)
Config File Updates:
- config/app/production.yml - No MinIO section
- config/app/production.yml - No platform tenant API
- config/app/production.yml - Platform vehicles URL = http://mvp-platform:8000
Environment Updates:
- .env - No MINIO_* variables
- .env - No PLATFORM_VEHICLES_API_KEY
- .env - DATABASE_URL uses mvp-postgres
- .env - REDIS_URL uses mvp-redis
Secrets Deletion:
- secrets/app/minio-access-key.txt deleted
- secrets/app/minio-secret-key.txt deleted
- secrets/app/platform-vehicles-api-key.txt deleted
- secrets/platform/ directory deleted
Validation:
# No sensitive references should remain
grep -r "minio" config/
grep -r "platform-vehicles-api-key" config/
Phase 5: Network Simplification (infra-agent)
Network Configuration:
- Only 3 networks: frontend, backend, database
- platform network removed
- egress network removed
Service Network Assignments:
- mvp-traefik: frontend
- mvp-frontend: frontend, backend
- mvp-backend: backend, database
- mvp-postgres: database
- mvp-redis: database
- mvp-platform: backend, database
Validation:
docker network ls | grep motovaultpro
# Should show only 3 networks
docker compose config | grep -A5 "networks:"
# Verify correct network assignments
Phase 6: Backend Updates (backend-agent)
Service References:
- All database URLs use mvp-postgres
- All Redis URLs use mvp-redis
- Platform client URL = http://mvp-platform:8000
No Old Container Names:
grep -r "admin-postgres" backend/src/
grep -r "admin-redis" backend/src/
grep -r "admin-backend" backend/src/
# Should all return 0 results
Build and Start:
make rebuild
make logs-backend # No errors
Phase 7: Database Updates (infra-agent)
Connection Strings:
- Application uses mvp-postgres
- Platform service uses mvp-postgres
Schema Validation:
# Connect to database
make db-shell-app
# Verify tables exist
\dt
# Verify no tenant_id columns (only user_id)
SELECT column_name FROM information_schema.columns
WHERE table_schema = 'public' AND column_name = 'tenant_id';
# Should return 0 rows
Phase 8: Platform Service (platform-agent)
Service Simplification:
- No MSSQL dependencies
- No ETL container
- Uses mvp-postgres and mvp-redis
- Single container deployment
API Functionality:
# Test platform service endpoints
curl http://localhost:8000/health
curl http://localhost:8000/vehicles/makes?year=2024
No Old Dependencies:
grep -r "mssql" mvp-platform-services/vehicles/
grep -r "pyodbc" mvp-platform-services/vehicles/
# Should return 0 results
Phase 9: Documentation (docs-agent)
Documentation Updates:
- README.md reflects 6-container architecture
- CLAUDE.md no multi-tenant guidance
- AI-INDEX.md updated
- .ai/context.json updated
- docs/PLATFORM-SERVICES.md updated
- docs/TESTING.md updated
- Makefile uses mvp-* container names
Consistency Check:
# No old container names in docs
grep -r "admin-backend" docs/ README.md CLAUDE.md Makefile
grep -r "admin-frontend" docs/ README.md CLAUDE.md Makefile
# Should return 0 results
Phase 10: Frontend Updates (frontend-agent)
Code Updates:
- No tenant selection UI
- No tenant context provider
- Auth0 integration updated (no tenant claims)
- API clients work
Build Check:
cd frontend
npm run build # Should build without errors
No Tenant References:
grep -r "tenant" frontend/src/
# Should return minimal/no results
Phase 11: Testing (test-agent)
Container Health:
- All 6 containers running
- All containers healthy status
Test Suite:
- Backend tests pass:
make test - Frontend tests pass
- Integration tests pass
- No regressions
Validation Commands:
docker compose ps
# Should show 6 services, all healthy
make test
# All tests should pass
Integration Validation
Cross-Phase Validation
Architecture Consistency:
- 6 containers total (no more, no less)
- 3 networks configured
- mvp-* naming consistent everywhere
- No tenant code remaining
- No MinIO references
- No old platform services
Functional Validation:
- Authentication works (Auth0)
- Vehicle operations work
- Fuel logs CRUD works
- Maintenance logs work
- Stations work
- Document upload/download works
Performance Validation:
- Application starts in reasonable time
- API response times acceptable
- No memory leaks
- No excessive logging
Final Acceptance Criteria
Must-Pass Criteria
Infrastructure:
# 1. All containers healthy
docker compose ps
# Expected: 6 services, all "running (healthy)"
# 2. Networks correct
docker network ls | grep motovaultpro | wc -l
# Expected: 3
# 3. Volumes correct
docker volume ls | grep motovaultpro | wc -l
# Expected: 2 (postgres_data, redis_data)
Build and Tests:
# 4. Clean rebuild succeeds
make clean && make setup
# Expected: All services start successfully
# 5. All tests pass
make test
# Expected: 0 failures
# 6. Linting passes
cd backend && npm run lint
cd frontend && npm run lint
# Expected: No errors
Code Quality:
# 7. No tenant references in application
grep -r "tenant_id" backend/src/features/ | wc -l
# Expected: 0
# 8. No old container names
grep -r "admin-backend" backend/ frontend/ docs/ | wc -l
# Expected: 0
# 9. No MinIO references
grep -r "minio" backend/src/ | wc -l
# Expected: 0
Functionality:
- 10. Can log in via Auth0
- 11. Can create vehicle
- 12. Can upload document
- 13. Can create fuel log
- 14. Can create maintenance log
- 15. Can search stations
Mobile Compatibility:
- 16. Frontend responsive on mobile
- 17. All features work on mobile
- 18. No mobile-specific errors
Nice-to-Have Criteria
- Documentation comprehensive
- Code comments updated
- Performance improved vs. before
- Memory usage reduced
- Startup time faster
Validation Responsibility Matrix
| Validation | Agent | Phase | Critical |
|---|---|---|---|
| Container rename | infra-agent | 1 | Yes |
| Service removal | infra-agent | 1 | Yes |
| Tenant code deleted | backend-agent | 2 | Yes |
| Filesystem storage | storage-agent | 3 | Yes |
| Config cleanup | config-agent | 4 | Yes |
| Network simplification | infra-agent | 5 | Yes |
| Service references | backend-agent | 6 | Yes |
| Database updates | infra-agent | 7 | Yes |
| Platform simplification | platform-agent | 8 | Yes |
| Documentation | docs-agent | 9 | No |
| Frontend updates | frontend-agent | 10 | Yes |
| Full integration | test-agent | 11 | Yes |
Rollback Triggers
Rollback if:
- Any critical validation fails
- Tests have >10% failure rate
- Containers fail to start
- Data loss detected
- Security issues introduced
- Production blockers identified
See ROLLBACK-STRATEGY.md for procedures.
Sign-Off Checklist
Project Lead:
- All critical validations passed
- Architecture simplified as intended
- No functionality regressions
- Documentation complete
- Team trained on new architecture
Technical Lead:
- Code quality maintained
- Tests comprehensive
- Performance acceptable
- Security not compromised
DevOps Lead:
- Containers deploy successfully
- Networks configured correctly
- Volumes persistent
- Monitoring operational
Final Approval:
- Ready for production deployment
- Rollback plan documented
- Team informed of changes