Skip to content

Promote develop to main: per-surface lint architecture, mandatory README/HISTORY, codecov accuracy - #283

Merged
ptr727 merged 8 commits into
mainfrom
develop
Jul 12, 2026
Merged

Promote develop to main: per-surface lint architecture, mandatory README/HISTORY, codecov accuracy#283
ptr727 merged 8 commits into
mainfrom
develop

Conversation

@ptr727

@ptr727 ptr727 commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Forward promotion of accumulated develop work to main. No release (human merge does not auto-publish per the gated-release model).

ptr727 and others added 8 commits July 9, 2026 16:26
…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.
)

Header prose block -> summary plus bullets using full line width; dropped the value-less example from the ignore comment. Comments only.
…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.
…asks (#280)

Fleet lint conventions: EditorConfig rename (step + VS Code task) and process-type VS Code Lint tasks. Canonical: ProjectTemplate #280.
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>
Copilot AI review requested due to automatic review settings July 12, 2026 02:12
@ptr727
ptr727 merged commit a6da575 into main Jul 12, 2026
7 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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.md and to standardize codecov.yml for 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 thread AGENTS.md
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants