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
| Purpose | Command |
|---|---|
| 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
| Category | When Required |
|---|---|
| Unit | Always |
| Architecture | PR-gating |
| Contract | API changes |
| Integration | Database/service changes |
| Security | Any code changes |
| Golden | Output 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:
- [ ]
./devops/scripts/local-ci.sh smokepasses
Before opening PR:
- [ ]
./devops/scripts/local-ci.sh prpasses - [ ]
git statusshows only intended changes
Before release:
- [ ]
./devops/scripts/local-ci.sh fullpasses - [ ]
./devops/scripts/local-ci.sh release --dry-runsucceeds
Results Location
out/local-ci/
trx/ # Test reports (TRX format)
logs/ # Execution logs
Related Documentation
- LOCAL_CI_GUIDE.md — full local-CI runner reference
- Testing README — documentation index and test-category reference
- TEST_CI_ROUTING.md — how changes route to PR, nightly, weekly, and manual lanes
