TheSingularityWorkshop.FSM_UserIO 0.1.0-alpha.1

This is a prerelease version of TheSingularityWorkshop.FSM_UserIO.
dotnet add package TheSingularityWorkshop.FSM_UserIO --version 0.1.0-alpha.1
                    
NuGet\Install-Package TheSingularityWorkshop.FSM_UserIO -Version 0.1.0-alpha.1
                    
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="TheSingularityWorkshop.FSM_UserIO" Version="0.1.0-alpha.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TheSingularityWorkshop.FSM_UserIO" Version="0.1.0-alpha.1" />
                    
Directory.Packages.props
<PackageReference Include="TheSingularityWorkshop.FSM_UserIO" />
                    
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 TheSingularityWorkshop.FSM_UserIO --version 0.1.0-alpha.1
                    
#r "nuget: TheSingularityWorkshop.FSM_UserIO, 0.1.0-alpha.1"
                    
#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 TheSingularityWorkshop.FSM_UserIO@0.1.0-alpha.1
                    
#: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=TheSingularityWorkshop.FSM_UserIO&version=0.1.0-alpha.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=TheSingularityWorkshop.FSM_UserIO&version=0.1.0-alpha.1&prerelease
                    
Install as a Cake Tool

TheSingularityWorkshop.FSM_UserIO

NuGet NuGet downloads Build Coverage License Last commit GitHub issues .NET 8

The Singularity Workshop UserIO boundary: semantic interaction across forms, capabilities, observations, expression, and computation.

FSM_UserIO is a platform-neutral semantic interaction boundary. It is not a human-input library, a game-engine input layer, or a GUI event abstraction.

The package begins from a more fundamental question:

What can the interacting form sense, express, or perform, and what semantic interaction does that capability produce?

A human is one possible form. A dog is another. A robot, VR avatar, accessibility system, AI agent, remote operator, or software process can also be an interacting form. The common abstraction is not anatomy and it is not a device. It is capability.

The vision

The Workshop does not want UserIO constrained by the conventions of Unity, WPF, Blazor, another game engine, or the human keyboard-and-mouse model.

Those are manifestations of computation.

FSM_UserIO sits at the semantic boundary beneath them:

flowchart TB
    A["ACTOR / FORM"] --> C["Capabilities"]
    C --> S["Sensing"]
    C --> E["Expression"]
    C --> X["Action"]
    S --> U["FSM_UserIO"]
    E --> U
    X --> U
    U --> P["Application policy"]
    P --> R["Execution"]

The upper limit is therefore not "what a human can do with a controller" or "what Unity exposes." The boundary is constrained by the capabilities that can be represented and by the computation that can process them.

Why this package exists

A keyboard key, mouse movement, controller button, paw gesture, gaze event, voice utterance, accessibility action, automation signal, software message, or AI proposal is not itself application meaning.

It is an observation, expression, or proposal produced through some capability.

FSM_UserIO exists to carry the semantic interaction across that boundary without taking ownership of the source, the GUI, the datum, or execution.

flowchart LR
    O["Observation / expression"] --> U["FSM_UserIO"]
    U --> I["Semantic interaction"]
    I --> P["Policy / authorization / validation"]
    P --> E["Execution"]
    A["Actor / form"] -. capabilities .-> O

That gives the Workshop a stable separation:

Concern Owner
Actor/form and its real capabilities originating system / application
Physical or software observation source adapter
Semantic interaction FSM_UserIO
Deterministic semantic identity ProtocolAi
Structural composition GrammarAi
Human-facing semantic presentation GUI
Domain datum and domain meaning application/domain
Policy, authorization, validation, execution host/application
Runtime composition FSM_COS
Native manifestation/rendering platform-specific package

Capability is the important abstraction

Capability is broader than input.

A capability can describe what a form can sense, express, or perform.

Examples are intentionally illustrative rather than an ontology:

Form Possible capabilities
Human vision, hearing, speech, grasping, locomotion, typing
Dog vision, hearing, smell, barking, biting, locomotion
Robot sensors, locomotion, manipulation, speech, network interaction
VR avatar application-granted perception, locomotion, manipulation, expression
AI agent semantic observation, proposal, planning, software interaction
Software process messages, API calls, files, events, service operations
Accessibility system gaze, switches, speech, specialized controls

The point is not to encode these examples as a giant universal capability enum.

The point is to avoid making the core accidentally assume that every user is a biped holding a controller.

Capability is not authority

A capability does not grant permission.

A dog may be physically capable of biting. A human may be capable of deleting a record. An AI agent may be capable of proposing DeleteAccount. A software process may be capable of invoking an API.

Whether any of those interactions are meaningful, permitted, authorized, or executable belongs to application policy.

flowchart TB
    C["Capability"] --> O["Observation / expression"]
    O --> I["Semantic interaction"]
    I --> P["Policy / authorization / validation"]
    P --> E["Execution"]
    C -. "does not grant" .-> E

This separation is fundamental to the package.

What FSM_UserIO is not

FSM_UserIO is deliberately not:

  • a keyboard or mouse API;
  • a controller abstraction;
  • a WPF input framework;
  • a Blazor event framework;
  • a Unity input layer;
  • a game-engine abstraction;
  • a device SDK;
  • a rendering system;
  • a GUI widget library;
  • an authorization system;
  • an application command executor;
  • a replacement for ProtocolAi or GrammarAi.

Those concerns may have adapters or bridge packages. They do not belong in the semantic core merely because one consumer happens to need them.

Platform independence

Do not read "UserIO" as "human I/O."

The name describes the application boundary through which an interacting form reaches semantic interaction.

Likewise, do not assume that every platform needs a package named WPF_IO, Blazor_IO, or Unity_IO. A platform-specific adapter should exist only when a real shared contract justifies it.

flowchart TB
    W["WPF / Blazor / Unity / other platform"] --> N["Native observation or expression"]
    N --> A["Platform-specific adapter"]
    A --> U["FSM_UserIO"]
    U --> H["Application / host"]

If several platforms share a capability, the shared bridge belongs at the smallest boundary that actually owns that capability. This is the same minimum-intersection principle used elsewhere in the Workshop.

The Workshop stack

FSM_UserIO does not replace the other Workshop packages. It gives them a clean boundary to meet at:

flowchart TB
    F["ACTOR / FORM"] --> C["Capabilities"]
    C --> A["Source / surface adapters"]
    A --> U["FSM_UserIO"]
    U --> P["ProtocolAi"]
    U --> G["GUI"]
    U --> S["Other surfaces"]
    P --> H["Host / Application"]
    G --> H
    S --> H
    H --> E["POLICY + EXECUTION"]
    E --> R["Computation"]
    R --> COS["FSM_COS"]

ProtocolAi can give application-owned symbols deterministic identity.

GrammarAi can describe how those identities are structurally composed.

GUI can mediate human-facing presentation and interaction with datum.

FSM_COS can compose runtime capabilities.

None of those relationships require FSM_UserIO to depend upward on them.

Alpha 1

Alpha 1 deliberately starts with one semantic artifact:

public sealed record SemanticIntent(string Name, ulong? ProtocolId = null);

This is intentionally small.

It establishes that an application-owned semantic interaction can have:

  • a required application-defined name;
  • an optional deterministic numeric identity;
  • no embedded device type;
  • no GUI type;
  • no rendering type;
  • no authorization policy;
  • no execution behavior.

The package will grow only when a real boundary requires another contract and that contract can be demonstrated with tests and a consumer.

Documentation

Start with:

The documentation is part of the API. It exists to prevent future consumers from accidentally importing a game-engine or human-device interpretation into a package intended to remain computation-bound rather than platform-bound.

NuGet publication

Publication is intentionally disabled by default.

The Workshop-wide release safety rule is that NuGet publication jobs end with an explicit && false gate. Build, test, coverage, and package creation remain useful while publication stays off.

The release procedure is documented in the Workshop's NuGet Publication Runbook.

License

MIT. See LICENSE.txt.


<p align="center"> <em>The Singularity Workshop — edify, don't mystify.</em> </p>

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

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on TheSingularityWorkshop.FSM_UserIO:

Package Downloads
TheSingularityWorkshop.FSM_COS

Platform-neutral computation composition kernel for resolving, loading, arbitrating, and assembling MicroBundle-based computation.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0-alpha.1 3,791 10/3/2026

Alpha 1: establish the platform-neutral semantic interaction boundary across actor capabilities without owning devices, GUI, datum, policy, or execution.