{
  "version": "4.13.0",
  "focus": "Grouped Menu + Renovation Flexible Expenses + Integrated Finance + Card Designer",
  "php_files_checked": 117,
  "php_lint_errors": [],
  "database_tables": 50,
  "foreign_keys": 87,
  "foreign_key_errors": [],
  "table_order_issues": [],
  "upgrade_add_columns_checked": 15,
  "missing_upgrade_columns": [],
  "insert_column_lists_checked": 110,
  "insert_column_errors": [],
  "missing_local_php_links": [],
  "checks": {
    "php_lint_all": true,
    "grouped_sidebar": true,
    "group_auto_open_active": true,
    "finance_ledger": true,
    "finance_no_membership_double_count": true,
    "finance_no_renovation_double_count": true,
    "finance_integrity": true,
    "source_link_schema": true,
    "source_backfill": true,
    "source_edit_delete_protected": true,
    "journal_invalidation": true,
    "journal_rebuild": true,
    "cash_bank_account_sync": true,
    "renov_expense_task_phase_custom": true,
    "renov_task_fk": true,
    "renov_to_global_expense": true,
    "card_designer": true,
    "five_builtin_card_templates": true,
    "custom_card_upload": true,
    "custom_card_used_preview_print": true,
    "card_download_png_uses_custom_bg": true,
    "pointman_n15_preserved": true,
    "thermal_blueprint_preserved": true,
    "zkteco_preserved": true,
    "renovation_history_preserved": true,
    "branding_preserved": true,
    "foreign_keys_valid": true,
    "table_order_valid": true,
    "upgrade_vs_fresh_valid": true,
    "insert_columns_valid": true,
    "local_php_links_valid": true,
    "no_create_database": true,
    "no_use_database": true,
    "all_requested_features": true,
    "zip_integrity": true
  },
  "finance_design": [
    "POS paid transactions are direct cash-in ledger sources and are not copied into incomes.",
    "Membership sales are represented once through linked incomes records.",
    "Renovation expenses are represented once through linked expenses records.",
    "Paid payroll items are represented as cash-out sources.",
    "Manual income/expense edits invalidate old journals; accounting sync rebuilds source journals.",
    "Historical Membership and Renovation source links are backfilled by ensure_v4130_schema and upgrade_v4_13_0.php."
  ],
  "card_design": [
    "5 built-in templates",
    "custom front/back JPG/PNG/WebP uploads",
    "selected template is used by member preview, downloadable PNG background, and CR80 print output",
    "Pointman Nuvia N15 compatibility remains preserved"
  ],
  "zip_files": 187,
  "zip_size_bytes": 379603,
  "sha256": "73dfc1263d85aac578d2b7a2b934e1fe776813b4c0d45f82f4642bce3d5ddf5c"
}