Skip to content

Reconcile the pupmod baseline templates with the deployed fleet and re-assert it (#88) - #42

Open
silug wants to merge 9 commits into
mainfrom
openvox9-ruby4-template-refresh
Open

Reconcile the pupmod baseline templates with the deployed fleet and re-assert it (#88)#42
silug wants to merge 9 commits into
mainfrom
openvox9-ruby4-template-refresh

Conversation

@silug

@silug silug commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Closes #88. Rebased onto the #43 branch (create-release-tag-workflow), so it merges cleanly once #43 lands.

Updates the puppetsync templates to match what is actually deployed on the fleet's master branches, so the first blanket apply_puppet_role session since the OpenVox migration re-asserts the baseline instead of reverting it. The original draft reconciled against the openvox9-ruby4-preview branches; those changes have since become master reality, and the workflow hunks of the original draft (pr_tests, tag_deploy, release_rpms) were superseded by #58 and #44 — the rebase drops them.

What's left, verified against a fresh audit of all 70 pupmod masters:

  1. Gemfile — the OpenVox-era baseline (openvox/openvox-strings, voxpupuli-test stack via simp-rake-helpers ~> 6.0, no puppet/pdk/puppetlabs_spec_helper, rubocop pins removed). Matches the 27-repo majority except a template-side comment. Bootstrap-strategy, so existing repos are untouched (Renovate + merge_gemfile manage them); this is what new repos start from.
  2. spec_helper.rb.epp — the voxpupuli-test variant; renders byte-identically to the 20-repo majority. The other variants are stragglers of the same migration (one manifest_dir line, heredoc style) that the sync will normalize.
  3. Dotfile reconciliation (the Enforce-strategy templates are behind the deployed fleet; apply_puppet_role would revert fleet improvements (spec_helper.rb, .gitignore, ...) #88 fixes):
    • _gitignore: the 66-repo majority (AI-assistant ignores, etc.) plus aide's two fixes — the !/spec/fixtures/hieradata/ directory re-include that makes the file-level re-include actually work, and /Gemfile.local (a documented override file). aide was ahead of the majority here, not behind.
    • _pdkignore: /AGENTS.md (62-repo majority).
    • _puppet-lint.rc: adopt --no-strict_indent-check fleet-wide — strict_indent 5.0.0 crashes puppet-lint on some valid manifests and 16 repos already carry the workaround; enforcing the majority would have broken their Puppet Style jobs. Commented for removal when fixed upstream.
    • .gitattributes, .rspec, and the triage-project workflow already match the fleet; untouched.
  4. PUPPET_VERSION unpinned-era fix in the four non-pupmod tag_deploy variants (rubygem/github-only), carried over from the original draft.
  5. Session config 20260813-baseline-refresh.yaml (now latest) — the blanket apply_puppet_role session. Expected diffs per repo: spec_helper normalization, the puppet-lint flag, gitignore/pdkignore for the handful off-majority, plus create_release_tag.yml bootstrap on any repo whose Add create_release_tag.yml for pupmod repos as a thin caller of simp/gha-workflows (#85 pilot) #43-rollout PR hasn't merged yet.

Verified: 212 rspec + 20 BoltSpec examples green (merge_gemfile specs updated for the new template); managed-file contract passes; local e2e apply against acpid/aide/crypto_policy produces exactly the expected per-repo diffs — and aide (whose .gitignore is the best deployed variant) comes through untouched.

🤖 Generated with Claude Code

@hcaballero2

Copy link
Copy Markdown
Contributor

Verified this locally by applying the baseline to the deployed fleet and checking for no-ops: a 3-stage puppetsync session (install_gems → checkout → apply_puppet_role, nothing pushed) over 70 pupmods checked out at their deployed state — 64 at openvox9-ruby4-preview plus 6 that have merged the preview to master since this PR was written (the branch count has moved from the 71 in the description). All 70 catalogs compiled and the spec_helper EPP rendered cleanly (byte-identical in 20 repos), and the checkable consensus numbers hit exactly: 26 Gemfiles identical, 27 observer removals, 23 repos matching the majority pr_tests.yml. Every remaining diff falls into a divergence class already documented here, except the items below.

Finding Count Note
tag_deploy.yml step name: fleet still says Build Puppet module (PDK) 60/70 The label-drop is now the minority variant (looks like the post-7/13 PUPPET_VERSION fix wave kept the old name). Keep the drop (next sync renames the step in 60 repos) or re-add the label? Only open question.
.gitignore / .pdkignore / .gitattributes drift 11 / 8 / 1 These templates aren't touched by this PR, but "fleet still matches" no longer holds — worth adding to the known-divergences list for the next sync.
Gemfile comment-wording drift ~20 Cosmetic only (rubocop-performance comment text).

Also hit two pre-existing repo bugs while testing, both unrelated to this PR: role::pupmod still includes the deleted profile::pupmod::gitlab_ci (breaks catalog compile when apply_puppet_role is enabled) and summarize_repos_pipeline_results.pp crashes on a missing format::colorize function. Will address in separate PR

silug and others added 4 commits August 13, 2026 18:24
A workflow_dispatch action replacing the local shell script used to tag
module releases: it validates the release (SemVer from metadata.json,
tag doesn't exist, pkg:check_version, pkg:compare_latest_tag,
metadata_lint) BEFORE tagging, generates the tag annotation from the
CHANGELOG, and pushes the annotated tag (triggering tag_deploy.yml).
Supports a dry_run input.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Pilot of the reusable-workflows model (#85): the tagging logic now lives
in simp/gha-workflows as puppet_create_release_tag.yml, validated
end-to-end on pupmod-simp-mockup 0.6.0 (dry run, real tag, tag_deploy,
Forge publish, el8/el9/el10 RPMs — simp/pupmod-simp-mockup#104). The
synced file is a workflow_dispatch shim pinned to v1.0.0; Renovate
manages the pin per repo from here.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
merge_github_workflows.ensure_files lists templated workflow files to
create when a repo lacks them (the task already writes full templates
for missing paths). This rolls out a brand-new workflow without an
apply_puppet_role session — blanket applies are currently unsafe
because several enforce-strategy templates are behind the deployed
fleet (e.g. spec_helper.rb would revert the voxpupuli-test migration).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
silug and others added 5 commits August 13, 2026 22:55
Sync the pupmod templates with the end state deployed fleet-wide on
the openvox9-ruby4-preview branches (all green in CI):

- Gemfile: drop the puppet/pdk/puppetlabs_spec_helper gems, use
  openvox + openvox-strings + voxpupuli-test (via simp-rake-helpers
  ~> 6.0), simp-beaker-helpers ~> 3.1, simp-rspec-puppet-facts ~> 4.0
- spec_helper.rb.epp: require voxpupuli/test/spec_helper instead of
  puppetlabs_spec_helper
- pr_tests.yml: 3-row spec matrix (OpenVox 8 on Ruby 3.2/3.4 plus the
  OpenVox 9 preview on Ruby 4.0), checkout@v7, Ruby Style job enabled,
  rake pupmod:build instead of pdk build, parallel_spec, and the
  majority acceptance job (vagrant_libvirt, almalinux 9/10)
- pr_tests.simp-simp.yml: refreshed from the simp-simp repo's actual
  workflow (split spec suites, multi-suite acceptance)
- tag_deploy.yml: Ruby 3.4.9, rake pupmod:build
- release_rpms.yml / add_new_issue_to_triage_project.yml: fleet
  majority (ubuntu-24.04, github-script@v9, add-to-project@v2)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XCnDsYaJDLiP8z8tafz9Tp
The '~> 7' env survived the OpenVox migration in every deployed
tag_deploy workflow because those only run on tags; the first
post-migration release (pupmod-simp-simp 7.0.1) failed bundle install
when the Gemfile mapped it onto the openvox gem (simp-rake-helpers 6.0
requires openvox >= 8 < 9).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XCnDsYaJDLiP8z8tafz9Tp
Adopts the best deployed variants found by auditing all 70 pupmod
masters (#88):

- _gitignore: the 66-repo majority (AI-assistant configuration ignores,
  hieradata handling) plus aide's two fixes — the directory re-include
  that makes '!/spec/fixtures/hieradata/*' actually work, and
  /Gemfile.local (a documented override file)
- _pdkignore (62/69 majority): /AGENTS.md
- _puppet-lint.rc: adopt the --no-strict_indent-check workaround that
  16 modules carry — strict_indent 5.0.0 crashes puppet-lint on some
  valid manifests, so enforcing the majority (no flag) would break
  those 16 repos' Puppet Style jobs. Disabling the broken check
  fleet-wide is the safe baseline; remove when fixed upstream.

The other enforce files (.gitattributes, .rspec) and the triage-project
workflow already match the fleet majority, and spec_helper.rb.epp
renders byte-identically to the 20-repo majority variant (the smaller
variants differ only by one manifest_dir line and heredoc style —
stragglers of the same migration).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The specs' munges hardcoded the Puppet-7-era template lines (puppet/pdk
gems, simp-rake-helpers range pin); they now exercise the openvox gem
chain and the '~> 6.0' pin.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@silug
silug force-pushed the openvox9-ruby4-template-refresh branch from 501474a to 11fcb67 Compare August 13, 2026 23:07
@silug silug changed the title Update pupmod baseline to the OpenVox 9 / Ruby 4.0 preview state Reconcile the pupmod baseline templates with the deployed fleet and re-assert it (#88) Aug 13, 2026
@silug
silug marked this pull request as ready for review August 13, 2026 23:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enforce-strategy templates are behind the deployed fleet; apply_puppet_role would revert fleet improvements (spec_helper.rb, .gitignore, ...)

2 participants