Skip to content

[Phase 3] Cross-repo rollout: lift the all-reusables standard into petry-projects/.github and repin downstream consumers #690

Closed

Description

@github-actions

Story

As a org maintainer,
I want promote the all-reusables tag-pinning standard into petry-projects/.github and repin downstream consuming repos that call first-party reusables by SHA/# main,
so that the standard and its compliance gate apply org-wide, not just inside .github-private.

Acceptance Criteria

  1. The generalized pinning standard (one convention for all first-party reusables) is reflected in petry-projects/.github (org AGENTS.md / standards/) so downstream repos defer to it, as foreseen by the AGENTS.md 'Promotion' note.
  2. Downstream consumer repos that call first-party reusables (e.g. ci-failure-analyst template deployments) are repinned from SHA/# main to the channel tag.
  3. The compliance check (story id 3) is available to / referenced by downstream repos so off-channel pins are caught org-wide.
  4. A rollout/migration order is recorded that avoids breaking in-flight consumers (dogfood .github-private first, then rings).

Tasks / Subtasks

Dev Notes

  • HANDS-OFF / cross-repo: this work spans petry-projects/.github and downstream consumer repos, which dev-lead cannot modify from within .github-private. Treat as a human-coordinated rollout (mirrors the existing fan-out epics [Fan-out] dev-lead self-host pin (trigger stub + reusable-only + agent_ref) #535/[Fan-out] Convert consumers' pr-review to @pr-review/stable callers (ring-staged) #536 for dev-lead/pr-review pins).
  • Depends on the in-repo standard + compliance test being proven first (stories id 3 and id 5) — dogfood-first per the Safe Release Strategy (docs/initiatives/agentic-release-strategy.md): ring-0 is .github-private itself.
  • AGENTS.md already flags the promotion path: the repo-local pinning standard becomes org-wide by lifting it into petry-projects/.github and having repos defer to it. Reuse that mechanism rather than inventing a new one.
  • Migration order (discussion open question) must avoid breaking in-flight consumers: repin .github-private (done in Phase 2), then downstream rings, verifying each before advancing.

Project Structure Notes

Primarily out-of-repo (petry-projects/.github + consumer repos). In-repo footprint is limited to documentation cross-links; the executable changes live in other repos.

References

Likely target surface

  • petry-projects/.github (org AGENTS.md / standards)
  • downstream consumer repos: .github/workflows/ci-failure-analyst.yml

Story prepared by the BMAD Scrum Master (Bob) for epic #684. Status: ready-for-dev.

Activity

  1. added
    initiativeEpic / initiative tracking issue
    initiative:holdInitiative driver must not release this issue (human hold)
    on Jun 14, 2026
  2. don-petry commented on Sep 1, 2026

    @don-petry
    Collaborator

    Closing — superseded by work that already landed

    Re-validated 2026-09-01 against live state. Three of four ACs are satisfied by work that shipped through other issues; the fourth is moot.

    AC1 — standard lifted into petry-projects/.github. ✅ Done. standards/ci-standards.md documents the all-reusables convention across ~8 sections: the thin-stub pattern delegating via uses: …/<name>-reusable.yml@<name>/stable, the "Reusable workflow versioning — the stable channel" section, the release-channel-tags tag-protection ruleset, and the rule that rollout happens by moving the channel tag, never by editing callers.

    AC3 — compliance gate available org-wide. ✅ Done. check_centralized_workflow_stubs in scripts/compliance-audit.sh enforces the expected pin per reusable, and reusable-pin-compliance now fails bare-tier first-party pins (the #1493 enforcement flip).

    AC2 — downstream consumers repinned. ✅ Effectively done. pinned-version-report run 33409266607 (2026-08-31) resolved 92 fleet pins: 90 compliant. The 2 flagged rows are both in .github-private:

    .github-private | agent-shield | ring next | pinned v2-stable
    .github-private | dev-lead     | ring next | pinned v1-stable
    

    Both are pinned more conservatively than their ring expects — stable instead of next — which is the SC2 self-hosting property, not pin drift. That intentional exception is now documented and test-guarded by #1624.

    AC4 — rollout order recorded. Moot. The ring-by-ring rollout happened (dogfood → ring0 → ring1 → stable, as the registry records), and pinned-version-report is the durable surface showing where every consumer sits.

    Nothing actionable remains. Closing; epic #684 closes with it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    dev-lead:hands-offExclude from dev-lead agent automationinitiativeEpic / initiative tracking issueinitiative:holdInitiative driver must not release this issue (human hold)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions