Name floating-ui and mcp-app in the vendored-bundle reproducibility rule - #543
Merged
Conversation
scripts/CLAUDE.md sorts the vendored bundles into the ones whose rebuild reproduces their tracked bytes and the ones that inherit npm's ranges, but floating-ui and mcp-app are in neither, so a session reading a rebuild's diff has no answer for whether it is drift or an upstream patch. Place both, and read the names out of vendor.py's BUILDS and COPIES so the next bundle cannot land unplaced.
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.
scripts/CLAUDE.mdtells a session that a cleangit statusafterscripts/vendor.py <bundle>is the check that a bundle still matches the script, and that the check holds only where every fetched input is pinned. It then sorts the bundles into those two classes — and two of the seven are in neither, so a session rebuildingfloating-uiormcp-apphas no answer for whether a diff it sees is drift to fix or an upstream patch to take.Each belongs in a class the paragraph already describes:
floating-uireproduces.@floating-ui/dom,@floating-ui/core, and@floating-ui/utilsare all inPINS, and that closure is complete:domdepends oncoreandutils,coreonutils,utilson nothing. Rebuilding it leftgit statusclean.mcp-appfetches an inputPINSdoes not name.@modelcontextprotocol/ext-apps@1.7.5declares@standard-schema/spec ^1.1.0, which npm's resolver picks, so the bundle sits withplotandpierre. It reproduced when I rebuilt it today — which is exactly the reading the paragraph exists to keep a session from relying on.This is drift rather than a deliberate omission. The paragraph dates from
c7b37062(2026-08-30);mcp-applanded in #188 on 2026-09-01 andfloating-uiin #537 last night, and #533 — the most recent commit to touch the paragraph — addedjsdiffto it, so it is meant to be kept current.The test follows the shape this repo already uses for instruction lists (#93, #105, #331, #496): it reads the bundle names out of
vendor.py'sBUILDSandCOPIESrather than restating them, and asserts each is named in that one paragraph. Onmainit fails withunplaced in scripts/CLAUDE.md: ['floating-ui', 'mcp-app'].What it deliberately does not check is which class a bundle is placed in — deciding that means resolving each package's dependency graph, which is a network call this suite should not make. A name in the wrong class still needs a reader to catch; a name that is absent no longer does.
Verification
uv run pytest tests/test_interact_layer.py— 167 passed, 6 skipped.scripts/CLAUDE.mdreverted tomain's text:AssertionError: unplaced in scripts/CLAUDE.md: ['floating-ui', 'mcp-app'].scripts/vendor.py floating-uiandscripts/vendor.py mcp-appeach leftgit statusclean.npm view @floating-ui/dom@1.8.0 dependencies→{ '@floating-ui/core': '^1.8.0', '@floating-ui/utils': '^0.2.12' };@floating-ui/core@1.8.0→{ '@floating-ui/utils': '^0.2.12' };@floating-ui/utils@0.2.12→ none;@modelcontextprotocol/ext-apps@1.7.5→{ '@standard-schema/spec': '^1.1.0' }.