TCIS.Observability.Classification 1.0.0-rc.10

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

TCIS.Observability.Classification

A lightweight, zero-dependency .NET library that provides a standardized Exception Classification Taxonomy for enterprise applications. It categorizes runtime exceptions by Failure Category, Operational Owner, Infrastructure Dependency, Support Level, and Machine Error Code.


Key Features

  • Standardized Exception Taxonomy: Categorizes failures into Infrastructure, Developer, Business, Security, or Unknown.
  • Operational Ownership & Escalation: Identifies the responsible team (Ops, Dev, Business, Security) and Support Level (L1, L2, L3).
  • Dependency Tracking: Maps failures to underlying infrastructure (Database, Cache, Kafka, RabbitMQ, Redis, Http, etc.).
  • Smart Exception Unwrapping: Automatically inspects InnerException chains up to depth 8 while respecting terminal domain/protocol boundaries (e.g., TCIS validation exceptions, gRPC RPC exceptions, SOAP faults).
  • Loose-Coupled Rules Engine: Includes built-in rules for standard .NET BCL exceptions and type-name matching without requiring hard references to specific database or messaging packages.
  • SIEM / Log Tagging: Formats classification metadata into compact, greppable log prefixes for Serilog, Grafana, and Kibana.

Architecture Overview

                      [ Runtime Exception ]
                                │
                                ▼
                   CompositeExceptionClassifier
                                │
                      (Smart Unwrap Chain)
                                │
                                ▼
            ┌───────────────────┴───────────────────┐
            │                                       │
            ▼                                       ▼
    BclExceptionRule                      TypeNameExceptionRule
     (Priority: 900)                         (Priority: 950)
    .NET Core BCL Errors                  Dynamic Type Matching
            │                                       │
            └───────────────────┬───────────────────┘
                                │
                                ▼
                     ExceptionClassification
               ┌─────────────────────────────────┐
               │ Category  : Infrastructure      │
               │ Owner     : Ops                 │
               │ Dependency: Database            │
               │ Support   : L3 (On-Call)        │
               │ ErrorCode : INFRA_DB_TIMEOUT    │
               └─────────────────────────────────┘

Installation

Add the project reference or NuGet package:

dotnet add package TCIS.Observability.Classification

Registration & Dependency Injection

Register exception classification services in Program.cs:

using TCIS.Observability.Classification;

var builder = WebApplication.CreateBuilder(args);

// Register default exception classifier and built-in rules
builder.Services.AddExceptionClassification();

// (Optional) Register custom domain exception rules
builder.Services.AddExceptionClassifierRule<MyCustomDomainExceptionRule>();

Usage Examples

1. Classifying Exceptions in Services or Middleware

using TCIS.Observability.Classification;

public class OrderService
{
    private readonly IExceptionClassifier _classifier;
    private readonly ILogger<OrderService> _logger;

    public OrderService(IExceptionClassifier classifier, ILogger<OrderService> logger)
    {
        _classifier = classifier;
        _logger = logger;
    }

    public async Task ProcessOrderAsync(OrderRequest request)
    {
        try
        {
            await ExecuteOrderPipelineAsync(request);
        }
        catch (Exception ex)
        {
            ExceptionClassification classification = _classifier.Classify(ex);

            // Log operational metadata
            _logger.LogError(ex, "[{Provider}] Order processing failed: {LogPrefix}", 
                "order-service", 
                classification.ToOperationalLogPrefix());

            if (classification.Retryable)
            {
                // Schedule retry for transient infrastructure failures
            }

            throw;
        }
    }
}

2. Creating Custom Classification Rules

To add domain-specific classification rules, implement IExceptionClassifierRule:

using TCIS.Observability.Classification;

public class CustomPaymentExceptionRule : IExceptionClassifierRule
{
    public int Priority => 500; // Lower number = higher priority

    public bool TryClassify(Exception exception, out ExceptionClassification? classification)
    {
        if (exception is PaymentGatewayTimeoutException gatewayEx)
        {
            classification = new ExceptionClassification(
                Category: ExceptionCategory.Infrastructure,
                Owner: ExceptionOwner.Ops,
                Dependency: ExceptionDependency.Http,
                Retryable: true,
                ErrorCode: "PAYMENT_GATEWAY_TIMEOUT",
                PublicMessageKey: MessageKeys.SystemTemporarilyUnavailable,
                ExceptionType: gatewayEx.GetType().Name,
                SupportLevel: SupportLevel.L3
            );
            return true;
        }

        classification = null;
        return false;
    }
}

Exception Categories & Support Tiers

Category Owner Support Level Typical Causes
Infrastructure Ops L3 DB timeouts, Redis disconnects, Network sockets, Kafka downtime
Developer Dev L2 NullReferenceException, ArgumentException, InvalidOperationException
Business Business L1 Domain validation, Insufficient funds, Out of stock
Security Security L3 Authentication failure, Unauthorized access, Token expired
Unknown Unknown L2 Unhandled / Unmapped exceptions

License

Internal Enterprise Library — TCIS Core Platform Framework.

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 (4)

Showing the top 4 NuGet packages that depend on TCIS.Observability.Classification:

Package Downloads
TCIS.Http.Grpc

TCIS Core Framework is an application framework for building modular, multi-tenant applications on ASP.NET Core. gRPC client and server integration for TCIS Framework.

TCIS.Http.RestEase

TCIS Core Framework is an application framework for building modular, multi-tenant applications on ASP.NET Core. RestEase client integration for TCIS Framework.

TCIS.AspNetCore.Diagnostics

TCIS Core Framework is an application framework for building modular, multi-tenant applications on ASP.NET Core. ASP.NET Core Diagnostics and Observability integration for TCIS Framework.

TCIS.Persistence.EntityFrameworkCore

TCIS Core Framework is an application framework for building modular, multi-tenant applications on ASP.NET Core. Core Persistence EntityFrameworkCore implementation.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0-rc.10 59 7/24/2026
1.0.0-rc.9 32 7/24/2026