Skip to content

ci: indirect the canonical-repo guard through vars.PULP_PRIMARY_REPO#6325

Merged
shipyard-local[bot] merged 1 commit into
mainfrom
ci/coordinate-derisk
Jul 19, 2026
Merged

ci: indirect the canonical-repo guard through vars.PULP_PRIMARY_REPO#6325
shipyard-local[bot] merged 1 commit into
mainfrom
ci/coordinate-derisk

Conversation

@shipyard-local

@shipyard-local shipyard-local Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Coordinate de-risk, step 1 of N — ahead of a possible move to Generous-Corp/pulp.

32 workflows guard scheduled/owner-only jobs on the hardcoded literal
github.repository == 'danielraffel/pulp'. Under a new owner that evaluates
false and the job silently skips (no error) — every watchdog, reaper,
coverage, and release-cadence lane goes dark. This replaces the literal with
github.repository == vars.PULP_PRIMARY_REPO, backed by a repo variable set to
danielraffel/pulp today.

  • Behaviour-preserving no-op now (resolved value byte-identical).
  • Turns a future owner change into flipping one variable, not a 32-file hunt.
  • Fork-safety preserved: a fork lacks the variable → guard still false on forks.

Companion changes to follow: the CLI compile-time repo constant → a -D define,
and a scripted inventory guard that fails CI if a new hardcoded danielraffel/pulp
guard creeps back in.

🤖 Generated with Claude Code


🔎 Provenance

Agent claude
Machine m5
Tab Set up fleet v2 project with Orchestrate in new workspace
Directory ~/Code/pulp
Session 3239e1c5-c3ff-434a-ac47-7db21d930bce

Resume

claude --resume 3239e1c5-c3ff-434a-ac47-7db21d930bce

Jump to this tab

cmux surface focus 82BDD5A8-F7FA-441D-8D9D-B5763DF6E7FC

Relaunch (any agent)

cmux surface resume get --surface 82BDD5A8-F7FA-441D-8D9D-B5763DF6E7FC

Restore URLhttps://claude.ai/code/session_017CdzQZrrtCETcDYH9MABhR

stamped 2026-07-19 06:06 UTC


Summary by cubic

Switch CI owner guards in 32 workflows to use vars.PULP_PRIMARY_REPO instead of the hardcoded danielraffel/pulp, preventing scheduled/owner-only jobs from silently skipping after a repo transfer. No behavior change now.

  • Refactors

    • Replaced github.repository == 'danielraffel/pulp' with github.repository == vars.PULP_PRIMARY_REPO across all guarded jobs.
    • Current value is danielraffel/pulp, so behavior is unchanged.
    • Fork safety retained: forks lack the variable, so guards stay false.
  • Migration

    • After moving the repo, set PULP_PRIMARY_REPO to the new owner/repo. No other changes needed.

Written for commit cada62e. Summary will update on new commits.

Review in cubic

32 workflows guard scheduled/owner-only jobs on
`github.repository == 'danielraffel/pulp'`. That hardcoded owner string is the
single biggest source of silent breakage if the repo ever transfers to an org:
under a new owner every guard evaluates false and the job silently skips (no
error) — watchdogs, reapers, coverage, release-cadence all go dark.

Replace the literal with `github.repository == vars.PULP_PRIMARY_REPO`, backed by
a repo variable `PULP_PRIMARY_REPO` currently set to `danielraffel/pulp`. This is
a behaviour-preserving no-op today (the resolved value is byte-identical), and it
turns a future owner change into flipping one variable instead of a 32-file hunt.
Fork-safety is preserved: a fork lacks the variable, so the guard is still false
on forks exactly as before.

First step of the coordinate de-risk ahead of a possible org move; the CLI
compile-time constant and a scripted inventory guard follow in companion changes.

Config-Doc: skip reason="mechanical guard indirection; no CI/release behaviour or config surface changed"
Skill-Update: skip skill=ci reason="no change to the ci skill's documented ship/validate workflow; guard expression only"
Skill-Update: skip skill=intel-canary reason="mechanical guard indirection in nightly-intel.yml; the intel-canary skill's documented workflow is unchanged"
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017CdzQZrrtCETcDYH9MABhR
@github-actions

Copy link
Copy Markdown

Ruleset drift report

Checked-in intent: .github/rulesets/main-protection.json
Live ruleset name: main-protection

No live ruleset with the expected name was found on this repo.

Either the ruleset has not been created yet, or GITHUB_TOKEN
does not have administration: read. Create the ruleset via the
GitHub UI using the contexts listed below, or grant the workflow
token admin-read.

Required checks (merge-blocking)

Checked in:

  • Enforce version & skill sync
  • macos

Live on GitHub:
(none)

Missing on GitHub (declared in repo, not enforced live):

  • Enforce version & skill sync
  • macos

Advisory checks (visibility only, never required)

  • AddressSanitizer (macOS ARM64)
  • RealtimeSanitizer (Linux x86_64, Clang 18)
  • ThreadSanitizer (macOS ARM64)
  • UndefinedBehaviorSanitizer (macOS ARM64)

Drift detected. Update .github/rulesets/main-protection.json
to match intent, or update the ruleset on GitHub to match the file.

@shipyard-local
shipyard-local Bot merged commit 3b7d277 into main Jul 19, 2026
19 of 33 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant