Visitar URL original
fix: match generated Python stubs to effective method bindings by ranadeepsingh · Pull Request #2819 · microsoft/SynapseML · GitHub
Skip to content

fix: match generated Python stubs to effective method bindings - #2819

Merged
Rana Singh (ranadeepsingh) merged 4 commits into
microsoft:masterfrom
ranadeepsingh:fix/python-stubs-followup-20261109
Nov 10, 2026
Merged

Rana Singh (ranadeepsingh) merged 4 commits into
microsoft:masterfrom
ranadeepsingh:fix/python-stubs-followup-20261109

Conversation

@ranadeepsingh

@ranadeepsingh Rana Singh (ranadeepsingh) commented Nov 9, 2026 •

Copy link
Copy Markdown
Collaborator

Generated Python stubs can expose overridden methods with the wrong binding or signature, while generated service-column aliases can collide with real Python methods. This follow-up aligns supported stubs with effective def bindings and rejects those collisions before publishing misleading APIs.

Related Issues/PRs

Follow-up to #2810 and #2805.

What changes are proposed in this pull request?

  • Respect final unconditional definitions, decorators and equivalent conditional alternatives; omit unsupported or conflicting alternatives rather than inventing a signature.
  • Match Python's Unicode identifier normalization when checking service-column alias collisions.
  • Handle explicit continuations, indentation and supported argument separators/defaults without expanding into a general Python parser.
  • Preserve quoted = annotations in newly supported continued signatures and distinguish differing conditional annotations. This fixes a concrete gap found during finalization, with failing-before public-generation regressions.
  • Distinguish lambda annotation defaults from method defaults using the existing unfinished-lambda detector, resolving the suppressed finding in review 5840699599.
  • Preserve all inherited review artifacts; additional dispositions are in reviews/pr-2819/22-finalization-quoted-equals.json and reviews/pr-2819/23-suppressed-lambda-annotation.json.

Scope: tracks def bindings, not arbitrary assignment/import/class/del rebinding. Unsupported signature grammar remains unsupported. Public JVM signatures and serialized parameter shapes are unchanged.

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.

Current published head is 14f0793d7809fa6527950b971909aad84afe244c, based on master 37948d7d03ef0fa7f1aa24c54c2dd4d8a29c8dc0. The complete command below passed on this unchanged head, including all 97 public tests and aggregate code generation.

Toolchain: JDK 11, Scala 2.12.17, Spark 3.5.0, Python 3.11.8; JVM bounded to 3 GiB and two processors.

bash .github/skills/synapseml-local-setup/scripts/synapseml-sbt.sh --repo "$p" -- \
  -J-Xms256m -J-Xmx3g -J-XX:ActiveProcessorCount=2 -J-Djava.io.tmpdir="$p/.validation" \
  'set core / Test / fork := false' \
  'set Global / concurrentRestrictions := Seq(Tags.limitAll(1))' \
  core/compile core/Test/compile core/scalastyle core/Test/scalastyle \
  'core/testOnly com.microsoft.azure.synapse.ml.codegen.PyCodegenSuite' codegen
  • Core compile/test compile and both styles: passed.
  • Official final-head PyCodegenSuite: 97 passed; zero failed, canceled, ignored or pending.
  • Aggregate codegen: passed for all components.
  • /opt/conda/envs/synapseml/bin/python .cache/pr2819/final-generated.py: passed, including a clean-tree rerun after relocating local evidence. Compiled all 319 generated .py and 223 .pyi files; imported stages/services/OpenAI packages and public accessors; compared actual Python bindings/signatures with stubs for three generated fixtures, including quoted and lambda annotations. An initial probe incorrectly assumed the Scala-only Lambda.setTransform name; the corrected probe checks its actual generated setTransformFunc accessor, with no product change.
  • /opt/conda/envs/synapseml/bin/python -m black --check --workers 2 --extend-exclude 'docs/' .: passed, pinned Black 22.3.0, 216 files unchanged, exit 0.
  • python .validation/baseline-check.py: passed. Isolated target-master classes fail the final-binding regression (1 expected failure); isolated previous-head 89bdd873 classes fail both new quoted-equals regressions (2 expected failures). No target/generated classes were overwritten for these comparisons.
  • The continued lambda-annotation regression also fails against 4b8fa377 production classes (1 expected failure), then passes with the corrected extractor. Evidence: reviews/pr-2819/23-suppressed-lambda-annotation.json.

Local evidence was relocated from .validation (used by the historical SBT/baseline commands above) to ignored .cache/pr2819; the worktree is clean.

Remote gates: Azure build 245846006 succeeded at 12:21:31 UTC on November 10, 2026 against synthetic merge 5a837072ba086bb1a361aa0aafc25f2329ee8ac3; its ordered parents are the base and head above. All 65 executed jobs succeeded. UnitTests core passed, including all 97 PyCodegenSuite cases (test run 1222774647), individually corroborated in raw ScalaTest log 935 rather than relying on Azure's outcome labels. Other core suites contain two explicitly ignored cases; they are not counted as codegen coverage. CPU3 E2E passed all nine tests, including HyperOpt (raw log 1701), and GPU E2E passed all four (raw log 1724); neither suite canceled or ignored tests. All GitHub workflow runs passed.

Coverage limits: Fabric E2E and the advisory private Internal compatibility phase were excluded by the existing fork-PR conditions in pipeline.yaml; neither is claimed as executed. Master-only publishing/cache/policy steps also contain expected skips. Required CLA, WIP and Azure checks are present with their configured issuers, with no pending, failed, missing or unproven required checks.

Exact-head Copilot review 5841012069 used Lite fallback because its full agentic runner timed out. Its four comments were read, replied to and resolved with explicit non-blocking dispositions (duplicate marker constants and repeated offline Unicode normalization, not demonstrated behavioral defects). One full-review retry produced no later automated review within a bounded 20-minute window or at final inspection; full-agentic clearance is not claimed. This is published for maintainer review with green engineering checks, not merged; formal human approval remains required. Active-port replay was not run; master's guide no longer automatically replays master changes onto Spark 4.1.

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.

@github-actions

github-actions Bot commented Nov 9, 2026

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.

@azure-pipelines

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

@ranadeepsingh

Copy link
Copy Markdown
Collaborator Author

/azp run

@azure-pipelines

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

Summary:
- Keep the effective final unconditional method binding when generating supported stubs.
- Normalize identifier identity with Python's NFKC rules for service-alias collision checks.
- Handle explicit continuations, descriptor decorators, nested scopes, async declarations, and Python indentation; retain the existing ASCII-only supported stub-signature boundary.

Prompting intent:
Preserve reviewed follow-up fixes after the prerequisite PRs were merged, and complete current-source validation and review.

Linked sources:
Follow-up to microsoft#2810 and microsoft#2805.

Rationale:
Generated Python stubs can retain overwritten method bindings, and service-column alias checks can miss equivalent Unicode identifiers or continued declarations. This follow-up makes supported stub extraction and collision checks match the generated Python class more closely.

Local validation:
sbt "set core / Test / fork := false" "core/compile" "core/Test/compile" "core/testOnly com.microsoft.azure.synapse.ml.codegen.PyCodegenSuite" "core/scalastyle" "core/Test/scalastyle"
Passed: 93 tests, 0 skipped, compile/Test compile, both scalastyle gates.

Publication:
Explicitly authorized draft-first bootstrap; formal reviews and current-head CI remain pending.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733
## Summary
Handle continued declarations, descriptor decorators, Unicode identifier
identity and supported lambda defaults while omitting ambiguous signatures.
Keep regression coverage and original review reports with their dispositions.

## Prompting Intent
Freeze scope, finish running reviews, address blockers, publish and run
current-head CI instead of starting additional full review matrices.

## Linked Sources
- microsoft#2819
- microsoft#2811

## Rationale
Generated stubs must not advertise superseded method bindings or miss alias
collisions that Python resolves as the same identifier. Extraction remains
def-based; general class-attribute rebinding and pre-existing quoted
annotation limitations are documented rather than claimed as solved.

## Validation
Passed 97 codegen cases with zero skips, production/test compilation and both
core scalastyle gates. The current review pass has 11 qualified reports:
three models for themes 1-3 and two for detailed correctness. Remaining
matrices were explicitly superseded by the user's bounded completion choice,
not marked completed. Current-head CI remains a separate gate.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733
@ranadeepsingh
Rana Singh (ranadeepsingh) force-pushed the fix/python-stubs-followup-20261109 branch from dc17aa8 to 89bdd87 Compare November 10, 2026 09:57
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 10, 2026
## Summary
Integrate reviewed session-persistence, codegen and attachment fixes; retain
task kill reasons, transport cancellation, value-codec regressions and the
32 supported notebook examples.

## Prompting Intent
Freeze scope, finish running reviews, address blockers, publish and run
current-head CI instead of starting additional full review matrices.

## Linked Sources
- microsoft#2811
- microsoft#2818
- microsoft#2819
- microsoft#2820

## Rationale
Ensure the integrated public AIPrompt path preserves the same cancellation,
persistence and generated-wrapper contracts as the prerequisite fixes.
Keep unsupported Decisions examples commented out and existing limitations
visible. Do not expand scope to unrelated codegen or connector behavior.

## Validation
Source-scoped qualification covers 511 cognitive and 189 core cases with zero
skips, six notebook cases and 33 installed Python cases. Compile, style,
codegen, packaging and exact installed artifact provenance are retained.
The latest test-only changes passed targeted regressions without altering
the qualified runtime artifacts. Existing reviews and dispositions are
retained; no additional full matrix is claimed. Fresh CI is still required.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 10, 2026
## Summary
Carry the integrated compatibility fixes into optional recovery, preserve
durable schema/binding checks and maintain process-isolation coverage.

## Prompting Intent
Freeze scope, finish running reviews, address blockers, publish and run
current-head CI instead of starting additional full review matrices.

## Linked Sources
- microsoft#2813
- microsoft#2811
- microsoft#2818
- microsoft#2819
- microsoft#2820

## Rationale
Keep recovery opt-in and separate from the core feature. Inherit reviewed
runtime fixes without losing the parent-specific task cancellation contract
or changing the documented retry/idempotency limitations.

## Validation
Source-scoped qualification retains 119 attachment, 189 core and 272 Delta
cases, three explicitly recorded profile cancellations and two installed
Python cases. Current request regressions, compilation and style passed.
Managed restart evidence is retained through byte-equivalent runtime
artifacts, not falsely reported as rerun. Existing review evidence is retained;
additional matrices were superseded by user approval. Fresh CI is required.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733
@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

Cross-runtime lexer and Unicode changes need reproducible end-to-end and CI validation of the exact published head, since reported checks covered pending local source.

No open issues 🎉

What changed in this PR

This follow-up to #2810 and #2805 aligns SynapseML’s generated Python stubs with effective method definitions and strengthens service-column alias collision checks, while retaining the existing supported-signature limits.

Changes:

  • Selects final unconditional definitions and omits unsupported or conflicting alternatives, using token-aware signature comparison.
  • Applies Python Unicode normalization and improves handling of continuations, decorators, indentation, and argument separators.
  • Expands public code-generation regression coverage and records review evidence and resolutions.

The PR reports 97 passing tests plus compilation and style checks; those results were not independently rerun here.

File Description
reviews/​pr-2819/​task-unknown-attempt-9-stage-attempt-1-review-1-gpt-6.1-sol-slice1.md Records the original Unicode-table mismatch review.
reviews/​pr-2819/​task-unknown-attempt-21-stage-attempt-2-review-4-claude-opus-5.5-slice1.md Records detailed correctness review evidence.
reviews/​pr-2819/​task-unknown-attempt-21-stage-attempt-2-review-1-claude-opus-5.5-slice1.md Documents the non-def rebinding scope decision.
reviews/​pr-2819/​task-unknown-attempt-21-stage-attempt-1-review-4-gpt-6.1-sol-slice1.md Records correctness checks for extraction and rendering.
reviews/​pr-2819/​task-unknown-attempt-21-stage-attempt-1-review-3-grok-4.7-slice1.md Documents interpreter-hardening and signature-limit dispositions.
reviews/​pr-2819/​task-unknown-attempt-21-stage-attempt-1-review-3-gpt-6.1-sol-slice1.md Records edge-case review evidence.
reviews/​pr-2819/​task-unknown-attempt-21-stage-attempt-1-review-3-claude-opus-5.5-slice1.md Documents diagnostic limitations and their disposition.
reviews/​pr-2819/​task-unknown-attempt-21-stage-attempt-1-review-2-grok-4.7-slice1.md Records correction of an annotation-parsing concern.
reviews/​pr-2819/​task-unknown-attempt-21-stage-attempt-1-review-2-gpt-6.1-sol-slice1.md Records architecture and compatibility checks.
reviews/​pr-2819/​task-unknown-attempt-21-stage-attempt-1-review-2-claude-opus-5.5-slice1.md Documents maintenance and interpreter-design dispositions.
reviews/​pr-2819/​task-unknown-attempt-21-stage-attempt-1-review-1-grok-4.7-slice1.md Documents fixture-escaping and quoted-annotation dispositions.
reviews/​pr-2819/​task-unknown-attempt-21-stage-attempt-1-review-1-gpt-6.1-sol-slice1.md Records broad source and regression-coverage checks.
reviews/​pr-2819/​task-unknown-attempt-20-stage-attempt-2-review-3-claude-opus-5.5-slice1.md Records the safe-lambda fix and deferred annotation limitation.
reviews/​pr-2819/​task-unknown-attempt-20-stage-attempt-1-review-3-grok-4.7-slice1.md Documents Unicode, form-feed, and interpreter dispositions.
reviews/​pr-2819/​task-unknown-attempt-20-stage-attempt-1-review-3-gpt-6.1-sol-slice1.md Records normalization and boundary-case checks.
reviews/​pr-2819/​task-unknown-attempt-20-stage-attempt-1-review-2-grok-4.7-slice1.md Records extraction and rendering contract checks.
reviews/​pr-2819/​task-unknown-attempt-20-stage-attempt-1-review-2-gpt-6.1-sol-slice1.md Records architecture and public-generation coverage checks.
reviews/​pr-2819/​task-unknown-attempt-20-stage-attempt-1-review-2-claude-opus-5.5-slice1.md Documents architecture concerns and scope decisions.
reviews/​pr-2819/​task-unknown-attempt-20-stage-attempt-1-review-1-grok-4.7-slice1.md Documents existing parser and naming limitations.
reviews/​pr-2819/​task-unknown-attempt-20-stage-attempt-1-review-1-gpt-6.1-sol-slice1.md Records binding, continuation, and Unicode checks.
reviews/​pr-2819/​task-unknown-attempt-20-stage-attempt-1-review-1-claude-opus-5.5-slice1.md Records security, compatibility, and scope checks.
reviews/​pr-2819/​task-unknown-attempt-19-stage-attempt-1-review-1-gpt-6.1-sol-slice1.md Records the Unicode lambda-token boundary fix.
reviews/​pr-2819/​task-unknown-attempt-18-stage-attempt-1-review-1-grok-4.7-slice1.md Documents baseline comparisons for existing limitations.
reviews/​pr-2819/​task-unknown-attempt-18-stage-attempt-1-review-1-gpt-6.1-sol-slice1.md Records the declaration identifier-boundary fix.
reviews/​pr-2819/​task-unknown-attempt-17-stage-attempt-1-review-1-gpt-6.1-sol-slice1.md Records token-aware annotation comparison changes.
reviews/​pr-2819/​task-unknown-attempt-17-stage-attempt-1-review-1-claude-opus-5.5-slice1.md Records annotation-whitespace regression resolution.
reviews/​pr-2819/​task-unknown-attempt-16-stage-attempt-1-review-1-gpt-6.1-sol-slice1.md Records annotation-colon spacing normalization.
reviews/​pr-2819/​task-unknown-attempt-16-stage-attempt-1-review-1-claude-opus-5.5-slice1.md Records binding, process-safety, and coverage checks.
reviews/​pr-2819/​task-unknown-attempt-15-stage-attempt-1-review-1-gpt-6.1-sol-slice1.md Records extraction and alias-validation checks.
reviews/​pr-2819/​task-unknown-attempt-15-stage-attempt-1-review-1-claude-opus-5.5-slice1.md Records strengthened continued-default assertions.
reviews/​pr-2819/​task-unknown-attempt-14-stage-attempt-1-review-1-gpt-6.1-sol-slice1.md Records argument-splitting and formatting-equivalence fixes.
reviews/​pr-2819/​task-unknown-attempt-13-stage-attempt-1-review-1-gpt-6.1-sol-slice1.md Records continuation and binding-precedence checks.
reviews/​pr-2819/​task-unknown-attempt-13-stage-attempt-1-review-1-claude-opus-5.5-slice1.md Records ambiguity, identifier-validation, and fixture-portability fixes.
reviews/​pr-2819/​task-unknown-attempt-12-stage-attempt-1-review-1-gpt-6.1-sol-slice1.md Records descriptor, separator, and collision checks.
reviews/​pr-2819/​task-unknown-attempt-12-stage-attempt-1-review-1-claude-opus-5.5-slice1.md Records interpreter isolation and override-coverage improvements.
reviews/​pr-2819/​task-unknown-attempt-11-stage-attempt-1-review-1-gpt-6.1-sol-slice1.md Records effective-definition and scope checks.
reviews/​pr-2819/​task-unknown-attempt-11-stage-attempt-1-review-1-claude-opus-5.5-slice1.md Records Unicode transport and binding-coverage fixes.
reviews/​pr-2819/​task-unknown-attempt-10-stage-attempt-1-review-1-gpt-6.1-sol-slice1.md Records argument-separator rendering fixes.
core/​src/​test/​scala/​com/​microsoft/​azure/​synapse/​ml/​codegen/​PyCodegenSuite.scala Adds exact-stub, collision, and generated-file compilation assertions.
core/​src/​test/​scala/​com/​microsoft/​azure/​synapse/​ml/​codegen/​PyCodegenFixtures.scala Adds override, Unicode, continuation, decorator, and lambda fixtures.
core/​src/​main/​scala/​com/​microsoft/​azure/​synapse/​ml/​codegen/​Wrappable.scala Normalizes alias checks and renders consistent effective stubs.
core/​src/​main/​scala/​com/​microsoft/​azure/​synapse/​ml/​codegen/​PythonMethodExtractor.scala Adds normalized binding selection, token comparison, and continuation-aware extraction.

Review effort: Balanced

## Summary
Fix the non-feature code-generation regression where an equals sign inside
an annotation is mistaken for a parameter default. Preserve continued
signatures and distinguish conditional definitions with different strings.

## Prompting Intent
Finalize microsoft#2819 without merging, preserve concurrent
contributor changes and review evidence, fix demonstrated gaps with
failing-before public-generation regressions, and validate the final patch.
No Azure DevOps work item was supplied for this bug fix.

## Linked Sources
- Follow-up PR: microsoft#2819
- Original user-facing request: microsoft#2805
- Merged prerequisite: microsoft#2810
- Prior annotation-limit dispositions: reviews/pr-2819/task-unknown-attempt-20-stage-attempt-2-review-3-claude-opus-5.5-slice1.md
- Prior scope disposition: reviews/pr-2819/task-unknown-attempt-21-stage-attempt-1-review-1-claude-opus-5.5-slice1.md

## Rationale
Reuse the existing declaration lexer to locate an unquoted, unnested
default separator instead of expanding the supported signature grammar
or introducing a general Python parser. Earlier annotation findings were
classified as pre-existing, but newly supported continued signatures expose
the same bug through this PR's public generator. Keep the existing
whitespace-comparison coverage and add quoted-equals coverage alongside it.
Document the def-binding scope explicitly without expanding rebinding support.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 088afa1d-aa9e-41b5-b0e6-3aaef01c8cd1
Copilot AI balanced review requested due to automatic review settings November 10, 2026 10:46
@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

The extractor mistakes a lambda parameter’s equals sign for a method default separator in continued annotations, producing invalid .pyi files.

No open issues 🎉

1 previously missed issue

In code that hasn't changed since last review

Medium severity Lambda defaults are misparsed as method argument defaults

core/​src/​main/​scala/​com/​microsoft/​azure/​synapse/​ml/​codegen/​PythonMethodExtractor.scala:49

For a backslash-continued method with value: lambda item=1: item, this treats the lambda parameter's = as the method argument's default separator. The renderer then emits value: lambda item = ..., leaving the lambda incomplete and making the entire .pyi invalid. Track unfinished lambda headers when selecting the default separator, and add a continued-annotation regression.

Review effort: Balanced

## Summary
Fix the remaining default-separator ambiguity when a continued parameter
annotation contains a lambda with its own default argument.
This is a non-feature bug fix; no Azure DevOps work item was supplied.

## Prompting Intent
Complete PR 2819 end to end without merging, inspect suppressed review
findings rather than trusting zero open threads, and prove each correction
with a failing-before public-generation regression.

## Linked Sources
- PR: microsoft#2819
- Exact-head suppressed review: microsoft#2819 (review)
- Related request: microsoft#2805
- Earlier fix and evidence: reviews/pr-2819/22-finalization-quoted-equals.json

## Rationale
Reuse the existing unfinished-lambda detector when selecting a top-level
equals separator. This one-line guard distinguishes lambda parameter
defaults from method parameter defaults without broadening the parser.
The public fixture covers both required and defaulted annotations.
The old production classes fail the new fixture; all 97 public tests pass
with the corrected source compiled into an isolated classpath overlay.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 088afa1d-aa9e-41b5-b0e6-3aaef01c8cd1
Copilot AI balanced review requested due to automatic review settings November 10, 2026 11:03
@ranadeepsingh

Copy link
Copy Markdown
Collaborator Author

/azp run

@ranadeepsingh

Copy link
Copy Markdown
Collaborator Author

Addressed the suppressed lambda-annotation finding from review 5840699599 in 14f0793. The continued-annotation public test fails on 4b8fa37 production classes; all 97 public tests pass with the corrected extractor/fixture compiled in an isolated classpath overlay. The fix reuses the existing unfinished-lambda detector. Final-head official SBT/codegen, Azure validation and automated review are being rerun; this is not yet a merge-readiness claim.

@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.

Warning

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Copilot review overview

4 open issues

Review effort: Lite

@ranadeepsingh

Copy link
Copy Markdown
Collaborator Author

Final head 14f0793: official local core compile/Test compile/styles and 97 tests pass (zero canceled/ignored); Azure 245846006 also ran all 97 PyCodegenSuite cases, corroborated individually in raw ScalaTest log 935, not just Azure result labels. The four Lite-review suggestions were inspected and dispositioned in their threads; none identifies a current behavioral defect. The full agentic review previously timed out waiting for a runner. All GitHub workflow runs now passed, so I requested a fresh review of this unchanged head to try the full review again. Aggregate local codegen and remaining Azure jobs are still running.

@ranadeepsingh

Copy link
Copy Markdown
Collaborator Author

Integration note for #2813: verified recovery head 0eef1a4 contains extractor blob b3147deede01e6f517b6ba95c4e05eaf599f41d8, identical to the regression baseline 89bdd87. Therefore recovery does need the two finalization fixes, in order: 4b8fa37, then 14f0793. The second commit depends on the token-aware default splitter introduced by the first. Preserve recovery-specific pyParamInputType handling; it is separate from these hunks. Both fixes have final-head local 97/97, aggregate codegen/generated runtime-binding proof, and Azure 97/97 raw-log corroboration. No recovery worktree was modified. Current Azure245846006 has 64 successful jobs and only GPU E2E still running.

Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 10, 2026
## Summary
Fix the non-feature code-generation regression where an equals sign inside
an annotation is mistaken for a parameter default. Preserve continued
signatures and distinguish conditional definitions with different strings.

## Prompting Intent
Finalize microsoft#2819 without merging, preserve concurrent
contributor changes and review evidence, fix demonstrated gaps with
failing-before public-generation regressions, and validate the final patch.
No Azure DevOps work item was supplied for this bug fix.

## Linked Sources
- Follow-up PR: microsoft#2819
- Original user-facing request: microsoft#2805
- Merged prerequisite: microsoft#2810
- Prior annotation-limit dispositions: reviews/pr-2819/task-unknown-attempt-20-stage-attempt-2-review-3-claude-opus-5.5-slice1.md
- Prior scope disposition: reviews/pr-2819/task-unknown-attempt-21-stage-attempt-1-review-1-claude-opus-5.5-slice1.md

## Rationale
Reuse the existing declaration lexer to locate an unquoted, unnested
default separator instead of expanding the supported signature grammar
or introducing a general Python parser. Earlier annotation findings were
classified as pre-existing, but newly supported continued signatures expose
the same bug through this PR's public generator. Keep the existing
whitespace-comparison coverage and add quoted-equals coverage alongside it.
Document the def-binding scope explicitly without expanding rebinding support.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 088afa1d-aa9e-41b5-b0e6-3aaef01c8cd1
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 10, 2026
## Summary
Fix the remaining default-separator ambiguity when a continued parameter
annotation contains a lambda with its own default argument.
This is a non-feature bug fix; no Azure DevOps work item was supplied.

## Prompting Intent
Complete PR 2819 end to end without merging, inspect suppressed review
findings rather than trusting zero open threads, and prove each correction
with a failing-before public-generation regression.

## Linked Sources
- PR: microsoft#2819
- Exact-head suppressed review: microsoft#2819 (review)
- Related request: microsoft#2805
- Earlier fix and evidence: reviews/pr-2819/22-finalization-quoted-equals.json

## Rationale
Reuse the existing unfinished-lambda detector when selecting a top-level
equals separator. This one-line guard distinguishes lambda parameter
defaults from method parameter defaults without broadening the parser.
The public fixture covers both required and defaulted annotations.
The old production classes fail the new fixture; all 97 public tests pass
with the corrected source compiled into an isolated classpath overlay.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 088afa1d-aa9e-41b5-b0e6-3aaef01c8cd1
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 10, 2026
## Summary
Replace stale unqualified-recovery statements with the precise completed
Fabric scenarios and disclose measured opt-in durability overhead.
This is a documentation-only qualification update; no ADO task was supplied.

## Prompting Intent
Review and finalize microsoft#2813 with evidence of user value,
regression protection, actual runtime behavior and CI, without merging or
claiming broader support than the checks establish.

## Linked Sources
- Recovery PR: microsoft#2813
- Same-application evidence: microsoft#2813 (comment)
- Scaling evidence: microsoft#2813 (comment)
- Three-application and Python evidence: microsoft#2813 (comment)
- Prerequisite integration: microsoft#2819 (comment)
- Integrated prerequisite fixes: 4b8fa37 and 14f0793
- Feature scope: microsoft#2800

## Rationale
Keep exact-build qualification distinct from general runtime support and
controlled interruption distinct from abrupt loss. Publish the substantial
synthetic-provider durability cost rather than suggesting a speedup.
Preserve every notebook code cell, disabled execution flag and empty output.
Record the prerequisite integration review separately from pending final-head
validation; do not relabel earlier-head runs as final-head proof.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 088afa1d-aa9e-41b5-b0e6-3aaef01c8cd1
@ranadeepsingh
Rana Singh (ranadeepsingh) merged commit cfd915e into microsoft:master Nov 10, 2026
80 checks passed
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 10, 2026
Integrate reviewed session-persistence, codegen and attachment fixes; retain
task kill reasons, transport cancellation, value-codec regressions and the
32 supported notebook examples.

Freeze scope, finish running reviews, address blockers, publish and run
current-head CI instead of starting additional full review matrices.

- microsoft#2811
- microsoft#2818
- microsoft#2819
- microsoft#2820

Ensure the integrated public AIPrompt path preserves the same cancellation,
persistence and generated-wrapper contracts as the prerequisite fixes.
Keep unsupported Decisions examples commented out and existing limitations
visible. Do not expand scope to unrelated codegen or connector behavior.

Source-scoped qualification covers 511 cognitive and 189 core cases with zero
skips, six notebook cases and 33 installed Python cases. Compile, style,
codegen, packaging and exact installed artifact provenance are retained.
The latest test-only changes passed targeted regressions without altering
the qualified runtime artifacts. Existing reviews and dispositions are
retained; no additional full matrix is claimed. Fresh CI is still required.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 10, 2026
Carry the integrated compatibility fixes into optional recovery, preserve
durable schema/binding checks and maintain process-isolation coverage.

Freeze scope, finish running reviews, address blockers, publish and run
current-head CI instead of starting additional full review matrices.

- microsoft#2813
- microsoft#2811
- microsoft#2818
- microsoft#2819
- microsoft#2820

Keep recovery opt-in and separate from the core feature. Inherit reviewed
runtime fixes without losing the parent-specific task cancellation contract
or changing the documented retry/idempotency limitations.

Source-scoped qualification retains 119 attachment, 189 core and 272 Delta
cases, three explicitly recorded profile cancellations and two installed
Python cases. Current request regressions, compilation and style passed.
Managed restart evidence is retained through byte-equivalent runtime
artifacts, not falsely reported as rerun. Existing review evidence is retained;
additional matrices were superseded by user approval. Fresh CI is required.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 10, 2026
## Summary
Replace stale unqualified-recovery statements with the precise completed
Fabric scenarios and disclose measured opt-in durability overhead.
This is a documentation-only qualification update; no ADO task was supplied.

## Prompting Intent
Review and finalize microsoft#2813 with evidence of user value,
regression protection, actual runtime behavior and CI, without merging or
claiming broader support than the checks establish.

## Linked Sources
- Recovery PR: microsoft#2813
- Same-application evidence: microsoft#2813 (comment)
- Scaling evidence: microsoft#2813 (comment)
- Three-application and Python evidence: microsoft#2813 (comment)
- Prerequisite integration: microsoft#2819 (comment)
- Integrated prerequisite fixes: 4b8fa37 and 14f0793
- Feature scope: microsoft#2800

## Rationale
Keep exact-build qualification distinct from general runtime support and
controlled interruption distinct from abrupt loss. Publish the substantial
synthetic-provider durability cost rather than suggesting a speedup.
Preserve every notebook code cell, disabled execution flag and empty output.
Record the prerequisite integration review separately from pending final-head
validation; do not relabel earlier-head runs as final-head proof.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 088afa1d-aa9e-41b5-b0e6-3aaef01c8cd1
Rana Singh (ranadeepsingh) added a commit that referenced this pull request Nov 12, 2026
* feat: add unified AI prompting and native decision model support

Add AIPrompt on the existing OpenAIPrompt interface for explicit chat,
Responses, embeddings and native decision-model APIs. Preserve request
options, typed results, errors and raw responses through Scala and generated
Python, copy, persistence and pipelines. Add the AIPrompt notebook and guide.

Keep the contribution focused on AIPrompt and small native specializations.
Separate independent legacy defects and optional Delta recovery into their
own issues and PRs. Exercise supported notebook examples on packaged
artifacts, but leave OpenAIDecisions examples commented because Azure
OpenAI/Foundry does not support that API.

- Native inference proposal: #2759
- Deferred recovery: #2800
- Deferred live Decisions qualification: #2760
- Global parameter prerequisite: #2806
- Attachment cancellation prerequisite: #2807
- Response cleanup prerequisite: #2808
- Assigned-session prerequisite: #2809
- Python stub prerequisite: #2810
- Existing tutorial: docs/Explore Algorithms/OpenAI/OpenAI.ipynb

Reuse existing authentication and HTTP infrastructure rather than add a
second inference transport. Keep public behavior in Scala and generate
Python conveniences without changing legacy public JVM signatures or
serialized parameter shapes. Explicit API selection and lossless JSON avoid
silent option loss; bounded cancellation handles interrupted Spark work.
Keep ordinary inference lazy and replayable, without Delta, an automatic
tool loop, response-size configuration or an exactly-once claim.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733

* style: format AIPrompt Python regression tests

Summary
- Apply the pinned Black formatter to the AIPrompt regression suite and its
  Fabric validation helper.

Prompting Intent
- Keep the focused AIPrompt pull request limited to required feature work
  and repairs to its own validation gates.

Linked Sources
- #2811
- https://github.com/microsoft/SynapseML/actions/runs/42014432464

Rationale
- The Python style gate identified formatting in two new test files.
- The changes preserve both files' Python ASTs, and the repository's
  tracked Python files pass Black 22.3.0.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733

* fix: align AIPrompt coverage count and notebook formatting

## Summary
Account for the additional AI test lane in Codecov's expected upload count
and apply the pinned notebook formatter to the new AIPrompt tutorial.

## Prompting Intent
Repair the deterministic checks introduced by the focused AIPrompt change
without changing dependency pins, workflows, release tooling or unrelated
notebooks, and preserve the already-executed tutorial behavior.

## Linked Sources
- #2759
- #2811

## Rationale
The authorized AI matrix lane raises expected uploads from 54 to 55.
Keep the existing coverage-count assertion unchanged and fix its configuration.
Black 22.3.0 with Jupyter support changes formatting only: all 18 code-cell
ASTs, metadata and markdown remain identical, outputs stay cleared and
OpenAIDecisions remains commented. The full CI Black command and the targeted
coverage-upload selection test pass locally.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733

* fix: harden AIPrompt cancellation and compatibility boundaries

Integrate reviewed session-persistence, codegen and attachment fixes; retain
task kill reasons, transport cancellation, value-codec regressions and the
32 supported notebook examples.

Freeze scope, finish running reviews, address blockers, publish and run
current-head CI instead of starting additional full review matrices.

- #2811
- #2818
- #2819
- #2820

Ensure the integrated public AIPrompt path preserves the same cancellation,
persistence and generated-wrapper contracts as the prerequisite fixes.
Keep unsupported Decisions examples commented out and existing limitations
visible. Do not expand scope to unrelated codegen or connector behavior.

Source-scoped qualification covers 511 cognitive and 189 core cases with zero
skips, six notebook cases and 33 installed Python cases. Compile, style,
codegen, packaging and exact installed artifact provenance are retained.
The latest test-only changes passed targeted regressions without altering
the qualified runtime artifacts. Existing reviews and dispositions are
retained; no additional full matrix is claimed. Fresh CI is still required.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733

* docs: explain AIPrompt API contracts with a diagram

## Summary
Add a shared API-routing diagram to the AIPrompt getting-started notebook
and usage guide. Clarify supported parameter mappings, intentional legacy
differences, native results and provider availability without changing code.

## Prompting Intent
Explain whether AIPrompt supports all five API types and preserves the
semantics and parameters of OpenAIPrompt and the native decision stages.
Generate an understandable diagram and include it in the PR description
and the getting-started notebook.

## Linked Sources
- #2811
- #2759
- #2760
- docs/Explore Algorithms/OpenAI/Unified AI prompting.md
- cognitive/src/main/scala/com/microsoft/azure/synapse/ml/services/ai/AIRequestAdapter.scala
- cognitive/src/main/scala/com/microsoft/azure/synapse/ml/services/ai/AIPrompt.scala
- https://github.com/user-attachments/assets/bfcb52f9-b019-455b-9e23-598a44fae229

## Rationale
Use one GitHub-hosted diagram in the PR, notebook and guide, following
the tutorials' hosted-image convention. Combine a generated background
with deterministic labels and connectors for precise technical content.
Keep the existing runnable examples unchanged and explicitly distinguish
Foundry SystemOne from the unsupported Azure OpenAI/Foundry Decisions path.
Describe per-API support instead of claiming universal legacy parity.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733

* fix: route AIPrompt API versions without a version allowlist

Summary:
- Select the v1 Chat Completions and Responses route with apiVersion.
- Forward other version strings in api-version, including for Decisions.
- Default OpenAIDecisions to v1 while preserving complete URL overrides.
- Cover scalar, per-row and persisted versions and document migration.

Prompting Intent:
Let callers use v1, preview, dated and future API versions through the
existing parameter without library-maintained version restrictions.

Linked Sources:
- User request to select the v1 URI and forward all other version strings.
- #2759
- #2811

Rationale:
API version selection belongs to the provider. Reuse the existing
ServiceParam and preserve public signatures, legacy stages and URL
override behavior instead of introducing a separate routing parameter.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733

* fix: default AIPrompt chat and responses to v1

Summary:
- Default Chat Completions and Responses requests to the v1 route.
- Preserve explicit and configured version overrides and embedding defaults.
- Cover default routing through copy, save/load and clearing an override.
- Update the usage guide and notebook migration notes.

Prompting Intent:
Keep v1 as the default API version for Chat Completions and Responses,
alongside the existing OpenAIDecisions v1 default.

Linked Sources:
- User request: keep v1 as the default for Chat Completions and Responses.
- #2811
- #2759

Rationale:
Use the v1 route without requiring a redundant setter. Change only the
generative fallback so configured scalar and per-row versions, complete
URL overrides, embeddings and legacy OpenAI stages retain their behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733

* fix: support Foundry Decisions inference

Foundry exposes Decisions for supported gpt-6-luna deployments, but the
new stages rejected Azure hosts before HTTP and selected bearer-key
authentication for every Decisions endpoint.

Route Azure resource roots through /openai/v1/decisions, retain api-key
authentication for Azure keys, and preserve Entra, proxy, version and
complete-URL behavior. Replace obsolete rejection tests with routing and
authentication regressions. Add opt-in Chat and Responses live tests,
enable the notebook's Foundry Decisions examples, and correct the guide
and shared diagram.

User intent: correct Foundry support and live-test all four inference APIs.
Sources: #2759, #2760,
https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/decisions

Validation: 215 Scala cases, 33 installed-package Python cases, six
notebook tests and four real service tests passed with zero skips.
The live tests exercised Chat, Responses, Decisions and SystemOne using
six valid stage invocations on existing Sweden Central deployments.
Compilation, Scala style, Python formatting, codegen and packaging passed.
Loaded JARs and generated Python sources matched the validated build.
No new deployments or dependency changes; no full notebook rerun or
current-head remote CI pass is claimed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 12, 2026
Carry the integrated compatibility fixes into optional recovery, preserve
durable schema/binding checks and maintain process-isolation coverage.

Freeze scope, finish running reviews, address blockers, publish and run
current-head CI instead of starting additional full review matrices.

- microsoft#2813
- microsoft#2811
- microsoft#2818
- microsoft#2819
- microsoft#2820

Keep recovery opt-in and separate from the core feature. Inherit reviewed
runtime fixes without losing the parent-specific task cancellation contract
or changing the documented retry/idempotency limitations.

Source-scoped qualification retains 119 attachment, 189 core and 272 Delta
cases, three explicitly recorded profile cancellations and two installed
Python cases. Current request regressions, compilation and style passed.
Managed restart evidence is retained through byte-equivalent runtime
artifacts, not falsely reported as rerun. Existing review evidence is retained;
additional matrices were superseded by user approval. Fresh CI is required.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 12, 2026
## Summary
Replace stale unqualified-recovery statements with the precise completed
Fabric scenarios and disclose measured opt-in durability overhead.
This is a documentation-only qualification update; no ADO task was supplied.

## Prompting Intent
Review and finalize microsoft#2813 with evidence of user value,
regression protection, actual runtime behavior and CI, without merging or
claiming broader support than the checks establish.

## Linked Sources
- Recovery PR: microsoft#2813
- Same-application evidence: microsoft#2813 (comment)
- Scaling evidence: microsoft#2813 (comment)
- Three-application and Python evidence: microsoft#2813 (comment)
- Prerequisite integration: microsoft#2819 (comment)
- Integrated prerequisite fixes: 4b8fa37 and 14f0793
- Feature scope: microsoft#2800

## Rationale
Keep exact-build qualification distinct from general runtime support and
controlled interruption distinct from abrupt loss. Publish the substantial
synthetic-provider durability cost rather than suggesting a speedup.
Preserve every notebook code cell, disabled execution flag and empty output.
Record the prerequisite integration review separately from pending final-head
validation; do not relabel earlier-head runs as final-head proof.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 088afa1d-aa9e-41b5-b0e6-3aaef01c8cd1
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 13, 2026
Carry the integrated compatibility fixes into optional recovery, preserve
durable schema/binding checks and maintain process-isolation coverage.

Freeze scope, finish running reviews, address blockers, publish and run
current-head CI instead of starting additional full review matrices.

- microsoft#2813
- microsoft#2811
- microsoft#2818
- microsoft#2819
- microsoft#2820

Keep recovery opt-in and separate from the core feature. Inherit reviewed
runtime fixes without losing the parent-specific task cancellation contract
or changing the documented retry/idempotency limitations.

Source-scoped qualification retains 119 attachment, 189 core and 272 Delta
cases, three explicitly recorded profile cancellations and two installed
Python cases. Current request regressions, compilation and style passed.
Managed restart evidence is retained through byte-equivalent runtime
artifacts, not falsely reported as rerun. Existing review evidence is retained;
additional matrices were superseded by user approval. Fresh CI is required.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 13, 2026
## Summary
Replace stale unqualified-recovery statements with the precise completed
Fabric scenarios and disclose measured opt-in durability overhead.
This is a documentation-only qualification update; no ADO task was supplied.

## Prompting Intent
Review and finalize microsoft#2813 with evidence of user value,
regression protection, actual runtime behavior and CI, without merging or
claiming broader support than the checks establish.

## Linked Sources
- Recovery PR: microsoft#2813
- Same-application evidence: microsoft#2813 (comment)
- Scaling evidence: microsoft#2813 (comment)
- Three-application and Python evidence: microsoft#2813 (comment)
- Prerequisite integration: microsoft#2819 (comment)
- Integrated prerequisite fixes: 4b8fa37 and 14f0793
- Feature scope: microsoft#2800

## Rationale
Keep exact-build qualification distinct from general runtime support and
controlled interruption distinct from abrupt loss. Publish the substantial
synthetic-provider durability cost rather than suggesting a speedup.
Preserve every notebook code cell, disabled execution flag and empty output.
Record the prerequisite integration review separately from pending final-head
validation; do not relabel earlier-head runs as final-head proof.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 088afa1d-aa9e-41b5-b0e6-3aaef01c8cd1
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 13, 2026
Carry the integrated compatibility fixes into optional recovery, preserve
durable schema/binding checks and maintain process-isolation coverage.

Freeze scope, finish running reviews, address blockers, publish and run
current-head CI instead of starting additional full review matrices.

- microsoft#2813
- microsoft#2811
- microsoft#2818
- microsoft#2819
- microsoft#2820

Keep recovery opt-in and separate from the core feature. Inherit reviewed
runtime fixes without losing the parent-specific task cancellation contract
or changing the documented retry/idempotency limitations.

Source-scoped qualification retains 119 attachment, 189 core and 272 Delta
cases, three explicitly recorded profile cancellations and two installed
Python cases. Current request regressions, compilation and style passed.
Managed restart evidence is retained through byte-equivalent runtime
artifacts, not falsely reported as rerun. Existing review evidence is retained;
additional matrices were superseded by user approval. Fresh CI is required.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5ba39157-c8dd-4adb-90e0-ff963a1e6733
Rana Singh (ranadeepsingh) added a commit to ranadeepsingh/SynapseML that referenced this pull request Nov 13, 2026
## Summary
Replace stale unqualified-recovery statements with the precise completed
Fabric scenarios and disclose measured opt-in durability overhead.
This is a documentation-only qualification update; no ADO task was supplied.

## Prompting Intent
Review and finalize microsoft#2813 with evidence of user value,
regression protection, actual runtime behavior and CI, without merging or
claiming broader support than the checks establish.

## Linked Sources
- Recovery PR: microsoft#2813
- Same-application evidence: microsoft#2813 (comment)
- Scaling evidence: microsoft#2813 (comment)
- Three-application and Python evidence: microsoft#2813 (comment)
- Prerequisite integration: microsoft#2819 (comment)
- Integrated prerequisite fixes: 4b8fa37 and 14f0793
- Feature scope: microsoft#2800

## Rationale
Keep exact-build qualification distinct from general runtime support and
controlled interruption distinct from abrupt loss. Publish the substantial
synthetic-provider durability cost rather than suggesting a speedup.
Preserve every notebook code cell, disabled execution flag and empty output.
Record the prerequisite integration review separately from pending final-head
validation; do not relabel earlier-head runs as final-head proof.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 088afa1d-aa9e-41b5-b0e6-3aaef01c8cd1
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.

3 participants