Skip to content

v4.0.0-preview-1 — CoreEx reimagine/rewrite#147

Merged
chullybun merged 9 commits into
mainfrom
release/4
Jun 20, 2026
Merged

v4.0.0-preview-1 — CoreEx reimagine/rewrite#147
chullybun merged 9 commits into
mainfrom
release/4

Conversation

@chullybun

Copy link
Copy Markdown
Collaborator

Summary

This PR lands the v4 reimagine/rewrite of CoreEx onto main, replacing v3.

main has been frozen at v3.31.0 since this branch was cut — there are zero conflicts and this is a clean fast-forward. v3 history is permanently preserved via the v3.31.0 tag and the origin/release/3 branch.

What's in v4

  • Modular .NET framework for enterprise APIs and distributed services
  • Full Contoso sample reference implementation (Products, Shopping, Orders domains)
  • Polyglot data: PostgreSQL (Products) + SQL Server (Shopping)
  • Transactional outbox + Azure Service Bus messaging
  • FusionCache hybrid caching (in-process + Redis backplane)
  • Aspire orchestration for local distributed development
  • CoreEx source generator for contracts and reference data
  • Comprehensive test suite with UnitTestEx + NUnit

Post-merge

Tag the merge commit as v4.0.0-preview-1 to match Version.props.

Version

Version.props: 4.0.0-preview-1

chullybun and others added 8 commits May 1, 2026 11:18
* Azure Build & Deploy with azd
and TF infra build

* Azure Build & Deploy with azd
and TF infra build
* Merging from agentic separate branch/repo

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* updates for durable task

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* setting samples to target .net 10 only

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* making E2E target net10

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* fixing repo query

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* refactor: replace FluentAssertions with AwesomeAssertions in test projects

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* adding dts emulator to compose

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* feat: update test conventions and scaffold checklist to use AwesomeAssertions

Co-authored-by: Copilot <copilot@github.com>
Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* fix: apply PR review feedback - namespace, validation, item sync, routes, docs

Agent-Logs-Url: https://github.com/Avanade/CoreEx/sessions/6bd00f38-1dfa-43d7-bb5b-ffebc0d1b4a7

Co-authored-by: israels <3219628+israels@users.noreply.github.com>
Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* Merging from agentic separate branch/repo

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* updates for durable task

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* setting samples to target .net 10 only

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* making E2E target net10

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* fixing repo query

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* refactor: replace FluentAssertions with AwesomeAssertions in test projects

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* adding dts emulator to compose

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* feat: update test conventions and scaffold checklist to use AwesomeAssertions

Co-authored-by: Copilot <copilot@github.com>
Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* fix: apply PR review feedback - namespace, validation, item sync, routes, docs

Agent-Logs-Url: https://github.com/Avanade/CoreEx/sessions/6bd00f38-1dfa-43d7-bb5b-ffebc0d1b4a7

Co-authored-by: israels <3219628+israels@users.noreply.github.com>
Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>

* chore: update documentation and guidelines across various instruction files for clarity and consistency

Co-authored-by: Copilot <copilot@github.com>

* Refactor host setup instructions and enhance capability for messaging integration

- Cleaned up host setup instructions by removing unnecessary lines and improving clarity.
- Updated API host section to emphasize key registrations and middleware usage.
- Streamlined Subscribe host instructions to focus on essential configurations.
- Simplified Outbox Relay host guidance, highlighting minimal requirements.
- Created new authoring standards for instruction files to ensure consistency and maintainability.
- Established detailed workflows for adding capabilities and generating domains, enhancing user guidance.
- Introduced structured references for skills to improve discoverability and organization.

Co-authored-by: Copilot <copilot@github.com>

* feat: add comprehensive guide for CoreEx agent skills and workflows

* feat: update agent tools and enhance project configurations for multi-targeting support

Added some fixes for issues with failing tests running in parallel

* Removing accidental included deprecated files during merge.

* fix: correct project references and update null handling in OrderMapper

* fixing proper generator references in docs

* fix: update Order handling to preserve client-supplied identities and enhance validation

* fix: update Order query to ignore auto-includes for improved performance

* feat: implement IOrderWorkflowClient in order to mock and test orchestrated workflow

* copilot suggested fixes: update various files for consistency and improved clarity in code structure

---------

Signed-off-by: Israel Slobodkin <israel.slobodkin@avanade.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: israels <3219628+israels@users.noreply.github.com>
* CoreEx.Database.Postgres project introduction.

* Refactor Products sample to leverage PostgreSQL.

* Update to use interim schema for dbex yaml.

* Generator fixes.
Packaging improvements.

* DbEx finalized version.
Minor solution tweaks.

* Orders merge, and refactor/regen.
E2E testing uplift.

* CI.yml added.

* Fix CI.yml

* Add slnf files to aid CI.

* Further tweaks to CI and test fix.

* CI fix.

* Split parrallel and sequential for core to improve perf.

* Test fixes.

* Add retry to CircuitBreaker test.

* Fix parallelism for samples.

* Another parallelism fix.

* Another parallelism fix attemp?!

* Another parallelism crack :-(

* Fix async bug.

* NUnit result fix for retry.

* Another CI fix.

* Fixes related to PR comments.

* Re-gen sql procs.

* Tweaks based on review.

* Puch CI tweak.

* Another CI tweak.

* Sneak last - link to DTS from Aspire dashboard.

* Wrap up tweaks.

* CI tweak.

* Review feedback tweaks.
* Updating azure infra build to move Products to Postgres

Co-authored-by: Copilot <copilot@github.com>
Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

* fix: README.md updated for clean clone setup

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

* adding helper scripts for aspire dashboard tokens and E2E runner config setup

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

* adding ps1 variants of helper scripts.

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

* fix: updating copilot review findings for the scripts

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

* fix: removing the psql connection string parameter to disable cert validation.

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

* removing terraform and it's references
it was infra only anyways without any code deploy

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

* fix: updated ps1 to correctly get statuscodes

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

* updating agents.md to include helper script info

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

* fix: updated webapps to use keyvault connection strings for database and servicebus

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

* reverting use of keyvault for webapps & fixing keyvault reuse

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

* refactor: remove Key Vault references and update connection strings in Bicep and scripts

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

* fix: update dev params for when keyvault env var doesn't exist

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

* fix: copilot review updates

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>

---------

Signed-off-by: Aaron Spruit <aaron.spruit@avanade.com>
Co-authored-by: Copilot <copilot@github.com>
* Added CoreEx.CodeGen and related sample consumers. This performs code-generation of reference-data related .net artifacts.

* Mass README uplift.

* Samples/patterns documentation further described, include updates to key README's.

* Fixes based on review.

* Quick solution update to include sample docs.

* Correct review challenges; further .md updates.

* Fix service bus test.
* Review co-pilot instructions.
Review coreex.expect agent.
Add AGENTS.md to all packages.

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly [chullybun] <eric@thesiblys.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly [chullybun] <eric@thesiblys.com>

* Updates based on review.

* Further review tweaks,

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly [chullybun] <eric@thesiblys.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly [chullybun] <eric@thesiblys.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly [chullybun] <eric@thesiblys.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Eric Sibly [chullybun] <eric@thesiblys.com>

* Review tweaks.

* Fix exclude.

* Consumerization of instructions.
Prefix instructions.

* Instructions consumerized and renamed.

* Agent and content sync.

* Update expert skill and related.

* Quiet recent .editorconfig changes

* More AI-related tweakings.

* Added CoreEx.Template (dotnet new).

* Contracts and Data instruction uplift

* removing old template approach

* Fix Database reference for correct templates.
Further instruction tweaks.

* Refactor domain generation and scaffolding processes

- Removed the `/generate-domain` skill and associated documentation, transitioning to a deterministic scaffolding approach using `CoreEx.Template` with `dotnet new coreex*` commands.
- Updated the agent interaction guide to reflect the new workflow and emphasize the use of `CoreEx Expert` for architectural guidance.
- Revised application scaffolding recommendations to align with the new template-based approach, replacing previous commands with appropriate `dotnet new` commands.
- Enhanced documentation across various guides to clarify the integration of templates and agent skills, ensuring a cohesive understanding of the development workflow.
- Streamlined the decision-making process for creating new domains and adding capabilities, emphasizing the importance of inspecting existing codebases before making changes.

* Enhance AI scaffolding capabilities and cleanup context files

- Added coreex-scaffold skill and prompt for guided solution scaffolding.
- Updated README.md to include AI-guided scaffolding instructions.
- Introduced consumer-specific AI context files for improved Copilot guidance.
- Removed outdated consumer AI context files and README.
- Updated project file to include new AI context assets during packaging.

* More AI testing/updating.

* Tooling dependency fixes.
Instruction tweaks.

* Enhance CoreEx bootstrap template and AI workflow assets for improved scaffolding experience

* improving skill UX

* adding workflow file

* fixing reference folder

* Enhance coreex-scaffold agent and workflow with improved interview mechanics and default selection policies

* adding new agent

* Refactor coreex-scaffold to solution-scaffolder; update documentation and agent references

* Fix errant JSON `.value` path issue in validation.
Update copilot instructions for validators unit tests.
Extend Shopping sample with unit tests created by AI.

* Better together.

* Refactor CoreEx scaffolding skills and workflows

- Deleted SKILL.md and workflow.md files for coreex-scaffold as they are no longer needed.
- Updated solution-scaffolder SKILL.md to enhance the description and workflow steps, including validation and project wiring.
- Improved interview mechanics in solution-scaffolder to ensure a more structured and user-friendly experience.
- Added validation rules to ensure generated projects are correctly wired and tested.
- Adjusted command patterns to clarify naming conventions for host templates.
- Removed unnecessary agent file references from CoreEx.Template.csproj.

* Rename

* Refactor CoreEx template to ensure compile safety and improve structure across API, Relay, and Subscriber projects

* Enhance solution scaffolding with local validation steps and add Docker Compose and Service Bus configuration files

* adding assets files

* Minimize summary tags in generated output.
Further instruction tweaks.

* Tweaks based on testing.

* fix: resolve token replacement issues in templates and update project references

- Corrected placeholder names for application layer references in API and Subscriber templates.
- Updated project reference paths in `app-name.Api.csproj` and `app-name.Subscriber.csproj`.

refactor: convert raw template directives to comment syntax

- Changed raw C# preprocessor directives to template engine-compatible comment syntax across various files.
- Updated `.cs`, `.csproj`, `.yaml`, and `.md` files to ensure proper processing by the template engine.

chore: enhance template engine configuration

- Added `specialCustomOperations` to `template.json` files for handling comment-based conditionals in multiple file types.

fix: correct Result API usage in PlaceholderSubscriber

- Updated `PlaceholderSubscriber.cs` to use `Result.Success` property instead of method.

test: implement comprehensive template pack validation scripts

- Created validation scripts for Windows and Linux/macOS to ensure template quality before publishing.
- Added scenarios to validate scaffolding and compilation of generated projects.

docs: update TEMPLATE_FIXES_SUMMARY.md with detailed changes and validation steps

- Documented all fixes applied to the CoreEx.Template pack, including validation procedures and quality assurance measures.

* fixing remaining template issues

* Fix template bootstrap: defer code-generation-dependent registrations and add Phase 2 guide

- Remove merge conflict markers from Api and Subscriber Program.cs
- Convert template conditionals from '// #if' to '#if' (proper C# syntax)
- Defer ReferenceDataService/ReferenceDataRepository registration to post-CodeGen
- Remove premature Application layer imports from GlobalUsing files
- Add clear comments referencing two-phase bootstrap workflow
- Create BOOTSTRAP_PHASE_2.md guide with step-by-step checklist

Scaffolded projects now compile immediately at Phase 1 (bootstrap), then require
Phase 2 (post-CodeGen) to enable reference-data features. This prevents compilation
failures when services/validators don't yet exist.

Fixes issues:
- Template conditionals now properly resolve at generation time
- No merge conflict markers in generated code
- Reference-data registrations deferred until after CodeGen runs
- Application layer imports only added after services exist

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix template conditional structure: proper #elif and #endif placement

- Move Postgres configuration block inside #elif (implement-postgres) conditional in Api Program.cs
- Convert commented conditionals to proper C# preprocessor syntax in Subscriber Program.cs
- Remove malformed // #elif and // #endif, replace with #elif and #endif
- Ensure all service builder chains are properly nested within their conditionals

This prevents conditional logic from being emitted into generated code unexpectedly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Refactor conditional compilation directives for improved readability and more stable/consistent consumption

- Updated conditional compilation directives in various project files to remove parentheses for consistency and clarity.
- Adjusted project references and package references in .csproj files to align with new directive style.
- Modified appsettings and documentation files to reflect the updated directive format.
- Ensured all relevant files across the CoreEx, Relay, and Subscriber projects are updated accordingly.

* API testing.

* Tweaks from the last round of API test prompting.

* Finalized AI-enabled API testing

* Relay template.

* Remove internal bootstrapping

* All files now 'UTF-8 without BOM'.

* Harden subscriber template.

* Finalize Subscribe host template.

* Add template emitted README.

* Doco updates.

* Migrate to slnx.
Fix tests post newline corrections.

* Template updates so core compiles.

* Renaming

* Continued renaming

* Fix CI

* Fix slnf files.

* Re-instated CoreEx.sln for backwards compat

* Re-gen orders to fix ci issue.

* Oops, committed before saving.

* Include missing build project.

---------

Signed-off-by: Eric Sibly [chullybun] <eric@thesiblys.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Israel Slobodkin <israel.slobodkin@avanade.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 20, 2026 18:13

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.

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

@chullybun chullybun merged commit 0248b2b into main Jun 20, 2026
2 checks passed
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.

4 participants