diff --git a/.claude/worktrees/agent-a04b8b58 b/.claude/worktrees/agent-a04b8b58 new file mode 160000 index 000000000..88eba753e --- /dev/null +++ b/.claude/worktrees/agent-a04b8b58 @@ -0,0 +1 @@ +Subproject commit 88eba753eeb0894144f4a1c55d63ac8ac73db3c5 diff --git a/.claude/worktrees/agent-a5344909 b/.claude/worktrees/agent-a5344909 new file mode 160000 index 000000000..88eba753e --- /dev/null +++ b/.claude/worktrees/agent-a5344909 @@ -0,0 +1 @@ +Subproject commit 88eba753eeb0894144f4a1c55d63ac8ac73db3c5 diff --git a/.claude/worktrees/agent-ab156e73 b/.claude/worktrees/agent-ab156e73 new file mode 160000 index 000000000..88eba753e --- /dev/null +++ b/.claude/worktrees/agent-ab156e73 @@ -0,0 +1 @@ +Subproject commit 88eba753eeb0894144f4a1c55d63ac8ac73db3c5 diff --git a/.claude/worktrees/agent-ab51559c b/.claude/worktrees/agent-ab51559c new file mode 160000 index 000000000..88eba753e --- /dev/null +++ b/.claude/worktrees/agent-ab51559c @@ -0,0 +1 @@ +Subproject commit 88eba753eeb0894144f4a1c55d63ac8ac73db3c5 diff --git a/edge4-debug.txt b/edge4-debug.txt new file mode 100644 index 000000000..ff4b9b7e6 --- /dev/null +++ b/edge4-debug.txt @@ -0,0 +1 @@ +After backtrack removal (3 pts): (1120,3) -> (1096,3) -> (1096,259) diff --git a/elksharp-annotated-final.svg b/elksharp-annotated-final.svg new file mode 100644 index 000000000..2fe8ddf6d --- /dev/null +++ b/elksharp-annotated-final.svg @@ -0,0 +1,1317 @@ + diff --git a/elksharp-bends.svg b/elksharp-bends.svg new file mode 100644 index 000000000..eb66a719d --- /dev/null +++ b/elksharp-bends.svg @@ -0,0 +1,1318 @@ + diff --git a/elksharp-forkjoin.svg b/elksharp-forkjoin.svg new file mode 100644 index 000000000..c11400f1b --- /dev/null +++ b/elksharp-forkjoin.svg @@ -0,0 +1,1303 @@ + diff --git a/elksharp-kinks.svg b/elksharp-kinks.svg new file mode 100644 index 000000000..a105d0304 --- /dev/null +++ b/elksharp-kinks.svg @@ -0,0 +1,1286 @@ + diff --git a/src/Router/__Libraries/StellaOps.Router.Transport.Messaging/MessagingTransportClient.cs b/src/Router/__Libraries/StellaOps.Router.Transport.Messaging/MessagingTransportClient.cs index bcb41bb91..b2e1012e2 100644 --- a/src/Router/__Libraries/StellaOps.Router.Transport.Messaging/MessagingTransportClient.cs +++ b/src/Router/__Libraries/StellaOps.Router.Transport.Messaging/MessagingTransportClient.cs @@ -235,7 +235,7 @@ public sealed class MessagingTransportClient : ITransportClient, IMicroserviceTr { try { - _logger.LogTrace("Consumer loop: calling LeaseAsync (batch={BatchSize})", _options.BatchSize); + _logger.LogWarning("[DIAG] Consumer loop: calling LeaseAsync (batch={BatchSize})", _options.BatchSize); var sw = System.Diagnostics.Stopwatch.StartNew(); var leases = await _serviceIncomingQueue.LeaseAsync( @@ -247,20 +247,20 @@ public sealed class MessagingTransportClient : ITransportClient, IMicroserviceTr if (leases.Count > 0) { - _logger.LogDebug("Consumer loop: leased {Count} messages in {ElapsedMs}ms, processing concurrently", + _logger.LogWarning("[DIAG] Consumer loop: leased {Count} messages in {ElapsedMs}ms, processing concurrently", leases.Count, sw.ElapsedMilliseconds); await Task.WhenAll(leases.Select(lease => ProcessLeaseWithGuardAsync(lease, HandleIncomingRequestAsync, cancellationToken))); - _logger.LogDebug("Consumer loop: finished processing {Count} messages", leases.Count); + _logger.LogWarning("[DIAG] Consumer loop: finished processing {Count} messages", leases.Count); } else { - _logger.LogTrace("Consumer loop: no messages, waiting for notification (lease took {ElapsedMs}ms)", + _logger.LogWarning("[DIAG] Consumer loop: no messages, waiting for notification (lease took {ElapsedMs}ms)", sw.ElapsedMilliseconds); await _serviceIncomingQueue.WaitForMessagesAsync(_options.HeartbeatInterval, cancellationToken); - _logger.LogTrace("Consumer loop: notification received or timeout, resuming"); + _logger.LogWarning("[DIAG] Consumer loop: notification received or timeout, resuming"); } } catch (OperationCanceledException) when (cancellationToken.IsCancellationRequested) @@ -713,15 +713,15 @@ public sealed class MessagingTransportClient : ITransportClient, IMicroserviceTr using var timeoutCts = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); timeoutCts.CancelAfter(TimeSpan.FromSeconds(55)); - _logger.LogDebug("Guard: processing message {MessageId}", lease.MessageId); + _logger.LogWarning("[DIAG] Guard: processing message {MessageId}", lease.MessageId); await handler(lease, timeoutCts.Token); sw.Stop(); - _logger.LogDebug("Guard: message {MessageId} processed in {ElapsedMs}ms", lease.MessageId, sw.ElapsedMilliseconds); + _logger.LogWarning("[DIAG] Guard: message {MessageId} processed in {ElapsedMs}ms", lease.MessageId, sw.ElapsedMilliseconds); await lease.AcknowledgeAsync(cancellationToken); } catch (OperationCanceledException) when (cancellationToken.IsCancellationRequested) { - _logger.LogDebug("Guard: message {MessageId} cancelled (shutdown) after {ElapsedMs}ms", lease.MessageId, sw.ElapsedMilliseconds); + _logger.LogWarning("[DIAG] Guard: message {MessageId} cancelled (shutdown) after {ElapsedMs}ms", lease.MessageId, sw.ElapsedMilliseconds); } catch (OperationCanceledException) { diff --git a/src/Web/StellaOps.Web/playwright-report-integrations/data/04d3c4228b9036cc25fc8f0c17c8b04927ae37ba.png b/src/Web/StellaOps.Web/playwright-report-integrations/data/04d3c4228b9036cc25fc8f0c17c8b04927ae37ba.png new file mode 100644 index 000000000..fe5d909f9 Binary files /dev/null and b/src/Web/StellaOps.Web/playwright-report-integrations/data/04d3c4228b9036cc25fc8f0c17c8b04927ae37ba.png differ diff --git a/src/Web/StellaOps.Web/playwright-report-integrations/data/0ad8f2c422f8f0a4cd554eeddd531543302591a0.md b/src/Web/StellaOps.Web/playwright-report-integrations/data/0ad8f2c422f8f0a4cd554eeddd531543302591a0.md new file mode 100644 index 000000000..03a0db405 --- /dev/null +++ b/src/Web/StellaOps.Web/playwright-report-integrations/data/0ad8f2c422f8f0a4cd554eeddd531543302591a0.md @@ -0,0 +1,36 @@ +# Page snapshot + +```yaml +- generic [ref=e2]: + - generic [ref=e5]: + - link "Skip to main content" [ref=e6] [cursor=pointer]: + - /url: "#main-content" + - navigation "Main navigation" [ref=e8]: + - img "Stella Ops" [ref=e11] + - navigation [ref=e12] + - button "Collapse sidebar" [ref=e14] [cursor=pointer]: + - img [ref=e15] + - generic [ref=e17]: + - banner [ref=e19]: + - generic [ref=e20]: + - status "Global context controls" [ref=e22]: + - generic [ref=e23]: + - radiogroup "Time window" [ref=e24] + - button [ref=e27] [cursor=pointer]: + - img [ref=e28] + - button [ref=e30] [cursor=pointer] + - button "User menu" [ref=e34] [cursor=pointer]: + - img [ref=e36] + - main [ref=e40]: + - generic [ref=e42]: + - generic [ref=e43]: + - generic [ref=e44]: + - heading "Integrations" [level=1] [ref=e45] + - paragraph [ref=e46]: External system connectors for release, security, and evidence flows. + - complementary + - generic [ref=e48]: + - tablist [ref=e49] + - tabpanel [ref=e50] + - generic: + - region "Notifications" +``` \ No newline at end of file diff --git a/src/Web/StellaOps.Web/playwright-report-integrations/data/26e0d1ca50a16485810d0ac04e00da44d0eab08d.zip b/src/Web/StellaOps.Web/playwright-report-integrations/data/26e0d1ca50a16485810d0ac04e00da44d0eab08d.zip new file mode 100644 index 000000000..13ec7c797 Binary files /dev/null and b/src/Web/StellaOps.Web/playwright-report-integrations/data/26e0d1ca50a16485810d0ac04e00da44d0eab08d.zip differ diff --git a/src/Web/StellaOps.Web/playwright-report-integrations/data/ea884e3fc4dd8f6f5e5d73a0964032eb595e97a0.png b/src/Web/StellaOps.Web/playwright-report-integrations/data/ea884e3fc4dd8f6f5e5d73a0964032eb595e97a0.png new file mode 100644 index 000000000..36e7c2f5e Binary files /dev/null and b/src/Web/StellaOps.Web/playwright-report-integrations/data/ea884e3fc4dd8f6f5e5d73a0964032eb595e97a0.png differ diff --git a/src/Web/StellaOps.Web/playwright-report-integrations/index.html b/src/Web/StellaOps.Web/playwright-report-integrations/index.html new file mode 100644 index 000000000..94782706d --- /dev/null +++ b/src/Web/StellaOps.Web/playwright-report-integrations/index.html @@ -0,0 +1,85 @@ + + + + +
+ + + +