Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8a0dac8
Re-sync unprotected template-tracked files to canonical (C1 drift)
Chris-Wolfgang May 22, 2026
d648dbe
Fill {{PROJECT_NAME}} placeholder in CONTRIBUTING.md (ETL-Test-Kit)
Chris-Wolfgang May 22, 2026
9fa609d
Correct CONTRIBUTING.md project name to Wolfgang.Etl.TestKit
Chris-Wolfgang May 22, 2026
c9f1cbb
Propagate setup.ps1 UTF-8/newline fix from canonical
Chris-Wolfgang May 22, 2026
7ae4cd6
Add canonical test/benchmark project config (Phase-0 files)
Chris-Wolfgang May 22, 2026
e2dccc7
Drop tests/Directory.Build.props — hold test projects to the warning bar
Chris-Wolfgang May 22, 2026
927ae45
Fix CS8603 in TrackingEnumerator test double
Chris-Wolfgang May 22, 2026
b875e46
Add github-actions ecosystem to Dependabot (CI2)
Chris-Wolfgang May 23, 2026
621af55
Add CHANGELOG.md (D3)
Chris-Wolfgang May 23, 2026
c570511
Address PR review round 2 (canonical-unprotected)
Chris-Wolfgang May 23, 2026
01060a3
Drop vestigial one-time setup scripts (post-bootstrap cleanup)
Chris-Wolfgang May 24, 2026
353d160
CONTRIBUTING.md: correct format.ps1 and README-FORMATTING.md paths
Chris-Wolfgang May 25, 2026
6c9b6a2
scripts/format.ps1: work from repo root + correct usage examples
Chris-Wolfgang May 25, 2026
9933377
CONTRIBUTING.md: correct AsyncFixer description (ConfigureAwait is MA…
Chris-Wolfgang May 25, 2026
a0865dc
Fix-BranchRuleset.ps1: normalize Repository before gh api calls
Chris-Wolfgang May 25, 2026
b391976
scripts/build-pr.ps1: align local checks with CI semantics
Chris-Wolfgang May 25, 2026
1c98be3
CONTRIBUTING.md: bump prerequisite SDK to 10.0 to match repo TFMs
Chris-Wolfgang May 25, 2026
44707a9
scripts/Validate-DocsDeploy.sh: rmdir mktemp path before worktree add
Chris-Wolfgang May 25, 2026
adbeb63
Setup-Labels.ps1: restore early -Repository format validation
Chris-Wolfgang May 25, 2026
bfc1481
scripts/build-pr.ps1: drop -UseBasicParsing from Invoke-WebRequest
Chris-Wolfgang May 25, 2026
f9784e7
Remove subtree TreatWarningsAsErrors=false overrides
Chris-Wolfgang May 25, 2026
a9571fb
Validate-DocsDeploy.sh: handle SSH remote URLs in REPO_NAME parsing
Chris-Wolfgang May 25, 2026
292b3e1
build-pr.ps1: ensure .NET global-tools dir is on PATH after install
Chris-Wolfgang May 25, 2026
e229701
scripts: repair Setup-Labels.ps1 param block + drop --paginate on rul…
Chris-Wolfgang May 26, 2026
6f9ddc6
C4: drop stale <AssemblyVersion> from src csproj(s)
Chris-Wolfgang May 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,19 @@
*.fsx text eol=lf

# Scripts
# PowerShell scripts: LF line endings in the index. Required for the
# `#!/usr/bin/env pwsh` shebang (where present) to work on Linux/macOS
# — the kernel parses CR as part of the interpreter name (looking for
# `pwsh\r`). BOM avoidance is enforced separately via `.editorconfig`
# (`charset = utf-8` in the global `[*]` section); git attributes can
# only normalize line endings, not byte-order marks. The top-of-file
# `* text=auto eol=lf` rule also means Windows users get LF in their
# working tree regardless of `core.autocrlf` — intentional so the
# shebang works there too.
# PowerShell scripts: enforce LF line endings in both the index AND
# the working tree (the explicit `eol=lf` overrides any user-level
# `core.autocrlf=true` setting that would otherwise convert to CRLF
# on checkout). BOM-free UTF-8 encoding is enforced separately by
# .editorconfig's global `charset = utf-8` — `.gitattributes` can
# normalize line endings (and control text/binary, diff, and merge
# behavior) but has no attribute for byte-order marks.
#
# LF is required for the `#!/usr/bin/env pwsh` shebang to work on
# Linux/macOS — the kernel parses CR as part of the interpreter name
# (looking for `pwsh\r`), and a UTF-8 BOM before `#!` would prevent
# shebang recognition entirely. Modern PowerShell 7+ handles LF on
# Windows transparently.
*.ps1 text eol=lf


Expand Down
76 changes: 76 additions & 0 deletions .github/ISSUE_TEMPLATE/maintenance-task.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: "✨ Maintenance task"
description: "Track an actionable improvement under the Maintenance framework (security, performance, testing, cleanup, docs, API, or CI/CD)."
title: "[Maintenance] <category>: <short description>"
labels: [maintenance-task]
assignees: []
body:
- type: markdown
attributes:
value: |
## Maintenance framework sub-issue
This template creates a **`maintenance-task`** sub-issue under this repo's parent `Maintenance: <repo>` issue. The new issue will auto-appear in the cross-repo Maintenance project board (URL listed in the parent `Maintenance: <repo>` issue body).
- Pick exactly **one** category in the dropdown below. The corresponding `maintenance - <category>` label will need to be added manually after creation (issue forms don't yet support dynamic label addition).
- Fill in **Scope** (what's done & why), **Acceptance** (when do we close this?), and **Links** (PRs, scan output, related issues).
- If you're closing this issue via a PR, include `Fixes #<this-issue-number>` in the PR body so the auto-add workflow marks the project item as Done.
- type: dropdown
id: category
attributes:
label: Category
description: "Pick exactly one. After creation, also add the corresponding `maintenance - <category>` label."
options:
- "security — scans, finding fixes, dependency vulnerability audit"
- "performance — profile, benchmark, optimize, validate gains"
- "testing — coverage, integration/smoke/mutation tests, fixtures"
- "cleanup — refactor for reuse / quality / efficiency"
- "docs — XML doc coverage, README, CHANGELOG, samples"
- "API — public/internal surface audit, breaking-change vigilance"
- "CI/CD — Docker, CI workflow, build/publish pipeline"
validations:
required: true

- type: textarea
id: scope
attributes:
label: Scope
description: "What needs to be done? What's the motivation?"
placeholder: |
e.g.
- Profile the hot path in `Extractor.ExtractAsync` and identify the dominant allocations.
- Goal: reduce per-record allocations to enable streaming larger inputs.
validations:
required: true

- type: textarea
id: acceptance
attributes:
label: Acceptance criteria
description: "When do we close this issue? Concrete observable outcomes."
placeholder: |
e.g.
- Benchmark X shows <50% of current allocations.
- No regression in existing benchmark suite (>5%).
- Updated benchmark numbers committed.
validations:
required: true

- type: textarea
id: links
attributes:
label: Links
description: "Related PRs, scan output, prior issues, external references."
placeholder: |
- Related PR: #...
- Scan output: ...
- Related issue: #...
validations:
required: false

- type: markdown
attributes:
value: |
---
💡 **Tip for agents (Copilot etc.):** When opening a maintenance-task sub-issue, use this template and pick the matching category. After creation, add the `maintenance - <category>` label manually. See `.github/copilot-instructions.md` for the full Maintenance framework convention.
Comment thread
Chris-Wolfgang marked this conversation as resolved.
14 changes: 13 additions & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,20 @@ updates:
open-pull-requests-limit: 10
labels:
- "dependencies"
- "dotnet"
groups:
dotnet-dependencies:
patterns:
- "*"

# Keep third-party GitHub Actions pinned in workflows up to date.
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
labels:
- "dependencies"
groups:
github-actions:
patterns:
- "*"
12 changes: 12 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,18 @@

Fixes/Complete # (issue)

<!--
If this PR addresses a Maintenance framework sub-issue, link it explicitly so the
project board auto-marks the item as Done on merge:
Fixes #<maintenance-task-issue-number>
The Maintenance framework tracks ongoing improvement work (security, performance,
testing, cleanup, docs, API, CI/CD) — see the parent `Maintenance: <repo>` issue
for details.
-->


## Type of change

Please delete options that are not relevant.
Expand Down
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Added

### Changed

### Deprecated

### Removed

### Fixed

### Security
15 changes: 8 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,11 @@ All code is analyzed by these tools during build:
- Advanced C# pattern detection

3. **AsyncFixer**
- Detects async/await anti-patterns
- Ensures proper `ConfigureAwait()` usage
- Prevents fire-and-forget async calls
- Detects common async/await anti-patterns (AsyncFixer01–05)
- Flags missing or incorrect cancellation-token propagation
- Prevents fire-and-forget async calls (`async void` outside event handlers)
- NOTE: `ConfigureAwait()` enforcement is handled by Meziantou's
MA0004 / SonarAnalyzer S3216 / CA2007, not by AsyncFixer.

4. **Microsoft.VisualStudio.Threading.Analyzers**
- Thread safety enforcement
Expand Down Expand Up @@ -145,7 +147,7 @@ var now = DateTimeOffset.UtcNow;
## Build and Test Instructions

### Prerequisites
- .NET 8.0 SDK or later
- .NET 10.0 SDK or later (required for the repo's net10.0 target; older SDKs cannot load the csproj)
- PowerShell Core (optional, for formatting scripts)

### Build the Project
Expand Down Expand Up @@ -182,10 +184,10 @@ dotnet format
dotnet format --verify-no-changes

# PowerShell formatting script
pwsh ./format.ps1
pwsh ./scripts/format.ps1
```

See [README-FORMATTING.md](README-FORMATTING.md) for detailed formatting rules.
See [docs/README-FORMATTING.md](docs/README-FORMATTING.md) for detailed formatting rules.

---

Expand Down Expand Up @@ -237,4 +239,3 @@ Please be respectful and considerate in all interactions. See [CODE_OF_CONDUCT.m
---

Thank you for contributing! 🎉

Loading