# Validation Report - v13

## Static validation

- PHP syntax: 209 files passed `php -l`.
- JavaScript syntax: 8 files passed `node --check`.
- CSS structure: 9 stylesheets passed balanced-brace validation.
- Routes: 278 route declarations checked with no duplicate method/path pairs.
- Database schema: 97 unique table declarations checked.
- Required v13 tables confirmed in schema:
  - `data_import_jobs`
  - `data_import_errors`
  - `accounting_connections`
  - `accounting_entity_links`
  - `accounting_sync_logs`
- Customer-facing PDF/controller checks found no legacy FleetLume document-title fallback.

## PDF validation

Representative payslip and invoice PDFs were generated using the v13 PDF engine and rendered to PNG at 160 DPI.

Verified:

- Valid `%PDF-1.4` output
- Single-page portrait layout
- Dark navy/teal document theme
- Company-name fallback instead of product branding
- Readable tables and totals
- No clipped document header or footer
- No overlap between payslip rows and totals
- Invoice table spacing adjusted to protect notes and totals

## Extension handling

The code now provides explicit setup messages when required extensions are missing:

- cURL for QuickBooks Online
- Zip for XLSX files
- SimpleXML for XLSX files

GD remains recommended for converting PNG, WebP, or GIF company logos into the generated PDF. JPEG logos work without GD.

## Not completed in the build environment

The build environment did not provide:

- MySQL server or PDO MySQL driver
- PHP cURL extension
- PHP Zip extension
- PHP SimpleXML extension
- Intuit app credentials
- QuickBooks Online sandbox company

Therefore, these require staging validation:

- Database migration execution
- Real CSV/XLSX database imports
- OAuth authorization and token refresh
- Invoice, Purchase, and Journal Entry synchronization
- Production company-logo rendering with the target PHP/GD configuration

## Deployment recommendation

Deploy to staging first, run `/install.php?unlock=1`, import a small template file, connect a QuickBooks Sandbox company, synchronize one invoice/expense/payroll record, and inspect the resulting QuickBooks transactions before production use.
