Skip to content

Resummarize template docs and trim workflow comments - #167

Merged
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues
Jun 21, 2026
Merged

Resummarize template docs and trim workflow comments#167
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Acts on the issues surfaced while porting ESPHome-NonRoot to the template (#157-#164), plus the comment/doc cleanup and CI-storage feedback.

Docs

  • New Comments house-rule in AGENTS.md (concise, current-state, no cross-project references, no rule citations, match ~120-col) - applied throughout.
  • copilot-instructions.md resummarized: dropped the duplicated PR-title block and historic narrative, kept the Copilot review runbook mechanics.
  • Bless trailing-backslash hard line breaks (Markdown convention: bless trailing-backslash hard line breaks #164); clarify the cross-repo boundary (the template hub keeps the consistency/fan-out/Known-Downstream rules, derived repos never name siblings); simplify the version.json bump rule; document the HISTORY.md + README release-notes and CODESTYLE-aggregate patterns.

Workflow comments (#162)

  • Trimmed ~300 comment lines across .github/workflows/*. Only comments changed (no logic), CRLF endings and action SHA-pins preserved.

Doc-clarification issues

New reusable tasks

CI storage

  • retention-days: 1 on all intermediate build artifacts (was 90-day default); documented the artifact-retention and registry-cache (type=registry, not type=gha) conventions.

README

  • Added a Deferred Patterns backlog (unit-test factoring, per-language test scaffolds).

Verified: actionlint clean, markdownlint clean, all touched .yml/.md CRLF, all actions SHA-pinned.

Act on the issues surfaced porting ESPHome-NonRoot to the template, plus
the comment/doc cleanup feedback.
Docs:
- Add a Comments house-rule (concise, current-state, no cross-project
references, no rule citations, match ~120-col) and apply it.
- Trim ~300 comment lines across .github/workflows/*; only comments
changed (no logic), CRLF and SHA-pins preserved.
- Resummarize copilot-instructions.md (drop duplicated PR-title block,
historic narrative) keeping the Copilot runbook mechanics.
- Bless trailing-backslash hard line breaks; clarify the cross-repo
boundary (hub keeps the registry/fan-out rules, derived repos never
name siblings); simplify the version.json rule; document HISTORY.md +
CODESTYLE aggregate patterns.
Workflows and CI:
- Mark the .editorconfig C# block .NET-only; note first-time
.gitattributes normalization.
- Rewrite the brownfield re-sign procedure (filter-branch + committer
rewrite, ruleset ordering, API verification, cleanup); clarify the
maintainer-only force-push is restricted as a destructive operation,
not a signing concern.
- Ship publish-docker-readme-task.yml + Docker/README.md, wired into
publish-release.yml.
- Ship check-upstream-version-task.yml + merge-bot wiring for wrapper
repos that track an upstream release.
- Set retention-days: 1 on intermediate build artifacts and document the
artifact-retention and registry-cache storage conventions.
Add a Deferred Patterns backlog to the README.
CopilotAI review requested due to automatic review settings June 21, 2026 15:12

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 ProjectTemplate documentation and GitHub Actions workflows to reflect lessons learned during downstream porting, focusing on clearer template/derived-repo boundaries, more concise current-state comments, and new reusable scaffolding for common downstream patterns.

Changes:

  • Refines core docs (AGENTS.md, README.md, copilot instructions) to add a comments house rule, clarify markdown hard-break conventions, and document derived-repo carry/ownership boundaries.
  • Trims and modernizes workflow comments across CI/release/codegen/merge-bot workflows without intended behavior changes, and documents CI artifact-retention/cache conventions.
  • Adds reusable workflows and docs for Docker Hub README publishing and upstream-version tracking (wrapper-repo pattern), plus wiring in publish/merge automation.

Reviewed changes

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

Show a summary per file
FileDescription
README.mdAdds a deferred-patterns section and clarifies derived-repo adoption guidance (incl. .gitattributes normalization).
DotNet.code-workspaceUpdates workspace spellcheck/word allowlist.
Docker/README.mdAdds a Docker Hub repository overview README for the published image.
AGENTS.mdAdds comments house rules; clarifies test-pull-request ownership boundaries; documents artifact retention/cache guidance; adds wrapper-repo upstream-version tracker pattern.
.github/workflows/test-pull-request.ymlTrims/reshapes explanatory comments and clarifies unit-test job ownership for non-.NET repos.
.github/workflows/run-periodic-codegen-pull-request.ymlTrims schedule/concurrency commentary.
.github/workflows/run-codegen-pull-request-task.ymlTrims/modernizes comments; preserves codegen mechanics.
.github/workflows/publish-release.ymlTrims comments and wires in Docker Hub README publishing task.
.github/workflows/publish-docker-readme-task.ymlNew reusable task to push Docker/README.md to Docker Hub.
.github/workflows/merge-bot-pull-request.ymlAdds auto-merge support for upstream-version bump PRs; trims header commentary.
.github/workflows/get-version-task.ymlTrims commentary around inputs/outputs and nbgv pin rationale.
.github/workflows/check-upstream-version-task.ymlNew reusable task for wrapper repos to track upstream versions and open rolling bump PRs.
.github/workflows/build-release-task.ymlTrims and clarifies comments for orchestration/build seam and publishing invariants.
.github/workflows/build-pypilibrary-task.ymlTrims comments and sets short retention on build artifacts.
.github/workflows/build-nugetlibrary-task.ymlTrims comments and sets short retention on release-asset artifacts.
.github/workflows/build-executable-task.ymlTrims comments and sets short retention on intermediate/release artifacts.
.github/workflows/build-docker-task.ymlTrims comments (no intended logic changes) and clarifies cache/login rationale.
.github/copilot-instructions.mdResummarizes/condenses the Copilot instructions while keeping the runbook mechanics.
.editorconfigMarks the C# style block as .NET-only and clarifies the always-verbatim EOL governance block.

Comment thread.github/workflows/publish-docker-readme-task.yml
Comment thread.github/workflows/check-upstream-version-task.yml
Comment threadDocker/README.md Outdated
Comment thread.github/workflows/get-version-task.yml
- Pin the docker-readme checkout to inputs.branch so the main leg always
publishes main's readme regardless of the triggering ref.
- Clarify that bump-branch-prefix must match the merge-bot's hard-coded
upstream-version-<base> head refs or auto-merge won't fire.
- Document that Docker immutable tags are NBGV SemVer2, including develop
prerelease tags, not only X.Y.Z.

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

Comment thread.github/workflows/check-upstream-version-task.yml
Comment thread.github/workflows/publish-docker-readme-task.yml
@ptr727
ptr727 merged commit 212d8a8 into developJun 21, 2026
15 checks passed
@ptr727
ptr727 deleted the template-cleanup-porting-issues branch June 21, 2026 16:52
This was referenced Jun 21, 2026
ptr727 added a commit that referenced this pull request Jun 21, 2026
Closes#168.
Raised by `ptr727/ESPHome-NonRoot` while re-syncing from #167: the
canonical `check-upstream-version-task.yml` serialized only a single
bare-string version, so a wrapper pinning **several** upstream
components (ESPHome-NonRoot pins both `esphome` and the device-builder)
could not converge on it and kept a bespoke tracker.
## Change
- **Structured state file.** The resolver now prints a **JSON object of
`name -> version`**; the task normalizes it (sorted keys, pretty) and
writes it as the canonical state file. One key for the common
single-version case (`{"version":"X"}`) or N keys for a multi-component
wrapper, each read by the build by key. This also makes the
`upstream-version.json` extension honest.
- **Changed-key summary.** The bump PR title/body are diffed against the
prior state and name **only the keys that actually moved**. The trivial
single-`version` case still renders `Update upstream version to X`;
multi-key renders `Update upstream versions: esphome to 2026.7.0` plus a
per-component body list.
- **Robustness.** Missing/corrupt state diffs cleanly against an empty
object (first run works); a resolver that prints non-object output fails
with a clear contract message; an unchanged object yields no diff so
create-pull-request opens nothing.
- **Docs.** `AGENTS.md` wrapper-repo description updated to the JSON
`name -> version` contract.
- **Workspace.** Swapped `gruntfuggly.todo-tree` for
`fanaticpythoner.better-todo-tree` in `DotNet.code-workspace` (bundled
per request).
The merge-bot keys only on branch refs (`upstream-version-<base>`), so
it needs no change.
## Validation
Ran the resolve/compose logic locally across single-key first-run,
multi-key first-run, partial move (one of two changed), no-change (empty
diff → no PR), and malformed output (rejected). YAML validated.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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" + '
Resummarize template docs and trim workflow comments by ptr727 · Pull Request #167 · ptr727/ProjectTemplate · GitHub
Skip to content

Resummarize template docs and trim workflow comments - #167

Merged
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues
Jun 21, 2026
Merged

Resummarize template docs and trim workflow comments#167
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Acts on the issues surfaced while porting ESPHome-NonRoot to the template (#157-#164), plus the comment/doc cleanup and CI-storage feedback.

Docs

  • New Comments house-rule in AGENTS.md (concise, current-state, no cross-project references, no rule citations, match ~120-col) - applied throughout.
  • copilot-instructions.md resummarized: dropped the duplicated PR-title block and historic narrative, kept the Copilot review runbook mechanics.
  • Bless trailing-backslash hard line breaks (Markdown convention: bless trailing-backslash hard line breaks #164); clarify the cross-repo boundary (the template hub keeps the consistency/fan-out/Known-Downstream rules, derived repos never name siblings); simplify the version.json bump rule; document the HISTORY.md + README release-notes and CODESTYLE-aggregate patterns.

Workflow comments (#162)

  • Trimmed ~300 comment lines across .github/workflows/*. Only comments changed (no logic), CRLF endings and action SHA-pins preserved.

Doc-clarification issues

New reusable tasks

CI storage

  • retention-days: 1 on all intermediate build artifacts (was 90-day default); documented the artifact-retention and registry-cache (type=registry, not type=gha) conventions.

README

  • Added a Deferred Patterns backlog (unit-test factoring, per-language test scaffolds).

Verified: actionlint clean, markdownlint clean, all touched .yml/.md CRLF, all actions SHA-pinned.

Act on the issues surfaced porting ESPHome-NonRoot to the template, plus
the comment/doc cleanup feedback.
Docs:
- Add a Comments house-rule (concise, current-state, no cross-project
references, no rule citations, match ~120-col) and apply it.
- Trim ~300 comment lines across .github/workflows/*; only comments
changed (no logic), CRLF and SHA-pins preserved.
- Resummarize copilot-instructions.md (drop duplicated PR-title block,
historic narrative) keeping the Copilot runbook mechanics.
- Bless trailing-backslash hard line breaks; clarify the cross-repo
boundary (hub keeps the registry/fan-out rules, derived repos never
name siblings); simplify the version.json rule; document HISTORY.md +
CODESTYLE aggregate patterns.
Workflows and CI:
- Mark the .editorconfig C# block .NET-only; note first-time
.gitattributes normalization.
- Rewrite the brownfield re-sign procedure (filter-branch + committer
rewrite, ruleset ordering, API verification, cleanup); clarify the
maintainer-only force-push is restricted as a destructive operation,
not a signing concern.
- Ship publish-docker-readme-task.yml + Docker/README.md, wired into
publish-release.yml.
- Ship check-upstream-version-task.yml + merge-bot wiring for wrapper
repos that track an upstream release.
- Set retention-days: 1 on intermediate build artifacts and document the
artifact-retention and registry-cache storage conventions.
Add a Deferred Patterns backlog to the README.
CopilotAI review requested due to automatic review settings June 21, 2026 15:12

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 ProjectTemplate documentation and GitHub Actions workflows to reflect lessons learned during downstream porting, focusing on clearer template/derived-repo boundaries, more concise current-state comments, and new reusable scaffolding for common downstream patterns.

Changes:

  • Refines core docs (AGENTS.md, README.md, copilot instructions) to add a comments house rule, clarify markdown hard-break conventions, and document derived-repo carry/ownership boundaries.
  • Trims and modernizes workflow comments across CI/release/codegen/merge-bot workflows without intended behavior changes, and documents CI artifact-retention/cache conventions.
  • Adds reusable workflows and docs for Docker Hub README publishing and upstream-version tracking (wrapper-repo pattern), plus wiring in publish/merge automation.

Reviewed changes

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

Show a summary per file
FileDescription
README.mdAdds a deferred-patterns section and clarifies derived-repo adoption guidance (incl. .gitattributes normalization).
DotNet.code-workspaceUpdates workspace spellcheck/word allowlist.
Docker/README.mdAdds a Docker Hub repository overview README for the published image.
AGENTS.mdAdds comments house rules; clarifies test-pull-request ownership boundaries; documents artifact retention/cache guidance; adds wrapper-repo upstream-version tracker pattern.
.github/workflows/test-pull-request.ymlTrims/reshapes explanatory comments and clarifies unit-test job ownership for non-.NET repos.
.github/workflows/run-periodic-codegen-pull-request.ymlTrims schedule/concurrency commentary.
.github/workflows/run-codegen-pull-request-task.ymlTrims/modernizes comments; preserves codegen mechanics.
.github/workflows/publish-release.ymlTrims comments and wires in Docker Hub README publishing task.
.github/workflows/publish-docker-readme-task.ymlNew reusable task to push Docker/README.md to Docker Hub.
.github/workflows/merge-bot-pull-request.ymlAdds auto-merge support for upstream-version bump PRs; trims header commentary.
.github/workflows/get-version-task.ymlTrims commentary around inputs/outputs and nbgv pin rationale.
.github/workflows/check-upstream-version-task.ymlNew reusable task for wrapper repos to track upstream versions and open rolling bump PRs.
.github/workflows/build-release-task.ymlTrims and clarifies comments for orchestration/build seam and publishing invariants.
.github/workflows/build-pypilibrary-task.ymlTrims comments and sets short retention on build artifacts.
.github/workflows/build-nugetlibrary-task.ymlTrims comments and sets short retention on release-asset artifacts.
.github/workflows/build-executable-task.ymlTrims comments and sets short retention on intermediate/release artifacts.
.github/workflows/build-docker-task.ymlTrims comments (no intended logic changes) and clarifies cache/login rationale.
.github/copilot-instructions.mdResummarizes/condenses the Copilot instructions while keeping the runbook mechanics.
.editorconfigMarks the C# style block as .NET-only and clarifies the always-verbatim EOL governance block.

Comment thread.github/workflows/publish-docker-readme-task.yml
Comment thread.github/workflows/check-upstream-version-task.yml
Comment threadDocker/README.md Outdated
Comment thread.github/workflows/get-version-task.yml
- Pin the docker-readme checkout to inputs.branch so the main leg always
publishes main's readme regardless of the triggering ref.
- Clarify that bump-branch-prefix must match the merge-bot's hard-coded
upstream-version-<base> head refs or auto-merge won't fire.
- Document that Docker immutable tags are NBGV SemVer2, including develop
prerelease tags, not only X.Y.Z.

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

Comment thread.github/workflows/check-upstream-version-task.yml
Comment thread.github/workflows/publish-docker-readme-task.yml
@ptr727
ptr727 merged commit 212d8a8 into developJun 21, 2026
15 checks passed
@ptr727
ptr727 deleted the template-cleanup-porting-issues branch June 21, 2026 16:52
This was referenced Jun 21, 2026
ptr727 added a commit that referenced this pull request Jun 21, 2026
Closes#168.
Raised by `ptr727/ESPHome-NonRoot` while re-syncing from #167: the
canonical `check-upstream-version-task.yml` serialized only a single
bare-string version, so a wrapper pinning **several** upstream
components (ESPHome-NonRoot pins both `esphome` and the device-builder)
could not converge on it and kept a bespoke tracker.
## Change
- **Structured state file.** The resolver now prints a **JSON object of
`name -> version`**; the task normalizes it (sorted keys, pretty) and
writes it as the canonical state file. One key for the common
single-version case (`{"version":"X"}`) or N keys for a multi-component
wrapper, each read by the build by key. This also makes the
`upstream-version.json` extension honest.
- **Changed-key summary.** The bump PR title/body are diffed against the
prior state and name **only the keys that actually moved**. The trivial
single-`version` case still renders `Update upstream version to X`;
multi-key renders `Update upstream versions: esphome to 2026.7.0` plus a
per-component body list.
- **Robustness.** Missing/corrupt state diffs cleanly against an empty
object (first run works); a resolver that prints non-object output fails
with a clear contract message; an unchanged object yields no diff so
create-pull-request opens nothing.
- **Docs.** `AGENTS.md` wrapper-repo description updated to the JSON
`name -> version` contract.
- **Workspace.** Swapped `gruntfuggly.todo-tree` for
`fanaticpythoner.better-todo-tree` in `DotNet.code-workspace` (bundled
per request).
The merge-bot keys only on branch refs (`upstream-version-<base>`), so
it needs no change.
## Validation
Ran the resolve/compose logic locally across single-key first-run,
multi-key first-run, partial move (one of two changed), no-change (empty
diff → no PR), and malformed output (rejected). YAML validated.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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('^' + ".*" + ' Resummarize template docs and trim workflow comments by ptr727 · Pull Request #167 · ptr727/ProjectTemplate · GitHub
Skip to content

Resummarize template docs and trim workflow comments - #167

Merged
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues
Jun 21, 2026
Merged

Resummarize template docs and trim workflow comments#167
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Acts on the issues surfaced while porting ESPHome-NonRoot to the template (#157-#164), plus the comment/doc cleanup and CI-storage feedback.

Docs

  • New Comments house-rule in AGENTS.md (concise, current-state, no cross-project references, no rule citations, match ~120-col) - applied throughout.
  • copilot-instructions.md resummarized: dropped the duplicated PR-title block and historic narrative, kept the Copilot review runbook mechanics.
  • Bless trailing-backslash hard line breaks (Markdown convention: bless trailing-backslash hard line breaks #164); clarify the cross-repo boundary (the template hub keeps the consistency/fan-out/Known-Downstream rules, derived repos never name siblings); simplify the version.json bump rule; document the HISTORY.md + README release-notes and CODESTYLE-aggregate patterns.

Workflow comments (#162)

  • Trimmed ~300 comment lines across .github/workflows/*. Only comments changed (no logic), CRLF endings and action SHA-pins preserved.

Doc-clarification issues

New reusable tasks

CI storage

  • retention-days: 1 on all intermediate build artifacts (was 90-day default); documented the artifact-retention and registry-cache (type=registry, not type=gha) conventions.

README

  • Added a Deferred Patterns backlog (unit-test factoring, per-language test scaffolds).

Verified: actionlint clean, markdownlint clean, all touched .yml/.md CRLF, all actions SHA-pinned.

Act on the issues surfaced porting ESPHome-NonRoot to the template, plus
the comment/doc cleanup feedback.
Docs:
- Add a Comments house-rule (concise, current-state, no cross-project
references, no rule citations, match ~120-col) and apply it.
- Trim ~300 comment lines across .github/workflows/*; only comments
changed (no logic), CRLF and SHA-pins preserved.
- Resummarize copilot-instructions.md (drop duplicated PR-title block,
historic narrative) keeping the Copilot runbook mechanics.
- Bless trailing-backslash hard line breaks; clarify the cross-repo
boundary (hub keeps the registry/fan-out rules, derived repos never
name siblings); simplify the version.json rule; document HISTORY.md +
CODESTYLE aggregate patterns.
Workflows and CI:
- Mark the .editorconfig C# block .NET-only; note first-time
.gitattributes normalization.
- Rewrite the brownfield re-sign procedure (filter-branch + committer
rewrite, ruleset ordering, API verification, cleanup); clarify the
maintainer-only force-push is restricted as a destructive operation,
not a signing concern.
- Ship publish-docker-readme-task.yml + Docker/README.md, wired into
publish-release.yml.
- Ship check-upstream-version-task.yml + merge-bot wiring for wrapper
repos that track an upstream release.
- Set retention-days: 1 on intermediate build artifacts and document the
artifact-retention and registry-cache storage conventions.
Add a Deferred Patterns backlog to the README.
CopilotAI review requested due to automatic review settings June 21, 2026 15:12

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 ProjectTemplate documentation and GitHub Actions workflows to reflect lessons learned during downstream porting, focusing on clearer template/derived-repo boundaries, more concise current-state comments, and new reusable scaffolding for common downstream patterns.

Changes:

  • Refines core docs (AGENTS.md, README.md, copilot instructions) to add a comments house rule, clarify markdown hard-break conventions, and document derived-repo carry/ownership boundaries.
  • Trims and modernizes workflow comments across CI/release/codegen/merge-bot workflows without intended behavior changes, and documents CI artifact-retention/cache conventions.
  • Adds reusable workflows and docs for Docker Hub README publishing and upstream-version tracking (wrapper-repo pattern), plus wiring in publish/merge automation.

Reviewed changes

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

Show a summary per file
FileDescription
README.mdAdds a deferred-patterns section and clarifies derived-repo adoption guidance (incl. .gitattributes normalization).
DotNet.code-workspaceUpdates workspace spellcheck/word allowlist.
Docker/README.mdAdds a Docker Hub repository overview README for the published image.
AGENTS.mdAdds comments house rules; clarifies test-pull-request ownership boundaries; documents artifact retention/cache guidance; adds wrapper-repo upstream-version tracker pattern.
.github/workflows/test-pull-request.ymlTrims/reshapes explanatory comments and clarifies unit-test job ownership for non-.NET repos.
.github/workflows/run-periodic-codegen-pull-request.ymlTrims schedule/concurrency commentary.
.github/workflows/run-codegen-pull-request-task.ymlTrims/modernizes comments; preserves codegen mechanics.
.github/workflows/publish-release.ymlTrims comments and wires in Docker Hub README publishing task.
.github/workflows/publish-docker-readme-task.ymlNew reusable task to push Docker/README.md to Docker Hub.
.github/workflows/merge-bot-pull-request.ymlAdds auto-merge support for upstream-version bump PRs; trims header commentary.
.github/workflows/get-version-task.ymlTrims commentary around inputs/outputs and nbgv pin rationale.
.github/workflows/check-upstream-version-task.ymlNew reusable task for wrapper repos to track upstream versions and open rolling bump PRs.
.github/workflows/build-release-task.ymlTrims and clarifies comments for orchestration/build seam and publishing invariants.
.github/workflows/build-pypilibrary-task.ymlTrims comments and sets short retention on build artifacts.
.github/workflows/build-nugetlibrary-task.ymlTrims comments and sets short retention on release-asset artifacts.
.github/workflows/build-executable-task.ymlTrims comments and sets short retention on intermediate/release artifacts.
.github/workflows/build-docker-task.ymlTrims comments (no intended logic changes) and clarifies cache/login rationale.
.github/copilot-instructions.mdResummarizes/condenses the Copilot instructions while keeping the runbook mechanics.
.editorconfigMarks the C# style block as .NET-only and clarifies the always-verbatim EOL governance block.

Comment thread.github/workflows/publish-docker-readme-task.yml
Comment thread.github/workflows/check-upstream-version-task.yml
Comment threadDocker/README.md Outdated
Comment thread.github/workflows/get-version-task.yml
- Pin the docker-readme checkout to inputs.branch so the main leg always
publishes main's readme regardless of the triggering ref.
- Clarify that bump-branch-prefix must match the merge-bot's hard-coded
upstream-version-<base> head refs or auto-merge won't fire.
- Document that Docker immutable tags are NBGV SemVer2, including develop
prerelease tags, not only X.Y.Z.

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

Comment thread.github/workflows/check-upstream-version-task.yml
Comment thread.github/workflows/publish-docker-readme-task.yml
@ptr727
ptr727 merged commit 212d8a8 into developJun 21, 2026
15 checks passed
@ptr727
ptr727 deleted the template-cleanup-porting-issues branch June 21, 2026 16:52
This was referenced Jun 21, 2026
ptr727 added a commit that referenced this pull request Jun 21, 2026
Closes#168.
Raised by `ptr727/ESPHome-NonRoot` while re-syncing from #167: the
canonical `check-upstream-version-task.yml` serialized only a single
bare-string version, so a wrapper pinning **several** upstream
components (ESPHome-NonRoot pins both `esphome` and the device-builder)
could not converge on it and kept a bespoke tracker.
## Change
- **Structured state file.** The resolver now prints a **JSON object of
`name -> version`**; the task normalizes it (sorted keys, pretty) and
writes it as the canonical state file. One key for the common
single-version case (`{"version":"X"}`) or N keys for a multi-component
wrapper, each read by the build by key. This also makes the
`upstream-version.json` extension honest.
- **Changed-key summary.** The bump PR title/body are diffed against the
prior state and name **only the keys that actually moved**. The trivial
single-`version` case still renders `Update upstream version to X`;
multi-key renders `Update upstream versions: esphome to 2026.7.0` plus a
per-component body list.
- **Robustness.** Missing/corrupt state diffs cleanly against an empty
object (first run works); a resolver that prints non-object output fails
with a clear contract message; an unchanged object yields no diff so
create-pull-request opens nothing.
- **Docs.** `AGENTS.md` wrapper-repo description updated to the JSON
`name -> version` contract.
- **Workspace.** Swapped `gruntfuggly.todo-tree` for
`fanaticpythoner.better-todo-tree` in `DotNet.code-workspace` (bundled
per request).
The merge-bot keys only on branch refs (`upstream-version-<base>`), so
it needs no change.
## Validation
Ran the resolve/compose logic locally across single-key first-run,
multi-key first-run, partial move (one of two changed), no-change (empty
diff → no PR), and malformed output (rejected). YAML validated.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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('^' + ".*" + ' Resummarize template docs and trim workflow comments by ptr727 · Pull Request #167 · ptr727/ProjectTemplate · GitHub
Skip to content

Resummarize template docs and trim workflow comments - #167

Merged
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues
Jun 21, 2026
Merged

Resummarize template docs and trim workflow comments#167
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Acts on the issues surfaced while porting ESPHome-NonRoot to the template (#157-#164), plus the comment/doc cleanup and CI-storage feedback.

Docs

  • New Comments house-rule in AGENTS.md (concise, current-state, no cross-project references, no rule citations, match ~120-col) - applied throughout.
  • copilot-instructions.md resummarized: dropped the duplicated PR-title block and historic narrative, kept the Copilot review runbook mechanics.
  • Bless trailing-backslash hard line breaks (Markdown convention: bless trailing-backslash hard line breaks #164); clarify the cross-repo boundary (the template hub keeps the consistency/fan-out/Known-Downstream rules, derived repos never name siblings); simplify the version.json bump rule; document the HISTORY.md + README release-notes and CODESTYLE-aggregate patterns.

Workflow comments (#162)

  • Trimmed ~300 comment lines across .github/workflows/*. Only comments changed (no logic), CRLF endings and action SHA-pins preserved.

Doc-clarification issues

New reusable tasks

CI storage

  • retention-days: 1 on all intermediate build artifacts (was 90-day default); documented the artifact-retention and registry-cache (type=registry, not type=gha) conventions.

README

  • Added a Deferred Patterns backlog (unit-test factoring, per-language test scaffolds).

Verified: actionlint clean, markdownlint clean, all touched .yml/.md CRLF, all actions SHA-pinned.

Act on the issues surfaced porting ESPHome-NonRoot to the template, plus
the comment/doc cleanup feedback.
Docs:
- Add a Comments house-rule (concise, current-state, no cross-project
references, no rule citations, match ~120-col) and apply it.
- Trim ~300 comment lines across .github/workflows/*; only comments
changed (no logic), CRLF and SHA-pins preserved.
- Resummarize copilot-instructions.md (drop duplicated PR-title block,
historic narrative) keeping the Copilot runbook mechanics.
- Bless trailing-backslash hard line breaks; clarify the cross-repo
boundary (hub keeps the registry/fan-out rules, derived repos never
name siblings); simplify the version.json rule; document HISTORY.md +
CODESTYLE aggregate patterns.
Workflows and CI:
- Mark the .editorconfig C# block .NET-only; note first-time
.gitattributes normalization.
- Rewrite the brownfield re-sign procedure (filter-branch + committer
rewrite, ruleset ordering, API verification, cleanup); clarify the
maintainer-only force-push is restricted as a destructive operation,
not a signing concern.
- Ship publish-docker-readme-task.yml + Docker/README.md, wired into
publish-release.yml.
- Ship check-upstream-version-task.yml + merge-bot wiring for wrapper
repos that track an upstream release.
- Set retention-days: 1 on intermediate build artifacts and document the
artifact-retention and registry-cache storage conventions.
Add a Deferred Patterns backlog to the README.
CopilotAI review requested due to automatic review settings June 21, 2026 15:12

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 ProjectTemplate documentation and GitHub Actions workflows to reflect lessons learned during downstream porting, focusing on clearer template/derived-repo boundaries, more concise current-state comments, and new reusable scaffolding for common downstream patterns.

Changes:

  • Refines core docs (AGENTS.md, README.md, copilot instructions) to add a comments house rule, clarify markdown hard-break conventions, and document derived-repo carry/ownership boundaries.
  • Trims and modernizes workflow comments across CI/release/codegen/merge-bot workflows without intended behavior changes, and documents CI artifact-retention/cache conventions.
  • Adds reusable workflows and docs for Docker Hub README publishing and upstream-version tracking (wrapper-repo pattern), plus wiring in publish/merge automation.

Reviewed changes

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

Show a summary per file
FileDescription
README.mdAdds a deferred-patterns section and clarifies derived-repo adoption guidance (incl. .gitattributes normalization).
DotNet.code-workspaceUpdates workspace spellcheck/word allowlist.
Docker/README.mdAdds a Docker Hub repository overview README for the published image.
AGENTS.mdAdds comments house rules; clarifies test-pull-request ownership boundaries; documents artifact retention/cache guidance; adds wrapper-repo upstream-version tracker pattern.
.github/workflows/test-pull-request.ymlTrims/reshapes explanatory comments and clarifies unit-test job ownership for non-.NET repos.
.github/workflows/run-periodic-codegen-pull-request.ymlTrims schedule/concurrency commentary.
.github/workflows/run-codegen-pull-request-task.ymlTrims/modernizes comments; preserves codegen mechanics.
.github/workflows/publish-release.ymlTrims comments and wires in Docker Hub README publishing task.
.github/workflows/publish-docker-readme-task.ymlNew reusable task to push Docker/README.md to Docker Hub.
.github/workflows/merge-bot-pull-request.ymlAdds auto-merge support for upstream-version bump PRs; trims header commentary.
.github/workflows/get-version-task.ymlTrims commentary around inputs/outputs and nbgv pin rationale.
.github/workflows/check-upstream-version-task.ymlNew reusable task for wrapper repos to track upstream versions and open rolling bump PRs.
.github/workflows/build-release-task.ymlTrims and clarifies comments for orchestration/build seam and publishing invariants.
.github/workflows/build-pypilibrary-task.ymlTrims comments and sets short retention on build artifacts.
.github/workflows/build-nugetlibrary-task.ymlTrims comments and sets short retention on release-asset artifacts.
.github/workflows/build-executable-task.ymlTrims comments and sets short retention on intermediate/release artifacts.
.github/workflows/build-docker-task.ymlTrims comments (no intended logic changes) and clarifies cache/login rationale.
.github/copilot-instructions.mdResummarizes/condenses the Copilot instructions while keeping the runbook mechanics.
.editorconfigMarks the C# style block as .NET-only and clarifies the always-verbatim EOL governance block.

Comment thread.github/workflows/publish-docker-readme-task.yml
Comment thread.github/workflows/check-upstream-version-task.yml
Comment threadDocker/README.md Outdated
Comment thread.github/workflows/get-version-task.yml
- Pin the docker-readme checkout to inputs.branch so the main leg always
publishes main's readme regardless of the triggering ref.
- Clarify that bump-branch-prefix must match the merge-bot's hard-coded
upstream-version-<base> head refs or auto-merge won't fire.
- Document that Docker immutable tags are NBGV SemVer2, including develop
prerelease tags, not only X.Y.Z.

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

Comment thread.github/workflows/check-upstream-version-task.yml
Comment thread.github/workflows/publish-docker-readme-task.yml
@ptr727
ptr727 merged commit 212d8a8 into developJun 21, 2026
15 checks passed
@ptr727
ptr727 deleted the template-cleanup-porting-issues branch June 21, 2026 16:52
This was referenced Jun 21, 2026
ptr727 added a commit that referenced this pull request Jun 21, 2026
Closes#168.
Raised by `ptr727/ESPHome-NonRoot` while re-syncing from #167: the
canonical `check-upstream-version-task.yml` serialized only a single
bare-string version, so a wrapper pinning **several** upstream
components (ESPHome-NonRoot pins both `esphome` and the device-builder)
could not converge on it and kept a bespoke tracker.
## Change
- **Structured state file.** The resolver now prints a **JSON object of
`name -> version`**; the task normalizes it (sorted keys, pretty) and
writes it as the canonical state file. One key for the common
single-version case (`{"version":"X"}`) or N keys for a multi-component
wrapper, each read by the build by key. This also makes the
`upstream-version.json` extension honest.
- **Changed-key summary.** The bump PR title/body are diffed against the
prior state and name **only the keys that actually moved**. The trivial
single-`version` case still renders `Update upstream version to X`;
multi-key renders `Update upstream versions: esphome to 2026.7.0` plus a
per-component body list.
- **Robustness.** Missing/corrupt state diffs cleanly against an empty
object (first run works); a resolver that prints non-object output fails
with a clear contract message; an unchanged object yields no diff so
create-pull-request opens nothing.
- **Docs.** `AGENTS.md` wrapper-repo description updated to the JSON
`name -> version` contract.
- **Workspace.** Swapped `gruntfuggly.todo-tree` for
`fanaticpythoner.better-todo-tree` in `DotNet.code-workspace` (bundled
per request).
The merge-bot keys only on branch refs (`upstream-version-<base>`), so
it needs no change.
## Validation
Ran the resolve/compose logic locally across single-key first-run,
multi-key first-run, partial move (one of two changed), no-change (empty
diff → no PR), and malformed output (rejected). YAML validated.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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" + ' Resummarize template docs and trim workflow comments by ptr727 · Pull Request #167 · ptr727/ProjectTemplate · GitHub
Skip to content

Resummarize template docs and trim workflow comments - #167

Merged
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues
Jun 21, 2026
Merged

Resummarize template docs and trim workflow comments#167
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Acts on the issues surfaced while porting ESPHome-NonRoot to the template (#157-#164), plus the comment/doc cleanup and CI-storage feedback.

Docs

  • New Comments house-rule in AGENTS.md (concise, current-state, no cross-project references, no rule citations, match ~120-col) - applied throughout.
  • copilot-instructions.md resummarized: dropped the duplicated PR-title block and historic narrative, kept the Copilot review runbook mechanics.
  • Bless trailing-backslash hard line breaks (Markdown convention: bless trailing-backslash hard line breaks #164); clarify the cross-repo boundary (the template hub keeps the consistency/fan-out/Known-Downstream rules, derived repos never name siblings); simplify the version.json bump rule; document the HISTORY.md + README release-notes and CODESTYLE-aggregate patterns.

Workflow comments (#162)

  • Trimmed ~300 comment lines across .github/workflows/*. Only comments changed (no logic), CRLF endings and action SHA-pins preserved.

Doc-clarification issues

New reusable tasks

CI storage

  • retention-days: 1 on all intermediate build artifacts (was 90-day default); documented the artifact-retention and registry-cache (type=registry, not type=gha) conventions.

README

  • Added a Deferred Patterns backlog (unit-test factoring, per-language test scaffolds).

Verified: actionlint clean, markdownlint clean, all touched .yml/.md CRLF, all actions SHA-pinned.

Act on the issues surfaced porting ESPHome-NonRoot to the template, plus
the comment/doc cleanup feedback.
Docs:
- Add a Comments house-rule (concise, current-state, no cross-project
references, no rule citations, match ~120-col) and apply it.
- Trim ~300 comment lines across .github/workflows/*; only comments
changed (no logic), CRLF and SHA-pins preserved.
- Resummarize copilot-instructions.md (drop duplicated PR-title block,
historic narrative) keeping the Copilot runbook mechanics.
- Bless trailing-backslash hard line breaks; clarify the cross-repo
boundary (hub keeps the registry/fan-out rules, derived repos never
name siblings); simplify the version.json rule; document HISTORY.md +
CODESTYLE aggregate patterns.
Workflows and CI:
- Mark the .editorconfig C# block .NET-only; note first-time
.gitattributes normalization.
- Rewrite the brownfield re-sign procedure (filter-branch + committer
rewrite, ruleset ordering, API verification, cleanup); clarify the
maintainer-only force-push is restricted as a destructive operation,
not a signing concern.
- Ship publish-docker-readme-task.yml + Docker/README.md, wired into
publish-release.yml.
- Ship check-upstream-version-task.yml + merge-bot wiring for wrapper
repos that track an upstream release.
- Set retention-days: 1 on intermediate build artifacts and document the
artifact-retention and registry-cache storage conventions.
Add a Deferred Patterns backlog to the README.
CopilotAI review requested due to automatic review settings June 21, 2026 15:12

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 ProjectTemplate documentation and GitHub Actions workflows to reflect lessons learned during downstream porting, focusing on clearer template/derived-repo boundaries, more concise current-state comments, and new reusable scaffolding for common downstream patterns.

Changes:

  • Refines core docs (AGENTS.md, README.md, copilot instructions) to add a comments house rule, clarify markdown hard-break conventions, and document derived-repo carry/ownership boundaries.
  • Trims and modernizes workflow comments across CI/release/codegen/merge-bot workflows without intended behavior changes, and documents CI artifact-retention/cache conventions.
  • Adds reusable workflows and docs for Docker Hub README publishing and upstream-version tracking (wrapper-repo pattern), plus wiring in publish/merge automation.

Reviewed changes

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

Show a summary per file
FileDescription
README.mdAdds a deferred-patterns section and clarifies derived-repo adoption guidance (incl. .gitattributes normalization).
DotNet.code-workspaceUpdates workspace spellcheck/word allowlist.
Docker/README.mdAdds a Docker Hub repository overview README for the published image.
AGENTS.mdAdds comments house rules; clarifies test-pull-request ownership boundaries; documents artifact retention/cache guidance; adds wrapper-repo upstream-version tracker pattern.
.github/workflows/test-pull-request.ymlTrims/reshapes explanatory comments and clarifies unit-test job ownership for non-.NET repos.
.github/workflows/run-periodic-codegen-pull-request.ymlTrims schedule/concurrency commentary.
.github/workflows/run-codegen-pull-request-task.ymlTrims/modernizes comments; preserves codegen mechanics.
.github/workflows/publish-release.ymlTrims comments and wires in Docker Hub README publishing task.
.github/workflows/publish-docker-readme-task.ymlNew reusable task to push Docker/README.md to Docker Hub.
.github/workflows/merge-bot-pull-request.ymlAdds auto-merge support for upstream-version bump PRs; trims header commentary.
.github/workflows/get-version-task.ymlTrims commentary around inputs/outputs and nbgv pin rationale.
.github/workflows/check-upstream-version-task.ymlNew reusable task for wrapper repos to track upstream versions and open rolling bump PRs.
.github/workflows/build-release-task.ymlTrims and clarifies comments for orchestration/build seam and publishing invariants.
.github/workflows/build-pypilibrary-task.ymlTrims comments and sets short retention on build artifacts.
.github/workflows/build-nugetlibrary-task.ymlTrims comments and sets short retention on release-asset artifacts.
.github/workflows/build-executable-task.ymlTrims comments and sets short retention on intermediate/release artifacts.
.github/workflows/build-docker-task.ymlTrims comments (no intended logic changes) and clarifies cache/login rationale.
.github/copilot-instructions.mdResummarizes/condenses the Copilot instructions while keeping the runbook mechanics.
.editorconfigMarks the C# style block as .NET-only and clarifies the always-verbatim EOL governance block.

Comment thread.github/workflows/publish-docker-readme-task.yml
Comment thread.github/workflows/check-upstream-version-task.yml
Comment threadDocker/README.md Outdated
Comment thread.github/workflows/get-version-task.yml
- Pin the docker-readme checkout to inputs.branch so the main leg always
publishes main's readme regardless of the triggering ref.
- Clarify that bump-branch-prefix must match the merge-bot's hard-coded
upstream-version-<base> head refs or auto-merge won't fire.
- Document that Docker immutable tags are NBGV SemVer2, including develop
prerelease tags, not only X.Y.Z.

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

Comment thread.github/workflows/check-upstream-version-task.yml
Comment thread.github/workflows/publish-docker-readme-task.yml
@ptr727
ptr727 merged commit 212d8a8 into developJun 21, 2026
15 checks passed
@ptr727
ptr727 deleted the template-cleanup-porting-issues branch June 21, 2026 16:52
This was referenced Jun 21, 2026
ptr727 added a commit that referenced this pull request Jun 21, 2026
Closes#168.
Raised by `ptr727/ESPHome-NonRoot` while re-syncing from #167: the
canonical `check-upstream-version-task.yml` serialized only a single
bare-string version, so a wrapper pinning **several** upstream
components (ESPHome-NonRoot pins both `esphome` and the device-builder)
could not converge on it and kept a bespoke tracker.
## Change
- **Structured state file.** The resolver now prints a **JSON object of
`name -> version`**; the task normalizes it (sorted keys, pretty) and
writes it as the canonical state file. One key for the common
single-version case (`{"version":"X"}`) or N keys for a multi-component
wrapper, each read by the build by key. This also makes the
`upstream-version.json` extension honest.
- **Changed-key summary.** The bump PR title/body are diffed against the
prior state and name **only the keys that actually moved**. The trivial
single-`version` case still renders `Update upstream version to X`;
multi-key renders `Update upstream versions: esphome to 2026.7.0` plus a
per-component body list.
- **Robustness.** Missing/corrupt state diffs cleanly against an empty
object (first run works); a resolver that prints non-object output fails
with a clear contract message; an unchanged object yields no diff so
create-pull-request opens nothing.
- **Docs.** `AGENTS.md` wrapper-repo description updated to the JSON
`name -> version` contract.
- **Workspace.** Swapped `gruntfuggly.todo-tree` for
`fanaticpythoner.better-todo-tree` in `DotNet.code-workspace` (bundled
per request).
The merge-bot keys only on branch refs (`upstream-version-<base>`), so
it needs no change.
## Validation
Ran the resolve/compose logic locally across single-key first-run,
multi-key first-run, partial move (one of two changed), no-change (empty
diff → no PR), and malformed output (rejected). YAML validated.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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('^' + ".*" + ' Resummarize template docs and trim workflow comments by ptr727 · Pull Request #167 · ptr727/ProjectTemplate · GitHub
Skip to content

Resummarize template docs and trim workflow comments - #167

Merged
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues
Jun 21, 2026
Merged

Resummarize template docs and trim workflow comments#167
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Acts on the issues surfaced while porting ESPHome-NonRoot to the template (#157-#164), plus the comment/doc cleanup and CI-storage feedback.

Docs

  • New Comments house-rule in AGENTS.md (concise, current-state, no cross-project references, no rule citations, match ~120-col) - applied throughout.
  • copilot-instructions.md resummarized: dropped the duplicated PR-title block and historic narrative, kept the Copilot review runbook mechanics.
  • Bless trailing-backslash hard line breaks (Markdown convention: bless trailing-backslash hard line breaks #164); clarify the cross-repo boundary (the template hub keeps the consistency/fan-out/Known-Downstream rules, derived repos never name siblings); simplify the version.json bump rule; document the HISTORY.md + README release-notes and CODESTYLE-aggregate patterns.

Workflow comments (#162)

  • Trimmed ~300 comment lines across .github/workflows/*. Only comments changed (no logic), CRLF endings and action SHA-pins preserved.

Doc-clarification issues

New reusable tasks

CI storage

  • retention-days: 1 on all intermediate build artifacts (was 90-day default); documented the artifact-retention and registry-cache (type=registry, not type=gha) conventions.

README

  • Added a Deferred Patterns backlog (unit-test factoring, per-language test scaffolds).

Verified: actionlint clean, markdownlint clean, all touched .yml/.md CRLF, all actions SHA-pinned.

Act on the issues surfaced porting ESPHome-NonRoot to the template, plus
the comment/doc cleanup feedback.
Docs:
- Add a Comments house-rule (concise, current-state, no cross-project
references, no rule citations, match ~120-col) and apply it.
- Trim ~300 comment lines across .github/workflows/*; only comments
changed (no logic), CRLF and SHA-pins preserved.
- Resummarize copilot-instructions.md (drop duplicated PR-title block,
historic narrative) keeping the Copilot runbook mechanics.
- Bless trailing-backslash hard line breaks; clarify the cross-repo
boundary (hub keeps the registry/fan-out rules, derived repos never
name siblings); simplify the version.json rule; document HISTORY.md +
CODESTYLE aggregate patterns.
Workflows and CI:
- Mark the .editorconfig C# block .NET-only; note first-time
.gitattributes normalization.
- Rewrite the brownfield re-sign procedure (filter-branch + committer
rewrite, ruleset ordering, API verification, cleanup); clarify the
maintainer-only force-push is restricted as a destructive operation,
not a signing concern.
- Ship publish-docker-readme-task.yml + Docker/README.md, wired into
publish-release.yml.
- Ship check-upstream-version-task.yml + merge-bot wiring for wrapper
repos that track an upstream release.
- Set retention-days: 1 on intermediate build artifacts and document the
artifact-retention and registry-cache storage conventions.
Add a Deferred Patterns backlog to the README.
CopilotAI review requested due to automatic review settings June 21, 2026 15:12

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 ProjectTemplate documentation and GitHub Actions workflows to reflect lessons learned during downstream porting, focusing on clearer template/derived-repo boundaries, more concise current-state comments, and new reusable scaffolding for common downstream patterns.

Changes:

  • Refines core docs (AGENTS.md, README.md, copilot instructions) to add a comments house rule, clarify markdown hard-break conventions, and document derived-repo carry/ownership boundaries.
  • Trims and modernizes workflow comments across CI/release/codegen/merge-bot workflows without intended behavior changes, and documents CI artifact-retention/cache conventions.
  • Adds reusable workflows and docs for Docker Hub README publishing and upstream-version tracking (wrapper-repo pattern), plus wiring in publish/merge automation.

Reviewed changes

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

Show a summary per file
FileDescription
README.mdAdds a deferred-patterns section and clarifies derived-repo adoption guidance (incl. .gitattributes normalization).
DotNet.code-workspaceUpdates workspace spellcheck/word allowlist.
Docker/README.mdAdds a Docker Hub repository overview README for the published image.
AGENTS.mdAdds comments house rules; clarifies test-pull-request ownership boundaries; documents artifact retention/cache guidance; adds wrapper-repo upstream-version tracker pattern.
.github/workflows/test-pull-request.ymlTrims/reshapes explanatory comments and clarifies unit-test job ownership for non-.NET repos.
.github/workflows/run-periodic-codegen-pull-request.ymlTrims schedule/concurrency commentary.
.github/workflows/run-codegen-pull-request-task.ymlTrims/modernizes comments; preserves codegen mechanics.
.github/workflows/publish-release.ymlTrims comments and wires in Docker Hub README publishing task.
.github/workflows/publish-docker-readme-task.ymlNew reusable task to push Docker/README.md to Docker Hub.
.github/workflows/merge-bot-pull-request.ymlAdds auto-merge support for upstream-version bump PRs; trims header commentary.
.github/workflows/get-version-task.ymlTrims commentary around inputs/outputs and nbgv pin rationale.
.github/workflows/check-upstream-version-task.ymlNew reusable task for wrapper repos to track upstream versions and open rolling bump PRs.
.github/workflows/build-release-task.ymlTrims and clarifies comments for orchestration/build seam and publishing invariants.
.github/workflows/build-pypilibrary-task.ymlTrims comments and sets short retention on build artifacts.
.github/workflows/build-nugetlibrary-task.ymlTrims comments and sets short retention on release-asset artifacts.
.github/workflows/build-executable-task.ymlTrims comments and sets short retention on intermediate/release artifacts.
.github/workflows/build-docker-task.ymlTrims comments (no intended logic changes) and clarifies cache/login rationale.
.github/copilot-instructions.mdResummarizes/condenses the Copilot instructions while keeping the runbook mechanics.
.editorconfigMarks the C# style block as .NET-only and clarifies the always-verbatim EOL governance block.

Comment thread.github/workflows/publish-docker-readme-task.yml
Comment thread.github/workflows/check-upstream-version-task.yml
Comment threadDocker/README.md Outdated
Comment thread.github/workflows/get-version-task.yml
- Pin the docker-readme checkout to inputs.branch so the main leg always
publishes main's readme regardless of the triggering ref.
- Clarify that bump-branch-prefix must match the merge-bot's hard-coded
upstream-version-<base> head refs or auto-merge won't fire.
- Document that Docker immutable tags are NBGV SemVer2, including develop
prerelease tags, not only X.Y.Z.

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

Comment thread.github/workflows/check-upstream-version-task.yml
Comment thread.github/workflows/publish-docker-readme-task.yml
@ptr727
ptr727 merged commit 212d8a8 into developJun 21, 2026
15 checks passed
@ptr727
ptr727 deleted the template-cleanup-porting-issues branch June 21, 2026 16:52
This was referenced Jun 21, 2026
ptr727 added a commit that referenced this pull request Jun 21, 2026
Closes#168.
Raised by `ptr727/ESPHome-NonRoot` while re-syncing from #167: the
canonical `check-upstream-version-task.yml` serialized only a single
bare-string version, so a wrapper pinning **several** upstream
components (ESPHome-NonRoot pins both `esphome` and the device-builder)
could not converge on it and kept a bespoke tracker.
## Change
- **Structured state file.** The resolver now prints a **JSON object of
`name -> version`**; the task normalizes it (sorted keys, pretty) and
writes it as the canonical state file. One key for the common
single-version case (`{"version":"X"}`) or N keys for a multi-component
wrapper, each read by the build by key. This also makes the
`upstream-version.json` extension honest.
- **Changed-key summary.** The bump PR title/body are diffed against the
prior state and name **only the keys that actually moved**. The trivial
single-`version` case still renders `Update upstream version to X`;
multi-key renders `Update upstream versions: esphome to 2026.7.0` plus a
per-component body list.
- **Robustness.** Missing/corrupt state diffs cleanly against an empty
object (first run works); a resolver that prints non-object output fails
with a clear contract message; an unchanged object yields no diff so
create-pull-request opens nothing.
- **Docs.** `AGENTS.md` wrapper-repo description updated to the JSON
`name -> version` contract.
- **Workspace.** Swapped `gruntfuggly.todo-tree` for
`fanaticpythoner.better-todo-tree` in `DotNet.code-workspace` (bundled
per request).
The merge-bot keys only on branch refs (`upstream-version-<base>`), so
it needs no change.
## Validation
Ran the resolve/compose logic locally across single-key first-run,
multi-key first-run, partial move (one of two changed), no-change (empty
diff → no PR), and malformed output (rejected). YAML validated.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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('^' + ".*" + ' Resummarize template docs and trim workflow comments by ptr727 · Pull Request #167 · ptr727/ProjectTemplate · GitHub
Skip to content

Resummarize template docs and trim workflow comments - #167

Merged
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues
Jun 21, 2026
Merged

Resummarize template docs and trim workflow comments#167
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Acts on the issues surfaced while porting ESPHome-NonRoot to the template (#157-#164), plus the comment/doc cleanup and CI-storage feedback.

Docs

  • New Comments house-rule in AGENTS.md (concise, current-state, no cross-project references, no rule citations, match ~120-col) - applied throughout.
  • copilot-instructions.md resummarized: dropped the duplicated PR-title block and historic narrative, kept the Copilot review runbook mechanics.
  • Bless trailing-backslash hard line breaks (Markdown convention: bless trailing-backslash hard line breaks #164); clarify the cross-repo boundary (the template hub keeps the consistency/fan-out/Known-Downstream rules, derived repos never name siblings); simplify the version.json bump rule; document the HISTORY.md + README release-notes and CODESTYLE-aggregate patterns.

Workflow comments (#162)

  • Trimmed ~300 comment lines across .github/workflows/*. Only comments changed (no logic), CRLF endings and action SHA-pins preserved.

Doc-clarification issues

New reusable tasks

CI storage

  • retention-days: 1 on all intermediate build artifacts (was 90-day default); documented the artifact-retention and registry-cache (type=registry, not type=gha) conventions.

README

  • Added a Deferred Patterns backlog (unit-test factoring, per-language test scaffolds).

Verified: actionlint clean, markdownlint clean, all touched .yml/.md CRLF, all actions SHA-pinned.

Act on the issues surfaced porting ESPHome-NonRoot to the template, plus
the comment/doc cleanup feedback.
Docs:
- Add a Comments house-rule (concise, current-state, no cross-project
references, no rule citations, match ~120-col) and apply it.
- Trim ~300 comment lines across .github/workflows/*; only comments
changed (no logic), CRLF and SHA-pins preserved.
- Resummarize copilot-instructions.md (drop duplicated PR-title block,
historic narrative) keeping the Copilot runbook mechanics.
- Bless trailing-backslash hard line breaks; clarify the cross-repo
boundary (hub keeps the registry/fan-out rules, derived repos never
name siblings); simplify the version.json rule; document HISTORY.md +
CODESTYLE aggregate patterns.
Workflows and CI:
- Mark the .editorconfig C# block .NET-only; note first-time
.gitattributes normalization.
- Rewrite the brownfield re-sign procedure (filter-branch + committer
rewrite, ruleset ordering, API verification, cleanup); clarify the
maintainer-only force-push is restricted as a destructive operation,
not a signing concern.
- Ship publish-docker-readme-task.yml + Docker/README.md, wired into
publish-release.yml.
- Ship check-upstream-version-task.yml + merge-bot wiring for wrapper
repos that track an upstream release.
- Set retention-days: 1 on intermediate build artifacts and document the
artifact-retention and registry-cache storage conventions.
Add a Deferred Patterns backlog to the README.
CopilotAI review requested due to automatic review settings June 21, 2026 15:12

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 ProjectTemplate documentation and GitHub Actions workflows to reflect lessons learned during downstream porting, focusing on clearer template/derived-repo boundaries, more concise current-state comments, and new reusable scaffolding for common downstream patterns.

Changes:

  • Refines core docs (AGENTS.md, README.md, copilot instructions) to add a comments house rule, clarify markdown hard-break conventions, and document derived-repo carry/ownership boundaries.
  • Trims and modernizes workflow comments across CI/release/codegen/merge-bot workflows without intended behavior changes, and documents CI artifact-retention/cache conventions.
  • Adds reusable workflows and docs for Docker Hub README publishing and upstream-version tracking (wrapper-repo pattern), plus wiring in publish/merge automation.

Reviewed changes

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

Show a summary per file
FileDescription
README.mdAdds a deferred-patterns section and clarifies derived-repo adoption guidance (incl. .gitattributes normalization).
DotNet.code-workspaceUpdates workspace spellcheck/word allowlist.
Docker/README.mdAdds a Docker Hub repository overview README for the published image.
AGENTS.mdAdds comments house rules; clarifies test-pull-request ownership boundaries; documents artifact retention/cache guidance; adds wrapper-repo upstream-version tracker pattern.
.github/workflows/test-pull-request.ymlTrims/reshapes explanatory comments and clarifies unit-test job ownership for non-.NET repos.
.github/workflows/run-periodic-codegen-pull-request.ymlTrims schedule/concurrency commentary.
.github/workflows/run-codegen-pull-request-task.ymlTrims/modernizes comments; preserves codegen mechanics.
.github/workflows/publish-release.ymlTrims comments and wires in Docker Hub README publishing task.
.github/workflows/publish-docker-readme-task.ymlNew reusable task to push Docker/README.md to Docker Hub.
.github/workflows/merge-bot-pull-request.ymlAdds auto-merge support for upstream-version bump PRs; trims header commentary.
.github/workflows/get-version-task.ymlTrims commentary around inputs/outputs and nbgv pin rationale.
.github/workflows/check-upstream-version-task.ymlNew reusable task for wrapper repos to track upstream versions and open rolling bump PRs.
.github/workflows/build-release-task.ymlTrims and clarifies comments for orchestration/build seam and publishing invariants.
.github/workflows/build-pypilibrary-task.ymlTrims comments and sets short retention on build artifacts.
.github/workflows/build-nugetlibrary-task.ymlTrims comments and sets short retention on release-asset artifacts.
.github/workflows/build-executable-task.ymlTrims comments and sets short retention on intermediate/release artifacts.
.github/workflows/build-docker-task.ymlTrims comments (no intended logic changes) and clarifies cache/login rationale.
.github/copilot-instructions.mdResummarizes/condenses the Copilot instructions while keeping the runbook mechanics.
.editorconfigMarks the C# style block as .NET-only and clarifies the always-verbatim EOL governance block.

Comment thread.github/workflows/publish-docker-readme-task.yml
Comment thread.github/workflows/check-upstream-version-task.yml
Comment threadDocker/README.md Outdated
Comment thread.github/workflows/get-version-task.yml
- Pin the docker-readme checkout to inputs.branch so the main leg always
publishes main's readme regardless of the triggering ref.
- Clarify that bump-branch-prefix must match the merge-bot's hard-coded
upstream-version-<base> head refs or auto-merge won't fire.
- Document that Docker immutable tags are NBGV SemVer2, including develop
prerelease tags, not only X.Y.Z.

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

Comment thread.github/workflows/check-upstream-version-task.yml
Comment thread.github/workflows/publish-docker-readme-task.yml
@ptr727
ptr727 merged commit 212d8a8 into developJun 21, 2026
15 checks passed
@ptr727
ptr727 deleted the template-cleanup-porting-issues branch June 21, 2026 16:52
This was referenced Jun 21, 2026
ptr727 added a commit that referenced this pull request Jun 21, 2026
Closes#168.
Raised by `ptr727/ESPHome-NonRoot` while re-syncing from #167: the
canonical `check-upstream-version-task.yml` serialized only a single
bare-string version, so a wrapper pinning **several** upstream
components (ESPHome-NonRoot pins both `esphome` and the device-builder)
could not converge on it and kept a bespoke tracker.
## Change
- **Structured state file.** The resolver now prints a **JSON object of
`name -> version`**; the task normalizes it (sorted keys, pretty) and
writes it as the canonical state file. One key for the common
single-version case (`{"version":"X"}`) or N keys for a multi-component
wrapper, each read by the build by key. This also makes the
`upstream-version.json` extension honest.
- **Changed-key summary.** The bump PR title/body are diffed against the
prior state and name **only the keys that actually moved**. The trivial
single-`version` case still renders `Update upstream version to X`;
multi-key renders `Update upstream versions: esphome to 2026.7.0` plus a
per-component body list.
- **Robustness.** Missing/corrupt state diffs cleanly against an empty
object (first run works); a resolver that prints non-object output fails
with a clear contract message; an unchanged object yields no diff so
create-pull-request opens nothing.
- **Docs.** `AGENTS.md` wrapper-repo description updated to the JSON
`name -> version` contract.
- **Workspace.** Swapped `gruntfuggly.todo-tree` for
`fanaticpythoner.better-todo-tree` in `DotNet.code-workspace` (bundled
per request).
The merge-bot keys only on branch refs (`upstream-version-<base>`), so
it needs no change.
## Validation
Ran the resolve/compose logic locally across single-key first-run,
multi-key first-run, partial move (one of two changed), no-change (empty
diff → no PR), and malformed output (rejected). YAML validated.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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); } })(); })(); Resummarize template docs and trim workflow comments by ptr727 · Pull Request #167 · ptr727/ProjectTemplate · GitHub
Skip to content

Resummarize template docs and trim workflow comments - #167

Merged
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues
Jun 21, 2026
Merged

Resummarize template docs and trim workflow comments#167
ptr727 merged 2 commits into
developfrom
template-cleanup-porting-issues

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Acts on the issues surfaced while porting ESPHome-NonRoot to the template (#157-#164), plus the comment/doc cleanup and CI-storage feedback.

Docs

  • New Comments house-rule in AGENTS.md (concise, current-state, no cross-project references, no rule citations, match ~120-col) - applied throughout.
  • copilot-instructions.md resummarized: dropped the duplicated PR-title block and historic narrative, kept the Copilot review runbook mechanics.
  • Bless trailing-backslash hard line breaks (Markdown convention: bless trailing-backslash hard line breaks #164); clarify the cross-repo boundary (the template hub keeps the consistency/fan-out/Known-Downstream rules, derived repos never name siblings); simplify the version.json bump rule; document the HISTORY.md + README release-notes and CODESTYLE-aggregate patterns.

Workflow comments (#162)

  • Trimmed ~300 comment lines across .github/workflows/*. Only comments changed (no logic), CRLF endings and action SHA-pins preserved.

Doc-clarification issues

New reusable tasks

CI storage

  • retention-days: 1 on all intermediate build artifacts (was 90-day default); documented the artifact-retention and registry-cache (type=registry, not type=gha) conventions.

README

  • Added a Deferred Patterns backlog (unit-test factoring, per-language test scaffolds).

Verified: actionlint clean, markdownlint clean, all touched .yml/.md CRLF, all actions SHA-pinned.

Act on the issues surfaced porting ESPHome-NonRoot to the template, plus
the comment/doc cleanup feedback.
Docs:
- Add a Comments house-rule (concise, current-state, no cross-project
references, no rule citations, match ~120-col) and apply it.
- Trim ~300 comment lines across .github/workflows/*; only comments
changed (no logic), CRLF and SHA-pins preserved.
- Resummarize copilot-instructions.md (drop duplicated PR-title block,
historic narrative) keeping the Copilot runbook mechanics.
- Bless trailing-backslash hard line breaks; clarify the cross-repo
boundary (hub keeps the registry/fan-out rules, derived repos never
name siblings); simplify the version.json rule; document HISTORY.md +
CODESTYLE aggregate patterns.
Workflows and CI:
- Mark the .editorconfig C# block .NET-only; note first-time
.gitattributes normalization.
- Rewrite the brownfield re-sign procedure (filter-branch + committer
rewrite, ruleset ordering, API verification, cleanup); clarify the
maintainer-only force-push is restricted as a destructive operation,
not a signing concern.
- Ship publish-docker-readme-task.yml + Docker/README.md, wired into
publish-release.yml.
- Ship check-upstream-version-task.yml + merge-bot wiring for wrapper
repos that track an upstream release.
- Set retention-days: 1 on intermediate build artifacts and document the
artifact-retention and registry-cache storage conventions.
Add a Deferred Patterns backlog to the README.
CopilotAI review requested due to automatic review settings June 21, 2026 15:12

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 ProjectTemplate documentation and GitHub Actions workflows to reflect lessons learned during downstream porting, focusing on clearer template/derived-repo boundaries, more concise current-state comments, and new reusable scaffolding for common downstream patterns.

Changes:

  • Refines core docs (AGENTS.md, README.md, copilot instructions) to add a comments house rule, clarify markdown hard-break conventions, and document derived-repo carry/ownership boundaries.
  • Trims and modernizes workflow comments across CI/release/codegen/merge-bot workflows without intended behavior changes, and documents CI artifact-retention/cache conventions.
  • Adds reusable workflows and docs for Docker Hub README publishing and upstream-version tracking (wrapper-repo pattern), plus wiring in publish/merge automation.

Reviewed changes

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

Show a summary per file
FileDescription
README.mdAdds a deferred-patterns section and clarifies derived-repo adoption guidance (incl. .gitattributes normalization).
DotNet.code-workspaceUpdates workspace spellcheck/word allowlist.
Docker/README.mdAdds a Docker Hub repository overview README for the published image.
AGENTS.mdAdds comments house rules; clarifies test-pull-request ownership boundaries; documents artifact retention/cache guidance; adds wrapper-repo upstream-version tracker pattern.
.github/workflows/test-pull-request.ymlTrims/reshapes explanatory comments and clarifies unit-test job ownership for non-.NET repos.
.github/workflows/run-periodic-codegen-pull-request.ymlTrims schedule/concurrency commentary.
.github/workflows/run-codegen-pull-request-task.ymlTrims/modernizes comments; preserves codegen mechanics.
.github/workflows/publish-release.ymlTrims comments and wires in Docker Hub README publishing task.
.github/workflows/publish-docker-readme-task.ymlNew reusable task to push Docker/README.md to Docker Hub.
.github/workflows/merge-bot-pull-request.ymlAdds auto-merge support for upstream-version bump PRs; trims header commentary.
.github/workflows/get-version-task.ymlTrims commentary around inputs/outputs and nbgv pin rationale.
.github/workflows/check-upstream-version-task.ymlNew reusable task for wrapper repos to track upstream versions and open rolling bump PRs.
.github/workflows/build-release-task.ymlTrims and clarifies comments for orchestration/build seam and publishing invariants.
.github/workflows/build-pypilibrary-task.ymlTrims comments and sets short retention on build artifacts.
.github/workflows/build-nugetlibrary-task.ymlTrims comments and sets short retention on release-asset artifacts.
.github/workflows/build-executable-task.ymlTrims comments and sets short retention on intermediate/release artifacts.
.github/workflows/build-docker-task.ymlTrims comments (no intended logic changes) and clarifies cache/login rationale.
.github/copilot-instructions.mdResummarizes/condenses the Copilot instructions while keeping the runbook mechanics.
.editorconfigMarks the C# style block as .NET-only and clarifies the always-verbatim EOL governance block.

Comment thread.github/workflows/publish-docker-readme-task.yml
Comment thread.github/workflows/check-upstream-version-task.yml
Comment threadDocker/README.md Outdated
Comment thread.github/workflows/get-version-task.yml
- Pin the docker-readme checkout to inputs.branch so the main leg always
publishes main's readme regardless of the triggering ref.
- Clarify that bump-branch-prefix must match the merge-bot's hard-coded
upstream-version-<base> head refs or auto-merge won't fire.
- Document that Docker immutable tags are NBGV SemVer2, including develop
prerelease tags, not only X.Y.Z.

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

Comment thread.github/workflows/check-upstream-version-task.yml
Comment thread.github/workflows/publish-docker-readme-task.yml
@ptr727
ptr727 merged commit 212d8a8 into developJun 21, 2026
15 checks passed
@ptr727
ptr727 deleted the template-cleanup-porting-issues branch June 21, 2026 16:52
This was referenced Jun 21, 2026
ptr727 added a commit that referenced this pull request Jun 21, 2026
Closes#168.
Raised by `ptr727/ESPHome-NonRoot` while re-syncing from #167: the
canonical `check-upstream-version-task.yml` serialized only a single
bare-string version, so a wrapper pinning **several** upstream
components (ESPHome-NonRoot pins both `esphome` and the device-builder)
could not converge on it and kept a bespoke tracker.
## Change
- **Structured state file.** The resolver now prints a **JSON object of
`name -> version`**; the task normalizes it (sorted keys, pretty) and
writes it as the canonical state file. One key for the common
single-version case (`{"version":"X"}`) or N keys for a multi-component
wrapper, each read by the build by key. This also makes the
`upstream-version.json` extension honest.
- **Changed-key summary.** The bump PR title/body are diffed against the
prior state and name **only the keys that actually moved**. The trivial
single-`version` case still renders `Update upstream version to X`;
multi-key renders `Update upstream versions: esphome to 2026.7.0` plus a
per-component body list.
- **Robustness.** Missing/corrupt state diffs cleanly against an empty
object (first run works); a resolver that prints non-object output fails
with a clear contract message; an unchanged object yields no diff so
create-pull-request opens nothing.
- **Docs.** `AGENTS.md` wrapper-repo description updated to the JSON
`name -> version` contract.
- **Workspace.** Swapped `gruntfuggly.todo-tree` for
`fanaticpythoner.better-todo-tree` in `DotNet.code-workspace` (bundled
per request).
The merge-bot keys only on branch refs (`upstream-version-<base>`), so
it needs no change.
## Validation
Ran the resolve/compose logic locally across single-key first-run,
multi-key first-run, partial move (one of two changed), no-change (empty
diff → no PR), and malformed output (rejected). YAML validated.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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