diff --git a/test/ModularPipelines.UnitTests/ScaleTests.cs b/test/ModularPipelines.UnitTests/ScaleTests.cs
new file mode 100644
index 0000000000..a3ddaa4bbc
--- /dev/null
+++ b/test/ModularPipelines.UnitTests/ScaleTests.cs
@@ -0,0 +1,625 @@
+using System.Collections.Concurrent;
+using Microsoft.Extensions.DependencyInjection;
+using ModularPipelines.Context;
+using ModularPipelines.Extensions;
+using ModularPipelines.Models;
+using ModularPipelines.Modules;
+using ModularPipelines.TestHelpers;
+using Status = ModularPipelines.Enums.Status;
+
+namespace ModularPipelines.UnitTests;
+
+///
+/// Tests for large-scale pipeline scenarios to validate scalability,
+/// performance, and correct behavior with many modules.
+///
+///
+/// These tests verify that the pipeline engine handles large numbers of modules
+/// correctly, including proper parallelization, dependency ordering, and resource management.
+///
+/// Note: ModularPipelines requires each module to be a unique type (by design,
+/// dependencies are resolved by type). These tests use generic types with different
+/// type parameters to create many unique module types at compile time.
+///
+[TUnit.Core.NotInParallel]
+public class ScaleTests : TestBase
+{
+ #region Shared Tracking Infrastructure
+
+ ///
+ /// Thread-safe tracker for recording module execution order and timing.
+ /// Each test creates a fresh instance for test isolation.
+ ///
+ public class ExecutionTracker
+ {
+ private readonly ConcurrentDictionary _executionRecords = new();
+ private int _completionCounter;
+
+ ///
+ /// Records the start of module execution.
+ ///
+ /// The name/type of the module.
+ public void RecordStart(string moduleName)
+ {
+ _executionRecords[moduleName] = new ExecutionRecord(moduleName, 0, DateTimeOffset.UtcNow, DateTimeOffset.MinValue);
+ }
+
+ ///
+ /// Marks a module as completed and records completion order.
+ ///
+ /// The module name.
+ public void MarkCompleted(string moduleName)
+ {
+ var completionOrder = Interlocked.Increment(ref _completionCounter);
+ if (_executionRecords.TryGetValue(moduleName, out var record))
+ {
+ _executionRecords[moduleName] = record with { CompletionOrder = completionOrder, EndTime = DateTimeOffset.UtcNow };
+ }
+ }
+
+ ///
+ /// Checks if a module has completed.
+ ///
+ /// The module name.
+ /// True if the module has completed.
+ public bool IsCompleted(string moduleName)
+ {
+ return _executionRecords.TryGetValue(moduleName, out var record) && record.CompletionOrder > 0;
+ }
+
+ ///
+ /// Gets all execution records ordered by completion order.
+ ///
+ public IReadOnlyList GetRecords()
+ {
+ return _executionRecords.Values.OrderBy(r => r.CompletionOrder).ToList();
+ }
+
+ ///
+ /// Gets a specific execution record by module name.
+ ///
+ public ExecutionRecord? GetRecord(string moduleName)
+ {
+ return _executionRecords.TryGetValue(moduleName, out var record) ? record : null;
+ }
+
+ ///
+ /// Gets the count of completed modules.
+ ///
+ public int CompletedCount => _executionRecords.Values.Count(r => r.CompletionOrder > 0);
+
+ ///
+ /// Gets the total count of recorded modules (started or completed).
+ ///
+ public int TotalRecordedCount => _executionRecords.Count;
+
+ ///
+ /// Gets whether the tracker is in a clean state (no records).
+ ///
+ public bool IsClean => _executionRecords.IsEmpty && _completionCounter == 0;
+ }
+
+ ///
+ /// Records execution details for a single module.
+ ///
+ public record ExecutionRecord(string ModuleName, int CompletionOrder, DateTimeOffset StartTime, DateTimeOffset EndTime);
+
+ #endregion
+
+ #region Generic Module Types for Scale Testing
+
+ // We use generic types with empty struct markers to create many unique module types.
+ // Each struct (M1, M2, M3, etc.) creates a distinct type for ScaleModule.
+
+ // Marker structs for creating unique generic types
+ public struct M1 { } public struct M2 { } public struct M3 { } public struct M4 { } public struct M5 { }
+ public struct M6 { } public struct M7 { } public struct M8 { } public struct M9 { } public struct M10 { }
+ public struct M11 { } public struct M12 { } public struct M13 { } public struct M14 { } public struct M15 { }
+ public struct M16 { } public struct M17 { } public struct M18 { } public struct M19 { } public struct M20 { }
+ public struct M21 { } public struct M22 { } public struct M23 { } public struct M24 { } public struct M25 { }
+ public struct M26 { } public struct M27 { } public struct M28 { } public struct M29 { } public struct M30 { }
+ public struct M31 { } public struct M32 { } public struct M33 { } public struct M34 { } public struct M35 { }
+ public struct M36 { } public struct M37 { } public struct M38 { } public struct M39 { } public struct M40 { }
+ public struct M41 { } public struct M42 { } public struct M43 { } public struct M44 { } public struct M45 { }
+ public struct M46 { } public struct M47 { } public struct M48 { } public struct M49 { } public struct M50 { }
+ public struct M51 { } public struct M52 { } public struct M53 { } public struct M54 { } public struct M55 { }
+ public struct M56 { } public struct M57 { } public struct M58 { } public struct M59 { } public struct M60 { }
+ public struct M61 { } public struct M62 { } public struct M63 { } public struct M64 { } public struct M65 { }
+ public struct M66 { } public struct M67 { } public struct M68 { } public struct M69 { } public struct M70 { }
+ public struct M71 { } public struct M72 { } public struct M73 { } public struct M74 { } public struct M75 { }
+ public struct M76 { } public struct M77 { } public struct M78 { } public struct M79 { } public struct M80 { }
+ public struct M81 { } public struct M82 { } public struct M83 { } public struct M84 { } public struct M85 { }
+ public struct M86 { } public struct M87 { } public struct M88 { } public struct M89 { } public struct M90 { }
+ public struct M91 { } public struct M92 { } public struct M93 { } public struct M94 { } public struct M95 { }
+ public struct M96 { } public struct M97 { } public struct M98 { } public struct M99 { } public struct M100 { }
+
+ ///
+ /// A generic module that can be instantiated with different type markers to create unique types.
+ ///
+ /// A marker type that makes this module unique.
+ public class ScaleModule(ExecutionTracker tracker) : Module
+ {
+ public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken)
+ {
+ // Use full generic type name to uniquely identify each module
+ var typeName = GetType().ToString();
+ tracker.RecordStart(typeName);
+ tracker.MarkCompleted(typeName);
+ return Task.FromResult(typeName);
+ }
+ }
+
+ #endregion
+
+ #region Test 1: Large Module Count (100 Independent Modules)
+
+ ///
+ /// Verifies that a pipeline with 100 independent modules completes successfully
+ /// and all modules execute.
+ ///
+ ///
+ /// This test validates:
+ /// - The pipeline can handle 100 modules without issues
+ /// - All modules complete successfully
+ /// - The pipeline status is successful
+ ///
+ [Test]
+ public async Task Pipeline_With100IndependentModules_CompletesSuccessfully()
+ {
+ // Arrange
+ var tracker = new ExecutionTracker();
+ await Assert.That(tracker.IsClean).IsTrue();
+ const int expectedModuleCount = 100;
+
+ var builder = TestPipelineHostBuilder.Create()
+ .ConfigureServices((_, services) => services.AddSingleton(tracker))
+ // Add 100 independent modules (each with a unique type)
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>().AddModule>().AddModule>()
+ .AddModule>();
+
+ // Act
+ var pipelineSummary = await builder.ExecutePipelineAsync();
+
+ // Assert
+ await Assert.That(pipelineSummary.Status).IsEqualTo(Status.Successful);
+ await Assert.That(tracker.CompletedCount).IsEqualTo(expectedModuleCount);
+ }
+
+ #endregion
+
+ #region Test 2: Deep Dependency Chain (50 Modules)
+
+ // Chain marker structs for dependency chain test
+ public struct C1 { } public struct C2 { } public struct C3 { } public struct C4 { } public struct C5 { }
+ public struct C6 { } public struct C7 { } public struct C8 { } public struct C9 { } public struct C10 { }
+ public struct C11 { } public struct C12 { } public struct C13 { } public struct C14 { } public struct C15 { }
+ public struct C16 { } public struct C17 { } public struct C18 { } public struct C19 { } public struct C20 { }
+ public struct C21 { } public struct C22 { } public struct C23 { } public struct C24 { } public struct C25 { }
+ public struct C26 { } public struct C27 { } public struct C28 { } public struct C29 { } public struct C30 { }
+ public struct C31 { } public struct C32 { } public struct C33 { } public struct C34 { } public struct C35 { }
+ public struct C36 { } public struct C37 { } public struct C38 { } public struct C39 { } public struct C40 { }
+ public struct C41 { } public struct C42 { } public struct C43 { } public struct C44 { } public struct C45 { }
+ public struct C46 { } public struct C47 { } public struct C48 { } public struct C49 { } public struct C50 { }
+
+ // Chain modules - each depends on the previous one
+ public class ChainModule1(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain1"); tracker.MarkCompleted("Chain1"); return Task.FromResult(1); } }
+
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule2(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain2"); tracker.MarkCompleted("Chain2"); return Task.FromResult(2); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule3(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain3"); tracker.MarkCompleted("Chain3"); return Task.FromResult(3); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule4(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain4"); tracker.MarkCompleted("Chain4"); return Task.FromResult(4); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule5(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain5"); tracker.MarkCompleted("Chain5"); return Task.FromResult(5); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule6(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain6"); tracker.MarkCompleted("Chain6"); return Task.FromResult(6); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule7(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain7"); tracker.MarkCompleted("Chain7"); return Task.FromResult(7); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule8(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain8"); tracker.MarkCompleted("Chain8"); return Task.FromResult(8); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule9(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain9"); tracker.MarkCompleted("Chain9"); return Task.FromResult(9); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule10(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain10"); tracker.MarkCompleted("Chain10"); return Task.FromResult(10); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule11(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain11"); tracker.MarkCompleted("Chain11"); return Task.FromResult(11); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule12(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain12"); tracker.MarkCompleted("Chain12"); return Task.FromResult(12); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule13(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain13"); tracker.MarkCompleted("Chain13"); return Task.FromResult(13); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule14(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain14"); tracker.MarkCompleted("Chain14"); return Task.FromResult(14); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule15(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain15"); tracker.MarkCompleted("Chain15"); return Task.FromResult(15); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule16(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain16"); tracker.MarkCompleted("Chain16"); return Task.FromResult(16); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule17(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain17"); tracker.MarkCompleted("Chain17"); return Task.FromResult(17); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule18(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain18"); tracker.MarkCompleted("Chain18"); return Task.FromResult(18); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule19(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain19"); tracker.MarkCompleted("Chain19"); return Task.FromResult(19); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule20(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain20"); tracker.MarkCompleted("Chain20"); return Task.FromResult(20); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule21(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain21"); tracker.MarkCompleted("Chain21"); return Task.FromResult(21); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule22(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain22"); tracker.MarkCompleted("Chain22"); return Task.FromResult(22); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule23(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain23"); tracker.MarkCompleted("Chain23"); return Task.FromResult(23); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule24(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain24"); tracker.MarkCompleted("Chain24"); return Task.FromResult(24); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule25(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain25"); tracker.MarkCompleted("Chain25"); return Task.FromResult(25); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule26(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain26"); tracker.MarkCompleted("Chain26"); return Task.FromResult(26); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule27(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain27"); tracker.MarkCompleted("Chain27"); return Task.FromResult(27); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule28(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain28"); tracker.MarkCompleted("Chain28"); return Task.FromResult(28); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule29(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain29"); tracker.MarkCompleted("Chain29"); return Task.FromResult(29); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule30(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain30"); tracker.MarkCompleted("Chain30"); return Task.FromResult(30); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule31(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain31"); tracker.MarkCompleted("Chain31"); return Task.FromResult(31); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule32(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain32"); tracker.MarkCompleted("Chain32"); return Task.FromResult(32); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule33(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain33"); tracker.MarkCompleted("Chain33"); return Task.FromResult(33); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule34(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain34"); tracker.MarkCompleted("Chain34"); return Task.FromResult(34); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule35(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain35"); tracker.MarkCompleted("Chain35"); return Task.FromResult(35); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule36(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain36"); tracker.MarkCompleted("Chain36"); return Task.FromResult(36); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule37(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain37"); tracker.MarkCompleted("Chain37"); return Task.FromResult(37); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule38(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain38"); tracker.MarkCompleted("Chain38"); return Task.FromResult(38); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule39(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain39"); tracker.MarkCompleted("Chain39"); return Task.FromResult(39); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule40(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain40"); tracker.MarkCompleted("Chain40"); return Task.FromResult(40); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule41(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain41"); tracker.MarkCompleted("Chain41"); return Task.FromResult(41); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule42(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain42"); tracker.MarkCompleted("Chain42"); return Task.FromResult(42); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule43(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain43"); tracker.MarkCompleted("Chain43"); return Task.FromResult(43); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule44(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain44"); tracker.MarkCompleted("Chain44"); return Task.FromResult(44); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule45(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain45"); tracker.MarkCompleted("Chain45"); return Task.FromResult(45); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule46(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain46"); tracker.MarkCompleted("Chain46"); return Task.FromResult(46); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule47(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain47"); tracker.MarkCompleted("Chain47"); return Task.FromResult(47); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule48(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain48"); tracker.MarkCompleted("Chain48"); return Task.FromResult(48); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule49(ExecutionTracker tracker) : Module { public override Task ExecuteAsync(IModuleContext context, CancellationToken cancellationToken) { tracker.RecordStart("Chain49"); tracker.MarkCompleted("Chain49"); return Task.FromResult(49); } }
+ [ModularPipelines.Attributes.DependsOn] public class ChainModule50(ExecutionTracker tracker) : Module