Wire 0087 within-node directive execution order#225
Merged
Conversation
Ratify the conformance-adapter within-node directive execution-order rule: a node's sibling directives execute in fixture-document order. Python was already conformant. The fixture loader uses yaml.safe_load, which preserves mapping insertion order, and the metadata driver runs a node's directives in key order, so fixtures 043/045 already passed. Un-defer the dedicated pin fixture observability/135 onto the existing get_invocation_metadata driver, flip conformance.toml 0087 to implemented (since 0.17.0), and add a loader guard-comment pinning the safe_load order-preservation dependence. No src change.
There was a problem hiding this comment.
Pull request overview
Wires conformance proposal 0087 (“within-node directive execution order”) into the Python conformance suite by enabling the dedicated observability fixture and marking the proposal implemented, without changing src/ runtime behavior.
Changes:
- Un-defer and run
observability/135-within-node-directive-execution-ordervia the existingget_invocation_metadatafixture driver. - Add a loader comment documenting the dependency on YAML mapping insertion-order preservation for directive execution order.
- Mark proposal
0087asimplemented(since0.17.0) inconformance.toml, with an explanatory note.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| tests/conformance/test_observability.py | Adds fixture 135 to the supported inventory and routes it to the get-invocation-metadata driver; removes its prior deferral. |
| tests/conformance/harness/loader.py | Adds an explicit comment warning against switching to an order-losing YAML loader, since directive execution order is fixture-order sensitive. |
| conformance.toml | Marks proposal 0087 as implemented (since 0.17.0) and documents the rationale and related fixture wiring. |
chris-colinsky
added a commit
that referenced
this pull request
Jul 21, 2026
* Clarify 0087 directive-order harness comments Address CoPilot review on #225 (both threads resolved there but the edits landed after the squash-merge). - test_observability.py: reword the 135 support-comment from "key order" to "document (dict insertion) order", matching the loader guard-comment and removing the sorted-by-key ambiguity. - test_fixture_parsing.py: correct the 135 parse-deferral reason. It read "not implemented", but 0087 is implemented -- only the parse shape is deferred, because 135 reuses the augment/capture directive shapes the cross-cap parser does not model (as siblings 043-046), runtime-driven in test_observability. Comment-only; no behavior change. * Align directive-order wording in the pointer target Address CoPilot review on #226: the _SUPPORTED_FIXTURES comment points readers at _apply_metadata_directives for the document-order behavior, but that function's own comment still said "IN KEY ORDER" / "YAML key order" -- the sorted-by-key ambiguity this branch removes at the call site. Reword it to "document order" so both spots agree. Comment-only; no behavior change.
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.
First Phase A PR of the v0.17.0 cycle.
Proposal 0087 ratifies a conformance-adapter rule: when a node carries
more than one directive, an adapter must execute them in fixture-document
order (mapping insertion order, not sorted-by-key). Fixtures 043/045
already depended on this incidentally (augment-then-capture sees the
write; capture-then-augment does not); 0087 adds a dedicated fixture
(observability/135) that pins the divergence directly.
Python was already conformant, so this is conformance-wiring only:
yaml.safe_load, which preserves mappinginsertion order in Python.
_apply_metadata_directives) iteratesa node's directives in key order.
Together those already satisfy the rule, which is why 043/045 passed.
Changes:
135-within-node-directive-execution-order, wiring it ontothe existing
get_invocation_metadatadriver.conformance.toml0087 to implemented (since 0.17.0).safe_loadorder-preservationdependence, so an order-losing loader can't regress it silently.
No
src/behavior change. Full suite: 1691 passed, 470 skipped.