Repository navigation
feat(packs): verified @sentry/browser, @sentry/react stays candidate, from public 10 → 11 ground truth (UPT-64) - #192
Merged
lucasbraum merged 6 commits intoOct 17, 2026
Conversation
TypeScript 7.0.2 has no `main` (exports only), so requiring its directory throws before packs:truth can see it has no JavaScript API and fall back to this checkout's compiler, as docs/packs.md says it does. Treat a compiler that does not load the same way. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
…y/browser (UPT-64) Twelve @sentry/react and three @sentry/browser repositories that made the upgrade in a merged pull request, drafted with packs:truth and reviewed by hand before the packs were scored with them. Existing entries unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
…ays candidate (UPT-64) pack test --write on the ground truth of the previous commit, unchanged since. @sentry/browser: 5 repos, 22 real breaking sites, breaking precision 100%, recall 50%, gate passes: verified. @sentry/react: 14 repos, 29 breaking sites, precision 88%, recall 72%, 3 false positives among breaking findings: candidate, record updated to the new truth digest. README table regenerated; RESEARCH.md records the selection, the review conventions, the misses and the local install notes (pnpm 12 under corepack 0.34, Git LFS). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
The Pack test summary was every pack's full report, every false negative
listed: 1.8 MB with all packs, over the 1 MiB GitHub accepts. The log keeps
the full report; the summary (`--summary <file>`) keeps every score table
and the first 20 sites of each list ("… and M more, see the job log"),
and is cut at a line under 960 KiB if even that is too long. On the 17 pack
reports of run 39005068185: 1.88 MB of log, 71 KB of summary.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
…equired pack test fails any pack with a false positive among its breaking findings, candidate or not (pack-test.ts `passed`); no other candidate had one, so none needed an exception. sentry-react has 3 by design of its ground truth (UPT-64), with a current record (stale: false). Its job still runs and its summary shows FAIL, but it passes the required Pack test when that is its only failure: listed in FP_CANDIDATES, recorded and measured candidate, nothing unscored or left behind. The ground truth and the gate are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
…sing on UPT-65 pack test --write on the rebased branch, ground truth unchanged: both records gain the per-rule `mechanical` counts #198 added (browser enable-logs 2/0; react enable-logs 4/0, integration-names 0/1, which the UPT-65 warning flags below 80%). Statuses, tallies and truth digests are the same as before the rebase. docs/compatibility.md regenerated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
lucasbraum
force-pushed
the
lucasbraum/upt-64-sentry-browserreact-find-ground-truth-to-re-promote-to
branch
from
October 17, 2026 06:23
4d105da to
158808c
Compare
lucasbraum
deleted the
lucasbraum/upt-64-sentry-browserreact-find-ground-truth-to-re-promote-to
branch
October 17, 2026 16:49
Merged
1 task done
lucasbraum
added a commit
that referenced
this pull request
Oct 17, 2026
… set (UPT-88) (#199) ## What and why UPT-88, one of the three `@sentry/react` breaking false positives from #192. `before-send-transaction` and `ignore-transactions` reported every `Sentry.init` that sets them. Both only stop working under span streaming; `traceLifecycle` keeps transactions, so an init that sets it is not a site (BotFleet `server/sentry-scrub-real-sdk.test.ts:30`). `initOptionSites` takes an `unless` list for this. Test added; the `span-streaming` note already used the same guard. ## Not in this PR - **Hyrox-Companion** (`@sentry/node` `sendDefaultPii`): reproduced locally. The plan moves `@sentry/node` with `@sentry/react` through the declared release group, same workspace, which is also what 3 other truth repos did. Nothing in the repository tells Hyrox apart, so a principled engine rule would cost true positives. Needs a decision. - **ultra-rss-reader** `"InboundFilters"`: untouched, no rule change justified on its own. - `FP_CANDIDATES` stays in `packs.yml` and `@sentry/react` stays a candidate; the gate does not pass with Hyrox open. ## Verified Sentry unit tests, fixtures for browser/react/nextjs, biome. BotFleet and ultra-rss-reader do not install locally (LFS, pnpm 12), so CI is the check for the BotFleet site. - [x] Changeset added 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Lucas Braum <lucasbraum@gmail.com> Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
lucasbraum
pushed a commit
that referenced
this pull request
Oct 17, 2026
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing). If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## uptide@0.14.3 ### Patch Changes - [#191](#191) [`db1d384`](db1d384) Thanks [@lucasbraum](https://github.com/lucasbraum)! - The ai pack now reports AI SDK 7 renames in tests that `vi.mock('ai')` or `jest.mock('ai')` without importing it: the mock factory's `stepCountIs` key, and `onFinish` and the other renamed options read by fakes of `ai` calls such as `toUIMessageStreamResponse`. - [#196](#196) [`fa6f788`](fa6f788) Thanks [@lucasbraum](https://github.com/lucasbraum)! - `fix` no longer runs out of memory type-checking monorepos whose root tsconfig includes every package: each workspace's program holds only the files that workspace owns, and the baseline check releases one workspace's program before building the next. When the analysis thread does run out of memory, `fix` says the repository is too large for analysis instead of crashing, and its temporary clone is removed on every exit path, a crashed or out-of-memory analysis thread included. - [#190](#190) [`cdf7f69`](cdf7f69) Thanks [@lucasbraum](https://github.com/lucasbraum)! - `check <pkg>` no longer returns nothing for an outdated dependency used only through config files (typescript through tsconfig): it is always reported, with the reason, including when its workspace's analysis fails or the time budget runs out. Analysis no longer fails with ENAMETOOLONG on a package that links itself (Yarn `link:.`). - [#186](#186) [`5e01ef3`](5e01ef3) Thanks [@lucasbraum](https://github.com/lucasbraum)! - Keep the migration's starting branch and commit in reports and diff hints, including after re-verification. Default hints to `npx uptide`, use `uptide` only when the command on PATH resolves to the running binary, keep shared reports portable, and preserve explicit flags accepted by suggested commands, including peer retry budgets and workspace-root retries. - [#197](#197) [`b51ca9b`](b51ca9b) Thanks [@lucasbraum](https://github.com/lucasbraum)! - Suggested commands no longer print `uptide` when the launcher found is a project-local `node_modules/.bin` entry (as under `pnpm run`/`pnpm exec` or npm scripts); only a real global install does, otherwise `npx uptide`. - [#187](#187) [`6fe81b4`](6fe81b4) Thanks [@lucasbraum](https://github.com/lucasbraum)! - Prevent `fix` from failing with `spawnSync git ENOBUFS` when Git output exceeds 1 MiB in large repositories. Raise the buffered output limit to 256 MiB for shared Git operations and source-version status checks. - [#185](#185) [`98a3119`](98a3119) Thanks [@lucasbraum](https://github.com/lucasbraum)! - Detect removed Zod error members on local results of schemas imported through repository modules, including awaited safeParseAsync calls, so their `.errors` reads can migrate to `.issues`. - [#193](#193) [`a68fea3`](a68fea3) Thanks [@lucasbraum](https://github.com/lucasbraum)! - `fix` no longer refuses on lockfile changes the upgrade didn't cause. When the install guard finds resolutions outside the upgrade's subtree, it runs the same install at the parent commit and judges the upgrade against that lockfile. Churn the parent install already produces is listed as "Lockfile churn the parent commit already has" and never blocks; changes only the upgrade makes are still refused, or listed for review in agent-led runs. - [#180](#180) [`549edc3`](549edc3) Thanks [@lucasbraum](https://github.com/lucasbraum)! - Update conflicting root pins automatically when preparing draft PRs, including App/Action runs, and list the changes at the top of the PR under "Root pins changed: review". Add `updatePins: false` in `uptide.yml` to opt out. Local runs still require explicit `--update-pins` consent. - [#188](#188) [`69b1c88`](69b1c88) Thanks [@lucasbraum](https://github.com/lucasbraum)! - Continue `fix` as an agent-led draft instead of exiting 2 when a preflight refusal has an assisting agent: peer blockers that need a major run as the plan's suggested command, root pins without consent are updated (an explicit `updatePins: false` still refuses), companions that cannot move together leave the lead alone, and the install check reports out-of-scope resolutions for review. The reason heads the PR body and the terminal summary, next to feedback rounds and spend. Without an agent, with `--no-llm`, or on a downgrade, `fix` still refuses. - [#188](#188) [`69b1c88`](69b1c88) Thanks [@lucasbraum](https://github.com/lucasbraum)! - `fix` makes the no-pack stop (no agent, or a major for a PR) before cloning or installing. When the check returns nothing to analyze for an outdated package, `fix` now says so instead of "has no upgrade", and an agent continues as a draft. Lockfile resolutions an agent-led install changed outside the upgrade are listed for review in the PR body and the terminal summary. Downgrades, key-like settings in `uptide.config.json`, credentials in `OPENAI_BASE_URL` and unsafe run reports throw `SafetyRefusal`, which no fallback continues past. - [#194](#194) [`7dd3259`](7dd3259) Thanks [@lucasbraum](https://github.com/lucasbraum)! - Stop `fix` in preflight on npm when a package that moves, or a peer npm installs for it, rejects a package that stays installed: vitest 5 peers on vite, and vite 8 rejects the repository's esbuild 0.25. Before, npm refused the install after the clone. The row names the chain, and `--allow-peer` writes the override. - [`4c3dc23`](4c3dc23) Thanks [@lucasbraum](https://github.com/lucasbraum)! - `uptide pack test` now prints the precision of every rule with a rewrite, breaking or not, and warns when one is below 80%. It is a warning only: no pack's status and no rule's run mode changes. The compatibility matrix lists each rewrite's precision. - [#179](#179) [`9112f2b`](9112f2b) Thanks [@lucasbraum](https://github.com/lucasbraum)! - Add `fix --update-pins` to explicitly approve updates to conflicting root Yarn resolutions and npm/pnpm overrides for the target and its companions. Preserve unrelated pins, update root declarations and pnpm catalogs together, report pin changes, and reject ambiguous selectors before installation. - [#192](#192) [`3f81193`](3f81193) Thanks [@lucasbraum](https://github.com/lucasbraum)! - The `@sentry/browser` 10 to 11 pack is verified again: 5 public upgrades, 22 real breaking sites, breaking precision 100% and recall 50%. `@sentry/react` stays a candidate: its ground truth grew to 14 public upgrades and 29 breaking sites, with 3 false positives among its breaking findings. - [#202](#202) [`51a6f70`](51a6f70) Thanks [@lucasbraum](https://github.com/lucasbraum)! - The Sentry packs now read JavaScript files that only require another Sentry package (`@sentry/core`, a sibling SDK of the same release), which the TypeScript compile scope skipped. `@sentry/browser` breaking recall on public ground truth goes from 50% to 82% with no false positives. - [#199](#199) [`08da2a7`](08da2a7) Thanks [@lucasbraum](https://github.com/lucasbraum)! - The Sentry 10 to 11 pack no longer reports `beforeSendTransaction` or `ignoreTransactions` in a `Sentry.init` that sets `traceLifecycle`: the option keeps transactions, so they still work. - [#189](#189) [`5d1d350`](5d1d350) Thanks [@lucasbraum](https://github.com/lucasbraum)! - Avoid shared registry-cache write races during parallel checks, publish complete package extractions atomically, and print package failure reasons on stderr when check exits 2. - [#195](#195) [`15b3b3e`](15b3b3e) Thanks [@lucasbraum](https://github.com/lucasbraum)! - The vitest pack now reads `vite.config.*` and `vitest.config.*` files and jest-dom setup files that never import `vitest` (a config that takes `defineConfig` from a shared file, a setup file that only does `import '@testing-library/jest-dom/vitest'`), so it reports their bare-directory coverage patterns and jest-dom registrations. Co-authored-by: uptide-release[bot] <338861287+uptide-release[bot]@users.noreply.github.com>
Merged
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.
Pack
@sentry/browserand@sentry/react, 10.x → 11.x. Fixes UPT-64: UPT-48 (#155) demoted both because they had too few breaking sites (3 and 2; the gate needs 5).Before → after (
pnpm uptide pack test <lead>):@sentry/browser@sentry/reactRules, notes and fixtures are unchanged. Ground truth was committed (87cb970) before the first score with it, and nothing in it changed afterward. Only the 15 new entries were added; the existing ones are untouched.
Ground-truth repositories
These are all of the merged public 10 → 11 upgrades the search found where three things hold: a lead moves next to its own lockfile, the diff removes an API that v11 removed or changed, and the upgrade isn't bump-only. I added every one that qualified, not a hand-picked subset. Each was drafted with
pnpm packs:truthand reviewed by hand under docs/packs.md as it stands now, including the UPT-53 anchors. Sites per repository, the review conventions and the screened-out repos are inpackages/core/src/packs/sentry/RESEARCH.md.The issue's list (cal.com, midday, rallly, inbox-zero, unkey, twenty, outline) has none that qualifies. Four of them use
@sentry/nextjs, twenty and outline are still on@sentry/react10, and unkey declares neither lead.The 3 react false positives (truth unchanged; flagged for your call):
server/bootstrap/observability.ts:114: an@sentry/nodesendDefaultPii.checkmoves@sentry/nodewith the release group, but this repo kept it at 10.75.2.src/lib/runtime/monitoring.ts:25:"InboundFilters"in an integration allowlist. v11 renamed that integration and this upgrade left the entry in place, so it may be a real miss in their upgrade; it still scores as an FP.server/sentry-scrub-real-sdk.test.ts:30:beforeSendTransaction. The repo kept it working by addingtraceLifecycle: "static"to the same call.Also in this PR
scripts/packs-truth-compiler.ts:packs:truthcrashed on repos with TypeScript 7.0.2, which has nomainfield, before its documented fallback to this checkout's compiler could run. Six of the new repos are on TS 7. This affects drafting only, not scoring.MODULE_NOT_FOUNDcomes from local corepack 0.34, which can't start pnpm 12 (pnpm 12 shipsbin/pnpm.mjsplus a native binary, notbin/pnpm.cjs). It isn't the engine, which matches CI passing. These local runs used apnpmshim for repos pinningpnpm@12. BotFleet also needsgit-lfs, which CI runners have; it's noted in RESEARCH.md.CI follow-ups (7a6288e, 4d105da)
packages/cli/src/pack.test.tscovers the cap. On this PR's 17 pack reports: 1.88 MB of log, 71 KB of summary.pack sentry-reactexits 1 by design.pack testfails any pack with a breaking FP, candidate or not. The record is current (stale: falsein CI and locally), so nothing needed regenerating. The other candidates aren't excluded anywhere; they pass only because they have no breaking FPs. So I added an explicit, narrow exception:FP_CANDIDATES: sentry-reactinpacks.yml. Its job still runs and its summary still says FAIL, but it doesn't fail the requiredPack testwhen breaking FPs on a candidate are its only failure. An overclaimed record, an unscored repo or a left-behind companion still fails it. Ground truth and the gate are unchanged.uptide pack testoutputChecklist
pnpm uptide pack testwas run and its output is pasted above;verification.jsonwas written with--writepnpm lint && pnpm typecheck && pnpm testpass locallypublic:checkis clean)🤖 Generated with Claude Code