Skip to content

Latest commit

 

History

History
70 lines (57 loc) · 3.55 KB

ci.md

File metadata and controls

70 lines (57 loc) · 3.55 KB

Continuous integration

Every PR runs Quick checks on Linux. The target is about five minutes, with seven minutes as the maximum job budget, including a cold dependency cache. A timeout fails the job; it does not count as validation.

Event Checks
PR or merge queue into develop Quick checks
Push to develop Quick checks, plus the existing CodeQL workflow
PR or merge queue into master Quick checks and Full native checks
Push to master Quick checks and Full native checks
Manual Contracts → Run workflow on a selected branch Quick checks and Full native checks

Quick checks run workspace-wide formatting, the sidecar target-directory regression check, and Clippy plus all tests for souffle-schema, souffle-mcp and souffle-typography. These cover shared SQL identifiers, paragraph grouping, MCP database queries, bundled fonts and the UI typography contract. They do not compile the app backend or the Slint frontend, run their tests, or validate translation catalogues.

Full native checks run Clippy for every workspace target, compile and run the entire workspace test suite with the existing hang watchdog, and validate the extracted Slint translations. They use macOS and have a separate 75-minute timeout for cold builds. The sidecar is covered by the workspace; prebuilding a second copy for the removed Tauri build script is unnecessary. The translation extractor version comes from Cargo.lock.

Before promoting to master, wait for both checks on that PR. Branch protection is managed separately; adding this workflow does not prohibit merging a failing PR. For native validation earlier in development, run the relevant local tests or launch Contracts → Run workflow. There is no scheduled native build and no native rebuild on each push to develop.

Caches are an optimization, not a prerequisite for the quick budget. Pushes to develop save the small Linux cache. Native runs on master, or a manual run on develop, save the macOS cache for subsequent runs and promotion PRs. PRs restore caches but do not create large per-PR entries. CodeQL remains on pushes to develop, outside the PR workflow.

Local validation

For Rust or Slint changes, run the full local gate before opening or updating the PR. A green Quick checks job does not replace native compilation and tests. Run these on an Apple Silicon Mac with the translation extractor matching Cargo.lock and GNU gettext installed:

./scripts/build-mcp-sidecar.test.sh
cargo fmt --manifest-path app/Cargo.toml --all -- --check
cargo clippy --locked --manifest-path app/Cargo.toml --workspace --all-targets -- -D warnings
cargo test --locked --manifest-path app/Cargo.toml --workspace
./scripts/check_slint_translations.sh

Local CodeQL analysis is manual and is outside the pre-PR gate. Agents run ./scripts/codeql-local.sh only when explicitly requested. The existing GitHub CodeQL workflow on pushes to develop is separate.

For changes confined to CI or documentation, validate the affected workflows with actionlint and run the commands changed by the diff. Rebuilding the native workspace is unnecessary when its source and build inputs are unchanged.

Baseline

The 2026-10-12 develop run took 34m51s in its native job: Clippy 7m06s, test compilation 20m55s, and tests 4m16s. Another PR attempt hit the previous 50-minute timeout during test compilation. The quick path reduces the work required on daily PRs; it does not claim a complete native build can finish in five minutes.