AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic 0.1.0

dotnet add package AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic --version 0.1.0
                    
NuGet\Install-Package AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic -Version 0.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic --version 0.1.0
                    
#r "nuget: AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic&version=0.1.0
                    
Install as a Cake Tool

AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic

Typed rule-graph IR for cockpit annunciation logic: rules with boolean expressions over facts plus projectors — data contracts only, no parser and no evaluator inside.

What you get

  • CockpitRuleGraph — the top-level record: Planet (owning scope), Rules, Projectors
  • CockpitRule — one annunciation rule:
    • Id — stable rule identifier
    • When — a boolean ExprNode over facts (from AIGuiders.Platform.Modeling.Gdl.Expression):
      • LiteralBool / LiteralString / LiteralInt
      • FactRef of a fact name
      • Compare of two nodes, And / Or / Not
    • Emit — what to annunciate when the rule matches
    • Severity — free-form severity string
  • CockpitProjector — fact projection wiring: Id, Source, Target (which fact feeds which zone/consumer)
  • All records are [<CLIMutable>] — friendly for C# consumers and serializers

Quick start

open AIGuiders.Platform.Modeling.Gdl.Expression
open AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic

let graph : CockpitRuleGraph =
    { Planet = "studio"
      Rules =
        [ { Id = "dim-at-night"
            When = And(FactRef "nightMode", Not(FactRef "presentationOn"))
            Emit = "lights.dim"
            Severity = "info" } ]
      Projectors =
        [ { Id = "focus"; Source = "repl.state"; Target = "zone.repl" } ] }

Evaluation lives next door: AIGuiders.Platform.Modeling.Cockpit.Rules runs RulesEval.evaluate graph facts and returns a per-rule match trace.

Problem

  • "Which lamp lights given which facts" tends to end up as imperative if-trees inside each host UI — the same rules re-coded per surface, no single place to review them, and no trace of which rule fired.
  • Rules as prose (manuals, wiki pages) cannot be tested; rules as code cannot be reviewed by non-programmers.

Solution

  • The rule set becomes data: a typed graph of rules over boolean fact expressions, reviewable and storable independently of any UI that renders it.
  • One IR, split consumers: this package holds the graph, AIGuiders.Platform.Modeling.Cockpit.Rules evaluates it headlessly — matching the ownership rule that modeling owns the typed circuit graph while execution owns bus, IO, and mounting (FSHARP ADR-0002).
  • The shape follows the .cockpit.logic authoring grammar (ADR-0057).

When not to use

  • You want to parse .cockpit.logic text files — this package ships the IR only; the text parser is deliberately not here (the quarry ADR keeps it unscheduled), so build the graph in code or map it from your own source.
  • You want evaluation — take AIGuiders.Platform.Modeling.Cockpit.Rules; expressions here are boolean/presence/compare over obj facts, not a rules engine with typed values or arithmetic.
  • Rich severity/action taxonomies — Emit and Severity are plain strings; any enum semantics belong to the consumer.

Learn more


MIT · Source & issues · part of the Guiders federation

Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic:

Package Downloads
AIGuiders.Platform.Modeling.Gdl.Core

GDL spine types — discriminated union project model (Guiders federation).

AIGuiders.Platform.Modeling.Cockpit.Rules

Headless cockpit rule evaluation — traceable rule id + matched when.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 135 10/24/2026