release: Operational v1.0.0 and Cache v1.3.4 - #62
Merged
Merged
Conversation
Add release notes for Sanitization v1.0.0 and update documentation
- Add diagnostic request headers for debugging, tracing, event logging, cache control, and performance profiling - Implement thread-safe event capture for traces, breadcrumbs, errors, and exceptions - Add configurable trace filtering, sensitive-data obfuscation, and automatic masking - Support forwarding enabled diagnostic events to the disk event log
- Capture exceptions, errors, and breadcrumbs through the diagnostics service - Enrich captured issues with caller member, file, and line context - Preserve exception metadata and attach supplemental capture data - Prevent capture failures from escaping while logging forwarding errors
- Add auto-discoverable Operational feature module with shared feature-flag resolution - Register NoOp diagnostics and issue services when the feature is disabled - Register diagnostics, issue capture, event logging, retry policies, and logging provider when enabled - Preserve standalone Operational registration without requiring the Features engine
- Add explicit DI registration for diagnostics, issue capture, event logging, retries, and logging - Register NoOp services and avoid background work when Operational is disabled - Add application startup integration for eager event-log writer initialization and retention cleanup - Keep Operational usable without requiring the Features framework
- Define the net8.0 Operational package with documentation and NuGet metadata - Reference Operational abstractions, feature integration, and sanitization contracts - Add ASP.NET Core framework support and Polly resilience dependencies - Include package README and NuGet icon assets
- Document diagnostics, issue capture, logging, event writing, retention, and resilience components - Add explicit DI and optional Features Framework integration examples - Describe configuration, package dependencies, target framework, and design boundaries - Clarify dependency injection, correlation ID, and Windows Event Log provider decisions
- Add abstractions for request diagnostics, issue management, and event viewer integration - Define trace, breadcrumb, exception, and error capture APIs with contextual metadata - Establish sanitized payload, obfuscation, feature-state, and event-log capabilities - Preserve provider isolation through pluggable event viewer and future issue-tracking implementations
- Add enablement control with safe NoOp behavior by default - Configure disk event-log location, retention period, and application naming - Define default logging level and retry attempt limits for HTTP and method-level policies
- Add breadcrumb levels for application flow checkpoints - Add diagnostic event types for traces, breadcrumbs, exceptions, and errors - Add trace levels for filtering diagnostic event severity - Enable string-based JSON serialization for diagnostic event types
- Add diagnostic event and payload models with timestamp, severity, message, stack trace, and data - Add platform-neutral event viewer log entry model for pluggable providers - Add sensitive data attribute for configurable property masking - Configure JSON serialization to omit null diagnostic fields
- Provide inert diagnostics, issue management, and event viewer services for disabled Operational flows - Preserve dependency resolution without producing events or starting downstream work - Pass exceptions through unchanged while keeping capture operations non-throwing - Establish provider override floors for future platform-specific implementations
- Write diagnostic events as NDJSON through a background queue - Organize log files by application, date, and correlation identifier - Add per-file synchronization and best-effort event viewer failure forwarding - Add asynchronous retention cleanup for expired date-partitioned logs - Support graceful writer shutdown through disposal
- Add custom logger and provider that forward traces and exceptions to request diagnostics - Map Microsoft logging levels to operational trace levels and honor request trace-level headers - Sanitize log messages and exception data before diagnostics, disk, or event viewer forwarding - Cache loggers by category and provide no-op scope and queued write request support
- Add shared HTTP resilience pipeline with exponential backoff, jitter, and circuit breaking - Retry transient server, timeout, rate-limit, and network failures while excluding permanent client errors - Provide synchronous and asynchronous retry policies for general operations - Log retry attempts and circuit state transitions - Use a no-op pipeline in detected test hosts to avoid backoff delays
- Test request-header enablement, trace filtering, event capture, and payload behavior - Verify issue capture forwarding, exception data enrichment, and safe failure handling - Cover asynchronous event-log writing, cleanup behavior, and disposal - Validate NoOp service guarantees and retry policy success paths
- Provide HTTP context accessors with configurable diagnostic headers - Add default operational options and inert event-log writer factories - Simplify isolated service setup without disk writes or active request contexts
- Configure net8.0 xUnit test project with coverage collection - Add test SDK, xUnit runner, and shared test project references - Keep the test project non-packable and nullable-enabled
- Define cross-platform netstandard2.0 and net8.0 targets for Operational contracts and NoOp services - Add NuGet metadata, generated documentation, README, and package icon configuration - Reference logging abstractions and System.Text.Json without requiring ASP.NET Core
- Describe framework-agnostic diagnostics, issue capture, event viewer, options, models, and NoOp services - Document supported target frameworks, dependency boundaries, and zero-registration behavior - Add namespace usage examples and explain optional Features Framework integration
- Document package roles, dependency direction, public contracts, models, and configuration - Describe diagnostics, issue capture, event logging, custom logging, retry policies, and DI integration - Record design decisions around NoOp safe-off behavior, provider isolation, sanitization, and concurrency - Capture two-layer feature gating, host integration examples, known gaps, risks, and future provider plans
- Add NuGet badges and package-family overview for Operational abstractions and implementation packages - Add package links, installation commands, usage examples, and diagnostic header guidance - Update target framework and ASP.NET Core support listings - Link Operational API and architecture documentation
- Document Operational package topology and standalone or Features Framework integration - Add independent Operational version-family rules and workflow dispatch configuration - Link Operational API and architecture references in the repository documentation index
- Add the sanitization package family to the repository versioning model - Define workflow dispatch ownership for sanitization releases
- Register Operational abstractions, implementation, and test projects - Add Debug and Release build configurations for the new projects - Organize Operational projects under a dedicated solution folder
- Clarify that module-stage logging uses a placeholder logger before the DI container is built - Resolve memory and disk cache services from the completed container during pipeline configuration - Log the concrete implementations actually bound to cache service contracts
- Explain that DI validation may construct the NoOp floor even when a real provider is active - Rename the log message to identify safe-off construction without implying service resolution
- Explain that DI validation may construct the NoOp disk cache floor even when a real provider is active - Rename the log message to identify safe-off construction without implying disk cache resolution
- Inject a logger into the BitFaster cache service - Log configured cache capacity during initialization - Clarify that constructor execution does not prove the provider is the active DI implementation
- Add Microsoft.Extensions.Logging.Abstractions for BitFaster cache diagnostics
- Update the Cache family version to 1.3.4 - Remove the outdated version rationale comment
- Define the PowerCSharpOperationalVersion property at version 1.0.0 - Document the package family scope covering diagnostics, logging, event logging, and resilience
- Return null from trace, breadcrumb, exception, and error capture methods when diagnostics are not enabled - Align event-capture behavior with the diagnostics service contract and NoOp expectations
- Replace exact event-count assertion with a non-empty check to avoid brittle expectations
feat(operational): add Operational package family for diagnostics and resilience
…feature/cache-diagnostics
feat(cache): add cache implementation diagnostics and operational support
- Delete the temporary release test probe file from the repository
- Add operational as a release package family option - Map operational releases to the operational version element and tag prefix
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Releases two version families that are ready on
developbut not yet inmain:main) — cache implementation diagnostics logging, BitFaster startup/config logging. From PR feat(cache): add cache implementation diagnostics and operational support #60.Directory.Build.propsondevelopalready carries the target versions (PowerCSharpOperationalVersion=1.0.0,PowerCSharpFeatureCacheVersion=1.3.4) — no furtherworkflow_dispatchbump needed for either family, matching the precedent from the Sanitization v1.0.0 release. After merge, the standard tags (operational-v1.0.0,cache-v1.3.4) still need to be pushed manually to trigger the pack/publish job for those specific versions, or the merge-triggered pack/publish (via therelease/*→mainPR-merge condition) will pick up whatever is currently inDirectory.Build.props.Changes in this PR
CHANGELOG.md— added[Operational 1.0.0]and[Cache 1.3.4]sections (previously undocumented).docs/PowerCSharp.Operational*.mdwere already fully written ondevelopas part of PR feat(operational): add Operational package family for diagnostics and resilience #61 — no gaps found there..github/workflows/ci-cd.ymlneeds a manual edit — my GitHub token doesn't have theworkflowscope required to modify files under.github/workflows/via the API. Please add, mirroring the existingsanitizationentry:workflow_dispatch.inputs.package_family.options:- operational # PowerCSharpOperationalVersion — Operational.Abstractions, Operationalupdate-versionjob'scase "$FAMILY"block:RELEASE_TEST_PROBE.md— a throwaway file I created to diagnose a write-access issue during this session. Not meant to ship.dotnet build/dotnet testin this session (no local .NET tooling, and CI network access wasn't available for git push). Please confirm theBuild and TestGitHub Action is green on this branch before merging.Marked as draft until the above are resolved and you're ready to merge.