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

@ptr727ptr727 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.

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

CopilotAI 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
FileDescription
CODESTYLE.mdAdds guidance clarifying that local commit/pre-commit gates are an acceptable derived-repo choice (CI remains authoritative).
AGENTS.mdAdds a “Template Adaptations” section and strengthens the merge gate / review-loop governance language.
.markdownlint-cli2.jsoncClarifies MD060 policy in comments (rule remains disabled).
.github/workflows/test-pull-request.ymlAdds a terminal best-effort artifact cleanup job so housekeeping does not gate required status checks.
.github/workflows/publish-release.ymlAdds a workflow_dispatch guard to require dispatch from the default branch to avoid mis-versioning.
.github/workflows/merge-bot-pull-request.ymlChanges concurrency grouping to per-PR to avoid serializing independent bot PRs.
.github/workflows/build-release-task.ymlDownloads 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.ymlRenames uploaded artifact to the release-asset-<branch>-* convention, drops unused artifact-id outputs, and reduces retention.
.gitattributesPins *.sh and Dockerfiles to LF via git attributes to prevent CRLF execution breakage.
.editorconfigMoves to per-filetype EOL governance (including Dockerfiles/JSON) and adds some root-level C#/ReSharper settings.

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

CopilotAI 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 threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig

CopilotAI 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 CopilotJune 24, 2026 18:43
Copilot stopped reviewing on behalf of ptr727 due to an error June 24, 2026 19:04

CopilotAI 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 threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig
Comment threadCODESTYLE.md
Comment threadCODESTYLE.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 CopilotJune 25, 2026 00:36
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 00:57

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 01:51

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
Comment threadCODESTYLE.md Outdated
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 02:14

CopilotAI 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 threadCODESTYLE.md

CopilotAI 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 CopilotJune 25, 2026 03:34
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 03:54

CopilotAI 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 threadCODESTYLE.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 developJun 25, 2026
7 of 8 checks passed
@ptr727
ptr727 deleted the chore/sync-template branch June 25, 2026 17:58
Sign up for freeto 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

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
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

@ptr727ptr727 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.

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

CopilotAI 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
FileDescription
CODESTYLE.mdAdds guidance clarifying that local commit/pre-commit gates are an acceptable derived-repo choice (CI remains authoritative).
AGENTS.mdAdds a “Template Adaptations” section and strengthens the merge gate / review-loop governance language.
.markdownlint-cli2.jsoncClarifies MD060 policy in comments (rule remains disabled).
.github/workflows/test-pull-request.ymlAdds a terminal best-effort artifact cleanup job so housekeeping does not gate required status checks.
.github/workflows/publish-release.ymlAdds a workflow_dispatch guard to require dispatch from the default branch to avoid mis-versioning.
.github/workflows/merge-bot-pull-request.ymlChanges concurrency grouping to per-PR to avoid serializing independent bot PRs.
.github/workflows/build-release-task.ymlDownloads 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.ymlRenames uploaded artifact to the release-asset-<branch>-* convention, drops unused artifact-id outputs, and reduces retention.
.gitattributesPins *.sh and Dockerfiles to LF via git attributes to prevent CRLF execution breakage.
.editorconfigMoves to per-filetype EOL governance (including Dockerfiles/JSON) and adds some root-level C#/ReSharper settings.

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

CopilotAI 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 threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig

CopilotAI 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 CopilotJune 24, 2026 18:43
Copilot stopped reviewing on behalf of ptr727 due to an error June 24, 2026 19:04

CopilotAI 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 threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig
Comment threadCODESTYLE.md
Comment threadCODESTYLE.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 CopilotJune 25, 2026 00:36
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 00:57

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 01:51

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
Comment threadCODESTYLE.md Outdated
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 02:14

CopilotAI 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 threadCODESTYLE.md

CopilotAI 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 CopilotJune 25, 2026 03:34
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 03:54

CopilotAI 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 threadCODESTYLE.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 developJun 25, 2026
7 of 8 checks passed
@ptr727
ptr727 deleted the chore/sync-template branch June 25, 2026 17:58
Sign up for freeto 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

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

@ptr727ptr727 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.

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

CopilotAI 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
FileDescription
CODESTYLE.mdAdds guidance clarifying that local commit/pre-commit gates are an acceptable derived-repo choice (CI remains authoritative).
AGENTS.mdAdds a “Template Adaptations” section and strengthens the merge gate / review-loop governance language.
.markdownlint-cli2.jsoncClarifies MD060 policy in comments (rule remains disabled).
.github/workflows/test-pull-request.ymlAdds a terminal best-effort artifact cleanup job so housekeeping does not gate required status checks.
.github/workflows/publish-release.ymlAdds a workflow_dispatch guard to require dispatch from the default branch to avoid mis-versioning.
.github/workflows/merge-bot-pull-request.ymlChanges concurrency grouping to per-PR to avoid serializing independent bot PRs.
.github/workflows/build-release-task.ymlDownloads 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.ymlRenames uploaded artifact to the release-asset-<branch>-* convention, drops unused artifact-id outputs, and reduces retention.
.gitattributesPins *.sh and Dockerfiles to LF via git attributes to prevent CRLF execution breakage.
.editorconfigMoves to per-filetype EOL governance (including Dockerfiles/JSON) and adds some root-level C#/ReSharper settings.

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

CopilotAI 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 threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig

CopilotAI 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 CopilotJune 24, 2026 18:43
Copilot stopped reviewing on behalf of ptr727 due to an error June 24, 2026 19:04

CopilotAI 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 threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig
Comment threadCODESTYLE.md
Comment threadCODESTYLE.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 CopilotJune 25, 2026 00:36
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 00:57

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 01:51

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
Comment threadCODESTYLE.md Outdated
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 02:14

CopilotAI 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 threadCODESTYLE.md

CopilotAI 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 CopilotJune 25, 2026 03:34
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 03:54

CopilotAI 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 threadCODESTYLE.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 developJun 25, 2026
7 of 8 checks passed
@ptr727
ptr727 deleted the chore/sync-template branch June 25, 2026 17:58
Sign up for freeto 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

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

@ptr727ptr727 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.

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

CopilotAI 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
FileDescription
CODESTYLE.mdAdds guidance clarifying that local commit/pre-commit gates are an acceptable derived-repo choice (CI remains authoritative).
AGENTS.mdAdds a “Template Adaptations” section and strengthens the merge gate / review-loop governance language.
.markdownlint-cli2.jsoncClarifies MD060 policy in comments (rule remains disabled).
.github/workflows/test-pull-request.ymlAdds a terminal best-effort artifact cleanup job so housekeeping does not gate required status checks.
.github/workflows/publish-release.ymlAdds a workflow_dispatch guard to require dispatch from the default branch to avoid mis-versioning.
.github/workflows/merge-bot-pull-request.ymlChanges concurrency grouping to per-PR to avoid serializing independent bot PRs.
.github/workflows/build-release-task.ymlDownloads 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.ymlRenames uploaded artifact to the release-asset-<branch>-* convention, drops unused artifact-id outputs, and reduces retention.
.gitattributesPins *.sh and Dockerfiles to LF via git attributes to prevent CRLF execution breakage.
.editorconfigMoves to per-filetype EOL governance (including Dockerfiles/JSON) and adds some root-level C#/ReSharper settings.

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

CopilotAI 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 threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig

CopilotAI 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 CopilotJune 24, 2026 18:43
Copilot stopped reviewing on behalf of ptr727 due to an error June 24, 2026 19:04

CopilotAI 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 threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig
Comment threadCODESTYLE.md
Comment threadCODESTYLE.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 CopilotJune 25, 2026 00:36
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 00:57

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 01:51

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
Comment threadCODESTYLE.md Outdated
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 02:14

CopilotAI 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 threadCODESTYLE.md

CopilotAI 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 CopilotJune 25, 2026 03:34
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 03:54

CopilotAI 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 threadCODESTYLE.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 developJun 25, 2026
7 of 8 checks passed
@ptr727
ptr727 deleted the chore/sync-template branch June 25, 2026 17:58
Sign up for freeto 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

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
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

@ptr727ptr727 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.

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

CopilotAI 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
FileDescription
CODESTYLE.mdAdds guidance clarifying that local commit/pre-commit gates are an acceptable derived-repo choice (CI remains authoritative).
AGENTS.mdAdds a “Template Adaptations” section and strengthens the merge gate / review-loop governance language.
.markdownlint-cli2.jsoncClarifies MD060 policy in comments (rule remains disabled).
.github/workflows/test-pull-request.ymlAdds a terminal best-effort artifact cleanup job so housekeeping does not gate required status checks.
.github/workflows/publish-release.ymlAdds a workflow_dispatch guard to require dispatch from the default branch to avoid mis-versioning.
.github/workflows/merge-bot-pull-request.ymlChanges concurrency grouping to per-PR to avoid serializing independent bot PRs.
.github/workflows/build-release-task.ymlDownloads 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.ymlRenames uploaded artifact to the release-asset-<branch>-* convention, drops unused artifact-id outputs, and reduces retention.
.gitattributesPins *.sh and Dockerfiles to LF via git attributes to prevent CRLF execution breakage.
.editorconfigMoves to per-filetype EOL governance (including Dockerfiles/JSON) and adds some root-level C#/ReSharper settings.

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

CopilotAI 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 threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig

CopilotAI 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 CopilotJune 24, 2026 18:43
Copilot stopped reviewing on behalf of ptr727 due to an error June 24, 2026 19:04

CopilotAI 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 threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig
Comment threadCODESTYLE.md
Comment threadCODESTYLE.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 CopilotJune 25, 2026 00:36
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 00:57

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 01:51

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
Comment threadCODESTYLE.md Outdated
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 02:14

CopilotAI 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 threadCODESTYLE.md

CopilotAI 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 CopilotJune 25, 2026 03:34
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 03:54

CopilotAI 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 threadCODESTYLE.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 developJun 25, 2026
7 of 8 checks passed
@ptr727
ptr727 deleted the chore/sync-template branch June 25, 2026 17:58
Sign up for freeto 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

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

@ptr727ptr727 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.

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

CopilotAI 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
FileDescription
CODESTYLE.mdAdds guidance clarifying that local commit/pre-commit gates are an acceptable derived-repo choice (CI remains authoritative).
AGENTS.mdAdds a “Template Adaptations” section and strengthens the merge gate / review-loop governance language.
.markdownlint-cli2.jsoncClarifies MD060 policy in comments (rule remains disabled).
.github/workflows/test-pull-request.ymlAdds a terminal best-effort artifact cleanup job so housekeeping does not gate required status checks.
.github/workflows/publish-release.ymlAdds a workflow_dispatch guard to require dispatch from the default branch to avoid mis-versioning.
.github/workflows/merge-bot-pull-request.ymlChanges concurrency grouping to per-PR to avoid serializing independent bot PRs.
.github/workflows/build-release-task.ymlDownloads 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.ymlRenames uploaded artifact to the release-asset-<branch>-* convention, drops unused artifact-id outputs, and reduces retention.
.gitattributesPins *.sh and Dockerfiles to LF via git attributes to prevent CRLF execution breakage.
.editorconfigMoves to per-filetype EOL governance (including Dockerfiles/JSON) and adds some root-level C#/ReSharper settings.

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

CopilotAI 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 threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig

CopilotAI 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 CopilotJune 24, 2026 18:43
Copilot stopped reviewing on behalf of ptr727 due to an error June 24, 2026 19:04

CopilotAI 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 threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig
Comment threadCODESTYLE.md
Comment threadCODESTYLE.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 CopilotJune 25, 2026 00:36
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 00:57

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 01:51

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
Comment threadCODESTYLE.md Outdated
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 02:14

CopilotAI 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 threadCODESTYLE.md

CopilotAI 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 CopilotJune 25, 2026 03:34
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 03:54

CopilotAI 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 threadCODESTYLE.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 developJun 25, 2026
7 of 8 checks passed
@ptr727
ptr727 deleted the chore/sync-template branch June 25, 2026 17:58
Sign up for freeto 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

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

@ptr727ptr727 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.

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

CopilotAI 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
FileDescription
CODESTYLE.mdAdds guidance clarifying that local commit/pre-commit gates are an acceptable derived-repo choice (CI remains authoritative).
AGENTS.mdAdds a “Template Adaptations” section and strengthens the merge gate / review-loop governance language.
.markdownlint-cli2.jsoncClarifies MD060 policy in comments (rule remains disabled).
.github/workflows/test-pull-request.ymlAdds a terminal best-effort artifact cleanup job so housekeeping does not gate required status checks.
.github/workflows/publish-release.ymlAdds a workflow_dispatch guard to require dispatch from the default branch to avoid mis-versioning.
.github/workflows/merge-bot-pull-request.ymlChanges concurrency grouping to per-PR to avoid serializing independent bot PRs.
.github/workflows/build-release-task.ymlDownloads 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.ymlRenames uploaded artifact to the release-asset-<branch>-* convention, drops unused artifact-id outputs, and reduces retention.
.gitattributesPins *.sh and Dockerfiles to LF via git attributes to prevent CRLF execution breakage.
.editorconfigMoves to per-filetype EOL governance (including Dockerfiles/JSON) and adds some root-level C#/ReSharper settings.

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

CopilotAI 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 threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig

CopilotAI 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 CopilotJune 24, 2026 18:43
Copilot stopped reviewing on behalf of ptr727 due to an error June 24, 2026 19:04

CopilotAI 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 threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig
Comment threadCODESTYLE.md
Comment threadCODESTYLE.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 CopilotJune 25, 2026 00:36
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 00:57

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 01:51

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
Comment threadCODESTYLE.md Outdated
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 02:14

CopilotAI 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 threadCODESTYLE.md

CopilotAI 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 CopilotJune 25, 2026 03:34
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 03:54

CopilotAI 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 threadCODESTYLE.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 developJun 25, 2026
7 of 8 checks passed
@ptr727
ptr727 deleted the chore/sync-template branch June 25, 2026 17:58
Sign up for freeto 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

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
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

@ptr727ptr727 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.

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

CopilotAI 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
FileDescription
CODESTYLE.mdAdds guidance clarifying that local commit/pre-commit gates are an acceptable derived-repo choice (CI remains authoritative).
AGENTS.mdAdds a “Template Adaptations” section and strengthens the merge gate / review-loop governance language.
.markdownlint-cli2.jsoncClarifies MD060 policy in comments (rule remains disabled).
.github/workflows/test-pull-request.ymlAdds a terminal best-effort artifact cleanup job so housekeeping does not gate required status checks.
.github/workflows/publish-release.ymlAdds a workflow_dispatch guard to require dispatch from the default branch to avoid mis-versioning.
.github/workflows/merge-bot-pull-request.ymlChanges concurrency grouping to per-PR to avoid serializing independent bot PRs.
.github/workflows/build-release-task.ymlDownloads 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.ymlRenames uploaded artifact to the release-asset-<branch>-* convention, drops unused artifact-id outputs, and reduces retention.
.gitattributesPins *.sh and Dockerfiles to LF via git attributes to prevent CRLF execution breakage.
.editorconfigMoves to per-filetype EOL governance (including Dockerfiles/JSON) and adds some root-level C#/ReSharper settings.

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

CopilotAI 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 threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig

CopilotAI 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 CopilotJune 24, 2026 18:43
Copilot stopped reviewing on behalf of ptr727 due to an error June 24, 2026 19:04

CopilotAI 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 threadCODESTYLE.md Outdated
Comment thread.editorconfig
Comment thread.editorconfig
Comment threadCODESTYLE.md
Comment threadCODESTYLE.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 CopilotJune 25, 2026 00:36
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 00:57

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 01:51

CopilotAI 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 threadCODESTYLE.md
Comment threadCODESTYLE.md
Comment threadCODESTYLE.md Outdated
ptr727and 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>
CopilotAI review requested due to automatic review settings June 25, 2026 02:14

CopilotAI 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 threadCODESTYLE.md

CopilotAI 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 CopilotJune 25, 2026 03:34
Copilot stopped reviewing on behalf of ptr727 due to an error June 25, 2026 03:54

CopilotAI 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 threadCODESTYLE.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 developJun 25, 2026
7 of 8 checks passed
@ptr727
ptr727 deleted the chore/sync-template branch June 25, 2026 17:58
Sign up for freeto 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

@ptr727