Repository navigation
Let a sabotage entry declare its result hardware-dependent - #177
Merged
Merged
Conversation
The post-merge sweep of #176 failed on windows-ioring-sys' entry that drops a flush's covering flag: declared to survive from the machine it was written on, it is caught on runners whose device stack does not order the flush by itself, and GitHub runners have given both answers. The engineer's ruling, 2026-11-03: a new expectation. hardware-dependent scores caught and survived alike, puts '-- on this machine; either is declared' on the verdict line so which one a machine gave is kept, and still fails a patch that does not build or a run that never reached the tests. Recorded in DESIGN-NOTES (sabotage-hardware-dependent), with the rule that it is for the machine and not for flaky tests; documented in the README; one case for each side and its edge, the hang in the overrun case, and four harness sabotage entries, all caught. Completed item: M34.26: Add expect: hardware-dependent to the sabotage harness, and declare the RS-C-4 covering-flag entry with it. Co-authored-by: Copilot <[email protected]>
…ndent It was declared to survive, and whether it survives depends on whether the device orders a flush behind the file's outstanding writes by itself: GitHub runners have caught it (post-merge sweeps of c714e83 and 13f0674) and not (the nightly of 2026-11-03). It now declares hardware-dependent, its name says what decides the result, and D-65 records it. It survives on the machine this was made on. Co-authored-by: Copilot <[email protected]>
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues are recorded for the hardware-dependent sabotage expectation change.
No open issues 🎉
What changed in this PR
Adds a hardware-dependent expectation to the sabotage harness so device-dependent results do not cause inconsistent sweep failures, while preserving the observed verdict and rejecting build or infrastructure failures.
Changes:
- Accepts caught or survived outcomes for hardware-dependent entries and labels the verdict.
- Adds harness tests and sabotage checks for validation, scoring, and reporting.
- Updates the RS-C-4 covering-flag entry and documents the expectation’s intended use.
| File | Description |
|---|---|
| tools/test-run-sabotage.ps1 | Tests caught, survived, hung, and build-failure outcomes. |
| tools/sabotage2.json | Adds regression checks for the new expectation. |
| tools/run-sabotage.ps1 | Implements validation, scoring, and verdict labeling. |
| tools/README-sabotage.md | Documents semantics and limits of hardware-dependent entries. |
| DESIGN-NOTES.md | Records the harness design decision and rationale. |
| crates/windows-ioring-sys/sabotage.json | Declares the RS-C-4 covering-flag entry hardware-dependent. |
| crates/windows-ioring-sys/DESIGN-NOTES.md | Updates D-65 with the entry’s revised expectation. |
| CHECKLIST.md | Marks M34.26 complete. |
Review effort: Balanced
MikeGrier
pushed a commit
that referenced
this pull request
Nov 5, 2026
… hardware-dependent change found The sweep of main after #177 merged had a control hang past its bound inside the blocking_push capacity test that M45.5 made smaller. It is a data point for M45+.1, from before M45 landed; whether a stall still reaches a control after it is what the next sweeps show. Co-authored-by: Copilot <[email protected]>
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.
Adds a
hardware-dependentexpectation to the sabotage harness and declares the RS-C-4 covering-flag entry with it (M34.26).The post-merge sweep of #176 failed on
windows-ioring-sys' entry that drops a flush's covering flag. Declared to survive (from the machine it was written on), it is caught on runners whose device stack does not order the flush behind outstanding writes by itself, and GitHub runners have given both answers (post-merge sweeps ofc714e83band13f06742caught it; the nightly of 2026-11-03 did not).chore(tools):hardware-dependentscores caught and survived alike, puts "-- on this machine; either is declared" on the verdict line so which one a machine gave is kept, and still fails a patch that does not build or a run that never reached the tests. It is for the machine, not for flaky tests. Documented in the README and recorded in DESIGN-NOTES (sabotage-hardware-dependent); tests for each side and its edge, plus four harness sabotage entries, all caught.test(ioring): the RS-C-4 entry is declaredhardware-dependent, its name says what decides the result, and D-65 records it. It survives on the machine this was made on.Independent of the long-haul tier PR; both are based on
main.