Repurpose ProjectTemplate into a governance and workflow-audit catalog - #226

Merged
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog
Jul 5, 2026
Merged

Repurpose ProjectTemplate into a governance and workflow-audit catalog#226
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog

Conversation

@ptr727

Copy link
Copy Markdown
Owner

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

ptr727and others added 10 commits July 4, 2026 12:43
Strip the buildable sample apps (CodeGen, Console, NuGetLibrary, PyPiLibrary,
Benchmarks, Tests), the Docker image sources, and the .NET build infra
(Directory.Build.props/.Packages.props, .slnx, dotnet-tools, .dockerignore).
The repo becomes a governance + orchestration + audit-catalog repo. Extract the
cSpell word list from the deleted workspace into a standalone cspell.json so the
CLI and CI read the same config as the editor extension (linter parity).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move branch rulesets out of .github/ (Actions-owned only) into repo-config/ with
an idempotent configure.sh apply script, mirroring the downstream layout. Move
the nine app-specific build/publish/codegen workflow tasks into
catalog/snippets/workflows/ as inert reference (mapped to their WORKFLOW.md
guarantees); keep only the source-only orchestrator set live. Move vscode-tasks,
the Docker Hub readme, and the devcontainers into catalog/snippets. Reduce this
repo's dependabot.yml to the github-actions ecosystem and keep the full
multi-ecosystem config as a catalog reference.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite AGENTS.md's opening and layout for the audit-catalog identity, delete
the five inheritance sections (Quick Start, Carry Verbatim, Staying in Sync,
Personas, Known Downstream), and add the "durable guidance lives in committed
docs, not agent memory" principle. Repoint moved-file and ruleset links to
their new homes. Neutralize "synced verbatim" wording in WORKFLOW.md and the
derived-repo drift-report note in copilot-instructions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite the root README as this repo's own (purpose, how it operates, dev
environment, TODO backlog, license), dropping the sample-app and derived-repo
onboarding content. Add spec/readme-structure.md as the preferred README shape
the audit checks fleet repos against. Expand repo-config/README.md with the
salvaged GitHub setup reference: ruleset import, required secrets, repo
settings, and the maintainer-only brownfield re-sign migration.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author registry/repos.json (self + 7 cataloged + 14 backlog) and the spec
manifests: project-types.json (per-type letter/intent checks plus cross-cutting
workflow, branch-model, repo-setup, linter-parity, recurring-violations, and
readme-structure dimensions), files.json (standardization baseline), and
secrets.json (publish mechanism -> required/forbidden secrets). Each JSON check
points at the prose section that owns the rationale. spec/validate.py is the
dependency-free classification dry-run: it confirms every cataloged repo's
types, publish mechanisms, and secrets classify against the spec.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
AUDIT.md defines the read-only per-repo audit: main as ground truth (develop
divergence is a drift finding), type resolution from the registry, the
applicability gate, per-dimension letter/intent checks, asserting the Actions
implement WORKFLOW.md, the ruleset normalized-diff and secret checks, the
verdict model (letter miss = drift, letter+intent miss = defect), and the
report format. reports/_template.md is the report skeleton.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add four mermaid diagrams to WORKFLOW.md section 3: the branch model, the PR
smoke-feedback path, the two-phase publish matrix, and the artifact seam
handoff. Configure cspell to skip mermaid blocks and add the technical words the
docs use so cspell passes repo-wide, matching the markdownlint parity.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite test-pull-request.yml as a lint-only gate: markdownlint, cspell,
actionlint, and jq/spec validation, all sharing the repo's own configs, behind
the ruleset-bound Check pull request workflow status aggregator. Rewrite
publish-release.yml as a self-contained source-only release (NBGV version then a
tag + source archive + README + LICENSE per branch), and move the multi-target
build-release-task and get-version-task orchestrators to the catalog as
reference. Repoint the moved-orchestrator links in the docs.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace a non-ASCII section sign in the catalog workflows README, neutralize
the last derived-repo phrasings in AGENTS.md and CODESTYLE.md, repoint the
moved tasks.json and devcontainer links (CODESTYLE.md, docs/devcontainer.md),
and normalize the repo-config rulesets to CRLF per .editorconfig. All docs pass
markdownlint and cspell, workflows pass actionlint, spec/validate.py classifies
the fleet cleanly, all relative links resolve, and the rulesets match the
documented branch model (self-audit dogfood).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Document the rule in AGENTS.md and spec/readme-structure.md: every human-facing
markdown file (all except AGENTS.md and copilot-instructions.md, which optimize
for agents) uses reference-style links only, defined at the bottom of the file
grouped by type under HTML-comment headers and alphabetized within each group.
Convert README, CODESTYLE, WORKFLOW, AUDIT, the docs/ guides, the catalog and
repo-config READMEs, and the Docker Hub README exemplar; reflow the docs I had
hard-wrapped back to one paragraph per line. Add a human-readable Rules index to
the README (short single-sentence rules grouped by always/never and by project
type) as the reference for what agents enforce and audit.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 4, 2026 21:45

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

This PR repurposes the repository from a code template into a governance + workflow-audit catalog: it removes the sample application/code, introduces a registry/spec system for auditing a fleet of repositories, and reshapes CI/release automation to match a source-only documentation hub.

Changes:

  • Remove the .NET/Python sample implementations (apps, libraries, tests, Docker build assets, solution/workspace/tooling scaffolding).
  • Add a spec/registry/audit framework (schemas + manifests + spec/validate.py) plus repo configuration artifacts under repo-config/.
  • Update CI and publishing workflows to lint/validate docs/spec only and produce source-only GitHub releases.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdUpdate workflow governance doc; add diagrams and convert links to reference-style.
Tests/Tests.csprojRemove .NET test project from the repo.
Tests/SampleTest.csRemove sample unit tests.
Tests/LoggingTests.csRemove logging tests tied to removed sample library.
Tests/GlobalUsings.csRemove test global usings.
Tests/Fixture.csRemove test fixtures/collection definitions.
Tests/.editorconfigRemove test-only analyzer overrides.
spec/validate.pyAdd stdlib-only validator for registry/spec cross-references used by CI.
spec/secrets.schema.jsonAdd JSON schema for publish-mechanism secrets metadata.
spec/secrets.jsonAdd publish mechanism -> required/forbidden secret mapping used by audits/validation.
spec/readme-structure.mdAdd fleet README structure specification for audit checks.
spec/project-types.schema.jsonAdd schema for project types + cross-cutting dimensions.
spec/files.schema.jsonAdd schema for baseline file/section expectations.
spec/files.jsonAdd baseline file/section catalog for fleet standardization checks.
reports/.gitkeepKeep reports/ directory tracked.
reports/_template.mdAdd audit report template used for per-repo audit outputs.
repo-config/README.mdDocument committed repo/ruleset configuration layout and procedures.
repo-config/main.jsonProvide canonical writable subset of main branch ruleset for audit/config.
repo-config/develop.jsonProvide canonical writable subset of develop branch ruleset for audit/config.
repo-config/configure.shAdd script to apply committed rulesets to a GitHub repository via API.
registry/repos.schema.jsonAdd JSON schema for fleet registry entries.
registry/repos.jsonAdd fleet registry listing cataloged and backlog repos plus audit metadata.
PyPiLibrary/tests/test_example.pyRemove Python sample tests.
PyPiLibrary/tests/init.pyRemove Python test package marker (sample removed).
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemove sample Python module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemove Python version stub tied to removed sample package.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemove sample package init.
PyPiLibrary/README.mdRemove PyPI template library documentation.
PyPiLibrary/pyproject.tomlRemove Python package project configuration.
ProjectTemplate.slnxRemove solution definition for removed .NET projects/workflow grouping.
ProjectTemplate.code-workspaceRemove VS Code workspace for removed template code layout.
NuGetLibrary/Options.csRemove sample library options type.
NuGetLibrary/NuGetLibrary.csprojRemove sample NuGet library project.
NuGetLibrary/LogOptions.csRemove sample logging options implementation.
NuGetLibrary/Library.csRemove sample library surface area.
NuGetLibrary/GlobalUsings.csRemove sample global usings.
NuGetLibrary/Extensions.csRemove sample logging extensions.
NuGetLibrary/.editorconfigRemove sample library analyzer overrides.
docs/ssh-signing.mdConvert links to reference-style; keep signing guidance consistent.
docs/host-setup.mdConvert links to reference-style; keep host setup guidance consistent.
docs/devcontainer.mdRepoint devcontainer references to catalog snippet locations; update links.
Docker/Version.shRemove sample Docker image helper script.
Docker/InstallDebugTools.shRemove sample Docker debug tooling installer script.
Docker/DockerfileRemove sample Dockerfile/build pipeline for removed code.
Docker/Build.shRemove sample Docker build script for removed code.
Directory.Packages.propsRemove centralized NuGet package versions (no longer building .NET projects here).
Directory.Build.propsRemove centralized MSBuild properties (no longer building .NET projects here).
cspell.jsonAdd repository spell-check configuration for docs/spec linting.
Console/Program.csRemove sample console app entry point.
Console/LoggerFactory.csRemove sample console logging setup.
Console/GlobalUsings.csRemove sample console global usings.
Console/Extensions.csRemove sample console extensions.
Console/Console.csprojRemove sample console project.
Console/CommandLine.csRemove sample System.CommandLine wiring.
Console/.editorconfigRemove console-only analyzer overrides.
CodeGen/Program.csRemove sample codegen program.
CodeGen/HttpClientFactory.csRemove sample resilience HTTP client factory.
CodeGen/GlobalUsings.csRemove sample codegen global usings.
CodeGen/Extensions.csRemove sample codegen logging extensions.
CodeGen/CommandLine.csRemove sample codegen CLI.
CodeGen/CodeGenBuilder.csRemove sample generator implementation.
CodeGen/CodeGen.csprojRemove sample codegen project.
CodeGen/CodeGen.csRemove sample generated output file.
CodeGen/AssemblyInfo.csRemove sample assembly info helper.
CodeGen/ApiNinjas.csRemove sample external API integration.
CodeGen/.editorconfigRemove codegen-only analyzer overrides.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdd catalog snippet for scheduled codegen entry-point workflow.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdd catalog snippet for reusable codegen+PR task workflow.
catalog/snippets/workflows/README.mdAdd mapping from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdd catalog snippet for Docker Hub README publishing task.
catalog/snippets/workflows/get-version-task.ymlAdd catalog snippet for NBGV version computation task.
catalog/snippets/workflows/check-upstream-version-task.ymlAdd catalog snippet for upstream-version tracking task.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdd catalog snippet for building (not publishing) a PyPI package.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdd catalog snippet for building/publishing a NuGet library.
catalog/snippets/workflows/build-executable-task.ymlAdd catalog snippet for building an executable with a runtime matrix.
catalog/snippets/workflows/build-docker-task.ymlAdd catalog snippet for building/pushing Docker images with registry caching.
catalog/snippets/workflows/build-datebadge-task.ymlAdd catalog snippet for BYOB “last build” badge generation.
catalog/snippets/devcontainer/python/post-create.shAdd catalog snippet for pinned-uv Python devcontainer post-create script.
catalog/snippets/devcontainer/python/devcontainer.jsonAdd catalog snippet for Python devcontainer definition.
catalog/snippets/devcontainer/dotnet/post-create.shAdd catalog snippet for .NET devcontainer post-create script.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdd catalog snippet for .NET devcontainer definition.
catalog/snippets/configs/vscode-tasks.jsonAdd catalog snippet for VS Code tasks (clean-compile + convenience tasks).
catalog/snippets/configs/docker-hub-readme.mdUpdate Docker Hub README exemplar to use reference-style links.
catalog/snippets/configs/dependabot.ymlAdd multi-ecosystem dual-target Dependabot config exemplar.
catalog/README.mdAdd catalog index for snippets and their intended use.
Benchmarks/SampleBenchmark.csRemove sample benchmarks.
Benchmarks/Program.csRemove benchmark entry point.
Benchmarks/GlobalUsings.csRemove benchmark global usings.
Benchmarks/Benchmarks.csprojRemove benchmark project.
Benchmarks/.editorconfigRemove benchmark-only analyzer overrides.
AUDIT.mdAdd authoritative audit procedure for evaluating downstream repos against this hub.
.vscode/launch.jsonRemove VS Code debug configurations tied to removed sample apps.
.github/workflows/test-pull-request.ymlConvert PR workflow to lint/spec-validation only with required aggregator.
.github/workflows/publish-release.ymlConvert release workflow to source-only GitHub releases (no build targets).
.github/dependabot.ymlReduce Dependabot to GitHub Actions ecosystem only; point to catalog exemplar for full configs.
.github/copilot-instructions.mdUpdate Copilot instructions to match governance-hub model (no template inheritance).
.dockerignoreRemove Docker ignore rules tied to removed build outputs and Docker image workflow.
.config/dotnet-tools.jsonRemove .NET local tools manifest (no longer building .NET projects here).

Comment threadspec/secrets.schema.json
Comment threadspec/validate.py
Comment threadcspell.json
Require targetMechanisms in secrets.schema.json (it was used by the validator
but not required), and have spec/validate.py report a missing mechanisms /
targetMechanisms / types key via the errors list instead of raising KeyError.
Narrow the cspell ignore to reports/*/** so the maintained reports/_template.md
is spell-checked while per-repo audit reports stay ignored.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 3 comments.

Comment threadspec/validate.py
Comment threadspec/validate.py
Comment threadrepo-config/configure.sh Outdated
Add repos.json's top-level `repos` key to validate.py's required-key check and
report an undefined target->mechanism mapping via the errors list rather than
raising KeyError. In configure.sh, fetch the ruleset list once and fail loudly
if the API call itself fails, so a failed fetch is never mistaken for "no
ruleset exists" and silently turned into a create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 2 comments.

Comment threadspec/validate.py Outdated
Comment threaddocs/devcontainer.md Outdated
…ner doc
validate.py now flags a cataloged repo with no types (an unclassified entry
would otherwise pass silently). Reframe docs/devcontainer.md: this repo ships no
toolchain and keeps the two devcontainer definitions as catalog reference, so
drop the removed *.code-workspace / PyPiLibrary references and present the SSH
signing, bind-mount, and gh-auth mechanics as reference for a repo that uses them.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Pin the markdownlint-cli2, cspell, and actionlint Docker images in
test-pull-request.yml to specific digests (version in a trailing comment) so CI
is reproducible and not exposed to a floating :latest. Add *.py to the LF pins
in .editorconfig and .gitattributes so shebang scripts like spec/validate.py
cannot drift to CRLF.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
configure.sh now uses gh api --paginate for the ruleset name lookup, so a repo
with more rulesets than one page can't hide a match and cause a duplicate create.
Still fails loudly if the list call itself fails.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py Outdated
Comment threadspec/validate.py
Comment threadspec/validate.py Outdated
Comment threadrepo-config/configure.sh
…ript
validate.py now defensively handles every repo entry: non-object entries, a
missing status, an unknown status, and malformed publish entries all produce an
actionable error instead of a KeyError/traceback, and the summary counts guard
their field access. configure.sh takes the first ruleset when a name has
duplicates (drift) and warns rather than PUTting to a multi-id URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
Guard the duplicate-name count on non-empty ids: grep -c exits non-zero on empty
input, which under set -euo pipefail would abort the script in the common
"no ruleset yet, create it" path. Now an empty match falls through to create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit e5a4a08 into developJul 5, 2026
7 checks passed
@ptr727
ptr727 deleted the feature/repurpose-audit-catalog branch July 7, 2026 21:05
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

Repurpose ProjectTemplate into a governance and workflow-audit catalog - #226

Merged
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog
Jul 5, 2026
Merged

Repurpose ProjectTemplate into a governance and workflow-audit catalog#226
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog

Conversation

@ptr727

Copy link
Copy Markdown
Owner

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

ptr727and others added 10 commits July 4, 2026 12:43
Strip the buildable sample apps (CodeGen, Console, NuGetLibrary, PyPiLibrary,
Benchmarks, Tests), the Docker image sources, and the .NET build infra
(Directory.Build.props/.Packages.props, .slnx, dotnet-tools, .dockerignore).
The repo becomes a governance + orchestration + audit-catalog repo. Extract the
cSpell word list from the deleted workspace into a standalone cspell.json so the
CLI and CI read the same config as the editor extension (linter parity).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move branch rulesets out of .github/ (Actions-owned only) into repo-config/ with
an idempotent configure.sh apply script, mirroring the downstream layout. Move
the nine app-specific build/publish/codegen workflow tasks into
catalog/snippets/workflows/ as inert reference (mapped to their WORKFLOW.md
guarantees); keep only the source-only orchestrator set live. Move vscode-tasks,
the Docker Hub readme, and the devcontainers into catalog/snippets. Reduce this
repo's dependabot.yml to the github-actions ecosystem and keep the full
multi-ecosystem config as a catalog reference.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite AGENTS.md's opening and layout for the audit-catalog identity, delete
the five inheritance sections (Quick Start, Carry Verbatim, Staying in Sync,
Personas, Known Downstream), and add the "durable guidance lives in committed
docs, not agent memory" principle. Repoint moved-file and ruleset links to
their new homes. Neutralize "synced verbatim" wording in WORKFLOW.md and the
derived-repo drift-report note in copilot-instructions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite the root README as this repo's own (purpose, how it operates, dev
environment, TODO backlog, license), dropping the sample-app and derived-repo
onboarding content. Add spec/readme-structure.md as the preferred README shape
the audit checks fleet repos against. Expand repo-config/README.md with the
salvaged GitHub setup reference: ruleset import, required secrets, repo
settings, and the maintainer-only brownfield re-sign migration.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author registry/repos.json (self + 7 cataloged + 14 backlog) and the spec
manifests: project-types.json (per-type letter/intent checks plus cross-cutting
workflow, branch-model, repo-setup, linter-parity, recurring-violations, and
readme-structure dimensions), files.json (standardization baseline), and
secrets.json (publish mechanism -> required/forbidden secrets). Each JSON check
points at the prose section that owns the rationale. spec/validate.py is the
dependency-free classification dry-run: it confirms every cataloged repo's
types, publish mechanisms, and secrets classify against the spec.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
AUDIT.md defines the read-only per-repo audit: main as ground truth (develop
divergence is a drift finding), type resolution from the registry, the
applicability gate, per-dimension letter/intent checks, asserting the Actions
implement WORKFLOW.md, the ruleset normalized-diff and secret checks, the
verdict model (letter miss = drift, letter+intent miss = defect), and the
report format. reports/_template.md is the report skeleton.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add four mermaid diagrams to WORKFLOW.md section 3: the branch model, the PR
smoke-feedback path, the two-phase publish matrix, and the artifact seam
handoff. Configure cspell to skip mermaid blocks and add the technical words the
docs use so cspell passes repo-wide, matching the markdownlint parity.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite test-pull-request.yml as a lint-only gate: markdownlint, cspell,
actionlint, and jq/spec validation, all sharing the repo's own configs, behind
the ruleset-bound Check pull request workflow status aggregator. Rewrite
publish-release.yml as a self-contained source-only release (NBGV version then a
tag + source archive + README + LICENSE per branch), and move the multi-target
build-release-task and get-version-task orchestrators to the catalog as
reference. Repoint the moved-orchestrator links in the docs.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace a non-ASCII section sign in the catalog workflows README, neutralize
the last derived-repo phrasings in AGENTS.md and CODESTYLE.md, repoint the
moved tasks.json and devcontainer links (CODESTYLE.md, docs/devcontainer.md),
and normalize the repo-config rulesets to CRLF per .editorconfig. All docs pass
markdownlint and cspell, workflows pass actionlint, spec/validate.py classifies
the fleet cleanly, all relative links resolve, and the rulesets match the
documented branch model (self-audit dogfood).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Document the rule in AGENTS.md and spec/readme-structure.md: every human-facing
markdown file (all except AGENTS.md and copilot-instructions.md, which optimize
for agents) uses reference-style links only, defined at the bottom of the file
grouped by type under HTML-comment headers and alphabetized within each group.
Convert README, CODESTYLE, WORKFLOW, AUDIT, the docs/ guides, the catalog and
repo-config READMEs, and the Docker Hub README exemplar; reflow the docs I had
hard-wrapped back to one paragraph per line. Add a human-readable Rules index to
the README (short single-sentence rules grouped by always/never and by project
type) as the reference for what agents enforce and audit.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 4, 2026 21:45

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

This PR repurposes the repository from a code template into a governance + workflow-audit catalog: it removes the sample application/code, introduces a registry/spec system for auditing a fleet of repositories, and reshapes CI/release automation to match a source-only documentation hub.

Changes:

  • Remove the .NET/Python sample implementations (apps, libraries, tests, Docker build assets, solution/workspace/tooling scaffolding).
  • Add a spec/registry/audit framework (schemas + manifests + spec/validate.py) plus repo configuration artifacts under repo-config/.
  • Update CI and publishing workflows to lint/validate docs/spec only and produce source-only GitHub releases.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdUpdate workflow governance doc; add diagrams and convert links to reference-style.
Tests/Tests.csprojRemove .NET test project from the repo.
Tests/SampleTest.csRemove sample unit tests.
Tests/LoggingTests.csRemove logging tests tied to removed sample library.
Tests/GlobalUsings.csRemove test global usings.
Tests/Fixture.csRemove test fixtures/collection definitions.
Tests/.editorconfigRemove test-only analyzer overrides.
spec/validate.pyAdd stdlib-only validator for registry/spec cross-references used by CI.
spec/secrets.schema.jsonAdd JSON schema for publish-mechanism secrets metadata.
spec/secrets.jsonAdd publish mechanism -> required/forbidden secret mapping used by audits/validation.
spec/readme-structure.mdAdd fleet README structure specification for audit checks.
spec/project-types.schema.jsonAdd schema for project types + cross-cutting dimensions.
spec/files.schema.jsonAdd schema for baseline file/section expectations.
spec/files.jsonAdd baseline file/section catalog for fleet standardization checks.
reports/.gitkeepKeep reports/ directory tracked.
reports/_template.mdAdd audit report template used for per-repo audit outputs.
repo-config/README.mdDocument committed repo/ruleset configuration layout and procedures.
repo-config/main.jsonProvide canonical writable subset of main branch ruleset for audit/config.
repo-config/develop.jsonProvide canonical writable subset of develop branch ruleset for audit/config.
repo-config/configure.shAdd script to apply committed rulesets to a GitHub repository via API.
registry/repos.schema.jsonAdd JSON schema for fleet registry entries.
registry/repos.jsonAdd fleet registry listing cataloged and backlog repos plus audit metadata.
PyPiLibrary/tests/test_example.pyRemove Python sample tests.
PyPiLibrary/tests/init.pyRemove Python test package marker (sample removed).
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemove sample Python module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemove Python version stub tied to removed sample package.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemove sample package init.
PyPiLibrary/README.mdRemove PyPI template library documentation.
PyPiLibrary/pyproject.tomlRemove Python package project configuration.
ProjectTemplate.slnxRemove solution definition for removed .NET projects/workflow grouping.
ProjectTemplate.code-workspaceRemove VS Code workspace for removed template code layout.
NuGetLibrary/Options.csRemove sample library options type.
NuGetLibrary/NuGetLibrary.csprojRemove sample NuGet library project.
NuGetLibrary/LogOptions.csRemove sample logging options implementation.
NuGetLibrary/Library.csRemove sample library surface area.
NuGetLibrary/GlobalUsings.csRemove sample global usings.
NuGetLibrary/Extensions.csRemove sample logging extensions.
NuGetLibrary/.editorconfigRemove sample library analyzer overrides.
docs/ssh-signing.mdConvert links to reference-style; keep signing guidance consistent.
docs/host-setup.mdConvert links to reference-style; keep host setup guidance consistent.
docs/devcontainer.mdRepoint devcontainer references to catalog snippet locations; update links.
Docker/Version.shRemove sample Docker image helper script.
Docker/InstallDebugTools.shRemove sample Docker debug tooling installer script.
Docker/DockerfileRemove sample Dockerfile/build pipeline for removed code.
Docker/Build.shRemove sample Docker build script for removed code.
Directory.Packages.propsRemove centralized NuGet package versions (no longer building .NET projects here).
Directory.Build.propsRemove centralized MSBuild properties (no longer building .NET projects here).
cspell.jsonAdd repository spell-check configuration for docs/spec linting.
Console/Program.csRemove sample console app entry point.
Console/LoggerFactory.csRemove sample console logging setup.
Console/GlobalUsings.csRemove sample console global usings.
Console/Extensions.csRemove sample console extensions.
Console/Console.csprojRemove sample console project.
Console/CommandLine.csRemove sample System.CommandLine wiring.
Console/.editorconfigRemove console-only analyzer overrides.
CodeGen/Program.csRemove sample codegen program.
CodeGen/HttpClientFactory.csRemove sample resilience HTTP client factory.
CodeGen/GlobalUsings.csRemove sample codegen global usings.
CodeGen/Extensions.csRemove sample codegen logging extensions.
CodeGen/CommandLine.csRemove sample codegen CLI.
CodeGen/CodeGenBuilder.csRemove sample generator implementation.
CodeGen/CodeGen.csprojRemove sample codegen project.
CodeGen/CodeGen.csRemove sample generated output file.
CodeGen/AssemblyInfo.csRemove sample assembly info helper.
CodeGen/ApiNinjas.csRemove sample external API integration.
CodeGen/.editorconfigRemove codegen-only analyzer overrides.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdd catalog snippet for scheduled codegen entry-point workflow.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdd catalog snippet for reusable codegen+PR task workflow.
catalog/snippets/workflows/README.mdAdd mapping from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdd catalog snippet for Docker Hub README publishing task.
catalog/snippets/workflows/get-version-task.ymlAdd catalog snippet for NBGV version computation task.
catalog/snippets/workflows/check-upstream-version-task.ymlAdd catalog snippet for upstream-version tracking task.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdd catalog snippet for building (not publishing) a PyPI package.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdd catalog snippet for building/publishing a NuGet library.
catalog/snippets/workflows/build-executable-task.ymlAdd catalog snippet for building an executable with a runtime matrix.
catalog/snippets/workflows/build-docker-task.ymlAdd catalog snippet for building/pushing Docker images with registry caching.
catalog/snippets/workflows/build-datebadge-task.ymlAdd catalog snippet for BYOB “last build” badge generation.
catalog/snippets/devcontainer/python/post-create.shAdd catalog snippet for pinned-uv Python devcontainer post-create script.
catalog/snippets/devcontainer/python/devcontainer.jsonAdd catalog snippet for Python devcontainer definition.
catalog/snippets/devcontainer/dotnet/post-create.shAdd catalog snippet for .NET devcontainer post-create script.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdd catalog snippet for .NET devcontainer definition.
catalog/snippets/configs/vscode-tasks.jsonAdd catalog snippet for VS Code tasks (clean-compile + convenience tasks).
catalog/snippets/configs/docker-hub-readme.mdUpdate Docker Hub README exemplar to use reference-style links.
catalog/snippets/configs/dependabot.ymlAdd multi-ecosystem dual-target Dependabot config exemplar.
catalog/README.mdAdd catalog index for snippets and their intended use.
Benchmarks/SampleBenchmark.csRemove sample benchmarks.
Benchmarks/Program.csRemove benchmark entry point.
Benchmarks/GlobalUsings.csRemove benchmark global usings.
Benchmarks/Benchmarks.csprojRemove benchmark project.
Benchmarks/.editorconfigRemove benchmark-only analyzer overrides.
AUDIT.mdAdd authoritative audit procedure for evaluating downstream repos against this hub.
.vscode/launch.jsonRemove VS Code debug configurations tied to removed sample apps.
.github/workflows/test-pull-request.ymlConvert PR workflow to lint/spec-validation only with required aggregator.
.github/workflows/publish-release.ymlConvert release workflow to source-only GitHub releases (no build targets).
.github/dependabot.ymlReduce Dependabot to GitHub Actions ecosystem only; point to catalog exemplar for full configs.
.github/copilot-instructions.mdUpdate Copilot instructions to match governance-hub model (no template inheritance).
.dockerignoreRemove Docker ignore rules tied to removed build outputs and Docker image workflow.
.config/dotnet-tools.jsonRemove .NET local tools manifest (no longer building .NET projects here).

Comment threadspec/secrets.schema.json
Comment threadspec/validate.py
Comment threadcspell.json
Require targetMechanisms in secrets.schema.json (it was used by the validator
but not required), and have spec/validate.py report a missing mechanisms /
targetMechanisms / types key via the errors list instead of raising KeyError.
Narrow the cspell ignore to reports/*/** so the maintained reports/_template.md
is spell-checked while per-repo audit reports stay ignored.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 3 comments.

Comment threadspec/validate.py
Comment threadspec/validate.py
Comment threadrepo-config/configure.sh Outdated
Add repos.json's top-level `repos` key to validate.py's required-key check and
report an undefined target->mechanism mapping via the errors list rather than
raising KeyError. In configure.sh, fetch the ruleset list once and fail loudly
if the API call itself fails, so a failed fetch is never mistaken for "no
ruleset exists" and silently turned into a create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 2 comments.

Comment threadspec/validate.py Outdated
Comment threaddocs/devcontainer.md Outdated
…ner doc
validate.py now flags a cataloged repo with no types (an unclassified entry
would otherwise pass silently). Reframe docs/devcontainer.md: this repo ships no
toolchain and keeps the two devcontainer definitions as catalog reference, so
drop the removed *.code-workspace / PyPiLibrary references and present the SSH
signing, bind-mount, and gh-auth mechanics as reference for a repo that uses them.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Pin the markdownlint-cli2, cspell, and actionlint Docker images in
test-pull-request.yml to specific digests (version in a trailing comment) so CI
is reproducible and not exposed to a floating :latest. Add *.py to the LF pins
in .editorconfig and .gitattributes so shebang scripts like spec/validate.py
cannot drift to CRLF.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
configure.sh now uses gh api --paginate for the ruleset name lookup, so a repo
with more rulesets than one page can't hide a match and cause a duplicate create.
Still fails loudly if the list call itself fails.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py Outdated
Comment threadspec/validate.py
Comment threadspec/validate.py Outdated
Comment threadrepo-config/configure.sh
…ript
validate.py now defensively handles every repo entry: non-object entries, a
missing status, an unknown status, and malformed publish entries all produce an
actionable error instead of a KeyError/traceback, and the summary counts guard
their field access. configure.sh takes the first ruleset when a name has
duplicates (drift) and warns rather than PUTting to a multi-id URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
Guard the duplicate-name count on non-empty ids: grep -c exits non-zero on empty
input, which under set -euo pipefail would abort the script in the common
"no ruleset yet, create it" path. Now an empty match falls through to create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit e5a4a08 into developJul 5, 2026
7 checks passed
@ptr727
ptr727 deleted the feature/repurpose-audit-catalog branch July 7, 2026 21:05
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

Repurpose ProjectTemplate into a governance and workflow-audit catalog - #226

Merged
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog
Jul 5, 2026
Merged

Repurpose ProjectTemplate into a governance and workflow-audit catalog#226
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog

Conversation

@ptr727

Copy link
Copy Markdown
Owner

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

ptr727and others added 10 commits July 4, 2026 12:43
Strip the buildable sample apps (CodeGen, Console, NuGetLibrary, PyPiLibrary,
Benchmarks, Tests), the Docker image sources, and the .NET build infra
(Directory.Build.props/.Packages.props, .slnx, dotnet-tools, .dockerignore).
The repo becomes a governance + orchestration + audit-catalog repo. Extract the
cSpell word list from the deleted workspace into a standalone cspell.json so the
CLI and CI read the same config as the editor extension (linter parity).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move branch rulesets out of .github/ (Actions-owned only) into repo-config/ with
an idempotent configure.sh apply script, mirroring the downstream layout. Move
the nine app-specific build/publish/codegen workflow tasks into
catalog/snippets/workflows/ as inert reference (mapped to their WORKFLOW.md
guarantees); keep only the source-only orchestrator set live. Move vscode-tasks,
the Docker Hub readme, and the devcontainers into catalog/snippets. Reduce this
repo's dependabot.yml to the github-actions ecosystem and keep the full
multi-ecosystem config as a catalog reference.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite AGENTS.md's opening and layout for the audit-catalog identity, delete
the five inheritance sections (Quick Start, Carry Verbatim, Staying in Sync,
Personas, Known Downstream), and add the "durable guidance lives in committed
docs, not agent memory" principle. Repoint moved-file and ruleset links to
their new homes. Neutralize "synced verbatim" wording in WORKFLOW.md and the
derived-repo drift-report note in copilot-instructions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite the root README as this repo's own (purpose, how it operates, dev
environment, TODO backlog, license), dropping the sample-app and derived-repo
onboarding content. Add spec/readme-structure.md as the preferred README shape
the audit checks fleet repos against. Expand repo-config/README.md with the
salvaged GitHub setup reference: ruleset import, required secrets, repo
settings, and the maintainer-only brownfield re-sign migration.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author registry/repos.json (self + 7 cataloged + 14 backlog) and the spec
manifests: project-types.json (per-type letter/intent checks plus cross-cutting
workflow, branch-model, repo-setup, linter-parity, recurring-violations, and
readme-structure dimensions), files.json (standardization baseline), and
secrets.json (publish mechanism -> required/forbidden secrets). Each JSON check
points at the prose section that owns the rationale. spec/validate.py is the
dependency-free classification dry-run: it confirms every cataloged repo's
types, publish mechanisms, and secrets classify against the spec.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
AUDIT.md defines the read-only per-repo audit: main as ground truth (develop
divergence is a drift finding), type resolution from the registry, the
applicability gate, per-dimension letter/intent checks, asserting the Actions
implement WORKFLOW.md, the ruleset normalized-diff and secret checks, the
verdict model (letter miss = drift, letter+intent miss = defect), and the
report format. reports/_template.md is the report skeleton.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add four mermaid diagrams to WORKFLOW.md section 3: the branch model, the PR
smoke-feedback path, the two-phase publish matrix, and the artifact seam
handoff. Configure cspell to skip mermaid blocks and add the technical words the
docs use so cspell passes repo-wide, matching the markdownlint parity.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite test-pull-request.yml as a lint-only gate: markdownlint, cspell,
actionlint, and jq/spec validation, all sharing the repo's own configs, behind
the ruleset-bound Check pull request workflow status aggregator. Rewrite
publish-release.yml as a self-contained source-only release (NBGV version then a
tag + source archive + README + LICENSE per branch), and move the multi-target
build-release-task and get-version-task orchestrators to the catalog as
reference. Repoint the moved-orchestrator links in the docs.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace a non-ASCII section sign in the catalog workflows README, neutralize
the last derived-repo phrasings in AGENTS.md and CODESTYLE.md, repoint the
moved tasks.json and devcontainer links (CODESTYLE.md, docs/devcontainer.md),
and normalize the repo-config rulesets to CRLF per .editorconfig. All docs pass
markdownlint and cspell, workflows pass actionlint, spec/validate.py classifies
the fleet cleanly, all relative links resolve, and the rulesets match the
documented branch model (self-audit dogfood).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Document the rule in AGENTS.md and spec/readme-structure.md: every human-facing
markdown file (all except AGENTS.md and copilot-instructions.md, which optimize
for agents) uses reference-style links only, defined at the bottom of the file
grouped by type under HTML-comment headers and alphabetized within each group.
Convert README, CODESTYLE, WORKFLOW, AUDIT, the docs/ guides, the catalog and
repo-config READMEs, and the Docker Hub README exemplar; reflow the docs I had
hard-wrapped back to one paragraph per line. Add a human-readable Rules index to
the README (short single-sentence rules grouped by always/never and by project
type) as the reference for what agents enforce and audit.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 4, 2026 21:45

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

This PR repurposes the repository from a code template into a governance + workflow-audit catalog: it removes the sample application/code, introduces a registry/spec system for auditing a fleet of repositories, and reshapes CI/release automation to match a source-only documentation hub.

Changes:

  • Remove the .NET/Python sample implementations (apps, libraries, tests, Docker build assets, solution/workspace/tooling scaffolding).
  • Add a spec/registry/audit framework (schemas + manifests + spec/validate.py) plus repo configuration artifacts under repo-config/.
  • Update CI and publishing workflows to lint/validate docs/spec only and produce source-only GitHub releases.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdUpdate workflow governance doc; add diagrams and convert links to reference-style.
Tests/Tests.csprojRemove .NET test project from the repo.
Tests/SampleTest.csRemove sample unit tests.
Tests/LoggingTests.csRemove logging tests tied to removed sample library.
Tests/GlobalUsings.csRemove test global usings.
Tests/Fixture.csRemove test fixtures/collection definitions.
Tests/.editorconfigRemove test-only analyzer overrides.
spec/validate.pyAdd stdlib-only validator for registry/spec cross-references used by CI.
spec/secrets.schema.jsonAdd JSON schema for publish-mechanism secrets metadata.
spec/secrets.jsonAdd publish mechanism -> required/forbidden secret mapping used by audits/validation.
spec/readme-structure.mdAdd fleet README structure specification for audit checks.
spec/project-types.schema.jsonAdd schema for project types + cross-cutting dimensions.
spec/files.schema.jsonAdd schema for baseline file/section expectations.
spec/files.jsonAdd baseline file/section catalog for fleet standardization checks.
reports/.gitkeepKeep reports/ directory tracked.
reports/_template.mdAdd audit report template used for per-repo audit outputs.
repo-config/README.mdDocument committed repo/ruleset configuration layout and procedures.
repo-config/main.jsonProvide canonical writable subset of main branch ruleset for audit/config.
repo-config/develop.jsonProvide canonical writable subset of develop branch ruleset for audit/config.
repo-config/configure.shAdd script to apply committed rulesets to a GitHub repository via API.
registry/repos.schema.jsonAdd JSON schema for fleet registry entries.
registry/repos.jsonAdd fleet registry listing cataloged and backlog repos plus audit metadata.
PyPiLibrary/tests/test_example.pyRemove Python sample tests.
PyPiLibrary/tests/init.pyRemove Python test package marker (sample removed).
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemove sample Python module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemove Python version stub tied to removed sample package.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemove sample package init.
PyPiLibrary/README.mdRemove PyPI template library documentation.
PyPiLibrary/pyproject.tomlRemove Python package project configuration.
ProjectTemplate.slnxRemove solution definition for removed .NET projects/workflow grouping.
ProjectTemplate.code-workspaceRemove VS Code workspace for removed template code layout.
NuGetLibrary/Options.csRemove sample library options type.
NuGetLibrary/NuGetLibrary.csprojRemove sample NuGet library project.
NuGetLibrary/LogOptions.csRemove sample logging options implementation.
NuGetLibrary/Library.csRemove sample library surface area.
NuGetLibrary/GlobalUsings.csRemove sample global usings.
NuGetLibrary/Extensions.csRemove sample logging extensions.
NuGetLibrary/.editorconfigRemove sample library analyzer overrides.
docs/ssh-signing.mdConvert links to reference-style; keep signing guidance consistent.
docs/host-setup.mdConvert links to reference-style; keep host setup guidance consistent.
docs/devcontainer.mdRepoint devcontainer references to catalog snippet locations; update links.
Docker/Version.shRemove sample Docker image helper script.
Docker/InstallDebugTools.shRemove sample Docker debug tooling installer script.
Docker/DockerfileRemove sample Dockerfile/build pipeline for removed code.
Docker/Build.shRemove sample Docker build script for removed code.
Directory.Packages.propsRemove centralized NuGet package versions (no longer building .NET projects here).
Directory.Build.propsRemove centralized MSBuild properties (no longer building .NET projects here).
cspell.jsonAdd repository spell-check configuration for docs/spec linting.
Console/Program.csRemove sample console app entry point.
Console/LoggerFactory.csRemove sample console logging setup.
Console/GlobalUsings.csRemove sample console global usings.
Console/Extensions.csRemove sample console extensions.
Console/Console.csprojRemove sample console project.
Console/CommandLine.csRemove sample System.CommandLine wiring.
Console/.editorconfigRemove console-only analyzer overrides.
CodeGen/Program.csRemove sample codegen program.
CodeGen/HttpClientFactory.csRemove sample resilience HTTP client factory.
CodeGen/GlobalUsings.csRemove sample codegen global usings.
CodeGen/Extensions.csRemove sample codegen logging extensions.
CodeGen/CommandLine.csRemove sample codegen CLI.
CodeGen/CodeGenBuilder.csRemove sample generator implementation.
CodeGen/CodeGen.csprojRemove sample codegen project.
CodeGen/CodeGen.csRemove sample generated output file.
CodeGen/AssemblyInfo.csRemove sample assembly info helper.
CodeGen/ApiNinjas.csRemove sample external API integration.
CodeGen/.editorconfigRemove codegen-only analyzer overrides.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdd catalog snippet for scheduled codegen entry-point workflow.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdd catalog snippet for reusable codegen+PR task workflow.
catalog/snippets/workflows/README.mdAdd mapping from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdd catalog snippet for Docker Hub README publishing task.
catalog/snippets/workflows/get-version-task.ymlAdd catalog snippet for NBGV version computation task.
catalog/snippets/workflows/check-upstream-version-task.ymlAdd catalog snippet for upstream-version tracking task.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdd catalog snippet for building (not publishing) a PyPI package.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdd catalog snippet for building/publishing a NuGet library.
catalog/snippets/workflows/build-executable-task.ymlAdd catalog snippet for building an executable with a runtime matrix.
catalog/snippets/workflows/build-docker-task.ymlAdd catalog snippet for building/pushing Docker images with registry caching.
catalog/snippets/workflows/build-datebadge-task.ymlAdd catalog snippet for BYOB “last build” badge generation.
catalog/snippets/devcontainer/python/post-create.shAdd catalog snippet for pinned-uv Python devcontainer post-create script.
catalog/snippets/devcontainer/python/devcontainer.jsonAdd catalog snippet for Python devcontainer definition.
catalog/snippets/devcontainer/dotnet/post-create.shAdd catalog snippet for .NET devcontainer post-create script.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdd catalog snippet for .NET devcontainer definition.
catalog/snippets/configs/vscode-tasks.jsonAdd catalog snippet for VS Code tasks (clean-compile + convenience tasks).
catalog/snippets/configs/docker-hub-readme.mdUpdate Docker Hub README exemplar to use reference-style links.
catalog/snippets/configs/dependabot.ymlAdd multi-ecosystem dual-target Dependabot config exemplar.
catalog/README.mdAdd catalog index for snippets and their intended use.
Benchmarks/SampleBenchmark.csRemove sample benchmarks.
Benchmarks/Program.csRemove benchmark entry point.
Benchmarks/GlobalUsings.csRemove benchmark global usings.
Benchmarks/Benchmarks.csprojRemove benchmark project.
Benchmarks/.editorconfigRemove benchmark-only analyzer overrides.
AUDIT.mdAdd authoritative audit procedure for evaluating downstream repos against this hub.
.vscode/launch.jsonRemove VS Code debug configurations tied to removed sample apps.
.github/workflows/test-pull-request.ymlConvert PR workflow to lint/spec-validation only with required aggregator.
.github/workflows/publish-release.ymlConvert release workflow to source-only GitHub releases (no build targets).
.github/dependabot.ymlReduce Dependabot to GitHub Actions ecosystem only; point to catalog exemplar for full configs.
.github/copilot-instructions.mdUpdate Copilot instructions to match governance-hub model (no template inheritance).
.dockerignoreRemove Docker ignore rules tied to removed build outputs and Docker image workflow.
.config/dotnet-tools.jsonRemove .NET local tools manifest (no longer building .NET projects here).

Comment threadspec/secrets.schema.json
Comment threadspec/validate.py
Comment threadcspell.json
Require targetMechanisms in secrets.schema.json (it was used by the validator
but not required), and have spec/validate.py report a missing mechanisms /
targetMechanisms / types key via the errors list instead of raising KeyError.
Narrow the cspell ignore to reports/*/** so the maintained reports/_template.md
is spell-checked while per-repo audit reports stay ignored.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 3 comments.

Comment threadspec/validate.py
Comment threadspec/validate.py
Comment threadrepo-config/configure.sh Outdated
Add repos.json's top-level `repos` key to validate.py's required-key check and
report an undefined target->mechanism mapping via the errors list rather than
raising KeyError. In configure.sh, fetch the ruleset list once and fail loudly
if the API call itself fails, so a failed fetch is never mistaken for "no
ruleset exists" and silently turned into a create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 2 comments.

Comment threadspec/validate.py Outdated
Comment threaddocs/devcontainer.md Outdated
…ner doc
validate.py now flags a cataloged repo with no types (an unclassified entry
would otherwise pass silently). Reframe docs/devcontainer.md: this repo ships no
toolchain and keeps the two devcontainer definitions as catalog reference, so
drop the removed *.code-workspace / PyPiLibrary references and present the SSH
signing, bind-mount, and gh-auth mechanics as reference for a repo that uses them.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Pin the markdownlint-cli2, cspell, and actionlint Docker images in
test-pull-request.yml to specific digests (version in a trailing comment) so CI
is reproducible and not exposed to a floating :latest. Add *.py to the LF pins
in .editorconfig and .gitattributes so shebang scripts like spec/validate.py
cannot drift to CRLF.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
configure.sh now uses gh api --paginate for the ruleset name lookup, so a repo
with more rulesets than one page can't hide a match and cause a duplicate create.
Still fails loudly if the list call itself fails.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py Outdated
Comment threadspec/validate.py
Comment threadspec/validate.py Outdated
Comment threadrepo-config/configure.sh
…ript
validate.py now defensively handles every repo entry: non-object entries, a
missing status, an unknown status, and malformed publish entries all produce an
actionable error instead of a KeyError/traceback, and the summary counts guard
their field access. configure.sh takes the first ruleset when a name has
duplicates (drift) and warns rather than PUTting to a multi-id URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
Guard the duplicate-name count on non-empty ids: grep -c exits non-zero on empty
input, which under set -euo pipefail would abort the script in the common
"no ruleset yet, create it" path. Now an empty match falls through to create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit e5a4a08 into developJul 5, 2026
7 checks passed
@ptr727
ptr727 deleted the feature/repurpose-audit-catalog branch July 7, 2026 21:05
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

Repurpose ProjectTemplate into a governance and workflow-audit catalog - #226

Merged
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog
Jul 5, 2026
Merged

Repurpose ProjectTemplate into a governance and workflow-audit catalog#226
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog

Conversation

@ptr727

Copy link
Copy Markdown
Owner

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

ptr727and others added 10 commits July 4, 2026 12:43
Strip the buildable sample apps (CodeGen, Console, NuGetLibrary, PyPiLibrary,
Benchmarks, Tests), the Docker image sources, and the .NET build infra
(Directory.Build.props/.Packages.props, .slnx, dotnet-tools, .dockerignore).
The repo becomes a governance + orchestration + audit-catalog repo. Extract the
cSpell word list from the deleted workspace into a standalone cspell.json so the
CLI and CI read the same config as the editor extension (linter parity).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move branch rulesets out of .github/ (Actions-owned only) into repo-config/ with
an idempotent configure.sh apply script, mirroring the downstream layout. Move
the nine app-specific build/publish/codegen workflow tasks into
catalog/snippets/workflows/ as inert reference (mapped to their WORKFLOW.md
guarantees); keep only the source-only orchestrator set live. Move vscode-tasks,
the Docker Hub readme, and the devcontainers into catalog/snippets. Reduce this
repo's dependabot.yml to the github-actions ecosystem and keep the full
multi-ecosystem config as a catalog reference.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite AGENTS.md's opening and layout for the audit-catalog identity, delete
the five inheritance sections (Quick Start, Carry Verbatim, Staying in Sync,
Personas, Known Downstream), and add the "durable guidance lives in committed
docs, not agent memory" principle. Repoint moved-file and ruleset links to
their new homes. Neutralize "synced verbatim" wording in WORKFLOW.md and the
derived-repo drift-report note in copilot-instructions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite the root README as this repo's own (purpose, how it operates, dev
environment, TODO backlog, license), dropping the sample-app and derived-repo
onboarding content. Add spec/readme-structure.md as the preferred README shape
the audit checks fleet repos against. Expand repo-config/README.md with the
salvaged GitHub setup reference: ruleset import, required secrets, repo
settings, and the maintainer-only brownfield re-sign migration.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author registry/repos.json (self + 7 cataloged + 14 backlog) and the spec
manifests: project-types.json (per-type letter/intent checks plus cross-cutting
workflow, branch-model, repo-setup, linter-parity, recurring-violations, and
readme-structure dimensions), files.json (standardization baseline), and
secrets.json (publish mechanism -> required/forbidden secrets). Each JSON check
points at the prose section that owns the rationale. spec/validate.py is the
dependency-free classification dry-run: it confirms every cataloged repo's
types, publish mechanisms, and secrets classify against the spec.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
AUDIT.md defines the read-only per-repo audit: main as ground truth (develop
divergence is a drift finding), type resolution from the registry, the
applicability gate, per-dimension letter/intent checks, asserting the Actions
implement WORKFLOW.md, the ruleset normalized-diff and secret checks, the
verdict model (letter miss = drift, letter+intent miss = defect), and the
report format. reports/_template.md is the report skeleton.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add four mermaid diagrams to WORKFLOW.md section 3: the branch model, the PR
smoke-feedback path, the two-phase publish matrix, and the artifact seam
handoff. Configure cspell to skip mermaid blocks and add the technical words the
docs use so cspell passes repo-wide, matching the markdownlint parity.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite test-pull-request.yml as a lint-only gate: markdownlint, cspell,
actionlint, and jq/spec validation, all sharing the repo's own configs, behind
the ruleset-bound Check pull request workflow status aggregator. Rewrite
publish-release.yml as a self-contained source-only release (NBGV version then a
tag + source archive + README + LICENSE per branch), and move the multi-target
build-release-task and get-version-task orchestrators to the catalog as
reference. Repoint the moved-orchestrator links in the docs.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace a non-ASCII section sign in the catalog workflows README, neutralize
the last derived-repo phrasings in AGENTS.md and CODESTYLE.md, repoint the
moved tasks.json and devcontainer links (CODESTYLE.md, docs/devcontainer.md),
and normalize the repo-config rulesets to CRLF per .editorconfig. All docs pass
markdownlint and cspell, workflows pass actionlint, spec/validate.py classifies
the fleet cleanly, all relative links resolve, and the rulesets match the
documented branch model (self-audit dogfood).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Document the rule in AGENTS.md and spec/readme-structure.md: every human-facing
markdown file (all except AGENTS.md and copilot-instructions.md, which optimize
for agents) uses reference-style links only, defined at the bottom of the file
grouped by type under HTML-comment headers and alphabetized within each group.
Convert README, CODESTYLE, WORKFLOW, AUDIT, the docs/ guides, the catalog and
repo-config READMEs, and the Docker Hub README exemplar; reflow the docs I had
hard-wrapped back to one paragraph per line. Add a human-readable Rules index to
the README (short single-sentence rules grouped by always/never and by project
type) as the reference for what agents enforce and audit.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 4, 2026 21:45

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

This PR repurposes the repository from a code template into a governance + workflow-audit catalog: it removes the sample application/code, introduces a registry/spec system for auditing a fleet of repositories, and reshapes CI/release automation to match a source-only documentation hub.

Changes:

  • Remove the .NET/Python sample implementations (apps, libraries, tests, Docker build assets, solution/workspace/tooling scaffolding).
  • Add a spec/registry/audit framework (schemas + manifests + spec/validate.py) plus repo configuration artifacts under repo-config/.
  • Update CI and publishing workflows to lint/validate docs/spec only and produce source-only GitHub releases.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdUpdate workflow governance doc; add diagrams and convert links to reference-style.
Tests/Tests.csprojRemove .NET test project from the repo.
Tests/SampleTest.csRemove sample unit tests.
Tests/LoggingTests.csRemove logging tests tied to removed sample library.
Tests/GlobalUsings.csRemove test global usings.
Tests/Fixture.csRemove test fixtures/collection definitions.
Tests/.editorconfigRemove test-only analyzer overrides.
spec/validate.pyAdd stdlib-only validator for registry/spec cross-references used by CI.
spec/secrets.schema.jsonAdd JSON schema for publish-mechanism secrets metadata.
spec/secrets.jsonAdd publish mechanism -> required/forbidden secret mapping used by audits/validation.
spec/readme-structure.mdAdd fleet README structure specification for audit checks.
spec/project-types.schema.jsonAdd schema for project types + cross-cutting dimensions.
spec/files.schema.jsonAdd schema for baseline file/section expectations.
spec/files.jsonAdd baseline file/section catalog for fleet standardization checks.
reports/.gitkeepKeep reports/ directory tracked.
reports/_template.mdAdd audit report template used for per-repo audit outputs.
repo-config/README.mdDocument committed repo/ruleset configuration layout and procedures.
repo-config/main.jsonProvide canonical writable subset of main branch ruleset for audit/config.
repo-config/develop.jsonProvide canonical writable subset of develop branch ruleset for audit/config.
repo-config/configure.shAdd script to apply committed rulesets to a GitHub repository via API.
registry/repos.schema.jsonAdd JSON schema for fleet registry entries.
registry/repos.jsonAdd fleet registry listing cataloged and backlog repos plus audit metadata.
PyPiLibrary/tests/test_example.pyRemove Python sample tests.
PyPiLibrary/tests/init.pyRemove Python test package marker (sample removed).
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemove sample Python module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemove Python version stub tied to removed sample package.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemove sample package init.
PyPiLibrary/README.mdRemove PyPI template library documentation.
PyPiLibrary/pyproject.tomlRemove Python package project configuration.
ProjectTemplate.slnxRemove solution definition for removed .NET projects/workflow grouping.
ProjectTemplate.code-workspaceRemove VS Code workspace for removed template code layout.
NuGetLibrary/Options.csRemove sample library options type.
NuGetLibrary/NuGetLibrary.csprojRemove sample NuGet library project.
NuGetLibrary/LogOptions.csRemove sample logging options implementation.
NuGetLibrary/Library.csRemove sample library surface area.
NuGetLibrary/GlobalUsings.csRemove sample global usings.
NuGetLibrary/Extensions.csRemove sample logging extensions.
NuGetLibrary/.editorconfigRemove sample library analyzer overrides.
docs/ssh-signing.mdConvert links to reference-style; keep signing guidance consistent.
docs/host-setup.mdConvert links to reference-style; keep host setup guidance consistent.
docs/devcontainer.mdRepoint devcontainer references to catalog snippet locations; update links.
Docker/Version.shRemove sample Docker image helper script.
Docker/InstallDebugTools.shRemove sample Docker debug tooling installer script.
Docker/DockerfileRemove sample Dockerfile/build pipeline for removed code.
Docker/Build.shRemove sample Docker build script for removed code.
Directory.Packages.propsRemove centralized NuGet package versions (no longer building .NET projects here).
Directory.Build.propsRemove centralized MSBuild properties (no longer building .NET projects here).
cspell.jsonAdd repository spell-check configuration for docs/spec linting.
Console/Program.csRemove sample console app entry point.
Console/LoggerFactory.csRemove sample console logging setup.
Console/GlobalUsings.csRemove sample console global usings.
Console/Extensions.csRemove sample console extensions.
Console/Console.csprojRemove sample console project.
Console/CommandLine.csRemove sample System.CommandLine wiring.
Console/.editorconfigRemove console-only analyzer overrides.
CodeGen/Program.csRemove sample codegen program.
CodeGen/HttpClientFactory.csRemove sample resilience HTTP client factory.
CodeGen/GlobalUsings.csRemove sample codegen global usings.
CodeGen/Extensions.csRemove sample codegen logging extensions.
CodeGen/CommandLine.csRemove sample codegen CLI.
CodeGen/CodeGenBuilder.csRemove sample generator implementation.
CodeGen/CodeGen.csprojRemove sample codegen project.
CodeGen/CodeGen.csRemove sample generated output file.
CodeGen/AssemblyInfo.csRemove sample assembly info helper.
CodeGen/ApiNinjas.csRemove sample external API integration.
CodeGen/.editorconfigRemove codegen-only analyzer overrides.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdd catalog snippet for scheduled codegen entry-point workflow.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdd catalog snippet for reusable codegen+PR task workflow.
catalog/snippets/workflows/README.mdAdd mapping from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdd catalog snippet for Docker Hub README publishing task.
catalog/snippets/workflows/get-version-task.ymlAdd catalog snippet for NBGV version computation task.
catalog/snippets/workflows/check-upstream-version-task.ymlAdd catalog snippet for upstream-version tracking task.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdd catalog snippet for building (not publishing) a PyPI package.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdd catalog snippet for building/publishing a NuGet library.
catalog/snippets/workflows/build-executable-task.ymlAdd catalog snippet for building an executable with a runtime matrix.
catalog/snippets/workflows/build-docker-task.ymlAdd catalog snippet for building/pushing Docker images with registry caching.
catalog/snippets/workflows/build-datebadge-task.ymlAdd catalog snippet for BYOB “last build” badge generation.
catalog/snippets/devcontainer/python/post-create.shAdd catalog snippet for pinned-uv Python devcontainer post-create script.
catalog/snippets/devcontainer/python/devcontainer.jsonAdd catalog snippet for Python devcontainer definition.
catalog/snippets/devcontainer/dotnet/post-create.shAdd catalog snippet for .NET devcontainer post-create script.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdd catalog snippet for .NET devcontainer definition.
catalog/snippets/configs/vscode-tasks.jsonAdd catalog snippet for VS Code tasks (clean-compile + convenience tasks).
catalog/snippets/configs/docker-hub-readme.mdUpdate Docker Hub README exemplar to use reference-style links.
catalog/snippets/configs/dependabot.ymlAdd multi-ecosystem dual-target Dependabot config exemplar.
catalog/README.mdAdd catalog index for snippets and their intended use.
Benchmarks/SampleBenchmark.csRemove sample benchmarks.
Benchmarks/Program.csRemove benchmark entry point.
Benchmarks/GlobalUsings.csRemove benchmark global usings.
Benchmarks/Benchmarks.csprojRemove benchmark project.
Benchmarks/.editorconfigRemove benchmark-only analyzer overrides.
AUDIT.mdAdd authoritative audit procedure for evaluating downstream repos against this hub.
.vscode/launch.jsonRemove VS Code debug configurations tied to removed sample apps.
.github/workflows/test-pull-request.ymlConvert PR workflow to lint/spec-validation only with required aggregator.
.github/workflows/publish-release.ymlConvert release workflow to source-only GitHub releases (no build targets).
.github/dependabot.ymlReduce Dependabot to GitHub Actions ecosystem only; point to catalog exemplar for full configs.
.github/copilot-instructions.mdUpdate Copilot instructions to match governance-hub model (no template inheritance).
.dockerignoreRemove Docker ignore rules tied to removed build outputs and Docker image workflow.
.config/dotnet-tools.jsonRemove .NET local tools manifest (no longer building .NET projects here).

Comment threadspec/secrets.schema.json
Comment threadspec/validate.py
Comment threadcspell.json
Require targetMechanisms in secrets.schema.json (it was used by the validator
but not required), and have spec/validate.py report a missing mechanisms /
targetMechanisms / types key via the errors list instead of raising KeyError.
Narrow the cspell ignore to reports/*/** so the maintained reports/_template.md
is spell-checked while per-repo audit reports stay ignored.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 3 comments.

Comment threadspec/validate.py
Comment threadspec/validate.py
Comment threadrepo-config/configure.sh Outdated
Add repos.json's top-level `repos` key to validate.py's required-key check and
report an undefined target->mechanism mapping via the errors list rather than
raising KeyError. In configure.sh, fetch the ruleset list once and fail loudly
if the API call itself fails, so a failed fetch is never mistaken for "no
ruleset exists" and silently turned into a create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 2 comments.

Comment threadspec/validate.py Outdated
Comment threaddocs/devcontainer.md Outdated
…ner doc
validate.py now flags a cataloged repo with no types (an unclassified entry
would otherwise pass silently). Reframe docs/devcontainer.md: this repo ships no
toolchain and keeps the two devcontainer definitions as catalog reference, so
drop the removed *.code-workspace / PyPiLibrary references and present the SSH
signing, bind-mount, and gh-auth mechanics as reference for a repo that uses them.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Pin the markdownlint-cli2, cspell, and actionlint Docker images in
test-pull-request.yml to specific digests (version in a trailing comment) so CI
is reproducible and not exposed to a floating :latest. Add *.py to the LF pins
in .editorconfig and .gitattributes so shebang scripts like spec/validate.py
cannot drift to CRLF.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
configure.sh now uses gh api --paginate for the ruleset name lookup, so a repo
with more rulesets than one page can't hide a match and cause a duplicate create.
Still fails loudly if the list call itself fails.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py Outdated
Comment threadspec/validate.py
Comment threadspec/validate.py Outdated
Comment threadrepo-config/configure.sh
…ript
validate.py now defensively handles every repo entry: non-object entries, a
missing status, an unknown status, and malformed publish entries all produce an
actionable error instead of a KeyError/traceback, and the summary counts guard
their field access. configure.sh takes the first ruleset when a name has
duplicates (drift) and warns rather than PUTting to a multi-id URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
Guard the duplicate-name count on non-empty ids: grep -c exits non-zero on empty
input, which under set -euo pipefail would abort the script in the common
"no ruleset yet, create it" path. Now an empty match falls through to create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit e5a4a08 into developJul 5, 2026
7 checks passed
@ptr727
ptr727 deleted the feature/repurpose-audit-catalog branch July 7, 2026 21:05
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

Repurpose ProjectTemplate into a governance and workflow-audit catalog - #226

Merged
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog
Jul 5, 2026
Merged

Repurpose ProjectTemplate into a governance and workflow-audit catalog#226
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog

Conversation

@ptr727

Copy link
Copy Markdown
Owner

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

ptr727and others added 10 commits July 4, 2026 12:43
Strip the buildable sample apps (CodeGen, Console, NuGetLibrary, PyPiLibrary,
Benchmarks, Tests), the Docker image sources, and the .NET build infra
(Directory.Build.props/.Packages.props, .slnx, dotnet-tools, .dockerignore).
The repo becomes a governance + orchestration + audit-catalog repo. Extract the
cSpell word list from the deleted workspace into a standalone cspell.json so the
CLI and CI read the same config as the editor extension (linter parity).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move branch rulesets out of .github/ (Actions-owned only) into repo-config/ with
an idempotent configure.sh apply script, mirroring the downstream layout. Move
the nine app-specific build/publish/codegen workflow tasks into
catalog/snippets/workflows/ as inert reference (mapped to their WORKFLOW.md
guarantees); keep only the source-only orchestrator set live. Move vscode-tasks,
the Docker Hub readme, and the devcontainers into catalog/snippets. Reduce this
repo's dependabot.yml to the github-actions ecosystem and keep the full
multi-ecosystem config as a catalog reference.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite AGENTS.md's opening and layout for the audit-catalog identity, delete
the five inheritance sections (Quick Start, Carry Verbatim, Staying in Sync,
Personas, Known Downstream), and add the "durable guidance lives in committed
docs, not agent memory" principle. Repoint moved-file and ruleset links to
their new homes. Neutralize "synced verbatim" wording in WORKFLOW.md and the
derived-repo drift-report note in copilot-instructions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite the root README as this repo's own (purpose, how it operates, dev
environment, TODO backlog, license), dropping the sample-app and derived-repo
onboarding content. Add spec/readme-structure.md as the preferred README shape
the audit checks fleet repos against. Expand repo-config/README.md with the
salvaged GitHub setup reference: ruleset import, required secrets, repo
settings, and the maintainer-only brownfield re-sign migration.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author registry/repos.json (self + 7 cataloged + 14 backlog) and the spec
manifests: project-types.json (per-type letter/intent checks plus cross-cutting
workflow, branch-model, repo-setup, linter-parity, recurring-violations, and
readme-structure dimensions), files.json (standardization baseline), and
secrets.json (publish mechanism -> required/forbidden secrets). Each JSON check
points at the prose section that owns the rationale. spec/validate.py is the
dependency-free classification dry-run: it confirms every cataloged repo's
types, publish mechanisms, and secrets classify against the spec.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
AUDIT.md defines the read-only per-repo audit: main as ground truth (develop
divergence is a drift finding), type resolution from the registry, the
applicability gate, per-dimension letter/intent checks, asserting the Actions
implement WORKFLOW.md, the ruleset normalized-diff and secret checks, the
verdict model (letter miss = drift, letter+intent miss = defect), and the
report format. reports/_template.md is the report skeleton.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add four mermaid diagrams to WORKFLOW.md section 3: the branch model, the PR
smoke-feedback path, the two-phase publish matrix, and the artifact seam
handoff. Configure cspell to skip mermaid blocks and add the technical words the
docs use so cspell passes repo-wide, matching the markdownlint parity.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite test-pull-request.yml as a lint-only gate: markdownlint, cspell,
actionlint, and jq/spec validation, all sharing the repo's own configs, behind
the ruleset-bound Check pull request workflow status aggregator. Rewrite
publish-release.yml as a self-contained source-only release (NBGV version then a
tag + source archive + README + LICENSE per branch), and move the multi-target
build-release-task and get-version-task orchestrators to the catalog as
reference. Repoint the moved-orchestrator links in the docs.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace a non-ASCII section sign in the catalog workflows README, neutralize
the last derived-repo phrasings in AGENTS.md and CODESTYLE.md, repoint the
moved tasks.json and devcontainer links (CODESTYLE.md, docs/devcontainer.md),
and normalize the repo-config rulesets to CRLF per .editorconfig. All docs pass
markdownlint and cspell, workflows pass actionlint, spec/validate.py classifies
the fleet cleanly, all relative links resolve, and the rulesets match the
documented branch model (self-audit dogfood).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Document the rule in AGENTS.md and spec/readme-structure.md: every human-facing
markdown file (all except AGENTS.md and copilot-instructions.md, which optimize
for agents) uses reference-style links only, defined at the bottom of the file
grouped by type under HTML-comment headers and alphabetized within each group.
Convert README, CODESTYLE, WORKFLOW, AUDIT, the docs/ guides, the catalog and
repo-config READMEs, and the Docker Hub README exemplar; reflow the docs I had
hard-wrapped back to one paragraph per line. Add a human-readable Rules index to
the README (short single-sentence rules grouped by always/never and by project
type) as the reference for what agents enforce and audit.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 4, 2026 21:45

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

This PR repurposes the repository from a code template into a governance + workflow-audit catalog: it removes the sample application/code, introduces a registry/spec system for auditing a fleet of repositories, and reshapes CI/release automation to match a source-only documentation hub.

Changes:

  • Remove the .NET/Python sample implementations (apps, libraries, tests, Docker build assets, solution/workspace/tooling scaffolding).
  • Add a spec/registry/audit framework (schemas + manifests + spec/validate.py) plus repo configuration artifacts under repo-config/.
  • Update CI and publishing workflows to lint/validate docs/spec only and produce source-only GitHub releases.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdUpdate workflow governance doc; add diagrams and convert links to reference-style.
Tests/Tests.csprojRemove .NET test project from the repo.
Tests/SampleTest.csRemove sample unit tests.
Tests/LoggingTests.csRemove logging tests tied to removed sample library.
Tests/GlobalUsings.csRemove test global usings.
Tests/Fixture.csRemove test fixtures/collection definitions.
Tests/.editorconfigRemove test-only analyzer overrides.
spec/validate.pyAdd stdlib-only validator for registry/spec cross-references used by CI.
spec/secrets.schema.jsonAdd JSON schema for publish-mechanism secrets metadata.
spec/secrets.jsonAdd publish mechanism -> required/forbidden secret mapping used by audits/validation.
spec/readme-structure.mdAdd fleet README structure specification for audit checks.
spec/project-types.schema.jsonAdd schema for project types + cross-cutting dimensions.
spec/files.schema.jsonAdd schema for baseline file/section expectations.
spec/files.jsonAdd baseline file/section catalog for fleet standardization checks.
reports/.gitkeepKeep reports/ directory tracked.
reports/_template.mdAdd audit report template used for per-repo audit outputs.
repo-config/README.mdDocument committed repo/ruleset configuration layout and procedures.
repo-config/main.jsonProvide canonical writable subset of main branch ruleset for audit/config.
repo-config/develop.jsonProvide canonical writable subset of develop branch ruleset for audit/config.
repo-config/configure.shAdd script to apply committed rulesets to a GitHub repository via API.
registry/repos.schema.jsonAdd JSON schema for fleet registry entries.
registry/repos.jsonAdd fleet registry listing cataloged and backlog repos plus audit metadata.
PyPiLibrary/tests/test_example.pyRemove Python sample tests.
PyPiLibrary/tests/init.pyRemove Python test package marker (sample removed).
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemove sample Python module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemove Python version stub tied to removed sample package.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemove sample package init.
PyPiLibrary/README.mdRemove PyPI template library documentation.
PyPiLibrary/pyproject.tomlRemove Python package project configuration.
ProjectTemplate.slnxRemove solution definition for removed .NET projects/workflow grouping.
ProjectTemplate.code-workspaceRemove VS Code workspace for removed template code layout.
NuGetLibrary/Options.csRemove sample library options type.
NuGetLibrary/NuGetLibrary.csprojRemove sample NuGet library project.
NuGetLibrary/LogOptions.csRemove sample logging options implementation.
NuGetLibrary/Library.csRemove sample library surface area.
NuGetLibrary/GlobalUsings.csRemove sample global usings.
NuGetLibrary/Extensions.csRemove sample logging extensions.
NuGetLibrary/.editorconfigRemove sample library analyzer overrides.
docs/ssh-signing.mdConvert links to reference-style; keep signing guidance consistent.
docs/host-setup.mdConvert links to reference-style; keep host setup guidance consistent.
docs/devcontainer.mdRepoint devcontainer references to catalog snippet locations; update links.
Docker/Version.shRemove sample Docker image helper script.
Docker/InstallDebugTools.shRemove sample Docker debug tooling installer script.
Docker/DockerfileRemove sample Dockerfile/build pipeline for removed code.
Docker/Build.shRemove sample Docker build script for removed code.
Directory.Packages.propsRemove centralized NuGet package versions (no longer building .NET projects here).
Directory.Build.propsRemove centralized MSBuild properties (no longer building .NET projects here).
cspell.jsonAdd repository spell-check configuration for docs/spec linting.
Console/Program.csRemove sample console app entry point.
Console/LoggerFactory.csRemove sample console logging setup.
Console/GlobalUsings.csRemove sample console global usings.
Console/Extensions.csRemove sample console extensions.
Console/Console.csprojRemove sample console project.
Console/CommandLine.csRemove sample System.CommandLine wiring.
Console/.editorconfigRemove console-only analyzer overrides.
CodeGen/Program.csRemove sample codegen program.
CodeGen/HttpClientFactory.csRemove sample resilience HTTP client factory.
CodeGen/GlobalUsings.csRemove sample codegen global usings.
CodeGen/Extensions.csRemove sample codegen logging extensions.
CodeGen/CommandLine.csRemove sample codegen CLI.
CodeGen/CodeGenBuilder.csRemove sample generator implementation.
CodeGen/CodeGen.csprojRemove sample codegen project.
CodeGen/CodeGen.csRemove sample generated output file.
CodeGen/AssemblyInfo.csRemove sample assembly info helper.
CodeGen/ApiNinjas.csRemove sample external API integration.
CodeGen/.editorconfigRemove codegen-only analyzer overrides.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdd catalog snippet for scheduled codegen entry-point workflow.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdd catalog snippet for reusable codegen+PR task workflow.
catalog/snippets/workflows/README.mdAdd mapping from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdd catalog snippet for Docker Hub README publishing task.
catalog/snippets/workflows/get-version-task.ymlAdd catalog snippet for NBGV version computation task.
catalog/snippets/workflows/check-upstream-version-task.ymlAdd catalog snippet for upstream-version tracking task.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdd catalog snippet for building (not publishing) a PyPI package.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdd catalog snippet for building/publishing a NuGet library.
catalog/snippets/workflows/build-executable-task.ymlAdd catalog snippet for building an executable with a runtime matrix.
catalog/snippets/workflows/build-docker-task.ymlAdd catalog snippet for building/pushing Docker images with registry caching.
catalog/snippets/workflows/build-datebadge-task.ymlAdd catalog snippet for BYOB “last build” badge generation.
catalog/snippets/devcontainer/python/post-create.shAdd catalog snippet for pinned-uv Python devcontainer post-create script.
catalog/snippets/devcontainer/python/devcontainer.jsonAdd catalog snippet for Python devcontainer definition.
catalog/snippets/devcontainer/dotnet/post-create.shAdd catalog snippet for .NET devcontainer post-create script.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdd catalog snippet for .NET devcontainer definition.
catalog/snippets/configs/vscode-tasks.jsonAdd catalog snippet for VS Code tasks (clean-compile + convenience tasks).
catalog/snippets/configs/docker-hub-readme.mdUpdate Docker Hub README exemplar to use reference-style links.
catalog/snippets/configs/dependabot.ymlAdd multi-ecosystem dual-target Dependabot config exemplar.
catalog/README.mdAdd catalog index for snippets and their intended use.
Benchmarks/SampleBenchmark.csRemove sample benchmarks.
Benchmarks/Program.csRemove benchmark entry point.
Benchmarks/GlobalUsings.csRemove benchmark global usings.
Benchmarks/Benchmarks.csprojRemove benchmark project.
Benchmarks/.editorconfigRemove benchmark-only analyzer overrides.
AUDIT.mdAdd authoritative audit procedure for evaluating downstream repos against this hub.
.vscode/launch.jsonRemove VS Code debug configurations tied to removed sample apps.
.github/workflows/test-pull-request.ymlConvert PR workflow to lint/spec-validation only with required aggregator.
.github/workflows/publish-release.ymlConvert release workflow to source-only GitHub releases (no build targets).
.github/dependabot.ymlReduce Dependabot to GitHub Actions ecosystem only; point to catalog exemplar for full configs.
.github/copilot-instructions.mdUpdate Copilot instructions to match governance-hub model (no template inheritance).
.dockerignoreRemove Docker ignore rules tied to removed build outputs and Docker image workflow.
.config/dotnet-tools.jsonRemove .NET local tools manifest (no longer building .NET projects here).

Comment threadspec/secrets.schema.json
Comment threadspec/validate.py
Comment threadcspell.json
Require targetMechanisms in secrets.schema.json (it was used by the validator
but not required), and have spec/validate.py report a missing mechanisms /
targetMechanisms / types key via the errors list instead of raising KeyError.
Narrow the cspell ignore to reports/*/** so the maintained reports/_template.md
is spell-checked while per-repo audit reports stay ignored.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 3 comments.

Comment threadspec/validate.py
Comment threadspec/validate.py
Comment threadrepo-config/configure.sh Outdated
Add repos.json's top-level `repos` key to validate.py's required-key check and
report an undefined target->mechanism mapping via the errors list rather than
raising KeyError. In configure.sh, fetch the ruleset list once and fail loudly
if the API call itself fails, so a failed fetch is never mistaken for "no
ruleset exists" and silently turned into a create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 2 comments.

Comment threadspec/validate.py Outdated
Comment threaddocs/devcontainer.md Outdated
…ner doc
validate.py now flags a cataloged repo with no types (an unclassified entry
would otherwise pass silently). Reframe docs/devcontainer.md: this repo ships no
toolchain and keeps the two devcontainer definitions as catalog reference, so
drop the removed *.code-workspace / PyPiLibrary references and present the SSH
signing, bind-mount, and gh-auth mechanics as reference for a repo that uses them.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Pin the markdownlint-cli2, cspell, and actionlint Docker images in
test-pull-request.yml to specific digests (version in a trailing comment) so CI
is reproducible and not exposed to a floating :latest. Add *.py to the LF pins
in .editorconfig and .gitattributes so shebang scripts like spec/validate.py
cannot drift to CRLF.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
configure.sh now uses gh api --paginate for the ruleset name lookup, so a repo
with more rulesets than one page can't hide a match and cause a duplicate create.
Still fails loudly if the list call itself fails.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py Outdated
Comment threadspec/validate.py
Comment threadspec/validate.py Outdated
Comment threadrepo-config/configure.sh
…ript
validate.py now defensively handles every repo entry: non-object entries, a
missing status, an unknown status, and malformed publish entries all produce an
actionable error instead of a KeyError/traceback, and the summary counts guard
their field access. configure.sh takes the first ruleset when a name has
duplicates (drift) and warns rather than PUTting to a multi-id URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
Guard the duplicate-name count on non-empty ids: grep -c exits non-zero on empty
input, which under set -euo pipefail would abort the script in the common
"no ruleset yet, create it" path. Now an empty match falls through to create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit e5a4a08 into developJul 5, 2026
7 checks passed
@ptr727
ptr727 deleted the feature/repurpose-audit-catalog branch July 7, 2026 21:05
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

Repurpose ProjectTemplate into a governance and workflow-audit catalog - #226

Merged
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog
Jul 5, 2026
Merged

Repurpose ProjectTemplate into a governance and workflow-audit catalog#226
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog

Conversation

@ptr727

Copy link
Copy Markdown
Owner

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

ptr727and others added 10 commits July 4, 2026 12:43
Strip the buildable sample apps (CodeGen, Console, NuGetLibrary, PyPiLibrary,
Benchmarks, Tests), the Docker image sources, and the .NET build infra
(Directory.Build.props/.Packages.props, .slnx, dotnet-tools, .dockerignore).
The repo becomes a governance + orchestration + audit-catalog repo. Extract the
cSpell word list from the deleted workspace into a standalone cspell.json so the
CLI and CI read the same config as the editor extension (linter parity).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move branch rulesets out of .github/ (Actions-owned only) into repo-config/ with
an idempotent configure.sh apply script, mirroring the downstream layout. Move
the nine app-specific build/publish/codegen workflow tasks into
catalog/snippets/workflows/ as inert reference (mapped to their WORKFLOW.md
guarantees); keep only the source-only orchestrator set live. Move vscode-tasks,
the Docker Hub readme, and the devcontainers into catalog/snippets. Reduce this
repo's dependabot.yml to the github-actions ecosystem and keep the full
multi-ecosystem config as a catalog reference.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite AGENTS.md's opening and layout for the audit-catalog identity, delete
the five inheritance sections (Quick Start, Carry Verbatim, Staying in Sync,
Personas, Known Downstream), and add the "durable guidance lives in committed
docs, not agent memory" principle. Repoint moved-file and ruleset links to
their new homes. Neutralize "synced verbatim" wording in WORKFLOW.md and the
derived-repo drift-report note in copilot-instructions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite the root README as this repo's own (purpose, how it operates, dev
environment, TODO backlog, license), dropping the sample-app and derived-repo
onboarding content. Add spec/readme-structure.md as the preferred README shape
the audit checks fleet repos against. Expand repo-config/README.md with the
salvaged GitHub setup reference: ruleset import, required secrets, repo
settings, and the maintainer-only brownfield re-sign migration.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author registry/repos.json (self + 7 cataloged + 14 backlog) and the spec
manifests: project-types.json (per-type letter/intent checks plus cross-cutting
workflow, branch-model, repo-setup, linter-parity, recurring-violations, and
readme-structure dimensions), files.json (standardization baseline), and
secrets.json (publish mechanism -> required/forbidden secrets). Each JSON check
points at the prose section that owns the rationale. spec/validate.py is the
dependency-free classification dry-run: it confirms every cataloged repo's
types, publish mechanisms, and secrets classify against the spec.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
AUDIT.md defines the read-only per-repo audit: main as ground truth (develop
divergence is a drift finding), type resolution from the registry, the
applicability gate, per-dimension letter/intent checks, asserting the Actions
implement WORKFLOW.md, the ruleset normalized-diff and secret checks, the
verdict model (letter miss = drift, letter+intent miss = defect), and the
report format. reports/_template.md is the report skeleton.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add four mermaid diagrams to WORKFLOW.md section 3: the branch model, the PR
smoke-feedback path, the two-phase publish matrix, and the artifact seam
handoff. Configure cspell to skip mermaid blocks and add the technical words the
docs use so cspell passes repo-wide, matching the markdownlint parity.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite test-pull-request.yml as a lint-only gate: markdownlint, cspell,
actionlint, and jq/spec validation, all sharing the repo's own configs, behind
the ruleset-bound Check pull request workflow status aggregator. Rewrite
publish-release.yml as a self-contained source-only release (NBGV version then a
tag + source archive + README + LICENSE per branch), and move the multi-target
build-release-task and get-version-task orchestrators to the catalog as
reference. Repoint the moved-orchestrator links in the docs.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace a non-ASCII section sign in the catalog workflows README, neutralize
the last derived-repo phrasings in AGENTS.md and CODESTYLE.md, repoint the
moved tasks.json and devcontainer links (CODESTYLE.md, docs/devcontainer.md),
and normalize the repo-config rulesets to CRLF per .editorconfig. All docs pass
markdownlint and cspell, workflows pass actionlint, spec/validate.py classifies
the fleet cleanly, all relative links resolve, and the rulesets match the
documented branch model (self-audit dogfood).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Document the rule in AGENTS.md and spec/readme-structure.md: every human-facing
markdown file (all except AGENTS.md and copilot-instructions.md, which optimize
for agents) uses reference-style links only, defined at the bottom of the file
grouped by type under HTML-comment headers and alphabetized within each group.
Convert README, CODESTYLE, WORKFLOW, AUDIT, the docs/ guides, the catalog and
repo-config READMEs, and the Docker Hub README exemplar; reflow the docs I had
hard-wrapped back to one paragraph per line. Add a human-readable Rules index to
the README (short single-sentence rules grouped by always/never and by project
type) as the reference for what agents enforce and audit.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 4, 2026 21:45

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

This PR repurposes the repository from a code template into a governance + workflow-audit catalog: it removes the sample application/code, introduces a registry/spec system for auditing a fleet of repositories, and reshapes CI/release automation to match a source-only documentation hub.

Changes:

  • Remove the .NET/Python sample implementations (apps, libraries, tests, Docker build assets, solution/workspace/tooling scaffolding).
  • Add a spec/registry/audit framework (schemas + manifests + spec/validate.py) plus repo configuration artifacts under repo-config/.
  • Update CI and publishing workflows to lint/validate docs/spec only and produce source-only GitHub releases.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdUpdate workflow governance doc; add diagrams and convert links to reference-style.
Tests/Tests.csprojRemove .NET test project from the repo.
Tests/SampleTest.csRemove sample unit tests.
Tests/LoggingTests.csRemove logging tests tied to removed sample library.
Tests/GlobalUsings.csRemove test global usings.
Tests/Fixture.csRemove test fixtures/collection definitions.
Tests/.editorconfigRemove test-only analyzer overrides.
spec/validate.pyAdd stdlib-only validator for registry/spec cross-references used by CI.
spec/secrets.schema.jsonAdd JSON schema for publish-mechanism secrets metadata.
spec/secrets.jsonAdd publish mechanism -> required/forbidden secret mapping used by audits/validation.
spec/readme-structure.mdAdd fleet README structure specification for audit checks.
spec/project-types.schema.jsonAdd schema for project types + cross-cutting dimensions.
spec/files.schema.jsonAdd schema for baseline file/section expectations.
spec/files.jsonAdd baseline file/section catalog for fleet standardization checks.
reports/.gitkeepKeep reports/ directory tracked.
reports/_template.mdAdd audit report template used for per-repo audit outputs.
repo-config/README.mdDocument committed repo/ruleset configuration layout and procedures.
repo-config/main.jsonProvide canonical writable subset of main branch ruleset for audit/config.
repo-config/develop.jsonProvide canonical writable subset of develop branch ruleset for audit/config.
repo-config/configure.shAdd script to apply committed rulesets to a GitHub repository via API.
registry/repos.schema.jsonAdd JSON schema for fleet registry entries.
registry/repos.jsonAdd fleet registry listing cataloged and backlog repos plus audit metadata.
PyPiLibrary/tests/test_example.pyRemove Python sample tests.
PyPiLibrary/tests/init.pyRemove Python test package marker (sample removed).
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemove sample Python module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemove Python version stub tied to removed sample package.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemove sample package init.
PyPiLibrary/README.mdRemove PyPI template library documentation.
PyPiLibrary/pyproject.tomlRemove Python package project configuration.
ProjectTemplate.slnxRemove solution definition for removed .NET projects/workflow grouping.
ProjectTemplate.code-workspaceRemove VS Code workspace for removed template code layout.
NuGetLibrary/Options.csRemove sample library options type.
NuGetLibrary/NuGetLibrary.csprojRemove sample NuGet library project.
NuGetLibrary/LogOptions.csRemove sample logging options implementation.
NuGetLibrary/Library.csRemove sample library surface area.
NuGetLibrary/GlobalUsings.csRemove sample global usings.
NuGetLibrary/Extensions.csRemove sample logging extensions.
NuGetLibrary/.editorconfigRemove sample library analyzer overrides.
docs/ssh-signing.mdConvert links to reference-style; keep signing guidance consistent.
docs/host-setup.mdConvert links to reference-style; keep host setup guidance consistent.
docs/devcontainer.mdRepoint devcontainer references to catalog snippet locations; update links.
Docker/Version.shRemove sample Docker image helper script.
Docker/InstallDebugTools.shRemove sample Docker debug tooling installer script.
Docker/DockerfileRemove sample Dockerfile/build pipeline for removed code.
Docker/Build.shRemove sample Docker build script for removed code.
Directory.Packages.propsRemove centralized NuGet package versions (no longer building .NET projects here).
Directory.Build.propsRemove centralized MSBuild properties (no longer building .NET projects here).
cspell.jsonAdd repository spell-check configuration for docs/spec linting.
Console/Program.csRemove sample console app entry point.
Console/LoggerFactory.csRemove sample console logging setup.
Console/GlobalUsings.csRemove sample console global usings.
Console/Extensions.csRemove sample console extensions.
Console/Console.csprojRemove sample console project.
Console/CommandLine.csRemove sample System.CommandLine wiring.
Console/.editorconfigRemove console-only analyzer overrides.
CodeGen/Program.csRemove sample codegen program.
CodeGen/HttpClientFactory.csRemove sample resilience HTTP client factory.
CodeGen/GlobalUsings.csRemove sample codegen global usings.
CodeGen/Extensions.csRemove sample codegen logging extensions.
CodeGen/CommandLine.csRemove sample codegen CLI.
CodeGen/CodeGenBuilder.csRemove sample generator implementation.
CodeGen/CodeGen.csprojRemove sample codegen project.
CodeGen/CodeGen.csRemove sample generated output file.
CodeGen/AssemblyInfo.csRemove sample assembly info helper.
CodeGen/ApiNinjas.csRemove sample external API integration.
CodeGen/.editorconfigRemove codegen-only analyzer overrides.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdd catalog snippet for scheduled codegen entry-point workflow.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdd catalog snippet for reusable codegen+PR task workflow.
catalog/snippets/workflows/README.mdAdd mapping from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdd catalog snippet for Docker Hub README publishing task.
catalog/snippets/workflows/get-version-task.ymlAdd catalog snippet for NBGV version computation task.
catalog/snippets/workflows/check-upstream-version-task.ymlAdd catalog snippet for upstream-version tracking task.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdd catalog snippet for building (not publishing) a PyPI package.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdd catalog snippet for building/publishing a NuGet library.
catalog/snippets/workflows/build-executable-task.ymlAdd catalog snippet for building an executable with a runtime matrix.
catalog/snippets/workflows/build-docker-task.ymlAdd catalog snippet for building/pushing Docker images with registry caching.
catalog/snippets/workflows/build-datebadge-task.ymlAdd catalog snippet for BYOB “last build” badge generation.
catalog/snippets/devcontainer/python/post-create.shAdd catalog snippet for pinned-uv Python devcontainer post-create script.
catalog/snippets/devcontainer/python/devcontainer.jsonAdd catalog snippet for Python devcontainer definition.
catalog/snippets/devcontainer/dotnet/post-create.shAdd catalog snippet for .NET devcontainer post-create script.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdd catalog snippet for .NET devcontainer definition.
catalog/snippets/configs/vscode-tasks.jsonAdd catalog snippet for VS Code tasks (clean-compile + convenience tasks).
catalog/snippets/configs/docker-hub-readme.mdUpdate Docker Hub README exemplar to use reference-style links.
catalog/snippets/configs/dependabot.ymlAdd multi-ecosystem dual-target Dependabot config exemplar.
catalog/README.mdAdd catalog index for snippets and their intended use.
Benchmarks/SampleBenchmark.csRemove sample benchmarks.
Benchmarks/Program.csRemove benchmark entry point.
Benchmarks/GlobalUsings.csRemove benchmark global usings.
Benchmarks/Benchmarks.csprojRemove benchmark project.
Benchmarks/.editorconfigRemove benchmark-only analyzer overrides.
AUDIT.mdAdd authoritative audit procedure for evaluating downstream repos against this hub.
.vscode/launch.jsonRemove VS Code debug configurations tied to removed sample apps.
.github/workflows/test-pull-request.ymlConvert PR workflow to lint/spec-validation only with required aggregator.
.github/workflows/publish-release.ymlConvert release workflow to source-only GitHub releases (no build targets).
.github/dependabot.ymlReduce Dependabot to GitHub Actions ecosystem only; point to catalog exemplar for full configs.
.github/copilot-instructions.mdUpdate Copilot instructions to match governance-hub model (no template inheritance).
.dockerignoreRemove Docker ignore rules tied to removed build outputs and Docker image workflow.
.config/dotnet-tools.jsonRemove .NET local tools manifest (no longer building .NET projects here).

Comment threadspec/secrets.schema.json
Comment threadspec/validate.py
Comment threadcspell.json
Require targetMechanisms in secrets.schema.json (it was used by the validator
but not required), and have spec/validate.py report a missing mechanisms /
targetMechanisms / types key via the errors list instead of raising KeyError.
Narrow the cspell ignore to reports/*/** so the maintained reports/_template.md
is spell-checked while per-repo audit reports stay ignored.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 3 comments.

Comment threadspec/validate.py
Comment threadspec/validate.py
Comment threadrepo-config/configure.sh Outdated
Add repos.json's top-level `repos` key to validate.py's required-key check and
report an undefined target->mechanism mapping via the errors list rather than
raising KeyError. In configure.sh, fetch the ruleset list once and fail loudly
if the API call itself fails, so a failed fetch is never mistaken for "no
ruleset exists" and silently turned into a create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 2 comments.

Comment threadspec/validate.py Outdated
Comment threaddocs/devcontainer.md Outdated
…ner doc
validate.py now flags a cataloged repo with no types (an unclassified entry
would otherwise pass silently). Reframe docs/devcontainer.md: this repo ships no
toolchain and keeps the two devcontainer definitions as catalog reference, so
drop the removed *.code-workspace / PyPiLibrary references and present the SSH
signing, bind-mount, and gh-auth mechanics as reference for a repo that uses them.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Pin the markdownlint-cli2, cspell, and actionlint Docker images in
test-pull-request.yml to specific digests (version in a trailing comment) so CI
is reproducible and not exposed to a floating :latest. Add *.py to the LF pins
in .editorconfig and .gitattributes so shebang scripts like spec/validate.py
cannot drift to CRLF.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
configure.sh now uses gh api --paginate for the ruleset name lookup, so a repo
with more rulesets than one page can't hide a match and cause a duplicate create.
Still fails loudly if the list call itself fails.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py Outdated
Comment threadspec/validate.py
Comment threadspec/validate.py Outdated
Comment threadrepo-config/configure.sh
…ript
validate.py now defensively handles every repo entry: non-object entries, a
missing status, an unknown status, and malformed publish entries all produce an
actionable error instead of a KeyError/traceback, and the summary counts guard
their field access. configure.sh takes the first ruleset when a name has
duplicates (drift) and warns rather than PUTting to a multi-id URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
Guard the duplicate-name count on non-empty ids: grep -c exits non-zero on empty
input, which under set -euo pipefail would abort the script in the common
"no ruleset yet, create it" path. Now an empty match falls through to create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit e5a4a08 into developJul 5, 2026
7 checks passed
@ptr727
ptr727 deleted the feature/repurpose-audit-catalog branch July 7, 2026 21:05
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

Repurpose ProjectTemplate into a governance and workflow-audit catalog - #226

Merged
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog
Jul 5, 2026
Merged

Repurpose ProjectTemplate into a governance and workflow-audit catalog#226
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog

Conversation

@ptr727

Copy link
Copy Markdown
Owner

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

ptr727and others added 10 commits July 4, 2026 12:43
Strip the buildable sample apps (CodeGen, Console, NuGetLibrary, PyPiLibrary,
Benchmarks, Tests), the Docker image sources, and the .NET build infra
(Directory.Build.props/.Packages.props, .slnx, dotnet-tools, .dockerignore).
The repo becomes a governance + orchestration + audit-catalog repo. Extract the
cSpell word list from the deleted workspace into a standalone cspell.json so the
CLI and CI read the same config as the editor extension (linter parity).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move branch rulesets out of .github/ (Actions-owned only) into repo-config/ with
an idempotent configure.sh apply script, mirroring the downstream layout. Move
the nine app-specific build/publish/codegen workflow tasks into
catalog/snippets/workflows/ as inert reference (mapped to their WORKFLOW.md
guarantees); keep only the source-only orchestrator set live. Move vscode-tasks,
the Docker Hub readme, and the devcontainers into catalog/snippets. Reduce this
repo's dependabot.yml to the github-actions ecosystem and keep the full
multi-ecosystem config as a catalog reference.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite AGENTS.md's opening and layout for the audit-catalog identity, delete
the five inheritance sections (Quick Start, Carry Verbatim, Staying in Sync,
Personas, Known Downstream), and add the "durable guidance lives in committed
docs, not agent memory" principle. Repoint moved-file and ruleset links to
their new homes. Neutralize "synced verbatim" wording in WORKFLOW.md and the
derived-repo drift-report note in copilot-instructions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite the root README as this repo's own (purpose, how it operates, dev
environment, TODO backlog, license), dropping the sample-app and derived-repo
onboarding content. Add spec/readme-structure.md as the preferred README shape
the audit checks fleet repos against. Expand repo-config/README.md with the
salvaged GitHub setup reference: ruleset import, required secrets, repo
settings, and the maintainer-only brownfield re-sign migration.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author registry/repos.json (self + 7 cataloged + 14 backlog) and the spec
manifests: project-types.json (per-type letter/intent checks plus cross-cutting
workflow, branch-model, repo-setup, linter-parity, recurring-violations, and
readme-structure dimensions), files.json (standardization baseline), and
secrets.json (publish mechanism -> required/forbidden secrets). Each JSON check
points at the prose section that owns the rationale. spec/validate.py is the
dependency-free classification dry-run: it confirms every cataloged repo's
types, publish mechanisms, and secrets classify against the spec.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
AUDIT.md defines the read-only per-repo audit: main as ground truth (develop
divergence is a drift finding), type resolution from the registry, the
applicability gate, per-dimension letter/intent checks, asserting the Actions
implement WORKFLOW.md, the ruleset normalized-diff and secret checks, the
verdict model (letter miss = drift, letter+intent miss = defect), and the
report format. reports/_template.md is the report skeleton.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add four mermaid diagrams to WORKFLOW.md section 3: the branch model, the PR
smoke-feedback path, the two-phase publish matrix, and the artifact seam
handoff. Configure cspell to skip mermaid blocks and add the technical words the
docs use so cspell passes repo-wide, matching the markdownlint parity.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite test-pull-request.yml as a lint-only gate: markdownlint, cspell,
actionlint, and jq/spec validation, all sharing the repo's own configs, behind
the ruleset-bound Check pull request workflow status aggregator. Rewrite
publish-release.yml as a self-contained source-only release (NBGV version then a
tag + source archive + README + LICENSE per branch), and move the multi-target
build-release-task and get-version-task orchestrators to the catalog as
reference. Repoint the moved-orchestrator links in the docs.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace a non-ASCII section sign in the catalog workflows README, neutralize
the last derived-repo phrasings in AGENTS.md and CODESTYLE.md, repoint the
moved tasks.json and devcontainer links (CODESTYLE.md, docs/devcontainer.md),
and normalize the repo-config rulesets to CRLF per .editorconfig. All docs pass
markdownlint and cspell, workflows pass actionlint, spec/validate.py classifies
the fleet cleanly, all relative links resolve, and the rulesets match the
documented branch model (self-audit dogfood).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Document the rule in AGENTS.md and spec/readme-structure.md: every human-facing
markdown file (all except AGENTS.md and copilot-instructions.md, which optimize
for agents) uses reference-style links only, defined at the bottom of the file
grouped by type under HTML-comment headers and alphabetized within each group.
Convert README, CODESTYLE, WORKFLOW, AUDIT, the docs/ guides, the catalog and
repo-config READMEs, and the Docker Hub README exemplar; reflow the docs I had
hard-wrapped back to one paragraph per line. Add a human-readable Rules index to
the README (short single-sentence rules grouped by always/never and by project
type) as the reference for what agents enforce and audit.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 4, 2026 21:45

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

This PR repurposes the repository from a code template into a governance + workflow-audit catalog: it removes the sample application/code, introduces a registry/spec system for auditing a fleet of repositories, and reshapes CI/release automation to match a source-only documentation hub.

Changes:

  • Remove the .NET/Python sample implementations (apps, libraries, tests, Docker build assets, solution/workspace/tooling scaffolding).
  • Add a spec/registry/audit framework (schemas + manifests + spec/validate.py) plus repo configuration artifacts under repo-config/.
  • Update CI and publishing workflows to lint/validate docs/spec only and produce source-only GitHub releases.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdUpdate workflow governance doc; add diagrams and convert links to reference-style.
Tests/Tests.csprojRemove .NET test project from the repo.
Tests/SampleTest.csRemove sample unit tests.
Tests/LoggingTests.csRemove logging tests tied to removed sample library.
Tests/GlobalUsings.csRemove test global usings.
Tests/Fixture.csRemove test fixtures/collection definitions.
Tests/.editorconfigRemove test-only analyzer overrides.
spec/validate.pyAdd stdlib-only validator for registry/spec cross-references used by CI.
spec/secrets.schema.jsonAdd JSON schema for publish-mechanism secrets metadata.
spec/secrets.jsonAdd publish mechanism -> required/forbidden secret mapping used by audits/validation.
spec/readme-structure.mdAdd fleet README structure specification for audit checks.
spec/project-types.schema.jsonAdd schema for project types + cross-cutting dimensions.
spec/files.schema.jsonAdd schema for baseline file/section expectations.
spec/files.jsonAdd baseline file/section catalog for fleet standardization checks.
reports/.gitkeepKeep reports/ directory tracked.
reports/_template.mdAdd audit report template used for per-repo audit outputs.
repo-config/README.mdDocument committed repo/ruleset configuration layout and procedures.
repo-config/main.jsonProvide canonical writable subset of main branch ruleset for audit/config.
repo-config/develop.jsonProvide canonical writable subset of develop branch ruleset for audit/config.
repo-config/configure.shAdd script to apply committed rulesets to a GitHub repository via API.
registry/repos.schema.jsonAdd JSON schema for fleet registry entries.
registry/repos.jsonAdd fleet registry listing cataloged and backlog repos plus audit metadata.
PyPiLibrary/tests/test_example.pyRemove Python sample tests.
PyPiLibrary/tests/init.pyRemove Python test package marker (sample removed).
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemove sample Python module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemove Python version stub tied to removed sample package.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemove sample package init.
PyPiLibrary/README.mdRemove PyPI template library documentation.
PyPiLibrary/pyproject.tomlRemove Python package project configuration.
ProjectTemplate.slnxRemove solution definition for removed .NET projects/workflow grouping.
ProjectTemplate.code-workspaceRemove VS Code workspace for removed template code layout.
NuGetLibrary/Options.csRemove sample library options type.
NuGetLibrary/NuGetLibrary.csprojRemove sample NuGet library project.
NuGetLibrary/LogOptions.csRemove sample logging options implementation.
NuGetLibrary/Library.csRemove sample library surface area.
NuGetLibrary/GlobalUsings.csRemove sample global usings.
NuGetLibrary/Extensions.csRemove sample logging extensions.
NuGetLibrary/.editorconfigRemove sample library analyzer overrides.
docs/ssh-signing.mdConvert links to reference-style; keep signing guidance consistent.
docs/host-setup.mdConvert links to reference-style; keep host setup guidance consistent.
docs/devcontainer.mdRepoint devcontainer references to catalog snippet locations; update links.
Docker/Version.shRemove sample Docker image helper script.
Docker/InstallDebugTools.shRemove sample Docker debug tooling installer script.
Docker/DockerfileRemove sample Dockerfile/build pipeline for removed code.
Docker/Build.shRemove sample Docker build script for removed code.
Directory.Packages.propsRemove centralized NuGet package versions (no longer building .NET projects here).
Directory.Build.propsRemove centralized MSBuild properties (no longer building .NET projects here).
cspell.jsonAdd repository spell-check configuration for docs/spec linting.
Console/Program.csRemove sample console app entry point.
Console/LoggerFactory.csRemove sample console logging setup.
Console/GlobalUsings.csRemove sample console global usings.
Console/Extensions.csRemove sample console extensions.
Console/Console.csprojRemove sample console project.
Console/CommandLine.csRemove sample System.CommandLine wiring.
Console/.editorconfigRemove console-only analyzer overrides.
CodeGen/Program.csRemove sample codegen program.
CodeGen/HttpClientFactory.csRemove sample resilience HTTP client factory.
CodeGen/GlobalUsings.csRemove sample codegen global usings.
CodeGen/Extensions.csRemove sample codegen logging extensions.
CodeGen/CommandLine.csRemove sample codegen CLI.
CodeGen/CodeGenBuilder.csRemove sample generator implementation.
CodeGen/CodeGen.csprojRemove sample codegen project.
CodeGen/CodeGen.csRemove sample generated output file.
CodeGen/AssemblyInfo.csRemove sample assembly info helper.
CodeGen/ApiNinjas.csRemove sample external API integration.
CodeGen/.editorconfigRemove codegen-only analyzer overrides.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdd catalog snippet for scheduled codegen entry-point workflow.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdd catalog snippet for reusable codegen+PR task workflow.
catalog/snippets/workflows/README.mdAdd mapping from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdd catalog snippet for Docker Hub README publishing task.
catalog/snippets/workflows/get-version-task.ymlAdd catalog snippet for NBGV version computation task.
catalog/snippets/workflows/check-upstream-version-task.ymlAdd catalog snippet for upstream-version tracking task.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdd catalog snippet for building (not publishing) a PyPI package.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdd catalog snippet for building/publishing a NuGet library.
catalog/snippets/workflows/build-executable-task.ymlAdd catalog snippet for building an executable with a runtime matrix.
catalog/snippets/workflows/build-docker-task.ymlAdd catalog snippet for building/pushing Docker images with registry caching.
catalog/snippets/workflows/build-datebadge-task.ymlAdd catalog snippet for BYOB “last build” badge generation.
catalog/snippets/devcontainer/python/post-create.shAdd catalog snippet for pinned-uv Python devcontainer post-create script.
catalog/snippets/devcontainer/python/devcontainer.jsonAdd catalog snippet for Python devcontainer definition.
catalog/snippets/devcontainer/dotnet/post-create.shAdd catalog snippet for .NET devcontainer post-create script.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdd catalog snippet for .NET devcontainer definition.
catalog/snippets/configs/vscode-tasks.jsonAdd catalog snippet for VS Code tasks (clean-compile + convenience tasks).
catalog/snippets/configs/docker-hub-readme.mdUpdate Docker Hub README exemplar to use reference-style links.
catalog/snippets/configs/dependabot.ymlAdd multi-ecosystem dual-target Dependabot config exemplar.
catalog/README.mdAdd catalog index for snippets and their intended use.
Benchmarks/SampleBenchmark.csRemove sample benchmarks.
Benchmarks/Program.csRemove benchmark entry point.
Benchmarks/GlobalUsings.csRemove benchmark global usings.
Benchmarks/Benchmarks.csprojRemove benchmark project.
Benchmarks/.editorconfigRemove benchmark-only analyzer overrides.
AUDIT.mdAdd authoritative audit procedure for evaluating downstream repos against this hub.
.vscode/launch.jsonRemove VS Code debug configurations tied to removed sample apps.
.github/workflows/test-pull-request.ymlConvert PR workflow to lint/spec-validation only with required aggregator.
.github/workflows/publish-release.ymlConvert release workflow to source-only GitHub releases (no build targets).
.github/dependabot.ymlReduce Dependabot to GitHub Actions ecosystem only; point to catalog exemplar for full configs.
.github/copilot-instructions.mdUpdate Copilot instructions to match governance-hub model (no template inheritance).
.dockerignoreRemove Docker ignore rules tied to removed build outputs and Docker image workflow.
.config/dotnet-tools.jsonRemove .NET local tools manifest (no longer building .NET projects here).

Comment threadspec/secrets.schema.json
Comment threadspec/validate.py
Comment threadcspell.json
Require targetMechanisms in secrets.schema.json (it was used by the validator
but not required), and have spec/validate.py report a missing mechanisms /
targetMechanisms / types key via the errors list instead of raising KeyError.
Narrow the cspell ignore to reports/*/** so the maintained reports/_template.md
is spell-checked while per-repo audit reports stay ignored.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 3 comments.

Comment threadspec/validate.py
Comment threadspec/validate.py
Comment threadrepo-config/configure.sh Outdated
Add repos.json's top-level `repos` key to validate.py's required-key check and
report an undefined target->mechanism mapping via the errors list rather than
raising KeyError. In configure.sh, fetch the ruleset list once and fail loudly
if the API call itself fails, so a failed fetch is never mistaken for "no
ruleset exists" and silently turned into a create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 2 comments.

Comment threadspec/validate.py Outdated
Comment threaddocs/devcontainer.md Outdated
…ner doc
validate.py now flags a cataloged repo with no types (an unclassified entry
would otherwise pass silently). Reframe docs/devcontainer.md: this repo ships no
toolchain and keeps the two devcontainer definitions as catalog reference, so
drop the removed *.code-workspace / PyPiLibrary references and present the SSH
signing, bind-mount, and gh-auth mechanics as reference for a repo that uses them.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Pin the markdownlint-cli2, cspell, and actionlint Docker images in
test-pull-request.yml to specific digests (version in a trailing comment) so CI
is reproducible and not exposed to a floating :latest. Add *.py to the LF pins
in .editorconfig and .gitattributes so shebang scripts like spec/validate.py
cannot drift to CRLF.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
configure.sh now uses gh api --paginate for the ruleset name lookup, so a repo
with more rulesets than one page can't hide a match and cause a duplicate create.
Still fails loudly if the list call itself fails.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py Outdated
Comment threadspec/validate.py
Comment threadspec/validate.py Outdated
Comment threadrepo-config/configure.sh
…ript
validate.py now defensively handles every repo entry: non-object entries, a
missing status, an unknown status, and malformed publish entries all produce an
actionable error instead of a KeyError/traceback, and the summary counts guard
their field access. configure.sh takes the first ruleset when a name has
duplicates (drift) and warns rather than PUTting to a multi-id URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
Guard the duplicate-name count on non-empty ids: grep -c exits non-zero on empty
input, which under set -euo pipefail would abort the script in the common
"no ruleset yet, create it" path. Now an empty match falls through to create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit e5a4a08 into developJul 5, 2026
7 checks passed
@ptr727
ptr727 deleted the feature/repurpose-audit-catalog branch July 7, 2026 21:05
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

Repurpose ProjectTemplate into a governance and workflow-audit catalog - #226

Merged
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog
Jul 5, 2026
Merged

Repurpose ProjectTemplate into a governance and workflow-audit catalog#226
ptr727 merged 17 commits into
developfrom
feature/repurpose-audit-catalog

Conversation

@ptr727

Copy link
Copy Markdown
Owner

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

ptr727and others added 10 commits July 4, 2026 12:43
Strip the buildable sample apps (CodeGen, Console, NuGetLibrary, PyPiLibrary,
Benchmarks, Tests), the Docker image sources, and the .NET build infra
(Directory.Build.props/.Packages.props, .slnx, dotnet-tools, .dockerignore).
The repo becomes a governance + orchestration + audit-catalog repo. Extract the
cSpell word list from the deleted workspace into a standalone cspell.json so the
CLI and CI read the same config as the editor extension (linter parity).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move branch rulesets out of .github/ (Actions-owned only) into repo-config/ with
an idempotent configure.sh apply script, mirroring the downstream layout. Move
the nine app-specific build/publish/codegen workflow tasks into
catalog/snippets/workflows/ as inert reference (mapped to their WORKFLOW.md
guarantees); keep only the source-only orchestrator set live. Move vscode-tasks,
the Docker Hub readme, and the devcontainers into catalog/snippets. Reduce this
repo's dependabot.yml to the github-actions ecosystem and keep the full
multi-ecosystem config as a catalog reference.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite AGENTS.md's opening and layout for the audit-catalog identity, delete
the five inheritance sections (Quick Start, Carry Verbatim, Staying in Sync,
Personas, Known Downstream), and add the "durable guidance lives in committed
docs, not agent memory" principle. Repoint moved-file and ruleset links to
their new homes. Neutralize "synced verbatim" wording in WORKFLOW.md and the
derived-repo drift-report note in copilot-instructions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite the root README as this repo's own (purpose, how it operates, dev
environment, TODO backlog, license), dropping the sample-app and derived-repo
onboarding content. Add spec/readme-structure.md as the preferred README shape
the audit checks fleet repos against. Expand repo-config/README.md with the
salvaged GitHub setup reference: ruleset import, required secrets, repo
settings, and the maintainer-only brownfield re-sign migration.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author registry/repos.json (self + 7 cataloged + 14 backlog) and the spec
manifests: project-types.json (per-type letter/intent checks plus cross-cutting
workflow, branch-model, repo-setup, linter-parity, recurring-violations, and
readme-structure dimensions), files.json (standardization baseline), and
secrets.json (publish mechanism -> required/forbidden secrets). Each JSON check
points at the prose section that owns the rationale. spec/validate.py is the
dependency-free classification dry-run: it confirms every cataloged repo's
types, publish mechanisms, and secrets classify against the spec.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
AUDIT.md defines the read-only per-repo audit: main as ground truth (develop
divergence is a drift finding), type resolution from the registry, the
applicability gate, per-dimension letter/intent checks, asserting the Actions
implement WORKFLOW.md, the ruleset normalized-diff and secret checks, the
verdict model (letter miss = drift, letter+intent miss = defect), and the
report format. reports/_template.md is the report skeleton.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add four mermaid diagrams to WORKFLOW.md section 3: the branch model, the PR
smoke-feedback path, the two-phase publish matrix, and the artifact seam
handoff. Configure cspell to skip mermaid blocks and add the technical words the
docs use so cspell passes repo-wide, matching the markdownlint parity.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rewrite test-pull-request.yml as a lint-only gate: markdownlint, cspell,
actionlint, and jq/spec validation, all sharing the repo's own configs, behind
the ruleset-bound Check pull request workflow status aggregator. Rewrite
publish-release.yml as a self-contained source-only release (NBGV version then a
tag + source archive + README + LICENSE per branch), and move the multi-target
build-release-task and get-version-task orchestrators to the catalog as
reference. Repoint the moved-orchestrator links in the docs.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace a non-ASCII section sign in the catalog workflows README, neutralize
the last derived-repo phrasings in AGENTS.md and CODESTYLE.md, repoint the
moved tasks.json and devcontainer links (CODESTYLE.md, docs/devcontainer.md),
and normalize the repo-config rulesets to CRLF per .editorconfig. All docs pass
markdownlint and cspell, workflows pass actionlint, spec/validate.py classifies
the fleet cleanly, all relative links resolve, and the rulesets match the
documented branch model (self-audit dogfood).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Document the rule in AGENTS.md and spec/readme-structure.md: every human-facing
markdown file (all except AGENTS.md and copilot-instructions.md, which optimize
for agents) uses reference-style links only, defined at the bottom of the file
grouped by type under HTML-comment headers and alphabetized within each group.
Convert README, CODESTYLE, WORKFLOW, AUDIT, the docs/ guides, the catalog and
repo-config READMEs, and the Docker Hub README exemplar; reflow the docs I had
hard-wrapped back to one paragraph per line. Add a human-readable Rules index to
the README (short single-sentence rules grouped by always/never and by project
type) as the reference for what agents enforce and audit.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings July 4, 2026 21:45

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

This PR repurposes the repository from a code template into a governance + workflow-audit catalog: it removes the sample application/code, introduces a registry/spec system for auditing a fleet of repositories, and reshapes CI/release automation to match a source-only documentation hub.

Changes:

  • Remove the .NET/Python sample implementations (apps, libraries, tests, Docker build assets, solution/workspace/tooling scaffolding).
  • Add a spec/registry/audit framework (schemas + manifests + spec/validate.py) plus repo configuration artifacts under repo-config/.
  • Update CI and publishing workflows to lint/validate docs/spec only and produce source-only GitHub releases.

Reviewed changes

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

Show a summary per file
FileDescription
WORKFLOW.mdUpdate workflow governance doc; add diagrams and convert links to reference-style.
Tests/Tests.csprojRemove .NET test project from the repo.
Tests/SampleTest.csRemove sample unit tests.
Tests/LoggingTests.csRemove logging tests tied to removed sample library.
Tests/GlobalUsings.csRemove test global usings.
Tests/Fixture.csRemove test fixtures/collection definitions.
Tests/.editorconfigRemove test-only analyzer overrides.
spec/validate.pyAdd stdlib-only validator for registry/spec cross-references used by CI.
spec/secrets.schema.jsonAdd JSON schema for publish-mechanism secrets metadata.
spec/secrets.jsonAdd publish mechanism -> required/forbidden secret mapping used by audits/validation.
spec/readme-structure.mdAdd fleet README structure specification for audit checks.
spec/project-types.schema.jsonAdd schema for project types + cross-cutting dimensions.
spec/files.schema.jsonAdd schema for baseline file/section expectations.
spec/files.jsonAdd baseline file/section catalog for fleet standardization checks.
reports/.gitkeepKeep reports/ directory tracked.
reports/_template.mdAdd audit report template used for per-repo audit outputs.
repo-config/README.mdDocument committed repo/ruleset configuration layout and procedures.
repo-config/main.jsonProvide canonical writable subset of main branch ruleset for audit/config.
repo-config/develop.jsonProvide canonical writable subset of develop branch ruleset for audit/config.
repo-config/configure.shAdd script to apply committed rulesets to a GitHub repository via API.
registry/repos.schema.jsonAdd JSON schema for fleet registry entries.
registry/repos.jsonAdd fleet registry listing cataloged and backlog repos plus audit metadata.
PyPiLibrary/tests/test_example.pyRemove Python sample tests.
PyPiLibrary/tests/init.pyRemove Python test package marker (sample removed).
PyPiLibrary/src/ptr727_projecttemplate_library/example.pyRemove sample Python module.
PyPiLibrary/src/ptr727_projecttemplate_library/_version.pyRemove Python version stub tied to removed sample package.
PyPiLibrary/src/ptr727_projecttemplate_library/init.pyRemove sample package init.
PyPiLibrary/README.mdRemove PyPI template library documentation.
PyPiLibrary/pyproject.tomlRemove Python package project configuration.
ProjectTemplate.slnxRemove solution definition for removed .NET projects/workflow grouping.
ProjectTemplate.code-workspaceRemove VS Code workspace for removed template code layout.
NuGetLibrary/Options.csRemove sample library options type.
NuGetLibrary/NuGetLibrary.csprojRemove sample NuGet library project.
NuGetLibrary/LogOptions.csRemove sample logging options implementation.
NuGetLibrary/Library.csRemove sample library surface area.
NuGetLibrary/GlobalUsings.csRemove sample global usings.
NuGetLibrary/Extensions.csRemove sample logging extensions.
NuGetLibrary/.editorconfigRemove sample library analyzer overrides.
docs/ssh-signing.mdConvert links to reference-style; keep signing guidance consistent.
docs/host-setup.mdConvert links to reference-style; keep host setup guidance consistent.
docs/devcontainer.mdRepoint devcontainer references to catalog snippet locations; update links.
Docker/Version.shRemove sample Docker image helper script.
Docker/InstallDebugTools.shRemove sample Docker debug tooling installer script.
Docker/DockerfileRemove sample Dockerfile/build pipeline for removed code.
Docker/Build.shRemove sample Docker build script for removed code.
Directory.Packages.propsRemove centralized NuGet package versions (no longer building .NET projects here).
Directory.Build.propsRemove centralized MSBuild properties (no longer building .NET projects here).
cspell.jsonAdd repository spell-check configuration for docs/spec linting.
Console/Program.csRemove sample console app entry point.
Console/LoggerFactory.csRemove sample console logging setup.
Console/GlobalUsings.csRemove sample console global usings.
Console/Extensions.csRemove sample console extensions.
Console/Console.csprojRemove sample console project.
Console/CommandLine.csRemove sample System.CommandLine wiring.
Console/.editorconfigRemove console-only analyzer overrides.
CodeGen/Program.csRemove sample codegen program.
CodeGen/HttpClientFactory.csRemove sample resilience HTTP client factory.
CodeGen/GlobalUsings.csRemove sample codegen global usings.
CodeGen/Extensions.csRemove sample codegen logging extensions.
CodeGen/CommandLine.csRemove sample codegen CLI.
CodeGen/CodeGenBuilder.csRemove sample generator implementation.
CodeGen/CodeGen.csprojRemove sample codegen project.
CodeGen/CodeGen.csRemove sample generated output file.
CodeGen/AssemblyInfo.csRemove sample assembly info helper.
CodeGen/ApiNinjas.csRemove sample external API integration.
CodeGen/.editorconfigRemove codegen-only analyzer overrides.
catalog/snippets/workflows/run-periodic-codegen-pull-request.ymlAdd catalog snippet for scheduled codegen entry-point workflow.
catalog/snippets/workflows/run-codegen-pull-request-task.ymlAdd catalog snippet for reusable codegen+PR task workflow.
catalog/snippets/workflows/README.mdAdd mapping from workflow snippets to WORKFLOW.md guarantees.
catalog/snippets/workflows/publish-docker-readme-task.ymlAdd catalog snippet for Docker Hub README publishing task.
catalog/snippets/workflows/get-version-task.ymlAdd catalog snippet for NBGV version computation task.
catalog/snippets/workflows/check-upstream-version-task.ymlAdd catalog snippet for upstream-version tracking task.
catalog/snippets/workflows/build-pypilibrary-task.ymlAdd catalog snippet for building (not publishing) a PyPI package.
catalog/snippets/workflows/build-nugetlibrary-task.ymlAdd catalog snippet for building/publishing a NuGet library.
catalog/snippets/workflows/build-executable-task.ymlAdd catalog snippet for building an executable with a runtime matrix.
catalog/snippets/workflows/build-docker-task.ymlAdd catalog snippet for building/pushing Docker images with registry caching.
catalog/snippets/workflows/build-datebadge-task.ymlAdd catalog snippet for BYOB “last build” badge generation.
catalog/snippets/devcontainer/python/post-create.shAdd catalog snippet for pinned-uv Python devcontainer post-create script.
catalog/snippets/devcontainer/python/devcontainer.jsonAdd catalog snippet for Python devcontainer definition.
catalog/snippets/devcontainer/dotnet/post-create.shAdd catalog snippet for .NET devcontainer post-create script.
catalog/snippets/devcontainer/dotnet/devcontainer.jsonAdd catalog snippet for .NET devcontainer definition.
catalog/snippets/configs/vscode-tasks.jsonAdd catalog snippet for VS Code tasks (clean-compile + convenience tasks).
catalog/snippets/configs/docker-hub-readme.mdUpdate Docker Hub README exemplar to use reference-style links.
catalog/snippets/configs/dependabot.ymlAdd multi-ecosystem dual-target Dependabot config exemplar.
catalog/README.mdAdd catalog index for snippets and their intended use.
Benchmarks/SampleBenchmark.csRemove sample benchmarks.
Benchmarks/Program.csRemove benchmark entry point.
Benchmarks/GlobalUsings.csRemove benchmark global usings.
Benchmarks/Benchmarks.csprojRemove benchmark project.
Benchmarks/.editorconfigRemove benchmark-only analyzer overrides.
AUDIT.mdAdd authoritative audit procedure for evaluating downstream repos against this hub.
.vscode/launch.jsonRemove VS Code debug configurations tied to removed sample apps.
.github/workflows/test-pull-request.ymlConvert PR workflow to lint/spec-validation only with required aggregator.
.github/workflows/publish-release.ymlConvert release workflow to source-only GitHub releases (no build targets).
.github/dependabot.ymlReduce Dependabot to GitHub Actions ecosystem only; point to catalog exemplar for full configs.
.github/copilot-instructions.mdUpdate Copilot instructions to match governance-hub model (no template inheritance).
.dockerignoreRemove Docker ignore rules tied to removed build outputs and Docker image workflow.
.config/dotnet-tools.jsonRemove .NET local tools manifest (no longer building .NET projects here).

Comment threadspec/secrets.schema.json
Comment threadspec/validate.py
Comment threadcspell.json
Require targetMechanisms in secrets.schema.json (it was used by the validator
but not required), and have spec/validate.py report a missing mechanisms /
targetMechanisms / types key via the errors list instead of raising KeyError.
Narrow the cspell ignore to reports/*/** so the maintained reports/_template.md
is spell-checked while per-repo audit reports stay ignored.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 3 comments.

Comment threadspec/validate.py
Comment threadspec/validate.py
Comment threadrepo-config/configure.sh Outdated
Add repos.json's top-level `repos` key to validate.py's required-key check and
report an undefined target->mechanism mapping via the errors list rather than
raising KeyError. In configure.sh, fetch the ruleset list once and fail loudly
if the API call itself fails, so a failed fetch is never mistaken for "no
ruleset exists" and silently turned into a create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 2 comments.

Comment threadspec/validate.py Outdated
Comment threaddocs/devcontainer.md Outdated
…ner doc
validate.py now flags a cataloged repo with no types (an unclassified entry
would otherwise pass silently). Reframe docs/devcontainer.md: this repo ships no
toolchain and keeps the two devcontainer definitions as catalog reference, so
drop the removed *.code-workspace / PyPiLibrary references and present the SSH
signing, bind-mount, and gh-auth mechanics as reference for a repo that uses them.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 83 out of 104 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Comment thread.github/workflows/test-pull-request.yml Outdated
Pin the markdownlint-cli2, cspell, and actionlint Docker images in
test-pull-request.yml to specific digests (version in a trailing comment) so CI
is reproducible and not exposed to a floating :latest. Add *.py to the LF pins
in .editorconfig and .gitattributes so shebang scripts like spec/validate.py
cannot drift to CRLF.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
configure.sh now uses gh api --paginate for the ruleset name lookup, so a repo
with more rulesets than one page can't hide a match and cause a duplicate create.
Still fails loudly if the list call itself fails.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 4 comments.

Comment threadspec/validate.py Outdated
Comment threadspec/validate.py
Comment threadspec/validate.py Outdated
Comment threadrepo-config/configure.sh
…ript
validate.py now defensively handles every repo entry: non-object entries, a
missing status, an unknown status, and malformed publish entries all produce an
actionable error instead of a KeyError/traceback, and the summary counts guard
their field access. configure.sh takes the first ruleset when a name has
duplicates (drift) and warns rather than PUTting to a multi-id URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated 1 comment.

Comment threadrepo-config/configure.sh Outdated
Guard the duplicate-name count on non-empty ids: grep -c exits non-zero on empty
input, which under set -euo pipefail would abort the script in the common
"no ruleset yet, create it" path. Now an empty match falls through to create.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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 85 out of 106 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit e5a4a08 into developJul 5, 2026
7 checks passed
@ptr727
ptr727 deleted the feature/repurpose-audit-catalog branch July 7, 2026 21:05
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