{
  "version": "4.25.0",
  "title": "Deep Audit & Stability Hardening",
  "audit_summary": {
    "php_files_checked": 136,
    "php_lint_errors": 0,
    "database_tables": 56,
    "foreign_keys": 104,
    "insert_statements_checked": 137,
    "update_statements_checked": 77,
    "alter_add_columns_checked": 95,
    "post_forms_checked": 147,
    "upload_sites_checked": 19,
    "missing_local_includes": 0,
    "missing_local_php_links": 0,
    "missing_critical_files": 0
  },
  "important_fixes": [
    "Separated v4.24 schema ensure from default seeding so deleted services/member levels do not automatically return.",
    "Changed legacy service migration to preserve any service already referenced by transactions, service-product recipes, or operational usage history.",
    "Legacy referenced services are kept intact and merely deactivated; new defaults are inserted separately when needed.",
    "Synchronized service sort_order in POS, operational inventory, and QR catalog.",
    "Added services sorting/active index and payment verification/date index.",
    "Kept explicit manual restore-default buttons for services and member levels.",
    "Patched upgrade_v4_24_0.php so v4.24 default seeding occurs explicitly once rather than on every page load."
  ],
  "preservation": [
    "Member registration + social/custom fields",
    "Member front/back card customization + Card Designer",
    "Membership levels + automatic evaluation",
    "POS services/products/mixed transactions",
    "QRIS/Transfer/E-Wallet proof upload + approval",
    "Retail + operational inventory and service usage recipes",
    "Custom receipt + thermal printers",
    "Pointman Nuvia N15 card printing",
    "Finance ledger/accounting/tax/payroll",
    "Staff portal + attendance",
    "ZKTeco SpeedFace V5L wizard/connection/step diagnostics/PUSH receiver",
    "Renovation module",
    "Central upload policies",
    "Backup/restore",
    "PWA/mobile"
  ],
  "checks": {
    "php_lint_all": true,
    "fresh_tables": true,
    "foreign_keys_valid": true,
    "foreign_key_order_valid": true,
    "insert_columns_valid": true,
    "update_columns_valid": true,
    "upgrade_vs_fresh_columns": true,
    "local_includes_valid": true,
    "local_links_valid": true,
    "post_forms_csrf": true,
    "upload_policy_no_hardcoded_limits": true,
    "pwa_assets_valid": true,
    "critical_files_preserved": true,
    "no_create_database": true,
    "no_use_database": true,
    "schema_release_425": true,
    "services_sort_index": true,
    "payment_verify_index": true,
    "default_deletion_persistent": true,
    "default_level_deletion_persistent": true,
    "history_safe_service_migration": true,
    "service_manual_seed": true,
    "level_manual_seed": true,
    "service_delete_guard": true,
    "level_delete_guard": true,
    "service_sort_pos": true,
    "service_sort_operational": true,
    "payment_approval_preserved": true,
    "central_upload_preserved": true,
    "member_card_custom_preserved": true,
    "zkteco_routes": true,
    "zkteco_step_preserved": true,
    "retail_operational_preserved": true,
    "finance_preserved": true,
    "backup_restore_preserved": true
  },
  "notes": [
    "Static and structural audit passes. Hosting-specific limits such as PHP extensions, MySQL version, filesystem permissions, upload_max_filesize, post_max_size, and network reachability remain environment-dependent.",
    "database.sql contains no CREATE DATABASE or USE statement."
  ]
}