Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .backlog/tasks/task-1 - Add-PR-template-and-issue-templates.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,14 @@ Create GitHub PR and issue templates to guide contributors:
- [x] #3 .github/ISSUE_TEMPLATE/2-feature-request.yml exists as a GitHub issue form
- [x] #4 .github/ISSUE_TEMPLATE/config.yml exists with blank_issues_enabled: false
<!-- AC:END -->

## Final Summary

<!-- SECTION:FINAL_SUMMARY:BEGIN -->
Created all four GitHub community health files under `.github/`:

- `pull_request_template.md` — contributor checklist covering tests, build, conventional commit format, and docs
- `ISSUE_TEMPLATE/1-bug-report.yml` — structured GitHub issue form for bug reports
- `ISSUE_TEMPLATE/2-feature-request.yml` — structured GitHub issue form for feature requests
- `ISSUE_TEMPLATE/config.yml` — disables blank issues (`blank_issues_enabled: false`)
<!-- SECTION:FINAL_SUMMARY:END -->
11 changes: 11 additions & 0 deletions .backlog/tasks/task-3 - Enforce-Conventional-Commits.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,14 @@ Updated `CONTRIBUTING.md` to use a single Getting Started bootstrap (`dotnet too

Validated behavior locally: valid messages pass and invalid messages fail with non-zero exit.
<!-- SECTION:NOTES:END -->

## Final Summary

<!-- SECTION:FINAL_SUMMARY:BEGIN -->
Enforced Conventional Commits using Husky.NET + CommitLint.Net via the repository-local .NET tool manifest (`dotnet-tools.json`). Key deliverables:

- `commit-message-config.json` — Conventional Commits rules with allowed types
- `.husky/commit-msg` + `.husky/task-runner.json` — local git hook that blocks non-conforming messages at commit time
- `.github/workflows/commit-message.yml` — CI mirror that validates the latest commit message using the same config, catching any hook bypasses
- `CONTRIBUTING.md` updated — single bootstrap (`dotnet tool restore` + `dotnet husky install`) activates all local tools and hooks after cloning
<!-- SECTION:FINAL_SUMMARY:END -->
25 changes: 20 additions & 5 deletions .backlog/tasks/task-4 - Add-AI-powered-PR-review.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
---
id: TASK-4
title: Add AI-powered PR review
status: In Progress
status: Done
assignee:
- claude
- piotrzajac
created_date: '2026-04-07 20:56'
updated_date: '2026-04-10 14:24'
updated_date: '2026-04-12 20:20'
labels:
- ci-cd
- dx
Expand All @@ -22,7 +22,22 @@ Integrate an AI-powered PR review tool (e.g. CodeRabbit, Reviewpad, or similar)

## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 AI reviewer posts a summary comment on every PR automatically
- [ ] #2 Tool is configured to understand project conventions (reference AGENTS.md or equivalent)
- [ ] #3 Licensing and cost are acceptable for a public OSS repo
- [x] #1 AI reviewer posts a summary comment on every PR automatically
- [x] #2 Tool is configured to understand project conventions (reference AGENTS.md or equivalent)
- [x] #3 Licensing and cost are acceptable for a public OSS repo
Comment thread
piotrzajac marked this conversation as resolved.
<!-- AC:END -->

## Final Summary

<!-- SECTION:FINAL_SUMMARY:BEGIN -->
Selected and configured **CodeRabbit** — free for public OSS repos, no infrastructure to maintain.

Delivered `.coderabbit.yaml` at the repo root with:

- `auto_review.enabled: true` + `high_level_summary: true` — automatic PR summary comment on every PR (AC #1)
- `profile: "chill"` — non-blocking review style that complements rather than replaces human review
- `auto_apply_labels: true` — automatic PR labelling

AC #3 (OSS licensing) is satisfied — CodeRabbit is free for public repos.
AC #2 (project conventions awareness) was intentionally skipped by the team; the tool autodiscovers `AGENTS.md` but no explicit `reviews.instructions` were added.
<!-- SECTION:FINAL_SUMMARY:END -->
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,14 @@ Added `commit-message` configuration to both entries in `.github/dependabot.yml`
<!-- SECTION:NOTES:BEGIN -->
`commit-message.include: "scope"` in Dependabot produces `chore(deps):` or `chore(deps-dev):` based on the dependency type — it does NOT use the ecosystem name as the scope. To get `chore(nuget):` and `chore(github-actions):`, the scope must be baked directly into the `prefix` value and `include: "scope"` must be omitted.
<!-- SECTION:NOTES:END -->

## Final Summary

<!-- SECTION:FINAL_SUMMARY:BEGIN -->
Updated `.github/dependabot.yml` to add `commit-message` configuration to both ecosystem entries:

- NuGet entry: `prefix: "chore(nuget)"` → produces `chore(nuget): bump <package> from X to Y`
- GitHub Actions entry: `prefix: "chore(github-actions)"` → produces `chore(github-actions): bump <action> from X to Y`

`include: "scope"` was intentionally omitted — that option produces `deps`/`deps-dev` as scope (dependency-type based), not the ecosystem name. Embedding the scope in `prefix` is the only way to get ecosystem-specific scopes that satisfy the commit-message CI workflow introduced in TASK-3.
<!-- SECTION:FINAL_SUMMARY:END -->
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,9 @@ In `.github/workflows/test-mutations.yml`, replace the multi-line PowerShell "

The old step used `dotnet new tool-manifest` which would create `.config/dotnet-tools.json` in the runner's working directory — a different path from the repo-root `dotnet-tools.json` — causing a manifest collision.
<!-- SECTION:NOTES:END -->

## Final Summary

<!-- SECTION:FINAL_SUMMARY:BEGIN -->
Updated `.github/workflows/test-mutations.yml` to replace the two-step "install stryker.net" block (`dotnet new tool-manifest` + `dotnet tool install --local dotnet-stryker`) with a single `dotnet tool restore` step. This restores all three tools declared in the repo-level manifest (Husky, CommitLint.Net, dotnet-stryker) in one consistent step, matching the bootstrap sequence documented in `CONTRIBUTING.md`. The mutation-testing invocation step (`dotnet tool run dotnet-stryker`) was left unchanged.
<!-- SECTION:FINAL_SUMMARY:END -->