Skip to content

Let a sabotage entry declare its result hardware-dependent - #177

Merged
MikeGrier merged 2 commits into
mainfrom
mikegrier/sabotage-hardware-dependent
Nov 4, 2026
Merged

MikeGrier merged 2 commits into
mainfrom
mikegrier/sabotage-hardware-dependent

Conversation

@MikeGrier

Copy link
Copy Markdown
Owner

Adds a hardware-dependent expectation 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 of c714e83b and 13f06742 caught it; the nightly of 2026-11-03 did not).

  • chore(tools): 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. 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 declared hardware-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.

Mike Grier and others added 2 commits November 3, 2026 17:16
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 <223556219+Copilot@users.noreply.github.com>
…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 <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings November 4, 2026 20:08

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.

🟢 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
MikeGrier merged commit 4a277fc into main Nov 4, 2026
44 checks passed
@MikeGrier
MikeGrier deleted the mikegrier/sabotage-hardware-dependent branch November 4, 2026 23:41
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 <223556219+Copilot@users.noreply.github.com>
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.

2 participants