AIGuiders.Platform.Modeling.Navigation.Policy 0.1.0

dotnet add package AIGuiders.Platform.Modeling.Navigation.Policy --version 0.1.0
                    
NuGet\Install-Package AIGuiders.Platform.Modeling.Navigation.Policy -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.Navigation.Policy" 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.Navigation.Policy" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="AIGuiders.Platform.Modeling.Navigation.Policy" />
                    
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.Navigation.Policy --version 0.1.0
                    
#r "nuget: AIGuiders.Platform.Modeling.Navigation.Policy, 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.Navigation.Policy@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.Navigation.Policy&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=AIGuiders.Platform.Modeling.Navigation.Policy&version=0.1.0
                    
Install as a Cake Tool

AIGuiders.Platform.Modeling.Navigation.Policy

Navigation policy — canonical related-kind tokens, named presets, preset/request merge, kind filter and profiles with caps.

What you get

  • RelatedKinds — six canonical related-kind tokens:
    • partial_peer — file-level counterpart (e.g. code-behind)
    • project_peer — sibling file in the same project
    • xaml_codebehind_pair — XAML paired with its code-behind
    • test_counterpart — code paired with its test
    • same_namespace — files sharing a namespace
    • same_directory — files sharing a directory
    • plus tryCanonicalKind (case-insensitive token → canonical name) and all
  • Presets — five named filter presets:
    • peers_only — only partial/project peers
    • no_namespace_noise — everything except same_namespace/same_directory
    • tests_and_peers — peers plus test counterparts
    • structure_only — peers, XAML pairs, same-directory
    • explore_default — everything except project_peer
    • with tryGet (unknown preset → None), allowsKind, and names
  • PresetMerge.merge — named preset + request-time include/exclude overrides: non-empty request include wins, excludes are unioned and deduped by canonical kind, unknown preset → error string
  • KindFilter — whitelist/blacklist filter with create, allows, effectiveInclude, effectiveExclude (unknown tokens dropped, not fatal)
  • KindCaps.defaultRelated — default per-kind caps: same_directory 4, same_namespace 4, project_peer 3
  • NavigationProfile + Profile — preset + limits as one value: ready-made exploreDefault and peersOnly, request-time fromExplore, and toCaps (profile → SceneCaps with default kind caps merged in)

Quick start

open AIGuiders.Platform.Modeling.Navigation.Policy

// Does a kind survive a named preset?
Presets.allowsKind (Some "no_namespace_noise") RelatedKinds.SameNamespace   // false

// Preset + request overrides, merged (excludes union when both sides have them)
let includeKinds, excludeKinds, err =
    PresetMerge.merge (Some "tests_and_peers") None (Some [ "same_directory" ])

// Explore request -> profile -> scene caps
let caps =
    Profile.fromExplore (Some "peers_only") (Some 32) None None
    |> Profile.toCaps

Problem

  • "Show me what's related to this file" pulls neighbors of very different value: a test counterpart is gold, fifty same-namespace files are noise. Every navigation tool re-answers:
    • which neighbor kinds count, and which are noise
    • how many of each kind before the scene drowns
    • what happens when the caller narrows the filter at request time on top of the default
  • Hand-rolled, these answers are scattered if-chains — invisible policy, drifting per host.

Solution

  • Policy as named, pure data: presets are an include/exclude catalog, merge rules are one function, caps are one list — reviewable in one place, deterministic everywhere.
  • The F# SSOT of the navigation policy layer (platform ADR-0033), consumed by the C# navigation family (AIGuiders.Platform.Navigation.Code, AIGuiders.Platform.Conformance.Navigation); extraction mapped in FSHARP ADR-0003.

When not to use

  • Scene construction and wire parsing — this package decides what passes, never how to walk a graph; the scene IR is AIGuiders.Platform.Modeling.Navigation.
  • Enforcement — caps and filters are data plus predicates; truncating an actual node/edge list is the scene builder's job (Execution).
  • It is an F# mirror with C# parity (the C# AIGuiders.Platform.Navigation.Policy twin carries the same semantics) — it is not a new policy language, and it holds no per-project configuration of its own.

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

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
0.1.0 87 10/24/2026