Repository navigation
Conversation
Collaborator
|
Thanks for this contribution. We're closing outside-contributor pull requests that have had no activity for 14 days or more, so the queue reflects work that can still land. This isn't a judgment on the change itself. If it's still needed, please rebase onto |
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.
Why this matters
Extension lifecycle hooks and the 13 user-facing service templates are shipped release assets. Their contract suites existed, but neither
make testnor any GitHub workflow ran them. A broken hook precedence rule, invalid template YAML, duplicate template ID, or reference to a missing service could therefore merge without a release signal.The hook suite also could not serve as a gate as written: it exported an
EXTENSIONS_DIRfixture thatservice-registry.shimmediately overwrites while loading. Against currentmain, the documented command reported 2 passed / 2 failed without exercising either hook-resolution path.The preserved invariant is that
hooks.post_installwins over legacysetup_hook, legacy-only manifests still resolve, traversal is rejected, and every shipped template parses with a unique ID and references real bundled/library services.What changed
SCRIPT_DIRinput at its isolated fixture root so the real registry loader reads the fixture manifestsmake testNo production runtime behavior or shipped manifest is changed.
Overlap check
Searched open and closed PRs by
test-hooks.sh,test-templates.sh, hook/template CI, and all changed files. The historical PRs that introduced these suites are closed; no open PR wires either suite into a release gate or repairs the fixture root. #2909 validates dependency graphs and #3387 runs Python service suites; neither changes these tests or their contracts.Regression boundary
Both tests execute the repository-owned public boundaries rather than inspecting implementation text:
test-hooks.shloads fixture manifests throughlib/service-registry.shand asserts the resolved hook pathstest-templates.shparses all shipped template YAML and service manifests, then checks IDs and references across bundled and library catalogsValidation
bash tests/test-hooks.sh— reproduced 2 passed, 2 failedbash tests/test-hooks.sh— 4 passed, 0 failed, 0 skippedbash tests/test-templates.sh— 27 passed, 0 failedbash -n tests/test-hooks.sh tests/test-templates.sh— passed.github/workflows/test-linux.ymlwith PyYAML — passedgit diff --check— passedTradeoffs and rollback
The Linux gate already installs pinned PyYAML, so these checks run rather than skip there. On an ad-hoc host without Python/PyYAML, the suites retain their existing explicit skip behavior. Reverting this commit only removes the gate and restores the broken fixture input; it has no runtime state or migration impact.