Skip to content

Commit 37100ec

Browse files
chore: add Release Please workflow and ADR issue template (#55)
* chore(issue-templates): add ADR template for architecture proposals * chore(release): add release-please config and manifest pinned at v0.7.0 * ci: add release-please workflow to auto-cut tags from Conventional Commits
1 parent bc73ced commit 37100ec

4 files changed

Lines changed: 176 additions & 0 deletions

File tree

.github/ISSUE_TEMPLATE/adr.yml

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
name: ADR (Architecture Decision Record)
2+
description: Propose a change to how sql-sop works (parser backend, distribution format, new rule pack, etc.)
3+
title: "[ADR] <one-line summary>"
4+
labels: ["ADR", "discussion"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Use this template for proposals that change *how* sql-sop works,
10+
not just *what* it checks. Examples: new parser backend,
11+
new distribution format, new rule namespace (DBT*, contracts
12+
pack), new CLI flag. Simple rule additions belong in the
13+
normal "Rule request" template instead.
14+
15+
ADRs follow the pattern in `GOVERNANCE.md` § Architecture
16+
Decision Records. After discussion lands on a decision, the
17+
ADR issue stays open in an archived state as the record of
18+
"why we did it this way." A follow-up issue with the task
19+
breakdown links back to it.
20+
21+
- type: textarea
22+
id: what
23+
attributes:
24+
label: What
25+
description: One paragraph. What the proposal adds or changes.
26+
validations:
27+
required: true
28+
29+
- type: textarea
30+
id: why
31+
attributes:
32+
label: Why
33+
description: |
34+
What gap this fills. What problem users hit today. Cite real
35+
examples if you have them. Skip the marketing.
36+
validations:
37+
required: true
38+
39+
- type: textarea
40+
id: scope-in
41+
attributes:
42+
label: In scope
43+
description: What this PR / direction ships. Bulleted list.
44+
validations:
45+
required: true
46+
47+
- type: textarea
48+
id: scope-out
49+
attributes:
50+
label: Out of scope (or deferred)
51+
description: |
52+
What this proposal explicitly does not cover. Per
53+
`GOVERNANCE.md` hard lines, "rule-based not AI" and "stable
54+
rule IDs" are always out unless this proposal is specifically
55+
about changing them.
56+
validations:
57+
required: true
58+
59+
- type: textarea
60+
id: compatibility
61+
attributes:
62+
label: Compatibility
63+
description: |
64+
What changes for existing users. Default behaviour, rule-ID
65+
impact, new dependencies. Anything that breaks downstream
66+
configs needs a deprecation plan -- see `GOVERNANCE.md`.
67+
validations:
68+
required: true
69+
70+
- type: textarea
71+
id: plan
72+
attributes:
73+
label: Implementation plan
74+
description: |
75+
Numbered list of the actual work. Files touched, new tests,
76+
README/CHANGELOG updates. Use this to estimate effort and
77+
catch scope creep early.
78+
validations:
79+
required: false
80+
81+
- type: textarea
82+
id: open-questions
83+
attributes:
84+
label: Open questions
85+
description: |
86+
Decisions not yet made. State your lean for each so the
87+
discussion has a starting point. Format: "**Question.** Lean: x."
88+
validations:
89+
required: false
90+
91+
- type: textarea
92+
id: rejected
93+
attributes:
94+
label: What I rejected
95+
description: |
96+
Alternatives considered and dismissed, with one-sentence
97+
reasoning each. Documents the why so reviewers don't have to
98+
re-litigate the same ground.
99+
validations:
100+
required: false
101+
102+
- type: checkboxes
103+
id: hard-lines
104+
attributes:
105+
label: Hard-lines check
106+
description: Tick what applies; helps reviewers triage faster.
107+
options:
108+
- label: This proposal stays inside the "rule-based, not AI" hard line
109+
- label: This proposal does not rename or remove an existing rule ID
110+
- label: This proposal preserves the low-false-positive-rate goal
111+
- label: I'm willing to implement this myself if it lands
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Release Please
2+
3+
# Watches main for Conventional Commits and opens a release PR when one
4+
# would be cut. Merging that PR creates a v*.*.* tag, which then fires
5+
# the existing `release.yml` workflow to build + publish to PyPI via
6+
# Trusted Publishing and attach artifacts to the GitHub release.
7+
#
8+
# Manifest mode: version state lives in `.release-please-manifest.json`
9+
# and the release strategy is configured in `release-please-config.json`.
10+
# See `GOVERNANCE.md` § Release cadence for the batching policy --
11+
# Release Please mechanics don't change the policy, they just remove
12+
# the paperwork.
13+
14+
on:
15+
push:
16+
branches:
17+
- main
18+
workflow_dispatch:
19+
20+
permissions:
21+
contents: write
22+
pull-requests: write
23+
24+
jobs:
25+
release-please:
26+
runs-on: ubuntu-latest
27+
steps:
28+
- uses: googleapis/release-please-action@v4
29+
with:
30+
config-file: release-please-config.json
31+
manifest-file: .release-please-manifest.json
32+
token: ${{ secrets.GITHUB_TOKEN }}

.release-please-manifest.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
".": "0.7.0"
3+
}

release-please-config.json

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3+
"release-type": "python",
4+
"include-v-in-tag": true,
5+
"include-component-in-tag": false,
6+
"bump-minor-pre-major": true,
7+
"bump-patch-for-minor-pre-major": false,
8+
"packages": {
9+
".": {
10+
"package-name": "sql-sop",
11+
"release-type": "python",
12+
"changelog-path": "CHANGELOG.md",
13+
"draft": false,
14+
"prerelease": false
15+
}
16+
},
17+
"changelog-sections": [
18+
{"type": "feat", "section": "Features"},
19+
{"type": "fix", "section": "Bug Fixes"},
20+
{"type": "perf", "section": "Performance"},
21+
{"type": "revert", "section": "Reverts"},
22+
{"type": "docs", "section": "Documentation"},
23+
{"type": "refactor", "section": "Code Refactoring"},
24+
{"type": "test", "section": "Tests"},
25+
{"type": "ci", "section": "Continuous Integration", "hidden": true},
26+
{"type": "build", "section": "Build", "hidden": true},
27+
{"type": "chore", "section": "Miscellaneous Chores", "hidden": true},
28+
{"type": "style", "section": "Styles", "hidden": true}
29+
]
30+
}

0 commit comments

Comments
 (0)