Skip to content

Review: full fork delta vs upstream (do not merge) - #8

Closed
ilidemi wants to merge 16 commits into
masterfrom
peerdb
Closed

ilidemi wants to merge 16 commits into
masterfrom
peerdb

Conversation

@ilidemi

@ilidemi ilidemi commented Sep 2, 2026

Copy link
Copy Markdown

Review venue for the fork's delta against upstream v0.55.0 (master mirrors the unpatched upstream base, so the diff below is everything this fork changes). The content is already live on peerdb and released as v0.55.16, validated by green sync runs.

  • ssh/channel.go — the one behavioral change: 8 MiB channel receive window (upstream hardcodes 2 MiB; throughput caps at window ÷ RTT).
  • README.md — replaces upstream's: branch/tag layout, sync mechanics, maintenance runbook.
  • .github/workflows/sync-upstream.yml — daily upstream sync: computes the target tag (upstream base + number of extra commits in the fork), rebases, validates (root ssh tests only — ssh/test/ssh/agent replay transcripts that embed the 2 MiB window), pushes branch/tag/master, opens a sync-failure issue per failing run.

Kept as a draft and never merged — master stays the unpatched upstream mirror. Address findings with follow-up PRs to peerdb; close this when review is done.

Consumed by PeerDB via PeerDB-io/peerdb#4764.

🤖 Generated with Claude Code

Upstream hardcodes a 2 MiB channel window (64 * 32 KiB packets, following
OpenSSH) with no configuration hook. PeerDB tunnels bulk CDC traffic over
SSH; on high-bandwidth, high-latency links the 2 MiB window caps throughput
well below link capacity. 8 MiB covers the bandwidth-delay product of the
links we see in practice.

This is the only behavioral change this fork carries.
Documents how the fork works and automates tracking upstream releases:
a daily workflow cherry-picks the fork-local commits onto new upstream
release tags, validates with PeerDB's Go version, pushes a matching fork
tag, and opens/bumps a sync-failure issue when something needs a human.
The peerdb branch itself is PR-managed and never rewritten by automation.
Ref/tag semantics as a table, sync flow as a numbered list, direct scope
statement.
The sync workflow now updates the peerdb branch on each upstream release
(rebase + force-push) in addition to cutting the tag, so the default branch
tracks the latest upstream base.
master...peerdb is then always the full fork delta. The sync workflow
fast-forwards master alongside each release.
Fork tags reuse upstream tag names with different content, so fetching an
upstream tag by name is rejected as a clobber once the fork has released.
Fetch the new upstream tag into FETCH_HEAD, derive the rebase base via
merge-base, and pass the upstream commit to the push step so master gets
the unpatched base.
Public-repo cron workflows are disabled after 60 days without repository
activity, and this repo is only active when upstream releases. Re-enabling
the (already enabled) workflow via the API resets the timer. Inline gh
call with the built-in token; no third-party action.
Each failing run opens its own issue; a green run closes every open
sync-failure issue. Alerting subscribes to issue open/close events, so
each failure and each recovery notifies exactly once.
Upstream only tags vX.Y.0 and the fork always carries at least one
commit, so every cut gets a fresh tag name and published tags are never
recreated. Fixup releases between upstream tags get their number from
the same rule.
The target tag is the upstream base's major.minor plus the number of
extra commits in the fork. Any run — cron or dispatch — releases when
that tag doesn't exist yet, covering new upstream releases and freshly
merged fork PRs with one code path. Hand-cut fixup tags retire; the bump
rides the normal weekly gomod group PR in peerdb.
create-github-app-token v3 deprecated the app-id input.
@ilidemi

ilidemi commented Sep 2, 2026

Copy link
Copy Markdown
Author

Wrong review shape — replaced by a proper re-land PR.

@ilidemi ilidemi closed this Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant