Skip to content

Feature/version 11 - #178

Merged
giovanninocco merged 37 commits into
mainfrom
feature/version_11
Feb 28, 2026
Merged

giovanninocco merged 37 commits into
mainfrom
feature/version_11

Conversation

@giovanninocco

@giovanninocco giovanninocco commented Feb 27, 2026 •

Copy link
Copy Markdown
Member

What does this PR do?

Why is it important?

Related issues


Note

Medium Risk
Medium risk because it changes the solution entrypoint (genocs.sln→genocs.slnx), global SDK/versioning defaults, and introduces new Terraform/Helm/K8s and Docker env handling that can affect build and deployment pipelines.

Overview
Build/packaging is updated to use the new genocs.slnx solution: devcontainer and Sonar workflow now restore/build/test genocs.slnx, the legacy genocs.sln is removed, and global.json moves to .NET SDK 10.0.100 (with updated roll-forward). Directory.Build.props bumps package version to 9.0.0-beta01, sets LangVersion to latest, and enables package generation on build with standardized NuGet metadata.

Infrastructure and local ops are reworked/expanded: .env is removed and ignored, a new infrastructure/docker/.env.example is added, Docker compose files are updated to use env vars for secrets and improved service settings, and Makefile targets are repointed to infrastructure/terraform and new demo compose paths. Adds a full Azure Terraform module (ACR + App Services + App Insights/Log Analytics + autoscale + scripts/docs), plus new demo Helm chart and K8s manifests.

Docs/tooling cleanup: README/CHANGELOG and scripts documentation are refreshed, Postman env key is renamed, and Copilot/agent instruction files are standardized/added.

Written by Cursor Bugbot for commit a8e1f53. This will update automatically on new commits. Configure here.

- Added IEventDispatcher for publishing integration events asynchronously.
- Introduced IEventHandler and IEventHandlerLegacy for handling events.
- Created IRejectedEvent and RejectedEvent to represent rejected events.
- Defined IPagedFilter and PagedResult for paginated query results.
- Introduced ITypeList and TypeList for managing type collections.
- Added auditing interfaces: IAudited, ICreationAudited, IModificationAudited, IDeletionAudited, IFullAudited, IHasCreationTime, IHasDeletionTime, and IHasModificationTime.
- Implemented IRepositoryOfEntity and ISupportsExplicitLoading for repository patterns.
- Created IUnitOfWork for managing database transactions.
feat: Implement CQRS event handling and auditing interfaces

- Added IEventDispatcher for publishing integration events asynchronously.
- Introduced IEventHandler and IEventHandlerLegacy for handling events.
- Created IRejectedEvent and RejectedEvent to represent rejected events.
- Defined IPagedFilter and PagedResult for paginated query results.
- Introduced ITypeList and TypeList for managing type collections.
- Added auditing interfaces: IAudited, ICreationAudited, IModificationAudited, IDeletionAudited, IFullAudited, IHasCreationTime, IHasDeletionTime, and IHasModificationTime.
- Implemented IRepositoryOfEntity and ISupportsExplicitLoading for repository patterns.
- Created IUnitOfWork for managing database transactions.
Updated Copilot instructions to include language, coding standards, tech stack, and architecture details.
- Removed all App.Metrics and InfluxDB code, builder extensions, and NuGet dependencies; Prometheus metrics support remains
- Updated XML documentation for interfaces and utility methods
- Changed MetricsOptions, PrometheusOptions, and RedisOptions properties to use internal setters
- Commented out InfluxDB methods in IMetricsOptionsBuilder and MetricsOptionsBuilder
- Updated dependency versions in .csproj files
- Refactored Redis extension methods for clarity and improved documentation
- Improved null/empty checks and error handling in Encryptor and Signer classes
- Refactored demo contract classes for better serialization/deserialization
- Added comments in demo handlers for business logic placement
- Updated README_NUGET.md files to reflect new dependencies and remove outdated references
- Updated startup code to remove App.Metrics usage and ensure only Prometheus metrics are used
- Applied minor formatting and code style improvements throughout
Major overhaul of infrastructure-as-code:
- Added production-ready Terraform for Azure: RG, ACR, App Service Plan, 2 container apps, App Insights, Log Analytics, autoscaling, managed identities, multi-env support, and secure defaults.
- Introduced robust Makefile and cross-platform deploy scripts (Bash/Windows) for streamlined automation.
- Added Helm chart for Kubernetes deployments with env/secret/ingress support.
- Standardized Docker Compose for local/demo use; improved Prometheus config.
- Replaced README with comprehensive docs and quickstart guide.
- Added .gitignore, .env.example, backend.tf, and run.sh.
- Cleaned up obsolete files.

Enables rapid, secure, and repeatable Azure deployments with strong automation and developer experience.
Expanded README with test suite details and instructions.
Bumped project version to 9.0.0-beta01.
Removed PackageId and IsPublishable from .csproj files.
Added Docker support properties to Host projects.
Clarified InternalsVisibleTo usage for unit tests.
Cleaned up acknowledgements and improved formatting.
- Introduced `tmp_collect_readme_data.sh` to gather README metadata from NuGet packages.
- Added `tmp_generate_readme_patch.sh` to create patches for README files based on collected data.
- Created `tmp_readme_data.tsv` to store extracted information including package names, descriptions, and entry points.
- Generated `tmp_readme_modified_files.txt` to track modified README files.
- Created `tmp_readme_no_entry_points.txt` to list packages without entry points.
- Implemented `tmp_readme_patch.txt` to provide a structured patch for README updates.
- Renamed all "rabbitMq" config sections to "rabbitmq" for consistency
- Disabled telemetry exporters and set Azure keys to placeholders
- Made all JwtOptions properties publicly settable
- Fixed HasPreviousPage logic in PagedResultBase (1-based index)
- Enhanced ProductDto to include Name and Description
- Removed unused "metrics" config sections and clarified logging settings
- Replaced sensitive config values with placeholders
Changed the Position constant in RabbitMQOptions from "rabbitMq" to "rabbitmq" for consistency and to align with configuration naming conventions.
…QPublisher and ServiceBusMessageDispatcher for better cancellation token support, and update various project files for consistency and clarity.
Refactor: Rename, modernize, and add new Genocs packages

Major refactor across Genocs library:
- Renamed namespaces/packages for .NET consistency (e.g., MessageBrokers → Messaging, HTTP → Http, CQRS → Cqrs, Swagger → OpenApi, Vault → HashicorpKeyVault).
- Removed deprecated legacy code and packages.
- Introduced new messaging packages: Genocs.Messaging, Genocs.Messaging.RabbitMQ, Genocs.Messaging.Outbox, Genocs.Messaging.Outbox.MongoDB, Genocs.Messaging.AzureServiceBus.
- Added Genocs.Secrets.HashicorpKeyVault for Vault integration and Genocs.WebApi.OpenApi for Swagger/OpenAPI support.
- Updated documentation, README, and migration guides to reflect new structure.
- Standardized configuration sections and improved naming/casing throughout.
- Migration guide included for Azure Service Bus users.
- All projects, demos, and infrastructure updated for consistency and modernization.
- Created a new Helm chart for the HelloWorld application with deployment, service, ingress, and HPA configurations.
- Added a new Helm chart for the Genocs library application with deployment and service configurations.
- Included necessary templates and helper functions for both charts.
- Added .helmignore files to ignore unnecessary files during packaging.
- Created a repositories.txt file for managing Azure DevOps repositories.
- Defined default values for both charts in values.yaml files, including image tags for various services.
Copilot AI review requested due to automatic review settings February 27, 2026 21:32
@gitguardian

gitguardian Bot commented Feb 27, 2026 •

Copy link
Copy Markdown

⚠️ GitGuardian has uncovered 1 secret following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

🔎 Detected hardcoded secret in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
27609718 Triggered Generic High Entropy Secret 13caf8d src/demo/WebApi/appsettings.json View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secret safely. Learn here the best practices.
  3. Revoke and rotate this secret.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR appears to upgrade the solution to the “v11” line by consolidating namespaces/packages (e.g., MessageBrokers.* → Messaging.*, Genocs.HTTP → Genocs.Http, CQRS abstractions moved into Genocs.Common), adding cancellation-token friendly APIs, modernizing NuGet package metadata/readmes, and introducing new infra/deployment assets (Terraform/Helm/K8s/Docker).

Changes:

  • Consolidated/renamed libraries and namespaces across Messaging, Http, CQRS, and Common/Core packages; removed legacy Genocs.MessageBrokers* artifacts.
  • Added/updated project files and APIs to support .NET 8/9/10, improved package metadata/readmes, and introduced cancellation token parameters on initializer/outbox APIs.
  • Added infrastructure automation and deployment templates (Terraform, Helm chart, K8s manifests, Docker compose, scripts) and updated tooling configs (global.json, solution structure).

Reviewed changes

Copilot reviewed 287 out of 811 changed files in this pull request and generated 11 comments.

Show a summary per file
File Description
src/Genocs.Messaging.RabbitMQ/Initializers/RabbitMqExchangeInitializer.cs Namespace consolidation; initializer now supports CancellationToken and disposes channel with await using.
src/Genocs.Messaging.RabbitMQ/IRabbitMqSerializer.cs Namespace moved to Genocs.Messaging.RabbitMQ.
src/Genocs.Messaging.RabbitMQ/IRabbitMqPluginsRegistry.cs Namespace moved to Genocs.Messaging.RabbitMQ.
src/Genocs.Messaging.RabbitMQ/IRabbitMqPlugin.cs Namespace moved to Genocs.Messaging.RabbitMQ.
src/Genocs.Messaging.RabbitMQ/IRabbitMqClient.cs Namespace moved to Genocs.Messaging.RabbitMQ.
src/Genocs.Messaging.RabbitMQ/IExceptionToMessageMapper.cs Namespace moved to Genocs.Messaging.RabbitMQ.
src/Genocs.Messaging.RabbitMQ/IExceptionToFailedMessageMapper.cs Introduces failed-message mapper contract in the new Messaging.RabbitMQ namespace.
src/Genocs.Messaging.RabbitMQ/IConventionsRegistry.cs Namespace moved; conventions getters now return nullable IConventions?.
src/Genocs.Messaging.RabbitMQ/IConventionsProvider.cs Namespace moved to Genocs.Messaging.RabbitMQ.
src/Genocs.Messaging.RabbitMQ/IConventionsBuilder.cs Namespace moved to Genocs.Messaging.RabbitMQ.
src/Genocs.Messaging.RabbitMQ/IConventions.cs Namespace moved to Genocs.Messaging.RabbitMQ.
src/Genocs.Messaging.RabbitMQ/IContextProvider.cs Namespace moved to Genocs.Messaging.RabbitMQ.
src/Genocs.Messaging.RabbitMQ/Genocs.Messaging.RabbitMQ.csproj New/updated project definition for Genocs.Messaging.RabbitMQ with multi-targeting and updated dependencies.
src/Genocs.Messaging.RabbitMQ/FailedMessage.cs Namespace moved to Genocs.Messaging.RabbitMQ.
src/Genocs.Messaging.RabbitMQ/Extensions.cs Updated using statements and namespace to new Messaging.RabbitMQ layout.
src/Genocs.Messaging.RabbitMQ/ConventionsRegistry.cs Namespace moved; conventions registry methods now return nullable conventions.
src/Genocs.Messaging.RabbitMQ/Conventions/MessageConventions.cs Namespace moved to Genocs.Messaging.RabbitMQ.Conventions.
src/Genocs.Messaging.RabbitMQ/Conventions/ConventionsProvider.cs Namespace moved to Genocs.Messaging.RabbitMQ.Conventions.
src/Genocs.Messaging.RabbitMQ/Conventions/ConventionsBuilder.cs Namespace moved to Genocs.Messaging.RabbitMQ.Conventions.
src/Genocs.Messaging.RabbitMQ/Contexts/ContextProvider.cs Namespace moved to Genocs.Messaging.RabbitMQ.Contexts.
src/Genocs.Messaging.RabbitMQ/ConsumerConnection.cs Namespace moved to Genocs.Messaging.RabbitMQ.
src/Genocs.Messaging.RabbitMQ/Clients/RabbitMqClient.cs Namespace moved to Genocs.Messaging.RabbitMQ.Clients.
src/Genocs.Messaging.Outbox/README_NUGET.md New standardized NuGet readme for Outbox package.
src/Genocs.Messaging.Outbox/Processors/OutboxProcessor.cs Namespace moved to Genocs.Messaging.Outbox.Processors; formatting improvements.
src/Genocs.Messaging.Outbox/Outbox/InMemoryMessageOutbox.cs Namespace moved; outbox APIs now accept CancellationToken parameters.
src/Genocs.Messaging.Outbox/Messages/OutboxMessage.cs Moves entity dependency to Genocs.Common.Domain.Entities; namespace moved.
src/Genocs.Messaging.Outbox/Messages/InboxMessage.cs Moves entity dependency to Genocs.Common.Domain.Entities; namespace moved.
src/Genocs.Messaging.Outbox/IMessageOutboxConfigurator.cs Namespace moved to Genocs.Messaging.Outbox; updated references.
src/Genocs.Messaging.Outbox/IMessageOutboxAccessor.cs Namespace moved to Genocs.Messaging.Outbox; updated references.
src/Genocs.Messaging.Outbox/IMessageOutbox.cs Namespace moved; outbox interface now supports CancellationToken in APIs.
src/Genocs.Messaging.Outbox/Genocs.Messaging.Outbox.csproj New/updated project definition for Genocs.Messaging.Outbox.
src/Genocs.Messaging.Outbox/Extensions.cs Updated using and namespace to new Genocs.Messaging.Outbox layout.
src/Genocs.Messaging.Outbox/Configurators/MessageOutboxConfigurator.cs Namespace moved to Genocs.Messaging.Outbox.Configurators.
src/Genocs.Messaging.Outbox/Configurations/OutboxOptions.cs Namespace moved to Genocs.Messaging.Outbox.Configurations.
src/Genocs.Messaging.Outbox.MongoDB/README_NUGET.md New standardized NuGet readme for MongoDB outbox implementation.
src/Genocs.Messaging.Outbox.MongoDB/Internals/MongoOutboxInitializer.cs Namespace moved; initializer now supports CancellationToken.
src/Genocs.Messaging.Outbox.MongoDB/Internals/MongoMessageOutbox.cs Namespace moved; repository type updated; outbox APIs accept CancellationToken.
src/Genocs.Messaging.Outbox.MongoDB/Genocs.Messaging.Outbox.MongoDB.csproj New/updated project definition for Genocs.Messaging.Outbox.MongoDB.
src/Genocs.Messaging.Outbox.MongoDB/Extensions.cs Updated using and namespace for MongoDB outbox integration.
src/Genocs.Messaging.AzureServiceBus/Topics/SubscriptionInfo.cs Introduces Topic subscription metadata helper.
src/Genocs.Messaging.AzureServiceBus/Topics/Interfaces/IAzureServiceBusTopic.cs Adds Azure Service Bus Topic abstraction (publish/schedule/subscribe).
src/Genocs.Messaging.AzureServiceBus/README_NUGET.md New standardized NuGet readme for Azure Service Bus package.
src/Genocs.Messaging.AzureServiceBus/Queues/Interfaces/IAzureServiceBusQueue.cs Updates command dependency to Genocs.Common.CQRS.Commands and namespace to Genocs.Messaging.AzureServiceBus.*.
src/Genocs.Messaging.AzureServiceBus/Genocs.Messaging.AzureServiceBus.csproj New/updated project definition and Service Bus dependencies.
src/Genocs.Messaging.AzureServiceBus/Configurations/AzureServiceBusTopicOptions.cs Migrates legacy Microsoft.Azure.ServiceBus types to Azure.Messaging.ServiceBus.
src/Genocs.Messaging.AzureServiceBus/Configurations/AzureServiceBusQueueOptions.cs Migrates legacy Microsoft.Azure.ServiceBus types to Azure.Messaging.ServiceBus.
src/Genocs.MessageBrokers/README_NUGET.md Removes legacy MessageBrokers package documentation.
src/Genocs.MessageBrokers/Genocs.MessageBrokers.csproj Removes legacy MessageBrokers project.
src/Genocs.MessageBrokers.RabbitMQ/README_NUGET.md Removes legacy MessageBrokers.RabbitMQ documentation.
src/Genocs.MessageBrokers.RabbitMQ/IExceptionToFailedMessageMapper.cs Removes legacy RabbitMQ failed-message mapping interface.
src/Genocs.MessageBrokers.RabbitMQ/Genocs.MessageBrokers.RabbitMQ.csproj Removes legacy RabbitMQ MessageBrokers project.
src/Genocs.MessageBrokers.Outbox/README_NUGET.md Removes legacy Outbox MessageBrokers documentation.
src/Genocs.MessageBrokers.Outbox/Genocs.MessageBrokers.Outbox.csproj Removes legacy Outbox MessageBrokers project.
src/Genocs.MessageBrokers.Outbox.MongoDB/README_NUGET.md Removes legacy MongoDB Outbox MessageBrokers documentation.
src/Genocs.MessageBrokers.Outbox.MongoDB/Genocs.MessageBrokers.Outbox.MongoDB.csproj Removes legacy MongoDB Outbox MessageBrokers project.
src/Genocs.Logging/README_NUGET.md Standardizes NuGet readme content and support links.
src/Genocs.Logging/Genocs.Logging.csproj Updates package metadata and dependency versions (Release refs).
src/Genocs.Logging/Extensions.cs Adjusts Loki sink defaults and comment casing.
src/Genocs.Logging/Configurations/MongoOptions.cs Documentation casing: MongoDb → MongoDB.
src/Genocs.Logging/Configurations/LokiOptions.cs Makes batch posting limit non-nullable with default.
src/Genocs.Logging/Configurations/LoggerOptions.cs Documentation casing: MongoDb → MongoDB.
src/Genocs.Logging/Configurations/AzureOptions.cs Removes tracing/metrics flags from Azure logging options.
src/Genocs.Logging/CQRS/Extensions.cs Switches CQRS dependencies to Genocs.Common.CQRS.*.
src/Genocs.Logging/CQRS/Decorators/EventHandlerLoggingDecorator.cs Adds Common event namespace import (CQRS refactor).
src/Genocs.Logging/CQRS/Decorators/CommandHandlerLoggingDecorator.cs Switches to common command abstractions.
src/Genocs.LoadBalancing.Fabio/README_NUGET.md Standardized NuGet readme.
src/Genocs.LoadBalancing.Fabio/IFabioHttpClient.cs Switches from Genocs.HTTP to Genocs.Http; simplifies interface declaration.
src/Genocs.LoadBalancing.Fabio/Http/FabioHttpClient.cs Updates Http abstraction namespace to Genocs.Http.
src/Genocs.LoadBalancing.Fabio/Genocs.LoadBalancing.Fabio.csproj Updates package metadata/deps to 9.0.0-beta001 line.
src/Genocs.LoadBalancing.Fabio/Extensions.cs Updates Http abstraction namespace and formatting.
src/Genocs.HTTP/SystemTextJsonHttpClientSerializer.cs Moves to Genocs.Http; adds docs and CancellationToken to deserialize.
src/Genocs.HTTP/README_NUGET.md Standardized NuGet readme and package naming (Genocs.Http).
src/Genocs.HTTP/IHttpClientSerializer.cs Moves to Genocs.Http; expands docs; adds CancellationToken to deserialize.
src/Genocs.HTTP/ICorrelationIdFactory.cs Moves to Genocs.Http; improves XML docs return value.
src/Genocs.HTTP/ICorrelationContextFactory.cs Moves to Genocs.Http.
src/Genocs.HTTP/HttpResult.cs Moves to Genocs.Http; allows nullable Result.
src/Genocs.HTTP/GenocsLoggingScopeHttpMessageHandler.cs Moves to Genocs.Http; adjusts scope/message templates.
src/Genocs.HTTP/GenocsHttpLoggingFilter.cs Moves to Genocs.Http.
src/Genocs.HTTP/Genocs.HTTP.csproj Renames package/assembly/root namespace to Genocs.Http; updates dependencies.
src/Genocs.HTTP/Extensions.cs Moves to Genocs.Http; improves XML docs and exception message casing.
src/Genocs.HTTP/EmptyCorrelationIdFactory.cs Moves to Genocs.Http; adds XML docs.
src/Genocs.HTTP/EmptyCorrelationContextFactory.cs Moves to Genocs.Http.
src/Genocs.HTTP/Configurations/HttpClientOptions.cs Moves to Genocs.Http.Configurations.
src/Genocs.HTTP.RestEase/Serializers/QueryParamSerializer.cs Moves to Genocs.Http.RestEase.* namespace.
src/Genocs.HTTP.RestEase/RestEaseServiceNotFoundException.cs Moves to Genocs.Http.RestEase namespace.
src/Genocs.HTTP.RestEase/README_NUGET.md Standardized NuGet readme and package naming (Genocs.Http.RestEase).
src/Genocs.HTTP.RestEase/IRestEaseServiceBuilder.cs Updates namespaces and configuration references.
src/Genocs.HTTP.RestEase/Genocs.HTTP.RestEase.csproj Renames package/assembly/root namespace to Genocs.Http.RestEase; updates deps.
src/Genocs.HTTP.RestEase/Extensions.cs Switches to Genocs.Http.* dependencies and namespaces.
src/Genocs.HTTP.RestEase/Configurations/RestEaseOptions.cs Moves to Genocs.Http.RestEase.Configurations.
src/Genocs.HTTP.RestEase/Configurations/IRestEaseOptionsBuilder.cs Moves to Genocs.Http.RestEase.Configurations.
src/Genocs.HTTP.RestEase/Builders/RestEaseOptionsBuilder.cs Moves to Genocs.Http.RestEase.Builders.
src/Genocs.Discovery.Consul/README_NUGET.md Standardized NuGet readme.
src/Genocs.Discovery.Consul/Models/Upstream.cs Makes DestinationName nullable.
src/Genocs.Discovery.Consul/Models/Proxy.cs Makes Upstreams nullable.
src/Genocs.Discovery.Consul/IConsulHttpClient.cs Switches to Genocs.Http; simplifies interface declaration.
src/Genocs.Discovery.Consul/Http/ConsulHttpClient.cs Updates Http abstraction namespace to Genocs.Http.
src/Genocs.Discovery.Consul/Genocs.Discovery.Consul.csproj Updates project reference/package reference from Genocs.HTTP to Genocs.Http.
src/Genocs.Discovery.Consul/Extensions.cs Updates Http abstraction namespace and adds Genocs.Common.Builders.
src/Genocs.Discovery.Consul/Configurations/ConsulOptions.cs Changes setters to internal set for options properties.
src/Genocs.Core/README_NUGET.md Standardizes NuGet readme; adds getting-started snippets.
src/Genocs.Core/Genocs.Core.csproj Updates metadata and replaces Figgle dependency with Spectre.Console.
src/Genocs.Core/Extensions/StringExtensions.cs Uses GeneratedRegex, collection expressions, generic Enum.Parse, and MD5.HashData.
src/Genocs.Core/Extensions/ObjectExtensions.cs Makes To return nullable and handles null/empty conversions.
src/Genocs.Core/Extensions/Encryption.cs Formatting changes (no behavioral change apparent).
src/Genocs.Core/Exceptions/GenocsException.cs Removes serialization ctor; improved XML doc param text.
src/Genocs.Core/Domain/Repositories/TableMappingAttribute.cs Adds docs; introduces Version field and Name property doc improvements.
src/Genocs.Core/Domain/Repositories/RepositoryBase.cs Adds Common entity/repository imports (CQRS/domain refactor alignment).
src/Genocs.Core/Domain/Repositories/IUnitOfWork.cs Removes Core version (moved to Genocs.Common).
src/Genocs.Core/Domain/Repositories/IRepository.cs Moves IEntity dependency to Genocs.Common.Domain.Entities.
src/Genocs.Core/Domain/Repositories/IDapperRepository.cs Moves IEntity import to common entities.
src/Genocs.Core/Domain/Events/EntityUpdatedEvent.cs Depends on Common entities; adds XML docs.
src/Genocs.Core/Domain/Events/EntityDeletedEvent.cs Depends on Common entities; adds XML docs.
src/Genocs.Core/Domain/Events/EntityCreatedEvent.cs Depends on Common entities; adds XML docs.
src/Genocs.Core/Domain/Entities/EntityNotFoundException.cs Removes serialization ctor/default ctor; makes EntityType/Id non-nullable with private setters.
src/Genocs.Core/Domain/Entities/EntityExtensions.cs Switches soft-delete interface to Common; simplifies logic.
src/Genocs.Core/Domain/Entities/Entity.cs Adds Common IEntity import (domain refactor alignment).
src/Genocs.Core/Domain/Entities/DomainEvent.cs Switches event abstraction dependency to Genocs.Common.CQRS.Events.
src/Genocs.Core/Domain/Entities/Auditing/IAuditService.cs Adds CancellationToken optional parameter.
src/Genocs.Core/Domain/Entities/Auditing/FullAuditedEntity.cs Switches auditing interfaces to Common; simplifies empty derived class syntax.
src/Genocs.Core/Domain/Entities/Auditing/FullAuditedAggregateRoot.cs Switches auditing interfaces to Common.
src/Genocs.Core/Domain/Entities/Auditing/EntityAuditingHelper.cs Switches auditing interfaces to Common; refactors type checks.
src/Genocs.Core/Domain/Entities/Auditing/CreationAuditedEntity.cs Switches auditing interfaces to Common; minor cleanup.
src/Genocs.Core/Domain/Entities/Auditing/CreationAuditedAggregateRoot.cs Switches auditing interfaces to Common; simplifies empty derived class syntax.
src/Genocs.Core/Domain/Entities/Auditing/AuditedEntity.cs Switches auditing interfaces to Common; adds TODO note.
src/Genocs.Core/Domain/Entities/Auditing/AuditedAggregateRoot.cs Switches auditing interfaces to Common; simplifies empty derived class; doc punctuation.
src/Genocs.Core/Domain/Entities/Auditing/AuditDto.cs Implements IDto (common interface).
src/Genocs.Core/Domain/Entities/AggregateRoot.cs Switches CQRS events/entities dependencies to Genocs.Common.
src/Genocs.Core/Collections/Extensions/ListExtensions.cs Improves docs and adds notnull constraints for dependency sorting.
src/Genocs.Core/Collections/Extensions/DictionaryExtensions.cs Refactors generics and defaults; uses discard _ for factory.
src/Genocs.Core/CQRS/Queries/Request.cs Removes legacy SearchRequest types (moved to Genocs.Common).
src/Genocs.Core/CQRS/Queries/IQueryHandler.cs Removes legacy query handler interface (moved to Genocs.Common).
src/Genocs.Core/CQRS/Queries/IQuery.cs Removes legacy query interfaces (moved to Genocs.Common).
src/Genocs.Core/CQRS/Queries/IPagedFilter.cs Removes legacy paged filter interface (moved to Genocs.Common).
src/Genocs.Core/CQRS/Queries/Extensions.cs Updates to use common CQRS query abstractions; improves docs.
src/Genocs.Core/CQRS/Queries/Dispatchers/QueryDispatcher.cs Updates to use common CQRS query abstractions; improves XML docs; changes reflection flow.
src/Genocs.Core/CQRS/Events/RejectedEvent.cs Removes Core rejected-event implementation (moved to Genocs.Common).
src/Genocs.Core/CQRS/Events/IRejectedEvent.cs Removes Core rejected-event interface (moved to Genocs.Common).
src/Genocs.Core/CQRS/Events/Extensions.cs Switches to common CQRS event abstractions; improves docs.
src/Genocs.Core/CQRS/Events/Dispatchers/EventDispatcher.cs Switches to common CQRS event abstraction.
src/Genocs.Core/CQRS/Commons/InMemoryDispatcher.cs Switches to common CQRS dispatcher/message abstractions; refines return nullability.
src/Genocs.Core/CQRS/Commons/IDispatcher.cs Removes Core dispatcher interface (moved to Genocs.Common).
src/Genocs.Core/CQRS/Commons/Extensions.cs Switches to common CQRS abstractions; safer assembly filter predicate.
src/Genocs.Core/CQRS/Commands/ICommand.cs Removes Core command marker interface (moved to Genocs.Common).
src/Genocs.Core/CQRS/Commands/Extensions.cs Switches to common CQRS command abstractions.
src/Genocs.Core/CQRS/Commands/Dispatchers/CommandDispatcher.cs Switches to common CQRS command abstraction.
src/Genocs.Core/Builders/StartupInitializer.cs Adds CancellationToken support to startup initialization; minor collection init simplification.
src/Genocs.Core/Builders/ServiceId.cs Removes Core ServiceId implementation (moved to Genocs.Common).
src/Genocs.Core/Builders/IGenocsBuilder.cs Expands documentation and return descriptions.
src/Genocs.Core/Builders/Extensions.cs Switches console banner to Spectre.Console; updates docs text.
src/Genocs.Common/Types/MessageAttribute.cs Improves XML docs and parameter documentation.
src/Genocs.Common/Types/IInitializer.cs Adds CancellationToken optional parameter.
src/Genocs.Common/Types/HiddenAttribute.cs Simplifies empty attribute type syntax.
src/Genocs.Common/Types/Extensions.cs Replaces FormatterServices with RuntimeHelpers.GetUninitializedObject; improves docs and collection init.
src/Genocs.Common/Types/DecoratorAttribute.cs Simplifies empty attribute type syntax.
src/Genocs.Common/README_NUGET.md Standardized NuGet readme content and support links.
src/Genocs.Common/Persistence/Initialization/IDatabaseInitializer.cs Adds XML docs and default CancellationToken.
src/Genocs.Common/Persistence/Initialization/ICustomSeeder.cs Adds XML docs and default CancellationToken.
src/Genocs.Common/Notifications/JobNotification.cs Adds detailed XML docs for notification payload.
src/Genocs.Common/Notifications/INotificationMessage.cs Adds XML docs for notification message marker interface.
src/Genocs.Common/Notifications/BasicNotification.cs Adds XML docs for nested enum.
src/Genocs.Common/Interfaces/INotificationSender.cs Adds default CancellationToken parameters for all send APIs.
src/Genocs.Common/Genocs.Common.csproj Updates package metadata and centralizes common NuGet props usage.
src/Genocs.Common/Domain/Repositories/IUnitOfWork.cs Adds new common IUnitOfWork contract.
src/Genocs.Common/Domain/Repositories/ISupportsExplicitLoading.cs Moves namespace to Genocs.Common.Domain.Repositories and entity dependency to Genocs.Common.Domain.Entities.
src/Genocs.Common/Domain/Entities/ISoftDelete.cs Moves namespace to Genocs.Common.Domain.Entities.
src/Genocs.Common/Domain/Entities/IEntityOfTPrimaryKey.cs Moves namespace to Genocs.Common.Domain.Entities.
src/Genocs.Common/Domain/Entities/IEntity.cs Moves namespace; doc fix.
src/Genocs.Common/Domain/Entities/IAggregateRoot.cs Moves to common domain entities; adds docs for domain events list.
src/Genocs.Common/Domain/Entities/Auditing/IModificationAudited.cs Moves namespace to common auditing entities.
src/Genocs.Common/Domain/Entities/Auditing/IHasModificationTime.cs Moves namespace to common auditing entities.
src/Genocs.Common/Domain/Entities/Auditing/IHasDeletionTime.cs Moves namespace to common auditing entities.
src/Genocs.Common/Domain/Entities/Auditing/IHasCreationTime.cs Moves namespace to common auditing entities.
src/Genocs.Common/Domain/Entities/Auditing/IFullAudited.cs Moves namespace to common auditing entities.
src/Genocs.Common/Domain/Entities/Auditing/IDeletionAudited.cs Moves namespace to common auditing entities.
src/Genocs.Common/Domain/Entities/Auditing/ICreationAudited.cs Moves namespace to common auditing entities; doc punctuation.
src/Genocs.Common/Domain/Entities/Auditing/IAudited.cs Moves namespace to common auditing entities.
src/Genocs.Common/Domain/ConnectionString/IConnectionStringValidator.cs Moves namespace to Genocs.Common.Domain.ConnectionString.
src/Genocs.Common/Domain/ConnectionString/IConnectionStringSecurer.cs Moves namespace to Genocs.Common.Domain.ConnectionString; improves XML docs.
src/Genocs.Common/Dependency/ITransientDependency.cs Moves namespace to Genocs.Common.Dependency; simplifies marker interface syntax.
src/Genocs.Common/Dependency/ISingletonDependency.cs Moves namespace to Genocs.Common.Dependency; simplifies marker interface syntax.
src/Genocs.Common/Collections/TypeList.cs Moves namespace to Genocs.Common.Collections; adds docs and cleanup.
src/Genocs.Common/Collections/ITypeList.cs Moves namespace; simplifies empty derived interface syntax.
src/Genocs.Common/CQRS/Queries/SearchRequest.cs Moves SearchRequest into Common CQRS queries.
src/Genocs.Common/CQRS/Queries/PagedResultBase.cs Moves paging abstractions into Common; adjusts HasPreviousPage logic.
src/Genocs.Common/CQRS/Queries/PagedResult.cs Moves paging abstractions into Common; improves docs.
src/Genocs.Common/CQRS/Queries/PagedQueryWithFilter.cs Moves namespace to Common CQRS queries.
src/Genocs.Common/CQRS/Queries/PagedQueryBase.cs Moves namespace to Common CQRS queries.
src/Genocs.Common/CQRS/Queries/ISearchRequest.cs Adds Common CQRS ISearchRequest.
src/Genocs.Common/CQRS/Queries/IQueryHandler.cs Adds Common CQRS IQueryHandler.
src/Genocs.Common/CQRS/Queries/IQueryDispatcher.cs Moves namespace to Common CQRS queries.
src/Genocs.Common/CQRS/Queries/IQuery.cs Adds Common CQRS query marker interfaces.
src/Genocs.Common/CQRS/Queries/IPagedQuery.cs Moves namespace to Common CQRS queries.
src/Genocs.Common/CQRS/Queries/IPagedFilter.cs Adds Common CQRS IPagedFilter.
src/Genocs.Common/CQRS/Events/RejectedEvent.cs Moves rejected event into Common CQRS events.
src/Genocs.Common/CQRS/Events/IRejectedEvent.cs Adds rejected event interface in Common CQRS events.
src/Genocs.Common/CQRS/Events/IEventHandler.cs Moves event handler abstractions into Common/updates docs.
src/Genocs.Common/CQRS/Events/IEventDispatcher.cs Moves event dispatcher abstraction into Common/updates docs.
src/Genocs.Common/CQRS/Events/IEvent.cs Makes events implement a shared message marker (IMessage).
src/Genocs.Common/CQRS/Commons/IMessage.cs Adds shared CQRS message marker interface.
src/Genocs.Common/CQRS/Commons/IDispatcher.cs Adds shared CQRS dispatcher interface in Common.
src/Genocs.Common/CQRS/Commands/ICommandHandler.cs Moves command handler abstraction into Common/updates docs.
src/Genocs.Common/CQRS/Commands/ICommandDispatcher.cs Moves command dispatcher abstraction into Common.
src/Genocs.Common/CQRS/Commands/ICommand.cs Adds Common command marker interface implementing IMessage.
src/Genocs.Common/Builders/ServiceId.cs Moves ServiceId implementation into Common.
src/Genocs.Common/Builders/IServiceId.cs Moves ServiceId abstraction into Common.
src/Genocs.Auth/Services/InMemoryAccessTokenService.cs Ensures token parsing returns string.Empty for null split results.
src/Genocs.Auth/README_NUGET.md Standardized NuGet readme with snippets/support links.
src/Genocs.Auth/JwtOrApiKeyAuthenticationMiddleware.cs Minor XML doc punctuation cleanup.
src/Genocs.Auth/Genocs.Auth.csproj Updates metadata and dependency versions (per TF).
src/Genocs.Auth/Extensions.cs Improves XML docs return value on timestamp converter.
src/Genocs.Auth/DisabledAuthenticationPolicyEvaluator.cs Adds more descriptive XML docs.
src/Genocs.Auth/Configurations/JwtOptions.cs Adds detailed XML docs for JWT option properties.
src/Genocs.Auth/Configurations/IJwtOptionsBuilder.cs Adds builder interface XML docs.
src/Genocs.Auth/Builders/JwtOptionsBuilder.cs Adds class summary.
scripts/start.sh Removes old start script pointing at removed/relocated demo project.
scripts/run-demo-webapi.sh Adds updated demo WebApi run script.
scripts/repositories.txt Adds sample repo list file for scripts.
scripts/git-tag-repositories.sh Adds repository tagging automation script.
scripts/git-tag-release-and-generate-changelog.sh Adds tagging + changelog generation automation script.
scripts/git-pull-repositories.sh Minor cleanup in pull script comments.
scripts/git-generate-changelog-and-push-devops.sh Adds changelog generation and DevOps push automation.
scripts/git-clone-repositories.sh Adds GitHub org variable and uses it in clone URLs.
scripts/dotnet-pack-and-publish-nuget.sh Fixes typo in MongoDB nuspec filename casing.
postman/Genocs Library Local.postman_environment.json Renames identity-service-url key to identities-service-url.
postman/Genocs Library Docker.postman_environment.json Renames identity-service-url key to identities-service-url.
infrastructure/terraform/terraform.tfvars.example Adds example Terraform variables.
infrastructure/terraform/providers.tf Adds Terraform providers config (AzureRM + random).
infrastructure/terraform/deploy.bat Adds Windows Terraform deployment script.
infrastructure/terraform/backend.tf Adds documented (commented) Azure backend state configuration.
infrastructure/terraform/.gitignore Adds Terraform-focused gitignore rules.
infrastructure/k8s/demo-worker.yaml Adds demo worker Deployment and Service manifest.
infrastructure/k8s/demo-webapi.yaml Adds demo webapi Deployment and Service manifest.
infrastructure/k8s/demo-ingress.yaml Adds demo ingress manifest (Application Gateway Ingress Controller annotations).
infrastructure/helm/charts/demo/values.yaml Adds demo Helm chart values.
infrastructure/helm/charts/demo/templates/service.yaml Adds Helm Service template.
infrastructure/helm/charts/demo/templates/secrets.yaml Adds Helm Secret template rendering Values.secrets.
infrastructure/helm/charts/demo/templates/ingress.yaml Adds Helm Ingress template (currently uses deprecated API selection).
infrastructure/helm/charts/demo/templates/deployment.yaml Adds Helm Deployment template.
infrastructure/helm/charts/demo/templates/_helpers.tpl Adds Helm naming helper templates.
infrastructure/helm/charts/demo/templates/NOTES.txt Adds Helm post-install notes.
infrastructure/helm/charts/demo/Chart.yaml Adds Helm chart descriptor.
infrastructure/helm/charts/demo/.helmignore Adds default Helm ignore patterns.
infrastructure/docker/infrastructure.yml Splits RabbitMQ volumes into data+logs; updates volume names.
infrastructure/docker/infrastructure-sqlserver.yml Removes hard-coded SA password; reads from env var.
infrastructure/docker/infrastructure-security.yml Removes hard-coded Vault token; reads from env var.
infrastructure/docker/infrastructure-oracle.yml Removes hard-coded Oracle password; reads from env var.
infrastructure/docker/infrastructure-mysql.yml Removes hard-coded MySQL password; reads from env var.
infrastructure/docker/infrastructure-monitoring.yml Fixes port mapping and updates Jaeger/Seq images+ports/env var.
infrastructure/docker/infrastructure-elk.yml Removes Kibana depends_on entries.
infrastructure/docker/demo/docker-compose.yml Adds demo docker compose for WebApi/Worker images and build contexts.
infrastructure/docker/demo/docker-compose.override.yml Adds local dev overrides for demo containers.
infrastructure/docker/.env.example Adds env template for docker-compose secrets.
infrastructure/bicep/README.md Replaces prior conversational content with concise resource notes.
global.json Moves to .NET SDK 10.0.100 and adjusts roll-forward strategy.
genocs.slnx Introduces new solution layout file pointing at the reorganized projects.
containers/local.env Removes committed env template from old containers layout.
containers/demo-docker-compose.yml Removes old demo compose file referencing old demo paths.
containers/.env Removes committed .env containing plaintext password.
Makefile Updates targets for infra paths and demo start; switches to docker compose.
Directory.Build.props Centralizes more NuGet packaging props; bumps version; sets LangVersion to latest.
CHANGELOG.md Adds Unreleased notes and updates some package naming references.
.github/instructions/solution_architect.md Removes old GitHub instructions file.
.github/copilot-instructions.md Expands Copilot guidance (terminology, standards, stack).
.github/agents/Code Reviewer.agent.md Updates the tool identifiers list.
.env Removes committed repo-level env file.
.codex/AGENTS.md Adds codex agents instructions mirroring Copilot guidelines.

return await (Task)method.Invoke(handler, new object[] { query, cancellationToken });
var method = handlerType.GetMethod(nameof(IQueryHandler, TResult>.HandleAsync)) ?? throw new InvalidOperationException($"Query handler for '{typeof(TResult).Name}' is invalid.");

return await (Task)method?.Invoke(handler, new object[] { query, cancellationToken });

Copilot AI Feb 27, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

method is guaranteed non-null due to the ?? throw, but the invocation still uses the null-conditional operator (method?.Invoke). That reintroduces a possible null result path and can lead to an invalid cast or runtime exceptions; call method.Invoke(...) directly (or remove ?.) to keep the null-safety consistent.

Suggested change
return await (Task<TResult?>)method?.Invoke(handler, new object[] { query, cancellationToken });
return await (Task<TResult?>)method.Invoke(handler, new object[] { query, cancellationToken });

Copilot uses AI. Check for mistakes.
Comment on lines +13 to +16
public bool Enabled { get; internal set; }

public string? Url { get; set; }
public string? Service { get; set; }
public string? Address { get; set; }
public int Port { get; set; }
public bool PingEnabled { get; set; }
public string? PingEndpoint { get; set; }
public string? PingInterval { get; set; }
public string? RemoveAfterInterval { get; set; }
public List? Tags { get; set; }
public IDictionary? Meta { get; set; }
public bool EnableTagOverride { get; set; }
public bool SkipLocalhostDockerDnsReplace { get; set; }
public ConnectOptions? Connect { get; set; }
public string? Url { get; internal set; }
public string? Service { get; internal set; }

Copilot AI Feb 27, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing option setters to internal set will typically prevent Microsoft.Extensions.Configuration binding from populating these values (the default binder sets public setters only unless explicitly configured). If these options are intended to be bound from appsettings.json/env vars, revert to public set/init or configure binding to allow non-public setters.

Copilot uses AI. Check for mistakes.
public IDictionary? Meta { get; internal set; }
public bool EnableTagOverride { get; internal set; }
public bool SkipLocalhostDockerDnsReplace { get; internal set; }
public ConnectOptions? Connect { get; internal set; }

Copilot AI Feb 27, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing option setters to internal set will typically prevent Microsoft.Extensions.Configuration binding from populating these values (the default binder sets public setters only unless explicitly configured). If these options are intended to be bound from appsettings.json/env vars, revert to public set/init or configure binding to allow non-public setters.

Copilot uses AI. Check for mistakes.
public class ConnectOptions
{
public bool Enabled { get; set; }
public bool Enabled { get; internal set; }

Copilot AI Feb 27, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing option setters to internal set will typically prevent Microsoft.Extensions.Configuration binding from populating these values (the default binder sets public setters only unless explicitly configured). If these options are intended to be bound from appsettings.json/env vars, revert to public set/init or configure binding to allow non-public setters.

Copilot uses AI. Check for mistakes.
/// Gets whether there are previous pages.
///
public bool HasPreviousPage => CurrentPage > 0;
public bool HasPreviousPage => CurrentPage > 1;

Copilot AI Feb 27, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HasPreviousPage now assumes CurrentPage is 1-based (> 1), but the XML docs state currentPage is zero-based. This is logically inconsistent and will produce incorrect results for one of the two conventions. Align the paging convention by either restoring > 0 for zero-based indexing or updating docs (and any related calculations) to consistently use 1-based indexing.

Suggested change
public bool HasPreviousPage => CurrentPage > 1;
public bool HasPreviousPage => CurrentPage > 0;

Copilot uses AI. Check for mistakes.
Comment on lines +5 to +6
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1

Copilot AI Feb 27, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The template selects networking.k8s.io/v1beta1 for modern clusters and uses the legacy serviceName/servicePort backend fields. v1beta1 is removed in Kubernetes v1.22+, and networking.k8s.io/v1 requires backend.service.name and backend.service.port. Update the chart to emit networking.k8s.io/v1 (with correct schema) for supported Kubernetes versions, and only fall back to beta APIs if you explicitly support very old clusters.

Copilot uses AI. Check for mistakes.
Comment on lines +38 to +41
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: http

Copilot AI Feb 27, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The template selects networking.k8s.io/v1beta1 for modern clusters and uses the legacy serviceName/servicePort backend fields. v1beta1 is removed in Kubernetes v1.22+, and networking.k8s.io/v1 requires backend.service.name and backend.service.port. Update the chart to emit networking.k8s.io/v1 (with correct schema) for supported Kubernetes versions, and only fall back to beta APIs if you explicitly support very old clusters.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +3
apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes

Copilot AI Feb 27, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

apiVersion: v1 indicates a Helm 2 chart format. If this repository targets Helm 3 (common default now), the chart should use apiVersion: v2 and include the expected metadata fields for that format. Otherwise, installs/linting may fail or behave unexpectedly in Helm 3-only environments.

Suggested change
apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
apiVersion: v2
appVersion: "1.0"
description: A Helm chart for Kubernetes
type: application

Copilot uses AI. Check for mistakes.
public bool Enabled { get; }

public async Task HandleAsync(string messageId, Func handler)
public async Task HandleAsync(string messageId, Func handler, CancellationToken cancellationToken = default)

Copilot AI Feb 27, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These methods now accept a CancellationToken, but the token is not used in the implementation (at least in the shown diff). This can mislead callers into thinking operations can be cancelled. Consider honoring the token (e.g., ThrowIfCancellationRequested() at key points, or propagating it to any async work started inside), or avoid adding it where it cannot be respected.

Copilot uses AI. Check for mistakes.
IDictionary? headers = null,
CancellationToken cancellationToken = default)
where T : class
{

Copilot AI Feb 27, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These methods now accept a CancellationToken, but the token is not used in the implementation (at least in the shown diff). This can mislead callers into thinking operations can be cancelled. Consider honoring the token (e.g., ThrowIfCancellationRequested() at key points, or propagating it to any async work started inside), or avoid adding it where it cannot be respected.

Suggested change
{
{
if (cancellationToken.IsCancellationRequested)
{
return Task.FromCanceled(cancellationToken);
}

Copilot uses AI. Check for mistakes.
Comment thread infrastructure/docker/infrastructure-oracle.yml
Comment thread infrastructure/docker/demo/docker-compose.yml
Comment thread genocs.slnx
Comment thread genocs.slnx
@@ -0,0 +1,88 @@

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI workflow references deleted solution file

High Severity

The genocs.sln file is deleted and replaced by genocs.slnx, but .github/workflows/sonar-analysis.yml still references genocs.sln in its restore, build, and test steps. The .devcontainer/devcontainer.json also references genocs.sln for dotnet.defaultSolution and postStartCommand. These were not updated in this PR, so the Sonar CI pipeline will fail on every run and the dev container will fail to build on startup.

Fix in Cursor Fix in Web

Comment thread infrastructure/terraform/main.tf
Environment = var.environment
Project = var.project_name
ManagedBy = "Terraform"
CreatedDate = timestamp()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

timestamp() in tags forces perpetual resource changes

Medium Severity

Using timestamp() in common_tags means every terraform plan will detect changes to the CreatedDate tag on every resource, making it impossible to get a clean "no changes" plan. Every terraform apply will unnecessarily update all tagged resources, complicating CI/CD pipelines and making drift detection unreliable. A static value or lifecycle ignore would be more appropriate for a creation timestamp.

Fix in Cursor Fix in Web

}

tags = local.common_tags
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing autoscale configuration for second app service

Medium Severity

The azurerm_monitor_autoscale_setting resource is only defined for app1 (WebAPI), but not for app2 (Worker). The variables app2_min_instances and app2_max_instances are declared in variables.tf and documented in terraform.tfvars.example, but never referenced in main.tf. This means the second app service has no autoscaling despite the infrastructure clearly being designed to support it — the autoscale block for app2 was likely forgotten.

Additional Locations (1)

Fix in Cursor Fix in Web

Comment thread infrastructure/terraform/variables.tf
image: genocs/demo-worker:2.0.0
build:
context: ../
dockerfile: ../../src/demo/Worker/Dockerfile

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docker compose references non-existent Dockerfiles for demo services

Low Severity

The build sections reference ../../src/demo/WebApi/Dockerfile and ../../src/demo/Worker/Dockerfile, but neither file exists. The src/demo/WebApi/ directory has no Dockerfile, and src/demo/Worker/ doesn't exist at all. Any attempt to build images with this compose file (e.g., docker compose build) will fail. Only pulling the pre-built genocs/demo-webapi:2.0.0 images would work.

Fix in Cursor Fix in Web

{
return await _client.PostAsync($"{_url}/redemptions/gift-cards/{_externalServiceOptions.Caller}/direct-issue", content);
}
using var content = new StringContent(serializedRequest, System.Text.Encoding.UTF8, "application/json");

Check failure

Code scanning / CodeQL

Cross-site scripting High

User-provided value
flows to here and is written to HTML or JavaScript.

Copilot Autofix

AI 7 months ago

Copilot could not generate an autofix suggestion

Copilot could not generate an autofix suggestion for this alert. Try pushing a new commit or if the problem persists contact support.

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
17 Security Hotspots
C Reliability Rating on New Code (required ≥ A)
E Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Comment thread Directory.Build.props
true
5.0.0
Nocco Giovanni Emanuele
README_NUGET.md

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GeneratePackageOnBuild breaks test projects missing IsPackable override

High Severity

The newly added GeneratePackageOnBuild=true and PackageReadmeFile=README_NUGET.md apply globally to all projects. Two test projects (Genocs.Core.UnitTests and Genocs.Persistence.MongoDB.ComponentTests) lack IsPackable=false and have no README_NUGET.md file, so every build attempt will try to pack them and fail because the required readme file doesn't exist. Other test/demo projects already have IsPackable=false and are unaffected.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants