You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Run specs on Specifications 5 and xUnit v3 as executables #762
Move every spec project to Cratis.Specifications.XUnit.v3 5.0.0 and xunit.v3, built as executables (OutputType Exe) and run as executables in CI instead of dotnet test, following the Fundamentals template (Cratis/Fundamentals#1214).
Spec projects stay on net10.0. Production library target frameworks do not change.
The package pins that Stage scaffolds into generated applications are a separate, deliberate decision and are not changed as a side effect.
Discovered test counts and outcomes must match exactly before and after, per project.
Test-only change; no release.
Status
State: Paused — Sequenced after L13's active #853 Specifications5.1.0 foundation; L13 sole migration writer, L33 read-only runner planner (confirmed with L51). No #762 implementation started; preserved spec5-xunit3@94892b2f must not be merged wholesale (714main-only commits/40overlapping paths). Runner slice: all11 Branch: stage-839-composite-diagnostic Scope: L33 fix-and-close evaluation Delivered: Nothing yet. Remaining: To be confirmed. Follow-ups: None.
Current behavior Central package pins still select Specifications 4.1.1 and xUnit 2.9.3. Shared source configuration adds test dependencies to Debug builds of ordinary source projects. CI also invokes dotnet test directly for renderer and Host probes in dotnet-build.yml.
Root cause / gap
Tests are not confined to dedicated spec projects: inline specs share production projects. Migrating only package names or dedicated projects would leave inconsistent discovery and execution paths. Existing executable entry points also need explicit compatibility checks.
Proposed change
Inventory every project and CI invocation, recording discovered test identities, counts and outcomes per project before migration. Update central testing pins and shared Debug configuration to Specifications 5/xUnit v3 executable execution, handling projects that already own an entry point separately. Update dedicated spec projects, CI helpers and direct probe invocations together. Preserve filters and nonzero-test guards. Add runner regression specs under for_SpecRunner/when_running_executable_specs for exit-code propagation, filtering and zero-discovery rejection. Compare identities, counts and outcomes per project afterward, not just aggregate totals. Update the C# spec guidance to match the new packages.
Size, risk and release intent
L; test-discovery and runner compatibility risk; no-release. Keep net10.0 and production library output unchanged outside test configuration.
Dependencies and blockers
Use Cratis/Fundamentals#1214 as the compatibility reference; verify its final executable-runner conventions. Generated-application scaffold pins are explicitly excluded and must remain unchanged. No upstream implementation blocker is established by this reading.
Activity
woksin commentedon Oct 29, 2026
Analysis and proposed solution
Current behavior
Central package pins still select Specifications 4.1.1 and xUnit 2.9.3. Shared source configuration adds test dependencies to Debug builds of ordinary source projects. CI also invokes
dotnet testdirectly for renderer and Host probes in dotnet-build.yml.Root cause / gap
Tests are not confined to dedicated spec projects: inline specs share production projects. Migrating only package names or dedicated projects would leave inconsistent discovery and execution paths. Existing executable entry points also need explicit compatibility checks.
Proposed change
Inventory every project and CI invocation, recording discovered test identities, counts and outcomes per project before migration. Update central testing pins and shared Debug configuration to Specifications 5/xUnit v3 executable execution, handling projects that already own an entry point separately. Update dedicated spec projects, CI helpers and direct probe invocations together. Preserve filters and nonzero-test guards. Add runner regression specs under
for_SpecRunner/when_running_executable_specsfor exit-code propagation, filtering and zero-discovery rejection. Compare identities, counts and outcomes per project afterward, not just aggregate totals. Update the C# spec guidance to match the new packages.Size, risk and release intent
L; test-discovery and runner compatibility risk; no-release. Keep net10.0 and production library output unchanged outside test configuration.
Dependencies and blockers
Use Cratis/Fundamentals#1214 as the compatibility reference; verify its final executable-runner conventions. Generated-application scaffold pins are explicitly excluded and must remain unchanged. No upstream implementation blocker is established by this reading.