Repository navigation
Conversation
6 tasks
3 tasks
pimlock
marked this pull request as ready for review
November 8, 2026 23:48
This was referenced Nov 8, 2026
pimlock
force-pushed
the
feat/5-core-sync/pimlock
branch
from
November 9, 2026 00:15
1b83e75 to
56bc43f
Compare
pimlock
force-pushed
the
feat/5-core-sync/pimlock
branch
3 times, most recently
from
November 9, 2026 15:51
a801a6e to
3d00186
Compare
Ports sdk-go's core sync automation into scripts/core-sync/: - core-watch.yml (hourly) runs core-tags.sh and opens one bump PR per new core tag with open-bump-pr.sh: it moves OPENSHELL_CORE_REF, regenerates the bindings with `mise run proto:gen`, refreshes the files copied from core, and puts the proto diff in the body. Every stable tag gets a PR, plus the newest pre-release; a newer pre-release closes the older proposal. - core-drift.yml (nightly) runs drift-check.sh: buf breaking between the pin and core main for the protos the SDK generates, the unit tests against bindings regenerated from main, and the RPCs the SDK doesn't call. update-drift-issue.sh keeps one "Core main drift" issue current. - report-failure.sh records failed runs in that issue. Both workflows use the sdk-bot App token, so bump PRs get CI, including E2E against the proposed core version. The files copied from core are listed once, in scripts/vendored-core-files.txt, which conformance:check and the bump script both read. scripts/README.md describes every script by directory, and the README and CONTRIBUTING.md cover core bumps. Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
pimlock
force-pushed
the
feat/5-core-sync/pimlock
branch
from
November 9, 2026 16:00
3d00186 to
05d58b3
Compare
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
Ports sdk-go's core sync automation. An hourly workflow opens a bump PR for each new core release tag. A nightly workflow compares core
mainwith the pin and keeps oneCore main driftissue current. Both scripts run locally with--dry-run.Stacked on #12, which provides the E2E lane that bump PRs run.
Related Issue
Closes #5. Part of NVIDIA/OpenShell#5287.
Changes
core-watch.yml(hourly, or by hand with a tag) runsscripts/core-sync/core-tags.sh, thenscripts/core-sync/open-bump-pr.shfor each tag. Each bump PR,chore(core): track <tag>on branchcore/<tag>:OPENSHELL_CORE_REF, regenerates the bindings withmise run proto:gen, and refreshes the files copied from core;core-bumpplusstableorprerelease.Every new stable tag gets a PR, plus the newest pre-release. A newer pre-release proposal closes the older one. A proposal is never reopened once closed.
core-drift.yml(nightly) runsscripts/core-sync/drift-check.sh, thenupdate-drift-issue.sh, which creates, updates or closes theCore main driftissue. It checks three things:buf breakingbetween the pin and coremain, for the protos the SDK generates;main;report-failure.shadds a dated line to that issue when either workflow fails.scripts/vendored-core-files.txtlists the files copied from core: the OAuth fixture, its license sidecar and the E2E Dockerfile.conformance:checkand the bump script both read it, so adding a copied file is a one-line change.mise tasks:
core:tags,core:bump,core:drift.Docs:
scripts/README.mdhas the script and workflow tables. The README andCONTRIBUTING.mdeach have a short section on keeping up with core.Differences from sdk-go:
mise.toml, notbuf.gen.yaml.go buildandgo vet, and finds uncovered RPCs in the_pb2_grpc.pystubs.scripts/core-sync/, next toscripts/e2e/from test(e2e): run the SDK E2E suite against the pinned core gateway #12, instead ofhack/automation/(ci: shared CI checks across the SDK repositories #11 tracks one layout for all SDK repositories).Bump PRs run E2E against their own pin, because
e2e.ymlreadsOPENSHELL_CORE_REFfrom the PR branch.Needs before it runs on
main:sdk-botenvironment (ci: GitHub App and sdk-bot environment for the automation #7).core-bump,stable,prereleaseandcore-drift, copied from sdk-go: these already exist.Testing
mise run core:tagsprintsv0.1.8-pre.3; with--all, it printspre.1topre.3.mise run core:bump -- v0.1.8-pre.3 --dry-run --base HEADbuilds the bump commit (pin, 2 binding files, no copied-file changes) and prints the PR body with the proto diff. It removes its local branch and worktree afterwards.mise run core:driftagainst coremain(af02016) passes: no breaking changes, and the unit tests pass on regenerated bindings. It lists 73 uncovered RPCs.update-drift-issue.sh --dry-runcreates no issue for a passing report and would create one for a failing report.report-failure.sh --dry-runwould create the issue with the failure line.conformance:checkpasses, and fails when the vendored Dockerfile is edited.mise run check, shellcheck, actionlint and zizmor pass.core-watchrun opens a bump PR, and a realcore-driftrun updates the drift issue. Both need ci: GitHub App and sdk-bot environment for the automation #7.