Filter Renovate and puppetsync PRs out of the triage-board intake (#97); move #98/#99 labelling to the org reconciler - #104
Open
silug wants to merge 3 commits into
Open
Filter Renovate and puppetsync PRs out of the triage-board intake (#97); move #98/#99 labelling to the org reconciler#104silug wants to merge 3 commits into
silug wants to merge 3 commits into
Conversation
) add_new_issue_to_triage_project.yml gains a job-level `if:` so PRs opened by renovate[bot] (and dependabot[bot], pre-emptively) and puppetsync's own `[puppetsync]`-titled sync PRs stop landing on the Org Triage board. Issues and every other PR are still added: drive-by PRs from outside contributors are exactly what the board exists to catch. The template documents that the title prefix is a convention set by each sync config's commit_message, not something enforced. The `community` / `needs-attention` labelling proposed in #98 and #99 is deliberately NOT added here: the event payload's author_association reports private org members as CONTRIBUTOR (20 of simp's 32 members are private), so a per-repo step would permanently mislabel most of the team's work. That lives in the org reconciler in simp/gha-workflows, which resolves membership from the org member list. The merge_github_workflows stage gains a session option, merge_github_workflows.project_types (default unchanged: pupmod and pupmod_skeleton), so a merge scoped to a template every project type shares can reach the rubygem and simp_unknown repos without a blanket apply_puppet_role. The 20260903-triage-intake-filter session config uses it, with ensure_files so any in-scope repo missing the workflow gets it. Verified end to end on local clones of pupmod-simp-aide (its Renovate-pinned `uses` ref preserved), rubygem-simp-cli and puppet-gpasswd: one file changed each, byte-identical to the template. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e the triage session to pupmods The fleet run of 20260903-triage-intake-filter failed on rubygem-simp-build-helpers: ensure_files writes the template for a path that does not exist, but the task never created the directory, so a repo with no .github/workflows/ at all died with ENOENT. mkdir_p the parent first; spec added, and verified end to end on the build-helpers clone. The same run also opened PRs against the other six rubygem-simp-* repos, which have no puppetsync baseline yet and should not have been in scope. The session config drops rubygem/simp_unknown from permitted_project_types and stops widening merge_github_workflows.project_types; the option itself stays (default unchanged) for whichever session establishes the gem baseline. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The first fleet run produced exactly the expected single-file change on all six rubygem-simp-* repos (one commit, byte-identical to the template, rspec-puppet-facts keeping its Renovate pin), so this shared, project-type-independent workflow becomes the first piece of a puppetsync baseline for the gems rather than an accident to be reverted. Restore rubygem and simp_unknown to permitted_project_types and the merge stage's project_types; rubygem-simp-build-helpers picks up the file on the re-run now that ensure_files creates .github/workflows/. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #97. Addresses #98 and #99 together with simp/gha-workflows#12 — the labelling half of both issues lives there, not in this template, for the reason under Why #98 is not a per-repo step.
What changes here
add_new_issue_to_triage_project.ymltemplate gains a job-levelif:(Triage workflow should not auto-add Renovate and [puppetsync] PRs to the Org Triage board #97): PRs byrenovate[bot]/dependabot[bot]and[puppetsync]-titled sync PRs are no longer added to the Org Triage board. Issues and every other PR still are — drive-by PRs from outside contributors are what the board exists to catch. The explicitevent_nameguard is used rather than relying onstartsWith(null, …); the template documents that the title prefix is a convention set by each sync config'scommit_message, not enforced. It also now carries the standard puppetsyncNOTICEheader (it was the only workflow template without one).merge_github_workflows.project_types— new optional session setting for the merge stage (default unchanged:pupmod,pupmod_skeleton). A merge scoped to one shared template can now reach therubygemandsimp_unknownrepos, which carry the same workflow, without a blanketapply_puppet_role(they are enforce-strategy, so an apply would rewrite their whole baseline). BoltSpec covers it.20260903-triage-intake-filter.yaml(nowlatest.yaml): merge scoped to this one file across pupmod, pupmod_skeleton, rubygem and simp_unknown. Therubygem-simp-*repos had no puppetsync baseline before; the first fleet run produced exactly the expected single-file change on all six, so this shared workflow becomes the first piece of one (decided 2026-09-03).ensure_fileslays the file down where it is missing.merge_gha_workflowsbug fix:ensure_fileswrote the template without creating.github/workflows/, so a repo with no workflows at all (rubygem-simp-build-helpers) failed with ENOENT on the first fleet run. The task nowmkdir_ps the parent; spec added and verified end to end on that clone.Why #98 is not a per-repo step
#98 as filed keys on
github.event.pull_request.author_association. In Actions event payloads that field reportsCONTRIBUTORfor org members whose membership is private (flutter/flutter#101012, apache/arrow#34381); the reconciler hit the same thing via the API ("Trusting it made the mapping treat 29 org members as outside contributors"). 20 of simp's 32 members are private, so the per-repo step would have stuck a permanentcommunitylabel on most of the team's PRs and issues. The reconciler already resolves membership from the org member list, socommunityandneeds-attentionare both applied there: simp/gha-workflows#12.Verification
rspec: 232 examples green; BoltSpec merge-stage spec: 6 examples green (newproject_typescase included); actionlint passes on the template.list_pipeline_stagesdry run against the real config:install_gems → checkout → merge_github_workflows → git_commit_changes → ensure_github_fork → ensure_git_remote → git_push_to_remote → ensure_github_pr.pupmod-simp-aide,rubygem-simp-cli,puppet-gpasswd: exactly one file changed per repo, byte-identical to the template — except aide, which correctly kept its Renovate-pinneduses: actions/add-to-project@v2.0.0.Rollout
bolt plan run puppetsync repolist=github-org(config islatest.yaml). First fleet run (from e708205) opened 78 PRs — 71 pupmods, puppet-gpasswd, 6 rubygems — and failed on rubygem-simp-build-helpers (themkdir_pbug above). All 78 swept: one commit, one file, byte-identical to the template except 9 that kept an existing Renovate-pinnedusesref. A re-run from the current head adds build-helpers and is otherwise a no-op.🤖 Generated with Claude Code