feat(ci): monitor vendored tree-sitter grammars for upstream updates#2117
Closed
magyargergo wants to merge 1 commit into
Closed
feat(ci): monitor vendored tree-sitter grammars for upstream updates#2117magyargergo wants to merge 1 commit into
magyargergo wants to merge 1 commit into
Conversation
The npm-dependency grammars (tree-sitter-c, -python, ...) are tracked by Dependabot. The VENDORED grammars (gitnexus/vendor/tree-sitter-*) are off the dependency graph, so nothing tells us when their upstream ships a new release — the update-tracking blind spot inherent to vendoring. This gives them the same daily "you're behind upstream" visibility. - .github/scripts/check-vendored-grammar-updates.py: per-grammar drift check — npm-version compare for swift/kotlin (on npm), GitHub default-branch commit/parser.c compare for dart/proto (GitHub-only). Stdlib-only; exit 1 on drift. Verified against live upstreams: swift current (0.7.1), dart + proto behind (real upstream movement). - .github/workflows/vendored-grammar-updates.yml: daily (+ dispatch + PR self-test); opens/updates a tracking issue on drift, closes it when current. Mirrors tree-sitter-upgrade-readiness.yml (issue upsert, pinned SHAs, least-privilege, persist-credentials:false). Companion to the tree-sitter 0.25 runtime upgrade readiness tracker (a different concern: runtime ABI, not version drift). Kotlin is in the config and activates automatically once it is vendored (abhigyanpatwari#2113). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
@magyargergo is attempting to deploy a commit to the NexusCore Team on Vercel. A member of the Team first needs to authorize it. |
| results.append(check_npm(name, cfg) if cfg["source"] == "npm" else check_github(name, cfg)) | ||
|
|
||
| behind = [r for r in results if r["state"] == "behind"] | ||
| unknown = [r for r in results if r["state"] in ("unknown", "unconfigured")] |
|
|
||
| behind = [r for r in results if r["state"] == "behind"] | ||
| unknown = [r for r in results if r["state"] in ("unknown", "unconfigured")] | ||
| current = [r for r in results if r["state"] == "current"] |
Collaborator
Author
|
Closing — opened in error. The native-binding hardening (periodic rebuilds of the prebuilds) is being handled in #2113; this standalone drift-monitor was a misread of that work and shouldn't be a separate PR. Deleting the branch. |
Contributor
CI Report❌ Some checks failed Pipeline Status
Test Results
❌ 1 failed / 10498 passed 16 test(s) skipped — expand for details
Code CoverageTests
📋 View full run · Generated by CI |
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 & why
Closes the update-tracking blind spot from vendoring tree-sitter grammars. The npm-dependency grammars (
tree-sitter-c,-python,-rust, …) are tracked by Dependabot — a new upstream release shows up as a PR. The vendored grammars (gitnexus/vendor/tree-sitter-*) are off the dependency graph, so nothing tells us when their upstream moves. This gives them the same daily "you're behind upstream" visibility.How
.github/scripts/check-vendored-grammar-updates.py— per-grammar drift, by upstream source:swift,kotlin): vendoredversionvs npm registry latest.dart,proto): vendored snapshot vs upstream default branch — recorded commit (from_vendoredBy) when present, else byte-comparesrc/parser.c..github/workflows/vendored-grammar-updates.yml— daily (+workflow_dispatch+ PR self-test). Opens/updates a tracking issue on drift, closes it when current. Mirrorstree-sitter-upgrade-readiness.yml(issue upsert, pinned action SHAs, least-privilegepermissions,persist-credentials: false).Verified against live upstreams
(So on day one it'll flag that
dartandprotohave genuinely drifted from upstream — a real signal that was previously invisible.)Scope notes
file:pin (our grammars are materialized now), which is a separate cleanup.kotlinis already in the config and activates automatically once it's vendored (feat(install): toolchain-free tree-sitter via vendored prebuilds #2113).vendor/+ re-run the prebuild workflow), which the issue prompts.🤖 Generated with Claude Code