Release 1.5: branch-scoped self-publishing CI/CD - #206

Merged
ptr727 merged 3 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release 1.5: branch-scoped self-publishing CI/CD#206
ptr727 merged 3 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for the 1.5 stable release.

What this ships

Verified on develop

The 1.5 prerelease published end-to-end from develop: ptr727.LanguageTags 1.5.1-gb945a2bdf1 (NuGet prerelease + .snupkg) and a matching GitHub prerelease release. OIDC trusted publishing works against the corrected policy.

On merge

version.json is a shipped input, so merging this to main (merge commit) auto-publishes the 1.5 stable release to NuGet.org. No library API changes.

🤖 Generated with Claude Code

ptr727and others added 2 commits June 27, 2026 17:18
## Summary
Replaces the shared project-template CI/CD with a branch-scoped,
self-sufficient workflow set written for this repo. One run targets the
branch it was triggered on; NBGV versions it natively; a reusable
`validate-task` (unit tests + lint) gates both the pull request and the
publisher; and a shipped-input push to `main`/`develop` self-publishes
(`main` stable, `develop` prerelease) with no schedule or
`PUBLISH_ON_MERGE`.
## Changes
- **`WORKFLOW.md`** - canonical branch-scoped CI/CD spec + audit
methodology (5A static / 5B trace / 5C live / 5D config).
- **`validate-task.yml`** - unit-test + lint (csharpier, dotnet format,
markdownlint, cspell, actionlint); the PR gate and the publish job both
`need:` it, so nothing publishes that would fail the PR.
- Rewrote `publish-release` / `test-pull-request` /
`build-release-task`; deleted `get-version` / `build-nugetlibrary` /
`build-datebadge`.
- NuGet publishing is **keyless** via OIDC trusted publishing
(`NUGET_USERNAME`, no API key).
- **`repo-config/`** - rulesets, settings, and `configure.sh
apply|check` (the 5D config audit).
- **`cspell.json`** - single-source spell dictionary (extension + CLI +
CI read it).
- Reconciled `AGENTS.md` / `CODESTYLE.md` / `README.md` / `HISTORY.md`;
bumped to **1.5**.
## Go-live coordination (maintainer)
- The aggregator required check is renamed to **`Check pull request
workflow status job`**. The live ruleset still requires the old name, so
`repo-config/configure.sh apply` must run **in lockstep** with merging
this PR (it also fixes `delete_branch_on_merge`). Until then the live
required check is satisfied by the base-resolved old workflow.
- `version.json` is bumped (1.4 -> 1.5), a shipped input, so **merging
this to `develop` will auto-publish a `1.5` prerelease** to NuGet.
Intended, but flagging it.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The OIDC token is requested by `NuGet/login` inside the reusable
`build-release-task.yml`, so its `job_workflow_ref` names that file, not
the `publish-release.yml` entry workflow. The NuGet.org
trusted-publishing policy must name `build-release-task.yml`.
Found by the first real publish (1.5 prerelease on develop): `Token
exchange failed (HTTP 401) ... Workflow mismatch for policy
'LanguageTags': expected 'publish-release.yml', actual
'build-release-task.yml'`. Policy already repointed to
`build-release-task.yml`; this corrects WORKFLOW.md D4.7 / section 6 and
`configure.sh` to match.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 00:43

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

Promotes develop to main for the 1.5 stable release by switching to the branch-scoped, self-publishing CI/CD model (with a documented workflow contract) and codifying required GitHub repository settings/rulesets as code.

Changes:

  • Introduce a new CI/CD contract and verification methodology (WORKFLOW.md) and align contributor docs to it.
  • Replace the prior multi-workflow release pipeline with branch-scoped validation + build/publish reusable tasks, including OIDC trusted NuGet publishing.
  • Add repo-config/ configuration-as-code (rulesets, settings, drift-check/apply script) and centralize spelling configuration in cspell.json.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdNew canonical CI/CD contract, architecture, and audit methodology.
version.jsonBump version floor from 1.4 to 1.5 for the 1.5 release line.
repo-config/settings.jsonCodify repository merge/auto-merge settings for drift auditing.
repo-config/ruleset-main.jsonCodify main branch ruleset (merge-only, required checks, signatures, Copilot review).
repo-config/ruleset-develop.jsonCodify develop branch ruleset (squash-only + linear history, required checks, signatures).
repo-config/README.mdDocument how to apply/audit repo configuration and required-check lockstep.
repo-config/configure.shAdd idempotent apply/check script to enforce/audit rulesets, settings, and secret names.
README.mdUpdate release notes to 1.5 and remove outdated CI/badge/contributing details.
LanguageTags.code-workspaceRemove duplicate workspace spell dictionary in favor of cspell.json.
HISTORY.mdAdd 1.5 release notes focused on CI/CD and repo hardening changes.
cspell.jsonIntroduce repo-wide CSpell config and word list shared by editor/CLI/CI.
CODESTYLE.mdUpdate formatting/lint/spell guidance to reflect enforced CI tooling and repo state.
AGENTS.mdPoint CI/CD rules to WORKFLOW.md and update contributor-facing workflow/tooling guidance.
.vscode/tasks.jsonAdd codegen tasks and adjust task documentation comments.
.github/workflows/validate-task.ymlAdd reusable validation gate (unit tests + formatting/lint/spell/actionlint).
.github/workflows/test-pull-request.ymlSwitch PR gating to push-based CI with reusable validate + smoke build + required aggregator.
.github/workflows/run-periodic-codegen-pull-request.ymlUpdate daily codegen workflow docs/concurrency rationale.
.github/workflows/run-codegen-pull-request-task.ymlClarify dual-target codegen behavior and tighten step documentation.
.github/workflows/publish-release.ymlMove to branch-scoped self-publishing on shipped-input changes + manual dispatch.
.github/workflows/merge-bot-pull-request.ymlUpdate bot merge behavior to auto-merge Dependabot/codegen broadly under required checks.
.github/workflows/get-version-task.ymlRemove (versioning now inlined into build/release task).
.github/workflows/build-release-task.ymlInline versioning + build + OIDC NuGet publish + GitHub release + artifact cleanup.
.github/workflows/build-nugetlibrary-task.ymlRemove (superseded by unified build/release task).
.github/workflows/build-datebadge-task.ymlRemove (date badge workflow removed from release model).
.github/dependabot.ymlUpdate comments to match dual-target bot/update model and new workflow set.
.github/copilot-instructions.mdUpdate references to CODESTYLE sections and trim template-specific guidance.
.editorconfigMinor comment updates in .NET-only section.

Comment threadWORKFLOW.md Outdated
Comment threadrepo-config/README.md
Comment thread.github/workflows/build-release-task.yml
Two small doc corrections from Copilot's review of the promotion PR:
reorder D9.5/D9.6 in WORKFLOW.md, and fix a lowercase sentence start in
repo-config/README.md. The snupkg note was a false positive (the 1.5.1
publish log confirms the .snupkg was pushed to the symbol endpoint).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit 1efb18e into mainJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the develop branch June 28, 2026 00:58
@ptr727
ptr727 restored the develop branch June 28, 2026 01:24
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

Release 1.5: branch-scoped self-publishing CI/CD - #206

Merged
ptr727 merged 3 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release 1.5: branch-scoped self-publishing CI/CD#206
ptr727 merged 3 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for the 1.5 stable release.

What this ships

Verified on develop

The 1.5 prerelease published end-to-end from develop: ptr727.LanguageTags 1.5.1-gb945a2bdf1 (NuGet prerelease + .snupkg) and a matching GitHub prerelease release. OIDC trusted publishing works against the corrected policy.

On merge

version.json is a shipped input, so merging this to main (merge commit) auto-publishes the 1.5 stable release to NuGet.org. No library API changes.

🤖 Generated with Claude Code

ptr727and others added 2 commits June 27, 2026 17:18
## Summary
Replaces the shared project-template CI/CD with a branch-scoped,
self-sufficient workflow set written for this repo. One run targets the
branch it was triggered on; NBGV versions it natively; a reusable
`validate-task` (unit tests + lint) gates both the pull request and the
publisher; and a shipped-input push to `main`/`develop` self-publishes
(`main` stable, `develop` prerelease) with no schedule or
`PUBLISH_ON_MERGE`.
## Changes
- **`WORKFLOW.md`** - canonical branch-scoped CI/CD spec + audit
methodology (5A static / 5B trace / 5C live / 5D config).
- **`validate-task.yml`** - unit-test + lint (csharpier, dotnet format,
markdownlint, cspell, actionlint); the PR gate and the publish job both
`need:` it, so nothing publishes that would fail the PR.
- Rewrote `publish-release` / `test-pull-request` /
`build-release-task`; deleted `get-version` / `build-nugetlibrary` /
`build-datebadge`.
- NuGet publishing is **keyless** via OIDC trusted publishing
(`NUGET_USERNAME`, no API key).
- **`repo-config/`** - rulesets, settings, and `configure.sh
apply|check` (the 5D config audit).
- **`cspell.json`** - single-source spell dictionary (extension + CLI +
CI read it).
- Reconciled `AGENTS.md` / `CODESTYLE.md` / `README.md` / `HISTORY.md`;
bumped to **1.5**.
## Go-live coordination (maintainer)
- The aggregator required check is renamed to **`Check pull request
workflow status job`**. The live ruleset still requires the old name, so
`repo-config/configure.sh apply` must run **in lockstep** with merging
this PR (it also fixes `delete_branch_on_merge`). Until then the live
required check is satisfied by the base-resolved old workflow.
- `version.json` is bumped (1.4 -> 1.5), a shipped input, so **merging
this to `develop` will auto-publish a `1.5` prerelease** to NuGet.
Intended, but flagging it.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The OIDC token is requested by `NuGet/login` inside the reusable
`build-release-task.yml`, so its `job_workflow_ref` names that file, not
the `publish-release.yml` entry workflow. The NuGet.org
trusted-publishing policy must name `build-release-task.yml`.
Found by the first real publish (1.5 prerelease on develop): `Token
exchange failed (HTTP 401) ... Workflow mismatch for policy
'LanguageTags': expected 'publish-release.yml', actual
'build-release-task.yml'`. Policy already repointed to
`build-release-task.yml`; this corrects WORKFLOW.md D4.7 / section 6 and
`configure.sh` to match.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 00:43

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

Promotes develop to main for the 1.5 stable release by switching to the branch-scoped, self-publishing CI/CD model (with a documented workflow contract) and codifying required GitHub repository settings/rulesets as code.

Changes:

  • Introduce a new CI/CD contract and verification methodology (WORKFLOW.md) and align contributor docs to it.
  • Replace the prior multi-workflow release pipeline with branch-scoped validation + build/publish reusable tasks, including OIDC trusted NuGet publishing.
  • Add repo-config/ configuration-as-code (rulesets, settings, drift-check/apply script) and centralize spelling configuration in cspell.json.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdNew canonical CI/CD contract, architecture, and audit methodology.
version.jsonBump version floor from 1.4 to 1.5 for the 1.5 release line.
repo-config/settings.jsonCodify repository merge/auto-merge settings for drift auditing.
repo-config/ruleset-main.jsonCodify main branch ruleset (merge-only, required checks, signatures, Copilot review).
repo-config/ruleset-develop.jsonCodify develop branch ruleset (squash-only + linear history, required checks, signatures).
repo-config/README.mdDocument how to apply/audit repo configuration and required-check lockstep.
repo-config/configure.shAdd idempotent apply/check script to enforce/audit rulesets, settings, and secret names.
README.mdUpdate release notes to 1.5 and remove outdated CI/badge/contributing details.
LanguageTags.code-workspaceRemove duplicate workspace spell dictionary in favor of cspell.json.
HISTORY.mdAdd 1.5 release notes focused on CI/CD and repo hardening changes.
cspell.jsonIntroduce repo-wide CSpell config and word list shared by editor/CLI/CI.
CODESTYLE.mdUpdate formatting/lint/spell guidance to reflect enforced CI tooling and repo state.
AGENTS.mdPoint CI/CD rules to WORKFLOW.md and update contributor-facing workflow/tooling guidance.
.vscode/tasks.jsonAdd codegen tasks and adjust task documentation comments.
.github/workflows/validate-task.ymlAdd reusable validation gate (unit tests + formatting/lint/spell/actionlint).
.github/workflows/test-pull-request.ymlSwitch PR gating to push-based CI with reusable validate + smoke build + required aggregator.
.github/workflows/run-periodic-codegen-pull-request.ymlUpdate daily codegen workflow docs/concurrency rationale.
.github/workflows/run-codegen-pull-request-task.ymlClarify dual-target codegen behavior and tighten step documentation.
.github/workflows/publish-release.ymlMove to branch-scoped self-publishing on shipped-input changes + manual dispatch.
.github/workflows/merge-bot-pull-request.ymlUpdate bot merge behavior to auto-merge Dependabot/codegen broadly under required checks.
.github/workflows/get-version-task.ymlRemove (versioning now inlined into build/release task).
.github/workflows/build-release-task.ymlInline versioning + build + OIDC NuGet publish + GitHub release + artifact cleanup.
.github/workflows/build-nugetlibrary-task.ymlRemove (superseded by unified build/release task).
.github/workflows/build-datebadge-task.ymlRemove (date badge workflow removed from release model).
.github/dependabot.ymlUpdate comments to match dual-target bot/update model and new workflow set.
.github/copilot-instructions.mdUpdate references to CODESTYLE sections and trim template-specific guidance.
.editorconfigMinor comment updates in .NET-only section.

Comment threadWORKFLOW.md Outdated
Comment threadrepo-config/README.md
Comment thread.github/workflows/build-release-task.yml
Two small doc corrections from Copilot's review of the promotion PR:
reorder D9.5/D9.6 in WORKFLOW.md, and fix a lowercase sentence start in
repo-config/README.md. The snupkg note was a false positive (the 1.5.1
publish log confirms the .snupkg was pushed to the symbol endpoint).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit 1efb18e into mainJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the develop branch June 28, 2026 00:58
@ptr727
ptr727 restored the develop branch June 28, 2026 01:24
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

Release 1.5: branch-scoped self-publishing CI/CD - #206

Merged
ptr727 merged 3 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release 1.5: branch-scoped self-publishing CI/CD#206
ptr727 merged 3 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for the 1.5 stable release.

What this ships

Verified on develop

The 1.5 prerelease published end-to-end from develop: ptr727.LanguageTags 1.5.1-gb945a2bdf1 (NuGet prerelease + .snupkg) and a matching GitHub prerelease release. OIDC trusted publishing works against the corrected policy.

On merge

version.json is a shipped input, so merging this to main (merge commit) auto-publishes the 1.5 stable release to NuGet.org. No library API changes.

🤖 Generated with Claude Code

ptr727and others added 2 commits June 27, 2026 17:18
## Summary
Replaces the shared project-template CI/CD with a branch-scoped,
self-sufficient workflow set written for this repo. One run targets the
branch it was triggered on; NBGV versions it natively; a reusable
`validate-task` (unit tests + lint) gates both the pull request and the
publisher; and a shipped-input push to `main`/`develop` self-publishes
(`main` stable, `develop` prerelease) with no schedule or
`PUBLISH_ON_MERGE`.
## Changes
- **`WORKFLOW.md`** - canonical branch-scoped CI/CD spec + audit
methodology (5A static / 5B trace / 5C live / 5D config).
- **`validate-task.yml`** - unit-test + lint (csharpier, dotnet format,
markdownlint, cspell, actionlint); the PR gate and the publish job both
`need:` it, so nothing publishes that would fail the PR.
- Rewrote `publish-release` / `test-pull-request` /
`build-release-task`; deleted `get-version` / `build-nugetlibrary` /
`build-datebadge`.
- NuGet publishing is **keyless** via OIDC trusted publishing
(`NUGET_USERNAME`, no API key).
- **`repo-config/`** - rulesets, settings, and `configure.sh
apply|check` (the 5D config audit).
- **`cspell.json`** - single-source spell dictionary (extension + CLI +
CI read it).
- Reconciled `AGENTS.md` / `CODESTYLE.md` / `README.md` / `HISTORY.md`;
bumped to **1.5**.
## Go-live coordination (maintainer)
- The aggregator required check is renamed to **`Check pull request
workflow status job`**. The live ruleset still requires the old name, so
`repo-config/configure.sh apply` must run **in lockstep** with merging
this PR (it also fixes `delete_branch_on_merge`). Until then the live
required check is satisfied by the base-resolved old workflow.
- `version.json` is bumped (1.4 -> 1.5), a shipped input, so **merging
this to `develop` will auto-publish a `1.5` prerelease** to NuGet.
Intended, but flagging it.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The OIDC token is requested by `NuGet/login` inside the reusable
`build-release-task.yml`, so its `job_workflow_ref` names that file, not
the `publish-release.yml` entry workflow. The NuGet.org
trusted-publishing policy must name `build-release-task.yml`.
Found by the first real publish (1.5 prerelease on develop): `Token
exchange failed (HTTP 401) ... Workflow mismatch for policy
'LanguageTags': expected 'publish-release.yml', actual
'build-release-task.yml'`. Policy already repointed to
`build-release-task.yml`; this corrects WORKFLOW.md D4.7 / section 6 and
`configure.sh` to match.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 00:43

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

Promotes develop to main for the 1.5 stable release by switching to the branch-scoped, self-publishing CI/CD model (with a documented workflow contract) and codifying required GitHub repository settings/rulesets as code.

Changes:

  • Introduce a new CI/CD contract and verification methodology (WORKFLOW.md) and align contributor docs to it.
  • Replace the prior multi-workflow release pipeline with branch-scoped validation + build/publish reusable tasks, including OIDC trusted NuGet publishing.
  • Add repo-config/ configuration-as-code (rulesets, settings, drift-check/apply script) and centralize spelling configuration in cspell.json.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdNew canonical CI/CD contract, architecture, and audit methodology.
version.jsonBump version floor from 1.4 to 1.5 for the 1.5 release line.
repo-config/settings.jsonCodify repository merge/auto-merge settings for drift auditing.
repo-config/ruleset-main.jsonCodify main branch ruleset (merge-only, required checks, signatures, Copilot review).
repo-config/ruleset-develop.jsonCodify develop branch ruleset (squash-only + linear history, required checks, signatures).
repo-config/README.mdDocument how to apply/audit repo configuration and required-check lockstep.
repo-config/configure.shAdd idempotent apply/check script to enforce/audit rulesets, settings, and secret names.
README.mdUpdate release notes to 1.5 and remove outdated CI/badge/contributing details.
LanguageTags.code-workspaceRemove duplicate workspace spell dictionary in favor of cspell.json.
HISTORY.mdAdd 1.5 release notes focused on CI/CD and repo hardening changes.
cspell.jsonIntroduce repo-wide CSpell config and word list shared by editor/CLI/CI.
CODESTYLE.mdUpdate formatting/lint/spell guidance to reflect enforced CI tooling and repo state.
AGENTS.mdPoint CI/CD rules to WORKFLOW.md and update contributor-facing workflow/tooling guidance.
.vscode/tasks.jsonAdd codegen tasks and adjust task documentation comments.
.github/workflows/validate-task.ymlAdd reusable validation gate (unit tests + formatting/lint/spell/actionlint).
.github/workflows/test-pull-request.ymlSwitch PR gating to push-based CI with reusable validate + smoke build + required aggregator.
.github/workflows/run-periodic-codegen-pull-request.ymlUpdate daily codegen workflow docs/concurrency rationale.
.github/workflows/run-codegen-pull-request-task.ymlClarify dual-target codegen behavior and tighten step documentation.
.github/workflows/publish-release.ymlMove to branch-scoped self-publishing on shipped-input changes + manual dispatch.
.github/workflows/merge-bot-pull-request.ymlUpdate bot merge behavior to auto-merge Dependabot/codegen broadly under required checks.
.github/workflows/get-version-task.ymlRemove (versioning now inlined into build/release task).
.github/workflows/build-release-task.ymlInline versioning + build + OIDC NuGet publish + GitHub release + artifact cleanup.
.github/workflows/build-nugetlibrary-task.ymlRemove (superseded by unified build/release task).
.github/workflows/build-datebadge-task.ymlRemove (date badge workflow removed from release model).
.github/dependabot.ymlUpdate comments to match dual-target bot/update model and new workflow set.
.github/copilot-instructions.mdUpdate references to CODESTYLE sections and trim template-specific guidance.
.editorconfigMinor comment updates in .NET-only section.

Comment threadWORKFLOW.md Outdated
Comment threadrepo-config/README.md
Comment thread.github/workflows/build-release-task.yml
Two small doc corrections from Copilot's review of the promotion PR:
reorder D9.5/D9.6 in WORKFLOW.md, and fix a lowercase sentence start in
repo-config/README.md. The snupkg note was a false positive (the 1.5.1
publish log confirms the .snupkg was pushed to the symbol endpoint).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit 1efb18e into mainJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the develop branch June 28, 2026 00:58
@ptr727
ptr727 restored the develop branch June 28, 2026 01:24
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

Release 1.5: branch-scoped self-publishing CI/CD - #206

Merged
ptr727 merged 3 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release 1.5: branch-scoped self-publishing CI/CD#206
ptr727 merged 3 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for the 1.5 stable release.

What this ships

Verified on develop

The 1.5 prerelease published end-to-end from develop: ptr727.LanguageTags 1.5.1-gb945a2bdf1 (NuGet prerelease + .snupkg) and a matching GitHub prerelease release. OIDC trusted publishing works against the corrected policy.

On merge

version.json is a shipped input, so merging this to main (merge commit) auto-publishes the 1.5 stable release to NuGet.org. No library API changes.

🤖 Generated with Claude Code

ptr727and others added 2 commits June 27, 2026 17:18
## Summary
Replaces the shared project-template CI/CD with a branch-scoped,
self-sufficient workflow set written for this repo. One run targets the
branch it was triggered on; NBGV versions it natively; a reusable
`validate-task` (unit tests + lint) gates both the pull request and the
publisher; and a shipped-input push to `main`/`develop` self-publishes
(`main` stable, `develop` prerelease) with no schedule or
`PUBLISH_ON_MERGE`.
## Changes
- **`WORKFLOW.md`** - canonical branch-scoped CI/CD spec + audit
methodology (5A static / 5B trace / 5C live / 5D config).
- **`validate-task.yml`** - unit-test + lint (csharpier, dotnet format,
markdownlint, cspell, actionlint); the PR gate and the publish job both
`need:` it, so nothing publishes that would fail the PR.
- Rewrote `publish-release` / `test-pull-request` /
`build-release-task`; deleted `get-version` / `build-nugetlibrary` /
`build-datebadge`.
- NuGet publishing is **keyless** via OIDC trusted publishing
(`NUGET_USERNAME`, no API key).
- **`repo-config/`** - rulesets, settings, and `configure.sh
apply|check` (the 5D config audit).
- **`cspell.json`** - single-source spell dictionary (extension + CLI +
CI read it).
- Reconciled `AGENTS.md` / `CODESTYLE.md` / `README.md` / `HISTORY.md`;
bumped to **1.5**.
## Go-live coordination (maintainer)
- The aggregator required check is renamed to **`Check pull request
workflow status job`**. The live ruleset still requires the old name, so
`repo-config/configure.sh apply` must run **in lockstep** with merging
this PR (it also fixes `delete_branch_on_merge`). Until then the live
required check is satisfied by the base-resolved old workflow.
- `version.json` is bumped (1.4 -> 1.5), a shipped input, so **merging
this to `develop` will auto-publish a `1.5` prerelease** to NuGet.
Intended, but flagging it.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The OIDC token is requested by `NuGet/login` inside the reusable
`build-release-task.yml`, so its `job_workflow_ref` names that file, not
the `publish-release.yml` entry workflow. The NuGet.org
trusted-publishing policy must name `build-release-task.yml`.
Found by the first real publish (1.5 prerelease on develop): `Token
exchange failed (HTTP 401) ... Workflow mismatch for policy
'LanguageTags': expected 'publish-release.yml', actual
'build-release-task.yml'`. Policy already repointed to
`build-release-task.yml`; this corrects WORKFLOW.md D4.7 / section 6 and
`configure.sh` to match.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 00:43

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

Promotes develop to main for the 1.5 stable release by switching to the branch-scoped, self-publishing CI/CD model (with a documented workflow contract) and codifying required GitHub repository settings/rulesets as code.

Changes:

  • Introduce a new CI/CD contract and verification methodology (WORKFLOW.md) and align contributor docs to it.
  • Replace the prior multi-workflow release pipeline with branch-scoped validation + build/publish reusable tasks, including OIDC trusted NuGet publishing.
  • Add repo-config/ configuration-as-code (rulesets, settings, drift-check/apply script) and centralize spelling configuration in cspell.json.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdNew canonical CI/CD contract, architecture, and audit methodology.
version.jsonBump version floor from 1.4 to 1.5 for the 1.5 release line.
repo-config/settings.jsonCodify repository merge/auto-merge settings for drift auditing.
repo-config/ruleset-main.jsonCodify main branch ruleset (merge-only, required checks, signatures, Copilot review).
repo-config/ruleset-develop.jsonCodify develop branch ruleset (squash-only + linear history, required checks, signatures).
repo-config/README.mdDocument how to apply/audit repo configuration and required-check lockstep.
repo-config/configure.shAdd idempotent apply/check script to enforce/audit rulesets, settings, and secret names.
README.mdUpdate release notes to 1.5 and remove outdated CI/badge/contributing details.
LanguageTags.code-workspaceRemove duplicate workspace spell dictionary in favor of cspell.json.
HISTORY.mdAdd 1.5 release notes focused on CI/CD and repo hardening changes.
cspell.jsonIntroduce repo-wide CSpell config and word list shared by editor/CLI/CI.
CODESTYLE.mdUpdate formatting/lint/spell guidance to reflect enforced CI tooling and repo state.
AGENTS.mdPoint CI/CD rules to WORKFLOW.md and update contributor-facing workflow/tooling guidance.
.vscode/tasks.jsonAdd codegen tasks and adjust task documentation comments.
.github/workflows/validate-task.ymlAdd reusable validation gate (unit tests + formatting/lint/spell/actionlint).
.github/workflows/test-pull-request.ymlSwitch PR gating to push-based CI with reusable validate + smoke build + required aggregator.
.github/workflows/run-periodic-codegen-pull-request.ymlUpdate daily codegen workflow docs/concurrency rationale.
.github/workflows/run-codegen-pull-request-task.ymlClarify dual-target codegen behavior and tighten step documentation.
.github/workflows/publish-release.ymlMove to branch-scoped self-publishing on shipped-input changes + manual dispatch.
.github/workflows/merge-bot-pull-request.ymlUpdate bot merge behavior to auto-merge Dependabot/codegen broadly under required checks.
.github/workflows/get-version-task.ymlRemove (versioning now inlined into build/release task).
.github/workflows/build-release-task.ymlInline versioning + build + OIDC NuGet publish + GitHub release + artifact cleanup.
.github/workflows/build-nugetlibrary-task.ymlRemove (superseded by unified build/release task).
.github/workflows/build-datebadge-task.ymlRemove (date badge workflow removed from release model).
.github/dependabot.ymlUpdate comments to match dual-target bot/update model and new workflow set.
.github/copilot-instructions.mdUpdate references to CODESTYLE sections and trim template-specific guidance.
.editorconfigMinor comment updates in .NET-only section.

Comment threadWORKFLOW.md Outdated
Comment threadrepo-config/README.md
Comment thread.github/workflows/build-release-task.yml
Two small doc corrections from Copilot's review of the promotion PR:
reorder D9.5/D9.6 in WORKFLOW.md, and fix a lowercase sentence start in
repo-config/README.md. The snupkg note was a false positive (the 1.5.1
publish log confirms the .snupkg was pushed to the symbol endpoint).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit 1efb18e into mainJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the develop branch June 28, 2026 00:58
@ptr727
ptr727 restored the develop branch June 28, 2026 01:24
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

Release 1.5: branch-scoped self-publishing CI/CD - #206

Merged
ptr727 merged 3 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release 1.5: branch-scoped self-publishing CI/CD#206
ptr727 merged 3 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for the 1.5 stable release.

What this ships

Verified on develop

The 1.5 prerelease published end-to-end from develop: ptr727.LanguageTags 1.5.1-gb945a2bdf1 (NuGet prerelease + .snupkg) and a matching GitHub prerelease release. OIDC trusted publishing works against the corrected policy.

On merge

version.json is a shipped input, so merging this to main (merge commit) auto-publishes the 1.5 stable release to NuGet.org. No library API changes.

🤖 Generated with Claude Code

ptr727and others added 2 commits June 27, 2026 17:18
## Summary
Replaces the shared project-template CI/CD with a branch-scoped,
self-sufficient workflow set written for this repo. One run targets the
branch it was triggered on; NBGV versions it natively; a reusable
`validate-task` (unit tests + lint) gates both the pull request and the
publisher; and a shipped-input push to `main`/`develop` self-publishes
(`main` stable, `develop` prerelease) with no schedule or
`PUBLISH_ON_MERGE`.
## Changes
- **`WORKFLOW.md`** - canonical branch-scoped CI/CD spec + audit
methodology (5A static / 5B trace / 5C live / 5D config).
- **`validate-task.yml`** - unit-test + lint (csharpier, dotnet format,
markdownlint, cspell, actionlint); the PR gate and the publish job both
`need:` it, so nothing publishes that would fail the PR.
- Rewrote `publish-release` / `test-pull-request` /
`build-release-task`; deleted `get-version` / `build-nugetlibrary` /
`build-datebadge`.
- NuGet publishing is **keyless** via OIDC trusted publishing
(`NUGET_USERNAME`, no API key).
- **`repo-config/`** - rulesets, settings, and `configure.sh
apply|check` (the 5D config audit).
- **`cspell.json`** - single-source spell dictionary (extension + CLI +
CI read it).
- Reconciled `AGENTS.md` / `CODESTYLE.md` / `README.md` / `HISTORY.md`;
bumped to **1.5**.
## Go-live coordination (maintainer)
- The aggregator required check is renamed to **`Check pull request
workflow status job`**. The live ruleset still requires the old name, so
`repo-config/configure.sh apply` must run **in lockstep** with merging
this PR (it also fixes `delete_branch_on_merge`). Until then the live
required check is satisfied by the base-resolved old workflow.
- `version.json` is bumped (1.4 -> 1.5), a shipped input, so **merging
this to `develop` will auto-publish a `1.5` prerelease** to NuGet.
Intended, but flagging it.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The OIDC token is requested by `NuGet/login` inside the reusable
`build-release-task.yml`, so its `job_workflow_ref` names that file, not
the `publish-release.yml` entry workflow. The NuGet.org
trusted-publishing policy must name `build-release-task.yml`.
Found by the first real publish (1.5 prerelease on develop): `Token
exchange failed (HTTP 401) ... Workflow mismatch for policy
'LanguageTags': expected 'publish-release.yml', actual
'build-release-task.yml'`. Policy already repointed to
`build-release-task.yml`; this corrects WORKFLOW.md D4.7 / section 6 and
`configure.sh` to match.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 00:43

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

Promotes develop to main for the 1.5 stable release by switching to the branch-scoped, self-publishing CI/CD model (with a documented workflow contract) and codifying required GitHub repository settings/rulesets as code.

Changes:

  • Introduce a new CI/CD contract and verification methodology (WORKFLOW.md) and align contributor docs to it.
  • Replace the prior multi-workflow release pipeline with branch-scoped validation + build/publish reusable tasks, including OIDC trusted NuGet publishing.
  • Add repo-config/ configuration-as-code (rulesets, settings, drift-check/apply script) and centralize spelling configuration in cspell.json.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdNew canonical CI/CD contract, architecture, and audit methodology.
version.jsonBump version floor from 1.4 to 1.5 for the 1.5 release line.
repo-config/settings.jsonCodify repository merge/auto-merge settings for drift auditing.
repo-config/ruleset-main.jsonCodify main branch ruleset (merge-only, required checks, signatures, Copilot review).
repo-config/ruleset-develop.jsonCodify develop branch ruleset (squash-only + linear history, required checks, signatures).
repo-config/README.mdDocument how to apply/audit repo configuration and required-check lockstep.
repo-config/configure.shAdd idempotent apply/check script to enforce/audit rulesets, settings, and secret names.
README.mdUpdate release notes to 1.5 and remove outdated CI/badge/contributing details.
LanguageTags.code-workspaceRemove duplicate workspace spell dictionary in favor of cspell.json.
HISTORY.mdAdd 1.5 release notes focused on CI/CD and repo hardening changes.
cspell.jsonIntroduce repo-wide CSpell config and word list shared by editor/CLI/CI.
CODESTYLE.mdUpdate formatting/lint/spell guidance to reflect enforced CI tooling and repo state.
AGENTS.mdPoint CI/CD rules to WORKFLOW.md and update contributor-facing workflow/tooling guidance.
.vscode/tasks.jsonAdd codegen tasks and adjust task documentation comments.
.github/workflows/validate-task.ymlAdd reusable validation gate (unit tests + formatting/lint/spell/actionlint).
.github/workflows/test-pull-request.ymlSwitch PR gating to push-based CI with reusable validate + smoke build + required aggregator.
.github/workflows/run-periodic-codegen-pull-request.ymlUpdate daily codegen workflow docs/concurrency rationale.
.github/workflows/run-codegen-pull-request-task.ymlClarify dual-target codegen behavior and tighten step documentation.
.github/workflows/publish-release.ymlMove to branch-scoped self-publishing on shipped-input changes + manual dispatch.
.github/workflows/merge-bot-pull-request.ymlUpdate bot merge behavior to auto-merge Dependabot/codegen broadly under required checks.
.github/workflows/get-version-task.ymlRemove (versioning now inlined into build/release task).
.github/workflows/build-release-task.ymlInline versioning + build + OIDC NuGet publish + GitHub release + artifact cleanup.
.github/workflows/build-nugetlibrary-task.ymlRemove (superseded by unified build/release task).
.github/workflows/build-datebadge-task.ymlRemove (date badge workflow removed from release model).
.github/dependabot.ymlUpdate comments to match dual-target bot/update model and new workflow set.
.github/copilot-instructions.mdUpdate references to CODESTYLE sections and trim template-specific guidance.
.editorconfigMinor comment updates in .NET-only section.

Comment threadWORKFLOW.md Outdated
Comment threadrepo-config/README.md
Comment thread.github/workflows/build-release-task.yml
Two small doc corrections from Copilot's review of the promotion PR:
reorder D9.5/D9.6 in WORKFLOW.md, and fix a lowercase sentence start in
repo-config/README.md. The snupkg note was a false positive (the 1.5.1
publish log confirms the .snupkg was pushed to the symbol endpoint).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit 1efb18e into mainJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the develop branch June 28, 2026 00:58
@ptr727
ptr727 restored the develop branch June 28, 2026 01:24
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

Release 1.5: branch-scoped self-publishing CI/CD - #206

Merged
ptr727 merged 3 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release 1.5: branch-scoped self-publishing CI/CD#206
ptr727 merged 3 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for the 1.5 stable release.

What this ships

Verified on develop

The 1.5 prerelease published end-to-end from develop: ptr727.LanguageTags 1.5.1-gb945a2bdf1 (NuGet prerelease + .snupkg) and a matching GitHub prerelease release. OIDC trusted publishing works against the corrected policy.

On merge

version.json is a shipped input, so merging this to main (merge commit) auto-publishes the 1.5 stable release to NuGet.org. No library API changes.

🤖 Generated with Claude Code

ptr727and others added 2 commits June 27, 2026 17:18
## Summary
Replaces the shared project-template CI/CD with a branch-scoped,
self-sufficient workflow set written for this repo. One run targets the
branch it was triggered on; NBGV versions it natively; a reusable
`validate-task` (unit tests + lint) gates both the pull request and the
publisher; and a shipped-input push to `main`/`develop` self-publishes
(`main` stable, `develop` prerelease) with no schedule or
`PUBLISH_ON_MERGE`.
## Changes
- **`WORKFLOW.md`** - canonical branch-scoped CI/CD spec + audit
methodology (5A static / 5B trace / 5C live / 5D config).
- **`validate-task.yml`** - unit-test + lint (csharpier, dotnet format,
markdownlint, cspell, actionlint); the PR gate and the publish job both
`need:` it, so nothing publishes that would fail the PR.
- Rewrote `publish-release` / `test-pull-request` /
`build-release-task`; deleted `get-version` / `build-nugetlibrary` /
`build-datebadge`.
- NuGet publishing is **keyless** via OIDC trusted publishing
(`NUGET_USERNAME`, no API key).
- **`repo-config/`** - rulesets, settings, and `configure.sh
apply|check` (the 5D config audit).
- **`cspell.json`** - single-source spell dictionary (extension + CLI +
CI read it).
- Reconciled `AGENTS.md` / `CODESTYLE.md` / `README.md` / `HISTORY.md`;
bumped to **1.5**.
## Go-live coordination (maintainer)
- The aggregator required check is renamed to **`Check pull request
workflow status job`**. The live ruleset still requires the old name, so
`repo-config/configure.sh apply` must run **in lockstep** with merging
this PR (it also fixes `delete_branch_on_merge`). Until then the live
required check is satisfied by the base-resolved old workflow.
- `version.json` is bumped (1.4 -> 1.5), a shipped input, so **merging
this to `develop` will auto-publish a `1.5` prerelease** to NuGet.
Intended, but flagging it.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The OIDC token is requested by `NuGet/login` inside the reusable
`build-release-task.yml`, so its `job_workflow_ref` names that file, not
the `publish-release.yml` entry workflow. The NuGet.org
trusted-publishing policy must name `build-release-task.yml`.
Found by the first real publish (1.5 prerelease on develop): `Token
exchange failed (HTTP 401) ... Workflow mismatch for policy
'LanguageTags': expected 'publish-release.yml', actual
'build-release-task.yml'`. Policy already repointed to
`build-release-task.yml`; this corrects WORKFLOW.md D4.7 / section 6 and
`configure.sh` to match.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 00:43

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

Promotes develop to main for the 1.5 stable release by switching to the branch-scoped, self-publishing CI/CD model (with a documented workflow contract) and codifying required GitHub repository settings/rulesets as code.

Changes:

  • Introduce a new CI/CD contract and verification methodology (WORKFLOW.md) and align contributor docs to it.
  • Replace the prior multi-workflow release pipeline with branch-scoped validation + build/publish reusable tasks, including OIDC trusted NuGet publishing.
  • Add repo-config/ configuration-as-code (rulesets, settings, drift-check/apply script) and centralize spelling configuration in cspell.json.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdNew canonical CI/CD contract, architecture, and audit methodology.
version.jsonBump version floor from 1.4 to 1.5 for the 1.5 release line.
repo-config/settings.jsonCodify repository merge/auto-merge settings for drift auditing.
repo-config/ruleset-main.jsonCodify main branch ruleset (merge-only, required checks, signatures, Copilot review).
repo-config/ruleset-develop.jsonCodify develop branch ruleset (squash-only + linear history, required checks, signatures).
repo-config/README.mdDocument how to apply/audit repo configuration and required-check lockstep.
repo-config/configure.shAdd idempotent apply/check script to enforce/audit rulesets, settings, and secret names.
README.mdUpdate release notes to 1.5 and remove outdated CI/badge/contributing details.
LanguageTags.code-workspaceRemove duplicate workspace spell dictionary in favor of cspell.json.
HISTORY.mdAdd 1.5 release notes focused on CI/CD and repo hardening changes.
cspell.jsonIntroduce repo-wide CSpell config and word list shared by editor/CLI/CI.
CODESTYLE.mdUpdate formatting/lint/spell guidance to reflect enforced CI tooling and repo state.
AGENTS.mdPoint CI/CD rules to WORKFLOW.md and update contributor-facing workflow/tooling guidance.
.vscode/tasks.jsonAdd codegen tasks and adjust task documentation comments.
.github/workflows/validate-task.ymlAdd reusable validation gate (unit tests + formatting/lint/spell/actionlint).
.github/workflows/test-pull-request.ymlSwitch PR gating to push-based CI with reusable validate + smoke build + required aggregator.
.github/workflows/run-periodic-codegen-pull-request.ymlUpdate daily codegen workflow docs/concurrency rationale.
.github/workflows/run-codegen-pull-request-task.ymlClarify dual-target codegen behavior and tighten step documentation.
.github/workflows/publish-release.ymlMove to branch-scoped self-publishing on shipped-input changes + manual dispatch.
.github/workflows/merge-bot-pull-request.ymlUpdate bot merge behavior to auto-merge Dependabot/codegen broadly under required checks.
.github/workflows/get-version-task.ymlRemove (versioning now inlined into build/release task).
.github/workflows/build-release-task.ymlInline versioning + build + OIDC NuGet publish + GitHub release + artifact cleanup.
.github/workflows/build-nugetlibrary-task.ymlRemove (superseded by unified build/release task).
.github/workflows/build-datebadge-task.ymlRemove (date badge workflow removed from release model).
.github/dependabot.ymlUpdate comments to match dual-target bot/update model and new workflow set.
.github/copilot-instructions.mdUpdate references to CODESTYLE sections and trim template-specific guidance.
.editorconfigMinor comment updates in .NET-only section.

Comment threadWORKFLOW.md Outdated
Comment threadrepo-config/README.md
Comment thread.github/workflows/build-release-task.yml
Two small doc corrections from Copilot's review of the promotion PR:
reorder D9.5/D9.6 in WORKFLOW.md, and fix a lowercase sentence start in
repo-config/README.md. The snupkg note was a false positive (the 1.5.1
publish log confirms the .snupkg was pushed to the symbol endpoint).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit 1efb18e into mainJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the develop branch June 28, 2026 00:58
@ptr727
ptr727 restored the develop branch June 28, 2026 01:24
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

Release 1.5: branch-scoped self-publishing CI/CD - #206

Merged
ptr727 merged 3 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release 1.5: branch-scoped self-publishing CI/CD#206
ptr727 merged 3 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for the 1.5 stable release.

What this ships

Verified on develop

The 1.5 prerelease published end-to-end from develop: ptr727.LanguageTags 1.5.1-gb945a2bdf1 (NuGet prerelease + .snupkg) and a matching GitHub prerelease release. OIDC trusted publishing works against the corrected policy.

On merge

version.json is a shipped input, so merging this to main (merge commit) auto-publishes the 1.5 stable release to NuGet.org. No library API changes.

🤖 Generated with Claude Code

ptr727and others added 2 commits June 27, 2026 17:18
## Summary
Replaces the shared project-template CI/CD with a branch-scoped,
self-sufficient workflow set written for this repo. One run targets the
branch it was triggered on; NBGV versions it natively; a reusable
`validate-task` (unit tests + lint) gates both the pull request and the
publisher; and a shipped-input push to `main`/`develop` self-publishes
(`main` stable, `develop` prerelease) with no schedule or
`PUBLISH_ON_MERGE`.
## Changes
- **`WORKFLOW.md`** - canonical branch-scoped CI/CD spec + audit
methodology (5A static / 5B trace / 5C live / 5D config).
- **`validate-task.yml`** - unit-test + lint (csharpier, dotnet format,
markdownlint, cspell, actionlint); the PR gate and the publish job both
`need:` it, so nothing publishes that would fail the PR.
- Rewrote `publish-release` / `test-pull-request` /
`build-release-task`; deleted `get-version` / `build-nugetlibrary` /
`build-datebadge`.
- NuGet publishing is **keyless** via OIDC trusted publishing
(`NUGET_USERNAME`, no API key).
- **`repo-config/`** - rulesets, settings, and `configure.sh
apply|check` (the 5D config audit).
- **`cspell.json`** - single-source spell dictionary (extension + CLI +
CI read it).
- Reconciled `AGENTS.md` / `CODESTYLE.md` / `README.md` / `HISTORY.md`;
bumped to **1.5**.
## Go-live coordination (maintainer)
- The aggregator required check is renamed to **`Check pull request
workflow status job`**. The live ruleset still requires the old name, so
`repo-config/configure.sh apply` must run **in lockstep** with merging
this PR (it also fixes `delete_branch_on_merge`). Until then the live
required check is satisfied by the base-resolved old workflow.
- `version.json` is bumped (1.4 -> 1.5), a shipped input, so **merging
this to `develop` will auto-publish a `1.5` prerelease** to NuGet.
Intended, but flagging it.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The OIDC token is requested by `NuGet/login` inside the reusable
`build-release-task.yml`, so its `job_workflow_ref` names that file, not
the `publish-release.yml` entry workflow. The NuGet.org
trusted-publishing policy must name `build-release-task.yml`.
Found by the first real publish (1.5 prerelease on develop): `Token
exchange failed (HTTP 401) ... Workflow mismatch for policy
'LanguageTags': expected 'publish-release.yml', actual
'build-release-task.yml'`. Policy already repointed to
`build-release-task.yml`; this corrects WORKFLOW.md D4.7 / section 6 and
`configure.sh` to match.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 00:43

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

Promotes develop to main for the 1.5 stable release by switching to the branch-scoped, self-publishing CI/CD model (with a documented workflow contract) and codifying required GitHub repository settings/rulesets as code.

Changes:

  • Introduce a new CI/CD contract and verification methodology (WORKFLOW.md) and align contributor docs to it.
  • Replace the prior multi-workflow release pipeline with branch-scoped validation + build/publish reusable tasks, including OIDC trusted NuGet publishing.
  • Add repo-config/ configuration-as-code (rulesets, settings, drift-check/apply script) and centralize spelling configuration in cspell.json.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdNew canonical CI/CD contract, architecture, and audit methodology.
version.jsonBump version floor from 1.4 to 1.5 for the 1.5 release line.
repo-config/settings.jsonCodify repository merge/auto-merge settings for drift auditing.
repo-config/ruleset-main.jsonCodify main branch ruleset (merge-only, required checks, signatures, Copilot review).
repo-config/ruleset-develop.jsonCodify develop branch ruleset (squash-only + linear history, required checks, signatures).
repo-config/README.mdDocument how to apply/audit repo configuration and required-check lockstep.
repo-config/configure.shAdd idempotent apply/check script to enforce/audit rulesets, settings, and secret names.
README.mdUpdate release notes to 1.5 and remove outdated CI/badge/contributing details.
LanguageTags.code-workspaceRemove duplicate workspace spell dictionary in favor of cspell.json.
HISTORY.mdAdd 1.5 release notes focused on CI/CD and repo hardening changes.
cspell.jsonIntroduce repo-wide CSpell config and word list shared by editor/CLI/CI.
CODESTYLE.mdUpdate formatting/lint/spell guidance to reflect enforced CI tooling and repo state.
AGENTS.mdPoint CI/CD rules to WORKFLOW.md and update contributor-facing workflow/tooling guidance.
.vscode/tasks.jsonAdd codegen tasks and adjust task documentation comments.
.github/workflows/validate-task.ymlAdd reusable validation gate (unit tests + formatting/lint/spell/actionlint).
.github/workflows/test-pull-request.ymlSwitch PR gating to push-based CI with reusable validate + smoke build + required aggregator.
.github/workflows/run-periodic-codegen-pull-request.ymlUpdate daily codegen workflow docs/concurrency rationale.
.github/workflows/run-codegen-pull-request-task.ymlClarify dual-target codegen behavior and tighten step documentation.
.github/workflows/publish-release.ymlMove to branch-scoped self-publishing on shipped-input changes + manual dispatch.
.github/workflows/merge-bot-pull-request.ymlUpdate bot merge behavior to auto-merge Dependabot/codegen broadly under required checks.
.github/workflows/get-version-task.ymlRemove (versioning now inlined into build/release task).
.github/workflows/build-release-task.ymlInline versioning + build + OIDC NuGet publish + GitHub release + artifact cleanup.
.github/workflows/build-nugetlibrary-task.ymlRemove (superseded by unified build/release task).
.github/workflows/build-datebadge-task.ymlRemove (date badge workflow removed from release model).
.github/dependabot.ymlUpdate comments to match dual-target bot/update model and new workflow set.
.github/copilot-instructions.mdUpdate references to CODESTYLE sections and trim template-specific guidance.
.editorconfigMinor comment updates in .NET-only section.

Comment threadWORKFLOW.md Outdated
Comment threadrepo-config/README.md
Comment thread.github/workflows/build-release-task.yml
Two small doc corrections from Copilot's review of the promotion PR:
reorder D9.5/D9.6 in WORKFLOW.md, and fix a lowercase sentence start in
repo-config/README.md. The snupkg note was a false positive (the 1.5.1
publish log confirms the .snupkg was pushed to the symbol endpoint).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit 1efb18e into mainJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the develop branch June 28, 2026 00:58
@ptr727
ptr727 restored the develop branch June 28, 2026 01:24
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

Release 1.5: branch-scoped self-publishing CI/CD - #206

Merged
ptr727 merged 3 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release 1.5: branch-scoped self-publishing CI/CD#206
ptr727 merged 3 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for the 1.5 stable release.

What this ships

Verified on develop

The 1.5 prerelease published end-to-end from develop: ptr727.LanguageTags 1.5.1-gb945a2bdf1 (NuGet prerelease + .snupkg) and a matching GitHub prerelease release. OIDC trusted publishing works against the corrected policy.

On merge

version.json is a shipped input, so merging this to main (merge commit) auto-publishes the 1.5 stable release to NuGet.org. No library API changes.

🤖 Generated with Claude Code

ptr727and others added 2 commits June 27, 2026 17:18
## Summary
Replaces the shared project-template CI/CD with a branch-scoped,
self-sufficient workflow set written for this repo. One run targets the
branch it was triggered on; NBGV versions it natively; a reusable
`validate-task` (unit tests + lint) gates both the pull request and the
publisher; and a shipped-input push to `main`/`develop` self-publishes
(`main` stable, `develop` prerelease) with no schedule or
`PUBLISH_ON_MERGE`.
## Changes
- **`WORKFLOW.md`** - canonical branch-scoped CI/CD spec + audit
methodology (5A static / 5B trace / 5C live / 5D config).
- **`validate-task.yml`** - unit-test + lint (csharpier, dotnet format,
markdownlint, cspell, actionlint); the PR gate and the publish job both
`need:` it, so nothing publishes that would fail the PR.
- Rewrote `publish-release` / `test-pull-request` /
`build-release-task`; deleted `get-version` / `build-nugetlibrary` /
`build-datebadge`.
- NuGet publishing is **keyless** via OIDC trusted publishing
(`NUGET_USERNAME`, no API key).
- **`repo-config/`** - rulesets, settings, and `configure.sh
apply|check` (the 5D config audit).
- **`cspell.json`** - single-source spell dictionary (extension + CLI +
CI read it).
- Reconciled `AGENTS.md` / `CODESTYLE.md` / `README.md` / `HISTORY.md`;
bumped to **1.5**.
## Go-live coordination (maintainer)
- The aggregator required check is renamed to **`Check pull request
workflow status job`**. The live ruleset still requires the old name, so
`repo-config/configure.sh apply` must run **in lockstep** with merging
this PR (it also fixes `delete_branch_on_merge`). Until then the live
required check is satisfied by the base-resolved old workflow.
- `version.json` is bumped (1.4 -> 1.5), a shipped input, so **merging
this to `develop` will auto-publish a `1.5` prerelease** to NuGet.
Intended, but flagging it.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The OIDC token is requested by `NuGet/login` inside the reusable
`build-release-task.yml`, so its `job_workflow_ref` names that file, not
the `publish-release.yml` entry workflow. The NuGet.org
trusted-publishing policy must name `build-release-task.yml`.
Found by the first real publish (1.5 prerelease on develop): `Token
exchange failed (HTTP 401) ... Workflow mismatch for policy
'LanguageTags': expected 'publish-release.yml', actual
'build-release-task.yml'`. Policy already repointed to
`build-release-task.yml`; this corrects WORKFLOW.md D4.7 / section 6 and
`configure.sh` to match.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 00:43

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

Promotes develop to main for the 1.5 stable release by switching to the branch-scoped, self-publishing CI/CD model (with a documented workflow contract) and codifying required GitHub repository settings/rulesets as code.

Changes:

  • Introduce a new CI/CD contract and verification methodology (WORKFLOW.md) and align contributor docs to it.
  • Replace the prior multi-workflow release pipeline with branch-scoped validation + build/publish reusable tasks, including OIDC trusted NuGet publishing.
  • Add repo-config/ configuration-as-code (rulesets, settings, drift-check/apply script) and centralize spelling configuration in cspell.json.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdNew canonical CI/CD contract, architecture, and audit methodology.
version.jsonBump version floor from 1.4 to 1.5 for the 1.5 release line.
repo-config/settings.jsonCodify repository merge/auto-merge settings for drift auditing.
repo-config/ruleset-main.jsonCodify main branch ruleset (merge-only, required checks, signatures, Copilot review).
repo-config/ruleset-develop.jsonCodify develop branch ruleset (squash-only + linear history, required checks, signatures).
repo-config/README.mdDocument how to apply/audit repo configuration and required-check lockstep.
repo-config/configure.shAdd idempotent apply/check script to enforce/audit rulesets, settings, and secret names.
README.mdUpdate release notes to 1.5 and remove outdated CI/badge/contributing details.
LanguageTags.code-workspaceRemove duplicate workspace spell dictionary in favor of cspell.json.
HISTORY.mdAdd 1.5 release notes focused on CI/CD and repo hardening changes.
cspell.jsonIntroduce repo-wide CSpell config and word list shared by editor/CLI/CI.
CODESTYLE.mdUpdate formatting/lint/spell guidance to reflect enforced CI tooling and repo state.
AGENTS.mdPoint CI/CD rules to WORKFLOW.md and update contributor-facing workflow/tooling guidance.
.vscode/tasks.jsonAdd codegen tasks and adjust task documentation comments.
.github/workflows/validate-task.ymlAdd reusable validation gate (unit tests + formatting/lint/spell/actionlint).
.github/workflows/test-pull-request.ymlSwitch PR gating to push-based CI with reusable validate + smoke build + required aggregator.
.github/workflows/run-periodic-codegen-pull-request.ymlUpdate daily codegen workflow docs/concurrency rationale.
.github/workflows/run-codegen-pull-request-task.ymlClarify dual-target codegen behavior and tighten step documentation.
.github/workflows/publish-release.ymlMove to branch-scoped self-publishing on shipped-input changes + manual dispatch.
.github/workflows/merge-bot-pull-request.ymlUpdate bot merge behavior to auto-merge Dependabot/codegen broadly under required checks.
.github/workflows/get-version-task.ymlRemove (versioning now inlined into build/release task).
.github/workflows/build-release-task.ymlInline versioning + build + OIDC NuGet publish + GitHub release + artifact cleanup.
.github/workflows/build-nugetlibrary-task.ymlRemove (superseded by unified build/release task).
.github/workflows/build-datebadge-task.ymlRemove (date badge workflow removed from release model).
.github/dependabot.ymlUpdate comments to match dual-target bot/update model and new workflow set.
.github/copilot-instructions.mdUpdate references to CODESTYLE sections and trim template-specific guidance.
.editorconfigMinor comment updates in .NET-only section.

Comment threadWORKFLOW.md Outdated
Comment threadrepo-config/README.md
Comment thread.github/workflows/build-release-task.yml
Two small doc corrections from Copilot's review of the promotion PR:
reorder D9.5/D9.6 in WORKFLOW.md, and fix a lowercase sentence start in
repo-config/README.md. The snupkg note was a false positive (the 1.5.1
publish log confirms the .snupkg was pushed to the symbol endpoint).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit 1efb18e into mainJun 28, 2026
10 checks passed
@ptr727
ptr727 deleted the develop branch June 28, 2026 00:58
@ptr727
ptr727 restored the develop branch June 28, 2026 01:24
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