Conversation
…y.Instance) (#272) Two one-line doc tweaks deferred from the #271 promotion review: - **AGENTS.md** — clickable-PR-link example uses `OWNER/REPO` (no angle brackets that render oddly) instead of `<owner>/<repo>`. - **CODESTYLE.md** — the library logger seam defaults to `NullLoggerFactory.Instance` (the singleton), matching the LanguageTags `LogOptions` reference. Docs-only; markdownlint clean; CRLF preserved. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
) Closes two coverage gaps surfaced while working on Utilities. **1. `.gitignore` swept in coverage output.** CI writes coverage to `./coverage/` (C#) and `coverage.xml`/`.coverage` (Python), but the template `.gitignore` excluded none of it — so `git add -A` committed a `coverage.cobertura.xml` build artifact. Added: `coverage/`, `[Tt]est[Rr]esults/`, `*.cobertura.xml`, `*.coverage`, `coverage.xml`, `.coverage`, `.coverage.*`, `htmlcov/`. **2. `codecov.yml` was not standardized.** The upload path was covered (D1.6) but not the file that makes Codecov's own project/patch commit statuses **non-gating** — a different knob from `fail_ci_if_error`. Added a reference [`catalog/snippets/configs/codecov.yml`](catalog/snippets/configs/codecov.yml) (`informational: true` + a commented `ignore:` for untested example/benchmark apps), listed it in `spec/files.json` for `["csharp","python"]`, and extended **WORKFLOW.md D1.6**. CRLF preserved; editorconfig-checker + markdownlint + `spec/validate.py` all clean. Follow-ups (authorized, next): local lint parity (husky + VS Code tasks mirror the CI lint set incl editorconfig-checker), then bundled backfill of codecov.yml + hygiene to the 5 C# repos. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…k, VS Code docker) (#276) - CI (test-pull-request.yml): all four linters run as pinned action wrappers (Dependabot-bumped). - Git hook: language formatting/style only (dotnet husky run / ruff), no Docker, if-guarded. - VS Code tasks: full doc-lint set via docker :latest. - AGENTS.md lint section + husky README rewritten to the per-surface split.
…279) The editorconfig-checker action only installs the CLI, so uses-alone never ran the check and CI silently passed without validating line endings. Reverted to the Docker invocation, which runs it in one step.
README and HISTORY are required in every fleet repo (both are spell-checked in CI). Adds them as presence baseline entries in spec/files.json so the audit catches any repo missing them. Prompted by finding AudioCleaner + Financial-Modeling had no HISTORY.md. Spec validation passes (21 repos classify cleanly). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…282) The canonical codecov.yml comment said 'Coverage is reported and trended, never gated', which is misleading: Python repos gate coverage via pytest `fail_under`. Scope the claim to Codecov's advisory statuses (true in every tier). Surfaced by Copilot on aiopurpleair #27; the two Python repos in flight already carry the reworded comment. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Forward promotion from develop to main that updates the repo's governance and snippets around linting surfaces, baseline required docs, and Codecov expectations (consistent with the gated-release model - merge does not auto-publish).
Changes:
- Expand the workflow contract/spec baseline to require
README.md/HISTORY.mdand to standardizecodecov.ymlfor C# and Python repos. - Add local lint surfaces (VS Code tasks) and a Husky pre-commit snippet, plus the EOL governance to keep the snippet executable.
- Adjust CI linting steps to use pinned action wrappers for Markdown/spelling/workflow linting, while retaining editorconfig-checker via Docker.
Reviewed changes
Copilot reviewed 12 out of 13 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| WORKFLOW.md | Extends the documented contract for Codecov reporting and codecov.yml expectations. |
| spec/files.json | Adds README.md/HISTORY.md to the baseline and requires codecov.yml for C#/Python repos. |
| cspell.json | Adds a dictionary entry for the editorconfig-checker image namespace to prevent false positives. |
| CODESTYLE.md | Corrects the logging guidance to use NullLoggerFactory.Instance. |
| catalog/snippets/husky/README.md | Documents the intent/scope of the Husky pre-commit hook snippet and EOL requirements. |
| catalog/snippets/husky/pre-commit | Introduces a reference pre-commit hook snippet. |
| catalog/snippets/configs/vscode-tasks.json | Adds a local "Lint" task group to run doc/workflow/spelling/EOL checks via Docker. |
| catalog/snippets/configs/codecov.yml | Adds a standard Codecov configuration snippet with informational statuses. |
| AGENTS.md | Documents the per-surface linting approach and VS Code settings/extensions guidance. |
| .gitignore | Ignores common coverage outputs for .NET and Python. |
| .github/workflows/test-pull-request.yml | Switches lint steps to pinned action wrappers and updates EditorConfig checking. |
| .gitattributes | Pins the Husky snippet to LF to keep the shebang executable when copied. |
| .editorconfig | Pins the Husky snippet to LF to match the .gitattributes pin and execution requirements. |
Comment on lines
+42
to
+43
| - name: Check EditorConfig step | ||
| run: docker run --rm -v "$PWD":/check --workdir /check mstruebing/editorconfig-checker:latest |
Comment on lines
+230
to
+234
| **Each surface runs the lint with the tool that fits it, all from the same config files** (`.markdownlint-cli2.jsonc`, `cspell.json`, `.editorconfig`): | ||
|
|
||
| - **CI (authoritative)** runs **markdownlint-cli2**, **cspell**, and **actionlint** as pinned action wrappers (Dependabot bumps them), plus **editorconfig-checker** via Docker `:latest` (its action only installs the CLI, so the Docker one-liner is what actually runs the check). | ||
| - **The [`.husky/pre-commit`](./catalog/snippets/husky/pre-commit) hook** runs **language formatting only** - CSharpier + `dotnet format` (or ruff) via native tooling, no Docker and no doc linters, so it stays fast. | ||
| - **The VS Code [Lint tasks](./catalog/snippets/configs/vscode-tasks.json)** run the full doc-lint set via Docker `:latest` on demand, the local surface for Markdown, spelling, workflow, and EditorConfig checks. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Forward promotion of accumulated develop work to main. No release (human merge does not auto-publish per the gated-release model).