- Git
- .NET 10 SDK
10.0.300or a newer patch - Windows, macOS, or Linux for build and tests
global.json selects the .NET 10 10.0.3xx feature band and accepts its latest installed patch. CI installs the latest .NET 10 SDK.
./scripts/verify.shThe script performs a Release restore/build and test pass. Individual commands:
dotnet restore Blueprints.sln
dotnet build Blueprints.sln --configuration Release --no-restore
dotnet test Blueprints.Tests/Blueprints.Tests.csproj --configuration Release --no-buildRun the app:
./scripts/run-app.shOr:
dotnet run --project Blueprints.App/Blueprints.App.csproj- Windows is the most mature runtime target and uses DPAPI for private-key protection.
- macOS and Linux use the local AES-GCM protector.
- On Linux, Avalonia may require X11/XWayland.
scripts/diagnose-linux-display.shexplains missing display state. - Tests create isolated workspaces and must not read or write real application data.
developis the integration/default branch.maincontains promoted release-ready states.- Branch from
developusingfeature/<slug>,fix/<slug>,docs/<slug>, orchore/<slug>. - Open pull requests into
develop. - Promotion pull requests move verified changes from
developtomain. - Releases are tagged from
main.
- Keep the domain free of UI and provider dependencies.
- Put canonical persistence rules in Storage.
- Put key handling and signatures in Security.
- Put exchange/sync behavior in Collaboration.
- Keep hosted integrations outside signed project truth.
- Prefer immutable records for persisted documents.
- Add a regression test before or with every bug fix.
- Decide whether it is signed project truth or local-only state.
- Update the relevant record.
- define compatibility behavior for older files.
- update canonical serialization or workspace tests.
- update workspace format.
- add migration logic when schema versions begin diverging.
If SDK selection fails:
dotnet --list-sdks
dotnet --versionInstall .NET 10 SDK 10.0.300 or a newer patch in the same feature band. Do not edit a parent-directory global.json; this repository has its own pin.
If restore is slow on first use, let NuGet finish populating its cache. Subsequent builds should be much faster.