build(deps): advance the shared-helpers pin to keep the graph on one commit - #16
Merged
Merged
Conversation
…commit Moves the pin from 31ef85e7 (2026-08-20) to 0c9d53a5 (2026-08-22), one commit further on and a clean descendant: 1 ahead, 0 behind. Same rule as the previous alignment, applied again rather than restated. A set of pins is coherent only if it names one commit per package across the whole graph, so the target is chosen to match what the rest of the graph resolves -- not to be current. This is the follow-on half of that earlier change: the previous commit was the one the graph agreed on then, this is the one it agrees on now. Default-branch HEAD was f85e67fd, 7 commits further, at the time of this change. Not taken, and the reason was re-derived rather than carried over from the last pass: those 7 commits touch 4 documentation files and 1 test file, and zero files under src/ or lib/, so HEAD is runtime-identical to 0c9d53a5. That selector was positive-controlled against the 31ef85e7.. 0c9d53a5 range, where it reports 31 src/ and lib/ files -- so the zero is a measurement rather than a pattern that cannot match. "Documentation-only" would have been slightly wrong, hence the file-by-file count: one of the seven is a test. Where HEAD is runtime-identical, matching the graph is the whole tiebreak, and it also carries the smaller unreviewed delta. Measured against this repository's tree, before and after, 2026-08-23: before 316 packages 10 advisories (10 moderate, 0 high) sharp 0.35.3 after 316 packages 10 advisories (10 moderate, 0 high) sharp 0.35.3 Deliberately unchanged. The sharp upgrade past the libvips fix line landed with the previous pin, so there is nothing left for this one to clear; the remaining 10 moderate advisories are unrelated to this move. A dependency bump that resolves nothing new is the expected shape here, and is reported rather than dressed up. What this pin does change is the declared contract. The upstream commit adds an allow-list to the user helper that drops caller-supplied authorization fields before a Firestore write, and its Helper class gains a sanitizeProfile member (13 members to 14). Both create and add already existed at the previous pin, and add delegates to create, so the new filter sits under both entry points. None of that is a runtime control acquired *here*. This package imports shared-helpers in type position only -- tsc elides it, and no @FabricElements specifier appears in any emitted lib/*.js -- so this package never executes the helper it now names. For this repository the change is bookkeeping: it keeps the graph on one commit and keeps a duplicate copy out of downstream trees. It should not be counted as applying a security control. One consequence worth stating so nobody mis-measures it. A consumer resolves this package's transitive pins from whichever commit of *this* package it itself pins. A consumer still pinned to an older commit here will keep resolving the shared-helpers commit that older commit declares, so copy count in a downstream tree collapses only once that consumer advances its pin of this package too. Measuring immediately after this merge and finding two copies would be the expected reading, not evidence the change did nothing. Verified: lib/ is byte-identical after a full clear-and-rebuild, so no regenerated output accompanies this change. The green typecheck is not vacuous -- asserting a number against User.InterfaceLinks.behance at the new pin still fails with TS2322, so the upstream declarations resolve rather than degrading to any across a commit that rewrote lib/user.d.ts.
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.
What
Advances the pinned
@fabricelements/shared-helperscommit from31ef85e7(2026-08-20) to0c9d53a5(2026-08-22) — one commit further, a clean descendant (1 ahead / 0 behind).Scope is
package.json+package-lock.json, 8 lockfile lines. Nothing else changed.Why this commit
Same rule as the previous alignment, applied again rather than restated: a set of pins is coherent only if it names one commit per package across the whole graph, so the target is chosen to match what the rest of the graph resolves — not to be current. This is the follow-on half of that earlier change. The previous commit was what the graph agreed on then; this is what it agrees on now.
Default-branch HEAD was
f85e67fdat 2026-08-23T00:25Z, 7 commits further. Not taken — and the reason was re-derived, not carried over from the last pass, because "only docs ahead" is an assessment that has to be re-made per commit rather than inferred from a message prefix.Those 7 commits touch 4 documentation files and 1 test file, and zero files under
src/orlib/— so HEAD is runtime-identical to0c9d53a5. That selector was positive-controlled against the31ef85e7..0c9d53a5range, where it reports 31src//lib/files, so the zero is a measurement rather than a pattern that structurally cannot match.Worth the file-by-file count: "documentation-only" would have been slightly wrong. One of the seven is
test/user.test.ts. Where HEAD is runtime-identical, matching the graph is the whole tiebreak — and it carries the smaller unreviewed delta as well.Effect on this repository's tree
Measured 2026-08-23:
sharp31ef85e7)0c9d53a5)Deliberately unchanged. The
sharpupgrade past the libvips fix line landed with the previous pin, so there is nothing left for this one to clear; the remaining 10 moderate advisories are unrelated to this move. A dependency bump that resolves nothing new is the expected shape here, and is reported rather than dressed up.What does change: the declared contract
The upstream commit adds an allow-list to the user helper that drops caller-supplied authorization fields before a Firestore write, and its
Helperclass gains asanitizeProfilemember (13 → 14). Bothcreateandaddalready existed at the previous pin, andadddelegates tocreate, so the new filter sits under both entry points.Verified in the artifact rather than inferred from the message —
creatableProfileFieldsin the emittedlib/user.js: 0 occurrences at31ef85e7→ 6 at0c9d53a5. A measured transition, since the emitted output is what actually executes.This is bookkeeping, not a security control acquired here
Stating it plainly so it isn't miscounted: this package never executes the helper it now names. The
shared-helpersimport is type-position-only,tscelides it, and no@fabricelementsspecifier appears in any emittedlib/*.js.For this repository the change keeps the graph on one commit and keeps a duplicate copy out of downstream trees. That is real, and it is separate from applying a runtime control.
Don't mis-measure the dedupe
A consumer resolves this package's transitive pins from whichever commit of this package it itself pins. A consumer still pinned to an older commit here will keep resolving the
shared-helperscommit that older commit declares — so copy count in a downstream tree collapses only once that consumer advances its pin of this package too.Measuring immediately after this merge and finding two copies is the expected reading, not evidence the change did nothing.
Gate exit codes (2026-08-23T00:27Z)
npm cinpm run buildgit status --porcelain -uall -- lib/npm testnpm run typechecknpm run lintlib/is byte-identical after a full clear-and-rebuild — verified, not assumed — so no regenerated output accompanies this change.The green typecheck is not vacuous: asserting a
numberagainstUser.InterfaceLinks.behanceat the new pin still fails withTS2322, so upstream declarations resolve rather than degrading toanyacross a commit that rewrotelib/user.d.ts(+107 lines).Found, deliberately not fixed
git+ssh://resolution in the lockfile — still requires a key on every consumer and CI runner. Pre-existing, unchanged here; it wants its own change, since switching the resolution protocol is a lockfile-wide edit rather than something to smuggle into a sha bump.@opentelemetry/core<2.8.0,uuid<11.1.1 and dependents). Nothing overridden, pinned around, or silenced to quiet the audit.No
overrides, noany, no@ts-ignore, no assertions added anywhere.