Add shared CONTRIBUTING.md surfaced across all PolicyEngine repos#3
Merged
Add shared CONTRIBUTING.md surfaced across all PolicyEngine repos#3
Conversation
GitHub automatically surfaces `CONTRIBUTING.md` from the org's `.github` repo to any repo that doesn't have its own. Per-repo `CONTRIBUTING.md` (which all active repos still have) takes precedence, so this file is the fallback + source of truth for the common bits that were previously duplicated in each repo: - towncrier `changelog.d/<branch>.<type>.md` fragments + fragment-type table - `uv run` requirement for Python commands - branch-naming conventions, default-branch resolution - anti-patterns (no `changelog_entry.yaml`, no `_v2` suffixes, no fork PRs when secrets are required, no hardcoded test-passing values) - peer-review rules, PR-description structure, test-plan expectations Individual repos can reference this file and focus their per-repo CONTRIBUTING.md on install commands, country-specific conventions, and repo-level anti-patterns. Written with AI coding agents in mind as well as human contributors: copy-pasteable commands, explicit "don't do this" list, and a single unambiguous changelog-fragment procedure. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced Apr 17, 2026
MaxGhenis
added a commit
to PolicyEngine/policyengine-us-data
that referenced
this pull request
Apr 17, 2026
….md at shared guide This repo was partway through the yaml-changelog → towncrier migration already: `pr.yaml` ran `towncrier check`, `.github/bump_version.py` inferred version bumps from `changelog.d/` fragment types, and `pyproject.toml` carried `[tool.towncrier]` config. The stale bits that remained: - Unused dep `yaml-changelog>=0.1.7` in `pyproject.toml` - Unused `.github/workflows/reusable_changelog_check.yaml` (not wired into any call-graph) - Zero-byte `changelog_entry.yaml` at the repo root - 601-line `changelog.yaml` whose entire contents are already compiled into `CHANGELOG.md` - A CONTRIBUTING.md that described the old yaml-changelog flow and told contributors to edit `changelog_entry.yaml` This PR drops all of the above and rewrites CONTRIBUTING.md to point at the new shared PolicyEngine guide (https://github.com/PolicyEngine/.github/blob/main/CONTRIBUTING.md, proposed in PolicyEngine/.github#3) plus a repo-specific section on commands, test placement, dataset-versioning rules, and anti-patterns. After this lands the repo matches the rest of the org (uk-data, core, uk, us, microdf, policyengine.py) on a single towncrier flow. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
MaxGhenis
added a commit
to PolicyEngine/policyengine-us-data
that referenced
this pull request
Apr 17, 2026
….md at shared guide This repo was partway through the yaml-changelog → towncrier migration already: `pr.yaml` ran `towncrier check`, `.github/bump_version.py` inferred version bumps from `changelog.d/` fragment types, and `pyproject.toml` carried `[tool.towncrier]` config. The stale bits that remained: - Unused dep `yaml-changelog>=0.1.7` in `pyproject.toml` - Unused `.github/workflows/reusable_changelog_check.yaml` (not wired into any call-graph) - Zero-byte `changelog_entry.yaml` at the repo root - 601-line `changelog.yaml` whose entire contents are already compiled into `CHANGELOG.md` - A CONTRIBUTING.md that described the old yaml-changelog flow and told contributors to edit `changelog_entry.yaml` This PR drops all of the above and rewrites CONTRIBUTING.md to point at the new shared PolicyEngine guide (https://github.com/PolicyEngine/.github/blob/main/CONTRIBUTING.md, proposed in PolicyEngine/.github#3) plus a repo-specific section on commands, test placement, dataset-versioning rules, and anti-patterns. After this lands the repo matches the rest of the org (uk-data, core, uk, us, microdf, policyengine.py) on a single towncrier flow. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
MaxGhenis
added a commit
to PolicyEngine/policyengine-us-data
that referenced
this pull request
Apr 17, 2026
* Finish migration from yaml-changelog to towncrier; point CONTRIBUTING.md at shared guide This repo was partway through the yaml-changelog → towncrier migration already: `pr.yaml` ran `towncrier check`, `.github/bump_version.py` inferred version bumps from `changelog.d/` fragment types, and `pyproject.toml` carried `[tool.towncrier]` config. The stale bits that remained: - Unused dep `yaml-changelog>=0.1.7` in `pyproject.toml` - Unused `.github/workflows/reusable_changelog_check.yaml` (not wired into any call-graph) - Zero-byte `changelog_entry.yaml` at the repo root - 601-line `changelog.yaml` whose entire contents are already compiled into `CHANGELOG.md` - A CONTRIBUTING.md that described the old yaml-changelog flow and told contributors to edit `changelog_entry.yaml` This PR drops all of the above and rewrites CONTRIBUTING.md to point at the new shared PolicyEngine guide (https://github.com/PolicyEngine/.github/blob/main/CONTRIBUTING.md, proposed in PolicyEngine/.github#3) plus a repo-specific section on commands, test placement, dataset-versioning rules, and anti-patterns. After this lands the repo matches the rest of the org (uk-data, core, uk, us, microdf, policyengine.py) on a single towncrier flow. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Update uv.lock after removing yaml-changelog Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <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.
Summary
Adds a shared
CONTRIBUTING.mdtoPolicyEngine/.githubthat GitHub automatically surfaces on any repo without its own. Per-repoCONTRIBUTING.md(which all active repos still have) takes precedence, so this file is the fallback and the authoritative source for the cross-repo conventions that were previously duplicated (and drifting) in each repo:changelog.d/<branch>.<type>.mdfragments + fragment-type tableuv runrequirement for Python commandschangelog_entry.yaml, no_v2suffixes, no fork PRs when secrets are required, no hardcoded test-passing values)Per-repo
CONTRIBUTING.mdwill be rewritten in companion PRs to focus on install commands, country-specific conventions, and repo-level anti-patterns, with a pointer back to this shared file.Motivation
Currently the same changelog / formatting / PR-etiquette guidance is repeated (inconsistently) across
policyengine-core,policyengine-uk,policyengine-us,policyengine-uk-data,policyengine-us-data,policyengine.py, and several app repos. When the changelog format migrated fromchangelog_entry.yamlto towncrier, most per-repo CONTRIBUTING files kept pointing at the old format, breaking both human contributors and AI coding agents. A single shared guide removes that drift for the cross-repo bits while leaving country-specific guidance where it belongs.Written for agents too
AI coding agents (Claude, Copilot, Codex, etc.) contribute a substantial share of PolicyEngine PRs. This file is deliberately structured with copy-pasteable commands and an explicit "don't do this" list so agents can read it cold and produce PRs that pass CI on the first try.
Test plan