Conversation
…arkdownSummaryGithub, and appending the markdown summary to the job summary (.github/
workflows/docker-ci.yml:115-125).
- Added PR-only comment step to post the same coverage summary back to the pull request using actions/github-script@v7 (.github/workflows/docker-ci.yml:127-
139).
- Coverage artifacts upload now includes both raw Cobertura outputs and the rendered report (.github/workflows/docker-ci.yml:150-158).
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - name: Comment coverage summary on PR | ||
| if: ${{ steps.extract-artifacts.outcome == 'success' && github.event_name == 'pull_request' }} | ||
| uses: actions/github-script@v7 | ||
| with: | ||
| script: | | ||
| const fs = require('fs'); | ||
| const body = fs.readFileSync('artifacts/coverage-report/SummaryGithub.md', 'utf8'); | ||
| await github.rest.issues.createComment({ | ||
| owner: context.repo.owner, | ||
| repo: context.repo.repo, | ||
| issue_number: context.issue.number, | ||
| body | ||
| }); |
There was a problem hiding this comment.
Add issues permission for PR coverage comments
The new actions/github-script step calls github.rest.issues.createComment but the workflow’s permission block only grants contents, packages, and id-token. Because unspecified scopes default to none, the GITHUB_TOKEN does not have issues (or pull-requests) write access and this step will return 403 whenever the job runs on a pull request, causing the workflow to fail. Grant issues: write or pull-requests: write before attempting to create the comment.
Useful? React with 👍 / 👎.
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 45.5%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
- Added targeted coverage for Result collection helpers (null guards, failure short-circuiting, cancellation and exception paths) in tests/Hugo.UnitTests/
ResultCollectionsTests.cs (lines 10-107).
- Extended streaming coverage: new iterator-failure, inner/outer cancellation, and windowing scenarios in tests/Hugo.UnitTests/ResultStreamingTests.cs (lines
401-451) and a feature-level windowing flow in tests/Hugo.FeatureTests/Results/ResultStreamingFeatureTests.cs:57-109.
- Covered compensation handling on secondary winners in tests/Hugo.IntegrationTests/ResultWhenAnyIntegrationTests.cs:8-35 and adjusted the retry compensation
unit test to match current behavior (tests/Hugo.UnitTests/ResultOperatorsTests.cs:59-74).
- Relaxed Redis deterministic store test timeouts to reduce flakiness (tests/Hugo.Deterministic.Redis.Tests/RedisDeterministicStateStoreTests.cs:35,53).
- Regenerated coverage reports (coverage-report/Summary.json, coverage-report/index.html); Result class coverage now 71.7% (923/1286 lines) with broader branch
coverage, and streaming/window paths are now exercised.
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
…-cancellation iteration and channel readers (tests/Hugo.UnitTests/
ResultStreamingTests.cs:561, 579) plus feature-level coverage of the same flow (tests/Hugo.FeatureTests/Results/ResultStreamingFeatureTests.cs:113).
- Hardened Result exception handling with constructor coverage for wrapped errors, default and message-only scenarios (tests/Hugo.UnitTests/ResultTests.cs:927,
940, 949).
- Increased ResultPipeline retry logging coverage via integration tests that exercise transient-retry success and full exhaustion paths, capturing logger event
IDs 2001/2002/2003 (tests/Hugo.IntegrationTests/ResultPipelineRetryLoggingTests.cs:13, 39).
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 47.2%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
…on scopes on failure before running compensations so compensation errors can be surfaced.
- Added targeted unit coverage:
- Retry compensation aggregation in tests/Hugo.UnitTests/ResultOperatorsTests.cs:55-78.
- MapStream async exception/cancel paths and typed calls plus a reusable throwing enumerable in tests/Hugo.UnitTests/ResultStreamingTests.cs (see around
lines 60-90 and helper near file end).
- Sequence/Traverse async enumeration throws in tests/Hugo.UnitTests/ResultCollectionsTests.cs:73-114.
- Fallback edge cases (canceled tier, unspecified/aggregate errors, pre-canceled token) in tests/Hugo.UnitTests/ResultFallbackTests.cs:70-115.
- New integration coverage for WhenAll cancellation/compensation in tests/Hugo.IntegrationTests/ResultWhenAllIntegrationTests.cs.
- Feature coverage for FanIn failure surface (relaxed to observed behaviour) in tests/Hugo.FeatureTests/Results/ResultStreamingFeatureTests.cs:150-166.
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 48.2%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
…ation sentinel and fan-in close) in tests/Hugo.UnitTests/ResultStreamingTests.cs:689-737.
- New struct-focused unit suite exercises casting, compensation registration, async switching, fallback factories and tuple conversions in tests/
Hugo.UnitTests/ResultStructCoverageTests.cs:5-65.
- Added ctor coverage for ResultException in tests/Hugo.UnitTests/ResultExceptionTests.cs:5-31 and completion-source cancellation/exception propagation in
tests/Hugo.UnitTests/ResultCompletionSourceTests.cs:5-30.
- Extended fallback tier exercises to cover sync factory guards and multi-strategy tiers in tests/Hugo.UnitTests/ResultFallbackTests.cs:12-74.
- Integration path now verifies cancellation handling after a winner in tests/Hugo.IntegrationTests/ResultWhenAnyIntegrationTests.cs:37-66; feature path adds
fan-in cancellation propagation in tests/Hugo.FeatureTests/Results/ResultStreamingFeatureTests.cs:167-191.
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 47.8%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
- Expanded result struct unit coverage: added guard checks, compensation exposure, and tuple round-trips for Result<T> (tests/Hugo.UnitTests/
ResultStructCoverageTests.cs:9-102).
- Broadened integration coverage for Result.WhenAll cancellation metadata and Result<T> compensation/conversion helpers, plus Result.Sequence/Traverse
aggregation scenarios (tests/Hugo.IntegrationTests/ResultWhenAllCancellationMetadataIntegrationTests.cs:14-110).
- Added feature-level scenarios for async SequenceAsync and TraverseAsync to exercise happy path and exception translation (tests/Hugo.FeatureTests/Results/
ResultCollectionsFeatureTests.cs:12-49).
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 49%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
…entinel fallback path when a bounded writer is full; new test
ToChannelAsync_ShouldFallbackToWriteAsyncWhenBufferIsFull at tests/Hugo.UnitTests/ResultStreamingTests.cs:536 exercises the ForwardToChannelInternalAsync
catch/fallback branch.
- Expanded WhenAll cancellation integration coverage: BuildWhenAllCancellationErrorAsync_ShouldCapturePendingOperationExceptions (tests/Hugo.IntegrationTests/
ResultWhenAllCancellationMetadataIntegrationTests.cs:66) now forces a mix of canceled, faulted, and failed operations plus failing compensation, driving the
cold paths in Result.WhenAll’s cancellation aggregation.
- Added feature-level fallback coverage with TieredFallbackAsync_ShouldSkipUnrequestedCancellationsAndUseNextTier (tests/Hugo.FeatureTests/Results/
ResultFallbackFeatureTests.cs:12), ensuring tiered fallbacks ignore unsolicited cancellations and succeed on a later tier.
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 49.1%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
…(≈385 words). It outlines project structure, key build/test/pack/run commands, coding and naming rules, testing practices, PR/commit expectations, and security tips tailored to Hugo’s concurrency and determinism libraries. Let me know if you want coverage thresholds or release steps added. Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 49.8%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
…) with
default + quick jobs, GitHub markdown export, memory diagnoser, rank column,
and a stable artifacts path so results land in BenchmarkDotNet.Artifacts/
regardless of run directory.
- Introduced category constants (benchmarks/Hugo.Benchmarks/
BenchmarkCategories.cs) and tagged benchmarks to split Go concurrency
(go, channels, locks, sync, pools) from Results pipelines (results). All
benchmark types are now public for consistent discovery.
- Split MutexBenchmarks into its own file (benchmarks/Hugo.Benchmarks/
MutexBenchmarks.cs) to keep Program.cs focused on the BDN entry point and
config wiring.
- Applied categories across existing suites (ChannelFactoryBenchmarks.cs,
PrioritizedChannelBenchmarks.cs, SelectBenchmarks.cs,
WaitGroupBenchmarks.cs, RwMutexBenchmarks.cs, OnceBenchmarks.cs,
PoolBenchmarks.cs, ResultPipelineBenchmarks.cs) so you can filter Go vs
Results runs quickly.
- Marked benchmark and profiling projects as non-packable and code-style-
enforced (benchmarks/Hugo.Benchmarks/Hugo.Benchmarks.csproj, benchmarks/
Hugo.Profiling/Hugo.Profiling.csproj).
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 49.4%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
- Added shared categories for queues/timers and created new suites:
- TaskQueueBenchmarks compares Hugo TaskQueue lease/complete throughput against bounded channel throughput.
- GoTickerBenchmarks measures tick consumption for Go.NewTicker versus PeriodicTimer.
- ResultMetadataBenchmarks stresses Error.WithMetadata in failure-heavy pipelines versus a plain pipeline.
- Centralized config already in use; categories let you target runs quickly (--anyCategories go, queues, timers, results).
- Both benchmarking and profiling projects remain non-packable/code-style-enforced; builds verified (dotnet build benchmarks/Hugo.Benchmarks/Hugo.Benchmarks.csproj -c Release and
benchmarks/Hugo.Profiling/Hugo.Profiling.csproj -c Release).
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 49.1%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
…ure missing areas end-to-end:
- New benchmarks:
- DeterministicEffectStoreBenchmarks (capture vs replay) in benchmarks/Hugo.Benchmarks/DeterministicEffectStoreBenchmarks.cs — targets the in-memory deterministic store to gauge
persist/replay cost.
- RetryPolicyBenchmarks in benchmarks/Hugo.Benchmarks/RetryPolicyBenchmarks.cs — compares direct success to retries that succeed late or always fail.
- DiagnosticsOverheadBenchmarks in benchmarks/Hugo.Benchmarks/DiagnosticsOverheadBenchmarks.cs — WaitGroup microbenchmark that can run with or without instrumentation.
- Categories expanded (deterministic, diagnostics).
- Config changes:
- BenchmarkConfig adds a diag job with HUGO_BENCH_DIAGNOSTICS=1 so instrumentation overhead is isolated per-process; artifacts path, default, and quick jobs retained.
- Build verified: dotnet build benchmarks/Hugo.Benchmarks/Hugo.Benchmarks.csproj -c Release succeeded.
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 49.6%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
…lines: - New latency/timeout suite: TimeoutPolicyBenchmarks.cs compares direct execution vs ResultPipeline.WithTimeoutAsync across step counts/delays. - New lease resilience suite: TaskQueueHeartbeatBenchmarks.cs measures heartbeat/complete vs expire/requeue behavior for TaskQueue. - Deterministic effects now vary payload sizes (256B vs 96KB) to catch LOH/serialization costs; server-GC jobs remain enforced. - All benchmarks build cleanly (dotnet build benchmarks/Hugo.Benchmarks/Hugo.Benchmarks.csproj -c Release). Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 49.6%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
- Deterministic effect store bench now precomputes payloads in setup and reuses them, avoiding per-iteration allocations and better isolating store serialization cost
(DeterministicEffectStoreBenchmarks.cs).
- Timeout policy bench replaces Task.Delay with CPU-bound work to cut scheduler noise and keep focus on pipeline/timeout overhead (TimeoutPolicyBenchmarks.cs).
- Task queue heartbeat bench removes wall-clock sleeps (uses light CPU work) and sets tighter heartbeat interval; capacities unchanged (TaskQueueHeartbeatBenchmarks.cs).
- Benchmark config still server-GC + diag job; full build succeeds (dotnet build benchmarks/Hugo.Benchmarks/Hugo.Benchmarks.csproj -c Release).
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
- Added a deterministic FakeTimeProvider and wired it into heartbeat and timeout benchmarks to eliminate scheduler jitter and make lease/timeout timing repeatable (benchmarks/
Hugo.Benchmarks/Time/FakeTimeProvider.cs, updated TaskQueueHeartbeatBenchmarks.cs, TimeoutPolicyBenchmarks.cs).
- Improved deterministic state/store coverage: new DeterministicStateStoreBenchmarks.cs now measures in-memory TryAdd/Get, clone path, and JSON round-trip to mimic provider
serialization cost without real services.
- Diagnostics overhead bench now parameterizes instrumentation on/off per run, isolating overhead cleanly.
- Deterministic effect store bench reuses precomputed payloads, avoiding per-iteration allocations.
- All benchmarks build successfully (dotnet build benchmarks/Hugo.Benchmarks/Hugo.Benchmarks.csproj -c Release).
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
- Introduced benchmarks/Hugo.Benchmarks/Time/FakeTimeProvider.cs and wired it into heartbeat and timeout benches to remove scheduler jitter: TaskQueueHeartbeatBenchmarks now advances
fake time for heartbeats/expirations; TimeoutPolicyBenchmarks uses fake time in its timeout path.
- Removed remaining wall-clock sleeps: PrioritizedChannelBenchmarks replaces Task.Delay with deterministic CPU work; SelectBenchmarks now uses a lightweight synthetic timeout task
instead of Task.Delay.
- Added provider-like deterministic store benchmark with JSON round-trip to mimic serializati
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 49.5%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
…/ResultStreamingBenchmarks.cs covering every public method in Result.Streaming.cs (map/flat-map, filter, channel
helpers, fan-in/out, window, partition, foreach variants, all tap variants, collect errors); each benchmark exercises success and failure paths with reusable async enumerables and
prebuilt result arrays.
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 49.2%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 50%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 16.3%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 88.2%
|
…(capacity helper added in src/Hugo/Results/Result.Collections.cs, applied across Sequence/
Traverse and in src/Hugo/Results/Result.Operators.cs for Group, Partition, Window).
- Removed unnecessary Task/iterator allocations: rewrote fallback tier factories without LINQ (src/Hugo/Results/Result.Fallbacks.cs), replaced Task.Run fan-out in
WhenAny with direct async starts (src/Hugo/Results/Result.WhenAll.cs), and built fan-in forwarders without LINQ while keeping single-consumption of ValueTasks
(src/Hugo/Results/Result.Streaming.cs with targeted CA2012 suppression).
- Reduced per-iteration allocations in the windowing channel helper by hoisting race delegates and adding non-capturing cancellation (src/Hugo/Results/
ResultPipelineChannels.cs); cancellation disposals now use ConfigureAwait(false) where appropriate (src/Hugo/Results/ResultPipelineWaitGroupExtensions.cs,
ResultPipelineChannels.cs).
- Verified build passes: dotnet build Hugo.slnx -v minimal succeeded.
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
- Reused per-iteration buffers in select logic to cut repeated allocations and GC churn (src/Hugo/Go/Select/Go.Select.cs).
- Simplified write-with-deadline to avoid linked CTS creation each attempt and rely on token-aware delay/when-any, keeping hot path lean (src/Hugo/Go/Channels/
GoChannelHelpers.cs).
- Sized channel source collection up front when a count is known to prevent list growth thrash (src/Hugo/Go/Channels/GoChannelHelpers.cs).
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
…askQueue plumbing (src/Hugo/Primitives/TaskQueue.cs) so enqueues/leasing no longer allocate heap objects, keeping
- Simplified pump teardown in TaskQueueChannelAdapter (src/Hugo/Primitives/TaskQueue/TaskQueueChannelAdapter.cs) by replacing LINQ Aggregate with a small loop to avoid extra
allocations/generics overhead during shutdown.
- Hardened ErrGroup.Dispose (src/Hugo/Primitives/ErrGroup.cs) to cancel and dispose its CTS, ensuring deterministic resource cleanup per the perf guidelines’ “prefer explicit
cleanup” rule.
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
…ly, allocation-free reads (src/Hugo/Primitives/ErrorCodes.cs), aligning with the perf guideline to improve locality
and cut hot-path allocations.
- Audited async sync primitives to avoid context-capture overhead; ensured waits use ConfigureAwait(false) across the task-queue and locking surface (notably src/Hugo/Primitives/
RwMutex.cs and existing task-queue wrappers).
- Build verification: dotnet build Hugo.slnx (passes).
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
…s: new WithMetadata(ReadOnlySpan<KeyValuePair<string, object?>>) and Error.From(...,
ReadOnlySpan<KeyValuePair<string, object?>>) overloads, and a span-based FreezeMetadata to build a frozen dictionary without IEnumerable allocation churn. Keeps hot-path error
creation tighter for callers that can supply stack-allocated or pooled metadata buffers.
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
…oReadAsync no longer allocates per call; reduces hot-path GC churn for prioritized fan-in.
- Cached ActivitySourceOptions type/ctor in src/Hugo/GoDiagnostics.cs to avoid repeated reflection and keep trim/AOT analyzers quiet.
- Moved Redis deterministic payloads to source‑generated STJ metadata: src/Hugo.Deterministic.Redis/RedisDeterministicJsonContext.cs and updated RedisDeterministicStateStore.cs to
use JsonTypeInfo instead of runtime serialization.
- Enabled trim/AOT/single-file analyzers in project files for diagnostics, deterministic stores, and task-queue projects (src/Hugo.Diagnostics.OpenTelemetry/
Hugo.Diagnostics.OpenTelemetry.csproj and all deterministic/taskqueue csproj files).
- Replaced replication JSON setup with an AOT-safe converter: src/Hugo.TaskQueues.Replication/TaskQueueReplicationJsonSerialization.cs; removed the dynamic
DefaultJsonTypeInfoResolver usage and deleted the old context file.
- Build verification: dotnet build Hugo.slnx -v minimal (succeeds; existing 21 warnings remain from baseline).
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
…ueReplicationJsonSerialization now requires caller-provided JsonSerializerContext
metadata for payload types and uses type-info–driven read/write paths (no reflection, no DefaultJsonTypeInfoResolver, no MakeGenericType). Added
TaskQueueReplicationMetadataContext to supply metadata for replication-side types and reuse deterministic Error metadata.
- Added source-generated contexts for test payloads (tests/Hugo.UnitTests/TaskQueues/ReplicationTestJsonContext.cs, tests/Hugo.FeatureTests/TaskQueues/
ReplicationTestJsonContext.cs) and updated tests to pass context into CreateOptions<int>, keeping test coverage aligned with the new AOT-safe API.
- Prior changes retained: prioritized-channel lane caching, diagnostics reflection cache, Redis deterministic source-gen, trim/AOT analyzers enabled across
projects.
Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
…kQueueReplicationJsonSerialization now requires caller JsonSerializerContext metadata, uses precomputed JsonTypeInfo for payload/error/ownership/flags/kind, and avoids reflection/dynamic resolvers. Introduced shared metadata context TaskQueueReplicationMetadataContext and test contexts for payloads; updated unit/feature tests to pass contexts to CreateOptions so they continue to cover deterministic replay paths. Fixed ErrGroup.Token to remain usable after disposal (returns original linked token once disposed) and kept cancellation semantics intact; this resolves the flaky unit test. Addressed IL trim warning in GoDiagnostics by annotating cached ActivitySourceOptionsType. Signed-off-by: Soeren Magnus Olesen <soeren@molesen.ch>
SummarySummary
CoverageHugo - 49.8%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 4%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 60%
|
SummarySummary
CoverageHugo - 49.7%
Hugo.Deterministic.Cosmos - 20.7%
Hugo.Deterministic.Redis - 4%
Hugo.Deterministic.SqlServer - 13.4%
Hugo.Diagnostics.OpenTelemetry - 94.9%
Hugo.Profiling - 76.2%
Hugo.TaskQueues.Diagnostics - 93.2%
Hugo.TaskQueues.Replication - 60%
|
…arkdownSummaryGithub, and appending the markdown summary to the job summary (.github/