Development
May 23, 2026 ยท View on GitHub
Repository Hygiene
The repository should stay reviewable from git status --short. Runtime,
benchmark, credential, and release artifacts are ignored and should not be
committed.
Important ignored locations:
.skirk-runs/: local benchmark and protocol lab records;private/: local credentials, configs, and operator notes;skirk-kit/,skirk-config/,*.skirk: generated profiles and kits;bin/,dist/: local builds and release archives;.skirk-runs/probe_results/,.skirk-runs/cloud_resources/: external-service probes;cloud_resources/,probe_results/: legacy probe output directories kept ignored in case old scripts or notes are rerun;- client build outputs such as
node_modules/, Gradle build directories, and Tauri targets.
Before opening a pull request:
git status --short
git ls-files \
.skirk-runs private skirk-kit skirk-config bin dist cloud_resources probe_results sources zips \
application_default_credentials.json skirk.json client.json exit.json \
'*.skirk' '*.secret' '*.token' '*.pem' '*.key'
The second command should print nothing.
Normal Checks
make preflight
Include desktop and Android checks:
SKIRK_FULL_PREFLIGHT=1 make preflight
Useful focused checks:
go test ./...
go vet ./...
go test -race ./internal/skirk
GitHub Smoke Coverage
The public repository has a heavier Smoke workflow for platform coverage that
is too broad for every local edit. It runs on GitHub's standard hosted runners
for:
- Linux x64 and arm64 CLI tests;
- Windows x64 and arm64 CLI tests;
- macOS Intel and Apple Silicon CLI tests;
- Linux, Windows, and macOS desktop build/package smoke;
- Android debug APK build plus static ABI/package validation.
This uses public-repository hosted runners only. It does not prove physical
Android VPN behavior, Windows administrator VPN behavior, hostile-network
latency, or live Google Drive quota behavior. Those still need real devices,
real Windows hosts, and live Drive credentials under .skirk-runs/.
Live Transport Testing
Live Drive tests require real credentials and should remain manual. Keep outputs
under .skirk-runs/ and do not paste generated configs into public logs.
Minimum live smoke test:
skirk serve-exit --config skirk-kit/exit.json
skirk bench-live --config skirk-kit/client.skirk --samples 5
For transport changes, use same-day paired controls. Run muxv4 and the candidate against the same exit, route, target URLs, binary build, and cleanup state.
Do not promote a candidate on single-stream speed alone. The gate is mixed browsing and bulk behavior.