Skip to content

feat(ci): accept fork branch pins in staging extras - #16

Merged
btli merged 3 commits into
mainfrom
ci/extras-branch-pins
Aug 14, 2026
Merged

feat(ci): accept fork branch pins in staging extras#16
btli merged 3 commits into
mainfrom
ci/extras-branch-pins

Conversation

@btli

@btli btli commented Aug 13, 2026

Copy link
Copy Markdown
Owner

Related issue

N/A — fork personal-staging composer; no upstream issue.

Summary

The personal-staging extras manifest only accepted upstream PR numbers, so fork-only work could not land in staging without an upstream PR. extras.txt now also accepts branch:<name> pins resolved on --fork-remote, preserving the existing fail-loud deleted-vs-unreachable behavior.

  • Numeric extras retain their existing upstream refs/pull/N/head behavior.
  • Fork branch names are validated against Git ref rules, reject option-like names, and cannot self-reference main or staging.
  • Branch pins merge sequentially with extras and record their resolved commit SHA in the merge report.

ELI5: extras.txt can now name either an upstream PR or a safe branch on the fork; the composer fetches the right source and merges it into staging.

upstream/main ── open PRs ── numeric extras ── fork branch extras ──> staging

Test Plan

  • uv run --frozen --extra dev python -m pytest .github/scripts/personal-staging/ — 59 passed.
  • uv run --frozen --extra dev pre-commit run --files .github/scripts/personal-staging/stage.py .github/scripts/personal-staging/test_stage.py .github/scripts/personal-staging/extras.txt — passed.
  • Mutation check: stashed implementation/docs and ran every changed test — 14 failed RED; restored the implementation and the same 14 passed GREEN.

Demo

N/A

Type of change

  • Bug fix
  • Feature
  • UI / frontend change
  • Refactor / chore
  • Docs
  • Test / CI
  • Breaking change

Test coverage

  • Unit tests added / updated
  • Integration tests added / updated
  • E2E tests added / updated
  • Manual verification completed
  • Existing tests cover this change
  • Not applicable

Coverage notes

Unit coverage includes branch:homelab parsing; rejection of option-like, self-referential, malformed, shorthand-expanded, and unknown-prefix entries; fork resolution with SHA reporting; and missing-branch handling.

Changelog

Personal staging extras can pin validated branches from the configured fork remote.

@github-actions github-actions Bot added the size/L Pull request size: L label Aug 13, 2026
Fork-only work needs to land in staging without an upstream PR.
Allow branch:<name> pins resolved from the configured fork remote.

Signed-off-by: Bryan Li <bryan.li@gmail.com>
Co-authored-by: omnigent <noreply@omnigent.ai>
@btli
btli force-pushed the ci/extras-branch-pins branch from f345885 to a71fa00 Compare August 13, 2026 17:16
@btli btli changed the title feat(ci): accept fork-branch pins in personal-staging extras.txt feat(ci): accept fork branch pins in staging extras Aug 13, 2026
btli and others added 2 commits August 13, 2026 10:23
Use stable built-in sorting and deduplication directly, and remove one-use helpers without changing composition behavior.

Signed-off-by: Bryan Li <bryan.li@gmail.com>
Co-authored-by: omnigent <noreply@omnigent.ai>
Exercise branch composition decoding, reproducible reruns, changed-head attribution, and transport failures in hourly and nightly modes.

Signed-off-by: Bryan Li <bryan.li@gmail.com>
Co-authored-by: omnigent <noreply@omnigent.ai>
@btli
btli merged commit ab54277 into main Aug 14, 2026
72 of 75 checks passed
@btli
btli deleted the ci/extras-branch-pins branch August 14, 2026 01:16
btli pushed a commit that referenced this pull request Aug 14, 2026
Squash of the fork's staging automation onto upstream main: the hourly/
nightly/images workflows and the stage.py composer with its tests and
docs, including the STAGING_PUSH_TOKEN environment fallback (PR #15)
and branch: extras pins (PR #16), with homelab pinned. Full prior
history preserved at tag archive/main-2026-08-14.

Signed-off-by: Bryan Li <bryan.li@databricks.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/L Pull request size: L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant