Jarus.Sora_v2.5
0.2.0
dotnet add package Jarus.Sora_v2.5 --version 0.2.0
NuGet\Install-Package Jarus.Sora_v2.5 -Version 0.2.0
<PackageReference Include="Jarus.Sora_v2.5" Version="0.2.0" />
<PackageVersion Include="Jarus.Sora_v2.5" Version="0.2.0" />
<PackageReference Include="Jarus.Sora_v2.5" />
paket add Jarus.Sora_v2.5 --version 0.2.0
#r "nuget: Jarus.Sora_v2.5, 0.2.0"
#:package Jarus.Sora_v2.5@0.2.0
#addin nuget:?package=Jarus.Sora_v2.5&version=0.2.0
#tool nuget:?package=Jarus.Sora_v2.5&version=0.2.0
JARUS SORA — .NET Risk Assessment Library
A .NET library implementing the JARUS SORA v2.5 (Specific Operations Risk Assessment) methodology for unmanned aircraft systems (UAS). It provides the complete risk assessment pipeline — from operational concept to safety requirements — as a deterministic, testable computation.
What is SORA?
The Specific Operations Risk Assessment is a risk-based methodology developed by JARUS (Joint Authorities for Rulemaking on Unmanned Systems) to evaluate whether a drone operation can be conducted safely. It is the de facto standard adopted by aviation authorities worldwide, including EASA in the EU and referenced by the FAA in the US.
SORA assigns a SAIL (Specific Assurance and Integrity Level, I–VI) to an operation based on its ground risk, air risk, and applied mitigations. The SAIL then drives 17 Operational Safety Objectives (OSOs) that the operator must comply with.
Features
- Complete 10-step SORA pipeline — from ConOps input through SAIL determination to OSO requirements
- All specification tables encoded — iGRC (Table 2), ground risk mitigations (Table 5), TMPR (Table 6), SAIL (Table 7), containment (Tables 8–13), and OSO robustness (Table 14)
- Feedback loop support — Step 8 (Containment) can trigger reassessment back to Step 2 when buffer sizes change
- Strongly typed domain model — enums and value objects for all SORA classifications (ARC, SAIL, robustness levels, population bands)
- Pure functions, no side effects — each step is a deterministic computation, making the library easy to test and audit
- Result-based error handling — explicit outcomes for "out of SORA scope" and "certified category required" instead of exceptions
The SORA Process
┌─────────────────────────────────────────────────────────────────┐
│ Step 1 ConOps — Document the proposed operation │
│ Step 2 iGRC — Intrinsic Ground Risk Class (1–10) │
│ Step 3 Final GRC — Apply ground mitigations (M1A–M2) │
│ Step 4 Initial ARC — Air Risk Class (a–d) │
│ Step 5 Residual ARC — Apply strategic air mitigations │
│ Step 6 TMPR — Tactical Mitigation Performance Requirements │
│ Step 7 SAIL — Specific Assurance and Integrity Level (I–VI) │
│ Step 8 Containment — Adjacent area requirements ──┐ │
│ Step 9 OSO — 17 Operational Safety Objectives │ │
│ Step 10 CSP — Comprehensive Safety Portfolio │ │
└─────────────────────────────────────────────────────────────┘ │
▲ Feedback loop if buffer changes ──────┘
└─── back to Step 2
Quick Start
// Define the UA and operational context
var aircraft = new UnmannedAircraft(
MaxCharacteristicDimension: UaDimensionCategory.ThreeM,
MaxSpeed: 35, // m/s
MassGrams: 4500
);
var conOps = new ConceptOfOperations(
Aircraft: aircraft,
PopulationDensity: PopulationDensityBand.LessThan500,
AirspaceClass: AirRiskClass.B,
VisualLineOfSight: VisualLineOfSight.BVlos,
GroundMitigations: new[] {
new GroundMitigation(MitigationType.M1A_Sheltering, RobustnessLevel.Low)
}
);
// Run the assessment
var result = SoraAssessment.Evaluate(conOps);
// Read the outputs
Console.WriteLine($"iGRC: {result.IntrinsicGroundRiskClass}"); // 5
Console.WriteLine($"Final GRC: {result.FinalGroundRiskClass}"); // 4
Console.WriteLine($"Residual ARC: {result.ResidualAirRiskClass}"); // B
Console.WriteLine($"SAIL: {result.Sail}"); // III
Console.WriteLine($"Containment: {result.ContainmentLevel}"); // Low
// Inspect OSO requirements
foreach (var oso in result.OperationalSafetyObjectives)
Console.WriteLine($" {oso.Id}: {oso.RequiredRobustness}");
Technology Stack
| Component | Technology |
|---|---|
| Runtime | .NET 9 |
| Language | C# 13 |
| Test Framework | xUnit |
| Assertions | FluentAssertions |
| Build | dotnet CLI / MSBuild |
Project Structure
src/
├── Jarus.Sora/ # Main library
│ ├── Models/ # Domain types (ConOps, UA, volumes, mitigations)
│ ├── Tables/ # Static lookup data (iGRC, SAIL, OSO, Containment)
│ └── Steps/ # One class per SORA step
│ ├── Step02_IntrinsicGrc.cs
│ ├── Step03_FinalGrc.cs
│ ├── Step04_InitialArc.cs
│ ├── Step05_ResidualArc.cs
│ ├── Step06_Tmpr.cs
│ ├── Step07_Sail.cs
│ ├── Step08_Containment.cs
│ └── Step09_Oso.cs
├── Jarus.Sora.Tests/ # Unit and integration tests
Building and Testing
# Build the solution
dotnet build
# Run all tests
dotnet test
# Run a specific test class
dotnet test --filter "ClassName~SailDeterminationTests"
# Run a single test by name
dotnet test --filter "FullyQualifiedName~Should_Return_SailIII_When_Grc4_ArcA"
Specification References
This library implements the following JARUS publications:
| Document | Edition | Description |
|---|---|---|
| JAR-doc-25 | 2.5 (May 2024) | SORA Main Body — the core methodology implemented by this library |
| Annex A | 2.5 | Guidance on documentation and CSP templates |
| Annex B | 2.5 | Integrity and assurance levels for ground risk mitigations |
| Annex C | 2.5 | Air Risk Class assignment and strategic mitigation process |
| Annex D | 2.5 | Tactical Mitigation Performance Requirements (TMPR) |
| Annex E | 2.5 | Containment and OSO integrity/assurance criteria |
| Annex F | 2.5 | Theoretical basis for ground risk classification |
Disclaimer: This library is an independent implementation based on publicly available JARUS guidelines. It is not endorsed by or affiliated with JARUS. Always validate risk assessments with your competent authority before conducting operations.
Contributing
Contributions are welcome. Please ensure:
- All new lookup table entries include test cases for every cell
- Business rule changes reference the specific SORA section (e.g., "§4.3.3(d)")
- Domain types remain immutable
License
This project is licensed under the GNU General Public License v3.0. This means any software that incorporates this library must also be released under GPL-3.0 or a compatible license.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|