Ship settings as a weekly release, rolled out on publish - #51
Draft
gavinbee wants to merge 1 commit into
Draft
Conversation
`reconcile-repo-defaults.yml` was switched off by GitHub's inactivity rule and stayed off. Its whole effect was on other repositories, so it produced no event in this repo and could never reset the 60-day clock — nine successful Monday runs inside the quiet window did not count, because workflow runs are not repository activity. Disabling is per-workflow, so the `repo-created` dispatch died with the cron, which is how `officials-admin` was created with no settings at all. Split it in two, so neither half can go dormant: - `release.yml` publishes a `settings-YYYY-MM-DD` release weekly. It is schedule-triggered, but publishing a release *is* repository activity, so it keeps its own clock reset the way `swim-club-tech-survey` does. - `rollout.yml` applies a released tag across the org. It carries no `schedule`, so inactivity disabling cannot reach the path that actually changes repos. Drift-catching and the `repo-created` hook move here. `release.yml` dispatches the rollout explicitly rather than leaning on `release: published`, because an event raised by `GITHUB_TOKEN` starts no further workflow run. Cutting the release with the App token would fix that too, but only by adding Contents write across the whole org to a credential that only needs to change settings. `apply-settings.py` gains `--version` and `--summary-file`, so every rollout leaves a repo -> result -> version table: nothing on a repo records which settings version it is on, which is why `officials-admin` went unnoticed. Also closes the smaller note on the issue: `create-repo.sh` now prints the `ghq get` line for the layout `docs/development.md` documents. Closes #34 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CgLE8cg9huy2EZnRoXhmwp
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 #34
What & why
GitHub's inactivity rule switched
reconcile-repo-defaults.ymloff and it stayed off. The reconciler's whole effect was on other repositories, so it produced no event in this repo and could never reset the 60-day clock — nine successful Monday runs inside the quiet window did not count, because workflow runs are not repository activity. Disabling is per-workflow, so therepo-createddispatch died alongside the cron; that is howofficials-admincame to exist with no org settings at all.Split it in two, so neither half can go dormant:
release.ymlpublishes asettings-YYYY-MM-DDrelease weekly, whether or notsettings.ymlchanged. It is schedule-triggered, but publishing a release is repository activity, so it keeps its own clock reset the wayswim-club-tech-surveydoes.rollout.ymlchecks out a released tag and applies it across the org. It carries noschedule, so inactivity disabling cannot reach the path that actually changes repos. Drift-catching and therepo-createdhook move here.release.ymldispatches the rollout explicitly rather than leaning onrelease: published, because an event raised byGITHUB_TOKENstarts no further workflow run. Cutting the release with the App token would also fix that, but only by adding Contents write across the whole org to a credential that only needs Administration.apply-settings.pygains--versionand--summary-file, so every rollout leaves a repo → result → version table. Nothing on a repo records which settings version it is on, which is whyofficials-adminwent unnoticed for months.Also closes the smaller note on the issue:
create-repo.shnow prints theghq getline for the layoutdocs/development.mddocuments.Full rationale, alternatives and open items:
docs/design/0003-settings-releases-and-rollout.md.Testing
ruff check .clean.pytest -q— 32 passed, including new coverage forsummary_tableandparse_args.run:block passesbash -n.bash -n scripts/create-repo.shclean.Not yet exercised end-to-end on GitHub —
release.ymlneeds oneworkflow_dispatchafter merge to publish the first tag and prove the handoff torollout.yml.Checklist
ruff check .clean (Python repos)🤖 Generated with Claude Code
https://claude.ai/code/session_01CgLE8cg9huy2EZnRoXhmwp