Replace template CI/CD with branch-scoped self-publishing model - #349

Merged
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd
Jun 28, 2026
Merged

Replace template CI/CD with branch-scoped self-publishing model#349
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Ports the branch-scoped self-publishing CI/CD from ptr727/LanguageTags, replacing the ProjectTemplate two-phase model. main publishes stable releases and develop publishes prereleases; each branch publishes itself when a shipped input changes. Utilities has no codegen, so the generator workflows and merge-bot codegen job are omitted.

Workflows

  • Remove build-datebadge-task.yml, build-nugetlibrary-task.yml, get-version-task.yml.
  • Add validate-task.yml (unit tests + CSharpier / dotnet format style / markdownlint / cspell / actionlint).
  • Rework build-release-task.yml (NBGV, keyless OIDC NuGet/login push, flat Utilities.7z asset), publish-release.yml (push/dispatch self-publisher with a shipped-input inclusion list), test-pull-request.yml (validate + smoke-build + Check pull request workflow status job aggregator), and merge-bot-pull-request.yml (Dependabot auto-merge only).

Config and docs

  • Add WORKFLOW.md (canonical CI/CD spec, codegen sections removed) and repo-config/ (rulesets + settings as code, delete_branch_on_merge off).
  • Add cspell.json as the single spell-check source; reconcile AGENTS.md, CODESTYLE.md, .github/copilot-instructions.md, .github/dependabot.yml, .vscode/tasks.json, and Utilities.slnx.
  • Bump version floor 3.5 -> 3.6; refresh README.md and HISTORY.md.

Verified locally: actionlint, markdownlint, cspell, YAML/JSON parse, bash -n configure.sh, EOL per .editorconfig, and Husky clean-compile.

🤖 Generated with Claude Code

Port the branch-scoped self-publishing pipeline from ptr727/LanguageTags,
replacing the ProjectTemplate two-phase model. main publishes stable
releases and develop publishes prereleases; each branch publishes itself
when a shipped input changes.
- Workflows: drop build-datebadge-task, build-nugetlibrary-task, and
get-version-task; add validate-task (unit tests + lint); rework
build-release-task (NBGV, keyless OIDC NuGet push, flat Utilities.7z),
publish-release (push/dispatch self-publisher), test-pull-request
(validate + smoke-build + required aggregator), and merge-bot
(Dependabot only, no codegen job).
- Add WORKFLOW.md (canonical CI/CD spec) and repo-config/ (rulesets and
settings as code; delete_branch_on_merge off).
- Add cspell.json as the single spell-check source; reconcile AGENTS,
CODESTYLE, copilot-instructions, dependabot, tasks.json, and the slnx.
- Bump version floor 3.5 -> 3.6; update README and HISTORY.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 03:11

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

Replaces the repo's CI/CD pipeline with a branch-scoped self-publishing model: main publishes stable releases, develop publishes prereleases, and publishes are triggered only by shipped-input changes (or manual dispatch). It also codifies the workflow contract and required GitHub configuration as documentation + config-as-code.

Changes:

  • Introduces a new workflow architecture: reusable validate-task, ref-scoped CI on push, and a self-publishing publish-release triggered by shipped-input path inclusions.
  • Reworks the release build to use a single build/release task with NBGV outputs threaded through, OIDC NuGet publishing via NuGet/login, and a flat Utilities.7z release asset.
  • Adds/updates repo documentation and configuration artifacts (WORKFLOW.md, repo-config/, cspell.json) and bumps the version floor to 3.6.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
WORKFLOW.mdAdds the canonical CI/CD contract, architecture, and audit methodology for workflows and repo configuration.
version.jsonBumps version floor from 3.5 to 3.6.
Utilities.slnxUpdates solution items to include new docs/config and new workflow; removes deleted workflows.
Utilities.code-workspaceRemoves embedded CSpell word list in favor of repo-root cspell.json.
repo-config/settings.jsonCodifies repository settings (merge methods, auto-merge, delete-branch-on-merge off).
repo-config/ruleset-main.jsonAdds config-as-code for the main branch ruleset (merge-only, required check, signatures).
repo-config/ruleset-develop.jsonAdds config-as-code for the develop branch ruleset (squash-only + linear history, required check, signatures).
repo-config/README.mdDocuments repo-config purpose, usage, and lockstep requirements for required-check renames.
repo-config/configure.shAdds an idempotent apply/check script to audit and enforce repo settings/rulesets/secrets presence.
README.mdUpdates project README to reflect new distribution links, badges, and CI/CD/release model summary.
HISTORY.mdAdds v3.6 release notes focused on CI/CD changes and new workflow artifacts.
cspell.jsonAdds a centralized CSpell configuration and dictionary.
CODESTYLE.mdUpdates coding-style guide to align with the new validation model (CI lint gate + cspell.json).
AGENTS.mdRefactors agent guidance to point to WORKFLOW.md for CI/CD and repo-config for enforced GitHub settings.
.vscode/tasks.jsonCleans up task header comments and clarifies which tasks form the clean-compile set.
.github/workflows/validate-task.ymlAdds reusable validation task: unit tests + CSharpier/dotnet-format/markdownlint/cspell/actionlint.
.github/workflows/test-pull-request.ymlReworks CI to run on push (head-resolved reusable workflows) and produces the required aggregator job.
.github/workflows/publish-release.ymlReworks publisher to be branch-scoped and shipped-input-triggered; gates publish on validate-task.
.github/workflows/merge-bot-pull-request.ymlSimplifies merge-bot to Dependabot auto-merge only (no semver-major exception), with App-token strategy.
.github/workflows/get-version-task.ymlRemoves old reusable version task (inlined into build-release-task).
.github/workflows/build-release-task.ymlReworks the core build/version/publish logic (NBGV, OIDC NuGet push, Utilities.7z, artifact lifecycle).
.github/workflows/build-nugetlibrary-task.ymlRemoves old build task (superseded by build-release-task).
.github/workflows/build-datebadge-task.ymlRemoves date-badge workflow/task (no longer part of the contract).
.github/dependabot.ymlUpdates rationale comments; preserves dual-target main/develop Dependabot strategy.
.github/copilot-instructions.mdMinor wording updates to reflect CODESTYLE.md section framing.

Comment thread.github/workflows/build-release-task.yml
Comment thread.github/workflows/test-pull-request.yml
@ptr727
ptr727 merged commit fcd4f92 into developJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the feature/branch-scoped-cicd branch June 28, 2026 04:30
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

Replace template CI/CD with branch-scoped self-publishing model - #349

Merged
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd
Jun 28, 2026
Merged

Replace template CI/CD with branch-scoped self-publishing model#349
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Ports the branch-scoped self-publishing CI/CD from ptr727/LanguageTags, replacing the ProjectTemplate two-phase model. main publishes stable releases and develop publishes prereleases; each branch publishes itself when a shipped input changes. Utilities has no codegen, so the generator workflows and merge-bot codegen job are omitted.

Workflows

  • Remove build-datebadge-task.yml, build-nugetlibrary-task.yml, get-version-task.yml.
  • Add validate-task.yml (unit tests + CSharpier / dotnet format style / markdownlint / cspell / actionlint).
  • Rework build-release-task.yml (NBGV, keyless OIDC NuGet/login push, flat Utilities.7z asset), publish-release.yml (push/dispatch self-publisher with a shipped-input inclusion list), test-pull-request.yml (validate + smoke-build + Check pull request workflow status job aggregator), and merge-bot-pull-request.yml (Dependabot auto-merge only).

Config and docs

  • Add WORKFLOW.md (canonical CI/CD spec, codegen sections removed) and repo-config/ (rulesets + settings as code, delete_branch_on_merge off).
  • Add cspell.json as the single spell-check source; reconcile AGENTS.md, CODESTYLE.md, .github/copilot-instructions.md, .github/dependabot.yml, .vscode/tasks.json, and Utilities.slnx.
  • Bump version floor 3.5 -> 3.6; refresh README.md and HISTORY.md.

Verified locally: actionlint, markdownlint, cspell, YAML/JSON parse, bash -n configure.sh, EOL per .editorconfig, and Husky clean-compile.

🤖 Generated with Claude Code

Port the branch-scoped self-publishing pipeline from ptr727/LanguageTags,
replacing the ProjectTemplate two-phase model. main publishes stable
releases and develop publishes prereleases; each branch publishes itself
when a shipped input changes.
- Workflows: drop build-datebadge-task, build-nugetlibrary-task, and
get-version-task; add validate-task (unit tests + lint); rework
build-release-task (NBGV, keyless OIDC NuGet push, flat Utilities.7z),
publish-release (push/dispatch self-publisher), test-pull-request
(validate + smoke-build + required aggregator), and merge-bot
(Dependabot only, no codegen job).
- Add WORKFLOW.md (canonical CI/CD spec) and repo-config/ (rulesets and
settings as code; delete_branch_on_merge off).
- Add cspell.json as the single spell-check source; reconcile AGENTS,
CODESTYLE, copilot-instructions, dependabot, tasks.json, and the slnx.
- Bump version floor 3.5 -> 3.6; update README and HISTORY.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 03:11

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

Replaces the repo's CI/CD pipeline with a branch-scoped self-publishing model: main publishes stable releases, develop publishes prereleases, and publishes are triggered only by shipped-input changes (or manual dispatch). It also codifies the workflow contract and required GitHub configuration as documentation + config-as-code.

Changes:

  • Introduces a new workflow architecture: reusable validate-task, ref-scoped CI on push, and a self-publishing publish-release triggered by shipped-input path inclusions.
  • Reworks the release build to use a single build/release task with NBGV outputs threaded through, OIDC NuGet publishing via NuGet/login, and a flat Utilities.7z release asset.
  • Adds/updates repo documentation and configuration artifacts (WORKFLOW.md, repo-config/, cspell.json) and bumps the version floor to 3.6.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
WORKFLOW.mdAdds the canonical CI/CD contract, architecture, and audit methodology for workflows and repo configuration.
version.jsonBumps version floor from 3.5 to 3.6.
Utilities.slnxUpdates solution items to include new docs/config and new workflow; removes deleted workflows.
Utilities.code-workspaceRemoves embedded CSpell word list in favor of repo-root cspell.json.
repo-config/settings.jsonCodifies repository settings (merge methods, auto-merge, delete-branch-on-merge off).
repo-config/ruleset-main.jsonAdds config-as-code for the main branch ruleset (merge-only, required check, signatures).
repo-config/ruleset-develop.jsonAdds config-as-code for the develop branch ruleset (squash-only + linear history, required check, signatures).
repo-config/README.mdDocuments repo-config purpose, usage, and lockstep requirements for required-check renames.
repo-config/configure.shAdds an idempotent apply/check script to audit and enforce repo settings/rulesets/secrets presence.
README.mdUpdates project README to reflect new distribution links, badges, and CI/CD/release model summary.
HISTORY.mdAdds v3.6 release notes focused on CI/CD changes and new workflow artifacts.
cspell.jsonAdds a centralized CSpell configuration and dictionary.
CODESTYLE.mdUpdates coding-style guide to align with the new validation model (CI lint gate + cspell.json).
AGENTS.mdRefactors agent guidance to point to WORKFLOW.md for CI/CD and repo-config for enforced GitHub settings.
.vscode/tasks.jsonCleans up task header comments and clarifies which tasks form the clean-compile set.
.github/workflows/validate-task.ymlAdds reusable validation task: unit tests + CSharpier/dotnet-format/markdownlint/cspell/actionlint.
.github/workflows/test-pull-request.ymlReworks CI to run on push (head-resolved reusable workflows) and produces the required aggregator job.
.github/workflows/publish-release.ymlReworks publisher to be branch-scoped and shipped-input-triggered; gates publish on validate-task.
.github/workflows/merge-bot-pull-request.ymlSimplifies merge-bot to Dependabot auto-merge only (no semver-major exception), with App-token strategy.
.github/workflows/get-version-task.ymlRemoves old reusable version task (inlined into build-release-task).
.github/workflows/build-release-task.ymlReworks the core build/version/publish logic (NBGV, OIDC NuGet push, Utilities.7z, artifact lifecycle).
.github/workflows/build-nugetlibrary-task.ymlRemoves old build task (superseded by build-release-task).
.github/workflows/build-datebadge-task.ymlRemoves date-badge workflow/task (no longer part of the contract).
.github/dependabot.ymlUpdates rationale comments; preserves dual-target main/develop Dependabot strategy.
.github/copilot-instructions.mdMinor wording updates to reflect CODESTYLE.md section framing.

Comment thread.github/workflows/build-release-task.yml
Comment thread.github/workflows/test-pull-request.yml
@ptr727
ptr727 merged commit fcd4f92 into developJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the feature/branch-scoped-cicd branch June 28, 2026 04:30
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

Replace template CI/CD with branch-scoped self-publishing model - #349

Merged
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd
Jun 28, 2026
Merged

Replace template CI/CD with branch-scoped self-publishing model#349
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Ports the branch-scoped self-publishing CI/CD from ptr727/LanguageTags, replacing the ProjectTemplate two-phase model. main publishes stable releases and develop publishes prereleases; each branch publishes itself when a shipped input changes. Utilities has no codegen, so the generator workflows and merge-bot codegen job are omitted.

Workflows

  • Remove build-datebadge-task.yml, build-nugetlibrary-task.yml, get-version-task.yml.
  • Add validate-task.yml (unit tests + CSharpier / dotnet format style / markdownlint / cspell / actionlint).
  • Rework build-release-task.yml (NBGV, keyless OIDC NuGet/login push, flat Utilities.7z asset), publish-release.yml (push/dispatch self-publisher with a shipped-input inclusion list), test-pull-request.yml (validate + smoke-build + Check pull request workflow status job aggregator), and merge-bot-pull-request.yml (Dependabot auto-merge only).

Config and docs

  • Add WORKFLOW.md (canonical CI/CD spec, codegen sections removed) and repo-config/ (rulesets + settings as code, delete_branch_on_merge off).
  • Add cspell.json as the single spell-check source; reconcile AGENTS.md, CODESTYLE.md, .github/copilot-instructions.md, .github/dependabot.yml, .vscode/tasks.json, and Utilities.slnx.
  • Bump version floor 3.5 -> 3.6; refresh README.md and HISTORY.md.

Verified locally: actionlint, markdownlint, cspell, YAML/JSON parse, bash -n configure.sh, EOL per .editorconfig, and Husky clean-compile.

🤖 Generated with Claude Code

Port the branch-scoped self-publishing pipeline from ptr727/LanguageTags,
replacing the ProjectTemplate two-phase model. main publishes stable
releases and develop publishes prereleases; each branch publishes itself
when a shipped input changes.
- Workflows: drop build-datebadge-task, build-nugetlibrary-task, and
get-version-task; add validate-task (unit tests + lint); rework
build-release-task (NBGV, keyless OIDC NuGet push, flat Utilities.7z),
publish-release (push/dispatch self-publisher), test-pull-request
(validate + smoke-build + required aggregator), and merge-bot
(Dependabot only, no codegen job).
- Add WORKFLOW.md (canonical CI/CD spec) and repo-config/ (rulesets and
settings as code; delete_branch_on_merge off).
- Add cspell.json as the single spell-check source; reconcile AGENTS,
CODESTYLE, copilot-instructions, dependabot, tasks.json, and the slnx.
- Bump version floor 3.5 -> 3.6; update README and HISTORY.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 03:11

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

Replaces the repo's CI/CD pipeline with a branch-scoped self-publishing model: main publishes stable releases, develop publishes prereleases, and publishes are triggered only by shipped-input changes (or manual dispatch). It also codifies the workflow contract and required GitHub configuration as documentation + config-as-code.

Changes:

  • Introduces a new workflow architecture: reusable validate-task, ref-scoped CI on push, and a self-publishing publish-release triggered by shipped-input path inclusions.
  • Reworks the release build to use a single build/release task with NBGV outputs threaded through, OIDC NuGet publishing via NuGet/login, and a flat Utilities.7z release asset.
  • Adds/updates repo documentation and configuration artifacts (WORKFLOW.md, repo-config/, cspell.json) and bumps the version floor to 3.6.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
WORKFLOW.mdAdds the canonical CI/CD contract, architecture, and audit methodology for workflows and repo configuration.
version.jsonBumps version floor from 3.5 to 3.6.
Utilities.slnxUpdates solution items to include new docs/config and new workflow; removes deleted workflows.
Utilities.code-workspaceRemoves embedded CSpell word list in favor of repo-root cspell.json.
repo-config/settings.jsonCodifies repository settings (merge methods, auto-merge, delete-branch-on-merge off).
repo-config/ruleset-main.jsonAdds config-as-code for the main branch ruleset (merge-only, required check, signatures).
repo-config/ruleset-develop.jsonAdds config-as-code for the develop branch ruleset (squash-only + linear history, required check, signatures).
repo-config/README.mdDocuments repo-config purpose, usage, and lockstep requirements for required-check renames.
repo-config/configure.shAdds an idempotent apply/check script to audit and enforce repo settings/rulesets/secrets presence.
README.mdUpdates project README to reflect new distribution links, badges, and CI/CD/release model summary.
HISTORY.mdAdds v3.6 release notes focused on CI/CD changes and new workflow artifacts.
cspell.jsonAdds a centralized CSpell configuration and dictionary.
CODESTYLE.mdUpdates coding-style guide to align with the new validation model (CI lint gate + cspell.json).
AGENTS.mdRefactors agent guidance to point to WORKFLOW.md for CI/CD and repo-config for enforced GitHub settings.
.vscode/tasks.jsonCleans up task header comments and clarifies which tasks form the clean-compile set.
.github/workflows/validate-task.ymlAdds reusable validation task: unit tests + CSharpier/dotnet-format/markdownlint/cspell/actionlint.
.github/workflows/test-pull-request.ymlReworks CI to run on push (head-resolved reusable workflows) and produces the required aggregator job.
.github/workflows/publish-release.ymlReworks publisher to be branch-scoped and shipped-input-triggered; gates publish on validate-task.
.github/workflows/merge-bot-pull-request.ymlSimplifies merge-bot to Dependabot auto-merge only (no semver-major exception), with App-token strategy.
.github/workflows/get-version-task.ymlRemoves old reusable version task (inlined into build-release-task).
.github/workflows/build-release-task.ymlReworks the core build/version/publish logic (NBGV, OIDC NuGet push, Utilities.7z, artifact lifecycle).
.github/workflows/build-nugetlibrary-task.ymlRemoves old build task (superseded by build-release-task).
.github/workflows/build-datebadge-task.ymlRemoves date-badge workflow/task (no longer part of the contract).
.github/dependabot.ymlUpdates rationale comments; preserves dual-target main/develop Dependabot strategy.
.github/copilot-instructions.mdMinor wording updates to reflect CODESTYLE.md section framing.

Comment thread.github/workflows/build-release-task.yml
Comment thread.github/workflows/test-pull-request.yml
@ptr727
ptr727 merged commit fcd4f92 into developJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the feature/branch-scoped-cicd branch June 28, 2026 04:30
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

Replace template CI/CD with branch-scoped self-publishing model - #349

Merged
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd
Jun 28, 2026
Merged

Replace template CI/CD with branch-scoped self-publishing model#349
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Ports the branch-scoped self-publishing CI/CD from ptr727/LanguageTags, replacing the ProjectTemplate two-phase model. main publishes stable releases and develop publishes prereleases; each branch publishes itself when a shipped input changes. Utilities has no codegen, so the generator workflows and merge-bot codegen job are omitted.

Workflows

  • Remove build-datebadge-task.yml, build-nugetlibrary-task.yml, get-version-task.yml.
  • Add validate-task.yml (unit tests + CSharpier / dotnet format style / markdownlint / cspell / actionlint).
  • Rework build-release-task.yml (NBGV, keyless OIDC NuGet/login push, flat Utilities.7z asset), publish-release.yml (push/dispatch self-publisher with a shipped-input inclusion list), test-pull-request.yml (validate + smoke-build + Check pull request workflow status job aggregator), and merge-bot-pull-request.yml (Dependabot auto-merge only).

Config and docs

  • Add WORKFLOW.md (canonical CI/CD spec, codegen sections removed) and repo-config/ (rulesets + settings as code, delete_branch_on_merge off).
  • Add cspell.json as the single spell-check source; reconcile AGENTS.md, CODESTYLE.md, .github/copilot-instructions.md, .github/dependabot.yml, .vscode/tasks.json, and Utilities.slnx.
  • Bump version floor 3.5 -> 3.6; refresh README.md and HISTORY.md.

Verified locally: actionlint, markdownlint, cspell, YAML/JSON parse, bash -n configure.sh, EOL per .editorconfig, and Husky clean-compile.

🤖 Generated with Claude Code

Port the branch-scoped self-publishing pipeline from ptr727/LanguageTags,
replacing the ProjectTemplate two-phase model. main publishes stable
releases and develop publishes prereleases; each branch publishes itself
when a shipped input changes.
- Workflows: drop build-datebadge-task, build-nugetlibrary-task, and
get-version-task; add validate-task (unit tests + lint); rework
build-release-task (NBGV, keyless OIDC NuGet push, flat Utilities.7z),
publish-release (push/dispatch self-publisher), test-pull-request
(validate + smoke-build + required aggregator), and merge-bot
(Dependabot only, no codegen job).
- Add WORKFLOW.md (canonical CI/CD spec) and repo-config/ (rulesets and
settings as code; delete_branch_on_merge off).
- Add cspell.json as the single spell-check source; reconcile AGENTS,
CODESTYLE, copilot-instructions, dependabot, tasks.json, and the slnx.
- Bump version floor 3.5 -> 3.6; update README and HISTORY.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 03:11

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

Replaces the repo's CI/CD pipeline with a branch-scoped self-publishing model: main publishes stable releases, develop publishes prereleases, and publishes are triggered only by shipped-input changes (or manual dispatch). It also codifies the workflow contract and required GitHub configuration as documentation + config-as-code.

Changes:

  • Introduces a new workflow architecture: reusable validate-task, ref-scoped CI on push, and a self-publishing publish-release triggered by shipped-input path inclusions.
  • Reworks the release build to use a single build/release task with NBGV outputs threaded through, OIDC NuGet publishing via NuGet/login, and a flat Utilities.7z release asset.
  • Adds/updates repo documentation and configuration artifacts (WORKFLOW.md, repo-config/, cspell.json) and bumps the version floor to 3.6.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
WORKFLOW.mdAdds the canonical CI/CD contract, architecture, and audit methodology for workflows and repo configuration.
version.jsonBumps version floor from 3.5 to 3.6.
Utilities.slnxUpdates solution items to include new docs/config and new workflow; removes deleted workflows.
Utilities.code-workspaceRemoves embedded CSpell word list in favor of repo-root cspell.json.
repo-config/settings.jsonCodifies repository settings (merge methods, auto-merge, delete-branch-on-merge off).
repo-config/ruleset-main.jsonAdds config-as-code for the main branch ruleset (merge-only, required check, signatures).
repo-config/ruleset-develop.jsonAdds config-as-code for the develop branch ruleset (squash-only + linear history, required check, signatures).
repo-config/README.mdDocuments repo-config purpose, usage, and lockstep requirements for required-check renames.
repo-config/configure.shAdds an idempotent apply/check script to audit and enforce repo settings/rulesets/secrets presence.
README.mdUpdates project README to reflect new distribution links, badges, and CI/CD/release model summary.
HISTORY.mdAdds v3.6 release notes focused on CI/CD changes and new workflow artifacts.
cspell.jsonAdds a centralized CSpell configuration and dictionary.
CODESTYLE.mdUpdates coding-style guide to align with the new validation model (CI lint gate + cspell.json).
AGENTS.mdRefactors agent guidance to point to WORKFLOW.md for CI/CD and repo-config for enforced GitHub settings.
.vscode/tasks.jsonCleans up task header comments and clarifies which tasks form the clean-compile set.
.github/workflows/validate-task.ymlAdds reusable validation task: unit tests + CSharpier/dotnet-format/markdownlint/cspell/actionlint.
.github/workflows/test-pull-request.ymlReworks CI to run on push (head-resolved reusable workflows) and produces the required aggregator job.
.github/workflows/publish-release.ymlReworks publisher to be branch-scoped and shipped-input-triggered; gates publish on validate-task.
.github/workflows/merge-bot-pull-request.ymlSimplifies merge-bot to Dependabot auto-merge only (no semver-major exception), with App-token strategy.
.github/workflows/get-version-task.ymlRemoves old reusable version task (inlined into build-release-task).
.github/workflows/build-release-task.ymlReworks the core build/version/publish logic (NBGV, OIDC NuGet push, Utilities.7z, artifact lifecycle).
.github/workflows/build-nugetlibrary-task.ymlRemoves old build task (superseded by build-release-task).
.github/workflows/build-datebadge-task.ymlRemoves date-badge workflow/task (no longer part of the contract).
.github/dependabot.ymlUpdates rationale comments; preserves dual-target main/develop Dependabot strategy.
.github/copilot-instructions.mdMinor wording updates to reflect CODESTYLE.md section framing.

Comment thread.github/workflows/build-release-task.yml
Comment thread.github/workflows/test-pull-request.yml
@ptr727
ptr727 merged commit fcd4f92 into developJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the feature/branch-scoped-cicd branch June 28, 2026 04:30
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

Replace template CI/CD with branch-scoped self-publishing model - #349

Merged
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd
Jun 28, 2026
Merged

Replace template CI/CD with branch-scoped self-publishing model#349
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Ports the branch-scoped self-publishing CI/CD from ptr727/LanguageTags, replacing the ProjectTemplate two-phase model. main publishes stable releases and develop publishes prereleases; each branch publishes itself when a shipped input changes. Utilities has no codegen, so the generator workflows and merge-bot codegen job are omitted.

Workflows

  • Remove build-datebadge-task.yml, build-nugetlibrary-task.yml, get-version-task.yml.
  • Add validate-task.yml (unit tests + CSharpier / dotnet format style / markdownlint / cspell / actionlint).
  • Rework build-release-task.yml (NBGV, keyless OIDC NuGet/login push, flat Utilities.7z asset), publish-release.yml (push/dispatch self-publisher with a shipped-input inclusion list), test-pull-request.yml (validate + smoke-build + Check pull request workflow status job aggregator), and merge-bot-pull-request.yml (Dependabot auto-merge only).

Config and docs

  • Add WORKFLOW.md (canonical CI/CD spec, codegen sections removed) and repo-config/ (rulesets + settings as code, delete_branch_on_merge off).
  • Add cspell.json as the single spell-check source; reconcile AGENTS.md, CODESTYLE.md, .github/copilot-instructions.md, .github/dependabot.yml, .vscode/tasks.json, and Utilities.slnx.
  • Bump version floor 3.5 -> 3.6; refresh README.md and HISTORY.md.

Verified locally: actionlint, markdownlint, cspell, YAML/JSON parse, bash -n configure.sh, EOL per .editorconfig, and Husky clean-compile.

🤖 Generated with Claude Code

Port the branch-scoped self-publishing pipeline from ptr727/LanguageTags,
replacing the ProjectTemplate two-phase model. main publishes stable
releases and develop publishes prereleases; each branch publishes itself
when a shipped input changes.
- Workflows: drop build-datebadge-task, build-nugetlibrary-task, and
get-version-task; add validate-task (unit tests + lint); rework
build-release-task (NBGV, keyless OIDC NuGet push, flat Utilities.7z),
publish-release (push/dispatch self-publisher), test-pull-request
(validate + smoke-build + required aggregator), and merge-bot
(Dependabot only, no codegen job).
- Add WORKFLOW.md (canonical CI/CD spec) and repo-config/ (rulesets and
settings as code; delete_branch_on_merge off).
- Add cspell.json as the single spell-check source; reconcile AGENTS,
CODESTYLE, copilot-instructions, dependabot, tasks.json, and the slnx.
- Bump version floor 3.5 -> 3.6; update README and HISTORY.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 03:11

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

Replaces the repo's CI/CD pipeline with a branch-scoped self-publishing model: main publishes stable releases, develop publishes prereleases, and publishes are triggered only by shipped-input changes (or manual dispatch). It also codifies the workflow contract and required GitHub configuration as documentation + config-as-code.

Changes:

  • Introduces a new workflow architecture: reusable validate-task, ref-scoped CI on push, and a self-publishing publish-release triggered by shipped-input path inclusions.
  • Reworks the release build to use a single build/release task with NBGV outputs threaded through, OIDC NuGet publishing via NuGet/login, and a flat Utilities.7z release asset.
  • Adds/updates repo documentation and configuration artifacts (WORKFLOW.md, repo-config/, cspell.json) and bumps the version floor to 3.6.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
WORKFLOW.mdAdds the canonical CI/CD contract, architecture, and audit methodology for workflows and repo configuration.
version.jsonBumps version floor from 3.5 to 3.6.
Utilities.slnxUpdates solution items to include new docs/config and new workflow; removes deleted workflows.
Utilities.code-workspaceRemoves embedded CSpell word list in favor of repo-root cspell.json.
repo-config/settings.jsonCodifies repository settings (merge methods, auto-merge, delete-branch-on-merge off).
repo-config/ruleset-main.jsonAdds config-as-code for the main branch ruleset (merge-only, required check, signatures).
repo-config/ruleset-develop.jsonAdds config-as-code for the develop branch ruleset (squash-only + linear history, required check, signatures).
repo-config/README.mdDocuments repo-config purpose, usage, and lockstep requirements for required-check renames.
repo-config/configure.shAdds an idempotent apply/check script to audit and enforce repo settings/rulesets/secrets presence.
README.mdUpdates project README to reflect new distribution links, badges, and CI/CD/release model summary.
HISTORY.mdAdds v3.6 release notes focused on CI/CD changes and new workflow artifacts.
cspell.jsonAdds a centralized CSpell configuration and dictionary.
CODESTYLE.mdUpdates coding-style guide to align with the new validation model (CI lint gate + cspell.json).
AGENTS.mdRefactors agent guidance to point to WORKFLOW.md for CI/CD and repo-config for enforced GitHub settings.
.vscode/tasks.jsonCleans up task header comments and clarifies which tasks form the clean-compile set.
.github/workflows/validate-task.ymlAdds reusable validation task: unit tests + CSharpier/dotnet-format/markdownlint/cspell/actionlint.
.github/workflows/test-pull-request.ymlReworks CI to run on push (head-resolved reusable workflows) and produces the required aggregator job.
.github/workflows/publish-release.ymlReworks publisher to be branch-scoped and shipped-input-triggered; gates publish on validate-task.
.github/workflows/merge-bot-pull-request.ymlSimplifies merge-bot to Dependabot auto-merge only (no semver-major exception), with App-token strategy.
.github/workflows/get-version-task.ymlRemoves old reusable version task (inlined into build-release-task).
.github/workflows/build-release-task.ymlReworks the core build/version/publish logic (NBGV, OIDC NuGet push, Utilities.7z, artifact lifecycle).
.github/workflows/build-nugetlibrary-task.ymlRemoves old build task (superseded by build-release-task).
.github/workflows/build-datebadge-task.ymlRemoves date-badge workflow/task (no longer part of the contract).
.github/dependabot.ymlUpdates rationale comments; preserves dual-target main/develop Dependabot strategy.
.github/copilot-instructions.mdMinor wording updates to reflect CODESTYLE.md section framing.

Comment thread.github/workflows/build-release-task.yml
Comment thread.github/workflows/test-pull-request.yml
@ptr727
ptr727 merged commit fcd4f92 into developJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the feature/branch-scoped-cicd branch June 28, 2026 04:30
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

Replace template CI/CD with branch-scoped self-publishing model - #349

Merged
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd
Jun 28, 2026
Merged

Replace template CI/CD with branch-scoped self-publishing model#349
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Ports the branch-scoped self-publishing CI/CD from ptr727/LanguageTags, replacing the ProjectTemplate two-phase model. main publishes stable releases and develop publishes prereleases; each branch publishes itself when a shipped input changes. Utilities has no codegen, so the generator workflows and merge-bot codegen job are omitted.

Workflows

  • Remove build-datebadge-task.yml, build-nugetlibrary-task.yml, get-version-task.yml.
  • Add validate-task.yml (unit tests + CSharpier / dotnet format style / markdownlint / cspell / actionlint).
  • Rework build-release-task.yml (NBGV, keyless OIDC NuGet/login push, flat Utilities.7z asset), publish-release.yml (push/dispatch self-publisher with a shipped-input inclusion list), test-pull-request.yml (validate + smoke-build + Check pull request workflow status job aggregator), and merge-bot-pull-request.yml (Dependabot auto-merge only).

Config and docs

  • Add WORKFLOW.md (canonical CI/CD spec, codegen sections removed) and repo-config/ (rulesets + settings as code, delete_branch_on_merge off).
  • Add cspell.json as the single spell-check source; reconcile AGENTS.md, CODESTYLE.md, .github/copilot-instructions.md, .github/dependabot.yml, .vscode/tasks.json, and Utilities.slnx.
  • Bump version floor 3.5 -> 3.6; refresh README.md and HISTORY.md.

Verified locally: actionlint, markdownlint, cspell, YAML/JSON parse, bash -n configure.sh, EOL per .editorconfig, and Husky clean-compile.

🤖 Generated with Claude Code

Port the branch-scoped self-publishing pipeline from ptr727/LanguageTags,
replacing the ProjectTemplate two-phase model. main publishes stable
releases and develop publishes prereleases; each branch publishes itself
when a shipped input changes.
- Workflows: drop build-datebadge-task, build-nugetlibrary-task, and
get-version-task; add validate-task (unit tests + lint); rework
build-release-task (NBGV, keyless OIDC NuGet push, flat Utilities.7z),
publish-release (push/dispatch self-publisher), test-pull-request
(validate + smoke-build + required aggregator), and merge-bot
(Dependabot only, no codegen job).
- Add WORKFLOW.md (canonical CI/CD spec) and repo-config/ (rulesets and
settings as code; delete_branch_on_merge off).
- Add cspell.json as the single spell-check source; reconcile AGENTS,
CODESTYLE, copilot-instructions, dependabot, tasks.json, and the slnx.
- Bump version floor 3.5 -> 3.6; update README and HISTORY.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 03:11

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

Replaces the repo's CI/CD pipeline with a branch-scoped self-publishing model: main publishes stable releases, develop publishes prereleases, and publishes are triggered only by shipped-input changes (or manual dispatch). It also codifies the workflow contract and required GitHub configuration as documentation + config-as-code.

Changes:

  • Introduces a new workflow architecture: reusable validate-task, ref-scoped CI on push, and a self-publishing publish-release triggered by shipped-input path inclusions.
  • Reworks the release build to use a single build/release task with NBGV outputs threaded through, OIDC NuGet publishing via NuGet/login, and a flat Utilities.7z release asset.
  • Adds/updates repo documentation and configuration artifacts (WORKFLOW.md, repo-config/, cspell.json) and bumps the version floor to 3.6.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
WORKFLOW.mdAdds the canonical CI/CD contract, architecture, and audit methodology for workflows and repo configuration.
version.jsonBumps version floor from 3.5 to 3.6.
Utilities.slnxUpdates solution items to include new docs/config and new workflow; removes deleted workflows.
Utilities.code-workspaceRemoves embedded CSpell word list in favor of repo-root cspell.json.
repo-config/settings.jsonCodifies repository settings (merge methods, auto-merge, delete-branch-on-merge off).
repo-config/ruleset-main.jsonAdds config-as-code for the main branch ruleset (merge-only, required check, signatures).
repo-config/ruleset-develop.jsonAdds config-as-code for the develop branch ruleset (squash-only + linear history, required check, signatures).
repo-config/README.mdDocuments repo-config purpose, usage, and lockstep requirements for required-check renames.
repo-config/configure.shAdds an idempotent apply/check script to audit and enforce repo settings/rulesets/secrets presence.
README.mdUpdates project README to reflect new distribution links, badges, and CI/CD/release model summary.
HISTORY.mdAdds v3.6 release notes focused on CI/CD changes and new workflow artifacts.
cspell.jsonAdds a centralized CSpell configuration and dictionary.
CODESTYLE.mdUpdates coding-style guide to align with the new validation model (CI lint gate + cspell.json).
AGENTS.mdRefactors agent guidance to point to WORKFLOW.md for CI/CD and repo-config for enforced GitHub settings.
.vscode/tasks.jsonCleans up task header comments and clarifies which tasks form the clean-compile set.
.github/workflows/validate-task.ymlAdds reusable validation task: unit tests + CSharpier/dotnet-format/markdownlint/cspell/actionlint.
.github/workflows/test-pull-request.ymlReworks CI to run on push (head-resolved reusable workflows) and produces the required aggregator job.
.github/workflows/publish-release.ymlReworks publisher to be branch-scoped and shipped-input-triggered; gates publish on validate-task.
.github/workflows/merge-bot-pull-request.ymlSimplifies merge-bot to Dependabot auto-merge only (no semver-major exception), with App-token strategy.
.github/workflows/get-version-task.ymlRemoves old reusable version task (inlined into build-release-task).
.github/workflows/build-release-task.ymlReworks the core build/version/publish logic (NBGV, OIDC NuGet push, Utilities.7z, artifact lifecycle).
.github/workflows/build-nugetlibrary-task.ymlRemoves old build task (superseded by build-release-task).
.github/workflows/build-datebadge-task.ymlRemoves date-badge workflow/task (no longer part of the contract).
.github/dependabot.ymlUpdates rationale comments; preserves dual-target main/develop Dependabot strategy.
.github/copilot-instructions.mdMinor wording updates to reflect CODESTYLE.md section framing.

Comment thread.github/workflows/build-release-task.yml
Comment thread.github/workflows/test-pull-request.yml
@ptr727
ptr727 merged commit fcd4f92 into developJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the feature/branch-scoped-cicd branch June 28, 2026 04:30
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

Replace template CI/CD with branch-scoped self-publishing model - #349

Merged
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd
Jun 28, 2026
Merged

Replace template CI/CD with branch-scoped self-publishing model#349
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Ports the branch-scoped self-publishing CI/CD from ptr727/LanguageTags, replacing the ProjectTemplate two-phase model. main publishes stable releases and develop publishes prereleases; each branch publishes itself when a shipped input changes. Utilities has no codegen, so the generator workflows and merge-bot codegen job are omitted.

Workflows

  • Remove build-datebadge-task.yml, build-nugetlibrary-task.yml, get-version-task.yml.
  • Add validate-task.yml (unit tests + CSharpier / dotnet format style / markdownlint / cspell / actionlint).
  • Rework build-release-task.yml (NBGV, keyless OIDC NuGet/login push, flat Utilities.7z asset), publish-release.yml (push/dispatch self-publisher with a shipped-input inclusion list), test-pull-request.yml (validate + smoke-build + Check pull request workflow status job aggregator), and merge-bot-pull-request.yml (Dependabot auto-merge only).

Config and docs

  • Add WORKFLOW.md (canonical CI/CD spec, codegen sections removed) and repo-config/ (rulesets + settings as code, delete_branch_on_merge off).
  • Add cspell.json as the single spell-check source; reconcile AGENTS.md, CODESTYLE.md, .github/copilot-instructions.md, .github/dependabot.yml, .vscode/tasks.json, and Utilities.slnx.
  • Bump version floor 3.5 -> 3.6; refresh README.md and HISTORY.md.

Verified locally: actionlint, markdownlint, cspell, YAML/JSON parse, bash -n configure.sh, EOL per .editorconfig, and Husky clean-compile.

🤖 Generated with Claude Code

Port the branch-scoped self-publishing pipeline from ptr727/LanguageTags,
replacing the ProjectTemplate two-phase model. main publishes stable
releases and develop publishes prereleases; each branch publishes itself
when a shipped input changes.
- Workflows: drop build-datebadge-task, build-nugetlibrary-task, and
get-version-task; add validate-task (unit tests + lint); rework
build-release-task (NBGV, keyless OIDC NuGet push, flat Utilities.7z),
publish-release (push/dispatch self-publisher), test-pull-request
(validate + smoke-build + required aggregator), and merge-bot
(Dependabot only, no codegen job).
- Add WORKFLOW.md (canonical CI/CD spec) and repo-config/ (rulesets and
settings as code; delete_branch_on_merge off).
- Add cspell.json as the single spell-check source; reconcile AGENTS,
CODESTYLE, copilot-instructions, dependabot, tasks.json, and the slnx.
- Bump version floor 3.5 -> 3.6; update README and HISTORY.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 03:11

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

Replaces the repo's CI/CD pipeline with a branch-scoped self-publishing model: main publishes stable releases, develop publishes prereleases, and publishes are triggered only by shipped-input changes (or manual dispatch). It also codifies the workflow contract and required GitHub configuration as documentation + config-as-code.

Changes:

  • Introduces a new workflow architecture: reusable validate-task, ref-scoped CI on push, and a self-publishing publish-release triggered by shipped-input path inclusions.
  • Reworks the release build to use a single build/release task with NBGV outputs threaded through, OIDC NuGet publishing via NuGet/login, and a flat Utilities.7z release asset.
  • Adds/updates repo documentation and configuration artifacts (WORKFLOW.md, repo-config/, cspell.json) and bumps the version floor to 3.6.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
WORKFLOW.mdAdds the canonical CI/CD contract, architecture, and audit methodology for workflows and repo configuration.
version.jsonBumps version floor from 3.5 to 3.6.
Utilities.slnxUpdates solution items to include new docs/config and new workflow; removes deleted workflows.
Utilities.code-workspaceRemoves embedded CSpell word list in favor of repo-root cspell.json.
repo-config/settings.jsonCodifies repository settings (merge methods, auto-merge, delete-branch-on-merge off).
repo-config/ruleset-main.jsonAdds config-as-code for the main branch ruleset (merge-only, required check, signatures).
repo-config/ruleset-develop.jsonAdds config-as-code for the develop branch ruleset (squash-only + linear history, required check, signatures).
repo-config/README.mdDocuments repo-config purpose, usage, and lockstep requirements for required-check renames.
repo-config/configure.shAdds an idempotent apply/check script to audit and enforce repo settings/rulesets/secrets presence.
README.mdUpdates project README to reflect new distribution links, badges, and CI/CD/release model summary.
HISTORY.mdAdds v3.6 release notes focused on CI/CD changes and new workflow artifacts.
cspell.jsonAdds a centralized CSpell configuration and dictionary.
CODESTYLE.mdUpdates coding-style guide to align with the new validation model (CI lint gate + cspell.json).
AGENTS.mdRefactors agent guidance to point to WORKFLOW.md for CI/CD and repo-config for enforced GitHub settings.
.vscode/tasks.jsonCleans up task header comments and clarifies which tasks form the clean-compile set.
.github/workflows/validate-task.ymlAdds reusable validation task: unit tests + CSharpier/dotnet-format/markdownlint/cspell/actionlint.
.github/workflows/test-pull-request.ymlReworks CI to run on push (head-resolved reusable workflows) and produces the required aggregator job.
.github/workflows/publish-release.ymlReworks publisher to be branch-scoped and shipped-input-triggered; gates publish on validate-task.
.github/workflows/merge-bot-pull-request.ymlSimplifies merge-bot to Dependabot auto-merge only (no semver-major exception), with App-token strategy.
.github/workflows/get-version-task.ymlRemoves old reusable version task (inlined into build-release-task).
.github/workflows/build-release-task.ymlReworks the core build/version/publish logic (NBGV, OIDC NuGet push, Utilities.7z, artifact lifecycle).
.github/workflows/build-nugetlibrary-task.ymlRemoves old build task (superseded by build-release-task).
.github/workflows/build-datebadge-task.ymlRemoves date-badge workflow/task (no longer part of the contract).
.github/dependabot.ymlUpdates rationale comments; preserves dual-target main/develop Dependabot strategy.
.github/copilot-instructions.mdMinor wording updates to reflect CODESTYLE.md section framing.

Comment thread.github/workflows/build-release-task.yml
Comment thread.github/workflows/test-pull-request.yml
@ptr727
ptr727 merged commit fcd4f92 into developJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the feature/branch-scoped-cicd branch June 28, 2026 04:30
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

Replace template CI/CD with branch-scoped self-publishing model - #349

Merged
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd
Jun 28, 2026
Merged

Replace template CI/CD with branch-scoped self-publishing model#349
ptr727 merged 1 commit into
developfrom
feature/branch-scoped-cicd

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Ports the branch-scoped self-publishing CI/CD from ptr727/LanguageTags, replacing the ProjectTemplate two-phase model. main publishes stable releases and develop publishes prereleases; each branch publishes itself when a shipped input changes. Utilities has no codegen, so the generator workflows and merge-bot codegen job are omitted.

Workflows

  • Remove build-datebadge-task.yml, build-nugetlibrary-task.yml, get-version-task.yml.
  • Add validate-task.yml (unit tests + CSharpier / dotnet format style / markdownlint / cspell / actionlint).
  • Rework build-release-task.yml (NBGV, keyless OIDC NuGet/login push, flat Utilities.7z asset), publish-release.yml (push/dispatch self-publisher with a shipped-input inclusion list), test-pull-request.yml (validate + smoke-build + Check pull request workflow status job aggregator), and merge-bot-pull-request.yml (Dependabot auto-merge only).

Config and docs

  • Add WORKFLOW.md (canonical CI/CD spec, codegen sections removed) and repo-config/ (rulesets + settings as code, delete_branch_on_merge off).
  • Add cspell.json as the single spell-check source; reconcile AGENTS.md, CODESTYLE.md, .github/copilot-instructions.md, .github/dependabot.yml, .vscode/tasks.json, and Utilities.slnx.
  • Bump version floor 3.5 -> 3.6; refresh README.md and HISTORY.md.

Verified locally: actionlint, markdownlint, cspell, YAML/JSON parse, bash -n configure.sh, EOL per .editorconfig, and Husky clean-compile.

🤖 Generated with Claude Code

Port the branch-scoped self-publishing pipeline from ptr727/LanguageTags,
replacing the ProjectTemplate two-phase model. main publishes stable
releases and develop publishes prereleases; each branch publishes itself
when a shipped input changes.
- Workflows: drop build-datebadge-task, build-nugetlibrary-task, and
get-version-task; add validate-task (unit tests + lint); rework
build-release-task (NBGV, keyless OIDC NuGet push, flat Utilities.7z),
publish-release (push/dispatch self-publisher), test-pull-request
(validate + smoke-build + required aggregator), and merge-bot
(Dependabot only, no codegen job).
- Add WORKFLOW.md (canonical CI/CD spec) and repo-config/ (rulesets and
settings as code; delete_branch_on_merge off).
- Add cspell.json as the single spell-check source; reconcile AGENTS,
CODESTYLE, copilot-instructions, dependabot, tasks.json, and the slnx.
- Bump version floor 3.5 -> 3.6; update README and HISTORY.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 03:11

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

Replaces the repo's CI/CD pipeline with a branch-scoped self-publishing model: main publishes stable releases, develop publishes prereleases, and publishes are triggered only by shipped-input changes (or manual dispatch). It also codifies the workflow contract and required GitHub configuration as documentation + config-as-code.

Changes:

  • Introduces a new workflow architecture: reusable validate-task, ref-scoped CI on push, and a self-publishing publish-release triggered by shipped-input path inclusions.
  • Reworks the release build to use a single build/release task with NBGV outputs threaded through, OIDC NuGet publishing via NuGet/login, and a flat Utilities.7z release asset.
  • Adds/updates repo documentation and configuration artifacts (WORKFLOW.md, repo-config/, cspell.json) and bumps the version floor to 3.6.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
WORKFLOW.mdAdds the canonical CI/CD contract, architecture, and audit methodology for workflows and repo configuration.
version.jsonBumps version floor from 3.5 to 3.6.
Utilities.slnxUpdates solution items to include new docs/config and new workflow; removes deleted workflows.
Utilities.code-workspaceRemoves embedded CSpell word list in favor of repo-root cspell.json.
repo-config/settings.jsonCodifies repository settings (merge methods, auto-merge, delete-branch-on-merge off).
repo-config/ruleset-main.jsonAdds config-as-code for the main branch ruleset (merge-only, required check, signatures).
repo-config/ruleset-develop.jsonAdds config-as-code for the develop branch ruleset (squash-only + linear history, required check, signatures).
repo-config/README.mdDocuments repo-config purpose, usage, and lockstep requirements for required-check renames.
repo-config/configure.shAdds an idempotent apply/check script to audit and enforce repo settings/rulesets/secrets presence.
README.mdUpdates project README to reflect new distribution links, badges, and CI/CD/release model summary.
HISTORY.mdAdds v3.6 release notes focused on CI/CD changes and new workflow artifacts.
cspell.jsonAdds a centralized CSpell configuration and dictionary.
CODESTYLE.mdUpdates coding-style guide to align with the new validation model (CI lint gate + cspell.json).
AGENTS.mdRefactors agent guidance to point to WORKFLOW.md for CI/CD and repo-config for enforced GitHub settings.
.vscode/tasks.jsonCleans up task header comments and clarifies which tasks form the clean-compile set.
.github/workflows/validate-task.ymlAdds reusable validation task: unit tests + CSharpier/dotnet-format/markdownlint/cspell/actionlint.
.github/workflows/test-pull-request.ymlReworks CI to run on push (head-resolved reusable workflows) and produces the required aggregator job.
.github/workflows/publish-release.ymlReworks publisher to be branch-scoped and shipped-input-triggered; gates publish on validate-task.
.github/workflows/merge-bot-pull-request.ymlSimplifies merge-bot to Dependabot auto-merge only (no semver-major exception), with App-token strategy.
.github/workflows/get-version-task.ymlRemoves old reusable version task (inlined into build-release-task).
.github/workflows/build-release-task.ymlReworks the core build/version/publish logic (NBGV, OIDC NuGet push, Utilities.7z, artifact lifecycle).
.github/workflows/build-nugetlibrary-task.ymlRemoves old build task (superseded by build-release-task).
.github/workflows/build-datebadge-task.ymlRemoves date-badge workflow/task (no longer part of the contract).
.github/dependabot.ymlUpdates rationale comments; preserves dual-target main/develop Dependabot strategy.
.github/copilot-instructions.mdMinor wording updates to reflect CODESTYLE.md section framing.

Comment thread.github/workflows/build-release-task.yml
Comment thread.github/workflows/test-pull-request.yml
@ptr727
ptr727 merged commit fcd4f92 into developJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the feature/branch-scoped-cicd branch June 28, 2026 04:30
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