Release: promote develop to main (2.0 - governance catalog repurpose) - #242

Merged
ptr727 merged 16 commits into
mainfrom
develop
Jul 5, 2026
Merged

Release: promote develop to main (2.0 - governance catalog repurpose)#242
ptr727 merged 16 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes the governance-catalog repurpose from develop to main. main is currently the pre-repurpose .NET sample template (tip #225); this brings develop (#226-#241) to main as the 2.0 release. Merge is conflict-free.

Scope:

  • ~28 files added - spec/ (project-types/files/secrets/readme-structure + schemas + validate.py), AUDIT.md, WORKFLOW.md, registry/, reports/ (5 per-repo audits), catalog/ snippets, repo-config/ rulesets, the VS Code workspace.
  • ~54 files removed - the old sample-project source, tests, and its per-target build/publish wiring.
  • Governance docs rewritten (AGENTS.md, CODESTYLE.md, README.md, HISTORY.md); version.json -> 2.0.

Merge as a merge-commit (the develop->main ruleset), on the maintainer.s explicit go-ahead - this is the release cut. Not closing #228: its retrospective is partially incorporated; the deferred sections (cross-platform framing, editor/scripts snippets, the Python HA profile, devcontainer) remain open.

🤖 Generated with Claude Code

ptr727and others added 15 commits July 4, 2026 17:06
#226)
Abandons the template-inheritance model and converts this repo into a
documentation, agent-orchestration, and workflow-audit catalog. Each
fleet project now owns its own implementation and is audited against the
ground truth here, rather than copying files from a template.
## Highlights
- **Demolition + relocation.** Remove the sample apps and .NET build
infra. Rulesets move to `repo-config/` (with `configure.sh`) since
`.github/` is Actions-owned; the app-specific build/publish/codegen
workflows and config exemplars move to `catalog/snippets/`.
- **Governance rewrite.** Strip template-inheritance framing from
AGENTS/README/CODESTYLE/WORKFLOW/copilot-instructions. Add the "durable
guidance lives in committed docs, not agent memory" principle. Split the
README (this repo's own vs `spec/readme-structure.md`, the fleet README
exemplar); salvage the GitHub-setup/ruleset/brownfield procedures into
`repo-config/README.md`.
- **Ground-truth spec.** `registry/repos.json` (self + 7 cataloged + 14
backlog), `spec/project-types.json` (per-type letter/intent checks plus
cross-cutting linter-parity, recurring-violations, branch-model,
secrets, readme-structure), `files.json`, `secrets.json`, JSON schemas,
and `spec/validate.py` (dependency-free classification dry-run).
- **AUDIT.md.** The read-only per-repo audit procedure, reusing
WORKFLOW.md's operational/N-A/defect vocabulary.
- **WORKFLOW.md.** Four mermaid flow diagrams (branch model, PR smoke,
publish matrix, artifact seam).
- **CI.** `test-pull-request.yml` is now lint-only (markdownlint +
cspell + actionlint + spec validation) behind the ruleset-bound
aggregator; `publish-release.yml` is a self-contained source-only
release. The repo classifies as the source-only type and audits itself.
- **Docs style.** Human-facing docs use grouped, alphabetized
reference-style links; the README carries a human-readable Rules index.
## Verification
markdownlint 0, cSpell 0, actionlint clean, `spec/validate.py`
classifies the fleet, all relative links resolve, EOL/charset clean, and
the self-audit confirms the rulesets match the documented branch model.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#227)
- Present-tense / current-state doc rule (AGENTS.md, README.md) and README violation fix; added to the Rules index.
- Canonical README structure restored in the exemplar and README.
- VS Code workspace catalog: base.jsonc plus dotnet/python/docker per-type fragments, and the repo's own ProjectTemplate.code-workspace.
- Table of Contents omit-marker convention, deterministic regardless of workspace load, documented in AGENTS.md.
- editorconfig CRLF default with LF exceptions, mirroring .gitattributes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…229)
- Reconcile AGENTS.md Line Endings with the [*]=crlf default + LF-exception policy.
- Default .py to CRLF (universal newlines); pin spec/validate.py LF by path as a shebang script.
- Add the EOL-audit method (byte-scan; not file/git-ls-files parsing).
- copilot-instructions: gh pr edit broken -> updatePullRequest/PATCH; rulesets not classic; push->SHA race; Copilot can be wrong.
- Git rule: check the maintainer's uncommitted edits before committing.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- cspell language en-US (a bare en accepts British spellings); documented in CODESTYLE and named in the spec recurring.spelling assertion (intentRef -> CODESTYLE).
- Docs reference the 2-digit major.minor version, never a 3-digit build.
- Closes #N goes on the develop->main promotion PR (auto-close fires only from the default branch).
- URLs in fenced code blocks stay inline; removing a link removes its orphaned reference definition.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
First per-repo audit (AUDIT.md), establishing the reports/ format. ptr727/Utilities main @ 8de105f. Verdict: operational; no defects, 8 drift findings (continuous push-publish vs two-phase, non-canonical release-asset seam, .editorconfig lacks global [*] end_of_line default, stale csproj versions, suffixed ruleset name, off-baseline repo-config filenames, README omissions, stale develop). cspell en-US + nuget OIDC confirmed clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Second per-repo audit (csharp+console+docker). ptr727/PlexCleaner main @ e84f142. Verdict: operational; no defects, 12 drift findings. Two recurring cross-repo drifts (ruleset context job-suffix; missing global [*] end_of_line default) flagged for a spec/lint machine-check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…233)
recurring.eol now requires .editorconfig to carry a global [*] end_of_line = crlf default plus LF pins; the per-extension-only form is a flagged drift. Makes the recurring cross-repo drift (Utilities, PlexCleaner) machine-checkable (AUDIT.md s9).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Third per-repo audit (csharp+nuget+codegen). ptr727/LanguageTags main @ 7322d72. Verdict: operational; no defects, 11 drift findings. codegen input-deterministic; nuget genuine OIDC. Recurring drifts confirmed across 3 repos. New spec gap: NUGET_USERNAME required by nuget-oidc but modeled as requires:[].
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fourth per-repo audit (docker+upstream-wrapper). ptr727/ESPHome-NonRoot main @ b44b1a6. Verdict: operational; no defects, 12 drift findings. Wrapper genuinely pinned (leaf consumes upstream-version.json). Strongest EOL case: 5 of 9 workflow YAML committed LF against the repo own .editorconfig - validates the #233 spec check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fifth/final stable audit (docker), completing the C#/Docker set. ptr727/VSCode-Server-DotNetCore main @ 80067f9. Verdict: operational; no defects, 13 drift findings. Docker-only (own multi-arch image, not a wrapper). Sharpest EOL case: build-docker-task.yml has mixed endings (4 LF lines at the Dependabot-rewritten uses: SHA lines) - automated tooling leaves mixed endings absent the global default; a per-line committed-endings check is warranted.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rename the ruleset-bound PR-gate aggregator to "Check pull request workflow status job" (fleet <name> job convention; old un-suffixed exception removed). Updates the job name, both repo-config rulesets, the live develop+main rulesets (in lockstep), and the exception rules + references in AGENTS.md/WORKFLOW.md/README.md. Corrects the Utilities/PlexCleaner reports (the ...job naming is canonical, not a drift).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 4: restructure spec/secrets.json into a fleet baseline (the App-token secrets the merge-bot needs everywhere) plus per-target/per-feature mechanism additions. nuget-oidc requires NUGET_USERNAME; codecov mechanism added (CODECOV_TOKEN); each publish mechanism declares an explicit kind (oidc|static-secret). Relax and harden validate.py: OIDC may require a non-secret username (forbids, not empty requires, enforces no-static-key), and the validator now shape-checks the whole secrets.json up front so malformed input reports clearly instead of crashing. Registry requiredSecrets and the codegen type reconciled to the baseline.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 2a: AUDIT.md section 10 codifies the convergence pattern - the agent applies audit fixes via a PR on the target repo, drives Copilot to green, and holds the merge for the maintainer; systemic drift is fixed in the hub.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… data pins (#240)
AGENTS.md line-ending guidance now requires the matching .editorconfig override alongside the .gitattributes pin for extensionless scripts (editor LF override) and byte-preserve data dirs (unset/false), closing the fleet divergence the EOL convergence surfaced.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
version.json 1.0 -> 2.0 (major: repurpose from a .NET sample template to a governance/workflow-audit catalog); README Release Notes -> 2.0; rewrote the stale placeholder HISTORY.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 5, 2026 18:01

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 2.0 release, completing the repo repurpose from a code-shipping .NET/Python sample template into a governance + workflow-audit catalog (spec/registry/audit reports, reference snippets, ruleset config, and lint-only CI/release automation).

Changes:

  • Bump versioning to 2.0 and refresh governance documentation for the catalog identity.
  • Remove the legacy sample implementation (C# projects, Python package, Docker build artifacts, tests/benchmarks) from main.
  • Add/refresh the governance catalog assets: spec/ validation + schemas, fleet registry/, audit reports/, repo-config/ rulesets + apply script, and reference catalog/ snippets; simplify CI/release workflows accordingly.

Reviewed changes

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

Show a summary per file
FileDescription
.config/dotnet-tools.jsonRemoves legacy .NET local tool manifest from the former sample template.
.dockerignoreRemoves Docker ignore rules tied to the former build/publish pipeline.
.editorconfigUpdates line-ending governance defaults (CRLF by default; LF for execution-sensitive paths).
.gitattributesPins LF for execution-sensitive files (including spec/validate.py) while keeping * -text.
.github/copilot-instructions.mdUpdates Copilot runbook guidance for the repurposed governance repo and ruleset-based gates.
.github/dependabot.ymlNarrows Dependabot config to GitHub Actions only, aligning with a source-only governance repo.
.github/workflows/publish-release.ymlReworks publishing into a source-only GitHub release per branch (no package/image publishes).
.github/workflows/test-pull-request.ymlReplaces build/test smoke pipeline with lint-only CI plus spec/registry validation.
.vscode/launch.jsonRemoves VS Code debug configurations for the deleted sample apps/tools.
AGENTS.mdGovernance/agent workflow rules updated for the catalog-focused repo.
AUDIT.mdAdds/updates the audit procedure used to evaluate downstream repos against the spec.
Benchmarks/.editorconfigRemoves benchmark-specific editor config from deleted sample benchmarks.
Benchmarks/Benchmarks.csprojRemoves the sample benchmark project.
Benchmarks/GlobalUsings.csRemoves benchmark global usings from deleted sample benchmarks.
Benchmarks/Program.csRemoves benchmark entry point.
Benchmarks/SampleBenchmark.csRemoves sample benchmark implementation.
CODESTYLE.mdUpdates coding/style governance docs for the catalog model.
CodeGen/.editorconfigRemoves codegen-specific editor config from deleted sample codegen project.
CodeGen/ApiNinjas.csRemoves sample codegen API client.
CodeGen/AssemblyInfo.csRemoves sample codegen assembly metadata helper.
CodeGen/CodeGen.csRemoves sample generated output file.
CodeGen/CodeGen.csprojRemoves the sample codegen project.
CodeGen/CodeGenBuilder.csRemoves sample code generator implementation.
CodeGen/CommandLine.csRemoves sample codegen CLI parsing.
CodeGen/Extensions.csRemoves sample logging extensions for the codegen tool.
CodeGen/GlobalUsings.csRemoves codegen global usings.
CodeGen/HttpClientFactory.csRemoves sample HTTP client factory/resilience code.
CodeGen/Program.csRemoves sample codegen entry point.
Console/.editorconfigRemoves console-app-specific editor config from deleted sample console.
Console/CommandLine.csRemoves sample console CLI implementation.
Console/Console.csprojRemoves sample console project definition.
Console/Extensions.csRemoves sample console logging extensions.
Console/GlobalUsings.csRemoves console global usings.
Console/LoggerFactory.csRemoves sample Serilog logger factory.
Console/Program.csRemoves sample console entry point.
Directory.Build.propsRemoves central MSBuild defaults from deleted .NET sample solution.
Directory.Packages.propsRemoves central package version management from deleted sample solution.
Docker/Build.shRemoves sample Docker build helper script.
Docker/DockerfileRemoves sample Docker image definition.
Docker/InstallDebugTools.shRemoves Docker debug tools installer for deleted sample image.
Docker/Version.shRemoves Docker version probe script.
HISTORY.mdUpdates release history to reflect the 2.0 repurpose (governance catalog).
NuGetLibrary/.editorconfigRemoves library-specific editor config from deleted sample library.
NuGetLibrary/Extensions.csRemoves sample library logging helpers.
NuGetLibrary/GlobalUsings.csRemoves library global usings.
NuGetLibrary/Library.csRemoves sample library implementation.
NuGetLibrary/LogOptions.csRemoves sample global logging options helper.
NuGetLibrary/NuGetLibrary.csprojRemoves sample NuGet library project definition.
NuGetLibrary/Options.csRemoves sample library options class.
ProjectTemplate.code-workspaceUpdates workspace recommendations/settings for governance-doc repo focus.
ProjectTemplate.slnxRemoves solution definition for deleted .NET projects.
PyPiLibrary/README.mdRemoves Python sample package documentation.
PyPiLibrary/pyproject.tomlRemoves Python sample package build configuration.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemoves Python sample package module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemoves Python sample versioning module.
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemoves Python sample implementation module.
PyPiLibrary/tests/init.pyRemoves Python sample tests package marker.
PyPiLibrary/tests/test_example.pyRemoves Python sample tests.
PyPiLibrary/uv.lockRemoves Python sample dependency lockfile.
README.mdUpdates the repo-level description and operational model for the governance catalog.
Tests/.editorconfigRemoves test-only editor config from deleted sample tests.
Tests/Fixture.csRemoves shared xUnit fixture scaffolding.
Tests/GlobalUsings.csRemoves test global usings.
Tests/LoggingTests.csRemoves sample logging tests.
Tests/SampleTest.csRemoves sample unit tests.
Tests/Tests.csprojRemoves sample test project definition.
WORKFLOW.mdAdds/updates workflow guarantees/methodology for auditing and CI/release behavior.
catalog/README.mdAdds/updates documentation for the reference snippet catalog.
catalog/snippets/configs/dependabot.ymlAdds a reference Dependabot configuration for downstream code-shipping repos.
catalog/snippets/configs/docker-hub-readme.mdAdds a reference Docker Hub README exemplar for downstream Docker repos.
catalog/snippets/configs/vscode-tasks.jsonAdds reference VS Code tasks (clean-compile and convenience tasks) for downstream repos.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdds a reference .NET devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/dotnet/post-create.shAdds a reference post-create script for the .NET devcontainer snippet.
catalog/snippets/devcontainer/python/devcontainer.jsonAdds a reference Python devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/python/post-create.shAdds a reference post-create script for the Python devcontainer snippet.
catalog/snippets/vscode/README.mdAdds documentation for composable VS Code workspace fragments.
catalog/snippets/vscode/base.jsoncAdds the baseline VS Code workspace fragment for downstream repos.
catalog/snippets/vscode/docker.jsoncAdds Docker-specific workspace fragment for downstream repos.
catalog/snippets/vscode/dotnet.jsoncAdds .NET-specific workspace fragment for downstream repos.
catalog/snippets/vscode/python.jsoncAdds Python-specific workspace fragment for downstream repos.
catalog/snippets/workflows/README.mdAdds mapping documentation from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/build-datebadge-task.ymlAdds reference reusable workflow for generating a date badge.
catalog/snippets/workflows/build-docker-task.ymlAdds reference reusable workflow for Docker build/push with registry caching.
catalog/snippets/workflows/build-executable-task.ymlAdds reference reusable workflow for building and packaging a console executable.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdds reference reusable workflow for building/pushing a NuGet package.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdds reference reusable workflow for building a PyPI package (publish split elsewhere).
catalog/snippets/workflows/build-release-task.ymlAdds reference multi-target release orchestrator reusable workflow.
catalog/snippets/workflows/check-upstream-version-task.ymlAdds reference reusable workflow for upstream-version tracking wrappers.
catalog/snippets/workflows/get-version-task.ymlAdds reference reusable workflow for NBGV-based version computation.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdds reference reusable workflow for publishing Docker Hub README content.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdds reference reusable workflow to run codegen and open PRs per branch.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdds reference scheduled workflow to trigger codegen PRs periodically.
cspell.jsonAdds/updates spelling configuration for lint parity across editor/CLI/CI.
docs/devcontainer.mdUpdates documentation around devcontainer usage for the governance repo.
docs/host-setup.mdUpdates host setup docs (links, references) for signing and tooling.
docs/ssh-signing.mdUpdates SSH signing docs (links, references) aligned with governance conventions.
registry/repos.jsonAdds/updates the fleet registry of repos, types, and publish mechanisms.
registry/repos.schema.jsonAdds JSON schema for the fleet registry file.
repo-config/README.mdAdds documentation for ruleset JSON and configuration workflow.
repo-config/configure.shAdds an idempotent ruleset-application script using the GitHub API.
repo-config/develop.jsonAdds/updates committed develop branch ruleset payload.
repo-config/main.jsonAdds/updates committed main branch ruleset payload.
reports/.gitkeepTracks the audit reports directory in git.
reports/_template.mdAdds a standard template for per-repo audit reports.
reports/esphome-nonroot/audit.mdAdds/updates an audit report for a fleet repo.
reports/languagetags/audit.mdAdds/updates an audit report for a fleet repo.
reports/plexcleaner/audit.mdAdds/updates an audit report for a fleet repo.
reports/utilities/audit.mdAdds/updates an audit report for a fleet repo.
reports/vscode-server-dotnetcore/audit.mdAdds/updates an audit report for a fleet repo.
spec/files.jsonAdds/updates the baseline file/section spec for audits.
spec/files.schema.jsonAdds JSON schema for the baseline files spec.
spec/project-types.jsonAdds/updates project type definitions and audit checks.
spec/project-types.schema.jsonAdds JSON schema for project types definitions.
spec/readme-structure.mdAdds the preferred README structure spec for downstream repos.
spec/secrets.jsonAdds/updates publish mechanism secrets model (required/forbidden).
spec/secrets.schema.jsonAdds JSON schema for the secrets spec.
spec/validate.pyAdds a stdlib-only validator for spec/registry cross-references (CI gate).
version.jsonBumps NBGV version to 2.0 for the release promotion.

Comment threadREADME.md Outdated
The README claimed the PR gate runs JSON-schema validation, but the workflow runs jq parse checks over registry/, spec/, and repo-config/ plus spec/validate.py cross-reference and shape checks. Corrected the description to match the workflow.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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

@ptr727
ptr727 merged commit a0f44a4 into mainJul 5, 2026
9 checks passed
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: promote develop to main (2.0 - governance catalog repurpose) - #242

Merged
ptr727 merged 16 commits into
mainfrom
develop
Jul 5, 2026
Merged

Release: promote develop to main (2.0 - governance catalog repurpose)#242
ptr727 merged 16 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes the governance-catalog repurpose from develop to main. main is currently the pre-repurpose .NET sample template (tip #225); this brings develop (#226-#241) to main as the 2.0 release. Merge is conflict-free.

Scope:

  • ~28 files added - spec/ (project-types/files/secrets/readme-structure + schemas + validate.py), AUDIT.md, WORKFLOW.md, registry/, reports/ (5 per-repo audits), catalog/ snippets, repo-config/ rulesets, the VS Code workspace.
  • ~54 files removed - the old sample-project source, tests, and its per-target build/publish wiring.
  • Governance docs rewritten (AGENTS.md, CODESTYLE.md, README.md, HISTORY.md); version.json -> 2.0.

Merge as a merge-commit (the develop->main ruleset), on the maintainer.s explicit go-ahead - this is the release cut. Not closing #228: its retrospective is partially incorporated; the deferred sections (cross-platform framing, editor/scripts snippets, the Python HA profile, devcontainer) remain open.

🤖 Generated with Claude Code

ptr727and others added 15 commits July 4, 2026 17:06
#226)
Abandons the template-inheritance model and converts this repo into a
documentation, agent-orchestration, and workflow-audit catalog. Each
fleet project now owns its own implementation and is audited against the
ground truth here, rather than copying files from a template.
## Highlights
- **Demolition + relocation.** Remove the sample apps and .NET build
infra. Rulesets move to `repo-config/` (with `configure.sh`) since
`.github/` is Actions-owned; the app-specific build/publish/codegen
workflows and config exemplars move to `catalog/snippets/`.
- **Governance rewrite.** Strip template-inheritance framing from
AGENTS/README/CODESTYLE/WORKFLOW/copilot-instructions. Add the "durable
guidance lives in committed docs, not agent memory" principle. Split the
README (this repo's own vs `spec/readme-structure.md`, the fleet README
exemplar); salvage the GitHub-setup/ruleset/brownfield procedures into
`repo-config/README.md`.
- **Ground-truth spec.** `registry/repos.json` (self + 7 cataloged + 14
backlog), `spec/project-types.json` (per-type letter/intent checks plus
cross-cutting linter-parity, recurring-violations, branch-model,
secrets, readme-structure), `files.json`, `secrets.json`, JSON schemas,
and `spec/validate.py` (dependency-free classification dry-run).
- **AUDIT.md.** The read-only per-repo audit procedure, reusing
WORKFLOW.md's operational/N-A/defect vocabulary.
- **WORKFLOW.md.** Four mermaid flow diagrams (branch model, PR smoke,
publish matrix, artifact seam).
- **CI.** `test-pull-request.yml` is now lint-only (markdownlint +
cspell + actionlint + spec validation) behind the ruleset-bound
aggregator; `publish-release.yml` is a self-contained source-only
release. The repo classifies as the source-only type and audits itself.
- **Docs style.** Human-facing docs use grouped, alphabetized
reference-style links; the README carries a human-readable Rules index.
## Verification
markdownlint 0, cSpell 0, actionlint clean, `spec/validate.py`
classifies the fleet, all relative links resolve, EOL/charset clean, and
the self-audit confirms the rulesets match the documented branch model.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#227)
- Present-tense / current-state doc rule (AGENTS.md, README.md) and README violation fix; added to the Rules index.
- Canonical README structure restored in the exemplar and README.
- VS Code workspace catalog: base.jsonc plus dotnet/python/docker per-type fragments, and the repo's own ProjectTemplate.code-workspace.
- Table of Contents omit-marker convention, deterministic regardless of workspace load, documented in AGENTS.md.
- editorconfig CRLF default with LF exceptions, mirroring .gitattributes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…229)
- Reconcile AGENTS.md Line Endings with the [*]=crlf default + LF-exception policy.
- Default .py to CRLF (universal newlines); pin spec/validate.py LF by path as a shebang script.
- Add the EOL-audit method (byte-scan; not file/git-ls-files parsing).
- copilot-instructions: gh pr edit broken -> updatePullRequest/PATCH; rulesets not classic; push->SHA race; Copilot can be wrong.
- Git rule: check the maintainer's uncommitted edits before committing.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- cspell language en-US (a bare en accepts British spellings); documented in CODESTYLE and named in the spec recurring.spelling assertion (intentRef -> CODESTYLE).
- Docs reference the 2-digit major.minor version, never a 3-digit build.
- Closes #N goes on the develop->main promotion PR (auto-close fires only from the default branch).
- URLs in fenced code blocks stay inline; removing a link removes its orphaned reference definition.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
First per-repo audit (AUDIT.md), establishing the reports/ format. ptr727/Utilities main @ 8de105f. Verdict: operational; no defects, 8 drift findings (continuous push-publish vs two-phase, non-canonical release-asset seam, .editorconfig lacks global [*] end_of_line default, stale csproj versions, suffixed ruleset name, off-baseline repo-config filenames, README omissions, stale develop). cspell en-US + nuget OIDC confirmed clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Second per-repo audit (csharp+console+docker). ptr727/PlexCleaner main @ e84f142. Verdict: operational; no defects, 12 drift findings. Two recurring cross-repo drifts (ruleset context job-suffix; missing global [*] end_of_line default) flagged for a spec/lint machine-check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…233)
recurring.eol now requires .editorconfig to carry a global [*] end_of_line = crlf default plus LF pins; the per-extension-only form is a flagged drift. Makes the recurring cross-repo drift (Utilities, PlexCleaner) machine-checkable (AUDIT.md s9).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Third per-repo audit (csharp+nuget+codegen). ptr727/LanguageTags main @ 7322d72. Verdict: operational; no defects, 11 drift findings. codegen input-deterministic; nuget genuine OIDC. Recurring drifts confirmed across 3 repos. New spec gap: NUGET_USERNAME required by nuget-oidc but modeled as requires:[].
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fourth per-repo audit (docker+upstream-wrapper). ptr727/ESPHome-NonRoot main @ b44b1a6. Verdict: operational; no defects, 12 drift findings. Wrapper genuinely pinned (leaf consumes upstream-version.json). Strongest EOL case: 5 of 9 workflow YAML committed LF against the repo own .editorconfig - validates the #233 spec check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fifth/final stable audit (docker), completing the C#/Docker set. ptr727/VSCode-Server-DotNetCore main @ 80067f9. Verdict: operational; no defects, 13 drift findings. Docker-only (own multi-arch image, not a wrapper). Sharpest EOL case: build-docker-task.yml has mixed endings (4 LF lines at the Dependabot-rewritten uses: SHA lines) - automated tooling leaves mixed endings absent the global default; a per-line committed-endings check is warranted.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rename the ruleset-bound PR-gate aggregator to "Check pull request workflow status job" (fleet <name> job convention; old un-suffixed exception removed). Updates the job name, both repo-config rulesets, the live develop+main rulesets (in lockstep), and the exception rules + references in AGENTS.md/WORKFLOW.md/README.md. Corrects the Utilities/PlexCleaner reports (the ...job naming is canonical, not a drift).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 4: restructure spec/secrets.json into a fleet baseline (the App-token secrets the merge-bot needs everywhere) plus per-target/per-feature mechanism additions. nuget-oidc requires NUGET_USERNAME; codecov mechanism added (CODECOV_TOKEN); each publish mechanism declares an explicit kind (oidc|static-secret). Relax and harden validate.py: OIDC may require a non-secret username (forbids, not empty requires, enforces no-static-key), and the validator now shape-checks the whole secrets.json up front so malformed input reports clearly instead of crashing. Registry requiredSecrets and the codegen type reconciled to the baseline.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 2a: AUDIT.md section 10 codifies the convergence pattern - the agent applies audit fixes via a PR on the target repo, drives Copilot to green, and holds the merge for the maintainer; systemic drift is fixed in the hub.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… data pins (#240)
AGENTS.md line-ending guidance now requires the matching .editorconfig override alongside the .gitattributes pin for extensionless scripts (editor LF override) and byte-preserve data dirs (unset/false), closing the fleet divergence the EOL convergence surfaced.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
version.json 1.0 -> 2.0 (major: repurpose from a .NET sample template to a governance/workflow-audit catalog); README Release Notes -> 2.0; rewrote the stale placeholder HISTORY.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 5, 2026 18:01

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 2.0 release, completing the repo repurpose from a code-shipping .NET/Python sample template into a governance + workflow-audit catalog (spec/registry/audit reports, reference snippets, ruleset config, and lint-only CI/release automation).

Changes:

  • Bump versioning to 2.0 and refresh governance documentation for the catalog identity.
  • Remove the legacy sample implementation (C# projects, Python package, Docker build artifacts, tests/benchmarks) from main.
  • Add/refresh the governance catalog assets: spec/ validation + schemas, fleet registry/, audit reports/, repo-config/ rulesets + apply script, and reference catalog/ snippets; simplify CI/release workflows accordingly.

Reviewed changes

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

Show a summary per file
FileDescription
.config/dotnet-tools.jsonRemoves legacy .NET local tool manifest from the former sample template.
.dockerignoreRemoves Docker ignore rules tied to the former build/publish pipeline.
.editorconfigUpdates line-ending governance defaults (CRLF by default; LF for execution-sensitive paths).
.gitattributesPins LF for execution-sensitive files (including spec/validate.py) while keeping * -text.
.github/copilot-instructions.mdUpdates Copilot runbook guidance for the repurposed governance repo and ruleset-based gates.
.github/dependabot.ymlNarrows Dependabot config to GitHub Actions only, aligning with a source-only governance repo.
.github/workflows/publish-release.ymlReworks publishing into a source-only GitHub release per branch (no package/image publishes).
.github/workflows/test-pull-request.ymlReplaces build/test smoke pipeline with lint-only CI plus spec/registry validation.
.vscode/launch.jsonRemoves VS Code debug configurations for the deleted sample apps/tools.
AGENTS.mdGovernance/agent workflow rules updated for the catalog-focused repo.
AUDIT.mdAdds/updates the audit procedure used to evaluate downstream repos against the spec.
Benchmarks/.editorconfigRemoves benchmark-specific editor config from deleted sample benchmarks.
Benchmarks/Benchmarks.csprojRemoves the sample benchmark project.
Benchmarks/GlobalUsings.csRemoves benchmark global usings from deleted sample benchmarks.
Benchmarks/Program.csRemoves benchmark entry point.
Benchmarks/SampleBenchmark.csRemoves sample benchmark implementation.
CODESTYLE.mdUpdates coding/style governance docs for the catalog model.
CodeGen/.editorconfigRemoves codegen-specific editor config from deleted sample codegen project.
CodeGen/ApiNinjas.csRemoves sample codegen API client.
CodeGen/AssemblyInfo.csRemoves sample codegen assembly metadata helper.
CodeGen/CodeGen.csRemoves sample generated output file.
CodeGen/CodeGen.csprojRemoves the sample codegen project.
CodeGen/CodeGenBuilder.csRemoves sample code generator implementation.
CodeGen/CommandLine.csRemoves sample codegen CLI parsing.
CodeGen/Extensions.csRemoves sample logging extensions for the codegen tool.
CodeGen/GlobalUsings.csRemoves codegen global usings.
CodeGen/HttpClientFactory.csRemoves sample HTTP client factory/resilience code.
CodeGen/Program.csRemoves sample codegen entry point.
Console/.editorconfigRemoves console-app-specific editor config from deleted sample console.
Console/CommandLine.csRemoves sample console CLI implementation.
Console/Console.csprojRemoves sample console project definition.
Console/Extensions.csRemoves sample console logging extensions.
Console/GlobalUsings.csRemoves console global usings.
Console/LoggerFactory.csRemoves sample Serilog logger factory.
Console/Program.csRemoves sample console entry point.
Directory.Build.propsRemoves central MSBuild defaults from deleted .NET sample solution.
Directory.Packages.propsRemoves central package version management from deleted sample solution.
Docker/Build.shRemoves sample Docker build helper script.
Docker/DockerfileRemoves sample Docker image definition.
Docker/InstallDebugTools.shRemoves Docker debug tools installer for deleted sample image.
Docker/Version.shRemoves Docker version probe script.
HISTORY.mdUpdates release history to reflect the 2.0 repurpose (governance catalog).
NuGetLibrary/.editorconfigRemoves library-specific editor config from deleted sample library.
NuGetLibrary/Extensions.csRemoves sample library logging helpers.
NuGetLibrary/GlobalUsings.csRemoves library global usings.
NuGetLibrary/Library.csRemoves sample library implementation.
NuGetLibrary/LogOptions.csRemoves sample global logging options helper.
NuGetLibrary/NuGetLibrary.csprojRemoves sample NuGet library project definition.
NuGetLibrary/Options.csRemoves sample library options class.
ProjectTemplate.code-workspaceUpdates workspace recommendations/settings for governance-doc repo focus.
ProjectTemplate.slnxRemoves solution definition for deleted .NET projects.
PyPiLibrary/README.mdRemoves Python sample package documentation.
PyPiLibrary/pyproject.tomlRemoves Python sample package build configuration.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemoves Python sample package module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemoves Python sample versioning module.
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemoves Python sample implementation module.
PyPiLibrary/tests/init.pyRemoves Python sample tests package marker.
PyPiLibrary/tests/test_example.pyRemoves Python sample tests.
PyPiLibrary/uv.lockRemoves Python sample dependency lockfile.
README.mdUpdates the repo-level description and operational model for the governance catalog.
Tests/.editorconfigRemoves test-only editor config from deleted sample tests.
Tests/Fixture.csRemoves shared xUnit fixture scaffolding.
Tests/GlobalUsings.csRemoves test global usings.
Tests/LoggingTests.csRemoves sample logging tests.
Tests/SampleTest.csRemoves sample unit tests.
Tests/Tests.csprojRemoves sample test project definition.
WORKFLOW.mdAdds/updates workflow guarantees/methodology for auditing and CI/release behavior.
catalog/README.mdAdds/updates documentation for the reference snippet catalog.
catalog/snippets/configs/dependabot.ymlAdds a reference Dependabot configuration for downstream code-shipping repos.
catalog/snippets/configs/docker-hub-readme.mdAdds a reference Docker Hub README exemplar for downstream Docker repos.
catalog/snippets/configs/vscode-tasks.jsonAdds reference VS Code tasks (clean-compile and convenience tasks) for downstream repos.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdds a reference .NET devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/dotnet/post-create.shAdds a reference post-create script for the .NET devcontainer snippet.
catalog/snippets/devcontainer/python/devcontainer.jsonAdds a reference Python devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/python/post-create.shAdds a reference post-create script for the Python devcontainer snippet.
catalog/snippets/vscode/README.mdAdds documentation for composable VS Code workspace fragments.
catalog/snippets/vscode/base.jsoncAdds the baseline VS Code workspace fragment for downstream repos.
catalog/snippets/vscode/docker.jsoncAdds Docker-specific workspace fragment for downstream repos.
catalog/snippets/vscode/dotnet.jsoncAdds .NET-specific workspace fragment for downstream repos.
catalog/snippets/vscode/python.jsoncAdds Python-specific workspace fragment for downstream repos.
catalog/snippets/workflows/README.mdAdds mapping documentation from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/build-datebadge-task.ymlAdds reference reusable workflow for generating a date badge.
catalog/snippets/workflows/build-docker-task.ymlAdds reference reusable workflow for Docker build/push with registry caching.
catalog/snippets/workflows/build-executable-task.ymlAdds reference reusable workflow for building and packaging a console executable.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdds reference reusable workflow for building/pushing a NuGet package.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdds reference reusable workflow for building a PyPI package (publish split elsewhere).
catalog/snippets/workflows/build-release-task.ymlAdds reference multi-target release orchestrator reusable workflow.
catalog/snippets/workflows/check-upstream-version-task.ymlAdds reference reusable workflow for upstream-version tracking wrappers.
catalog/snippets/workflows/get-version-task.ymlAdds reference reusable workflow for NBGV-based version computation.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdds reference reusable workflow for publishing Docker Hub README content.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdds reference reusable workflow to run codegen and open PRs per branch.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdds reference scheduled workflow to trigger codegen PRs periodically.
cspell.jsonAdds/updates spelling configuration for lint parity across editor/CLI/CI.
docs/devcontainer.mdUpdates documentation around devcontainer usage for the governance repo.
docs/host-setup.mdUpdates host setup docs (links, references) for signing and tooling.
docs/ssh-signing.mdUpdates SSH signing docs (links, references) aligned with governance conventions.
registry/repos.jsonAdds/updates the fleet registry of repos, types, and publish mechanisms.
registry/repos.schema.jsonAdds JSON schema for the fleet registry file.
repo-config/README.mdAdds documentation for ruleset JSON and configuration workflow.
repo-config/configure.shAdds an idempotent ruleset-application script using the GitHub API.
repo-config/develop.jsonAdds/updates committed develop branch ruleset payload.
repo-config/main.jsonAdds/updates committed main branch ruleset payload.
reports/.gitkeepTracks the audit reports directory in git.
reports/_template.mdAdds a standard template for per-repo audit reports.
reports/esphome-nonroot/audit.mdAdds/updates an audit report for a fleet repo.
reports/languagetags/audit.mdAdds/updates an audit report for a fleet repo.
reports/plexcleaner/audit.mdAdds/updates an audit report for a fleet repo.
reports/utilities/audit.mdAdds/updates an audit report for a fleet repo.
reports/vscode-server-dotnetcore/audit.mdAdds/updates an audit report for a fleet repo.
spec/files.jsonAdds/updates the baseline file/section spec for audits.
spec/files.schema.jsonAdds JSON schema for the baseline files spec.
spec/project-types.jsonAdds/updates project type definitions and audit checks.
spec/project-types.schema.jsonAdds JSON schema for project types definitions.
spec/readme-structure.mdAdds the preferred README structure spec for downstream repos.
spec/secrets.jsonAdds/updates publish mechanism secrets model (required/forbidden).
spec/secrets.schema.jsonAdds JSON schema for the secrets spec.
spec/validate.pyAdds a stdlib-only validator for spec/registry cross-references (CI gate).
version.jsonBumps NBGV version to 2.0 for the release promotion.

Comment threadREADME.md Outdated
The README claimed the PR gate runs JSON-schema validation, but the workflow runs jq parse checks over registry/, spec/, and repo-config/ plus spec/validate.py cross-reference and shape checks. Corrected the description to match the workflow.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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

@ptr727
ptr727 merged commit a0f44a4 into mainJul 5, 2026
9 checks passed
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: promote develop to main (2.0 - governance catalog repurpose) - #242

Merged
ptr727 merged 16 commits into
mainfrom
develop
Jul 5, 2026
Merged

Release: promote develop to main (2.0 - governance catalog repurpose)#242
ptr727 merged 16 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes the governance-catalog repurpose from develop to main. main is currently the pre-repurpose .NET sample template (tip #225); this brings develop (#226-#241) to main as the 2.0 release. Merge is conflict-free.

Scope:

  • ~28 files added - spec/ (project-types/files/secrets/readme-structure + schemas + validate.py), AUDIT.md, WORKFLOW.md, registry/, reports/ (5 per-repo audits), catalog/ snippets, repo-config/ rulesets, the VS Code workspace.
  • ~54 files removed - the old sample-project source, tests, and its per-target build/publish wiring.
  • Governance docs rewritten (AGENTS.md, CODESTYLE.md, README.md, HISTORY.md); version.json -> 2.0.

Merge as a merge-commit (the develop->main ruleset), on the maintainer.s explicit go-ahead - this is the release cut. Not closing #228: its retrospective is partially incorporated; the deferred sections (cross-platform framing, editor/scripts snippets, the Python HA profile, devcontainer) remain open.

🤖 Generated with Claude Code

ptr727and others added 15 commits July 4, 2026 17:06
#226)
Abandons the template-inheritance model and converts this repo into a
documentation, agent-orchestration, and workflow-audit catalog. Each
fleet project now owns its own implementation and is audited against the
ground truth here, rather than copying files from a template.
## Highlights
- **Demolition + relocation.** Remove the sample apps and .NET build
infra. Rulesets move to `repo-config/` (with `configure.sh`) since
`.github/` is Actions-owned; the app-specific build/publish/codegen
workflows and config exemplars move to `catalog/snippets/`.
- **Governance rewrite.** Strip template-inheritance framing from
AGENTS/README/CODESTYLE/WORKFLOW/copilot-instructions. Add the "durable
guidance lives in committed docs, not agent memory" principle. Split the
README (this repo's own vs `spec/readme-structure.md`, the fleet README
exemplar); salvage the GitHub-setup/ruleset/brownfield procedures into
`repo-config/README.md`.
- **Ground-truth spec.** `registry/repos.json` (self + 7 cataloged + 14
backlog), `spec/project-types.json` (per-type letter/intent checks plus
cross-cutting linter-parity, recurring-violations, branch-model,
secrets, readme-structure), `files.json`, `secrets.json`, JSON schemas,
and `spec/validate.py` (dependency-free classification dry-run).
- **AUDIT.md.** The read-only per-repo audit procedure, reusing
WORKFLOW.md's operational/N-A/defect vocabulary.
- **WORKFLOW.md.** Four mermaid flow diagrams (branch model, PR smoke,
publish matrix, artifact seam).
- **CI.** `test-pull-request.yml` is now lint-only (markdownlint +
cspell + actionlint + spec validation) behind the ruleset-bound
aggregator; `publish-release.yml` is a self-contained source-only
release. The repo classifies as the source-only type and audits itself.
- **Docs style.** Human-facing docs use grouped, alphabetized
reference-style links; the README carries a human-readable Rules index.
## Verification
markdownlint 0, cSpell 0, actionlint clean, `spec/validate.py`
classifies the fleet, all relative links resolve, EOL/charset clean, and
the self-audit confirms the rulesets match the documented branch model.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#227)
- Present-tense / current-state doc rule (AGENTS.md, README.md) and README violation fix; added to the Rules index.
- Canonical README structure restored in the exemplar and README.
- VS Code workspace catalog: base.jsonc plus dotnet/python/docker per-type fragments, and the repo's own ProjectTemplate.code-workspace.
- Table of Contents omit-marker convention, deterministic regardless of workspace load, documented in AGENTS.md.
- editorconfig CRLF default with LF exceptions, mirroring .gitattributes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…229)
- Reconcile AGENTS.md Line Endings with the [*]=crlf default + LF-exception policy.
- Default .py to CRLF (universal newlines); pin spec/validate.py LF by path as a shebang script.
- Add the EOL-audit method (byte-scan; not file/git-ls-files parsing).
- copilot-instructions: gh pr edit broken -> updatePullRequest/PATCH; rulesets not classic; push->SHA race; Copilot can be wrong.
- Git rule: check the maintainer's uncommitted edits before committing.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- cspell language en-US (a bare en accepts British spellings); documented in CODESTYLE and named in the spec recurring.spelling assertion (intentRef -> CODESTYLE).
- Docs reference the 2-digit major.minor version, never a 3-digit build.
- Closes #N goes on the develop->main promotion PR (auto-close fires only from the default branch).
- URLs in fenced code blocks stay inline; removing a link removes its orphaned reference definition.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
First per-repo audit (AUDIT.md), establishing the reports/ format. ptr727/Utilities main @ 8de105f. Verdict: operational; no defects, 8 drift findings (continuous push-publish vs two-phase, non-canonical release-asset seam, .editorconfig lacks global [*] end_of_line default, stale csproj versions, suffixed ruleset name, off-baseline repo-config filenames, README omissions, stale develop). cspell en-US + nuget OIDC confirmed clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Second per-repo audit (csharp+console+docker). ptr727/PlexCleaner main @ e84f142. Verdict: operational; no defects, 12 drift findings. Two recurring cross-repo drifts (ruleset context job-suffix; missing global [*] end_of_line default) flagged for a spec/lint machine-check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…233)
recurring.eol now requires .editorconfig to carry a global [*] end_of_line = crlf default plus LF pins; the per-extension-only form is a flagged drift. Makes the recurring cross-repo drift (Utilities, PlexCleaner) machine-checkable (AUDIT.md s9).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Third per-repo audit (csharp+nuget+codegen). ptr727/LanguageTags main @ 7322d72. Verdict: operational; no defects, 11 drift findings. codegen input-deterministic; nuget genuine OIDC. Recurring drifts confirmed across 3 repos. New spec gap: NUGET_USERNAME required by nuget-oidc but modeled as requires:[].
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fourth per-repo audit (docker+upstream-wrapper). ptr727/ESPHome-NonRoot main @ b44b1a6. Verdict: operational; no defects, 12 drift findings. Wrapper genuinely pinned (leaf consumes upstream-version.json). Strongest EOL case: 5 of 9 workflow YAML committed LF against the repo own .editorconfig - validates the #233 spec check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fifth/final stable audit (docker), completing the C#/Docker set. ptr727/VSCode-Server-DotNetCore main @ 80067f9. Verdict: operational; no defects, 13 drift findings. Docker-only (own multi-arch image, not a wrapper). Sharpest EOL case: build-docker-task.yml has mixed endings (4 LF lines at the Dependabot-rewritten uses: SHA lines) - automated tooling leaves mixed endings absent the global default; a per-line committed-endings check is warranted.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rename the ruleset-bound PR-gate aggregator to "Check pull request workflow status job" (fleet <name> job convention; old un-suffixed exception removed). Updates the job name, both repo-config rulesets, the live develop+main rulesets (in lockstep), and the exception rules + references in AGENTS.md/WORKFLOW.md/README.md. Corrects the Utilities/PlexCleaner reports (the ...job naming is canonical, not a drift).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 4: restructure spec/secrets.json into a fleet baseline (the App-token secrets the merge-bot needs everywhere) plus per-target/per-feature mechanism additions. nuget-oidc requires NUGET_USERNAME; codecov mechanism added (CODECOV_TOKEN); each publish mechanism declares an explicit kind (oidc|static-secret). Relax and harden validate.py: OIDC may require a non-secret username (forbids, not empty requires, enforces no-static-key), and the validator now shape-checks the whole secrets.json up front so malformed input reports clearly instead of crashing. Registry requiredSecrets and the codegen type reconciled to the baseline.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 2a: AUDIT.md section 10 codifies the convergence pattern - the agent applies audit fixes via a PR on the target repo, drives Copilot to green, and holds the merge for the maintainer; systemic drift is fixed in the hub.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… data pins (#240)
AGENTS.md line-ending guidance now requires the matching .editorconfig override alongside the .gitattributes pin for extensionless scripts (editor LF override) and byte-preserve data dirs (unset/false), closing the fleet divergence the EOL convergence surfaced.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
version.json 1.0 -> 2.0 (major: repurpose from a .NET sample template to a governance/workflow-audit catalog); README Release Notes -> 2.0; rewrote the stale placeholder HISTORY.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 5, 2026 18:01

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 2.0 release, completing the repo repurpose from a code-shipping .NET/Python sample template into a governance + workflow-audit catalog (spec/registry/audit reports, reference snippets, ruleset config, and lint-only CI/release automation).

Changes:

  • Bump versioning to 2.0 and refresh governance documentation for the catalog identity.
  • Remove the legacy sample implementation (C# projects, Python package, Docker build artifacts, tests/benchmarks) from main.
  • Add/refresh the governance catalog assets: spec/ validation + schemas, fleet registry/, audit reports/, repo-config/ rulesets + apply script, and reference catalog/ snippets; simplify CI/release workflows accordingly.

Reviewed changes

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

Show a summary per file
FileDescription
.config/dotnet-tools.jsonRemoves legacy .NET local tool manifest from the former sample template.
.dockerignoreRemoves Docker ignore rules tied to the former build/publish pipeline.
.editorconfigUpdates line-ending governance defaults (CRLF by default; LF for execution-sensitive paths).
.gitattributesPins LF for execution-sensitive files (including spec/validate.py) while keeping * -text.
.github/copilot-instructions.mdUpdates Copilot runbook guidance for the repurposed governance repo and ruleset-based gates.
.github/dependabot.ymlNarrows Dependabot config to GitHub Actions only, aligning with a source-only governance repo.
.github/workflows/publish-release.ymlReworks publishing into a source-only GitHub release per branch (no package/image publishes).
.github/workflows/test-pull-request.ymlReplaces build/test smoke pipeline with lint-only CI plus spec/registry validation.
.vscode/launch.jsonRemoves VS Code debug configurations for the deleted sample apps/tools.
AGENTS.mdGovernance/agent workflow rules updated for the catalog-focused repo.
AUDIT.mdAdds/updates the audit procedure used to evaluate downstream repos against the spec.
Benchmarks/.editorconfigRemoves benchmark-specific editor config from deleted sample benchmarks.
Benchmarks/Benchmarks.csprojRemoves the sample benchmark project.
Benchmarks/GlobalUsings.csRemoves benchmark global usings from deleted sample benchmarks.
Benchmarks/Program.csRemoves benchmark entry point.
Benchmarks/SampleBenchmark.csRemoves sample benchmark implementation.
CODESTYLE.mdUpdates coding/style governance docs for the catalog model.
CodeGen/.editorconfigRemoves codegen-specific editor config from deleted sample codegen project.
CodeGen/ApiNinjas.csRemoves sample codegen API client.
CodeGen/AssemblyInfo.csRemoves sample codegen assembly metadata helper.
CodeGen/CodeGen.csRemoves sample generated output file.
CodeGen/CodeGen.csprojRemoves the sample codegen project.
CodeGen/CodeGenBuilder.csRemoves sample code generator implementation.
CodeGen/CommandLine.csRemoves sample codegen CLI parsing.
CodeGen/Extensions.csRemoves sample logging extensions for the codegen tool.
CodeGen/GlobalUsings.csRemoves codegen global usings.
CodeGen/HttpClientFactory.csRemoves sample HTTP client factory/resilience code.
CodeGen/Program.csRemoves sample codegen entry point.
Console/.editorconfigRemoves console-app-specific editor config from deleted sample console.
Console/CommandLine.csRemoves sample console CLI implementation.
Console/Console.csprojRemoves sample console project definition.
Console/Extensions.csRemoves sample console logging extensions.
Console/GlobalUsings.csRemoves console global usings.
Console/LoggerFactory.csRemoves sample Serilog logger factory.
Console/Program.csRemoves sample console entry point.
Directory.Build.propsRemoves central MSBuild defaults from deleted .NET sample solution.
Directory.Packages.propsRemoves central package version management from deleted sample solution.
Docker/Build.shRemoves sample Docker build helper script.
Docker/DockerfileRemoves sample Docker image definition.
Docker/InstallDebugTools.shRemoves Docker debug tools installer for deleted sample image.
Docker/Version.shRemoves Docker version probe script.
HISTORY.mdUpdates release history to reflect the 2.0 repurpose (governance catalog).
NuGetLibrary/.editorconfigRemoves library-specific editor config from deleted sample library.
NuGetLibrary/Extensions.csRemoves sample library logging helpers.
NuGetLibrary/GlobalUsings.csRemoves library global usings.
NuGetLibrary/Library.csRemoves sample library implementation.
NuGetLibrary/LogOptions.csRemoves sample global logging options helper.
NuGetLibrary/NuGetLibrary.csprojRemoves sample NuGet library project definition.
NuGetLibrary/Options.csRemoves sample library options class.
ProjectTemplate.code-workspaceUpdates workspace recommendations/settings for governance-doc repo focus.
ProjectTemplate.slnxRemoves solution definition for deleted .NET projects.
PyPiLibrary/README.mdRemoves Python sample package documentation.
PyPiLibrary/pyproject.tomlRemoves Python sample package build configuration.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemoves Python sample package module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemoves Python sample versioning module.
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemoves Python sample implementation module.
PyPiLibrary/tests/init.pyRemoves Python sample tests package marker.
PyPiLibrary/tests/test_example.pyRemoves Python sample tests.
PyPiLibrary/uv.lockRemoves Python sample dependency lockfile.
README.mdUpdates the repo-level description and operational model for the governance catalog.
Tests/.editorconfigRemoves test-only editor config from deleted sample tests.
Tests/Fixture.csRemoves shared xUnit fixture scaffolding.
Tests/GlobalUsings.csRemoves test global usings.
Tests/LoggingTests.csRemoves sample logging tests.
Tests/SampleTest.csRemoves sample unit tests.
Tests/Tests.csprojRemoves sample test project definition.
WORKFLOW.mdAdds/updates workflow guarantees/methodology for auditing and CI/release behavior.
catalog/README.mdAdds/updates documentation for the reference snippet catalog.
catalog/snippets/configs/dependabot.ymlAdds a reference Dependabot configuration for downstream code-shipping repos.
catalog/snippets/configs/docker-hub-readme.mdAdds a reference Docker Hub README exemplar for downstream Docker repos.
catalog/snippets/configs/vscode-tasks.jsonAdds reference VS Code tasks (clean-compile and convenience tasks) for downstream repos.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdds a reference .NET devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/dotnet/post-create.shAdds a reference post-create script for the .NET devcontainer snippet.
catalog/snippets/devcontainer/python/devcontainer.jsonAdds a reference Python devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/python/post-create.shAdds a reference post-create script for the Python devcontainer snippet.
catalog/snippets/vscode/README.mdAdds documentation for composable VS Code workspace fragments.
catalog/snippets/vscode/base.jsoncAdds the baseline VS Code workspace fragment for downstream repos.
catalog/snippets/vscode/docker.jsoncAdds Docker-specific workspace fragment for downstream repos.
catalog/snippets/vscode/dotnet.jsoncAdds .NET-specific workspace fragment for downstream repos.
catalog/snippets/vscode/python.jsoncAdds Python-specific workspace fragment for downstream repos.
catalog/snippets/workflows/README.mdAdds mapping documentation from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/build-datebadge-task.ymlAdds reference reusable workflow for generating a date badge.
catalog/snippets/workflows/build-docker-task.ymlAdds reference reusable workflow for Docker build/push with registry caching.
catalog/snippets/workflows/build-executable-task.ymlAdds reference reusable workflow for building and packaging a console executable.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdds reference reusable workflow for building/pushing a NuGet package.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdds reference reusable workflow for building a PyPI package (publish split elsewhere).
catalog/snippets/workflows/build-release-task.ymlAdds reference multi-target release orchestrator reusable workflow.
catalog/snippets/workflows/check-upstream-version-task.ymlAdds reference reusable workflow for upstream-version tracking wrappers.
catalog/snippets/workflows/get-version-task.ymlAdds reference reusable workflow for NBGV-based version computation.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdds reference reusable workflow for publishing Docker Hub README content.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdds reference reusable workflow to run codegen and open PRs per branch.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdds reference scheduled workflow to trigger codegen PRs periodically.
cspell.jsonAdds/updates spelling configuration for lint parity across editor/CLI/CI.
docs/devcontainer.mdUpdates documentation around devcontainer usage for the governance repo.
docs/host-setup.mdUpdates host setup docs (links, references) for signing and tooling.
docs/ssh-signing.mdUpdates SSH signing docs (links, references) aligned with governance conventions.
registry/repos.jsonAdds/updates the fleet registry of repos, types, and publish mechanisms.
registry/repos.schema.jsonAdds JSON schema for the fleet registry file.
repo-config/README.mdAdds documentation for ruleset JSON and configuration workflow.
repo-config/configure.shAdds an idempotent ruleset-application script using the GitHub API.
repo-config/develop.jsonAdds/updates committed develop branch ruleset payload.
repo-config/main.jsonAdds/updates committed main branch ruleset payload.
reports/.gitkeepTracks the audit reports directory in git.
reports/_template.mdAdds a standard template for per-repo audit reports.
reports/esphome-nonroot/audit.mdAdds/updates an audit report for a fleet repo.
reports/languagetags/audit.mdAdds/updates an audit report for a fleet repo.
reports/plexcleaner/audit.mdAdds/updates an audit report for a fleet repo.
reports/utilities/audit.mdAdds/updates an audit report for a fleet repo.
reports/vscode-server-dotnetcore/audit.mdAdds/updates an audit report for a fleet repo.
spec/files.jsonAdds/updates the baseline file/section spec for audits.
spec/files.schema.jsonAdds JSON schema for the baseline files spec.
spec/project-types.jsonAdds/updates project type definitions and audit checks.
spec/project-types.schema.jsonAdds JSON schema for project types definitions.
spec/readme-structure.mdAdds the preferred README structure spec for downstream repos.
spec/secrets.jsonAdds/updates publish mechanism secrets model (required/forbidden).
spec/secrets.schema.jsonAdds JSON schema for the secrets spec.
spec/validate.pyAdds a stdlib-only validator for spec/registry cross-references (CI gate).
version.jsonBumps NBGV version to 2.0 for the release promotion.

Comment threadREADME.md Outdated
The README claimed the PR gate runs JSON-schema validation, but the workflow runs jq parse checks over registry/, spec/, and repo-config/ plus spec/validate.py cross-reference and shape checks. Corrected the description to match the workflow.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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

@ptr727
ptr727 merged commit a0f44a4 into mainJul 5, 2026
9 checks passed
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: promote develop to main (2.0 - governance catalog repurpose) - #242

Merged
ptr727 merged 16 commits into
mainfrom
develop
Jul 5, 2026
Merged

Release: promote develop to main (2.0 - governance catalog repurpose)#242
ptr727 merged 16 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes the governance-catalog repurpose from develop to main. main is currently the pre-repurpose .NET sample template (tip #225); this brings develop (#226-#241) to main as the 2.0 release. Merge is conflict-free.

Scope:

  • ~28 files added - spec/ (project-types/files/secrets/readme-structure + schemas + validate.py), AUDIT.md, WORKFLOW.md, registry/, reports/ (5 per-repo audits), catalog/ snippets, repo-config/ rulesets, the VS Code workspace.
  • ~54 files removed - the old sample-project source, tests, and its per-target build/publish wiring.
  • Governance docs rewritten (AGENTS.md, CODESTYLE.md, README.md, HISTORY.md); version.json -> 2.0.

Merge as a merge-commit (the develop->main ruleset), on the maintainer.s explicit go-ahead - this is the release cut. Not closing #228: its retrospective is partially incorporated; the deferred sections (cross-platform framing, editor/scripts snippets, the Python HA profile, devcontainer) remain open.

🤖 Generated with Claude Code

ptr727and others added 15 commits July 4, 2026 17:06
#226)
Abandons the template-inheritance model and converts this repo into a
documentation, agent-orchestration, and workflow-audit catalog. Each
fleet project now owns its own implementation and is audited against the
ground truth here, rather than copying files from a template.
## Highlights
- **Demolition + relocation.** Remove the sample apps and .NET build
infra. Rulesets move to `repo-config/` (with `configure.sh`) since
`.github/` is Actions-owned; the app-specific build/publish/codegen
workflows and config exemplars move to `catalog/snippets/`.
- **Governance rewrite.** Strip template-inheritance framing from
AGENTS/README/CODESTYLE/WORKFLOW/copilot-instructions. Add the "durable
guidance lives in committed docs, not agent memory" principle. Split the
README (this repo's own vs `spec/readme-structure.md`, the fleet README
exemplar); salvage the GitHub-setup/ruleset/brownfield procedures into
`repo-config/README.md`.
- **Ground-truth spec.** `registry/repos.json` (self + 7 cataloged + 14
backlog), `spec/project-types.json` (per-type letter/intent checks plus
cross-cutting linter-parity, recurring-violations, branch-model,
secrets, readme-structure), `files.json`, `secrets.json`, JSON schemas,
and `spec/validate.py` (dependency-free classification dry-run).
- **AUDIT.md.** The read-only per-repo audit procedure, reusing
WORKFLOW.md's operational/N-A/defect vocabulary.
- **WORKFLOW.md.** Four mermaid flow diagrams (branch model, PR smoke,
publish matrix, artifact seam).
- **CI.** `test-pull-request.yml` is now lint-only (markdownlint +
cspell + actionlint + spec validation) behind the ruleset-bound
aggregator; `publish-release.yml` is a self-contained source-only
release. The repo classifies as the source-only type and audits itself.
- **Docs style.** Human-facing docs use grouped, alphabetized
reference-style links; the README carries a human-readable Rules index.
## Verification
markdownlint 0, cSpell 0, actionlint clean, `spec/validate.py`
classifies the fleet, all relative links resolve, EOL/charset clean, and
the self-audit confirms the rulesets match the documented branch model.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#227)
- Present-tense / current-state doc rule (AGENTS.md, README.md) and README violation fix; added to the Rules index.
- Canonical README structure restored in the exemplar and README.
- VS Code workspace catalog: base.jsonc plus dotnet/python/docker per-type fragments, and the repo's own ProjectTemplate.code-workspace.
- Table of Contents omit-marker convention, deterministic regardless of workspace load, documented in AGENTS.md.
- editorconfig CRLF default with LF exceptions, mirroring .gitattributes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…229)
- Reconcile AGENTS.md Line Endings with the [*]=crlf default + LF-exception policy.
- Default .py to CRLF (universal newlines); pin spec/validate.py LF by path as a shebang script.
- Add the EOL-audit method (byte-scan; not file/git-ls-files parsing).
- copilot-instructions: gh pr edit broken -> updatePullRequest/PATCH; rulesets not classic; push->SHA race; Copilot can be wrong.
- Git rule: check the maintainer's uncommitted edits before committing.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- cspell language en-US (a bare en accepts British spellings); documented in CODESTYLE and named in the spec recurring.spelling assertion (intentRef -> CODESTYLE).
- Docs reference the 2-digit major.minor version, never a 3-digit build.
- Closes #N goes on the develop->main promotion PR (auto-close fires only from the default branch).
- URLs in fenced code blocks stay inline; removing a link removes its orphaned reference definition.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
First per-repo audit (AUDIT.md), establishing the reports/ format. ptr727/Utilities main @ 8de105f. Verdict: operational; no defects, 8 drift findings (continuous push-publish vs two-phase, non-canonical release-asset seam, .editorconfig lacks global [*] end_of_line default, stale csproj versions, suffixed ruleset name, off-baseline repo-config filenames, README omissions, stale develop). cspell en-US + nuget OIDC confirmed clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Second per-repo audit (csharp+console+docker). ptr727/PlexCleaner main @ e84f142. Verdict: operational; no defects, 12 drift findings. Two recurring cross-repo drifts (ruleset context job-suffix; missing global [*] end_of_line default) flagged for a spec/lint machine-check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…233)
recurring.eol now requires .editorconfig to carry a global [*] end_of_line = crlf default plus LF pins; the per-extension-only form is a flagged drift. Makes the recurring cross-repo drift (Utilities, PlexCleaner) machine-checkable (AUDIT.md s9).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Third per-repo audit (csharp+nuget+codegen). ptr727/LanguageTags main @ 7322d72. Verdict: operational; no defects, 11 drift findings. codegen input-deterministic; nuget genuine OIDC. Recurring drifts confirmed across 3 repos. New spec gap: NUGET_USERNAME required by nuget-oidc but modeled as requires:[].
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fourth per-repo audit (docker+upstream-wrapper). ptr727/ESPHome-NonRoot main @ b44b1a6. Verdict: operational; no defects, 12 drift findings. Wrapper genuinely pinned (leaf consumes upstream-version.json). Strongest EOL case: 5 of 9 workflow YAML committed LF against the repo own .editorconfig - validates the #233 spec check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fifth/final stable audit (docker), completing the C#/Docker set. ptr727/VSCode-Server-DotNetCore main @ 80067f9. Verdict: operational; no defects, 13 drift findings. Docker-only (own multi-arch image, not a wrapper). Sharpest EOL case: build-docker-task.yml has mixed endings (4 LF lines at the Dependabot-rewritten uses: SHA lines) - automated tooling leaves mixed endings absent the global default; a per-line committed-endings check is warranted.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rename the ruleset-bound PR-gate aggregator to "Check pull request workflow status job" (fleet <name> job convention; old un-suffixed exception removed). Updates the job name, both repo-config rulesets, the live develop+main rulesets (in lockstep), and the exception rules + references in AGENTS.md/WORKFLOW.md/README.md. Corrects the Utilities/PlexCleaner reports (the ...job naming is canonical, not a drift).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 4: restructure spec/secrets.json into a fleet baseline (the App-token secrets the merge-bot needs everywhere) plus per-target/per-feature mechanism additions. nuget-oidc requires NUGET_USERNAME; codecov mechanism added (CODECOV_TOKEN); each publish mechanism declares an explicit kind (oidc|static-secret). Relax and harden validate.py: OIDC may require a non-secret username (forbids, not empty requires, enforces no-static-key), and the validator now shape-checks the whole secrets.json up front so malformed input reports clearly instead of crashing. Registry requiredSecrets and the codegen type reconciled to the baseline.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 2a: AUDIT.md section 10 codifies the convergence pattern - the agent applies audit fixes via a PR on the target repo, drives Copilot to green, and holds the merge for the maintainer; systemic drift is fixed in the hub.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… data pins (#240)
AGENTS.md line-ending guidance now requires the matching .editorconfig override alongside the .gitattributes pin for extensionless scripts (editor LF override) and byte-preserve data dirs (unset/false), closing the fleet divergence the EOL convergence surfaced.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
version.json 1.0 -> 2.0 (major: repurpose from a .NET sample template to a governance/workflow-audit catalog); README Release Notes -> 2.0; rewrote the stale placeholder HISTORY.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 5, 2026 18:01

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 2.0 release, completing the repo repurpose from a code-shipping .NET/Python sample template into a governance + workflow-audit catalog (spec/registry/audit reports, reference snippets, ruleset config, and lint-only CI/release automation).

Changes:

  • Bump versioning to 2.0 and refresh governance documentation for the catalog identity.
  • Remove the legacy sample implementation (C# projects, Python package, Docker build artifacts, tests/benchmarks) from main.
  • Add/refresh the governance catalog assets: spec/ validation + schemas, fleet registry/, audit reports/, repo-config/ rulesets + apply script, and reference catalog/ snippets; simplify CI/release workflows accordingly.

Reviewed changes

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

Show a summary per file
FileDescription
.config/dotnet-tools.jsonRemoves legacy .NET local tool manifest from the former sample template.
.dockerignoreRemoves Docker ignore rules tied to the former build/publish pipeline.
.editorconfigUpdates line-ending governance defaults (CRLF by default; LF for execution-sensitive paths).
.gitattributesPins LF for execution-sensitive files (including spec/validate.py) while keeping * -text.
.github/copilot-instructions.mdUpdates Copilot runbook guidance for the repurposed governance repo and ruleset-based gates.
.github/dependabot.ymlNarrows Dependabot config to GitHub Actions only, aligning with a source-only governance repo.
.github/workflows/publish-release.ymlReworks publishing into a source-only GitHub release per branch (no package/image publishes).
.github/workflows/test-pull-request.ymlReplaces build/test smoke pipeline with lint-only CI plus spec/registry validation.
.vscode/launch.jsonRemoves VS Code debug configurations for the deleted sample apps/tools.
AGENTS.mdGovernance/agent workflow rules updated for the catalog-focused repo.
AUDIT.mdAdds/updates the audit procedure used to evaluate downstream repos against the spec.
Benchmarks/.editorconfigRemoves benchmark-specific editor config from deleted sample benchmarks.
Benchmarks/Benchmarks.csprojRemoves the sample benchmark project.
Benchmarks/GlobalUsings.csRemoves benchmark global usings from deleted sample benchmarks.
Benchmarks/Program.csRemoves benchmark entry point.
Benchmarks/SampleBenchmark.csRemoves sample benchmark implementation.
CODESTYLE.mdUpdates coding/style governance docs for the catalog model.
CodeGen/.editorconfigRemoves codegen-specific editor config from deleted sample codegen project.
CodeGen/ApiNinjas.csRemoves sample codegen API client.
CodeGen/AssemblyInfo.csRemoves sample codegen assembly metadata helper.
CodeGen/CodeGen.csRemoves sample generated output file.
CodeGen/CodeGen.csprojRemoves the sample codegen project.
CodeGen/CodeGenBuilder.csRemoves sample code generator implementation.
CodeGen/CommandLine.csRemoves sample codegen CLI parsing.
CodeGen/Extensions.csRemoves sample logging extensions for the codegen tool.
CodeGen/GlobalUsings.csRemoves codegen global usings.
CodeGen/HttpClientFactory.csRemoves sample HTTP client factory/resilience code.
CodeGen/Program.csRemoves sample codegen entry point.
Console/.editorconfigRemoves console-app-specific editor config from deleted sample console.
Console/CommandLine.csRemoves sample console CLI implementation.
Console/Console.csprojRemoves sample console project definition.
Console/Extensions.csRemoves sample console logging extensions.
Console/GlobalUsings.csRemoves console global usings.
Console/LoggerFactory.csRemoves sample Serilog logger factory.
Console/Program.csRemoves sample console entry point.
Directory.Build.propsRemoves central MSBuild defaults from deleted .NET sample solution.
Directory.Packages.propsRemoves central package version management from deleted sample solution.
Docker/Build.shRemoves sample Docker build helper script.
Docker/DockerfileRemoves sample Docker image definition.
Docker/InstallDebugTools.shRemoves Docker debug tools installer for deleted sample image.
Docker/Version.shRemoves Docker version probe script.
HISTORY.mdUpdates release history to reflect the 2.0 repurpose (governance catalog).
NuGetLibrary/.editorconfigRemoves library-specific editor config from deleted sample library.
NuGetLibrary/Extensions.csRemoves sample library logging helpers.
NuGetLibrary/GlobalUsings.csRemoves library global usings.
NuGetLibrary/Library.csRemoves sample library implementation.
NuGetLibrary/LogOptions.csRemoves sample global logging options helper.
NuGetLibrary/NuGetLibrary.csprojRemoves sample NuGet library project definition.
NuGetLibrary/Options.csRemoves sample library options class.
ProjectTemplate.code-workspaceUpdates workspace recommendations/settings for governance-doc repo focus.
ProjectTemplate.slnxRemoves solution definition for deleted .NET projects.
PyPiLibrary/README.mdRemoves Python sample package documentation.
PyPiLibrary/pyproject.tomlRemoves Python sample package build configuration.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemoves Python sample package module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemoves Python sample versioning module.
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemoves Python sample implementation module.
PyPiLibrary/tests/init.pyRemoves Python sample tests package marker.
PyPiLibrary/tests/test_example.pyRemoves Python sample tests.
PyPiLibrary/uv.lockRemoves Python sample dependency lockfile.
README.mdUpdates the repo-level description and operational model for the governance catalog.
Tests/.editorconfigRemoves test-only editor config from deleted sample tests.
Tests/Fixture.csRemoves shared xUnit fixture scaffolding.
Tests/GlobalUsings.csRemoves test global usings.
Tests/LoggingTests.csRemoves sample logging tests.
Tests/SampleTest.csRemoves sample unit tests.
Tests/Tests.csprojRemoves sample test project definition.
WORKFLOW.mdAdds/updates workflow guarantees/methodology for auditing and CI/release behavior.
catalog/README.mdAdds/updates documentation for the reference snippet catalog.
catalog/snippets/configs/dependabot.ymlAdds a reference Dependabot configuration for downstream code-shipping repos.
catalog/snippets/configs/docker-hub-readme.mdAdds a reference Docker Hub README exemplar for downstream Docker repos.
catalog/snippets/configs/vscode-tasks.jsonAdds reference VS Code tasks (clean-compile and convenience tasks) for downstream repos.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdds a reference .NET devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/dotnet/post-create.shAdds a reference post-create script for the .NET devcontainer snippet.
catalog/snippets/devcontainer/python/devcontainer.jsonAdds a reference Python devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/python/post-create.shAdds a reference post-create script for the Python devcontainer snippet.
catalog/snippets/vscode/README.mdAdds documentation for composable VS Code workspace fragments.
catalog/snippets/vscode/base.jsoncAdds the baseline VS Code workspace fragment for downstream repos.
catalog/snippets/vscode/docker.jsoncAdds Docker-specific workspace fragment for downstream repos.
catalog/snippets/vscode/dotnet.jsoncAdds .NET-specific workspace fragment for downstream repos.
catalog/snippets/vscode/python.jsoncAdds Python-specific workspace fragment for downstream repos.
catalog/snippets/workflows/README.mdAdds mapping documentation from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/build-datebadge-task.ymlAdds reference reusable workflow for generating a date badge.
catalog/snippets/workflows/build-docker-task.ymlAdds reference reusable workflow for Docker build/push with registry caching.
catalog/snippets/workflows/build-executable-task.ymlAdds reference reusable workflow for building and packaging a console executable.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdds reference reusable workflow for building/pushing a NuGet package.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdds reference reusable workflow for building a PyPI package (publish split elsewhere).
catalog/snippets/workflows/build-release-task.ymlAdds reference multi-target release orchestrator reusable workflow.
catalog/snippets/workflows/check-upstream-version-task.ymlAdds reference reusable workflow for upstream-version tracking wrappers.
catalog/snippets/workflows/get-version-task.ymlAdds reference reusable workflow for NBGV-based version computation.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdds reference reusable workflow for publishing Docker Hub README content.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdds reference reusable workflow to run codegen and open PRs per branch.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdds reference scheduled workflow to trigger codegen PRs periodically.
cspell.jsonAdds/updates spelling configuration for lint parity across editor/CLI/CI.
docs/devcontainer.mdUpdates documentation around devcontainer usage for the governance repo.
docs/host-setup.mdUpdates host setup docs (links, references) for signing and tooling.
docs/ssh-signing.mdUpdates SSH signing docs (links, references) aligned with governance conventions.
registry/repos.jsonAdds/updates the fleet registry of repos, types, and publish mechanisms.
registry/repos.schema.jsonAdds JSON schema for the fleet registry file.
repo-config/README.mdAdds documentation for ruleset JSON and configuration workflow.
repo-config/configure.shAdds an idempotent ruleset-application script using the GitHub API.
repo-config/develop.jsonAdds/updates committed develop branch ruleset payload.
repo-config/main.jsonAdds/updates committed main branch ruleset payload.
reports/.gitkeepTracks the audit reports directory in git.
reports/_template.mdAdds a standard template for per-repo audit reports.
reports/esphome-nonroot/audit.mdAdds/updates an audit report for a fleet repo.
reports/languagetags/audit.mdAdds/updates an audit report for a fleet repo.
reports/plexcleaner/audit.mdAdds/updates an audit report for a fleet repo.
reports/utilities/audit.mdAdds/updates an audit report for a fleet repo.
reports/vscode-server-dotnetcore/audit.mdAdds/updates an audit report for a fleet repo.
spec/files.jsonAdds/updates the baseline file/section spec for audits.
spec/files.schema.jsonAdds JSON schema for the baseline files spec.
spec/project-types.jsonAdds/updates project type definitions and audit checks.
spec/project-types.schema.jsonAdds JSON schema for project types definitions.
spec/readme-structure.mdAdds the preferred README structure spec for downstream repos.
spec/secrets.jsonAdds/updates publish mechanism secrets model (required/forbidden).
spec/secrets.schema.jsonAdds JSON schema for the secrets spec.
spec/validate.pyAdds a stdlib-only validator for spec/registry cross-references (CI gate).
version.jsonBumps NBGV version to 2.0 for the release promotion.

Comment threadREADME.md Outdated
The README claimed the PR gate runs JSON-schema validation, but the workflow runs jq parse checks over registry/, spec/, and repo-config/ plus spec/validate.py cross-reference and shape checks. Corrected the description to match the workflow.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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

@ptr727
ptr727 merged commit a0f44a4 into mainJul 5, 2026
9 checks passed
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: promote develop to main (2.0 - governance catalog repurpose) - #242

Merged
ptr727 merged 16 commits into
mainfrom
develop
Jul 5, 2026
Merged

Release: promote develop to main (2.0 - governance catalog repurpose)#242
ptr727 merged 16 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes the governance-catalog repurpose from develop to main. main is currently the pre-repurpose .NET sample template (tip #225); this brings develop (#226-#241) to main as the 2.0 release. Merge is conflict-free.

Scope:

  • ~28 files added - spec/ (project-types/files/secrets/readme-structure + schemas + validate.py), AUDIT.md, WORKFLOW.md, registry/, reports/ (5 per-repo audits), catalog/ snippets, repo-config/ rulesets, the VS Code workspace.
  • ~54 files removed - the old sample-project source, tests, and its per-target build/publish wiring.
  • Governance docs rewritten (AGENTS.md, CODESTYLE.md, README.md, HISTORY.md); version.json -> 2.0.

Merge as a merge-commit (the develop->main ruleset), on the maintainer.s explicit go-ahead - this is the release cut. Not closing #228: its retrospective is partially incorporated; the deferred sections (cross-platform framing, editor/scripts snippets, the Python HA profile, devcontainer) remain open.

🤖 Generated with Claude Code

ptr727and others added 15 commits July 4, 2026 17:06
#226)
Abandons the template-inheritance model and converts this repo into a
documentation, agent-orchestration, and workflow-audit catalog. Each
fleet project now owns its own implementation and is audited against the
ground truth here, rather than copying files from a template.
## Highlights
- **Demolition + relocation.** Remove the sample apps and .NET build
infra. Rulesets move to `repo-config/` (with `configure.sh`) since
`.github/` is Actions-owned; the app-specific build/publish/codegen
workflows and config exemplars move to `catalog/snippets/`.
- **Governance rewrite.** Strip template-inheritance framing from
AGENTS/README/CODESTYLE/WORKFLOW/copilot-instructions. Add the "durable
guidance lives in committed docs, not agent memory" principle. Split the
README (this repo's own vs `spec/readme-structure.md`, the fleet README
exemplar); salvage the GitHub-setup/ruleset/brownfield procedures into
`repo-config/README.md`.
- **Ground-truth spec.** `registry/repos.json` (self + 7 cataloged + 14
backlog), `spec/project-types.json` (per-type letter/intent checks plus
cross-cutting linter-parity, recurring-violations, branch-model,
secrets, readme-structure), `files.json`, `secrets.json`, JSON schemas,
and `spec/validate.py` (dependency-free classification dry-run).
- **AUDIT.md.** The read-only per-repo audit procedure, reusing
WORKFLOW.md's operational/N-A/defect vocabulary.
- **WORKFLOW.md.** Four mermaid flow diagrams (branch model, PR smoke,
publish matrix, artifact seam).
- **CI.** `test-pull-request.yml` is now lint-only (markdownlint +
cspell + actionlint + spec validation) behind the ruleset-bound
aggregator; `publish-release.yml` is a self-contained source-only
release. The repo classifies as the source-only type and audits itself.
- **Docs style.** Human-facing docs use grouped, alphabetized
reference-style links; the README carries a human-readable Rules index.
## Verification
markdownlint 0, cSpell 0, actionlint clean, `spec/validate.py`
classifies the fleet, all relative links resolve, EOL/charset clean, and
the self-audit confirms the rulesets match the documented branch model.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#227)
- Present-tense / current-state doc rule (AGENTS.md, README.md) and README violation fix; added to the Rules index.
- Canonical README structure restored in the exemplar and README.
- VS Code workspace catalog: base.jsonc plus dotnet/python/docker per-type fragments, and the repo's own ProjectTemplate.code-workspace.
- Table of Contents omit-marker convention, deterministic regardless of workspace load, documented in AGENTS.md.
- editorconfig CRLF default with LF exceptions, mirroring .gitattributes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…229)
- Reconcile AGENTS.md Line Endings with the [*]=crlf default + LF-exception policy.
- Default .py to CRLF (universal newlines); pin spec/validate.py LF by path as a shebang script.
- Add the EOL-audit method (byte-scan; not file/git-ls-files parsing).
- copilot-instructions: gh pr edit broken -> updatePullRequest/PATCH; rulesets not classic; push->SHA race; Copilot can be wrong.
- Git rule: check the maintainer's uncommitted edits before committing.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- cspell language en-US (a bare en accepts British spellings); documented in CODESTYLE and named in the spec recurring.spelling assertion (intentRef -> CODESTYLE).
- Docs reference the 2-digit major.minor version, never a 3-digit build.
- Closes #N goes on the develop->main promotion PR (auto-close fires only from the default branch).
- URLs in fenced code blocks stay inline; removing a link removes its orphaned reference definition.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
First per-repo audit (AUDIT.md), establishing the reports/ format. ptr727/Utilities main @ 8de105f. Verdict: operational; no defects, 8 drift findings (continuous push-publish vs two-phase, non-canonical release-asset seam, .editorconfig lacks global [*] end_of_line default, stale csproj versions, suffixed ruleset name, off-baseline repo-config filenames, README omissions, stale develop). cspell en-US + nuget OIDC confirmed clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Second per-repo audit (csharp+console+docker). ptr727/PlexCleaner main @ e84f142. Verdict: operational; no defects, 12 drift findings. Two recurring cross-repo drifts (ruleset context job-suffix; missing global [*] end_of_line default) flagged for a spec/lint machine-check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…233)
recurring.eol now requires .editorconfig to carry a global [*] end_of_line = crlf default plus LF pins; the per-extension-only form is a flagged drift. Makes the recurring cross-repo drift (Utilities, PlexCleaner) machine-checkable (AUDIT.md s9).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Third per-repo audit (csharp+nuget+codegen). ptr727/LanguageTags main @ 7322d72. Verdict: operational; no defects, 11 drift findings. codegen input-deterministic; nuget genuine OIDC. Recurring drifts confirmed across 3 repos. New spec gap: NUGET_USERNAME required by nuget-oidc but modeled as requires:[].
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fourth per-repo audit (docker+upstream-wrapper). ptr727/ESPHome-NonRoot main @ b44b1a6. Verdict: operational; no defects, 12 drift findings. Wrapper genuinely pinned (leaf consumes upstream-version.json). Strongest EOL case: 5 of 9 workflow YAML committed LF against the repo own .editorconfig - validates the #233 spec check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fifth/final stable audit (docker), completing the C#/Docker set. ptr727/VSCode-Server-DotNetCore main @ 80067f9. Verdict: operational; no defects, 13 drift findings. Docker-only (own multi-arch image, not a wrapper). Sharpest EOL case: build-docker-task.yml has mixed endings (4 LF lines at the Dependabot-rewritten uses: SHA lines) - automated tooling leaves mixed endings absent the global default; a per-line committed-endings check is warranted.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rename the ruleset-bound PR-gate aggregator to "Check pull request workflow status job" (fleet <name> job convention; old un-suffixed exception removed). Updates the job name, both repo-config rulesets, the live develop+main rulesets (in lockstep), and the exception rules + references in AGENTS.md/WORKFLOW.md/README.md. Corrects the Utilities/PlexCleaner reports (the ...job naming is canonical, not a drift).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 4: restructure spec/secrets.json into a fleet baseline (the App-token secrets the merge-bot needs everywhere) plus per-target/per-feature mechanism additions. nuget-oidc requires NUGET_USERNAME; codecov mechanism added (CODECOV_TOKEN); each publish mechanism declares an explicit kind (oidc|static-secret). Relax and harden validate.py: OIDC may require a non-secret username (forbids, not empty requires, enforces no-static-key), and the validator now shape-checks the whole secrets.json up front so malformed input reports clearly instead of crashing. Registry requiredSecrets and the codegen type reconciled to the baseline.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 2a: AUDIT.md section 10 codifies the convergence pattern - the agent applies audit fixes via a PR on the target repo, drives Copilot to green, and holds the merge for the maintainer; systemic drift is fixed in the hub.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… data pins (#240)
AGENTS.md line-ending guidance now requires the matching .editorconfig override alongside the .gitattributes pin for extensionless scripts (editor LF override) and byte-preserve data dirs (unset/false), closing the fleet divergence the EOL convergence surfaced.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
version.json 1.0 -> 2.0 (major: repurpose from a .NET sample template to a governance/workflow-audit catalog); README Release Notes -> 2.0; rewrote the stale placeholder HISTORY.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 5, 2026 18:01

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 2.0 release, completing the repo repurpose from a code-shipping .NET/Python sample template into a governance + workflow-audit catalog (spec/registry/audit reports, reference snippets, ruleset config, and lint-only CI/release automation).

Changes:

  • Bump versioning to 2.0 and refresh governance documentation for the catalog identity.
  • Remove the legacy sample implementation (C# projects, Python package, Docker build artifacts, tests/benchmarks) from main.
  • Add/refresh the governance catalog assets: spec/ validation + schemas, fleet registry/, audit reports/, repo-config/ rulesets + apply script, and reference catalog/ snippets; simplify CI/release workflows accordingly.

Reviewed changes

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

Show a summary per file
FileDescription
.config/dotnet-tools.jsonRemoves legacy .NET local tool manifest from the former sample template.
.dockerignoreRemoves Docker ignore rules tied to the former build/publish pipeline.
.editorconfigUpdates line-ending governance defaults (CRLF by default; LF for execution-sensitive paths).
.gitattributesPins LF for execution-sensitive files (including spec/validate.py) while keeping * -text.
.github/copilot-instructions.mdUpdates Copilot runbook guidance for the repurposed governance repo and ruleset-based gates.
.github/dependabot.ymlNarrows Dependabot config to GitHub Actions only, aligning with a source-only governance repo.
.github/workflows/publish-release.ymlReworks publishing into a source-only GitHub release per branch (no package/image publishes).
.github/workflows/test-pull-request.ymlReplaces build/test smoke pipeline with lint-only CI plus spec/registry validation.
.vscode/launch.jsonRemoves VS Code debug configurations for the deleted sample apps/tools.
AGENTS.mdGovernance/agent workflow rules updated for the catalog-focused repo.
AUDIT.mdAdds/updates the audit procedure used to evaluate downstream repos against the spec.
Benchmarks/.editorconfigRemoves benchmark-specific editor config from deleted sample benchmarks.
Benchmarks/Benchmarks.csprojRemoves the sample benchmark project.
Benchmarks/GlobalUsings.csRemoves benchmark global usings from deleted sample benchmarks.
Benchmarks/Program.csRemoves benchmark entry point.
Benchmarks/SampleBenchmark.csRemoves sample benchmark implementation.
CODESTYLE.mdUpdates coding/style governance docs for the catalog model.
CodeGen/.editorconfigRemoves codegen-specific editor config from deleted sample codegen project.
CodeGen/ApiNinjas.csRemoves sample codegen API client.
CodeGen/AssemblyInfo.csRemoves sample codegen assembly metadata helper.
CodeGen/CodeGen.csRemoves sample generated output file.
CodeGen/CodeGen.csprojRemoves the sample codegen project.
CodeGen/CodeGenBuilder.csRemoves sample code generator implementation.
CodeGen/CommandLine.csRemoves sample codegen CLI parsing.
CodeGen/Extensions.csRemoves sample logging extensions for the codegen tool.
CodeGen/GlobalUsings.csRemoves codegen global usings.
CodeGen/HttpClientFactory.csRemoves sample HTTP client factory/resilience code.
CodeGen/Program.csRemoves sample codegen entry point.
Console/.editorconfigRemoves console-app-specific editor config from deleted sample console.
Console/CommandLine.csRemoves sample console CLI implementation.
Console/Console.csprojRemoves sample console project definition.
Console/Extensions.csRemoves sample console logging extensions.
Console/GlobalUsings.csRemoves console global usings.
Console/LoggerFactory.csRemoves sample Serilog logger factory.
Console/Program.csRemoves sample console entry point.
Directory.Build.propsRemoves central MSBuild defaults from deleted .NET sample solution.
Directory.Packages.propsRemoves central package version management from deleted sample solution.
Docker/Build.shRemoves sample Docker build helper script.
Docker/DockerfileRemoves sample Docker image definition.
Docker/InstallDebugTools.shRemoves Docker debug tools installer for deleted sample image.
Docker/Version.shRemoves Docker version probe script.
HISTORY.mdUpdates release history to reflect the 2.0 repurpose (governance catalog).
NuGetLibrary/.editorconfigRemoves library-specific editor config from deleted sample library.
NuGetLibrary/Extensions.csRemoves sample library logging helpers.
NuGetLibrary/GlobalUsings.csRemoves library global usings.
NuGetLibrary/Library.csRemoves sample library implementation.
NuGetLibrary/LogOptions.csRemoves sample global logging options helper.
NuGetLibrary/NuGetLibrary.csprojRemoves sample NuGet library project definition.
NuGetLibrary/Options.csRemoves sample library options class.
ProjectTemplate.code-workspaceUpdates workspace recommendations/settings for governance-doc repo focus.
ProjectTemplate.slnxRemoves solution definition for deleted .NET projects.
PyPiLibrary/README.mdRemoves Python sample package documentation.
PyPiLibrary/pyproject.tomlRemoves Python sample package build configuration.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemoves Python sample package module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemoves Python sample versioning module.
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemoves Python sample implementation module.
PyPiLibrary/tests/init.pyRemoves Python sample tests package marker.
PyPiLibrary/tests/test_example.pyRemoves Python sample tests.
PyPiLibrary/uv.lockRemoves Python sample dependency lockfile.
README.mdUpdates the repo-level description and operational model for the governance catalog.
Tests/.editorconfigRemoves test-only editor config from deleted sample tests.
Tests/Fixture.csRemoves shared xUnit fixture scaffolding.
Tests/GlobalUsings.csRemoves test global usings.
Tests/LoggingTests.csRemoves sample logging tests.
Tests/SampleTest.csRemoves sample unit tests.
Tests/Tests.csprojRemoves sample test project definition.
WORKFLOW.mdAdds/updates workflow guarantees/methodology for auditing and CI/release behavior.
catalog/README.mdAdds/updates documentation for the reference snippet catalog.
catalog/snippets/configs/dependabot.ymlAdds a reference Dependabot configuration for downstream code-shipping repos.
catalog/snippets/configs/docker-hub-readme.mdAdds a reference Docker Hub README exemplar for downstream Docker repos.
catalog/snippets/configs/vscode-tasks.jsonAdds reference VS Code tasks (clean-compile and convenience tasks) for downstream repos.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdds a reference .NET devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/dotnet/post-create.shAdds a reference post-create script for the .NET devcontainer snippet.
catalog/snippets/devcontainer/python/devcontainer.jsonAdds a reference Python devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/python/post-create.shAdds a reference post-create script for the Python devcontainer snippet.
catalog/snippets/vscode/README.mdAdds documentation for composable VS Code workspace fragments.
catalog/snippets/vscode/base.jsoncAdds the baseline VS Code workspace fragment for downstream repos.
catalog/snippets/vscode/docker.jsoncAdds Docker-specific workspace fragment for downstream repos.
catalog/snippets/vscode/dotnet.jsoncAdds .NET-specific workspace fragment for downstream repos.
catalog/snippets/vscode/python.jsoncAdds Python-specific workspace fragment for downstream repos.
catalog/snippets/workflows/README.mdAdds mapping documentation from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/build-datebadge-task.ymlAdds reference reusable workflow for generating a date badge.
catalog/snippets/workflows/build-docker-task.ymlAdds reference reusable workflow for Docker build/push with registry caching.
catalog/snippets/workflows/build-executable-task.ymlAdds reference reusable workflow for building and packaging a console executable.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdds reference reusable workflow for building/pushing a NuGet package.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdds reference reusable workflow for building a PyPI package (publish split elsewhere).
catalog/snippets/workflows/build-release-task.ymlAdds reference multi-target release orchestrator reusable workflow.
catalog/snippets/workflows/check-upstream-version-task.ymlAdds reference reusable workflow for upstream-version tracking wrappers.
catalog/snippets/workflows/get-version-task.ymlAdds reference reusable workflow for NBGV-based version computation.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdds reference reusable workflow for publishing Docker Hub README content.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdds reference reusable workflow to run codegen and open PRs per branch.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdds reference scheduled workflow to trigger codegen PRs periodically.
cspell.jsonAdds/updates spelling configuration for lint parity across editor/CLI/CI.
docs/devcontainer.mdUpdates documentation around devcontainer usage for the governance repo.
docs/host-setup.mdUpdates host setup docs (links, references) for signing and tooling.
docs/ssh-signing.mdUpdates SSH signing docs (links, references) aligned with governance conventions.
registry/repos.jsonAdds/updates the fleet registry of repos, types, and publish mechanisms.
registry/repos.schema.jsonAdds JSON schema for the fleet registry file.
repo-config/README.mdAdds documentation for ruleset JSON and configuration workflow.
repo-config/configure.shAdds an idempotent ruleset-application script using the GitHub API.
repo-config/develop.jsonAdds/updates committed develop branch ruleset payload.
repo-config/main.jsonAdds/updates committed main branch ruleset payload.
reports/.gitkeepTracks the audit reports directory in git.
reports/_template.mdAdds a standard template for per-repo audit reports.
reports/esphome-nonroot/audit.mdAdds/updates an audit report for a fleet repo.
reports/languagetags/audit.mdAdds/updates an audit report for a fleet repo.
reports/plexcleaner/audit.mdAdds/updates an audit report for a fleet repo.
reports/utilities/audit.mdAdds/updates an audit report for a fleet repo.
reports/vscode-server-dotnetcore/audit.mdAdds/updates an audit report for a fleet repo.
spec/files.jsonAdds/updates the baseline file/section spec for audits.
spec/files.schema.jsonAdds JSON schema for the baseline files spec.
spec/project-types.jsonAdds/updates project type definitions and audit checks.
spec/project-types.schema.jsonAdds JSON schema for project types definitions.
spec/readme-structure.mdAdds the preferred README structure spec for downstream repos.
spec/secrets.jsonAdds/updates publish mechanism secrets model (required/forbidden).
spec/secrets.schema.jsonAdds JSON schema for the secrets spec.
spec/validate.pyAdds a stdlib-only validator for spec/registry cross-references (CI gate).
version.jsonBumps NBGV version to 2.0 for the release promotion.

Comment threadREADME.md Outdated
The README claimed the PR gate runs JSON-schema validation, but the workflow runs jq parse checks over registry/, spec/, and repo-config/ plus spec/validate.py cross-reference and shape checks. Corrected the description to match the workflow.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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

@ptr727
ptr727 merged commit a0f44a4 into mainJul 5, 2026
9 checks passed
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: promote develop to main (2.0 - governance catalog repurpose) - #242

Merged
ptr727 merged 16 commits into
mainfrom
develop
Jul 5, 2026
Merged

Release: promote develop to main (2.0 - governance catalog repurpose)#242
ptr727 merged 16 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes the governance-catalog repurpose from develop to main. main is currently the pre-repurpose .NET sample template (tip #225); this brings develop (#226-#241) to main as the 2.0 release. Merge is conflict-free.

Scope:

  • ~28 files added - spec/ (project-types/files/secrets/readme-structure + schemas + validate.py), AUDIT.md, WORKFLOW.md, registry/, reports/ (5 per-repo audits), catalog/ snippets, repo-config/ rulesets, the VS Code workspace.
  • ~54 files removed - the old sample-project source, tests, and its per-target build/publish wiring.
  • Governance docs rewritten (AGENTS.md, CODESTYLE.md, README.md, HISTORY.md); version.json -> 2.0.

Merge as a merge-commit (the develop->main ruleset), on the maintainer.s explicit go-ahead - this is the release cut. Not closing #228: its retrospective is partially incorporated; the deferred sections (cross-platform framing, editor/scripts snippets, the Python HA profile, devcontainer) remain open.

🤖 Generated with Claude Code

ptr727and others added 15 commits July 4, 2026 17:06
#226)
Abandons the template-inheritance model and converts this repo into a
documentation, agent-orchestration, and workflow-audit catalog. Each
fleet project now owns its own implementation and is audited against the
ground truth here, rather than copying files from a template.
## Highlights
- **Demolition + relocation.** Remove the sample apps and .NET build
infra. Rulesets move to `repo-config/` (with `configure.sh`) since
`.github/` is Actions-owned; the app-specific build/publish/codegen
workflows and config exemplars move to `catalog/snippets/`.
- **Governance rewrite.** Strip template-inheritance framing from
AGENTS/README/CODESTYLE/WORKFLOW/copilot-instructions. Add the "durable
guidance lives in committed docs, not agent memory" principle. Split the
README (this repo's own vs `spec/readme-structure.md`, the fleet README
exemplar); salvage the GitHub-setup/ruleset/brownfield procedures into
`repo-config/README.md`.
- **Ground-truth spec.** `registry/repos.json` (self + 7 cataloged + 14
backlog), `spec/project-types.json` (per-type letter/intent checks plus
cross-cutting linter-parity, recurring-violations, branch-model,
secrets, readme-structure), `files.json`, `secrets.json`, JSON schemas,
and `spec/validate.py` (dependency-free classification dry-run).
- **AUDIT.md.** The read-only per-repo audit procedure, reusing
WORKFLOW.md's operational/N-A/defect vocabulary.
- **WORKFLOW.md.** Four mermaid flow diagrams (branch model, PR smoke,
publish matrix, artifact seam).
- **CI.** `test-pull-request.yml` is now lint-only (markdownlint +
cspell + actionlint + spec validation) behind the ruleset-bound
aggregator; `publish-release.yml` is a self-contained source-only
release. The repo classifies as the source-only type and audits itself.
- **Docs style.** Human-facing docs use grouped, alphabetized
reference-style links; the README carries a human-readable Rules index.
## Verification
markdownlint 0, cSpell 0, actionlint clean, `spec/validate.py`
classifies the fleet, all relative links resolve, EOL/charset clean, and
the self-audit confirms the rulesets match the documented branch model.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#227)
- Present-tense / current-state doc rule (AGENTS.md, README.md) and README violation fix; added to the Rules index.
- Canonical README structure restored in the exemplar and README.
- VS Code workspace catalog: base.jsonc plus dotnet/python/docker per-type fragments, and the repo's own ProjectTemplate.code-workspace.
- Table of Contents omit-marker convention, deterministic regardless of workspace load, documented in AGENTS.md.
- editorconfig CRLF default with LF exceptions, mirroring .gitattributes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…229)
- Reconcile AGENTS.md Line Endings with the [*]=crlf default + LF-exception policy.
- Default .py to CRLF (universal newlines); pin spec/validate.py LF by path as a shebang script.
- Add the EOL-audit method (byte-scan; not file/git-ls-files parsing).
- copilot-instructions: gh pr edit broken -> updatePullRequest/PATCH; rulesets not classic; push->SHA race; Copilot can be wrong.
- Git rule: check the maintainer's uncommitted edits before committing.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- cspell language en-US (a bare en accepts British spellings); documented in CODESTYLE and named in the spec recurring.spelling assertion (intentRef -> CODESTYLE).
- Docs reference the 2-digit major.minor version, never a 3-digit build.
- Closes #N goes on the develop->main promotion PR (auto-close fires only from the default branch).
- URLs in fenced code blocks stay inline; removing a link removes its orphaned reference definition.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
First per-repo audit (AUDIT.md), establishing the reports/ format. ptr727/Utilities main @ 8de105f. Verdict: operational; no defects, 8 drift findings (continuous push-publish vs two-phase, non-canonical release-asset seam, .editorconfig lacks global [*] end_of_line default, stale csproj versions, suffixed ruleset name, off-baseline repo-config filenames, README omissions, stale develop). cspell en-US + nuget OIDC confirmed clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Second per-repo audit (csharp+console+docker). ptr727/PlexCleaner main @ e84f142. Verdict: operational; no defects, 12 drift findings. Two recurring cross-repo drifts (ruleset context job-suffix; missing global [*] end_of_line default) flagged for a spec/lint machine-check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…233)
recurring.eol now requires .editorconfig to carry a global [*] end_of_line = crlf default plus LF pins; the per-extension-only form is a flagged drift. Makes the recurring cross-repo drift (Utilities, PlexCleaner) machine-checkable (AUDIT.md s9).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Third per-repo audit (csharp+nuget+codegen). ptr727/LanguageTags main @ 7322d72. Verdict: operational; no defects, 11 drift findings. codegen input-deterministic; nuget genuine OIDC. Recurring drifts confirmed across 3 repos. New spec gap: NUGET_USERNAME required by nuget-oidc but modeled as requires:[].
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fourth per-repo audit (docker+upstream-wrapper). ptr727/ESPHome-NonRoot main @ b44b1a6. Verdict: operational; no defects, 12 drift findings. Wrapper genuinely pinned (leaf consumes upstream-version.json). Strongest EOL case: 5 of 9 workflow YAML committed LF against the repo own .editorconfig - validates the #233 spec check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fifth/final stable audit (docker), completing the C#/Docker set. ptr727/VSCode-Server-DotNetCore main @ 80067f9. Verdict: operational; no defects, 13 drift findings. Docker-only (own multi-arch image, not a wrapper). Sharpest EOL case: build-docker-task.yml has mixed endings (4 LF lines at the Dependabot-rewritten uses: SHA lines) - automated tooling leaves mixed endings absent the global default; a per-line committed-endings check is warranted.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rename the ruleset-bound PR-gate aggregator to "Check pull request workflow status job" (fleet <name> job convention; old un-suffixed exception removed). Updates the job name, both repo-config rulesets, the live develop+main rulesets (in lockstep), and the exception rules + references in AGENTS.md/WORKFLOW.md/README.md. Corrects the Utilities/PlexCleaner reports (the ...job naming is canonical, not a drift).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 4: restructure spec/secrets.json into a fleet baseline (the App-token secrets the merge-bot needs everywhere) plus per-target/per-feature mechanism additions. nuget-oidc requires NUGET_USERNAME; codecov mechanism added (CODECOV_TOKEN); each publish mechanism declares an explicit kind (oidc|static-secret). Relax and harden validate.py: OIDC may require a non-secret username (forbids, not empty requires, enforces no-static-key), and the validator now shape-checks the whole secrets.json up front so malformed input reports clearly instead of crashing. Registry requiredSecrets and the codegen type reconciled to the baseline.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 2a: AUDIT.md section 10 codifies the convergence pattern - the agent applies audit fixes via a PR on the target repo, drives Copilot to green, and holds the merge for the maintainer; systemic drift is fixed in the hub.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… data pins (#240)
AGENTS.md line-ending guidance now requires the matching .editorconfig override alongside the .gitattributes pin for extensionless scripts (editor LF override) and byte-preserve data dirs (unset/false), closing the fleet divergence the EOL convergence surfaced.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
version.json 1.0 -> 2.0 (major: repurpose from a .NET sample template to a governance/workflow-audit catalog); README Release Notes -> 2.0; rewrote the stale placeholder HISTORY.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 5, 2026 18:01

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 2.0 release, completing the repo repurpose from a code-shipping .NET/Python sample template into a governance + workflow-audit catalog (spec/registry/audit reports, reference snippets, ruleset config, and lint-only CI/release automation).

Changes:

  • Bump versioning to 2.0 and refresh governance documentation for the catalog identity.
  • Remove the legacy sample implementation (C# projects, Python package, Docker build artifacts, tests/benchmarks) from main.
  • Add/refresh the governance catalog assets: spec/ validation + schemas, fleet registry/, audit reports/, repo-config/ rulesets + apply script, and reference catalog/ snippets; simplify CI/release workflows accordingly.

Reviewed changes

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

Show a summary per file
FileDescription
.config/dotnet-tools.jsonRemoves legacy .NET local tool manifest from the former sample template.
.dockerignoreRemoves Docker ignore rules tied to the former build/publish pipeline.
.editorconfigUpdates line-ending governance defaults (CRLF by default; LF for execution-sensitive paths).
.gitattributesPins LF for execution-sensitive files (including spec/validate.py) while keeping * -text.
.github/copilot-instructions.mdUpdates Copilot runbook guidance for the repurposed governance repo and ruleset-based gates.
.github/dependabot.ymlNarrows Dependabot config to GitHub Actions only, aligning with a source-only governance repo.
.github/workflows/publish-release.ymlReworks publishing into a source-only GitHub release per branch (no package/image publishes).
.github/workflows/test-pull-request.ymlReplaces build/test smoke pipeline with lint-only CI plus spec/registry validation.
.vscode/launch.jsonRemoves VS Code debug configurations for the deleted sample apps/tools.
AGENTS.mdGovernance/agent workflow rules updated for the catalog-focused repo.
AUDIT.mdAdds/updates the audit procedure used to evaluate downstream repos against the spec.
Benchmarks/.editorconfigRemoves benchmark-specific editor config from deleted sample benchmarks.
Benchmarks/Benchmarks.csprojRemoves the sample benchmark project.
Benchmarks/GlobalUsings.csRemoves benchmark global usings from deleted sample benchmarks.
Benchmarks/Program.csRemoves benchmark entry point.
Benchmarks/SampleBenchmark.csRemoves sample benchmark implementation.
CODESTYLE.mdUpdates coding/style governance docs for the catalog model.
CodeGen/.editorconfigRemoves codegen-specific editor config from deleted sample codegen project.
CodeGen/ApiNinjas.csRemoves sample codegen API client.
CodeGen/AssemblyInfo.csRemoves sample codegen assembly metadata helper.
CodeGen/CodeGen.csRemoves sample generated output file.
CodeGen/CodeGen.csprojRemoves the sample codegen project.
CodeGen/CodeGenBuilder.csRemoves sample code generator implementation.
CodeGen/CommandLine.csRemoves sample codegen CLI parsing.
CodeGen/Extensions.csRemoves sample logging extensions for the codegen tool.
CodeGen/GlobalUsings.csRemoves codegen global usings.
CodeGen/HttpClientFactory.csRemoves sample HTTP client factory/resilience code.
CodeGen/Program.csRemoves sample codegen entry point.
Console/.editorconfigRemoves console-app-specific editor config from deleted sample console.
Console/CommandLine.csRemoves sample console CLI implementation.
Console/Console.csprojRemoves sample console project definition.
Console/Extensions.csRemoves sample console logging extensions.
Console/GlobalUsings.csRemoves console global usings.
Console/LoggerFactory.csRemoves sample Serilog logger factory.
Console/Program.csRemoves sample console entry point.
Directory.Build.propsRemoves central MSBuild defaults from deleted .NET sample solution.
Directory.Packages.propsRemoves central package version management from deleted sample solution.
Docker/Build.shRemoves sample Docker build helper script.
Docker/DockerfileRemoves sample Docker image definition.
Docker/InstallDebugTools.shRemoves Docker debug tools installer for deleted sample image.
Docker/Version.shRemoves Docker version probe script.
HISTORY.mdUpdates release history to reflect the 2.0 repurpose (governance catalog).
NuGetLibrary/.editorconfigRemoves library-specific editor config from deleted sample library.
NuGetLibrary/Extensions.csRemoves sample library logging helpers.
NuGetLibrary/GlobalUsings.csRemoves library global usings.
NuGetLibrary/Library.csRemoves sample library implementation.
NuGetLibrary/LogOptions.csRemoves sample global logging options helper.
NuGetLibrary/NuGetLibrary.csprojRemoves sample NuGet library project definition.
NuGetLibrary/Options.csRemoves sample library options class.
ProjectTemplate.code-workspaceUpdates workspace recommendations/settings for governance-doc repo focus.
ProjectTemplate.slnxRemoves solution definition for deleted .NET projects.
PyPiLibrary/README.mdRemoves Python sample package documentation.
PyPiLibrary/pyproject.tomlRemoves Python sample package build configuration.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemoves Python sample package module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemoves Python sample versioning module.
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemoves Python sample implementation module.
PyPiLibrary/tests/init.pyRemoves Python sample tests package marker.
PyPiLibrary/tests/test_example.pyRemoves Python sample tests.
PyPiLibrary/uv.lockRemoves Python sample dependency lockfile.
README.mdUpdates the repo-level description and operational model for the governance catalog.
Tests/.editorconfigRemoves test-only editor config from deleted sample tests.
Tests/Fixture.csRemoves shared xUnit fixture scaffolding.
Tests/GlobalUsings.csRemoves test global usings.
Tests/LoggingTests.csRemoves sample logging tests.
Tests/SampleTest.csRemoves sample unit tests.
Tests/Tests.csprojRemoves sample test project definition.
WORKFLOW.mdAdds/updates workflow guarantees/methodology for auditing and CI/release behavior.
catalog/README.mdAdds/updates documentation for the reference snippet catalog.
catalog/snippets/configs/dependabot.ymlAdds a reference Dependabot configuration for downstream code-shipping repos.
catalog/snippets/configs/docker-hub-readme.mdAdds a reference Docker Hub README exemplar for downstream Docker repos.
catalog/snippets/configs/vscode-tasks.jsonAdds reference VS Code tasks (clean-compile and convenience tasks) for downstream repos.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdds a reference .NET devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/dotnet/post-create.shAdds a reference post-create script for the .NET devcontainer snippet.
catalog/snippets/devcontainer/python/devcontainer.jsonAdds a reference Python devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/python/post-create.shAdds a reference post-create script for the Python devcontainer snippet.
catalog/snippets/vscode/README.mdAdds documentation for composable VS Code workspace fragments.
catalog/snippets/vscode/base.jsoncAdds the baseline VS Code workspace fragment for downstream repos.
catalog/snippets/vscode/docker.jsoncAdds Docker-specific workspace fragment for downstream repos.
catalog/snippets/vscode/dotnet.jsoncAdds .NET-specific workspace fragment for downstream repos.
catalog/snippets/vscode/python.jsoncAdds Python-specific workspace fragment for downstream repos.
catalog/snippets/workflows/README.mdAdds mapping documentation from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/build-datebadge-task.ymlAdds reference reusable workflow for generating a date badge.
catalog/snippets/workflows/build-docker-task.ymlAdds reference reusable workflow for Docker build/push with registry caching.
catalog/snippets/workflows/build-executable-task.ymlAdds reference reusable workflow for building and packaging a console executable.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdds reference reusable workflow for building/pushing a NuGet package.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdds reference reusable workflow for building a PyPI package (publish split elsewhere).
catalog/snippets/workflows/build-release-task.ymlAdds reference multi-target release orchestrator reusable workflow.
catalog/snippets/workflows/check-upstream-version-task.ymlAdds reference reusable workflow for upstream-version tracking wrappers.
catalog/snippets/workflows/get-version-task.ymlAdds reference reusable workflow for NBGV-based version computation.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdds reference reusable workflow for publishing Docker Hub README content.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdds reference reusable workflow to run codegen and open PRs per branch.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdds reference scheduled workflow to trigger codegen PRs periodically.
cspell.jsonAdds/updates spelling configuration for lint parity across editor/CLI/CI.
docs/devcontainer.mdUpdates documentation around devcontainer usage for the governance repo.
docs/host-setup.mdUpdates host setup docs (links, references) for signing and tooling.
docs/ssh-signing.mdUpdates SSH signing docs (links, references) aligned with governance conventions.
registry/repos.jsonAdds/updates the fleet registry of repos, types, and publish mechanisms.
registry/repos.schema.jsonAdds JSON schema for the fleet registry file.
repo-config/README.mdAdds documentation for ruleset JSON and configuration workflow.
repo-config/configure.shAdds an idempotent ruleset-application script using the GitHub API.
repo-config/develop.jsonAdds/updates committed develop branch ruleset payload.
repo-config/main.jsonAdds/updates committed main branch ruleset payload.
reports/.gitkeepTracks the audit reports directory in git.
reports/_template.mdAdds a standard template for per-repo audit reports.
reports/esphome-nonroot/audit.mdAdds/updates an audit report for a fleet repo.
reports/languagetags/audit.mdAdds/updates an audit report for a fleet repo.
reports/plexcleaner/audit.mdAdds/updates an audit report for a fleet repo.
reports/utilities/audit.mdAdds/updates an audit report for a fleet repo.
reports/vscode-server-dotnetcore/audit.mdAdds/updates an audit report for a fleet repo.
spec/files.jsonAdds/updates the baseline file/section spec for audits.
spec/files.schema.jsonAdds JSON schema for the baseline files spec.
spec/project-types.jsonAdds/updates project type definitions and audit checks.
spec/project-types.schema.jsonAdds JSON schema for project types definitions.
spec/readme-structure.mdAdds the preferred README structure spec for downstream repos.
spec/secrets.jsonAdds/updates publish mechanism secrets model (required/forbidden).
spec/secrets.schema.jsonAdds JSON schema for the secrets spec.
spec/validate.pyAdds a stdlib-only validator for spec/registry cross-references (CI gate).
version.jsonBumps NBGV version to 2.0 for the release promotion.

Comment threadREADME.md Outdated
The README claimed the PR gate runs JSON-schema validation, but the workflow runs jq parse checks over registry/, spec/, and repo-config/ plus spec/validate.py cross-reference and shape checks. Corrected the description to match the workflow.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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

@ptr727
ptr727 merged commit a0f44a4 into mainJul 5, 2026
9 checks passed
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: promote develop to main (2.0 - governance catalog repurpose) - #242

Merged
ptr727 merged 16 commits into
mainfrom
develop
Jul 5, 2026
Merged

Release: promote develop to main (2.0 - governance catalog repurpose)#242
ptr727 merged 16 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes the governance-catalog repurpose from develop to main. main is currently the pre-repurpose .NET sample template (tip #225); this brings develop (#226-#241) to main as the 2.0 release. Merge is conflict-free.

Scope:

  • ~28 files added - spec/ (project-types/files/secrets/readme-structure + schemas + validate.py), AUDIT.md, WORKFLOW.md, registry/, reports/ (5 per-repo audits), catalog/ snippets, repo-config/ rulesets, the VS Code workspace.
  • ~54 files removed - the old sample-project source, tests, and its per-target build/publish wiring.
  • Governance docs rewritten (AGENTS.md, CODESTYLE.md, README.md, HISTORY.md); version.json -> 2.0.

Merge as a merge-commit (the develop->main ruleset), on the maintainer.s explicit go-ahead - this is the release cut. Not closing #228: its retrospective is partially incorporated; the deferred sections (cross-platform framing, editor/scripts snippets, the Python HA profile, devcontainer) remain open.

🤖 Generated with Claude Code

ptr727and others added 15 commits July 4, 2026 17:06
#226)
Abandons the template-inheritance model and converts this repo into a
documentation, agent-orchestration, and workflow-audit catalog. Each
fleet project now owns its own implementation and is audited against the
ground truth here, rather than copying files from a template.
## Highlights
- **Demolition + relocation.** Remove the sample apps and .NET build
infra. Rulesets move to `repo-config/` (with `configure.sh`) since
`.github/` is Actions-owned; the app-specific build/publish/codegen
workflows and config exemplars move to `catalog/snippets/`.
- **Governance rewrite.** Strip template-inheritance framing from
AGENTS/README/CODESTYLE/WORKFLOW/copilot-instructions. Add the "durable
guidance lives in committed docs, not agent memory" principle. Split the
README (this repo's own vs `spec/readme-structure.md`, the fleet README
exemplar); salvage the GitHub-setup/ruleset/brownfield procedures into
`repo-config/README.md`.
- **Ground-truth spec.** `registry/repos.json` (self + 7 cataloged + 14
backlog), `spec/project-types.json` (per-type letter/intent checks plus
cross-cutting linter-parity, recurring-violations, branch-model,
secrets, readme-structure), `files.json`, `secrets.json`, JSON schemas,
and `spec/validate.py` (dependency-free classification dry-run).
- **AUDIT.md.** The read-only per-repo audit procedure, reusing
WORKFLOW.md's operational/N-A/defect vocabulary.
- **WORKFLOW.md.** Four mermaid flow diagrams (branch model, PR smoke,
publish matrix, artifact seam).
- **CI.** `test-pull-request.yml` is now lint-only (markdownlint +
cspell + actionlint + spec validation) behind the ruleset-bound
aggregator; `publish-release.yml` is a self-contained source-only
release. The repo classifies as the source-only type and audits itself.
- **Docs style.** Human-facing docs use grouped, alphabetized
reference-style links; the README carries a human-readable Rules index.
## Verification
markdownlint 0, cSpell 0, actionlint clean, `spec/validate.py`
classifies the fleet, all relative links resolve, EOL/charset clean, and
the self-audit confirms the rulesets match the documented branch model.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#227)
- Present-tense / current-state doc rule (AGENTS.md, README.md) and README violation fix; added to the Rules index.
- Canonical README structure restored in the exemplar and README.
- VS Code workspace catalog: base.jsonc plus dotnet/python/docker per-type fragments, and the repo's own ProjectTemplate.code-workspace.
- Table of Contents omit-marker convention, deterministic regardless of workspace load, documented in AGENTS.md.
- editorconfig CRLF default with LF exceptions, mirroring .gitattributes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…229)
- Reconcile AGENTS.md Line Endings with the [*]=crlf default + LF-exception policy.
- Default .py to CRLF (universal newlines); pin spec/validate.py LF by path as a shebang script.
- Add the EOL-audit method (byte-scan; not file/git-ls-files parsing).
- copilot-instructions: gh pr edit broken -> updatePullRequest/PATCH; rulesets not classic; push->SHA race; Copilot can be wrong.
- Git rule: check the maintainer's uncommitted edits before committing.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- cspell language en-US (a bare en accepts British spellings); documented in CODESTYLE and named in the spec recurring.spelling assertion (intentRef -> CODESTYLE).
- Docs reference the 2-digit major.minor version, never a 3-digit build.
- Closes #N goes on the develop->main promotion PR (auto-close fires only from the default branch).
- URLs in fenced code blocks stay inline; removing a link removes its orphaned reference definition.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
First per-repo audit (AUDIT.md), establishing the reports/ format. ptr727/Utilities main @ 8de105f. Verdict: operational; no defects, 8 drift findings (continuous push-publish vs two-phase, non-canonical release-asset seam, .editorconfig lacks global [*] end_of_line default, stale csproj versions, suffixed ruleset name, off-baseline repo-config filenames, README omissions, stale develop). cspell en-US + nuget OIDC confirmed clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Second per-repo audit (csharp+console+docker). ptr727/PlexCleaner main @ e84f142. Verdict: operational; no defects, 12 drift findings. Two recurring cross-repo drifts (ruleset context job-suffix; missing global [*] end_of_line default) flagged for a spec/lint machine-check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…233)
recurring.eol now requires .editorconfig to carry a global [*] end_of_line = crlf default plus LF pins; the per-extension-only form is a flagged drift. Makes the recurring cross-repo drift (Utilities, PlexCleaner) machine-checkable (AUDIT.md s9).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Third per-repo audit (csharp+nuget+codegen). ptr727/LanguageTags main @ 7322d72. Verdict: operational; no defects, 11 drift findings. codegen input-deterministic; nuget genuine OIDC. Recurring drifts confirmed across 3 repos. New spec gap: NUGET_USERNAME required by nuget-oidc but modeled as requires:[].
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fourth per-repo audit (docker+upstream-wrapper). ptr727/ESPHome-NonRoot main @ b44b1a6. Verdict: operational; no defects, 12 drift findings. Wrapper genuinely pinned (leaf consumes upstream-version.json). Strongest EOL case: 5 of 9 workflow YAML committed LF against the repo own .editorconfig - validates the #233 spec check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fifth/final stable audit (docker), completing the C#/Docker set. ptr727/VSCode-Server-DotNetCore main @ 80067f9. Verdict: operational; no defects, 13 drift findings. Docker-only (own multi-arch image, not a wrapper). Sharpest EOL case: build-docker-task.yml has mixed endings (4 LF lines at the Dependabot-rewritten uses: SHA lines) - automated tooling leaves mixed endings absent the global default; a per-line committed-endings check is warranted.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rename the ruleset-bound PR-gate aggregator to "Check pull request workflow status job" (fleet <name> job convention; old un-suffixed exception removed). Updates the job name, both repo-config rulesets, the live develop+main rulesets (in lockstep), and the exception rules + references in AGENTS.md/WORKFLOW.md/README.md. Corrects the Utilities/PlexCleaner reports (the ...job naming is canonical, not a drift).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 4: restructure spec/secrets.json into a fleet baseline (the App-token secrets the merge-bot needs everywhere) plus per-target/per-feature mechanism additions. nuget-oidc requires NUGET_USERNAME; codecov mechanism added (CODECOV_TOKEN); each publish mechanism declares an explicit kind (oidc|static-secret). Relax and harden validate.py: OIDC may require a non-secret username (forbids, not empty requires, enforces no-static-key), and the validator now shape-checks the whole secrets.json up front so malformed input reports clearly instead of crashing. Registry requiredSecrets and the codegen type reconciled to the baseline.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 2a: AUDIT.md section 10 codifies the convergence pattern - the agent applies audit fixes via a PR on the target repo, drives Copilot to green, and holds the merge for the maintainer; systemic drift is fixed in the hub.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… data pins (#240)
AGENTS.md line-ending guidance now requires the matching .editorconfig override alongside the .gitattributes pin for extensionless scripts (editor LF override) and byte-preserve data dirs (unset/false), closing the fleet divergence the EOL convergence surfaced.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
version.json 1.0 -> 2.0 (major: repurpose from a .NET sample template to a governance/workflow-audit catalog); README Release Notes -> 2.0; rewrote the stale placeholder HISTORY.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 5, 2026 18:01

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 2.0 release, completing the repo repurpose from a code-shipping .NET/Python sample template into a governance + workflow-audit catalog (spec/registry/audit reports, reference snippets, ruleset config, and lint-only CI/release automation).

Changes:

  • Bump versioning to 2.0 and refresh governance documentation for the catalog identity.
  • Remove the legacy sample implementation (C# projects, Python package, Docker build artifacts, tests/benchmarks) from main.
  • Add/refresh the governance catalog assets: spec/ validation + schemas, fleet registry/, audit reports/, repo-config/ rulesets + apply script, and reference catalog/ snippets; simplify CI/release workflows accordingly.

Reviewed changes

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

Show a summary per file
FileDescription
.config/dotnet-tools.jsonRemoves legacy .NET local tool manifest from the former sample template.
.dockerignoreRemoves Docker ignore rules tied to the former build/publish pipeline.
.editorconfigUpdates line-ending governance defaults (CRLF by default; LF for execution-sensitive paths).
.gitattributesPins LF for execution-sensitive files (including spec/validate.py) while keeping * -text.
.github/copilot-instructions.mdUpdates Copilot runbook guidance for the repurposed governance repo and ruleset-based gates.
.github/dependabot.ymlNarrows Dependabot config to GitHub Actions only, aligning with a source-only governance repo.
.github/workflows/publish-release.ymlReworks publishing into a source-only GitHub release per branch (no package/image publishes).
.github/workflows/test-pull-request.ymlReplaces build/test smoke pipeline with lint-only CI plus spec/registry validation.
.vscode/launch.jsonRemoves VS Code debug configurations for the deleted sample apps/tools.
AGENTS.mdGovernance/agent workflow rules updated for the catalog-focused repo.
AUDIT.mdAdds/updates the audit procedure used to evaluate downstream repos against the spec.
Benchmarks/.editorconfigRemoves benchmark-specific editor config from deleted sample benchmarks.
Benchmarks/Benchmarks.csprojRemoves the sample benchmark project.
Benchmarks/GlobalUsings.csRemoves benchmark global usings from deleted sample benchmarks.
Benchmarks/Program.csRemoves benchmark entry point.
Benchmarks/SampleBenchmark.csRemoves sample benchmark implementation.
CODESTYLE.mdUpdates coding/style governance docs for the catalog model.
CodeGen/.editorconfigRemoves codegen-specific editor config from deleted sample codegen project.
CodeGen/ApiNinjas.csRemoves sample codegen API client.
CodeGen/AssemblyInfo.csRemoves sample codegen assembly metadata helper.
CodeGen/CodeGen.csRemoves sample generated output file.
CodeGen/CodeGen.csprojRemoves the sample codegen project.
CodeGen/CodeGenBuilder.csRemoves sample code generator implementation.
CodeGen/CommandLine.csRemoves sample codegen CLI parsing.
CodeGen/Extensions.csRemoves sample logging extensions for the codegen tool.
CodeGen/GlobalUsings.csRemoves codegen global usings.
CodeGen/HttpClientFactory.csRemoves sample HTTP client factory/resilience code.
CodeGen/Program.csRemoves sample codegen entry point.
Console/.editorconfigRemoves console-app-specific editor config from deleted sample console.
Console/CommandLine.csRemoves sample console CLI implementation.
Console/Console.csprojRemoves sample console project definition.
Console/Extensions.csRemoves sample console logging extensions.
Console/GlobalUsings.csRemoves console global usings.
Console/LoggerFactory.csRemoves sample Serilog logger factory.
Console/Program.csRemoves sample console entry point.
Directory.Build.propsRemoves central MSBuild defaults from deleted .NET sample solution.
Directory.Packages.propsRemoves central package version management from deleted sample solution.
Docker/Build.shRemoves sample Docker build helper script.
Docker/DockerfileRemoves sample Docker image definition.
Docker/InstallDebugTools.shRemoves Docker debug tools installer for deleted sample image.
Docker/Version.shRemoves Docker version probe script.
HISTORY.mdUpdates release history to reflect the 2.0 repurpose (governance catalog).
NuGetLibrary/.editorconfigRemoves library-specific editor config from deleted sample library.
NuGetLibrary/Extensions.csRemoves sample library logging helpers.
NuGetLibrary/GlobalUsings.csRemoves library global usings.
NuGetLibrary/Library.csRemoves sample library implementation.
NuGetLibrary/LogOptions.csRemoves sample global logging options helper.
NuGetLibrary/NuGetLibrary.csprojRemoves sample NuGet library project definition.
NuGetLibrary/Options.csRemoves sample library options class.
ProjectTemplate.code-workspaceUpdates workspace recommendations/settings for governance-doc repo focus.
ProjectTemplate.slnxRemoves solution definition for deleted .NET projects.
PyPiLibrary/README.mdRemoves Python sample package documentation.
PyPiLibrary/pyproject.tomlRemoves Python sample package build configuration.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemoves Python sample package module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemoves Python sample versioning module.
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemoves Python sample implementation module.
PyPiLibrary/tests/init.pyRemoves Python sample tests package marker.
PyPiLibrary/tests/test_example.pyRemoves Python sample tests.
PyPiLibrary/uv.lockRemoves Python sample dependency lockfile.
README.mdUpdates the repo-level description and operational model for the governance catalog.
Tests/.editorconfigRemoves test-only editor config from deleted sample tests.
Tests/Fixture.csRemoves shared xUnit fixture scaffolding.
Tests/GlobalUsings.csRemoves test global usings.
Tests/LoggingTests.csRemoves sample logging tests.
Tests/SampleTest.csRemoves sample unit tests.
Tests/Tests.csprojRemoves sample test project definition.
WORKFLOW.mdAdds/updates workflow guarantees/methodology for auditing and CI/release behavior.
catalog/README.mdAdds/updates documentation for the reference snippet catalog.
catalog/snippets/configs/dependabot.ymlAdds a reference Dependabot configuration for downstream code-shipping repos.
catalog/snippets/configs/docker-hub-readme.mdAdds a reference Docker Hub README exemplar for downstream Docker repos.
catalog/snippets/configs/vscode-tasks.jsonAdds reference VS Code tasks (clean-compile and convenience tasks) for downstream repos.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdds a reference .NET devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/dotnet/post-create.shAdds a reference post-create script for the .NET devcontainer snippet.
catalog/snippets/devcontainer/python/devcontainer.jsonAdds a reference Python devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/python/post-create.shAdds a reference post-create script for the Python devcontainer snippet.
catalog/snippets/vscode/README.mdAdds documentation for composable VS Code workspace fragments.
catalog/snippets/vscode/base.jsoncAdds the baseline VS Code workspace fragment for downstream repos.
catalog/snippets/vscode/docker.jsoncAdds Docker-specific workspace fragment for downstream repos.
catalog/snippets/vscode/dotnet.jsoncAdds .NET-specific workspace fragment for downstream repos.
catalog/snippets/vscode/python.jsoncAdds Python-specific workspace fragment for downstream repos.
catalog/snippets/workflows/README.mdAdds mapping documentation from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/build-datebadge-task.ymlAdds reference reusable workflow for generating a date badge.
catalog/snippets/workflows/build-docker-task.ymlAdds reference reusable workflow for Docker build/push with registry caching.
catalog/snippets/workflows/build-executable-task.ymlAdds reference reusable workflow for building and packaging a console executable.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdds reference reusable workflow for building/pushing a NuGet package.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdds reference reusable workflow for building a PyPI package (publish split elsewhere).
catalog/snippets/workflows/build-release-task.ymlAdds reference multi-target release orchestrator reusable workflow.
catalog/snippets/workflows/check-upstream-version-task.ymlAdds reference reusable workflow for upstream-version tracking wrappers.
catalog/snippets/workflows/get-version-task.ymlAdds reference reusable workflow for NBGV-based version computation.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdds reference reusable workflow for publishing Docker Hub README content.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdds reference reusable workflow to run codegen and open PRs per branch.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdds reference scheduled workflow to trigger codegen PRs periodically.
cspell.jsonAdds/updates spelling configuration for lint parity across editor/CLI/CI.
docs/devcontainer.mdUpdates documentation around devcontainer usage for the governance repo.
docs/host-setup.mdUpdates host setup docs (links, references) for signing and tooling.
docs/ssh-signing.mdUpdates SSH signing docs (links, references) aligned with governance conventions.
registry/repos.jsonAdds/updates the fleet registry of repos, types, and publish mechanisms.
registry/repos.schema.jsonAdds JSON schema for the fleet registry file.
repo-config/README.mdAdds documentation for ruleset JSON and configuration workflow.
repo-config/configure.shAdds an idempotent ruleset-application script using the GitHub API.
repo-config/develop.jsonAdds/updates committed develop branch ruleset payload.
repo-config/main.jsonAdds/updates committed main branch ruleset payload.
reports/.gitkeepTracks the audit reports directory in git.
reports/_template.mdAdds a standard template for per-repo audit reports.
reports/esphome-nonroot/audit.mdAdds/updates an audit report for a fleet repo.
reports/languagetags/audit.mdAdds/updates an audit report for a fleet repo.
reports/plexcleaner/audit.mdAdds/updates an audit report for a fleet repo.
reports/utilities/audit.mdAdds/updates an audit report for a fleet repo.
reports/vscode-server-dotnetcore/audit.mdAdds/updates an audit report for a fleet repo.
spec/files.jsonAdds/updates the baseline file/section spec for audits.
spec/files.schema.jsonAdds JSON schema for the baseline files spec.
spec/project-types.jsonAdds/updates project type definitions and audit checks.
spec/project-types.schema.jsonAdds JSON schema for project types definitions.
spec/readme-structure.mdAdds the preferred README structure spec for downstream repos.
spec/secrets.jsonAdds/updates publish mechanism secrets model (required/forbidden).
spec/secrets.schema.jsonAdds JSON schema for the secrets spec.
spec/validate.pyAdds a stdlib-only validator for spec/registry cross-references (CI gate).
version.jsonBumps NBGV version to 2.0 for the release promotion.

Comment threadREADME.md Outdated
The README claimed the PR gate runs JSON-schema validation, but the workflow runs jq parse checks over registry/, spec/, and repo-config/ plus spec/validate.py cross-reference and shape checks. Corrected the description to match the workflow.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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

@ptr727
ptr727 merged commit a0f44a4 into mainJul 5, 2026
9 checks passed
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: promote develop to main (2.0 - governance catalog repurpose) - #242

Merged
ptr727 merged 16 commits into
mainfrom
develop
Jul 5, 2026
Merged

Release: promote develop to main (2.0 - governance catalog repurpose)#242
ptr727 merged 16 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes the governance-catalog repurpose from develop to main. main is currently the pre-repurpose .NET sample template (tip #225); this brings develop (#226-#241) to main as the 2.0 release. Merge is conflict-free.

Scope:

  • ~28 files added - spec/ (project-types/files/secrets/readme-structure + schemas + validate.py), AUDIT.md, WORKFLOW.md, registry/, reports/ (5 per-repo audits), catalog/ snippets, repo-config/ rulesets, the VS Code workspace.
  • ~54 files removed - the old sample-project source, tests, and its per-target build/publish wiring.
  • Governance docs rewritten (AGENTS.md, CODESTYLE.md, README.md, HISTORY.md); version.json -> 2.0.

Merge as a merge-commit (the develop->main ruleset), on the maintainer.s explicit go-ahead - this is the release cut. Not closing #228: its retrospective is partially incorporated; the deferred sections (cross-platform framing, editor/scripts snippets, the Python HA profile, devcontainer) remain open.

🤖 Generated with Claude Code

ptr727and others added 15 commits July 4, 2026 17:06
#226)
Abandons the template-inheritance model and converts this repo into a
documentation, agent-orchestration, and workflow-audit catalog. Each
fleet project now owns its own implementation and is audited against the
ground truth here, rather than copying files from a template.
## Highlights
- **Demolition + relocation.** Remove the sample apps and .NET build
infra. Rulesets move to `repo-config/` (with `configure.sh`) since
`.github/` is Actions-owned; the app-specific build/publish/codegen
workflows and config exemplars move to `catalog/snippets/`.
- **Governance rewrite.** Strip template-inheritance framing from
AGENTS/README/CODESTYLE/WORKFLOW/copilot-instructions. Add the "durable
guidance lives in committed docs, not agent memory" principle. Split the
README (this repo's own vs `spec/readme-structure.md`, the fleet README
exemplar); salvage the GitHub-setup/ruleset/brownfield procedures into
`repo-config/README.md`.
- **Ground-truth spec.** `registry/repos.json` (self + 7 cataloged + 14
backlog), `spec/project-types.json` (per-type letter/intent checks plus
cross-cutting linter-parity, recurring-violations, branch-model,
secrets, readme-structure), `files.json`, `secrets.json`, JSON schemas,
and `spec/validate.py` (dependency-free classification dry-run).
- **AUDIT.md.** The read-only per-repo audit procedure, reusing
WORKFLOW.md's operational/N-A/defect vocabulary.
- **WORKFLOW.md.** Four mermaid flow diagrams (branch model, PR smoke,
publish matrix, artifact seam).
- **CI.** `test-pull-request.yml` is now lint-only (markdownlint +
cspell + actionlint + spec validation) behind the ruleset-bound
aggregator; `publish-release.yml` is a self-contained source-only
release. The repo classifies as the source-only type and audits itself.
- **Docs style.** Human-facing docs use grouped, alphabetized
reference-style links; the README carries a human-readable Rules index.
## Verification
markdownlint 0, cSpell 0, actionlint clean, `spec/validate.py`
classifies the fleet, all relative links resolve, EOL/charset clean, and
the self-audit confirms the rulesets match the documented branch model.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#227)
- Present-tense / current-state doc rule (AGENTS.md, README.md) and README violation fix; added to the Rules index.
- Canonical README structure restored in the exemplar and README.
- VS Code workspace catalog: base.jsonc plus dotnet/python/docker per-type fragments, and the repo's own ProjectTemplate.code-workspace.
- Table of Contents omit-marker convention, deterministic regardless of workspace load, documented in AGENTS.md.
- editorconfig CRLF default with LF exceptions, mirroring .gitattributes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…229)
- Reconcile AGENTS.md Line Endings with the [*]=crlf default + LF-exception policy.
- Default .py to CRLF (universal newlines); pin spec/validate.py LF by path as a shebang script.
- Add the EOL-audit method (byte-scan; not file/git-ls-files parsing).
- copilot-instructions: gh pr edit broken -> updatePullRequest/PATCH; rulesets not classic; push->SHA race; Copilot can be wrong.
- Git rule: check the maintainer's uncommitted edits before committing.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- cspell language en-US (a bare en accepts British spellings); documented in CODESTYLE and named in the spec recurring.spelling assertion (intentRef -> CODESTYLE).
- Docs reference the 2-digit major.minor version, never a 3-digit build.
- Closes #N goes on the develop->main promotion PR (auto-close fires only from the default branch).
- URLs in fenced code blocks stay inline; removing a link removes its orphaned reference definition.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
First per-repo audit (AUDIT.md), establishing the reports/ format. ptr727/Utilities main @ 8de105f. Verdict: operational; no defects, 8 drift findings (continuous push-publish vs two-phase, non-canonical release-asset seam, .editorconfig lacks global [*] end_of_line default, stale csproj versions, suffixed ruleset name, off-baseline repo-config filenames, README omissions, stale develop). cspell en-US + nuget OIDC confirmed clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Second per-repo audit (csharp+console+docker). ptr727/PlexCleaner main @ e84f142. Verdict: operational; no defects, 12 drift findings. Two recurring cross-repo drifts (ruleset context job-suffix; missing global [*] end_of_line default) flagged for a spec/lint machine-check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…233)
recurring.eol now requires .editorconfig to carry a global [*] end_of_line = crlf default plus LF pins; the per-extension-only form is a flagged drift. Makes the recurring cross-repo drift (Utilities, PlexCleaner) machine-checkable (AUDIT.md s9).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Third per-repo audit (csharp+nuget+codegen). ptr727/LanguageTags main @ 7322d72. Verdict: operational; no defects, 11 drift findings. codegen input-deterministic; nuget genuine OIDC. Recurring drifts confirmed across 3 repos. New spec gap: NUGET_USERNAME required by nuget-oidc but modeled as requires:[].
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fourth per-repo audit (docker+upstream-wrapper). ptr727/ESPHome-NonRoot main @ b44b1a6. Verdict: operational; no defects, 12 drift findings. Wrapper genuinely pinned (leaf consumes upstream-version.json). Strongest EOL case: 5 of 9 workflow YAML committed LF against the repo own .editorconfig - validates the #233 spec check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fifth/final stable audit (docker), completing the C#/Docker set. ptr727/VSCode-Server-DotNetCore main @ 80067f9. Verdict: operational; no defects, 13 drift findings. Docker-only (own multi-arch image, not a wrapper). Sharpest EOL case: build-docker-task.yml has mixed endings (4 LF lines at the Dependabot-rewritten uses: SHA lines) - automated tooling leaves mixed endings absent the global default; a per-line committed-endings check is warranted.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rename the ruleset-bound PR-gate aggregator to "Check pull request workflow status job" (fleet <name> job convention; old un-suffixed exception removed). Updates the job name, both repo-config rulesets, the live develop+main rulesets (in lockstep), and the exception rules + references in AGENTS.md/WORKFLOW.md/README.md. Corrects the Utilities/PlexCleaner reports (the ...job naming is canonical, not a drift).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 4: restructure spec/secrets.json into a fleet baseline (the App-token secrets the merge-bot needs everywhere) plus per-target/per-feature mechanism additions. nuget-oidc requires NUGET_USERNAME; codecov mechanism added (CODECOV_TOKEN); each publish mechanism declares an explicit kind (oidc|static-secret). Relax and harden validate.py: OIDC may require a non-secret username (forbids, not empty requires, enforces no-static-key), and the validator now shape-checks the whole secrets.json up front so malformed input reports clearly instead of crashing. Registry requiredSecrets and the codegen type reconciled to the baseline.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Directive 2a: AUDIT.md section 10 codifies the convergence pattern - the agent applies audit fixes via a PR on the target repo, drives Copilot to green, and holds the merge for the maintainer; systemic drift is fixed in the hub.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… data pins (#240)
AGENTS.md line-ending guidance now requires the matching .editorconfig override alongside the .gitattributes pin for extensionless scripts (editor LF override) and byte-preserve data dirs (unset/false), closing the fleet divergence the EOL convergence surfaced.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
version.json 1.0 -> 2.0 (major: repurpose from a .NET sample template to a governance/workflow-audit catalog); README Release Notes -> 2.0; rewrote the stale placeholder HISTORY.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 5, 2026 18:01

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 2.0 release, completing the repo repurpose from a code-shipping .NET/Python sample template into a governance + workflow-audit catalog (spec/registry/audit reports, reference snippets, ruleset config, and lint-only CI/release automation).

Changes:

  • Bump versioning to 2.0 and refresh governance documentation for the catalog identity.
  • Remove the legacy sample implementation (C# projects, Python package, Docker build artifacts, tests/benchmarks) from main.
  • Add/refresh the governance catalog assets: spec/ validation + schemas, fleet registry/, audit reports/, repo-config/ rulesets + apply script, and reference catalog/ snippets; simplify CI/release workflows accordingly.

Reviewed changes

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

Show a summary per file
FileDescription
.config/dotnet-tools.jsonRemoves legacy .NET local tool manifest from the former sample template.
.dockerignoreRemoves Docker ignore rules tied to the former build/publish pipeline.
.editorconfigUpdates line-ending governance defaults (CRLF by default; LF for execution-sensitive paths).
.gitattributesPins LF for execution-sensitive files (including spec/validate.py) while keeping * -text.
.github/copilot-instructions.mdUpdates Copilot runbook guidance for the repurposed governance repo and ruleset-based gates.
.github/dependabot.ymlNarrows Dependabot config to GitHub Actions only, aligning with a source-only governance repo.
.github/workflows/publish-release.ymlReworks publishing into a source-only GitHub release per branch (no package/image publishes).
.github/workflows/test-pull-request.ymlReplaces build/test smoke pipeline with lint-only CI plus spec/registry validation.
.vscode/launch.jsonRemoves VS Code debug configurations for the deleted sample apps/tools.
AGENTS.mdGovernance/agent workflow rules updated for the catalog-focused repo.
AUDIT.mdAdds/updates the audit procedure used to evaluate downstream repos against the spec.
Benchmarks/.editorconfigRemoves benchmark-specific editor config from deleted sample benchmarks.
Benchmarks/Benchmarks.csprojRemoves the sample benchmark project.
Benchmarks/GlobalUsings.csRemoves benchmark global usings from deleted sample benchmarks.
Benchmarks/Program.csRemoves benchmark entry point.
Benchmarks/SampleBenchmark.csRemoves sample benchmark implementation.
CODESTYLE.mdUpdates coding/style governance docs for the catalog model.
CodeGen/.editorconfigRemoves codegen-specific editor config from deleted sample codegen project.
CodeGen/ApiNinjas.csRemoves sample codegen API client.
CodeGen/AssemblyInfo.csRemoves sample codegen assembly metadata helper.
CodeGen/CodeGen.csRemoves sample generated output file.
CodeGen/CodeGen.csprojRemoves the sample codegen project.
CodeGen/CodeGenBuilder.csRemoves sample code generator implementation.
CodeGen/CommandLine.csRemoves sample codegen CLI parsing.
CodeGen/Extensions.csRemoves sample logging extensions for the codegen tool.
CodeGen/GlobalUsings.csRemoves codegen global usings.
CodeGen/HttpClientFactory.csRemoves sample HTTP client factory/resilience code.
CodeGen/Program.csRemoves sample codegen entry point.
Console/.editorconfigRemoves console-app-specific editor config from deleted sample console.
Console/CommandLine.csRemoves sample console CLI implementation.
Console/Console.csprojRemoves sample console project definition.
Console/Extensions.csRemoves sample console logging extensions.
Console/GlobalUsings.csRemoves console global usings.
Console/LoggerFactory.csRemoves sample Serilog logger factory.
Console/Program.csRemoves sample console entry point.
Directory.Build.propsRemoves central MSBuild defaults from deleted .NET sample solution.
Directory.Packages.propsRemoves central package version management from deleted sample solution.
Docker/Build.shRemoves sample Docker build helper script.
Docker/DockerfileRemoves sample Docker image definition.
Docker/InstallDebugTools.shRemoves Docker debug tools installer for deleted sample image.
Docker/Version.shRemoves Docker version probe script.
HISTORY.mdUpdates release history to reflect the 2.0 repurpose (governance catalog).
NuGetLibrary/.editorconfigRemoves library-specific editor config from deleted sample library.
NuGetLibrary/Extensions.csRemoves sample library logging helpers.
NuGetLibrary/GlobalUsings.csRemoves library global usings.
NuGetLibrary/Library.csRemoves sample library implementation.
NuGetLibrary/LogOptions.csRemoves sample global logging options helper.
NuGetLibrary/NuGetLibrary.csprojRemoves sample NuGet library project definition.
NuGetLibrary/Options.csRemoves sample library options class.
ProjectTemplate.code-workspaceUpdates workspace recommendations/settings for governance-doc repo focus.
ProjectTemplate.slnxRemoves solution definition for deleted .NET projects.
PyPiLibrary/README.mdRemoves Python sample package documentation.
PyPiLibrary/pyproject.tomlRemoves Python sample package build configuration.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemoves Python sample package module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemoves Python sample versioning module.
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemoves Python sample implementation module.
PyPiLibrary/tests/init.pyRemoves Python sample tests package marker.
PyPiLibrary/tests/test_example.pyRemoves Python sample tests.
PyPiLibrary/uv.lockRemoves Python sample dependency lockfile.
README.mdUpdates the repo-level description and operational model for the governance catalog.
Tests/.editorconfigRemoves test-only editor config from deleted sample tests.
Tests/Fixture.csRemoves shared xUnit fixture scaffolding.
Tests/GlobalUsings.csRemoves test global usings.
Tests/LoggingTests.csRemoves sample logging tests.
Tests/SampleTest.csRemoves sample unit tests.
Tests/Tests.csprojRemoves sample test project definition.
WORKFLOW.mdAdds/updates workflow guarantees/methodology for auditing and CI/release behavior.
catalog/README.mdAdds/updates documentation for the reference snippet catalog.
catalog/snippets/configs/dependabot.ymlAdds a reference Dependabot configuration for downstream code-shipping repos.
catalog/snippets/configs/docker-hub-readme.mdAdds a reference Docker Hub README exemplar for downstream Docker repos.
catalog/snippets/configs/vscode-tasks.jsonAdds reference VS Code tasks (clean-compile and convenience tasks) for downstream repos.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdds a reference .NET devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/dotnet/post-create.shAdds a reference post-create script for the .NET devcontainer snippet.
catalog/snippets/devcontainer/python/devcontainer.jsonAdds a reference Python devcontainer definition (catalog snippet).
catalog/snippets/devcontainer/python/post-create.shAdds a reference post-create script for the Python devcontainer snippet.
catalog/snippets/vscode/README.mdAdds documentation for composable VS Code workspace fragments.
catalog/snippets/vscode/base.jsoncAdds the baseline VS Code workspace fragment for downstream repos.
catalog/snippets/vscode/docker.jsoncAdds Docker-specific workspace fragment for downstream repos.
catalog/snippets/vscode/dotnet.jsoncAdds .NET-specific workspace fragment for downstream repos.
catalog/snippets/vscode/python.jsoncAdds Python-specific workspace fragment for downstream repos.
catalog/snippets/workflows/README.mdAdds mapping documentation from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/build-datebadge-task.ymlAdds reference reusable workflow for generating a date badge.
catalog/snippets/workflows/build-docker-task.ymlAdds reference reusable workflow for Docker build/push with registry caching.
catalog/snippets/workflows/build-executable-task.ymlAdds reference reusable workflow for building and packaging a console executable.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdds reference reusable workflow for building/pushing a NuGet package.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdds reference reusable workflow for building a PyPI package (publish split elsewhere).
catalog/snippets/workflows/build-release-task.ymlAdds reference multi-target release orchestrator reusable workflow.
catalog/snippets/workflows/check-upstream-version-task.ymlAdds reference reusable workflow for upstream-version tracking wrappers.
catalog/snippets/workflows/get-version-task.ymlAdds reference reusable workflow for NBGV-based version computation.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdds reference reusable workflow for publishing Docker Hub README content.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdds reference reusable workflow to run codegen and open PRs per branch.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdds reference scheduled workflow to trigger codegen PRs periodically.
cspell.jsonAdds/updates spelling configuration for lint parity across editor/CLI/CI.
docs/devcontainer.mdUpdates documentation around devcontainer usage for the governance repo.
docs/host-setup.mdUpdates host setup docs (links, references) for signing and tooling.
docs/ssh-signing.mdUpdates SSH signing docs (links, references) aligned with governance conventions.
registry/repos.jsonAdds/updates the fleet registry of repos, types, and publish mechanisms.
registry/repos.schema.jsonAdds JSON schema for the fleet registry file.
repo-config/README.mdAdds documentation for ruleset JSON and configuration workflow.
repo-config/configure.shAdds an idempotent ruleset-application script using the GitHub API.
repo-config/develop.jsonAdds/updates committed develop branch ruleset payload.
repo-config/main.jsonAdds/updates committed main branch ruleset payload.
reports/.gitkeepTracks the audit reports directory in git.
reports/_template.mdAdds a standard template for per-repo audit reports.
reports/esphome-nonroot/audit.mdAdds/updates an audit report for a fleet repo.
reports/languagetags/audit.mdAdds/updates an audit report for a fleet repo.
reports/plexcleaner/audit.mdAdds/updates an audit report for a fleet repo.
reports/utilities/audit.mdAdds/updates an audit report for a fleet repo.
reports/vscode-server-dotnetcore/audit.mdAdds/updates an audit report for a fleet repo.
spec/files.jsonAdds/updates the baseline file/section spec for audits.
spec/files.schema.jsonAdds JSON schema for the baseline files spec.
spec/project-types.jsonAdds/updates project type definitions and audit checks.
spec/project-types.schema.jsonAdds JSON schema for project types definitions.
spec/readme-structure.mdAdds the preferred README structure spec for downstream repos.
spec/secrets.jsonAdds/updates publish mechanism secrets model (required/forbidden).
spec/secrets.schema.jsonAdds JSON schema for the secrets spec.
spec/validate.pyAdds a stdlib-only validator for spec/registry cross-references (CI gate).
version.jsonBumps NBGV version to 2.0 for the release promotion.

Comment threadREADME.md Outdated
The README claimed the PR gate runs JSON-schema validation, but the workflow runs jq parse checks over registry/, spec/, and repo-config/ plus spec/validate.py cross-reference and shape checks. Corrected the description to match the workflow.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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

@ptr727
ptr727 merged commit a0f44a4 into mainJul 5, 2026
9 checks passed
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