Dreamine.Gem
1.0.0
dotnet add package Dreamine.Gem --version 1.0.0
NuGet\Install-Package Dreamine.Gem -Version 1.0.0
<PackageReference Include="Dreamine.Gem" Version="1.0.0" />
<PackageVersion Include="Dreamine.Gem" Version="1.0.0" />
<PackageReference Include="Dreamine.Gem" />
paket add Dreamine.Gem --version 1.0.0
#r "nuget: Dreamine.Gem, 1.0.0"
#:package Dreamine.Gem@1.0.0
#addin nuget:?package=Dreamine.Gem&version=1.0.0
#tool nuget:?package=Dreamine.Gem&version=1.0.0
Dreamine.Gem
Dreamine.Gem is a code-first GEM equipment/host implementation surface built on the Dreamine SECS-II/HSMS stack.
Status boundary
| Scope | Status | Evidence boundary |
|---|---|---|
E30-0611 derived subset profile v1 implementation surface |
IMPLEMENTED_UNVERIFIED |
Frozen source scope; not a conformance verdict. |
| Local unit and hand-built wire-fixture evidence | PASS |
Structure, state, ACK, rejection, no-mutation, and correlation checks. |
| Local separate-process Host/Equipment actual-TCP evidence | PASS |
The public QuickStart exercises every frozen dialogue definition and explicit equipment-origin directions. |
| External simulator or production equipment | NOT_RUN |
Local evidence cannot promote an external or field result. |
| E37.1 conformance | BLOCKED_STANDARD |
The required licensed revision is unavailable. |
The target sources are E30-0611 and E5-0813. This project does not claim current-revision conformance, certification, or external interoperability.
Public implementation surface
GemEquipmentProfileBuilderfreezes a validated, code-first equipment profile; eachCreateContextcall gets isolated mutable runtime state.E30DemoEquipmentProfile.Create()supplies a small generic public Demo profile without customer-equipment semantics.E30HostClientexposes typed calls and typed outcomes for the frozen host surface.E30EquipmentRouterowns exact equipment-side dispatch and explicit equipment-origin operations.E30IdentifierPolicypreserves independent CEID/RPTID/VID/SVID/DVID/ECID/ ALID/DATAID integer formats. Raw ACK values remain observable.HsmsGemTransportadapts an application-ownedISecsMessageSession; the runtime does not own or dispose the supplied session.- Existing domain services remain available for variables, constants, event/ report snapshots, alarms, remote commands, process programs, clock, and bounded in-memory spooling. A domain service is not a wire-support claim.
Frozen dialogue manifest
The exact profile name is E30-0611 derived subset profile v1. Its 20 normal
Primary/Secondary dialogue definitions are:
| Direction in the public Demo run | Dialogues |
|---|---|
| Host request → Equipment response | S1F1/F2, S1F3/F4, S1F11/F12, S1F13/F14, S1F15/F16, S1F17/F18; S2F13/F14, S2F15/F16, S2F17/F18, S2F29/F30, S2F31/F32, S2F33/F34, S2F35/F36, S2F37/F38, S2F41/F42; S5F3/F4, S5F5/F6; S6F15/F16 |
| Equipment Primary → Host response | S5F1/F2, S6F11/F12 |
The same actual-TCP run also checks equipment-initiated S1F1/F2 and S2F17/F18 through the router's typed operations. The router additionally exposes equipment-initiated S1F13/F14. Direction is explicit; the 20-entry manifest must not be interpreted as support for every dialogue in both directions.
Code-first equipment composition
var profile = E30DemoEquipmentProfile.Create();
var context = profile.CreateContext(new HsmsGemTransport(equipmentSession));
await using var router = new E30EquipmentRouter(
equipmentSession,
context,
new E30EquipmentRouterOptions
{
CommandCompletionEvents = new Dictionary<string, ulong>
{
[E30DemoEquipmentProfile.StartCommand] =
E30DemoEquipmentProfile.CommandCompletedEventId
}
});
The Host process uses the selected profile's identifier policy:
using var host = new E30HostClient(
hostSession,
new E30IdentifierPolicy(profile.IdentifierFormats));
var result = await host.ReadStatusAsync(
[E30DemoEquipmentProfile.EquipmentStateVariableId],
cancellationToken);
Session connection, Select, dispatcher lifetime, and disconnection remain the application's responsibility. See Quick start for the two- process command lines.
WPF Demo selection
The public WPF Workbench defaults to E30-0611 derived subset profile v1
(Demo) and uses E30DemoEquipmentProfile.Create() with
E30EquipmentRouter. Its alternative Educational basic responder
(Demo-only, not GEM) is a seven-pair teaching fallback. Selection is mutually
exclusive: the frozen router and the fallback responder are never registered
at the same time. See the Workbench README.
Explicit exclusions and blocked semantics
- S6F19/F20 for an unknown RPTID is
BLOCKED_STANDARD. - S2F35 empty outer-list and empty RPTID-list unlink/delete variants are
BLOCKED_STANDARD; v1 terminates them without mutation. - S9F1, S9F9, and S9F13 are
INTENTIONALLY_EXCLUDEDfrom frozen v1 because the current safe provider/router boundary does not expose the source context needed to construct them without invention. - Multi-block S2F39/F40 and S6F5/F6, trace, limits, wire spooling, S7 process-
program wire services, S10 terminal services, material handling, and enhanced
remote command are
INTENTIONALLY_EXCLUDED.
See Known limitations, the requirements trace, and the public API review.
License
MIT.
| Product | Versions 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. |
-
net8.0
- Dreamine.Gem.Abstractions (>= 1.0.0)
- Dreamine.Secs.Abstractions (>= 1.0.0)
- Dreamine.Secs.Com (>= 1.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Dreamine.Gem:
| Package | Downloads |
|---|---|
|
Dreamine.Gem300
Dreamine GEM300 domain runtime with integrity-safe carrier, substrate, job, object, and event workflows. |
|
|
Dreamine.SecsGem.FullKit
All-in-one meta package for the Dreamine SECS-II, HSMS, GEM, and GEM300 libraries. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 74 | 8/12/2026 |