17:)"; echo; echo "Selected ADB device: $DEVICE"; echo "Model: $MODEL"; echo "Android: $ANDROID"; [[ "$MODEL" == "Pixel 9 Pro Fold" ]] || { echo "STOP: The authorised device is not the expected Pixel 9 Pro Fold."; exit 1; }; echo; echo "2. CURRENT MOBILE VERSION"; echo "------------------------------------------------------------"; echo "Project version:"; grep -E 'versionCode[[:space:]]*=|versionName[[:space:]]*=' "$GRADLE" | tee "$EVIDENCE/project-version-before.txt"; echo; echo "Pixel version:"; "$ADB" -s "$DEVICE" shell dumpsys package "$PACKAGE" | grep -E 'versionCode=|versionName=|firstInstallTime=|lastUpdateTime=' | sed -n '1,12p' | tee "$EVIDENCE/pixel-version-before.txt"; CURRENT_PROJECT_VERSION="$( 19: 's/.*versionName[[:space:]]*=[[:space:]]*"([^"]+)".*/\1/p' \ 24: 's/.*versionCode[[:space:]]*=[[:space:]]*([0-9]+).*/\1/p' \ 27:)"; echo; echo "Current project versionName: $CURRENT_PROJECT_VERSION"; echo "Current project versionCode: $CURRENT_PROJECT_CODE"; echo; echo "3. RECOVER EXACT FAILED DEPLOYMENT FROM SHELL HISTORY"; echo "------------------------------------------------------------"; HISTTIMEFORMAT=; history > "$HISTORY_CAPTURE"; python3 - "$HISTORY_CAPTURE" "$RECOVERED" <<'PY' 105: chmod 600 "$RECOVERED"; echo; echo "Recovered script:"; echo " $RECOVERED"; echo "SHA-256:"; sha256sum "$RECOVERED" | tee "$EVIDENCE/recovered-script.sha256"; echo; echo "4. VERIFY RECOVERED COMMAND IDENTITY"; echo "------------------------------------------------------------"; for REQUIRED_TEXT in "SHIRE-MOBILE-SENTINEL-PIXEL-FIXED-" "SentinelMobileAlerts.kt" "/usr/local/lib/shire-mobile-gateway/server.py" "/etc/shire-mobile-gateway/mobile-gateway.env" "/usr/local/lib/shire-sentinel/alert_bridge.py" "/etc/shire-sentinel/alert-bridge.json" "CORRECTED SENTINEL PIXEL DEPLOYMENT"; do grep -Fq "$REQUIRED_TEXT" "$RECOVERED" || { echo "STOP: Recovered command is missing:"; echo " $REQUIRED_TEXT"; exit 1; }; done; echo "Recovered command identity: PASS"; echo; echo "5. AUDIT INTENDED VERSION"; echo "------------------------------------------------------------"; grep -nE 'versionCode|versionName|0\.7\.[0-9]|EXPECTED_VERSION' "$RECOVERED" | sed -n '1,120p' | tee "$EVIDENCE/recovered-version-references.txt" || true; TARGET_VERSION="$( 117: r'versionName(?:\s*=|\s+)[^\n"]*"([^"]+)"', 123: r'versionName=([A-Za-z0-9._-]+)', 138: }' "$FILE"; fi; else echo "ABSENT_OR_UNREADABLE $FILE"; fi; done | tee "$EVIDENCE/current-runtime-files.txt"; echo; echo "8. CURRENT SERVICE HEALTH — NO RESTART"; echo "------------------------------------------------------------"; for SERVICE in "$GATEWAY_SERVICE" shire-sentinel-alert.service shire-sentinel-suricata.service tailscaled.service; do printf '%-42s %s\n' "$SERVICE" "$(systemctl is-active "$SERVICE" 2>/dev/null || true)"; done | tee "$EVIDENCE/service-state.txt"; echo; echo "9. CURRENT APK STATE"; echo "------------------------------------------------------------"; if [[ -f "$APK" ]]; then echo "APK present: YES"; echo "APK bytes: $(stat -c '%s' "$APK")"; sha256sum "$APK" | tee "$EVIDENCE/current-apk.sha256"; else echo "APK present: NO"; fi; echo; echo "10. PRESERVE AUDIT EVIDENCE"; echo "------------------------------------------------------------"; { echo "audit=shire-mobile-sentinel-replay"; echo "captured_at_utc=$(date -u +%Y-%m-%dT%H:%M:%SZ)"; echo "host=$(hostname)"; echo "user=$(id -un)"; echo "pixel_device=$DEVICE"; echo "pixel_model=$MODEL"; echo "current_version_name=$CURRENT_PROJECT_VERSION"; echo "current_version_code=$CURRENT_PROJECT_CODE"; echo "recovered_target_versions=${TARGET_VERSION:-unresolved}"; echo "target_matches_current=$VERSION_SAFE"; echo "deployment_executed=no"; echo "mobile_source_changed=no"; echo "gateway_changed=no"; echo "sentinel_changed=no"; echo "pixel_app_changed=no"; echo "services_restarted=no"; } > "$EVIDENCE/audit-result.txt"; MANIFEST_TEMP="$(mktemp)"; find "$EVIDENCE" -type f ! -path "$EVIDENCE/SHA256SUMS.txt" -print0 | sort -z | xargs -0 sha256sum > "$MANIFEST_TEMP"; install -m 0600 "$MANIFEST_TEMP" "$EVIDENCE/SHA256SUMS.txt"; rm -f "$MANIFEST_TEMP"; ( cd /; sha256sum -c "$EVIDENCE/SHA256SUMS.txt" >/dev/null; ); echo "Evidence verification: PASS"; echo; echo "============================================================"; echo " SENTINEL DEPLOYMENT REPLAY AUDIT — COMPLETE"; echo "============================================================"; echo; echo "Recovered command:"; echo " $RECOVERED"; echo; echo "Current SHiRE Mobile:"; echo " versionName=$CURRENT_PROJECT_VERSION"; echo " versionCode=$CURRENT_PROJECT_CODE"; echo; echo "Recovered target:"; echo " ${TARGET_VERSION:-UNRESOLVED}"; echo; echo "TARGET_MATCHES_CURRENT=$VERSION_SAFE"; echo "PIXEL_ADB_READY=YES"; echo "DEPLOYMENT_EXECUTED=NO"; echo "SOURCE_CHANGED=NO"; echo "SERVICES_RESTARTED=NO"; echo "NEXT_STAGE_READY=YES"; echo "============================================================"; )