Skip to content

Sync template: release-asset handoff, merge-bot concurrency, governance - #344

Merged
ptr727 merged 15 commits into
developfrom
chore/sync-template
Jun 25, 2026
Merged

Sync template: release-asset handoff, merge-bot concurrency, governance#344
ptr727 merged 15 commits into
developfrom
chore/sync-template

Conversation

@ptr727

@ptr727 ptr727 commented Jun 24, 2026

Copy link
Copy Markdown
Owner

Re-syncs this repo's carried governance/config artifacts and CI orchestration to the current ptr727/ProjectTemplate (template-convergence barrier), and folds in this repo's task list. Held for maintainer end-gate review - do not auto-merge.

What this does

  • Carried artifacts re-synced to the template (adapting only the sanctioned placeholders): AGENTS.md "PR Review Etiquette", .github/copilot-instructions.md, .markdownlint-cli2.jsonc, .editorconfig, .gitattributes, and CODESTYLE.md. The carried files are byte-for-byte the template's except for the documented adaptations below. Carried workflow YAML stays CRLF to match the template's checked-in form (per .editorconfig).
  • CODESTYLE.md carried whole (General + .NET + Python). Only the .NET section is consumed here; the Python section is inert but kept so re-sync stays a wholesale replace.
  • Orchestration workflows aligned with the template:
    • build-release-task.yml / build-nugetlibrary-task.yml: github-release decoupled from the build job; the download collects by pattern: release-asset-${{ inputs.branch }}-* + merge-multiple: true with fail_on_unmatched_files: true; the NuGet upload is renamed to release-asset-<branch>-nugetlibrary and the unused artifact-id output dropped; adds the main-only prerelease-suffix backstop.
    • merge-bot-pull-request.yml: concurrency keyed per-PR (github.event.pull_request.number) so bot PRs against the same base queue independently.
    • publish-release.yml: dispatch-from-default-branch guard.
    • test-pull-request.yml: terminal cleanup-artifacts job (needs: [smoke-build]), independent of check-workflow-status so housekeeping never gates the required merge check.

Documented adaptations (for review)

These are the only intentional deviations from the template; everything else matches it. Sourced from AGENTS.md "Template Adaptations".

  • NuGet-only target set. No Docker, executable, PyPI, or codegen targets, so the corresponding build-*-task.yml / run-codegen-*.yml workflows are absent and the merge-bot carries only the Dependabot path. publish-release.yml keeps its repo-specific per-branch date-badge matrix and omits the template's PyPI/Docker jobs.
  • Husky-driven clean-compile as the CI style gate. The template lints style directly in CI; this repo wires Husky.Net as a local pre-commit gate and runs the same CSharpier + dotnet format checks in CI via dotnet husky run, so the local gate and CI run identical commands. Sanctioned by CODESTYLE.md "Clean-Compile Verification".
  • .husky/pre-commit LF pin. .editorconfig adds a [.husky/pre-commit] LF block and .gitattributes adds .husky/pre-commit text eol=lf (the template's [*.sh] / *.sh rules do not match the extensionless hook). Required because this repo ships the Husky hook.
  • Brownfield analyzer relaxations. A pre-existing set of analyzer rules is relaxed to suggestion in .editorconfig (and IL3058 via NoWarn) to keep the published public API stable; each is documented inline.

Validation: actionlint clean, markdownlint 0 errors, carried-config diffs vs the template are EOL/adaptation-only.

Copilot AI review requested due to automatic review settings June 24, 2026 15:52

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Re-syncs this repo’s carried governance/config artifacts and GitHub Actions orchestration workflows to match the upstream ProjectTemplate, with a focus on making release asset collection target-agnostic, improving merge-bot concurrency behavior, and tightening release/publish guardrails.

Changes:

  • Update release orchestration to upload/download release assets via a release-asset-<branch>-* artifact naming pattern and enforce missing-asset failures during GitHub release creation.
  • Adjust merge-bot workflow concurrency to queue per-PR (by PR number) rather than serializing all bot PRs per base branch.
  • Refresh carried governance/docs and line-ending/lint configuration (AGENTS/CODESTYLE guidance, .editorconfig/.gitattributes, markdownlint config).

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
CODESTYLE.md Adds guidance clarifying that local commit/pre-commit gates are an acceptable derived-repo choice (CI remains authoritative).
AGENTS.md Adds a “Template Adaptations” section and strengthens the merge gate / review-loop governance language.
.markdownlint-cli2.jsonc Clarifies MD060 policy in comments (rule remains disabled).
.github/workflows/test-pull-request.yml Adds a terminal best-effort artifact cleanup job so housekeeping does not gate required status checks.
.github/workflows/publish-release.yml Adds a workflow_dispatch guard to require dispatch from the default branch to avoid mis-versioning.
.github/workflows/merge-bot-pull-request.yml Changes concurrency grouping to per-PR to avoid serializing independent bot PRs.
.github/workflows/build-release-task.yml Downloads release assets by pattern and makes GitHub release creation fail on unmatched files; adds a main-only prerelease-suffix backstop.
.github/workflows/build-nugetlibrary-task.yml Renames uploaded artifact to the release-asset-<branch>-* convention, drops unused artifact-id outputs, and reduces retention.
.gitattributes Pins *.sh and Dockerfiles to LF via git attributes to prevent CRLF execution breakage.
.editorconfig Moves to per-filetype EOL governance (including Dockerfiles/JSON) and adds some root-level C#/ReSharper settings.

Comment thread .editorconfig
Copilot AI review requested due to automatic review settings June 24, 2026 17:31

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 7 comments.

Comment thread CODESTYLE.md Outdated
Comment thread CODESTYLE.md Outdated
Comment thread CODESTYLE.md Outdated
Comment thread CODESTYLE.md Outdated
Comment thread CODESTYLE.md Outdated
Comment thread .editorconfig
Comment thread .editorconfig

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated no new comments.

@ptr727
ptr727 requested a review from Copilot June 24, 2026 18:43
Copilot stopped reviewing on behalf of ptr727 due to an error June 24, 2026 19:04

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 5 comments.

Comment thread CODESTYLE.md Outdated
Comment thread .editorconfig
Comment thread .editorconfig
Comment thread CODESTYLE.md
Comment thread CODESTYLE.md Outdated
The template's CODESTYLE.md is now fully portable (hook/gate text,
extension-method form, and clean-compile wording no longer assume a
no-hooks model). Re-carry it byte-identical (modulo CRLF) so the
hook-conflict, XML-comment, and extension-syntax review threads resolve
against the upstream source rather than diverging this copy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 requested a review from Copilot June 25, 2026 00:36
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 00:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.

Comment thread .editorconfig
Comment thread .editorconfig
Comment thread CODESTYLE.md
Comment thread CODESTYLE.md
ptr727 and others added 2 commits June 24, 2026 18:44
The genericized CODESTYLE has no project-folder list / InternalsVisibleTo names to
hand-adapt; re-sync is a clean wholesale overwrite.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 25, 2026 01:51

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.

Comment thread CODESTYLE.md
Comment thread CODESTYLE.md
Comment thread CODESTYLE.md Outdated
ptr727 and others added 2 commits June 24, 2026 19:12
…' wording)

The template carries CODESTYLE.md whole; unused-language sections stay inert. (issue #208)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Carry the template's best-effort artifact-cleanup job so publish-run artifacts
don't accumulate against the account-wide storage quota. (issue #208)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 25, 2026 02:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

CODESTYLE.md:301

  • This guide states tests use "xUnit with AwesomeAssertions" and shows actual.Should().Be(...), but the repo doesn't reference AwesomeAssertions anywhere (Directory.Packages.props and UtilitiesTests only use Assert.*). This is misleading for contributors and conflicts with the repo's actual test conventions.
1. **Framework**: xUnit with AwesomeAssertions

   ```csharp
   [Fact]
   public void MethodName_Scenario_ExpectedBehavior()

Comment thread CODESTYLE.md

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.

Comment thread .markdownlint-cli2.jsonc
- .gitattributes header: distinguish editor guidance from git enforcement
- CODESTYLE: intro made conditional (any .NET/Python project(s))
- AGENTS: publish step covers opted-in publish-on-merge trigger
- build-datebadge BYOB: pin v1 floating tag to v1.3.0 SHA 24f4642

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 requested a review from Copilot June 25, 2026 03:34
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 03:54

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated 5 comments.

Comment thread CODESTYLE.md
Comment thread .editorconfig
Comment thread .editorconfig
Comment thread .github/workflows/test-pull-request.yml
Comment thread .github/workflows/test-pull-request.yml
@ptr727
ptr727 merged commit f93f57a into develop Jun 25, 2026
7 of 8 checks passed
@ptr727
ptr727 deleted the chore/sync-template branch June 25, 2026 17:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants