Skip to content

Commit aed0c13

Browse files
author
Matthew
committed
Merge branch 'docs/create-story-files' into 'main'
docs(standards): create story files for backlog stories 4.5 and 2.10 See merge request orgdocs/development-standards!26
2 parents 871732b + 816dfc4 commit aed0c13

File tree

4 files changed

+154
-3
lines changed

4 files changed

+154
-3
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Story 2.10: Cut Dev-Toolchain Release for Post-v1.5.0 Features
2+
3+
Status: ready-for-dev
4+
5+
## Story
6+
7+
As a maintainer,
8+
I want to cut a proper minor release for all features merged since v1.5.0,
9+
so that the published container image includes Rust, Terragrunt, fix target, pre-push hooks, tool version manifest, and the release script.
10+
11+
## Acceptance Criteria
12+
13+
1. CHANGELOG.md is updated with all [Unreleased] entries under [1.6.0]
14+
2. The tag v1.6.0 is created and pushed
15+
3. GitHub Actions builds and publishes the container image to GHCR
16+
4. The v1 floating tag is updated to point to v1.6.0
17+
5. The GitHub Release is created with release notes
18+
6. The tool version manifest is attached to the release
19+
20+
## Tasks / Subtasks
21+
22+
- [ ] Task 1: Verify CHANGELOG.md is complete (AC: 1)
23+
- [ ] 1.1 Review [Unreleased] section — ensure all post-v1.5.0 features are documented
24+
- [ ] 1.2 Features to verify are listed: Rust ecosystem, Terragrunt support, `make fix` target, pre-push hooks, tool version manifest (`report-tool-versions.sh`), `make release` script, critical rule 8 docs
25+
- [ ] 1.3 Add any missing entries before release
26+
27+
- [ ] Task 2: Run `make check` (AC: 1)
28+
- [ ] 2.1 Verify all checks pass on current main
29+
30+
- [ ] Task 3: Cut the release (AC: 2, 3, 4, 5, 6)
31+
- [ ] 3.1 Run `make release VERSION=1.6.0`
32+
- [ ] 3.2 Confirm push when prompted
33+
- [ ] 3.3 Verify GitHub Actions build completes successfully
34+
- [ ] 3.4 Verify container image is published to GHCR with v1.6.0 tag
35+
- [ ] 3.5 Verify v1 floating tag is updated
36+
- [ ] 3.6 Verify GitHub Release is created with tool version manifest
37+
38+
## Dev Notes
39+
40+
- `make release VERSION=1.6.0` runs `scripts/release.sh` which handles: semver validation, precondition checks, CHANGELOG update via sed, commit, tag, interactive push confirmation
41+
- The release script was added in the previous session (PR #8, merged)
42+
- Current latest tag is v1.5.0 — all Rust, terragrunt, and other features are merged to main but unreleased
43+
- The weekly cron build bumps patch versions automatically, but feature releases need a deliberate minor bump
44+
- The CHANGELOG [Unreleased] section in the actual repo may be incomplete — need to cross-reference git log since v1.5.0
45+
- After release, the `build.yml` workflow handles: multi-arch build, GHCR publish, cosign signing, floating tag update, release notes, tool version manifest attachment
46+
47+
### Project Structure Notes
48+
49+
- `scripts/release.sh` — the release ceremony script
50+
- `Makefile``make release VERSION=x.y.z` target
51+
- `CHANGELOG.md` — must have [Unreleased] section with content
52+
- `.github/workflows/build.yml` — triggered by tag push, handles publishing
53+
54+
### References
55+
56+
- [Source: dev-toolchain/scripts/release.sh] — release script
57+
- [Source: dev-toolchain/Makefile] — release target definition
58+
- [Source: dev-toolchain/DEVELOPMENT.md#Releasing] — release process documentation
59+
- [Source: dev-toolchain/.github/workflows/build.yml] — automated build/publish pipeline
60+
- [Source: epics.md#Story 2.10] — acceptance criteria
61+
- **Depends on:** Story 4.5 (so the pre-commit hook accepts the `release` scope for the release commit)
62+
63+
## Dev Agent Record
64+
65+
### Agent Model Used
66+
67+
### Debug Log References
68+
69+
### Completion Notes List
70+
71+
### File List
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# Story 4.5: Update Conventional Commit Scopes for All Languages
2+
3+
Status: ready-for-dev
4+
5+
## Story
6+
7+
As a developer,
8+
I want the pre-commit conventional commits hook to accept all current language scopes,
9+
so that commits for Ruby, Go, JavaScript, Rust, and new workflow scopes are not rejected.
10+
11+
## Acceptance Criteria
12+
13+
1. The hook accepts all language scopes: python, bash, terraform, ansible, ruby, go, javascript, rust
14+
2. The hook accepts all workflow scopes: container, ci, makefile, standards, security, changelog, release
15+
3. The updated hook version is referenced in both template repos' `.pre-commit-config.yaml`
16+
4. The dev-toolchain repo's `.pre-commit-config.yaml` references the updated hook
17+
5. `make check` passes on all updated repos
18+
19+
## Tasks / Subtasks
20+
21+
- [ ] Task 1: Update pre-commit-conventional-commits repo (AC: 1, 2)
22+
- [ ] 1.1 Update `VALID_SCOPES` in `conventional_commits/config.py` — add: ruby, go, javascript, rust, security, changelog, release
23+
- [ ] 1.2 Update test suite in `tests/test_check.py` — add parametrized cases for new scopes
24+
- [ ] 1.3 Update `tests/test_config.py` — verify VALID_SCOPES count matches expected
25+
- [ ] 1.4 Update README.md — add new scopes to the valid scopes list
26+
- [ ] 1.5 Sync DEVELOPMENT.md — add rust, security, changelog, release (ruby/go/javascript already there)
27+
- [ ] 1.6 Run `make check` and all tests pass
28+
- [ ] 1.7 Tag new version (v1.1.0 — minor bump for new scopes)
29+
30+
- [ ] Task 2: Update dev-toolchain `.pre-commit-config.yaml` (AC: 4)
31+
- [ ] 2.1 Bump `rev:` from `v1.0.0` to `v1.1.0` for the conventional-commits hook
32+
- [ ] 2.2 Run `make check` passes
33+
34+
- [ ] Task 3: Update github-repo-template `.pre-commit-config.yaml` (AC: 3)
35+
- [ ] 3.1 Bump `rev:` from `v1.0.0` to `v1.1.0` for the conventional-commits hook
36+
- [ ] 3.2 Run `make check` passes
37+
38+
- [ ] Task 4: Update gitlab-repo-template `.pre-commit-config.yaml` (AC: 3)
39+
- [ ] 4.1 Bump `rev:` from `v1.0.0` to `v1.1.0` for the conventional-commits hook
40+
- [ ] 4.2 Run `make check` passes
41+
42+
## Dev Notes
43+
44+
- The scope validation is hardcoded in Python: `conventional_commits/config.py` uses a `frozenset` called `VALID_SCOPES`
45+
- The check module (`check.py`) uses regex `r"^(?P<type>[a-z]+)\((?P<scope>[a-z]+)\): (?P<description>.+)$"` and validates scope membership
46+
- Current `VALID_SCOPES` in config.py: python, terraform, bash, ansible, container, ci, makefile, standards (8 scopes)
47+
- DEVELOPMENT.md already documents ruby, go, javascript but config.py doesn't implement them — this is a known doc/code mismatch
48+
- All three downstream repos (dev-toolchain, github-template, gitlab-template) pin `rev: v1.0.0` with no hook_args overrides
49+
- No hook_args mechanism exists for per-repo scope customization — scopes are centralized in the hook package
50+
51+
### Project Structure Notes
52+
53+
- `pre-commit-conventional-commits/` — source of truth for scope validation
54+
- `conventional_commits/config.py` — VALID_SCOPES frozenset
55+
- `conventional_commits/check.py` — regex + validation logic
56+
- `tests/test_check.py` — parametrized acceptance tests
57+
- `tests/test_config.py` — config validation tests
58+
- Downstream consumers all use identical hook config block (no per-repo overrides)
59+
60+
### References
61+
62+
- [Source: pre-commit-conventional-commits/conventional_commits/config.py] — VALID_SCOPES definition
63+
- [Source: pre-commit-conventional-commits/conventional_commits/check.py] — validation logic
64+
- [Source: dev-toolchain/.pre-commit-config.yaml] — rev: v1.0.0
65+
- [Source: github-repo-template/.pre-commit-config.yaml] — rev: v1.0.0
66+
- [Source: gitlab-repo-template/.pre-commit-config.yaml] — rev: v1.0.0
67+
- [Source: epics.md#Story 4.5] — acceptance criteria
68+
69+
## Dev Agent Record
70+
71+
### Agent Model Used
72+
73+
### Debug Log References
74+
75+
### Completion Notes List
76+
77+
### File List

_bmad-output/implementation-artifacts/sprint-status.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ development_status:
4848
1-5-write-makefile-contract-and-readme: done
4949
epic-1-retrospective: optional
5050

51-
epic-2: done
51+
epic-2: in-progress
5252
2-1-initialize-repository-with-multi-stage-dockerfile-and-shared-libraries: done
5353
2-2-python-tooling-install-script: done
5454
2-3-bash-tooling-install-script: done
@@ -58,6 +58,7 @@ development_status:
5858
2-7-multi-arch-build-and-ghcr-publishing: done
5959
2-8-automated-weekly-builds: done
6060
2-9-container-self-validation: done
61+
2-10-cut-dev-toolchain-release: ready-for-dev
6162
epic-2-retrospective: optional
6263

6364
epic-3: done
@@ -68,11 +69,12 @@ development_status:
6869
3-5-implement-make-check-orchestration: done
6970
epic-3-retrospective: optional
7071

71-
epic-4: done
72+
epic-4: in-progress
7273
4-1-verify-and-update-conventional-commits-hook: done
7374
4-2-configure-language-appropriate-linting-and-formatting-hooks: done
7475
4-3-add-gitleaks-and-terraform-docs-hooks: done
7576
4-4-create-make-install-hooks-target: done
77+
4-5-update-conventional-commit-scopes: ready-for-dev
7678
epic-4-retrospective: optional
7779

7880
epic-5: done

_bmad-output/planning-artifacts/epics.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -941,7 +941,7 @@ So that commits for Ruby, Go, JavaScript, Rust, and new workflow scopes are not
941941

942942
**Repos:** pre-commit-conventional-commits, dev-toolchain, github-repo-template, gitlab-repo-template
943943

944-
### Story 2.6: Cut Dev-Toolchain Release for Post-v1.5.0 Features
944+
### Story 2.10: Cut Dev-Toolchain Release for Post-v1.5.0 Features
945945

946946
As a maintainer,
947947
I want to cut a proper minor release for all features merged since v1.5.0,
@@ -960,3 +960,4 @@ So that the published container image includes Rust, Terragrunt, fix target, pre
960960

961961
**Repos:** dev-toolchain
962962
**Depends on:** Story 4.5 (so the release commit uses the correct scope)
963+
**Story ID:** 2.10 (numbering continues after original Epic 2 stories 2.1–2.9)

0 commit comments

Comments
 (0)