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
<PackageReference Include="AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic" Version="0.1.0" />
<PackageVersion Include="AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic" Version="0.1.0" />
<PackageReference Include="AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic" />
paket add AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic --version 0.1.0
#r "nuget: AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic, 0.1.0"
#:package AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic@0.1.0
#addin nuget:?package=AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic&version=0.1.0
#tool nuget:?package=AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic&version=0.1.0
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,ProjectorsCockpitRule— one annunciation rule:Id— stable rule identifierWhen— a booleanExprNodeover facts (fromAIGuiders.Platform.Modeling.Gdl.Expression):LiteralBool/LiteralString/LiteralIntFactRefof a fact nameCompareof two nodes,And/Or/Not
Emit— what to annunciate when the rule matchesSeverity— 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.Rulesevaluates 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.logicauthoring grammar (ADR-0057).
When not to use
- You want to parse
.cockpit.logictext 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 overobjfacts, not a rules engine with typed values or arithmetic. - Rich severity/action taxonomies —
EmitandSeverityare plain strings; any enum semantics belong to the consumer.
Learn more
- ADR-0057 — cockpit logic authoring quarry
- FSHARP ADR-0002 — model guild ownership (cockpit circuit graph IR)
MIT · Source & issues · part of the Guiders federation
| Product | Versions 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. |
-
net10.0
- AIGuiders.Platform.Modeling.Gdl.Expression (>= 0.1.0)
- FSharp.Core (>= 10.1.401)
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 |