# GLMChat V2.2.1 final validation
UTC 2026-07-22T13:06:58Z

## Baseline/final structure
baseline_files=87
final_files=81
final_unexpected_runtime_outputs:

## PHP syntax
php_files=44 failures=0

## JavaScript syntax
js_files=7 failures=0

## JSON, manifest, SBOM, references and archive path safety
json_files 4 parse_failures 0
[]
manifest_entries 80 set_match True failures []
sbom_components 81 file_inventory_match True missing [] extra []
precache_assets 15 missing []
html_refs 10 missing []
manifest_scope ./ start_url ./ display standalone
manifest_new_chat True

## Fresh and upgrade migration scenarios
baseline-fresh migrations 12 integrity ok foreign_key_violations 0 tables 29
final-fresh migrations 13 integrity ok foreign_key_violations 0 tables 29
upgrade-12-to-13 integrity ok foreign_key_violations 0 app_version 2.2.1 offline_max_age_days 7

## Targeted hardening assertions
PASS preview bypass removed
PASS mock provider test-only
PASS install does not force update activation
PASS explicit update action retained
PASS fetch fallback always resolves Response
PASS normal update notice present
PASS service-worker failure visible
PASS sensitive records use AES-GCM
PASS plaintext migration implemented
PASS PIN rekey does not silently overwrite retained data
PASS offline maximum credential age enforced
PASS lock clears decryption key
PASS closed-app sync claim removed
PASS unhashed helpers no-cache
PASS workbox asset removed
PASS light-only declarations
PASS duplicate public docs removed

## Obvious secret scan
potential_secret_hits 0

## Available-runtime backend preflight (isolated copy)
{"ok":false,"error":{"code":"ENVIRONMENT_INVALID","message":"The server does not meet GLMChat runtime requirements.","request_id":"b7056ecd70c340ea7a8f518b","failures":["Missing PHP extension: sqlite3.","Missing PHP extension: curl.","Missing PHP extension: mbstring.","Missing PHP extension: zip."]}}
## Checks unavailable
Build: Not run — deployment-only bundle contains no package.json, lockfile or build scripts.
Type-check: Not run — source and type-check configuration are absent.
Automated tests: Not run — claimed Node/PHP/browser suites are absent.
Browser runtime: Not run — installed Chromium hung even on a data URL in this container; no page result was claimed.
Live host/provider/device: Not run — requires target LiteSpeed host, Together credentials and physical Android devices.
