Files
Kara Zajac ad81964398
Build APK / build (push) Waiting to run
Implement rotation-clone presence engine (#1) + unit tests + CI tests
- detect/PresenceEngine.kt: identity-agnostic streaming detector for key-rotating clones (novel-churn gate, seamless-handover chain, co-movement gate, coherence). Full design in docs/detection-rotation-clone.md.
- Wired into ScanService as a parallel signal; CONFIRMED verdict raises a distinct rotating-tracker alert (softer tiers stay silent pending real-capture validation).
- PresenceEngineTest: synthetic clone (moving -> CONFIRMED), stationary clone (gated), single real tracker + far-ambient (CLEAR).
- CI now runs :app:testDebugUnitTest so the engine has behavioural verification, not just a compile check.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0187UiEtasyowhEBYs6s9iF5
2026-07-15 00:35:37 -04:00

55 lines
1.3 KiB
YAML

name: Build APK
# Builds a debug APK on every push/PR (CI compile check) and attaches an APK to
# a GitHub Release on version tags (v*). The committed debug keystore means CI
# and local builds sign identically, so updates install in place.
on:
push:
pull_request:
workflow_dispatch:
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
- name: Set up Android SDK
uses: android-actions/setup-android@v3
- name: Run unit tests
run: |
chmod +x ./gradlew
./gradlew :app:testDebugUnitTest --stacktrace --no-daemon
- name: Build debug APK
run: |
./gradlew :app:assembleDebug --stacktrace --no-daemon
- name: Stage APK
run: |
mkdir -p out
cp app/build/outputs/apk/debug/app-debug.apk "out/VIGIL-debug.apk"
- name: Upload APK artifact
uses: actions/upload-artifact@v4
with:
name: vigil-apk
path: out/*.apk
- name: Publish Release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: out/*.apk
generate_release_notes: true