{
  "application": "GLMChat",
  "version": "2.2.1",
  "architecture": {
    "frontend": "offline-capable React PWA",
    "backend": "PHP 8.2+ shared-hosting front controller",
    "database": "SQLite in protected storage",
    "hosting": "LiteSpeed or Apache-compatible shared hosting",
    "alternate_backends_allowed": false
  },
  "protected_features": [
    "six-digit owner PIN authentication",
    "encrypted Together API key storage",
    "GLM-5.1 text and coding",
    "separate vision-capable model routing",
    "Together TTS",
    "projects and coding file support including ZIP",
    "agents, teams and multi-stage workflows",
    "allowlisted schema-validated PHP tools",
    "approval and recent-PIN controls for destructive actions",
    "IndexedDB-first offline drafts, encrypted local records, ordered replay and conflicts",
    "controlled service-worker updates",
    "light-only mobile-first interface",
    "GBP-aware cost controls",
    "privacy export and data controls",
    "PWA install prompt with explicit browser recovery route"
  ],
  "forbidden_changes": [
    "native wrapper requirement",
    "Node or Python production backend",
    "alternate production database",
    "publicly accessible storage",
    "unapproved destructive data migration",
    "silent submission of offline chat drafts"
  ]
}
