Skip to content

chore: make PR validation evidence reliable - #2775

Open
Rana Singh (ranadeepsingh) wants to merge 11 commits into
microsoft:masterfrom
ranadeepsingh:chore/pr-validation-skills-20261016
Open

Rana Singh (ranadeepsingh) wants to merge 11 commits into
microsoft:masterfrom
ranadeepsingh:chore/pr-validation-skills-20261016

Conversation

@ranadeepsingh

@ranadeepsingh Rana Singh (ranadeepsingh) commented Oct 17, 2026 •

Copy link
Copy Markdown
Collaborator

Green PR checks can hide stale revisions, missing regression tests, or incomplete CI. External-contributor validation must also distinguish evidence from permission to edit, trigger CI, approve, or merge. This change makes those boundaries explicit, adds reusable validation helpers, and isolates credential-fetching CLI children from contributor-controlled Python configuration.

Related Issues/PRs

Follow-up to lessons from #2774 and recent external-contributor validation.

What changes are proposed in this pull request?

  • Pin readiness to the expected PR head and live target. Report exact required checks, workflow approvals, evidence completeness and human approval separately.
  • Collect build, ordered merge-parent, current job-attempt and named-test evidence. Bound Azure monitoring and response reads by the original deadline, with sanitized failures and explicit Azure/GitHub disagreement.
  • Verify an already trusted guidance checkout, including ignored files and symlinks. Keep contributor permissions in the contributor skill and shared validation in the PR-loop skill.
  • Remove Python-specific environment variables from native and Windows batch CLI children. An isolated parent alone does not prevent an inherited PYTHONPATH from loading contributor-controlled modules in a credential-fetching child.
  • For jobs that intentionally publish no individual test results, require named local regression proof plus separate API-verified current-merge aggregate corroboration. Do not represent aggregate counts as named hosted outcomes or waive unexplained skips, expected publication, or CI-only hardware requirements.
  • Require every changed file to serve the request. Keep the current lightweight review in the diff and preserve superseded feedback in verified hosted history.
  • Exempt only complete diffs confined to .github/skills/ and reviews/ from the workflow's default Azure requirement; actual enforced GitHub policy remains separate. This PR changes tools/ci/tests/, so it is not exempt.

No product implementation, pipeline definition, release tooling, or dependency pin changes.

How is this patch tested?

  • I have written tests (not required for typo or doc fix) and confirmed the proposed feature/bug-fix/change works.

Published head: 57f22136d7eacfc2e0d20d6722e3aae35938b87f, based on d34f762a785ee8a7c7c624806f8c112256168833. The current evidence index records the full 17-path source manifest, SHA-256 11aaf1ffda6ce9e088caeae3e7dc608dcd78e36f297997c04c296cc7db7a3ee5, and full diff, SHA-256 6214a751f6335039ffc0d85048dc978c6aa1d5d025c5666b1ce1a3a175aed944. The final diff has 17 source/test/documentation files and three review-evidence files. Superseded findings and dispositions remain in verified hosted history.

python -B -m pytest tools/ci/tests/test_collect_ci_evidence.py tools/ci/tests/test_watch_azure_pipeline.py -v -rs --tb=short

Passed on the current source: Windows Python 3.14.6: 88 tests and 285 subtests, zero skips, 20.34 seconds. Linux Python 3.10.20: 86 tests and 280 subtests, with two Windows-only batch-test skips, 21.12 seconds. The new native child-launcher case executed on both platforms; Windows also executed its batch variant.

The new regression invokes a real isolated parent and real Python CLI children with an untrusted shadow module on PYTHONPATH. Before the fix, both launcher cases failed; the shadow module's sentinel proved that contributor-controlled code executed. Afterward, the children return valid JSON without importing the shadow module, omit Python configuration variables, and preserve ordinary environment values. Tests use no real credentials or cloud operations.

python -B -m pytest tools/ci/tests/test_collect_ci_evidence.py::CiEvidenceTests::test_streaming_response_stops_at_the_original_deadline tools/ci/tests/test_get_pr_readiness.py::PrReadinessTests::test_missing_azure_aggregate_exposes_enforced_policy_source tools/ci/tests/test_get_pr_readiness.py::PrReadinessTests::test_classic_checks_only_require_present_successful_checks -v -rs --tb=short

Passed before the later child-environment fix: Windows Python 3.14.6: 3 tests and 10 subtests, zero skips, 9.61 seconds. Linux Python 3.10.20: the streaming test and its 3 subtests passed; the two readiness tests skipped because that local PATH lacked PowerShell. Windows executed those tests, and no readiness implementation changed afterward. The current full collector run above also covers the streaming case. CI fails rather than skips if PowerShell is missing under TF_BUILD.

The real socket-pair/urllib test checks completion, expiry between reads, and a stalled response with 0.2 seconds remaining against a two-second socket timeout; it requires timeout before 1.5 seconds and resource cleanup. Readiness tests execute the actual PowerShell entrypoint and cover ruleset/classic policy origins and missing/success/skipped/neutral classic checks-only outcomes. Four isolated mutations failed the intended behavioral assertions, rather than test setup. Runtime source was not modified for these regressions.

python -B -m pytest tools/ci/tests/test_collect_ci_evidence.py tools/ci/tests/test_get_pr_readiness.py tools/ci/tests/test_trusted_guidance.py tools/ci/tests/test_watch_azure_pipeline.py -v -rs --tb=short

Historical validation before the later follow-ups: Windows: 145 tests and 432 subtests, with two POSIX-only skips covered separately on Linux. This is not claimed as a full run of the current patch; the current collector/watcher run is reported above. Earlier cross-platform and before-fix results remain in the archived evidence.

black --check --required-version 22.3.0 .github/skills/synapseml-pr-loop/scripts/collect_ci_evidence.py tools/ci/tests/test_collect_ci_evidence.py
git diff --cached --check

Both passed. The complete changed-path set and every normalized source mode/blob were verified against the frozen manifest before publication. No local Spark build or Fabric E2E run was run for these tooling-only changes.

Review: at the maintainer's request, attempt 78 used one Low harness review (gpt-6-astra, high reasoning), not further six-lens passes. It passed with zero findings, valid transport, exact full input, matching runtime identity and persisted evidence. Earlier malformed-transport attempts remain failed and are preserved. No accepted unresolved finding remains in the local review.

The current-head Copilot review reports no open issues. CodeQL alert 86 was confirmed as a false positive: its SARIF classified a TemporaryDirectory() fixture path as a secret written into the synthetic batch launcher; no credential is involved. The original thread records the data-flow evidence and disposition. Python and JavaScript analysis jobs succeeded. The optional CodeQL aggregate remains neutral because a default API-upload configuration on master is missing from the PR; the identical warning exists on predecessor 0487209b131885d5b06b7036300acdc4ce37b09d. No security rule or workflow was disabled, and this warning is not represented as a fully green scan.

CI status: Azure build 241748094 is running for head 57f22136d7eacfc2e0d20d6722e3aae35938b87f. Its merge 5cbf7445453c3f2c0c42a7660bd33ef95d9de514 has ordered parents d34f762a785ee8a7c7c624806f8c112256168833 and that head; definition 17563, repository, PR merge ref and pullRequest reason were verified. This is not yet a passing result. The final CI-qualified lightweight review and human approval remain outstanding. Prior build 241745526 belongs to predecessor bb032091980d44fb7042f84571af5ebf40907b92 and cannot qualify the child-environment fix.

Build 241706733 succeeded for predecessor 0487209b131885d5b06b7036300acdc4ce37b09d, with 65 successful jobs. It does not qualify this follow-up.

Does this PR change any dependencies?

  • No. You can skip this section.
  • Yes. Make sure the dependencies are resolved correctly, and list changes here.

Does this PR add a new feature? If so, have you added samples on website?

  • No. You can skip this section.
  • Yes. Make sure you have added samples following below steps.
  1. Find the corresponding markdown file for your new feature in website/docs/documentation folder.
    Make sure you choose the correct class estimators/transformers and namespace.
  2. Follow the pattern in markdown file and add another section for your new API, including pyspark, scala (and .NET potentially) samples.
  3. Make sure the DocTable points to correct API link.
  4. Navigate to website folder, and run npm start to make sure the website renders correctly.
  5. Don't forget to add <!--pytest-codeblocks:cont--> before each python code blocks to enable auto-tests for python samples.
  6. Make sure the WebsiteSamplesTests job pass in the pipeline.

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@github-actions

Copy link
Copy Markdown

Hey Rana Singh (@ranadeepsingh) 👋!
Thank you so much for contributing to our repository 🙌.
Someone from SynapseML Team will be reviewing this pull request soon.

We use semantic commit messages to streamline the release process.
Before your pull request can be merged, you should make sure your first commit and PR title start with a semantic prefix.
This helps us to create release messages and credit you for your hard work!

Examples of commit messages with semantic prefixes:

  • fix: Fix LightGBM crashes with empty partitions
  • feat: Make HTTP on Spark back-offs configurable
  • docs: Update Spark Serving usage
  • build: Add codecov support
  • perf: improve LightGBM memory usage
  • refactor: make python code generation rely on classes
  • style: Remove nulls from CNTKModel
  • test: Add test coverage for CNTKModel

To test your commit locally, please follow our guild on building from source.
Check out the developer guide for additional guidance on testing your change.

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.

🟡 Changes recommended

Bootstrap import isolation and unresolved retry and warning-handling defects undermine reliable validation.

4 open issues
What changed in this PR

Strengthens SynapseML’s PR validation tooling without changing product code or pipeline definitions.

Changes:

  • Separates revision, workflow, check, and human-approval evidence.
  • Adds Azure job-attempt and named-test collection.
  • Verifies trusted guidance and clarifies validation-only permissions.
File Description
tools/​ci/​tests/​test_watch_azure_pipeline.py Tests timeline monitoring and retry handling.
tools/​ci/​tests/​test_trusted_guidance.py Tests guidance integrity checks.
tools/​ci/​tests/​test_get_pr_readiness.py Tests readiness and trigger safeguards.
tools/​ci/​tests/​test_collect_ci_evidence.py Tests build and test-result evidence.
.github/​skills/​synapseml-pr-loop/​SKILL.md Integrates shared validation helpers.
.github/​skills/​synapseml-pr-loop/​scripts/​watch_azure_pipeline.py Adds Azure timeline diagnostics.
.github/​skills/​synapseml-pr-loop/​scripts/​verify_trusted_guidance.py Verifies pinned guidance snapshots.
.github/​skills/​synapseml-pr-loop/​scripts/​Get-PrReadiness.ps1 Separates readiness gates and checks revisions.
.github/​skills/​synapseml-pr-loop/​scripts/​collect_ci_evidence.py Collects merge, job, and test evidence.
.github/​skills/​synapseml-pr-loop/​references/​trusted-guidance.md Documents trusted bootstrap procedures.
.github/​skills/​synapseml-pr-loop/​references/​review-gauntlet.md Extracts existing review policy.
.github/​skills/​synapseml-pr-loop/​references/​readiness-gates.md Clarifies independent readiness gates.
.github/​skills/​synapseml-pr-loop/​references/​loop-control.md Adds retry and evidence scenarios.
.github/​skills/​synapseml-pr-loop/​references/​ci-triage.md Documents timeline monitoring and bounded retries.
.github/​skills/​synapseml-pr-loop/​references/​ci-evidence.md Defines evidence collection and interpretation.
.github/​skills/​synapseml-external-contributor-review/​SKILL.md Clarifies validation without maintainer edits.
.github/​skills/​synapseml-external-contributor-review/​references/​ci-delegation.md Connects delegated validation to shared evidence.

Review effort: Balanced

Comment thread .github/skills/synapseml-pr-loop/references/trusted-guidance.md Outdated
Comment thread .github/skills/synapseml-pr-loop/scripts/collect_ci_evidence.py Outdated
Comment thread .github/skills/synapseml-pr-loop/scripts/collect_ci_evidence.py
Comment thread .github/skills/synapseml-pr-loop/scripts/collect_ci_evidence.py Outdated
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Oct 17, 2026
## Summary
Publish the final six clean pre-commit reviews, superseded public-safe review
history, driver resolutions, and input/provenance hashes for PR 2775.
Keep drafts with local workstation paths private and publish exclusion notes.
No reviewed source, test, skill, or dependency content changes in this commit.

## Prompting Intent
The engineer asked to complete the agreed PR-validation skill improvements and
create a pull request. The repository requires pre-PR review drafts to be
published under the actual PR number, while preserving feedback and privacy.

## Linked Sources
- PR: microsoft#2775
- Source publication commit: 66d08e2
- Artifact publication policy:
  .github/skills/synapseml-pr-loop/references/loop-control.md
- Review provenance: reviews/pr-2775/review-provenance.json
- Final source manifest:
  reviews/pr-2775/pr-validation-skills-attempt-12-manifest.json

## Rationale
Use the explicit artifact-only fingerprint exception so review text does not
recursively require another source review. Preserve original feedback and
record only line-ending and blank-line whitespace normalization. Keep unsafe
historical drafts private rather than rewrite them into purported originals.
Record all intermediate input hashes without duplicating large diff snapshots.
This non-feature chore carries documentation/build PR labels and does not
claim current-head CI, human approval, or permission to merge.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0bb95beb-b5fd-44e0-9fc0-9d036d4c74c7
Copilot AI balanced review requested due to automatic review settings October 17, 2026 08:03

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.

Comment thread .github/skills/synapseml-pr-loop/scripts/Get-PrReadiness.ps1 Outdated
## Summary
Strengthen external-contributor and PR-loop guidance with revision-pinned
readiness, Azure job-attempt and named-test evidence, trusted-guidance
verification, and explicit validation-only success without maintainer edits.
Keep evidence collection separate from authorization and merge approval.

## Prompting Intent
The engineer asked to implement the agreed lessons from recent external PR
validation work and open a pull request. Preserve contributor ownership, reuse
the existing workflow and watcher, and avoid product, dependency, release, or
CI-definition changes. Continue the required reviews and publish their history.

## Linked Sources
- Recent external PR validation: microsoft#2774
- External-contributor guidance: .github/skills/synapseml-external-contributor-review/
- PR-loop guidance and review policy: .github/skills/synapseml-pr-loop/
- Existing CI discovery: pipeline.yaml, CIHelpers
- Regression evidence: tools/ci/tests/test_get_pr_readiness.py,
  test_collect_ci_evidence.py, test_trusted_guidance.py,
  test_watch_azure_pipeline.py
- Pre-commit review: six independent clean lenses on the frozen pass-12 patch;
  original review drafts will be published under the assigned PR number.

## Rationale
Extend the existing watcher and share its read-only Azure collector rather
than add another polling framework. Fail closed on stale or incomplete evidence
without equating technical validation with human approval. Keep secret-bearing
CI authorization in the external-contributor contract. Verify a previously
trusted snapshot rather than let candidate guidance authenticate itself.
Extract the review gauntlet without changing its policy. Use offline regressions
for destructive trigger guards and live read-only checks for API provenance.
This is a non-feature tooling chore; the PR carries documentation/build labels.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0bb95beb-b5fd-44e0-9fc0-9d036d4c74c7
## Summary
Publish the final six clean pre-commit reviews, superseded public-safe review
history, driver resolutions, and input/provenance hashes for PR 2775.
Keep drafts with local workstation paths private and publish exclusion notes.
No reviewed source, test, skill, or dependency content changes in this commit.

## Prompting Intent
The engineer asked to complete the agreed PR-validation skill improvements and
create a pull request. The repository requires pre-PR review drafts to be
published under the actual PR number, while preserving feedback and privacy.

## Linked Sources
- PR: microsoft#2775
- Source publication commit: 66d08e2
- Artifact publication policy:
  .github/skills/synapseml-pr-loop/references/loop-control.md
- Review provenance: reviews/pr-2775/review-provenance.json
- Final source manifest:
  reviews/pr-2775/pr-validation-skills-attempt-12-manifest.json

## Rationale
Use the explicit artifact-only fingerprint exception so review text does not
recursively require another source review. Preserve original feedback and
record only line-ending and blank-line whitespace normalization. Keep unsafe
historical drafts private rather than rewrite them into purported originals.
Record all intermediate input hashes without duplicating large diff snapshots.
This non-feature chore carries documentation/build PR labels and does not
claim current-head CI, human approval, or permission to merge.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0bb95beb-b5fd-44e0-9fc0-9d036d4c74c7
## Summary
Harden PR readiness, Azure build and named-test collection, bounded polling,
and trusted-guidance verification. Add regression coverage and make the
no-bloat gate and permission boundaries explicit.

## Prompting Intent
The engineer requested merge-ready validation except human review, removal
of useless changes and files, and publication of the updates. No merge or
secret-bearing CI trigger is included in this commit.

## Linked Sources
- Pull request: microsoft#2775
- Related validation lessons: microsoft#2774
- Review and finding dispositions: reviews/pr-2775/
- Repository guidance: AGENTS.md
- Validation contracts: .github/skills/synapseml-pr-loop/

## Rationale
Extend existing helpers rather than introduce a parallel validation system.
Separate collected evidence, engineering readiness and human approval;
reject stale, incomplete or mismatched evidence. Preserve superseded safe
review feedback in a published archival commit before pruning it from the
final diff. All six pre-commit lenses passed the same source patch; current-head
Azure validation and final CI-qualified review remain outstanding.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0bb95beb-b5fd-44e0-9fc0-9d036d4c74c7
Copilot AI balanced review requested due to automatic review settings October 19, 2026 11:56
@ranadeepsingh
Rana Singh (ranadeepsingh) force-pushed the chore/pr-validation-skills-20261016 branch from a96e037 to 0f8d7d0 Compare October 19, 2026 11:56
## Summary
Remove 158 superseded review artifacts from the final diff, retaining immutable
links to their published feedback and dispositions. Keep only the six qualifying
pre-commit reviews, their source manifest and a concise evidence index.

## Prompting Intent
The engineer requested publication of the fixes without useless files, bloat
or filler. Preserve review provenance without making reviewers read obsolete
artifacts in the final change set.

## Linked Sources
- Pull request: microsoft#2775
- Attempts 1-12: https://github.com/microsoft/SynapseML/tree/38685fad3d2e3ec93e6757adf36aa270cc3a24d1/reviews/pr-2775
- Attempts 13-66: https://github.com/microsoft/SynapseML/tree/0f8d7d011838c86a2a80b6392a9aab8880676119/reviews/pr-2775
- Artifact retention: .github/skills/synapseml-pr-loop/references/loop-control.md

## Rationale
Prune only after verifying the archive is reachable through the hosted PR head
and its files match the Git blobs. This artifact-only commit leaves the reviewed
source, tests and documentation unchanged. It does not claim CI or human approval.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0bb95beb-b5fd-44e0-9fc0-9d036d4c74c7

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.

🔵 Needs a closer look

Security-sensitive validation changes still need human review, with an unresolved verifier defect and current-head CI unverified.

1 open issue
5 resolved since last review

Review effort: Balanced

Comment thread .github/skills/synapseml-pr-loop/scripts/verify_trusted_guidance.py
Copilot AI balanced review requested due to automatic review settings October 19, 2026 12:02
@ranadeepsingh

Copy link
Copy Markdown
Collaborator Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

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.

🟡 Changes recommended

The evidence collector can report successful validation after its original collection deadline expires.

2 open issues

Review effort: Balanced

Comment thread .github/skills/synapseml-pr-loop/scripts/collect_ci_evidence.py
## Summary
Reject non-regular guidance files before reading them and reject collected
evidence at or after the original deadline. Add focused public-CLI regressions,
clarify the two contracts, and retain the six clean pre-commit review lenses.

## Prompting Intent
Finish and publish the PR's correctness fixes without useless changes, files,
slop, or unnecessary mechanisms. Do not merge or claim full CI clearance.

## Linked Sources
- PR: microsoft#2775
- FIFO finding: microsoft#2775 (comment)
- Deadline finding: microsoft#2775 (comment)
- Review policy: https://github.com/microsoft/SynapseML/blob/d34f762a785ee8a7c7c624806f8c112256168833/.github/skills/synapseml-pr-loop/SKILL.md
- Evidence: reviews/pr-2775/README.md

## Rationale
Reuse Path.is_file and the client's existing remaining_timeout rather than
adding timeout settings, workers, or duplicate error handling. Both regressions
fail before the fix and pass in the affected Windows and Linux suites.
Keep the format-invalid review distinct from its successful same-source retry.
This tooling chore retains the PR's area/build and area/documentation labels;
there is no verified ADO task ID.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0bb95beb-b5fd-44e0-9fc0-9d036d4c74c7
Copilot AI balanced review requested due to automatic review settings October 19, 2026 14:39
## Summary
Remove superseded attempt-67 evidence and the format-invalid attempt-68
invocation from the final diff after verifying their published archive.
Keep the current six clean reviews, source manifest, and concise index.

## Prompting Intent
Publish the completed fixes without another review loop or useless files.
Preserve auditability without making reviewers sift through obsolete evidence.

## Linked Sources
- PR: microsoft#2775
- Verified archive: https://github.com/microsoft/SynapseML/tree/9da85296332272173f10cda7432e71de127889ed/reviews/pr-2775
- Earlier archive: https://github.com/microsoft/SynapseML/tree/0f8d7d011838c86a2a80b6392a9aab8880676119/reviews/pr-2775
- Review policy: https://github.com/microsoft/SynapseML/blob/d34f762a785ee8a7c7c624806f8c112256168833/.github/skills/synapseml-pr-loop/references/loop-control.md

## Rationale
The archive's hosted blobs and reachability were verified before pruning.
This artifact-only commit changes no reviewed source or tests and relies on
the completed attempt-68 pre-commit pass, not another recursive review.
The tooling chore retains area/build and area/documentation labels.
Current-head full CI and the final CI-qualified review remain outstanding.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0bb95beb-b5fd-44e0-9fc0-9d036d4c74c7

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.

🔵 Needs a closer look

Permission-sensitive validation tooling needs final human review, and authorized current-head CI clearance remains outstanding.

No open issues 🎉

2 resolved since last review

Review effort: Balanced

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.

🔵 Needs a closer look

Streaming HTTP responses can exceed the original collector and watcher deadlines without interruption.

No open issues 🎉

1 previously missed issue

In code that hasn't changed since last review

Medium severity Enforce absolute timeout during response body reads

.github/​skills/​synapseml-pr-loop/​scripts/​collect_ci_evidence.py:173

The urllib timeout limits socket inactivity, not total response time. If bytes keep arriving within that timeout, response.read() can continue past the original deadline. The final deadline check prevents a late success but cannot interrupt this read, so both the collector and timeline watcher can exceed their waiting limits. A standard-library socket-pair check reproduced this: a 150 ms timeout allowed a trickling response to finish after 481 ms. Enforce the absolute deadline during response consumption, with cleanup on expiry, and add a slow-stream regression.

Review effort: Balanced

## Summary
Interrupt streaming Azure responses at the original deadline, close their raw
socket streams, and distinguish deadline expiry from request timeouts without
revealing private response details. Document the requested skills/reviews-only
Azure exception consistently, including tools-path exclusions and the helper's
built-in versus enforced check requirements.

## Prompting Intent
The maintainer requested that skill and review changes, including executable
skill helpers, not require Azure validation unless tools/ files also change.
They then requested completing microsoft#2775, resolving addressed
review threads, and running authorized current-head Azure validation. Preserve
focused tests and useful evidence without unrelated changes or review-file bloat.

## Linked Sources
- Pull request and current-head automated feedback: microsoft#2775
- Prior published source/evidence: microsoft@9da8529
- Trusted workflow: .github/skills/synapseml-pr-loop/SKILL.md at d34f762
- Original attempt-69 findings and resolutions: reviews/pr-2775/task-unknown-attempt-69-stage-attempt-1-review-6-claude-opus-5.5.md
- Frozen source manifest and all six attempt-70 reviews: reviews/pr-2775/README.md

## Rationale
Wrap the existing raw response reader instead of adding timers, workers,
dependencies or public options. Focus regressions on the public streaming path,
cleanup and sanitized timeout classification. Keep the Azure exception in
existing guidance rather than introduce a new classifier or change repository
protection. Preserve original review verdicts and evidence-based dispositions;
optional coverage does not justify an unrelated implementation cycle.
Windows and Linux collector/watcher checks and pinned Black passed. Hosted
current-head CI and final CI-qualified review remain separate, outstanding gates.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0bb95beb-b5fd-44e0-9fc0-9d036d4c74c7
Copilot AI balanced review requested due to automatic review settings October 19, 2026 20:23
## Summary
Replace the superseded attempt-69 files with immutable links to their verified
published archive. Keep all six current review artifacts, their source manifest
and the evidence index in the final diff.

## Prompting Intent
Complete microsoft#2775 without unnecessary files or repetitive review
archives, while preserving original feedback, findings, resolutions and proof.

## Linked Sources
- Pull request: microsoft#2775
- Verified source and original review archive: microsoft@2d4bf69
- Artifact retention and invalidation rules: .github/skills/synapseml-pr-loop/references/loop-control.md

## Rationale
All three archived blobs match their hosted contents and remain reachable.
Only allocated review outputs change, so the reviewed 17-path source manifest
and local validation remain valid. Final-head hosted checks are still required;
this cleanup is not CI or merge clearance.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0bb95beb-b5fd-44e0-9fc0-9d036d4c74c7
@ranadeepsingh

Copy link
Copy Markdown
Collaborator Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

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.

🔵 Needs a closer look

Credential-sensitive validation tooling still lacks current-head full CI clearance and the final CI-qualified review.

No open issues 🎉

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 19, 2026 20:29
@ranadeepsingh

Copy link
Copy Markdown
Collaborator Author

Addressed the suppressed streaming-response deadline finding in
2d4bf69.
Each raw response receive now uses the original remaining budget, and cleanup
closes the underlying socket reader. Deadline expiry and shorter query timeouts
also have distinct sanitized diagnostics.

The streaming regression fails before the fix and covers normal completion,
interruption before body completion, socket closure and sender cleanup. The
current collector/watcher suites pass on Windows (87 tests, 282 subtests) and
Linux Python 3.10 (85 tests, 278 subtests; two Windows-only skips). A verified
real-TLS probe independently confirms interruption and cleanup.

Build 241706733
is now validating the published head 0487209b131885d5b06b7036300acdc4ce37b09d;
its ordered merge parents match that head and the current target. The latest
snapshot has zero unresolved inline threads. Original review findings,
dispositions and the exact source manifest are retained in the
review index.
CI is still running; this is not a merge-readiness or approval claim.

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.

🔵 Needs a closer look

Security-sensitive validation tooling still needs confirmed current-head Azure evidence, final CI-qualified review, and human approval.

No open issues 🎉

Review effort: Balanced

## Summary
Document named local regression proof plus separate aggregate corroboration
for CI jobs that intentionally do not publish individual test results.
Add real streaming-stall and classic-policy entrypoint regressions, without
changing runtime behavior. Preserve original review feedback and dispositions.

## Prompting Intent
Finish microsoft#2775 with lightweight reviews and current-head CI,
without expanding scope, bypassing evidence gates, or merging the PR.

## Linked Sources
- PR: microsoft#2775
- Review findings and resolutions: reviews/pr-2775/task-unknown-attempt-71-stage-attempt-1-review-5-claude-opus-5.5.md
- Regression findings: reviews/pr-2775/task-unknown-attempt-73-stage-attempt-1-review-5-claude-opus-5.5.md
- Current lightweight review: reviews/pr-2775/task-unknown-attempt-77-review-0-harness.md
- Validation contract: .github/skills/synapseml-pr-loop/references/ci-evidence.md

## Rationale
Keep named local outcomes distinct from hosted aggregate counts rather than
weakening publication or skip requirements. Exercise the real response and
PowerShell entrypoints; isolated mutations prove the new assertions detect
the missing timeout and policy behavior. The current Low review passed with
strict evidence validation on the full frozen patch. Earlier transport
failures remain failures, and predecessor CI does not qualify this commit.
This infrastructure/test follow-up has no associated ADO feature Task.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0bb95beb-b5fd-44e0-9fc0-9d036d4c74c7
Copilot AI balanced review requested due to automatic review settings October 20, 2026 02:36
## Summary
Keep the current Low review, complete source manifest and concise evidence
index in the PR diff. Preserve superseded feedback in verified hosted history.

## Prompting Intent
Get microsoft#2775 ready with lightweight reviews, a focused diff,
and honest current-head CI evidence without deleting review history.

## Linked Sources
- PR: microsoft#2775
- Verified archive: https://github.com/microsoft/SynapseML/tree/2025a2155137a9a03d302abc788b02bf1a5ed305/reviews/pr-2775
- Current review: reviews/pr-2775/task-unknown-attempt-77-review-0-harness.md
- Source manifest: reviews/pr-2775/attempt-77-source-manifest.json

## Rationale
Verify every archived review file mode and blob against the published PR head
before pruning. This avoids copying superseded findings into the final diff
while preserving their original outcomes and resolutions. No source, test or
workflow behavior changes; the full 17-path source manifest stays identical.
Final-SHA CI and remote review still apply. This labeled chore has no ADO Task.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0bb95beb-b5fd-44e0-9fc0-9d036d4c74c7
@ranadeepsingh

Copy link
Copy Markdown
Collaborator Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

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.

🔵 Needs a closer look

Child-process environment isolation remains unresolved, and current-revision CI evidence and final human review are still outstanding.

1 open issue

Review effort: Balanced

Comment thread .github/skills/synapseml-pr-loop/scripts/collect_ci_evidence.py
Copilot AI balanced review requested due to automatic review settings October 20, 2026 02: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.

🔵 Needs a closer look

Supplied evidence leaves current-head CI and final review outstanding, and the trust and authorization changes warrant human review.

1 open issue

Review effort: Balanced

## Summary
Strip Python-specific environment variables before native and Windows batch
CLI execution, including timeout cleanup. Document the parent/child isolation
boundary and add a regression through real isolated Python parent and CLI shims.

## Prompting Intent
Get microsoft#2775 ready with lightweight reviews and current-head CI.
Resolve concrete new review findings without unrelated changes or weakening
the trusted-guidance, authorization or evidence gates.

## Linked Sources
- PR: microsoft#2775
- Reproduced finding: microsoft#2775 (comment)
- Current lightweight review: reviews/pr-2775/task-unknown-attempt-78-review-0-harness.md
- Verified prior archive: https://github.com/microsoft/SynapseML/tree/2025a2155137a9a03d302abc788b02bf1a5ed305/reviews/pr-2775

## Rationale
Parent -E/-s flags do not remove inherited Python configuration from child
processes. Sanitize the existing shared collector/watcher launch path rather
than changing global environment or relying on each host launcher to isolate
itself. Preserve ordinary environment values needed by the existing CLI login.
Before the fix, the native and Windows-batch regression cases failed; afterward
the collector/watcher suites passed 88 tests/285 subtests on Windows and
86 tests/280 subtests on Linux with two Windows-only skips. Pinned Black and
the complete source-manifest roundtrip passed. The Low review is clean.
No real credentials or cloud operations are used by the regression.
This labeled infrastructure fix has no associated ADO feature Task.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0bb95beb-b5fd-44e0-9fc0-9d036d4c74c7
Copilot AI balanced review requested due to automatic review settings October 20, 2026 03:06
Comment thread tools/ci/tests/test_collect_ci_evidence.py Dismissed
@ranadeepsingh

Copy link
Copy Markdown
Collaborator Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

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.

🔵 Needs a closer look

Credential-handling and authorization-sensitive tooling requires confirmed current-head CI evidence and final human review.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants