Fix #456: cross-fork object bridge #467

Merged
crueber merged 2 commits from fix/issue-456 into main 2026-09-13 15:40:54 +00:00
Owner

Child of #449 (F1 High). Cross-fork PRs with fork-unique commits had no fork-to-base object bridge: open 503'd on the rev-list error, mergeability/merge/diff ran in the base copy without the objects.

Fix: on-demand GitRunner.FetchInto bridge (local fetch fork copy into base copy, zero bucket trips, no refs, manifest untouched); open/diff bridge-then-reprobe, mergeability/merge fetch for cross-repo heads; pull-head publish stays pre-bridge-reachable-only. Docs: 03 §7 + Decisions, 04 Decisions.

Tests: 12 new (unit + real-git e2e open/diff/commits/mergeable/merge); pulls -race green (x3), coverage 96.0% (new code 100%). Note: internal/server web-asset tests fail identically on pristine origin/main (pre-existing, stale asset table) — unrelated.

Child of #449 (F1 High). Cross-fork PRs with fork-unique commits had no fork-to-base object bridge: open 503'd on the rev-list error, mergeability/merge/diff ran in the base copy without the objects. Fix: on-demand GitRunner.FetchInto bridge (local fetch fork copy into base copy, zero bucket trips, no refs, manifest untouched); open/diff bridge-then-reprobe, mergeability/merge fetch for cross-repo heads; pull-head publish stays pre-bridge-reachable-only. Docs: 03 §7 + Decisions, 04 Decisions. Tests: 12 new (unit + real-git e2e open/diff/commits/mergeable/merge); pulls -race green (x3), coverage 96.0% (new code 100%). Note: internal/server web-asset tests fail identically on pristine origin/main (pre-existing, stale asset table) — unrelated.
OpenPR mapped the missing-object rev-list failure to 503 and
mergeability/merge/diff ran git in the base serving copy where fork-unique
objects can never appear. New GitRunner.FetchInto seam fetches the head sha
from the fork serving copy into the base serving copy on demand (local
disk-to-disk, zero bucket trips, no ref touched, base manifest untouched);
open/diff bridge-then-reprobe, mergeability/merge fetch unconditionally for
cross-repo heads. refs/pull/<num>/head still publishes only for
pre-bridge-reachable (bucket-backed) heads. Unit + real-git e2e proof.
Sign in to join this conversation.
No description provided.