Skip to content

Consolidate code style into one CODESTYLE.md and govern tasks - #178

Merged
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks
Jun 22, 2026
Merged

Consolidate code style into one CODESTYLE.md and govern tasks#178
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Addresses #175 and the related governance the maintainer raised while re-syncing ptr727/Utilities. Docs/config only.

Single consolidated CODESTYLE.md (#175)

PyPiLibrary/CODESTYLE.md is merged into one root CODESTYLE.md structured General → .NET → Python, each language section droppable like .editorconfig's [*.cs] boundary. This resolves#175's ambiguity: CODESTYLE.md is now a verbatim-carry artifact (added to the list in AGENTS.md + README) with load-bearing repo-root placement and clearly marked adapt-zones (project-folder list, InternalsVisibleTo names, task labels).

New General-section rules

  • Official-tooling casing.NET, CSharpier, ruff, pyright, uv (no personal variants).
  • Clean-compile verification — each language defines a named build+lint+format+analysis check, carried verbatim; run it after every edit. The task definition is the canonical command/argument spec; running the equivalent native commands is fine only if sequence, arguments, and strictness match exactly (no shortcuts/looser flags).
  • Brownfield + suppression hierarchy — a new port never licenses relaxing analyzer/linter severities or muting diagnostics. Suppress only genuine false-positives, narrowest scope first: in-code annotation on the symbol → owning project's config → root config only if generally applicable. Never #pragma, never a project-wide batch. (.NET and Python mechanics in their sections.)

tasks.json governance + casing

Renamed task labels .Net*.NET* (and launch.jsonpreLaunchTask); marked the .NET clean-compile group (​.NET Build / CSharpier Format / .NET Format) as carried-verbatim vs convenience/project-specific tasks. The .NET clean-compile is the .NET Format task (CSharpier → build → --verify-no-changes); bare dotnet format is not sufficient.

Verification

  • markdownlint-cli2 clean on all changed .md; CRLF preserved on every touched file (incl. .json).
  • tasks.json parses as JSONC and .NET FormatdependsOn resolves to the renamed labels; no stale .Net labels or PyPiLibrary/CODESTYLE.md links remain repo-wide.
  • All consolidated CODESTYLE.md internal anchors resolve.

Note: the template's .editorconfig analyzer baseline is unchanged; Utilities' local relaxations re-sync separately. Carry contract now adds CODESTYLE.md + .vscode/tasks.json and removes PyPiLibrary/CODESTYLE.md — downstream re-sync heads-ups to follow post-merge.

Surfaced re-syncing ptr727/Utilities; addresses the CODESTYLE carry-contract
gaps in #175 plus related governance the maintainer raised.
- Merge PyPiLibrary/CODESTYLE.md into a single root CODESTYLE.md structured as
General -> .NET -> Python, with each language section droppable (the
.editorconfig [*.cs] boundary model). Resolves the #175 ambiguity: CODESTYLE.md
is now a verbatim-carry artifact with marked adapt-zones (project-folder list,
InternalsVisibleTo names, task labels) and load-bearing repo-root placement.
- Add cross-cutting rules in the General section: official-tooling casing; a
per-language "clean-compile" verification (named tasks/commands, carried
verbatim, canonical command+arg spec, run after every edit, native commands OK
if they match exactly); and a suppression scope hierarchy where brownfield is
never a license to relax severities (annotation on symbol -> owning project's
config -> root only if generally applicable; never #pragma, never batch).
- Govern .vscode/tasks.json: rename labels .Net* -> .NET* (official casing),
update launch.json preLaunchTask, mark the .NET clean-compile group carried
verbatim vs convenience/project-specific tasks. The .NET clean-compile is the
.NET Format task (CSharpier -> build -> verify); bare dotnet format is not
sufficient.
- Wire the carry contract and pointers through AGENTS.md, README, and
.github/copilot-instructions.md; fold the two style-guide links into one.
Closes#175
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 15:00

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 updates the repository's governance docs/config to make CODESTYLE.md a single consolidated style guide (General + droppable .NET/Python sections), removes the now-redundant PyPiLibrary/CODESTYLE.md, and updates the derived-repo carry contract and VS Code task naming to use official .NET casing.

Changes:

  • Consolidate Python and .NET style guidance into a single repo-root CODESTYLE.md with a shared General section and droppable language sections.
  • Update carry-contract documentation (AGENTS.md, README.md, .github/copilot-instructions.md) to reference the consolidated CODESTYLE.md.
  • Rename VS Code task labels and launch preLaunchTask references from .Net* to .NET* and document task governance.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
README.mdUpdates template adoption checklist to include CODESTYLE.md and clean-compile governance.
PyPiLibrary/CODESTYLE.mdRemoves the standalone Python style guide (content moved to root CODESTYLE.md).
CODESTYLE.mdConsolidates style guidance into General + droppable .NET/Python sections and adds new governance rules.
AGENTS.mdUpdates style-guide references and expands the verbatim-carry contract to include CODESTYLE.md (and clean-compile governance).
.vscode/tasks.jsonRenames .Net* tasks to .NET* and adds governance comments for clean-compile tasks.
.vscode/launch.jsonUpdates preLaunchTask labels to .NET Build.
.github/copilot-instructions.mdUpdates style-guide pointers to reference consolidated CODESTYLE.md.
.editorconfigAdds guidance comments aligning suppressions with the new CODESTYLE suppression hierarchy.

Comment thread.vscode/tasks.json
Comment threadCODESTYLE.md Outdated
Comment threadREADME.md Outdated
Comment threadAGENTS.md Outdated
…mmands
PR #178 review:
- Add dependsOrder: sequence to the .NET Format task so CSharpier -> build run
in order, not in parallel (a race, and it contradicted the documented chain).
- Align CODESTYLE.md's native command sequence with the actual task arguments
(csharpier --log-level=debug, build --verbosity=diagnostic).
- Clarify the AGENTS.md/README carry contract: clean-compile is carried as
VS Code tasks where the template ships them (the .NET group), otherwise as the
documented commands (Python), so it no longer implies every language has tasks.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the General spelling rule said "US or UK English," which
contradicts the repo-wide US-English convention in AGENTS.md. Align to US
English and defer to AGENTS.md.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: "use via the run_task tool" named an agent-specific tool that
isn't a standard VS Code concept and isn't defined elsewhere. Point to VS Code's
task runner (Terminal -> Run Task) or an agent's task-running tool instead.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the inline native command sequence kept partially diverging
from the .vscode/tasks.json task definitions (path arg, verbosity). Point to
tasks.json as the canonical command spec and describe the chain at a high level
instead of duplicating a CLI that can drift.
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 8 out of 8 changed files in this pull request and generated no new comments.

ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Consolidate code style into one CODESTYLE.md and govern tasks by ptr727 · Pull Request #178 · ptr727/ProjectTemplate · GitHub
Skip to content

Consolidate code style into one CODESTYLE.md and govern tasks - #178

Merged
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks
Jun 22, 2026
Merged

Consolidate code style into one CODESTYLE.md and govern tasks#178
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Addresses #175 and the related governance the maintainer raised while re-syncing ptr727/Utilities. Docs/config only.

Single consolidated CODESTYLE.md (#175)

PyPiLibrary/CODESTYLE.md is merged into one root CODESTYLE.md structured General → .NET → Python, each language section droppable like .editorconfig's [*.cs] boundary. This resolves#175's ambiguity: CODESTYLE.md is now a verbatim-carry artifact (added to the list in AGENTS.md + README) with load-bearing repo-root placement and clearly marked adapt-zones (project-folder list, InternalsVisibleTo names, task labels).

New General-section rules

  • Official-tooling casing.NET, CSharpier, ruff, pyright, uv (no personal variants).
  • Clean-compile verification — each language defines a named build+lint+format+analysis check, carried verbatim; run it after every edit. The task definition is the canonical command/argument spec; running the equivalent native commands is fine only if sequence, arguments, and strictness match exactly (no shortcuts/looser flags).
  • Brownfield + suppression hierarchy — a new port never licenses relaxing analyzer/linter severities or muting diagnostics. Suppress only genuine false-positives, narrowest scope first: in-code annotation on the symbol → owning project's config → root config only if generally applicable. Never #pragma, never a project-wide batch. (.NET and Python mechanics in their sections.)

tasks.json governance + casing

Renamed task labels .Net*.NET* (and launch.jsonpreLaunchTask); marked the .NET clean-compile group (​.NET Build / CSharpier Format / .NET Format) as carried-verbatim vs convenience/project-specific tasks. The .NET clean-compile is the .NET Format task (CSharpier → build → --verify-no-changes); bare dotnet format is not sufficient.

Verification

  • markdownlint-cli2 clean on all changed .md; CRLF preserved on every touched file (incl. .json).
  • tasks.json parses as JSONC and .NET FormatdependsOn resolves to the renamed labels; no stale .Net labels or PyPiLibrary/CODESTYLE.md links remain repo-wide.
  • All consolidated CODESTYLE.md internal anchors resolve.

Note: the template's .editorconfig analyzer baseline is unchanged; Utilities' local relaxations re-sync separately. Carry contract now adds CODESTYLE.md + .vscode/tasks.json and removes PyPiLibrary/CODESTYLE.md — downstream re-sync heads-ups to follow post-merge.

Surfaced re-syncing ptr727/Utilities; addresses the CODESTYLE carry-contract
gaps in #175 plus related governance the maintainer raised.
- Merge PyPiLibrary/CODESTYLE.md into a single root CODESTYLE.md structured as
General -> .NET -> Python, with each language section droppable (the
.editorconfig [*.cs] boundary model). Resolves the #175 ambiguity: CODESTYLE.md
is now a verbatim-carry artifact with marked adapt-zones (project-folder list,
InternalsVisibleTo names, task labels) and load-bearing repo-root placement.
- Add cross-cutting rules in the General section: official-tooling casing; a
per-language "clean-compile" verification (named tasks/commands, carried
verbatim, canonical command+arg spec, run after every edit, native commands OK
if they match exactly); and a suppression scope hierarchy where brownfield is
never a license to relax severities (annotation on symbol -> owning project's
config -> root only if generally applicable; never #pragma, never batch).
- Govern .vscode/tasks.json: rename labels .Net* -> .NET* (official casing),
update launch.json preLaunchTask, mark the .NET clean-compile group carried
verbatim vs convenience/project-specific tasks. The .NET clean-compile is the
.NET Format task (CSharpier -> build -> verify); bare dotnet format is not
sufficient.
- Wire the carry contract and pointers through AGENTS.md, README, and
.github/copilot-instructions.md; fold the two style-guide links into one.
Closes#175
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 15:00

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 updates the repository's governance docs/config to make CODESTYLE.md a single consolidated style guide (General + droppable .NET/Python sections), removes the now-redundant PyPiLibrary/CODESTYLE.md, and updates the derived-repo carry contract and VS Code task naming to use official .NET casing.

Changes:

  • Consolidate Python and .NET style guidance into a single repo-root CODESTYLE.md with a shared General section and droppable language sections.
  • Update carry-contract documentation (AGENTS.md, README.md, .github/copilot-instructions.md) to reference the consolidated CODESTYLE.md.
  • Rename VS Code task labels and launch preLaunchTask references from .Net* to .NET* and document task governance.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
README.mdUpdates template adoption checklist to include CODESTYLE.md and clean-compile governance.
PyPiLibrary/CODESTYLE.mdRemoves the standalone Python style guide (content moved to root CODESTYLE.md).
CODESTYLE.mdConsolidates style guidance into General + droppable .NET/Python sections and adds new governance rules.
AGENTS.mdUpdates style-guide references and expands the verbatim-carry contract to include CODESTYLE.md (and clean-compile governance).
.vscode/tasks.jsonRenames .Net* tasks to .NET* and adds governance comments for clean-compile tasks.
.vscode/launch.jsonUpdates preLaunchTask labels to .NET Build.
.github/copilot-instructions.mdUpdates style-guide pointers to reference consolidated CODESTYLE.md.
.editorconfigAdds guidance comments aligning suppressions with the new CODESTYLE suppression hierarchy.

Comment thread.vscode/tasks.json
Comment threadCODESTYLE.md Outdated
Comment threadREADME.md Outdated
Comment threadAGENTS.md Outdated
…mmands
PR #178 review:
- Add dependsOrder: sequence to the .NET Format task so CSharpier -> build run
in order, not in parallel (a race, and it contradicted the documented chain).
- Align CODESTYLE.md's native command sequence with the actual task arguments
(csharpier --log-level=debug, build --verbosity=diagnostic).
- Clarify the AGENTS.md/README carry contract: clean-compile is carried as
VS Code tasks where the template ships them (the .NET group), otherwise as the
documented commands (Python), so it no longer implies every language has tasks.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the General spelling rule said "US or UK English," which
contradicts the repo-wide US-English convention in AGENTS.md. Align to US
English and defer to AGENTS.md.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: "use via the run_task tool" named an agent-specific tool that
isn't a standard VS Code concept and isn't defined elsewhere. Point to VS Code's
task runner (Terminal -> Run Task) or an agent's task-running tool instead.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the inline native command sequence kept partially diverging
from the .vscode/tasks.json task definitions (path arg, verbosity). Point to
tasks.json as the canonical command spec and describe the chain at a high level
instead of duplicating a CLI that can drift.
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 8 out of 8 changed files in this pull request and generated no new comments.

ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Consolidate code style into one CODESTYLE.md and govern tasks by ptr727 · Pull Request #178 · ptr727/ProjectTemplate · GitHub
Skip to content

Consolidate code style into one CODESTYLE.md and govern tasks - #178

Merged
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks
Jun 22, 2026
Merged

Consolidate code style into one CODESTYLE.md and govern tasks#178
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Addresses #175 and the related governance the maintainer raised while re-syncing ptr727/Utilities. Docs/config only.

Single consolidated CODESTYLE.md (#175)

PyPiLibrary/CODESTYLE.md is merged into one root CODESTYLE.md structured General → .NET → Python, each language section droppable like .editorconfig's [*.cs] boundary. This resolves#175's ambiguity: CODESTYLE.md is now a verbatim-carry artifact (added to the list in AGENTS.md + README) with load-bearing repo-root placement and clearly marked adapt-zones (project-folder list, InternalsVisibleTo names, task labels).

New General-section rules

  • Official-tooling casing.NET, CSharpier, ruff, pyright, uv (no personal variants).
  • Clean-compile verification — each language defines a named build+lint+format+analysis check, carried verbatim; run it after every edit. The task definition is the canonical command/argument spec; running the equivalent native commands is fine only if sequence, arguments, and strictness match exactly (no shortcuts/looser flags).
  • Brownfield + suppression hierarchy — a new port never licenses relaxing analyzer/linter severities or muting diagnostics. Suppress only genuine false-positives, narrowest scope first: in-code annotation on the symbol → owning project's config → root config only if generally applicable. Never #pragma, never a project-wide batch. (.NET and Python mechanics in their sections.)

tasks.json governance + casing

Renamed task labels .Net*.NET* (and launch.jsonpreLaunchTask); marked the .NET clean-compile group (​.NET Build / CSharpier Format / .NET Format) as carried-verbatim vs convenience/project-specific tasks. The .NET clean-compile is the .NET Format task (CSharpier → build → --verify-no-changes); bare dotnet format is not sufficient.

Verification

  • markdownlint-cli2 clean on all changed .md; CRLF preserved on every touched file (incl. .json).
  • tasks.json parses as JSONC and .NET FormatdependsOn resolves to the renamed labels; no stale .Net labels or PyPiLibrary/CODESTYLE.md links remain repo-wide.
  • All consolidated CODESTYLE.md internal anchors resolve.

Note: the template's .editorconfig analyzer baseline is unchanged; Utilities' local relaxations re-sync separately. Carry contract now adds CODESTYLE.md + .vscode/tasks.json and removes PyPiLibrary/CODESTYLE.md — downstream re-sync heads-ups to follow post-merge.

Surfaced re-syncing ptr727/Utilities; addresses the CODESTYLE carry-contract
gaps in #175 plus related governance the maintainer raised.
- Merge PyPiLibrary/CODESTYLE.md into a single root CODESTYLE.md structured as
General -> .NET -> Python, with each language section droppable (the
.editorconfig [*.cs] boundary model). Resolves the #175 ambiguity: CODESTYLE.md
is now a verbatim-carry artifact with marked adapt-zones (project-folder list,
InternalsVisibleTo names, task labels) and load-bearing repo-root placement.
- Add cross-cutting rules in the General section: official-tooling casing; a
per-language "clean-compile" verification (named tasks/commands, carried
verbatim, canonical command+arg spec, run after every edit, native commands OK
if they match exactly); and a suppression scope hierarchy where brownfield is
never a license to relax severities (annotation on symbol -> owning project's
config -> root only if generally applicable; never #pragma, never batch).
- Govern .vscode/tasks.json: rename labels .Net* -> .NET* (official casing),
update launch.json preLaunchTask, mark the .NET clean-compile group carried
verbatim vs convenience/project-specific tasks. The .NET clean-compile is the
.NET Format task (CSharpier -> build -> verify); bare dotnet format is not
sufficient.
- Wire the carry contract and pointers through AGENTS.md, README, and
.github/copilot-instructions.md; fold the two style-guide links into one.
Closes#175
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 15:00

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 updates the repository's governance docs/config to make CODESTYLE.md a single consolidated style guide (General + droppable .NET/Python sections), removes the now-redundant PyPiLibrary/CODESTYLE.md, and updates the derived-repo carry contract and VS Code task naming to use official .NET casing.

Changes:

  • Consolidate Python and .NET style guidance into a single repo-root CODESTYLE.md with a shared General section and droppable language sections.
  • Update carry-contract documentation (AGENTS.md, README.md, .github/copilot-instructions.md) to reference the consolidated CODESTYLE.md.
  • Rename VS Code task labels and launch preLaunchTask references from .Net* to .NET* and document task governance.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
README.mdUpdates template adoption checklist to include CODESTYLE.md and clean-compile governance.
PyPiLibrary/CODESTYLE.mdRemoves the standalone Python style guide (content moved to root CODESTYLE.md).
CODESTYLE.mdConsolidates style guidance into General + droppable .NET/Python sections and adds new governance rules.
AGENTS.mdUpdates style-guide references and expands the verbatim-carry contract to include CODESTYLE.md (and clean-compile governance).
.vscode/tasks.jsonRenames .Net* tasks to .NET* and adds governance comments for clean-compile tasks.
.vscode/launch.jsonUpdates preLaunchTask labels to .NET Build.
.github/copilot-instructions.mdUpdates style-guide pointers to reference consolidated CODESTYLE.md.
.editorconfigAdds guidance comments aligning suppressions with the new CODESTYLE suppression hierarchy.

Comment thread.vscode/tasks.json
Comment threadCODESTYLE.md Outdated
Comment threadREADME.md Outdated
Comment threadAGENTS.md Outdated
…mmands
PR #178 review:
- Add dependsOrder: sequence to the .NET Format task so CSharpier -> build run
in order, not in parallel (a race, and it contradicted the documented chain).
- Align CODESTYLE.md's native command sequence with the actual task arguments
(csharpier --log-level=debug, build --verbosity=diagnostic).
- Clarify the AGENTS.md/README carry contract: clean-compile is carried as
VS Code tasks where the template ships them (the .NET group), otherwise as the
documented commands (Python), so it no longer implies every language has tasks.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the General spelling rule said "US or UK English," which
contradicts the repo-wide US-English convention in AGENTS.md. Align to US
English and defer to AGENTS.md.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: "use via the run_task tool" named an agent-specific tool that
isn't a standard VS Code concept and isn't defined elsewhere. Point to VS Code's
task runner (Terminal -> Run Task) or an agent's task-running tool instead.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the inline native command sequence kept partially diverging
from the .vscode/tasks.json task definitions (path arg, verbosity). Point to
tasks.json as the canonical command spec and describe the chain at a high level
instead of duplicating a CLI that can drift.
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 8 out of 8 changed files in this pull request and generated no new comments.

ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Consolidate code style into one CODESTYLE.md and govern tasks by ptr727 · Pull Request #178 · ptr727/ProjectTemplate · GitHub
Skip to content

Consolidate code style into one CODESTYLE.md and govern tasks - #178

Merged
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks
Jun 22, 2026
Merged

Consolidate code style into one CODESTYLE.md and govern tasks#178
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Addresses #175 and the related governance the maintainer raised while re-syncing ptr727/Utilities. Docs/config only.

Single consolidated CODESTYLE.md (#175)

PyPiLibrary/CODESTYLE.md is merged into one root CODESTYLE.md structured General → .NET → Python, each language section droppable like .editorconfig's [*.cs] boundary. This resolves#175's ambiguity: CODESTYLE.md is now a verbatim-carry artifact (added to the list in AGENTS.md + README) with load-bearing repo-root placement and clearly marked adapt-zones (project-folder list, InternalsVisibleTo names, task labels).

New General-section rules

  • Official-tooling casing.NET, CSharpier, ruff, pyright, uv (no personal variants).
  • Clean-compile verification — each language defines a named build+lint+format+analysis check, carried verbatim; run it after every edit. The task definition is the canonical command/argument spec; running the equivalent native commands is fine only if sequence, arguments, and strictness match exactly (no shortcuts/looser flags).
  • Brownfield + suppression hierarchy — a new port never licenses relaxing analyzer/linter severities or muting diagnostics. Suppress only genuine false-positives, narrowest scope first: in-code annotation on the symbol → owning project's config → root config only if generally applicable. Never #pragma, never a project-wide batch. (.NET and Python mechanics in their sections.)

tasks.json governance + casing

Renamed task labels .Net*.NET* (and launch.jsonpreLaunchTask); marked the .NET clean-compile group (​.NET Build / CSharpier Format / .NET Format) as carried-verbatim vs convenience/project-specific tasks. The .NET clean-compile is the .NET Format task (CSharpier → build → --verify-no-changes); bare dotnet format is not sufficient.

Verification

  • markdownlint-cli2 clean on all changed .md; CRLF preserved on every touched file (incl. .json).
  • tasks.json parses as JSONC and .NET FormatdependsOn resolves to the renamed labels; no stale .Net labels or PyPiLibrary/CODESTYLE.md links remain repo-wide.
  • All consolidated CODESTYLE.md internal anchors resolve.

Note: the template's .editorconfig analyzer baseline is unchanged; Utilities' local relaxations re-sync separately. Carry contract now adds CODESTYLE.md + .vscode/tasks.json and removes PyPiLibrary/CODESTYLE.md — downstream re-sync heads-ups to follow post-merge.

Surfaced re-syncing ptr727/Utilities; addresses the CODESTYLE carry-contract
gaps in #175 plus related governance the maintainer raised.
- Merge PyPiLibrary/CODESTYLE.md into a single root CODESTYLE.md structured as
General -> .NET -> Python, with each language section droppable (the
.editorconfig [*.cs] boundary model). Resolves the #175 ambiguity: CODESTYLE.md
is now a verbatim-carry artifact with marked adapt-zones (project-folder list,
InternalsVisibleTo names, task labels) and load-bearing repo-root placement.
- Add cross-cutting rules in the General section: official-tooling casing; a
per-language "clean-compile" verification (named tasks/commands, carried
verbatim, canonical command+arg spec, run after every edit, native commands OK
if they match exactly); and a suppression scope hierarchy where brownfield is
never a license to relax severities (annotation on symbol -> owning project's
config -> root only if generally applicable; never #pragma, never batch).
- Govern .vscode/tasks.json: rename labels .Net* -> .NET* (official casing),
update launch.json preLaunchTask, mark the .NET clean-compile group carried
verbatim vs convenience/project-specific tasks. The .NET clean-compile is the
.NET Format task (CSharpier -> build -> verify); bare dotnet format is not
sufficient.
- Wire the carry contract and pointers through AGENTS.md, README, and
.github/copilot-instructions.md; fold the two style-guide links into one.
Closes#175
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 15:00

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 updates the repository's governance docs/config to make CODESTYLE.md a single consolidated style guide (General + droppable .NET/Python sections), removes the now-redundant PyPiLibrary/CODESTYLE.md, and updates the derived-repo carry contract and VS Code task naming to use official .NET casing.

Changes:

  • Consolidate Python and .NET style guidance into a single repo-root CODESTYLE.md with a shared General section and droppable language sections.
  • Update carry-contract documentation (AGENTS.md, README.md, .github/copilot-instructions.md) to reference the consolidated CODESTYLE.md.
  • Rename VS Code task labels and launch preLaunchTask references from .Net* to .NET* and document task governance.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
README.mdUpdates template adoption checklist to include CODESTYLE.md and clean-compile governance.
PyPiLibrary/CODESTYLE.mdRemoves the standalone Python style guide (content moved to root CODESTYLE.md).
CODESTYLE.mdConsolidates style guidance into General + droppable .NET/Python sections and adds new governance rules.
AGENTS.mdUpdates style-guide references and expands the verbatim-carry contract to include CODESTYLE.md (and clean-compile governance).
.vscode/tasks.jsonRenames .Net* tasks to .NET* and adds governance comments for clean-compile tasks.
.vscode/launch.jsonUpdates preLaunchTask labels to .NET Build.
.github/copilot-instructions.mdUpdates style-guide pointers to reference consolidated CODESTYLE.md.
.editorconfigAdds guidance comments aligning suppressions with the new CODESTYLE suppression hierarchy.

Comment thread.vscode/tasks.json
Comment threadCODESTYLE.md Outdated
Comment threadREADME.md Outdated
Comment threadAGENTS.md Outdated
…mmands
PR #178 review:
- Add dependsOrder: sequence to the .NET Format task so CSharpier -> build run
in order, not in parallel (a race, and it contradicted the documented chain).
- Align CODESTYLE.md's native command sequence with the actual task arguments
(csharpier --log-level=debug, build --verbosity=diagnostic).
- Clarify the AGENTS.md/README carry contract: clean-compile is carried as
VS Code tasks where the template ships them (the .NET group), otherwise as the
documented commands (Python), so it no longer implies every language has tasks.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the General spelling rule said "US or UK English," which
contradicts the repo-wide US-English convention in AGENTS.md. Align to US
English and defer to AGENTS.md.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: "use via the run_task tool" named an agent-specific tool that
isn't a standard VS Code concept and isn't defined elsewhere. Point to VS Code's
task runner (Terminal -> Run Task) or an agent's task-running tool instead.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the inline native command sequence kept partially diverging
from the .vscode/tasks.json task definitions (path arg, verbosity). Point to
tasks.json as the canonical command spec and describe the chain at a high level
instead of duplicating a CLI that can drift.
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 8 out of 8 changed files in this pull request and generated no new comments.

ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Consolidate code style into one CODESTYLE.md and govern tasks by ptr727 · Pull Request #178 · ptr727/ProjectTemplate · GitHub
Skip to content

Consolidate code style into one CODESTYLE.md and govern tasks - #178

Merged
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks
Jun 22, 2026
Merged

Consolidate code style into one CODESTYLE.md and govern tasks#178
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Addresses #175 and the related governance the maintainer raised while re-syncing ptr727/Utilities. Docs/config only.

Single consolidated CODESTYLE.md (#175)

PyPiLibrary/CODESTYLE.md is merged into one root CODESTYLE.md structured General → .NET → Python, each language section droppable like .editorconfig's [*.cs] boundary. This resolves#175's ambiguity: CODESTYLE.md is now a verbatim-carry artifact (added to the list in AGENTS.md + README) with load-bearing repo-root placement and clearly marked adapt-zones (project-folder list, InternalsVisibleTo names, task labels).

New General-section rules

  • Official-tooling casing.NET, CSharpier, ruff, pyright, uv (no personal variants).
  • Clean-compile verification — each language defines a named build+lint+format+analysis check, carried verbatim; run it after every edit. The task definition is the canonical command/argument spec; running the equivalent native commands is fine only if sequence, arguments, and strictness match exactly (no shortcuts/looser flags).
  • Brownfield + suppression hierarchy — a new port never licenses relaxing analyzer/linter severities or muting diagnostics. Suppress only genuine false-positives, narrowest scope first: in-code annotation on the symbol → owning project's config → root config only if generally applicable. Never #pragma, never a project-wide batch. (.NET and Python mechanics in their sections.)

tasks.json governance + casing

Renamed task labels .Net*.NET* (and launch.jsonpreLaunchTask); marked the .NET clean-compile group (​.NET Build / CSharpier Format / .NET Format) as carried-verbatim vs convenience/project-specific tasks. The .NET clean-compile is the .NET Format task (CSharpier → build → --verify-no-changes); bare dotnet format is not sufficient.

Verification

  • markdownlint-cli2 clean on all changed .md; CRLF preserved on every touched file (incl. .json).
  • tasks.json parses as JSONC and .NET FormatdependsOn resolves to the renamed labels; no stale .Net labels or PyPiLibrary/CODESTYLE.md links remain repo-wide.
  • All consolidated CODESTYLE.md internal anchors resolve.

Note: the template's .editorconfig analyzer baseline is unchanged; Utilities' local relaxations re-sync separately. Carry contract now adds CODESTYLE.md + .vscode/tasks.json and removes PyPiLibrary/CODESTYLE.md — downstream re-sync heads-ups to follow post-merge.

Surfaced re-syncing ptr727/Utilities; addresses the CODESTYLE carry-contract
gaps in #175 plus related governance the maintainer raised.
- Merge PyPiLibrary/CODESTYLE.md into a single root CODESTYLE.md structured as
General -> .NET -> Python, with each language section droppable (the
.editorconfig [*.cs] boundary model). Resolves the #175 ambiguity: CODESTYLE.md
is now a verbatim-carry artifact with marked adapt-zones (project-folder list,
InternalsVisibleTo names, task labels) and load-bearing repo-root placement.
- Add cross-cutting rules in the General section: official-tooling casing; a
per-language "clean-compile" verification (named tasks/commands, carried
verbatim, canonical command+arg spec, run after every edit, native commands OK
if they match exactly); and a suppression scope hierarchy where brownfield is
never a license to relax severities (annotation on symbol -> owning project's
config -> root only if generally applicable; never #pragma, never batch).
- Govern .vscode/tasks.json: rename labels .Net* -> .NET* (official casing),
update launch.json preLaunchTask, mark the .NET clean-compile group carried
verbatim vs convenience/project-specific tasks. The .NET clean-compile is the
.NET Format task (CSharpier -> build -> verify); bare dotnet format is not
sufficient.
- Wire the carry contract and pointers through AGENTS.md, README, and
.github/copilot-instructions.md; fold the two style-guide links into one.
Closes#175
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 15:00

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 updates the repository's governance docs/config to make CODESTYLE.md a single consolidated style guide (General + droppable .NET/Python sections), removes the now-redundant PyPiLibrary/CODESTYLE.md, and updates the derived-repo carry contract and VS Code task naming to use official .NET casing.

Changes:

  • Consolidate Python and .NET style guidance into a single repo-root CODESTYLE.md with a shared General section and droppable language sections.
  • Update carry-contract documentation (AGENTS.md, README.md, .github/copilot-instructions.md) to reference the consolidated CODESTYLE.md.
  • Rename VS Code task labels and launch preLaunchTask references from .Net* to .NET* and document task governance.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
README.mdUpdates template adoption checklist to include CODESTYLE.md and clean-compile governance.
PyPiLibrary/CODESTYLE.mdRemoves the standalone Python style guide (content moved to root CODESTYLE.md).
CODESTYLE.mdConsolidates style guidance into General + droppable .NET/Python sections and adds new governance rules.
AGENTS.mdUpdates style-guide references and expands the verbatim-carry contract to include CODESTYLE.md (and clean-compile governance).
.vscode/tasks.jsonRenames .Net* tasks to .NET* and adds governance comments for clean-compile tasks.
.vscode/launch.jsonUpdates preLaunchTask labels to .NET Build.
.github/copilot-instructions.mdUpdates style-guide pointers to reference consolidated CODESTYLE.md.
.editorconfigAdds guidance comments aligning suppressions with the new CODESTYLE suppression hierarchy.

Comment thread.vscode/tasks.json
Comment threadCODESTYLE.md Outdated
Comment threadREADME.md Outdated
Comment threadAGENTS.md Outdated
…mmands
PR #178 review:
- Add dependsOrder: sequence to the .NET Format task so CSharpier -> build run
in order, not in parallel (a race, and it contradicted the documented chain).
- Align CODESTYLE.md's native command sequence with the actual task arguments
(csharpier --log-level=debug, build --verbosity=diagnostic).
- Clarify the AGENTS.md/README carry contract: clean-compile is carried as
VS Code tasks where the template ships them (the .NET group), otherwise as the
documented commands (Python), so it no longer implies every language has tasks.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the General spelling rule said "US or UK English," which
contradicts the repo-wide US-English convention in AGENTS.md. Align to US
English and defer to AGENTS.md.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: "use via the run_task tool" named an agent-specific tool that
isn't a standard VS Code concept and isn't defined elsewhere. Point to VS Code's
task runner (Terminal -> Run Task) or an agent's task-running tool instead.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the inline native command sequence kept partially diverging
from the .vscode/tasks.json task definitions (path arg, verbosity). Point to
tasks.json as the canonical command spec and describe the chain at a high level
instead of duplicating a CLI that can drift.
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 8 out of 8 changed files in this pull request and generated no new comments.

ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Consolidate code style into one CODESTYLE.md and govern tasks by ptr727 · Pull Request #178 · ptr727/ProjectTemplate · GitHub
Skip to content

Consolidate code style into one CODESTYLE.md and govern tasks - #178

Merged
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks
Jun 22, 2026
Merged

Consolidate code style into one CODESTYLE.md and govern tasks#178
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Addresses #175 and the related governance the maintainer raised while re-syncing ptr727/Utilities. Docs/config only.

Single consolidated CODESTYLE.md (#175)

PyPiLibrary/CODESTYLE.md is merged into one root CODESTYLE.md structured General → .NET → Python, each language section droppable like .editorconfig's [*.cs] boundary. This resolves#175's ambiguity: CODESTYLE.md is now a verbatim-carry artifact (added to the list in AGENTS.md + README) with load-bearing repo-root placement and clearly marked adapt-zones (project-folder list, InternalsVisibleTo names, task labels).

New General-section rules

  • Official-tooling casing.NET, CSharpier, ruff, pyright, uv (no personal variants).
  • Clean-compile verification — each language defines a named build+lint+format+analysis check, carried verbatim; run it after every edit. The task definition is the canonical command/argument spec; running the equivalent native commands is fine only if sequence, arguments, and strictness match exactly (no shortcuts/looser flags).
  • Brownfield + suppression hierarchy — a new port never licenses relaxing analyzer/linter severities or muting diagnostics. Suppress only genuine false-positives, narrowest scope first: in-code annotation on the symbol → owning project's config → root config only if generally applicable. Never #pragma, never a project-wide batch. (.NET and Python mechanics in their sections.)

tasks.json governance + casing

Renamed task labels .Net*.NET* (and launch.jsonpreLaunchTask); marked the .NET clean-compile group (​.NET Build / CSharpier Format / .NET Format) as carried-verbatim vs convenience/project-specific tasks. The .NET clean-compile is the .NET Format task (CSharpier → build → --verify-no-changes); bare dotnet format is not sufficient.

Verification

  • markdownlint-cli2 clean on all changed .md; CRLF preserved on every touched file (incl. .json).
  • tasks.json parses as JSONC and .NET FormatdependsOn resolves to the renamed labels; no stale .Net labels or PyPiLibrary/CODESTYLE.md links remain repo-wide.
  • All consolidated CODESTYLE.md internal anchors resolve.

Note: the template's .editorconfig analyzer baseline is unchanged; Utilities' local relaxations re-sync separately. Carry contract now adds CODESTYLE.md + .vscode/tasks.json and removes PyPiLibrary/CODESTYLE.md — downstream re-sync heads-ups to follow post-merge.

Surfaced re-syncing ptr727/Utilities; addresses the CODESTYLE carry-contract
gaps in #175 plus related governance the maintainer raised.
- Merge PyPiLibrary/CODESTYLE.md into a single root CODESTYLE.md structured as
General -> .NET -> Python, with each language section droppable (the
.editorconfig [*.cs] boundary model). Resolves the #175 ambiguity: CODESTYLE.md
is now a verbatim-carry artifact with marked adapt-zones (project-folder list,
InternalsVisibleTo names, task labels) and load-bearing repo-root placement.
- Add cross-cutting rules in the General section: official-tooling casing; a
per-language "clean-compile" verification (named tasks/commands, carried
verbatim, canonical command+arg spec, run after every edit, native commands OK
if they match exactly); and a suppression scope hierarchy where brownfield is
never a license to relax severities (annotation on symbol -> owning project's
config -> root only if generally applicable; never #pragma, never batch).
- Govern .vscode/tasks.json: rename labels .Net* -> .NET* (official casing),
update launch.json preLaunchTask, mark the .NET clean-compile group carried
verbatim vs convenience/project-specific tasks. The .NET clean-compile is the
.NET Format task (CSharpier -> build -> verify); bare dotnet format is not
sufficient.
- Wire the carry contract and pointers through AGENTS.md, README, and
.github/copilot-instructions.md; fold the two style-guide links into one.
Closes#175
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 15:00

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 updates the repository's governance docs/config to make CODESTYLE.md a single consolidated style guide (General + droppable .NET/Python sections), removes the now-redundant PyPiLibrary/CODESTYLE.md, and updates the derived-repo carry contract and VS Code task naming to use official .NET casing.

Changes:

  • Consolidate Python and .NET style guidance into a single repo-root CODESTYLE.md with a shared General section and droppable language sections.
  • Update carry-contract documentation (AGENTS.md, README.md, .github/copilot-instructions.md) to reference the consolidated CODESTYLE.md.
  • Rename VS Code task labels and launch preLaunchTask references from .Net* to .NET* and document task governance.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
README.mdUpdates template adoption checklist to include CODESTYLE.md and clean-compile governance.
PyPiLibrary/CODESTYLE.mdRemoves the standalone Python style guide (content moved to root CODESTYLE.md).
CODESTYLE.mdConsolidates style guidance into General + droppable .NET/Python sections and adds new governance rules.
AGENTS.mdUpdates style-guide references and expands the verbatim-carry contract to include CODESTYLE.md (and clean-compile governance).
.vscode/tasks.jsonRenames .Net* tasks to .NET* and adds governance comments for clean-compile tasks.
.vscode/launch.jsonUpdates preLaunchTask labels to .NET Build.
.github/copilot-instructions.mdUpdates style-guide pointers to reference consolidated CODESTYLE.md.
.editorconfigAdds guidance comments aligning suppressions with the new CODESTYLE suppression hierarchy.

Comment thread.vscode/tasks.json
Comment threadCODESTYLE.md Outdated
Comment threadREADME.md Outdated
Comment threadAGENTS.md Outdated
…mmands
PR #178 review:
- Add dependsOrder: sequence to the .NET Format task so CSharpier -> build run
in order, not in parallel (a race, and it contradicted the documented chain).
- Align CODESTYLE.md's native command sequence with the actual task arguments
(csharpier --log-level=debug, build --verbosity=diagnostic).
- Clarify the AGENTS.md/README carry contract: clean-compile is carried as
VS Code tasks where the template ships them (the .NET group), otherwise as the
documented commands (Python), so it no longer implies every language has tasks.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the General spelling rule said "US or UK English," which
contradicts the repo-wide US-English convention in AGENTS.md. Align to US
English and defer to AGENTS.md.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: "use via the run_task tool" named an agent-specific tool that
isn't a standard VS Code concept and isn't defined elsewhere. Point to VS Code's
task runner (Terminal -> Run Task) or an agent's task-running tool instead.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the inline native command sequence kept partially diverging
from the .vscode/tasks.json task definitions (path arg, verbosity). Point to
tasks.json as the canonical command spec and describe the chain at a high level
instead of duplicating a CLI that can drift.
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 8 out of 8 changed files in this pull request and generated no new comments.

ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Consolidate code style into one CODESTYLE.md and govern tasks by ptr727 · Pull Request #178 · ptr727/ProjectTemplate · GitHub
Skip to content

Consolidate code style into one CODESTYLE.md and govern tasks - #178

Merged
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks
Jun 22, 2026
Merged

Consolidate code style into one CODESTYLE.md and govern tasks#178
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Addresses #175 and the related governance the maintainer raised while re-syncing ptr727/Utilities. Docs/config only.

Single consolidated CODESTYLE.md (#175)

PyPiLibrary/CODESTYLE.md is merged into one root CODESTYLE.md structured General → .NET → Python, each language section droppable like .editorconfig's [*.cs] boundary. This resolves#175's ambiguity: CODESTYLE.md is now a verbatim-carry artifact (added to the list in AGENTS.md + README) with load-bearing repo-root placement and clearly marked adapt-zones (project-folder list, InternalsVisibleTo names, task labels).

New General-section rules

  • Official-tooling casing.NET, CSharpier, ruff, pyright, uv (no personal variants).
  • Clean-compile verification — each language defines a named build+lint+format+analysis check, carried verbatim; run it after every edit. The task definition is the canonical command/argument spec; running the equivalent native commands is fine only if sequence, arguments, and strictness match exactly (no shortcuts/looser flags).
  • Brownfield + suppression hierarchy — a new port never licenses relaxing analyzer/linter severities or muting diagnostics. Suppress only genuine false-positives, narrowest scope first: in-code annotation on the symbol → owning project's config → root config only if generally applicable. Never #pragma, never a project-wide batch. (.NET and Python mechanics in their sections.)

tasks.json governance + casing

Renamed task labels .Net*.NET* (and launch.jsonpreLaunchTask); marked the .NET clean-compile group (​.NET Build / CSharpier Format / .NET Format) as carried-verbatim vs convenience/project-specific tasks. The .NET clean-compile is the .NET Format task (CSharpier → build → --verify-no-changes); bare dotnet format is not sufficient.

Verification

  • markdownlint-cli2 clean on all changed .md; CRLF preserved on every touched file (incl. .json).
  • tasks.json parses as JSONC and .NET FormatdependsOn resolves to the renamed labels; no stale .Net labels or PyPiLibrary/CODESTYLE.md links remain repo-wide.
  • All consolidated CODESTYLE.md internal anchors resolve.

Note: the template's .editorconfig analyzer baseline is unchanged; Utilities' local relaxations re-sync separately. Carry contract now adds CODESTYLE.md + .vscode/tasks.json and removes PyPiLibrary/CODESTYLE.md — downstream re-sync heads-ups to follow post-merge.

Surfaced re-syncing ptr727/Utilities; addresses the CODESTYLE carry-contract
gaps in #175 plus related governance the maintainer raised.
- Merge PyPiLibrary/CODESTYLE.md into a single root CODESTYLE.md structured as
General -> .NET -> Python, with each language section droppable (the
.editorconfig [*.cs] boundary model). Resolves the #175 ambiguity: CODESTYLE.md
is now a verbatim-carry artifact with marked adapt-zones (project-folder list,
InternalsVisibleTo names, task labels) and load-bearing repo-root placement.
- Add cross-cutting rules in the General section: official-tooling casing; a
per-language "clean-compile" verification (named tasks/commands, carried
verbatim, canonical command+arg spec, run after every edit, native commands OK
if they match exactly); and a suppression scope hierarchy where brownfield is
never a license to relax severities (annotation on symbol -> owning project's
config -> root only if generally applicable; never #pragma, never batch).
- Govern .vscode/tasks.json: rename labels .Net* -> .NET* (official casing),
update launch.json preLaunchTask, mark the .NET clean-compile group carried
verbatim vs convenience/project-specific tasks. The .NET clean-compile is the
.NET Format task (CSharpier -> build -> verify); bare dotnet format is not
sufficient.
- Wire the carry contract and pointers through AGENTS.md, README, and
.github/copilot-instructions.md; fold the two style-guide links into one.
Closes#175
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 15:00

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 updates the repository's governance docs/config to make CODESTYLE.md a single consolidated style guide (General + droppable .NET/Python sections), removes the now-redundant PyPiLibrary/CODESTYLE.md, and updates the derived-repo carry contract and VS Code task naming to use official .NET casing.

Changes:

  • Consolidate Python and .NET style guidance into a single repo-root CODESTYLE.md with a shared General section and droppable language sections.
  • Update carry-contract documentation (AGENTS.md, README.md, .github/copilot-instructions.md) to reference the consolidated CODESTYLE.md.
  • Rename VS Code task labels and launch preLaunchTask references from .Net* to .NET* and document task governance.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
README.mdUpdates template adoption checklist to include CODESTYLE.md and clean-compile governance.
PyPiLibrary/CODESTYLE.mdRemoves the standalone Python style guide (content moved to root CODESTYLE.md).
CODESTYLE.mdConsolidates style guidance into General + droppable .NET/Python sections and adds new governance rules.
AGENTS.mdUpdates style-guide references and expands the verbatim-carry contract to include CODESTYLE.md (and clean-compile governance).
.vscode/tasks.jsonRenames .Net* tasks to .NET* and adds governance comments for clean-compile tasks.
.vscode/launch.jsonUpdates preLaunchTask labels to .NET Build.
.github/copilot-instructions.mdUpdates style-guide pointers to reference consolidated CODESTYLE.md.
.editorconfigAdds guidance comments aligning suppressions with the new CODESTYLE suppression hierarchy.

Comment thread.vscode/tasks.json
Comment threadCODESTYLE.md Outdated
Comment threadREADME.md Outdated
Comment threadAGENTS.md Outdated
…mmands
PR #178 review:
- Add dependsOrder: sequence to the .NET Format task so CSharpier -> build run
in order, not in parallel (a race, and it contradicted the documented chain).
- Align CODESTYLE.md's native command sequence with the actual task arguments
(csharpier --log-level=debug, build --verbosity=diagnostic).
- Clarify the AGENTS.md/README carry contract: clean-compile is carried as
VS Code tasks where the template ships them (the .NET group), otherwise as the
documented commands (Python), so it no longer implies every language has tasks.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the General spelling rule said "US or UK English," which
contradicts the repo-wide US-English convention in AGENTS.md. Align to US
English and defer to AGENTS.md.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: "use via the run_task tool" named an agent-specific tool that
isn't a standard VS Code concept and isn't defined elsewhere. Point to VS Code's
task runner (Terminal -> Run Task) or an agent's task-running tool instead.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the inline native command sequence kept partially diverging
from the .vscode/tasks.json task definitions (path arg, verbosity). Point to
tasks.json as the canonical command spec and describe the chain at a high level
instead of duplicating a CLI that can drift.
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 8 out of 8 changed files in this pull request and generated no new comments.

ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Consolidate code style into one CODESTYLE.md and govern tasks by ptr727 · Pull Request #178 · ptr727/ProjectTemplate · GitHub
Skip to content

Consolidate code style into one CODESTYLE.md and govern tasks - #178

Merged
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks
Jun 22, 2026
Merged

Consolidate code style into one CODESTYLE.md and govern tasks#178
ptr727 merged 5 commits into
developfrom
consolidate-codestyle-govern-tasks

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Addresses #175 and the related governance the maintainer raised while re-syncing ptr727/Utilities. Docs/config only.

Single consolidated CODESTYLE.md (#175)

PyPiLibrary/CODESTYLE.md is merged into one root CODESTYLE.md structured General → .NET → Python, each language section droppable like .editorconfig's [*.cs] boundary. This resolves#175's ambiguity: CODESTYLE.md is now a verbatim-carry artifact (added to the list in AGENTS.md + README) with load-bearing repo-root placement and clearly marked adapt-zones (project-folder list, InternalsVisibleTo names, task labels).

New General-section rules

  • Official-tooling casing.NET, CSharpier, ruff, pyright, uv (no personal variants).
  • Clean-compile verification — each language defines a named build+lint+format+analysis check, carried verbatim; run it after every edit. The task definition is the canonical command/argument spec; running the equivalent native commands is fine only if sequence, arguments, and strictness match exactly (no shortcuts/looser flags).
  • Brownfield + suppression hierarchy — a new port never licenses relaxing analyzer/linter severities or muting diagnostics. Suppress only genuine false-positives, narrowest scope first: in-code annotation on the symbol → owning project's config → root config only if generally applicable. Never #pragma, never a project-wide batch. (.NET and Python mechanics in their sections.)

tasks.json governance + casing

Renamed task labels .Net*.NET* (and launch.jsonpreLaunchTask); marked the .NET clean-compile group (​.NET Build / CSharpier Format / .NET Format) as carried-verbatim vs convenience/project-specific tasks. The .NET clean-compile is the .NET Format task (CSharpier → build → --verify-no-changes); bare dotnet format is not sufficient.

Verification

  • markdownlint-cli2 clean on all changed .md; CRLF preserved on every touched file (incl. .json).
  • tasks.json parses as JSONC and .NET FormatdependsOn resolves to the renamed labels; no stale .Net labels or PyPiLibrary/CODESTYLE.md links remain repo-wide.
  • All consolidated CODESTYLE.md internal anchors resolve.

Note: the template's .editorconfig analyzer baseline is unchanged; Utilities' local relaxations re-sync separately. Carry contract now adds CODESTYLE.md + .vscode/tasks.json and removes PyPiLibrary/CODESTYLE.md — downstream re-sync heads-ups to follow post-merge.

Surfaced re-syncing ptr727/Utilities; addresses the CODESTYLE carry-contract
gaps in #175 plus related governance the maintainer raised.
- Merge PyPiLibrary/CODESTYLE.md into a single root CODESTYLE.md structured as
General -> .NET -> Python, with each language section droppable (the
.editorconfig [*.cs] boundary model). Resolves the #175 ambiguity: CODESTYLE.md
is now a verbatim-carry artifact with marked adapt-zones (project-folder list,
InternalsVisibleTo names, task labels) and load-bearing repo-root placement.
- Add cross-cutting rules in the General section: official-tooling casing; a
per-language "clean-compile" verification (named tasks/commands, carried
verbatim, canonical command+arg spec, run after every edit, native commands OK
if they match exactly); and a suppression scope hierarchy where brownfield is
never a license to relax severities (annotation on symbol -> owning project's
config -> root only if generally applicable; never #pragma, never batch).
- Govern .vscode/tasks.json: rename labels .Net* -> .NET* (official casing),
update launch.json preLaunchTask, mark the .NET clean-compile group carried
verbatim vs convenience/project-specific tasks. The .NET clean-compile is the
.NET Format task (CSharpier -> build -> verify); bare dotnet format is not
sufficient.
- Wire the carry contract and pointers through AGENTS.md, README, and
.github/copilot-instructions.md; fold the two style-guide links into one.
Closes#175
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 15:00

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 updates the repository's governance docs/config to make CODESTYLE.md a single consolidated style guide (General + droppable .NET/Python sections), removes the now-redundant PyPiLibrary/CODESTYLE.md, and updates the derived-repo carry contract and VS Code task naming to use official .NET casing.

Changes:

  • Consolidate Python and .NET style guidance into a single repo-root CODESTYLE.md with a shared General section and droppable language sections.
  • Update carry-contract documentation (AGENTS.md, README.md, .github/copilot-instructions.md) to reference the consolidated CODESTYLE.md.
  • Rename VS Code task labels and launch preLaunchTask references from .Net* to .NET* and document task governance.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
README.mdUpdates template adoption checklist to include CODESTYLE.md and clean-compile governance.
PyPiLibrary/CODESTYLE.mdRemoves the standalone Python style guide (content moved to root CODESTYLE.md).
CODESTYLE.mdConsolidates style guidance into General + droppable .NET/Python sections and adds new governance rules.
AGENTS.mdUpdates style-guide references and expands the verbatim-carry contract to include CODESTYLE.md (and clean-compile governance).
.vscode/tasks.jsonRenames .Net* tasks to .NET* and adds governance comments for clean-compile tasks.
.vscode/launch.jsonUpdates preLaunchTask labels to .NET Build.
.github/copilot-instructions.mdUpdates style-guide pointers to reference consolidated CODESTYLE.md.
.editorconfigAdds guidance comments aligning suppressions with the new CODESTYLE suppression hierarchy.

Comment thread.vscode/tasks.json
Comment threadCODESTYLE.md Outdated
Comment threadREADME.md Outdated
Comment threadAGENTS.md Outdated
…mmands
PR #178 review:
- Add dependsOrder: sequence to the .NET Format task so CSharpier -> build run
in order, not in parallel (a race, and it contradicted the documented chain).
- Align CODESTYLE.md's native command sequence with the actual task arguments
(csharpier --log-level=debug, build --verbosity=diagnostic).
- Clarify the AGENTS.md/README carry contract: clean-compile is carried as
VS Code tasks where the template ships them (the .NET group), otherwise as the
documented commands (Python), so it no longer implies every language has tasks.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the General spelling rule said "US or UK English," which
contradicts the repo-wide US-English convention in AGENTS.md. Align to US
English and defer to AGENTS.md.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: "use via the run_task tool" named an agent-specific tool that
isn't a standard VS Code concept and isn't defined elsewhere. Point to VS Code's
task runner (Terminal -> Run Task) or an agent's task-running tool instead.
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 8 out of 8 changed files in this pull request and generated 1 comment.

Comment threadCODESTYLE.md Outdated
PR #178 review: the inline native command sequence kept partially diverging
from the .vscode/tasks.json task definitions (path arg, verbosity). Point to
tasks.json as the canonical command spec and describe the chain at a high level
instead of duplicating a CLI that can drift.
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 8 out of 8 changed files in this pull request and generated no new comments.

ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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