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

@ptr727 ptr727 commented Jul 5, 2026

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

ptr727 and 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>
Copilot AI review requested due to automatic review settings July 5, 2026 18:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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

Comment thread README.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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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

@ptr727
ptr727 merged commit a0f44a4 into main Jul 5, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants