You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The new FreeRange job cannot execute. The shared setup installs Node/pnpm, while the fr launcher execs bun; CI fails with bun: not found before any range analysis runs. Add a pinned Bun setup (or a supported runtime/invocation) and rerun the new gate.
Do not widen internal numeric contracts to number | undefined merely to satisfy the analyzer. GesturePoint coordinates and generated ScreenshotDiffRegion rect fields are guaranteed numbers; accepting undefined and silently mapping it to the lower bound weakens TypeScript’s ability to catch an invalid future caller and invents fallback behavior outside a trust boundary. Keep these parameters typed as number and guard the potentially non-finite arithmetic result locally (for example right/bottom or overflowed coordinates). Remove the missing-coordinate test unless a real producer can supply that state.
The PR is conflict-free and all other checks are green, but ready-for-human stays off while these code/CI findings remain.
Re-review of b7bf068: the SHA-pinned Bun setup resolves the CI-launch blocker, and the FreeRange rerun now reaches the analysis step. The remaining type-contract finding is unchanged because this delta only modifies the workflow; the analyzer-driven number | undefined widening and missing-coordinate fallback/test are still present. No new regression in this commit. The PR is conflict-free, with FreeRange, Coverage, and several smoke jobs still running; ready-for-human remains off pending the code-contract correction.
Re-review of 26ba5ed is clean. The numeric contracts are precise again, finite guards now sit at computed values rather than widening internal inputs, and the artificial undefined case is removed. The SHA-pinned Bun setup works and all 25 checks pass, including FreeRange with zero findings. The PR is non-draft, conflict-free, and ready for human review. Residual limitation: FreeRange fully analyzes 584/7,975 functions (312 partial; 7,079 unsupported), so this is a useful incremental gate rather than complete numeric proof.
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
ready-for-humanValid work that needs human implementation, judgment, or maintainer merge
1 participant
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 changed
@chenglou/freerangeas a development dependency and exposepnpm check:freerange.Why
FreeRange adds static numeric-range checks alongside TypeScript, catching unsafe non-finite arithmetic and invalid numeric inputs before merge.
Developer impact
Run
pnpm check:freerangelocally. The full project check takes roughly 70–75 seconds on a local development machine.Validation
pnpm format:checkpnpm typecheckpnpm lintpnpm check:freerange(0 findings)pnpm exec vitest run src/contracts/scroll-gesture.test.tspnpm check:toolingpnpm check:fallow --base origin/mainThe broad unit suite's remaining runtime-hints failures reproduce only under parallel load; its test file passes in isolation.