Fotbiler.RuleGate.Manifest
1.0.0
dotnet add package Fotbiler.RuleGate.Manifest --version 1.0.0
NuGet\Install-Package Fotbiler.RuleGate.Manifest -Version 1.0.0
<PackageReference Include="Fotbiler.RuleGate.Manifest" Version="1.0.0" />
<PackageVersion Include="Fotbiler.RuleGate.Manifest" Version="1.0.0" />
<PackageReference Include="Fotbiler.RuleGate.Manifest" />
paket add Fotbiler.RuleGate.Manifest --version 1.0.0
#r "nuget: Fotbiler.RuleGate.Manifest, 1.0.0"
#:package Fotbiler.RuleGate.Manifest@1.0.0
#addin nuget:?package=Fotbiler.RuleGate.Manifest&version=1.0.0
#tool nuget:?package=Fotbiler.RuleGate.Manifest&version=1.0.0
RuleGate Manifest
YAML manifest loading, validation, and policy compilation for RuleGate.
Manifest converts rulegate.yaml documents into immutable RuleGate policy
definitions. Loading and validation failures are structured, and failed
compilation does not return a partial policy collection. YAML files and
embedded YAML resources can be used directly as reloadable policy sources.
Bounded document, node, depth, scalar, collection, alias, and policy limits
protect the loader and validator from resource-exhaustion input.
RuleGate 1.0 is stable. Public API and manifest compatibility follow Semantic Versioning.
Installation
dotnet add package Fotbiler.RuleGate.Manifest --version 1.0.0
Compatibility
This package targets .NET Standard 2.0, .NET 8, .NET 9, and .NET 10. Manifest compilation remains fail-closed on every target.
Example manifest
schemaVersion: 1
application:
id: sample-application
name: Sample Application
policies:
- id: sample-resource-read
resourceType: sample-resource
action: read
requirement:
all:
- permission: sample.read
- role: sample.editor
- attribute:
source: subject
name: departments
operator: contains
stringComparison: ordinalIgnoreCase
valueType: string
value: finance
- attributeComparison:
left:
source: resource
name: ownerId
operator: equal
right:
source: subject
name: id
- timeWindow:
days: [monday, tuesday, wednesday, thursday, friday]
start: "08:00"
end: "18:00"
timeZone: Europe/Istanbul
- contextAge:
timestamp: mfa
maximumAge: "00:15:00"
- context:
property: trustedDevice
operator: equal
valueType: boolean
value: true
The compiled policy collection can be registered with the RuleGate engine or the ASP.NET Core integration.
ASP.NET Core applications can register a validated YAML source directly:
builder.Services
.AddRuleGate()
.AddYamlPolicyFile(
"rulegate.yaml",
options => options.ReloadOnChange = true);
Failed reloads preserve the last valid immutable policy snapshot.
The manifest supports typed scalar and collection literals, ordinal string comparison, value-less presence, null and collection-state operators, and subject, resource, context, or literal operand comparisons. It also supports explicit-time-zone schedules, bounded date-time rules, authentication and MFA age, and canonical context-property requirements.
RuleGate packages
| Package | Purpose |
|---|---|
| Fotbiler.RuleGate.Abstractions | Public authorization contracts and extension abstractions |
| Fotbiler.RuleGate.Core | Local fail-closed authorization engine and built-in evaluators |
| Fotbiler.RuleGate.Manifest | YAML manifest loading, validation, and compilation |
| Fotbiler.RuleGate.AspNetCore | ASP.NET Core integration and attribute enrichment |
| Fotbiler.RuleGate.Cli | Manifest validation, policy testing, generation, and CI usage |
| Fotbiler.RuleGate.Keycloak | Optional Keycloak claim normalization and subject mapping |
Documentation
- Manifest guide
- Getting started
- Authorization model
- Security model
- RuleGate CLI
- Policy testing
- Policy sources and atomic reload
- Telemetry, performance, and concurrency
- Documentation index
- Detailed minimal manifest
- Document approval policy manifest
Security
Treat manifest files as security-sensitive configuration. Load policies from controlled sources, reject failed compilation, and never continue with a partial policy set. Reloadable hosts preserve the last valid complete snapshot when a candidate source fails.
Report suspected vulnerabilities through the private security reporting process.
License
RuleGate is licensed under the MIT License.
Defensive manifest limits
The manifest loader and validator fail closed for oversized or structurally excessive input. A manifest is limited to 1 MiB of source content, 4,096 policies, requirement depth 64, 4,096 nodes per policy, 1,024 children per logical requirement, and 65,536 total requirement nodes. Programmatically constructed requirement cycles are rejected before semantic validation.
YAML security profile
RuleGate manifests use a deliberately restricted YAML profile:
- a manifest file must contain valid UTF-8; an optional UTF-8 BOM is accepted;
- UTF-16, UTF-32, and malformed UTF-8 files are rejected;
- exactly one YAML document is allowed;
- anchors and aliases are rejected;
- explicit local and global YAML tags are rejected;
- duplicate mapping keys and unknown model properties are rejected;
- parser recursion and manifest resource limits remain enforced.
These restrictions avoid alias expansion, object-graph cycles introduced during
deserialization, ambiguous encoding behavior, type-tag activation, and partial
multi-document interpretation. Rejected inputs produce
ManifestLoadCodes.InvalidYaml; they are never partially compiled into active
policies.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. 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 is compatible. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Fotbiler.RuleGate.Abstractions (>= 1.0.0)
- System.Threading.Tasks.Extensions (>= 4.6.3)
- YamlDotNet (>= 18.1.0)
-
net10.0
- Fotbiler.RuleGate.Abstractions (>= 1.0.0)
- YamlDotNet (>= 18.1.0)
-
net8.0
- Fotbiler.RuleGate.Abstractions (>= 1.0.0)
- YamlDotNet (>= 18.1.0)
-
net9.0
- Fotbiler.RuleGate.Abstractions (>= 1.0.0)
- YamlDotNet (>= 18.1.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Fotbiler.RuleGate.Manifest:
| Package | Downloads |
|---|---|
|
Fotbiler.RuleGate.AspNetCore
ASP.NET Core dependency injection, local configuration and YAML policy sources, atomic reload hosting, ClaimsPrincipal mapping, enrichment, dynamic policies, resource authorization, safe diagnostics, and OpenTelemetry correlation for RuleGate. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 95 | 8/1/2026 |
| 1.0.0-rc.1 | 118 | 8/1/2026 |
| 0.9.0-preview.4 | 104 | 7/31/2026 |
| 0.9.0-preview.3 | 39 | 7/31/2026 |
| 0.9.0-preview.2 | 55 | 7/31/2026 |
| 0.9.0-preview.1 | 37 | 7/31/2026 |
| 0.8.0-preview.2 | 33 | 7/31/2026 |
| 0.7.0-preview.2 | 164 | 7/29/2026 |
| 0.7.0-preview.1 | 38 | 7/29/2026 |
| 0.6.0-preview.2 | 33 | 7/29/2026 |
| 0.6.0-preview.1 | 32 | 7/29/2026 |
| 0.5.0-preview.2 | 45 | 7/29/2026 |
| 0.3.0-preview.2 | 44 | 7/28/2026 |
| 0.3.0-preview.1 | 39 | 7/28/2026 |
| 0.2.0-preview.2 | 44 | 7/27/2026 |
| 0.2.0-preview.1 | 45 | 7/26/2026 |
| 0.1.0-preview.1 | 48 | 7/26/2026 |
Publishes the stable RuleGate 1.0 API and coordinated NuGet package family after release-candidate API freeze, security hardening, reproducibility, and package-only compatibility verification.