Repository navigation
Flake reproducer has been dead since #395 — and its failure looked like a repro - #730
Merged
Merged
Conversation
…ke a repro
Every dispatch of flake-repro.yml has died before running the test. It packed
src/MeshWeaver.BusinessRules{,.Generator} "exactly as dotnet-test.yml does"; #395
removed that step from dotnet-test.yml (the scope generator ships in-process and legacy
`#r "nuget:MeshWeaver.BusinessRules.Generator"` directives are filtered out of the
resolve set at compile) and the projects left src/ with it. This copy kept packing them:
MSBUILD : error MSB1009: Project file does not exist.
Switch: src/MeshWeaver.BusinessRules/MeshWeaver.BusinessRules.csproj
WHY IT SURVIVED. The pack step runs BEFORE the loop, so the loop showed as `skipped`
while the job reported `failure` — the exact shape of a successful reproduction, whose
whole purpose is to fail. I dispatched it against the TrackActivity flake, saw
`failure`, and was one step away from reporting a repro of a test that never executed.
An artifact list that came back empty is what made me look.
So this removes the dead step AND makes that outcome impossible to mistake: the loop
step now runs with `always()` and fails loudly — "REPRO DID NOT RUN … the job's failure
is the harness, not the flake" — when its project is absent. A reproducer whose
did-not-run is indistinguishable from its did-reproduce is worse than no reproducer,
because it answers the question you asked it with the wrong answer.
Not changed, deliberately: the log-level guidance. This file already warns that Debug
in the CompileWatcher hot path MASKS the race (repros #1/#2 caught it at the committed
level; #3/#4 with Debug missed it across 120+ iterations). Dispatch with the default
level first and treat Trace as a last resort — my own dispatch used Trace, which on
that evidence may have suppressed the very race it was hunting.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WJiX3ou4QJnUppszJytrNj
Contributor
There was a problem hiding this comment.
Pull request overview
Fixes the manual flake-repro.yml workflow so it no longer fails before executing the intended test loop (after #395 removed the BusinessRules pack step), and makes “repro did not run” harder to misinterpret as “flake reproduced”.
Changes:
- Removed the stale “pack mesh-local #r packages” step that referenced deleted projects and caused the workflow to fail before the loop.
- Ensured the loop step runs with
if: always()and added a guard to fail loudly when the target project path is missing.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
84
to
85
| - name: Build | ||
| run: dotnet build --no-restore -c Release -p:CIRun=true -warnaserror |
Comment on lines
109
to
+118
| set -uo pipefail | ||
| iters="$REPRO_ITERS" | ||
| proj="$REPRO_PROJECT" | ||
| filt="$REPRO_FILTER" | ||
| # A repro run that never executed the test is the one outcome that must NOT be silent: | ||
| # its exit code is identical to a real reproduction. | ||
| if [ ! -d "$proj" ]; then | ||
| echo "::error::REPRO DID NOT RUN — project '$proj' not found. Nothing was reproduced; the job's failure is the harness, not the flake." | ||
| exit 1 | ||
| fi |
Contributor
Contributor
Contributor
Contributor
Contributor
Contributor
Contributor
This was referenced Aug 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every dispatch of
flake-repro.ymlhas died before running the test.It packs
src/MeshWeaver.BusinessRules{,.Generator}"exactly as dotnet-test.yml does". #395 removed that step fromdotnet-test.yml— the scope generator ships in-process, and legacy#r "nuget:MeshWeaver.BusinessRules.Generator"directives are filtered out of the resolve set at compile — and the projects leftsrc/with it. This copy kept packing them:Why it survived this long
The pack step runs before the loop, so:
The loop shows as
skippedwhile the job reportsfailure— the exact shape of a successful reproduction, whose entire purpose is to fail. I dispatched it against theTrackActivityflake, sawfailure, and was one step from reporting a repro of a test that never executed. What caught it was an artifact list that came back empty.A reproducer whose did-not-run is indistinguishable from its did-reproduce is worse than no reproducer: it answers the question you asked it, with the wrong answer.
The fix
always()and fails loudly —REPRO DID NOT RUN … the job's failure is the harness, not the flake— when its project is absent.Deliberately not changed
The log-level guidance. This file already warns that
Debugin the CompileWatcher hot path masks the race — repros #1/#2 caught it at the committed level, #3/#4 with Debug missed it across 120+ iterations. Dispatch at the default first; treatTraceas a last resort. Worth flagging that my own dispatch usedTrace, which on that evidence may itself have suppressed the race it was hunting.🤖 Generated with Claude Code
https://claude.ai/code/session_01WJiX3ou4QJnUppszJytrNj