release_gate.py
Source file: scripts/release_gate.py
Module: scripts
Size: 268 lines
SHA-256: fde4921a7f3741ae6d97c7b1a6e311cc2312632a9bfe6c41b57cf655915620a2
Responsibility
Coordinates release checks; scripts are not evidence of actual staging or device operation.
Declared entry points
Gate— source line 50.__init__— source line 51.require— source line 55.fail— source line 59.check_source— source line 62.inventory— source line 141.scan_dist— source line 149.verify_demo_qa— source line 174.check_ipa— source line 194.main— source line 218.
Imports and dependencies
- Line 10:
import argparse - Line 11:
import subprocess - Line 12:
import hashlib - Line 13:
import json - Line 14:
import re - Line 15:
import sys - Line 16:
import zipfile
Behaviour and audit locations
- Line 77:
required = ('mobile_entry', 'demo_entry', 'presenter_root', 'mobile_capacitor_config', 'mobile_web_dir') - Line 96:
if cfg.get('mobile_capacitor_config'): - Line 97:
cc = root / cfg['mobile_capacitor_config'] - Line 101:
self.require(j.get('webDir') == 'dist', 'Capacitor webDir must be dist inside apps/mobile; never WordPress/demo') - Line 102:
self.require('url' not in j.get('server', {}), 'Production Capacitor server.url is forbidden') - Line 104:
self.fail('Invalid Capacitor config: ' + str(e)) - Line 123:
if base != mobile and ('apps/mobile' in spec or '@capacitor/' in spec): - Line 222:
ap.add_argument('--native-web-dir', help='actual copied Capacitor iOS App/public assets')
Relationship to the system
This page is the file-level source reference, not the architecture rationale. Read the module explanation, the corresponding architecture decision and user guide before changing behaviour. Names and line locations above are extracted from this exact source version; they are reference points, not proof that an external service or a phone feature works.
Change verification
Review the entry points and errors in this file, then run the module’s associated tests, source dependency gate, history gate and documentation coverage check. If the file changes an API response, user interaction, data model, deployment or third-party dependency, revise those human explanations and disaster recovery/licensing when relevant. Do not infer actual native or external API operation from source presence.