Wire 0050 failure-isolation conformance fixtures#154
Merged
Conversation
Wire proposal 0050's failure-isolation conformance fixtures (pipeline-utilities/058-063) into the harness: a failure_isolation middleware directive, the expected_failure_isolation_event assertion with a FailureIsolatedEvent capture observer, callable/predicate/ on_caught variant conventions, and an extended raises directive. 058/059/060/062/063 pass; 061 is execution-deferred for a FailureIsolatedEvent.attempt_index discrepancy being reconciled with spec. The llm-provider/056-058 call-level-retry fixtures stay deferred: they assert the per-attempt span surface 0050 deferred (partial).
There was a problem hiding this comment.
Pull request overview
Wires Wire proposal 0050 failure-isolation conformance fixtures (pipeline-utilities/058–063) into the Python conformance harness by adding fixture directive parsing, middleware construction, and FailureIsolatedEvent assertions (with 061 still execution-deferred due to the attempt_index discrepancy).
Changes:
- Add a
failure_isolationmiddleware directive model and runtime construction path, including predicate + degraded_update callable encoding and anon_caughtside-channel overlay. - Capture and assert
FailureIsolatedEventvia newexpected_failure_isolation_event/no_failure_isolation_eventexpected-block keys. - Extend the
raisesnode directive to accept{message, exception_kind}for fixture 063 and un-defer parsing/execution for 058/059/060/062/063.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tests/conformance/test_pipeline_utilities.py | Runs pipeline-utilities 058–063, builds FailureIsolationMiddleware from fixture config, captures FailureIsolatedEvent, and asserts expected event/no-event plus on_caught overlay. |
| tests/conformance/test_fixture_parsing.py | Updates parsing deferrals: keeps llm-provider/056–058 deferred, removes pipeline-utilities/058–063 from parsing deferral notes. |
| tests/conformance/harness/expectations.py | Adds expected-block fields for failure-isolation assertions and parses 061’s expected_attempt_events. |
| tests/conformance/harness/directives.py | Adds failure_isolation middleware directive schema and expands raises to allow dict shape. |
| tests/conformance/adapter.py | Implements {message, exception_kind} support for raises nodes. |
| conformance.toml | Updates proposal 0050 notes to reflect fixture wiring status and 061’s pending attempt_index reconciliation. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
It is a pipeline-utilities-only field, so the expected-block discriminator should route on it alongside the other PU keys.
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.
Summary
Wire proposal 0050's failure-isolation conformance fixtures (
pipeline-utilities/058-063) into the conformance harness, validating the §6.3FailureIsolationMiddlewarebehavior against the spec fixtures (previously covered by unit tests only). This is the third v0.14.0 piece, after the cause-fidelity behavior fix (#153) and ahead of the spec-pin bump to v0.55.0.Test/manifest only, no
src/changes.What changed
failure_isolationmiddleware directive (adirectives.pyspec + a_build_middlewarebranch constructing the realFailureIsolationMiddleware) and theexpected_failure_isolation_eventassertion, backed by aFailureIsolatedEventcapture observer.degraded_update(a{{ state.x }}template render),matches_categorypredicate, and theon_caughtstate-side-channel (overlaid onto final_state, since the callback can't write graph state directly).raisesnode directive accepts the{message, exception_kind}shape (fixture 063).058-063from parsing and execution.Scope notes
FailureIsolatedEvent.attempt_indexin the three-piece composition is the node-level baseline (0), while fixture 061 (and §6.3's lineage-correlation prose) expect the final retry attempt (1). That reconciliation is in progress with spec; 061 un-defers once it resolves and python'sattempt_indexis corrected if needed.llm-provider/056-058) stay deferred. They assert the per-attempt LLM span surface that 0050 deferred (decision (b);partialin the manifest), so they remain queued until a futureLlmRetryAttemptEventcycle.Validation