OSDC.DotnetLibraries.General.ResourceClassification 0.1.0

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

ResourceClassification

OSDC.DotnetLibraries.General.ResourceClassification 0.1.0 is a .NET 8 NuGet library for resource identities, features and memberships. It references OSDC.DotnetLibraries.General.DataManagement 2.2.0, which remains the owner of MetaInfo and the existing IIdentity*, IFeature*, and IMembership* interfaces.

Model ownership

  • IdentityDefinition describes an identification scheme; IdentityAssignment associates its UUID with a resource-specific value. These are not authentication identities, nor substitutes for the resource's own UUID.
  • FeatureCategory, FeatureOption, and FeatureAssignment describe selectable classifications and their assignments.
  • MembershipCategory, MembershipOption, and MembershipAssignment describe membership classifications. A membership option does not imply a remotely resolvable group or access-control permission.
  • FeatureCategory<TOption> and MembershipCategory<TOption> support concrete service-specific option types. Their interface adapters preserve compatible option instances; otherwise they copy the interface's ID and Name only. Interface getters return list snapshots, not live collection views.

Services can inherit these models to retain their public domain-specific type names, for example FieldFeatureCategory : FeatureCategory<FieldFeatureOption>. Properties remain concrete, mutable and serializable with System.Text.Json. Null collections, nullable references, property casing and caller-assigned IDs are preserved. Constructors do not generate UUIDs or timestamps.

The owning microservice remains responsible for catalogue values, default UUIDs, timestamps, persistence, transactions, REST/MCP routes, error envelopes, resource relationships and preventing deletion of referenced definitions. This package has no database, ASP.NET, unit-conversion or SemanticCatalogue dependency. Shared semantic vocabulary can describe these concepts separately without creating a dependency cycle.

Validation

ClassificationValidation provides deterministic, side-effect-free helpers:

  • Category/option references: both null means an unlinked draft; partial, empty, unknown or wrong-category references produce a position-aware issue.
  • Optional references: null is permitted; empty and unknown UUIDs are invalid.
  • Stable IDs: detect empty or duplicate IDs within a caller-selected collection.
  • Validity: null bounds are unbounded; FromDate must not exceed ToDate. Categories without validity periods cannot carry bounds. This helper never erases dates.
  • Exclusive-category conflicts: at most one assignment is active at any instant. Bounds are inclusive, so touching periods overlap, including the same instant represented with different UTC offsets. Undated categories permit one assignment.

For exclusivity, pass assignments for one category on one resource, only when the category is exclusive. Validate references and periods first. Conflict indices refer to the supplied list. Duplicate same-option assignments also conflict. The helpers do not silently apply validation during deserialization.

The Field/Cluster pilot reuses the shared reference checks and editor interval checks without changing accepted server payloads. Unique-ID, complete validity and exclusivity helpers are available for subsequent server-side adoption; they are not newly enforced on existing persisted records by this extraction. Before tightening write validation, audit existing assignments, cover catalogue edits and restore paths, and apply the same rules to REST and MCP writes.

Incremental migration inventory

Resource Findings and migration status
Field Identity, feature and membership models migrated; common reference validation and editor interval checks used.
Cluster / Slot Cluster identity and feature models, Slot feature models migrated; common reference validation and editor interval checks used.
WellBore Existing identity and feature models are candidates for the next migration.
WellBoreArchitecture Existing identity and feature models are candidates; component identity remains a distinct service concern.
Trajectory / Survey Run Existing trajectory identity and feature models are candidates; inspect resource-specific usage before migration.
Rig Separate migration required: category/option Code, Description, IsBuiltIn and IsDeprecated; assignment Notes and EvidenceReference; non-nullable reference UUIDs. Preserve these contracts explicitly.
Well / SurveyInstrument No matching standalone classification model files found in the inspected Model folders; verify their current resource contracts before introducing any new catalogue.

This first release does not migrate the remaining services or curate new semantic terms implicitly. Per-service migrations must check stored JSON, API schemas, generated clients, default catalogue IDs and transactional reference integrity.

Build, test and publish order

From OSDC.DotnetLibraries.General, using an SDK supported by global.json:

dotnet test OSDC.DotnetLibraries.General.ResourceClassification.UnitTest -c Release
dotnet pack OSDC.DotnetLibraries.General.ResourceClassification -c Release

The package includes its README, MIT licence and XML API documentation. Tests cover reference failures, typed option adapters, serialization, null handling, validity bounds, exclusivity and duplicate IDs.

Publish ResourceClassification 0.1.0 before building Field/Cluster in a clean CI or Docker environment. Pilot projects use unconditional package references; there is no cross-repository project reference or local-feed fallback committed to either service. For pre-publication verification, create a temporary NuGet configuration outside the service repositories with the local package directory and the normal feed:

<configuration>
  <packageSources>
    <clear />
    <add key="local" value="C:\absolute\package-directory" />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>
dotnet restore <service-solution> --configfile <absolute-path-to-temporary-NuGet.Config>

After publication, normal restore works without the local source. Build each service and compare its OpenAPI schemas; regenerate shared clients only if the authoritative contract actually changes.

Pilot verification (2026-09-29)

  • Release builds of the complete Field and Cluster solutions passed.
  • 155 tests passed: 14 library, 22 Field model, 8 Field isolated service, 27 Field MCP, 10 Cluster model and 74 Cluster service tests.
  • Exported service OpenAPI documents compared equal as JSON objects to their pre-extraction versions, including all paths and schemas. Generated clients therefore require no changes.
  • NuGet contents include the .NET 8 assembly, XML documentation, README and licence; the sole package dependency is DataManagement 2.2.0.

This verifies the first two consumers locally; it is not a deployment verification or a migration of the remaining microservices.

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.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on OSDC.DotnetLibraries.General.ResourceClassification:

Package Downloads
OSDC.Drilling.Cluster.WebPages

Reusable Razor class library containing the Cluster and statistics web pages. See the package README for setup, dependencies, and usage.

OSDC.Drilling.Field.WebPages

Reusable Razor class library containing Field management, batch backup and restore, conversion, display, and statistics pages. See the package README for setup, dependencies, and usage.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 389 9/29/2026