Skip to content

Support scoped attributes in test quarantine workflow - #69633

Open
wtgodbe wants to merge 8 commits into
dotnet:mainfrom
wtgodbe:update-test-quarantine-attributes
Open

wtgodbe wants to merge 8 commits into
dotnet:mainfrom
wtgodbe:update-test-quarantine-attributes

Conversation

@wtgodbe

@wtgodbe wtgodbe commented Oct 1, 2026

Copy link
Copy Markdown
Member

Support scoped attributes in test quarantine workflow

  • You've read the Contributor Guide and Code of Conduct.
  • You've included unit or integration tests for your change, where applicable.
  • You've included inline docs for your change, where applicable.
  • There's an open issue for the PR that you are making. If you'd like to propose a new feature or change, please open an issue to discuss the change or find an existing issue.

Support scoped quarantine attributes

Description

Updates the test-quarantine workflow for the attribute changes introduced by #69584:

  • Preserves exact theory-row identities in failure evidence and correlates unambiguous InlineData rows with QuarantinedTestData.
  • Tracks row-level quarantine history and validates exact InlineData/QuarantinedTestData transformations at the safe-output boundary.
  • Supports operating-system-scoped QuarantinedTest and QuarantinedTestData additions through deterministic, receipt-bound OS scopes, falling back to all supported platforms when the evidence is incomplete.
  • Keeps multiline and combined attribute sections visible to quarantine-state/history collection while limiting automated row rewrites to one-line attributes.
  • Narrows POST_ClientCancellationBidirectional_RequestAbortRaised to quarantine only its demonstrated failing HTTP/3 row; the HTTP/2 row remains enabled.

Validation:

  • node .github/workflows/scripts/test-quarantine/test_kbe_issue_handler.js — passed.
  • python3 -B .github/workflows/scripts/test-quarantine/test_collect_case_a_eligibility.py — passed.
  • python3 -B .github/workflows/scripts/test-quarantine/test_validate_pull_request_outputs.py — passed.
  • gh aw compile test-quarantine --no-emit --strict — passed with no warnings.
  • gh aw compile test-quarantine — passed and regenerated .github/workflows/test-quarantine.lock.yml.
  • source activate.sh && ./src/Servers/build.sh --projects "$(pwd)/src/Servers/Kestrel/test/Interop.FunctionalTests/Interop.FunctionalTests.csproj" --no-build-native --no-build-nodejs --no-build-java --no-build-installers — passed with 0 warnings and 0 errors.

Related to #69584

wtgodbe and others added 2 commits October 1, 2026 12:51
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions github-actions Bot added the area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions label Oct 1, 2026
@wtgodbe
wtgodbe marked this pull request as ready for review October 1, 2026 19:53
Copilot AI balanced review requested due to automatic review settings October 1, 2026 19:53
@wtgodbe

wtgodbe commented Oct 1, 2026

Copy link
Copy Markdown
Member Author

CC @javiercn

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 review overview

🟡 Changes recommended

Row rewrites can break ordinary xUnit theories, and multi-build failures incorrectly fall back to all-platform quarantine.

Review effort: Balanced
Findings: 1 High severity · 1 Medium severity

Open (2)
What changed in this PR

Extends test quarantine automation with row-level and OS-scoped quarantines.

Changes:

  • Preserves theory-row identities and adds QuarantinedTestData handling.
  • Adds deterministic OS scopes and safe-output validation.
  • Narrows one Kestrel quarantine to its HTTP/3 row.
File Description
Http3RequestTests.cs Quarantines only the HTTP/3 row.
test-quarantine.md Updates workflow logic and instructions.
test-quarantine.lock.yml Regenerates the compiled workflow.
validate_pull_request_outputs.py Validates row and OS transformations.
test_validate_pull_request_outputs.py Tests safe-output validation.
test_collect_case_a_eligibility.py Tests row eligibility and OS scopes.
README.md Documents new safety properties.
collect_case_a_eligibility.py Adds row resolution, history, and OS collection.

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/scripts/test-quarantine/collect_case_a_eligibility.py Outdated
Restrict inline row targets to ConditionalTheory and retain per-build failure platforms with conservative unknown handling. Cover collector, aggregation, and PR validation boundaries.

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

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 review overview

🟡 Changes recommended

Platform inference uses OS-neutral Helix work-item names, causing scoped quarantines to fall back to all platforms.

Review effort: Balanced
Findings: 1 Medium severity

Open (1)
Resolved since last review (2)

Resolve and cache Helix job QueueId for all evidence sources instead of inferring platforms from OS-neutral work-item names. Cover production-shaped payloads, queue failures, and selected Source C jobs.

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

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 review overview

🟡 Changes recommended

Row matching mishandles common literals and trailing comments, while renamed row history can incorrectly permit automated unquarantine.

Review effort: Balanced
Findings: 1 High severity

Open (1)
Resolved since last review (1)

Normalize boolean and integer constants, reject unmatched inline rows instead of broadening quarantine scope, preserve commented attributes, and guard row history across owner renames.

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

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 review overview

🟡 Changes recommended

Commented theory rows are marked eligible but their generated patches are always rejected by safe-output validation.

Review effort: Balanced
Findings: 1 High severity

Open (1)
Resolved since last review (1)

Comment thread .github/workflows/scripts/test-quarantine/validate_pull_request_outputs.py Outdated
Parse row attributes without counting comment brackets and require exact comment preservation for each data row and diff hunk. Cover new quarantine, re-quarantine, and unquarantine transformations.

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

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 review overview

🟡 Changes recommended

Mixed inline and external theory data can cause the workflow to quarantine the wrong row.

Review effort: Balanced
Findings: 1 High severity

Open (1)
Resolved since last review (1)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@wtgodbe
wtgodbe requested a balanced review from Copilot October 2, 2026 19:43

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 review overview

🟡 Changes recommended

The collector treats MsQuicSupported as a potential data provider, preventing the newly scoped Kestrel row from being resolved or later unquarantined.

Review effort: Balanced
Findings: 1 Medium severity

Open (1)
Resolved since last review (1)

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

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 review overview

🔵 Needs a closer look

It changes privileged workflow evidence collection and patch validation across external Azure DevOps and Helix data paths that source inspection cannot fully verify.

Review effort: Balanced
Findings: None

Resolved since last review (1)

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants