chore: add recurring upstream sync review process - #9
Merged
Conversation
marcorivm
force-pushed
the
chore/upstream-sync-process
branch
from
August 6, 2026 02:09
3d24a7b to
7f4f4f0
Compare
marcorivm
force-pushed
the
chore/upstream-sync-process
branch
from
August 6, 2026 02:20
7f4f4f0 to
c10e7fb
Compare
This was referenced Aug 6, 2026
Merged
marcorivm
force-pushed
the
open-edition/reconciled
branch
from
August 8, 2026 18:30
36aebad to
caaf574
Compare
An error occurred while trying to automatically change base from
open-edition/reconciled
to
open-edition/08-web-org-policy
August 8, 2026 19:22
The fork re-lands substantial local work onto each upstream base, so "merge upstream" is never mechanical. This adds tooling and a tracked anchor so the review is repeatable instead of rediscovered each time. - docs/upstream-sync/state.json records the last upstream commit we reviewed; each cycle reviews lastReviewedCommit..upstream/main and advances it. - .agents/skills/upstream-sync/ drives the cycle: scan.sh computes the delta and MEASURES conflicts by running a merge trial in a throwaway worktree, review-workflow.js fans out reviewers per subsystem plus one per conflicted file, cleanup.sh tears the worktrees down. The primary working tree is never touched. - docs/upstream-sync/reviews/ holds the per-cycle decision log, so later cycles can see what we already decided and why — especially the skips. Includes the first review, v1.44.0 -> v1.45.0.
marcorivm
force-pushed
the
chore/upstream-sync-process
branch
from
August 8, 2026 19:34
c10e7fb to
7cf4313
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.
Why
This fork re-lands substantial local work (org RBAC, user groups, granular resource scoping, gateway condition matching, spend budgets) onto each upstream base, so "merge upstream" is never mechanical. Until now the review was rediscovered from scratch each time, with no record of what we'd already decided or skipped.
This adds a tracked anchor and the tooling to run the cycle repeatably.
What's here
docs/upstream-sync/state.json— records the last upstream commit we reviewed. Each cycle reviewslastReviewedCommit..upstream/mainand advances it. Anything decided but not yet merged lives inpendingAdoptionso the next cycle doesn't re-litigate it..agents/skills/upstream-sync/— the process, invocable as/upstream-sync:scan.shcomputes the delta and measures conflicts by running a merge trial in a throwaway worktree, rather than guessing from a diff. Emitsscan.json.review-workflow.jsfans out one reviewer per subsystem plus one per conflicted file, then synthesizes an adoption plan.cleanup.shtears the worktrees down..claude/worktrees/(gitignored). The primary working tree is never touched.docs/upstream-sync/reviews/— per-cycle decision log, so later cycles can see what we already decided and why (especially the skips).First review: v1.44.0 → v1.45.0
Included as
docs/upstream-sync/reviews/2026-08-05-v1.45.0.md. Two commits, 80 files, 18 files touched by both sides, 6 real conflicts. 17 items decided — 9 take, 7 take-with-adaptation, 1 needs-decision.This PR does not adopt any upstream code — it only records the review.
Two blockers found, both in files git merged with zero conflict markers, each verified directly against the merge tree:
connect.rs:1375bails unless a scoped token was minted oree_apps::has_request_guard(provider)is true. Both are permanently false here —try_refresh_credentialsreturnsNone(stub,ee_apps.rs:12-18) andhas_request_guardis hardcodedfalse(ee_apps.rs:36-38). Every resource-scoped GitHub/Dropbox connection would stop injecting any credential, withcargo teststill green. Total silent regression of 5fa5509.apps/web/src/lib/api/keys.tsmerged clean and broken — twoprojects:keys in one object literal, soqueryKeys.projects.detailbecomesundefined.The review also flags 5 open judgement calls, the sharpest being that upstream and this fork independently built incompatible models for "restrict a credential to specific repos" — they scope the credential, we guard the request. That's a fork-direction decision, not a merge decision.
Notes
open-edition/reconciled(notmain), since the v1.45.0 adoption is being applied on that branch and the review belongs alongside it. Rebased onto36aebad, so the diff is exactly the 8 new files.scan.shpaths tested — the delta path reproduces the review's numbers exactly (2 commits, 18 overlapping, 6 conflicts), and the up-to-date path short-circuits correctly now that state points at upstream HEAD.