Open
Conversation
ericsciple
commented
Feb 3, 2026
| Func<TNew> newEvaluator, | ||
| Func<TLegacy, TNew, bool> resultComparer) | ||
| { | ||
| // Capture cancellation state before evaluation |
Collaborator
Author
There was a problem hiding this comment.
This helps eliminate noise due to a cancellation race condition — i.e. cancellation fires after legacy evaluation, before new evaluation
b2ef7f3 to
53c6839
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
This pull request tightens the comparison behavior between legacy and new workflow/action parsers and addresses several sources of noisy or misleading telemetry. It adds targeted tests around parser comparison, fixes composite action step conversion, refines container image validation semantics, and makes exception comparison more tolerant of semantically equivalent JSON parse errors while handling cancellation races.
Changes:
- Add
ActionManifestParserComparisonL0tests to validateActionManifestManagerWrapperstep conversion, job container evaluation, JSON parse error equivalence, and cancellation-aware mismatch recording. - Update
WorkflowTemplateConverter.ConvertToJobContainerto only emit an error for empty container images during early validation, not during runtime evaluation, and clean up minor formatting issues. - Enhance
PipelineTemplateEvaluatorWrapper.EvaluateAndCompareto avoid recording mismatches when cancellation is requested mid-evaluation and to treat known JSON parse error patterns as equivalent, plus expose internals ofRunner.Workerto theTestassembly and implement an explicit step conversion path inActionManifestManagerWrapper.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
src/Test/L0/Worker/ActionManifestParserComparisonL0.cs |
New L0 tests covering composite step conversion, empty container handling, JSON parse error equivalence, and cancellation-aware mismatch behavior between legacy and new parsers. |
src/Sdk/WorkflowParser/Conversion/WorkflowTemplateConverter.cs |
Adjust container image validation to only log errors during early validation, maintain consistent formatting, and keep job/service container conversion behavior aligned with expectations. |
src/Runner.Worker/PipelineTemplateEvaluatorWrapper.cs |
Wrap legacy/new evaluations with cancellation-state tracking, gate mismatch recording on absence of cancellation races, and add JSON-parse-aware exception comparison helpers. |
src/Runner.Worker/InternalsVisibleTo.cs |
Allow the Test assembly to access internal members of Runner.Worker to support the new comparison tests. |
src/Runner.Worker/ActionManifestManagerWrapper.cs |
Replace composite step JSON round-tripping with explicit property mapping for RunStep/ActionStep, add helpers to reconstruct conditions and inputs, parse uses references into legacy reference types, and slightly improve comparison logging. |
Fixes telemetry noise from parser comparison mismatches between legacy and new workflow parsers. ## Fixes - **ActionManifestMismatch: Load** - Fix `ConvertToLegacySteps()` to use explicit property mapping instead of broken JSON round-trip - **EvaluateJobContainer / EvaluateJobServiceContainers** - Only emit error for empty container image during early validation, not at runtime - **TemplateEvaluatorMismatch (fromJSON)** - Treat JSON parse errors as matching even when error messages differ - **Cancellation race conditions** - Skip mismatch recording when cancellation state changes during the evaluation window
cf54f5d to
2cd3f60
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes telemetry noise from parser comparison mismatches between legacy and new workflow parsers.
Fixes
ConvertToLegacySteps()to use explicit property mapping instead of broken JSON round-trip