GLMCHAT V2.2.1 — PRODUCTION ACCEPTANCE CHECKLIST Generated: 22 July 2026 17:44:17 UTC Instructions - Run on a private production-equivalent LiteSpeed staging host. - Use both a domain-root deployment and the actual intended nested path, if any. - Record Passed, Failed or Not run. Do not infer a pass. - Retain command output, screenshots and redacted request traces beside this file. ENVIRONMENT [ ] PHP 8.2+ web runtime confirmed. [ ] sqlite3 loaded in web runtime. [ ] curl loaded in web runtime. [ ] json loaded in web runtime. [ ] openssl loaded in web runtime. [ ] mbstring loaded in web runtime. [ ] fileinfo loaded in web runtime. [ ] zip loaded in web runtime. [ ] storage/ writable by PHP and denied over HTTP. [ ] Server/PHP error logs available to the operator and denied over HTTP. Suggested non-destructive command: python3 tools/target_host_acceptance_22072026163824.py \ --app-dir ./app \ --base-url https://HOST/OPTIONAL_PATH/ \ --json-output ./target-host-acceptance.json HOSTING AND SECURITY [ ] Domain-root shell, assets, manifest, icons and API work. [ ] Nested-path shell, assets, manifest, icons and API work. [ ] SPA rewrites do not intercept real files or API routes. [ ] server/, storage/, .htaccess, manifest/SBOM and CHANGES files are denied. [ ] HTTPS redirect has no loop and does not trust arbitrary forwarding headers. [ ] CSP, HSTS, nosniff, frame, referrer and permissions headers are present. [ ] API/auth/setup responses use no-store. [ ] Session cookies are Secure, HttpOnly and SameSite as documented. [ ] Login lockout holds under parallel attempts. DATA AND UPGRADE [ ] A private clone of real database/storage is inventoried before upgrade. [ ] Forward migrations complete with record counts and referential integrity intact. [ ] Existing projects, files, chats, messages, definitions, workflows and settings remain. [ ] Controlled migration failure leaves no partial schema/data state. [ ] Tested rollback restores the prior coherent code/database/storage set. [ ] No public or temporary copy contains provider keys or decrypted secrets. LIVE TOGETHER [ ] Valid key accepted; invalid/revoked/empty keys fail safely. [ ] GLM-5.1 multi-turn text/coding succeeds. [ ] Reasoning modes and output limits map correctly. [ ] SSE chunks arrive incrementally through LiteSpeed/proxy. [ ] User cancellation stops provider/server/client work coherently. [ ] Function calls validate arguments and continue to a final answer. [ ] Read-only PHP tool executes only within the selected project. [ ] Destructive tool requires approval and recent PIN. [ ] Vision requests use the configured separate vision-capable model. [ ] Oversized/corrupt/unsupported images fail safely. [ ] TTS voice listing, generation and Android playback succeed. [ ] Timeouts, rate limits, malformed responses and cost limits fail safely. WORKFLOWS AND FILES [ ] Agent create/edit/duplicate/delete/run journey passes. [ ] Team create/edit/run journey and hand-offs pass. [ ] Workflow dependencies, optional stages, branches and approvals pass. [ ] Pause/resume/cancel/retry/reassign/skip/revoke/branch controls persist correctly. [ ] Lease expiry and worker takeover do not execute a stage twice. [ ] Concurrent workflows do not leak or corrupt data. [ ] SQLite contention recovers within configured timeouts. [ ] Near-limit and over-limit uploads behave atomically. [ ] Hostile traversal, symlink, duplicate, conflict, bomb and corrupt ZIPs are rejected. [ ] Interrupted upload/download leaves no orphaned database or temporary state. OFFLINE AND PWA [ ] First install and first setup complete without unrecoverable state. [ ] Installed app relaunches offline and unlocks within credential policy. [ ] Sensitive IndexedDB records are encrypted at rest. [ ] Seven-day offline credential expiry and clock-change cases match policy. [ ] Offline chat remains a draft and is never silently submitted. [ ] Ordered replay is idempotent across partial failure and browser restart. [ ] Authentication expiry pauses replay without losing queue entries. [ ] Conflict resolution does not silently overwrite either side. [ ] Quota pressure, transaction failure, eviction and storage clear are understood. [ ] Service-worker update is user-controlled and preserves drafts/queues. [ ] Cache Storage contains no sensitive API/auth content. ANDROID AND ACCESSIBILITY [ ] Chrome for Android: install, setup, login, core journeys, offline, update, download. [ ] Samsung Internet: same critical journeys. [ ] Android Back closes overlays/wizard steps before leaving the route. [ ] Multiline composer: Enter does not submit; Send button submits. [ ] 320, 360, 412 and 600 CSS px portrait layouts have no clipped controls. [ ] Short landscape and software keyboard are usable. [ ] 200% text/Android large text preserves content and controls. [ ] TalkBack names, states, errors, workflow changes and approvals are announced. [ ] Reduced motion removes non-essential movement without losing feedback. RISK DECISIONS [ ] React 16.0.0/ReactDOM 16.0.1 risk accepted temporarily or upgrade completed. [ ] Six-digit PIN/seven-day offline risk accepted for the intended threat model or strengthened. [ ] Supported browser/device matrix approved. [ ] Current Together model, voice and pricing metadata verified. FINAL RELEASE [ ] npm run verify passes from the final handover. [ ] Direct-deploy ZIP integrity and SHA-256 verified after extraction. [ ] Final CHANGES_hhmmddmmyyyy.txt matches actual baseline/final files. [ ] No unrelated source, schema, PWA, route or data change remains. [ ] All P0 checks above Passed with retained evidence. [ ] Formal GO decision, approved checksum and rollback package recorded.