Finding
Upstream ships roughly 20 commits per day (621 in the trailing 30 days, measured on upstream/main). The fork is currently 9 behind, about one day of upstream output. Unsynced for two weeks that becomes roughly 290 commits; six months, 3,600 or more, concentrated in the same high-churn compression, cache, and proxy code any local patch would touch.
Security fixes are indistinguishable from feature commits in that stream, so "it is only a mirror, it is fine" stops being true the moment sync lapses.
Separately: main has no branch protection. Today a force-push costs nothing because there are zero local commits. The moment the first local commit lands, that same force-push is unrecoverable.
Acceptance criteria
Source: RedTeam AR-1 (fork governance).
Finding
Upstream ships roughly 20 commits per day (621 in the trailing 30 days, measured on
upstream/main). The fork is currently 9 behind, about one day of upstream output. Unsynced for two weeks that becomes roughly 290 commits; six months, 3,600 or more, concentrated in the same high-churn compression, cache, and proxy code any local patch would touch.Security fixes are indistinguishable from feature commits in that stream, so "it is only a mirror, it is fine" stops being true the moment sync lapses.
Separately:
mainhas no branch protection. Today a force-push costs nothing because there are zero local commits. The moment the first local commit lands, that same force-push is unrecoverable.Acceptance criteria
git fetch upstream && git merge --ff-onlypreferred).HEAD..upstream/mainexceeds an agreed threshold.main(require PR, disallow force-push) is enabled before the first local commit, not after.HEAD..upstream/mainis 0 at the time of closing.Source: RedTeam AR-1 (fork governance).