Pre-Commit Checklist

Audience: anyone committing changes to the Stella Ops monorepo. Purpose: a fast, copy-pasteable reference for validating a change locally before you commit, open a PR, or cut a release.

Run the validation level that matches the size of your change. When in doubt, run the smoke check before every commit and the PR check before opening a pull request. For the full local-CI runner reference, see LOCAL_CI_GUIDE.md; for the documentation index, see the testing README.


TL;DR — Minimum Validation

# 1. Quick smoke test (2 min)
./devops/scripts/local-ci.sh smoke

# 2. If smoke passes, full PR check (15 min)
./devops/scripts/local-ci.sh pr

# 3. Commit
git add -A && git commit -m "Your message"

Validation Levels

Level 1: Quick Check (Always)

./devops/scripts/local-ci.sh smoke

Time: ~2 minutes Validates: build + unit tests


Level 2: PR-Ready (Before opening PR)

./devops/scripts/local-ci.sh pr

Time: ~15 minutes Validates: Unit, Architecture, Contract, Integration, Security, and Golden categories


Level 3: Module-Focused (Changed modules only)

./devops/scripts/local-ci.sh module

Time: Varies by module Validates: Auto-detected or specified module


Level 4: Full Suite (Major changes/releases)

./devops/scripts/local-ci.sh full

Time: ~45 minutes Validates: All categories including Performance, Benchmark, AirGap, Chaos


Quick Commands

PurposeCommand
Smoke test./devops/scripts/local-ci.sh smoke
PR check./devops/scripts/local-ci.sh pr
Module tests./devops/scripts/local-ci.sh module --module Scanner
Single category./devops/scripts/local-ci.sh pr --category Unit
Verbose output./devops/scripts/local-ci.sh pr --verbose
Dry run./devops/scripts/local-ci.sh pr --dry-run
Release check./devops/scripts/local-ci.sh release --dry-run

Windows (PowerShell)

.\devops\scripts\local-ci.ps1 smoke
.\devops\scripts\local-ci.ps1 pr
.\devops\scripts\local-ci.ps1 module -Module Scanner

Service Management

# Start
docker compose -f devops/compose/docker-compose.ci.yaml up -d

# Stop
docker compose -f devops/compose/docker-compose.ci.yaml down

# Reset
docker compose -f devops/compose/docker-compose.ci.yaml down -v

Test Categories

CategoryWhen Required
UnitAlways
ArchitecturePR-gating
ContractAPI changes
IntegrationDatabase/service changes
SecurityAny code changes
GoldenOutput format changes

Troubleshooting

Build fails

dotnet clean src/<Module>/StellaOps.<Module>.sln
dotnet build src/<Module>/StellaOps.<Module>.sln

Tests fail

./devops/scripts/local-ci.sh pr --verbose
cat out/local-ci/logs/Unit-*.log

Services won’t start

docker compose -f devops/compose/docker-compose.ci.yaml down -v
docker compose -f devops/compose/docker-compose.ci.yaml up -d

Checklist

Before every commit:

Before opening PR:

Before release:


Results Location

out/local-ci/
  trx/     # Test reports (TRX format)
  logs/    # Execution logs