Thanks for improving Balance Board Controller. This repo is structured for portfolio-quality engineering: clear layers, automated gates, and documented architecture.
-
Fork / branch from
main -
Make focused changes
-
Run the quality gate:
.\scripts\ci\lint.ps1
-
Open a PR (template provided)
main is protected on GitHub:
| Rule | Effect |
|---|---|
| CI must pass | Merges require the Quality gate check (same as scripts/lint.ps1) |
| Up to date | Branch must include latest main before merge |
| No force-push | History on main cannot be rewritten |
| No deletion | main cannot be deleted accidentally |
Work on a feature branch, open a PR, wait for green CI, then merge. Repo admins can still bypass in an emergency (enforce_admins is off).
All PRs must pass CI (same as scripts/ci/lint.ps1):
| Step | What it enforces |
|---|---|
dotnet format --verify-no-changes |
Consistent style (.editorconfig) |
dotnet build -warnaserror |
Roslyn analyzers + nullable (Release) |
BalanceBoard.Core.Tests / BalanceBoard.Fuzz.Tests |
Unit + property tests |
BalanceBoard.Integration.Tests |
Session/connect fakes |
BalanceBoard.App.Ui.Tests |
Headless WPF UI tests |
tools/Validate |
vJoy/HID diagnostics CLI |
BalanceBoard.Automation |
Start/stop/single-instance lifecycle |
SDK version is pinned in global.json.
- INSTRUCTIONS.md — every-pass checklist
- AGENTS.md — architecture and edit map
- llms.txt — machine-readable index
- UI in
BalanceBoard.App, logic inBalanceBoard.Core - One concern per PR when possible
- Update docs/ROADMAP.md when completing planned items
- Add
docs/updates/entry for meaningful commits (index) - Never commit logs, secrets, or personal data
See SECURITY.md for vulnerability reporting.