chore: Dependency doc#9792
Draft
wisniewskij wants to merge 9 commits into
Draft
Conversation
- probe(): 10s timeout so a hung tool can't block the whole run - --consistency-only: run only the cross-file checks (no host tools); with --ci, cross-file conflicts become fatal — a cheap, flake-free CI gate - --quiet: show only warnings/errors/conflicts (hide INFO rows too) - checkBundler(): derive BUNDLED WITH from apps/fabric-example/Gemfile.lock Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- .ruby-version 3.3.7 -> 3.3.6 (the outlier; Gemfile.lock + CI use 3.3.6p108)
- add an EXPECTED allow-list so the consistency checks only fire on NEW drift,
not on reviewed/intentional divergences:
- CI Java 18 (RN-compat / nightly jobs test it on purpose)
- tvos-example gradle 9.0.0 (tracks older RN 0.84.1)
- worklets spotless 8.1.0 (pending bump to 8.4.0; needs spotlessApply)
- accepted divergences are shown transparently (hidden under --quiet)
Cross-file consistency now passes: `--consistency-only --ci` exits 0.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Conflating host-tool drift (fix by installing tools) with cross-file consistency (fix by editing files / CI-enforceable) was a real source of confusion. Make the distinction explicit in the summary. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Summary
Adds
reanimated-doctor(yarn doctor) — a check that the host tools this repo depends on but does not install viayarn installmatch the versions the repo expects.Motivation. Tools like
clang-format,clang-tidy,cmake,cmake-format/cmake-lint,ruby,cocoapods, the JDK and the NDK are not version-enforced on a contributor's machine, so a local version can silently differ from CI's. The usual symptom is a "works on my machine" formatting/lint diff that fails CI for no obvious reason. This consolidates the existing scattered guards (disallow-non-exact.js,check-ruby-pods.sh,.nvmrc) into one place.Approach — derive, don't duplicate. Every required version is read at runtime from the file that already pins it, so there's no second copy to drift:
.nvmrcpackage.json#packageManagernode_modules/.bin/clang-format(theclang-format-nodepin) vs the binary onPATHapps/fabric-example/Gemfile.lock(RUBY VERSION)Podfile.lockCOCOAPODS:, probed viabundle exec pod.github/actions/android-validation/action.yml(cmakelang==)java-versioninandroid-validationcmake_minimum_required()floor inCMakeLists.txtapps/fabric-example/android/build.gradle(ndkVersion)Cross-file consistency. It also flags repo files that disagree with each other. Currently surfaces four real inconsistencies: Gradle wrapper
9.3.1vs9.0.0, Spotless8.4.0vs8.1.0, CI Java17vs18, and Ruby3.3.7(.ruby-version) vs3.3.6p108(Gemfile.lock+ CI guard).Behaviour. Advisory by default — exits
0and prints only rows that need attention.--display-allalso shows passing rows;--cimakes error-severity findings (node/yarn) exit non-zero. No new dependencies, no build step. macOS-only checks (ruby/cocoapods/xcode-build-server) are skipped on Linux. Not yet wired into git hooks or CI — intentionally advisory first.Test plan