chore: adopt the standards baseline docs and config - #26
Merged
Conversation
STANDARD.md sections 1.9, 4.11, 5.2, 5.4 and 5.7. Low risk: no CI change, no ruleset work, no build behaviour change. global.json (1.9) previously pinned only the Microsoft.Testing.Platform runner and left the SDK floating, so a contributor on an older SDK gets different analyzer results from CI — and with TreatWarningsAsErrors that is a build which fails for them and passes for everyone else. Now 10.0.100 with rollForward: latestFeature. The canonical .editorconfig (5.2) carries one substantive fix over this repo's copy: the private-field naming rule matched constants, because a const IS a field under applicable_kinds = field, so it demanded _nonceSize for `private const int NonceSize`. An empty required_modifiers scopes it to instance fields. EnforceCodeStyleInBuild is off (1.2.1 is blocked), so this changes no build outcome today and is correct for when it does. The canonical .gitignore is this repo's own, upstreamed — the only delta is dropping a duplicate trailing `artifacts/` that the canonical copy already covers twice. Verified artifacts/ is still ignored. SECURITY.md (4.11) is not the template verbatim. Reporting and Supported versions are; Scope is rewritten, because the template's is about credential storage and would have described types this package does not contain. The replacement states what is actually claimed: SHA-256 gives integrity, not authenticity — the expected hash ships from the same release as the asset and there is no signature checking; AllowInsecureManifestSource and UseDefaultSha256Verifier=false defeat verification by design and are documented as such; traversal defence is ZipFile/TarFile's, not ours; GhCliReleaseSource trusts whatever `gh` is on PATH. CLAUDE.md (5.7) points at the standards repo for the baseline rather than restating clauses locally, and spends its repo-specific section on things an agent would otherwise get wrong here. Verified: Release build 0 warnings, 392 tests passing across net8.0 and net10.0 on the pinned SDK. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
What changed
STANDARD.md §1.9, §4.11, §5.2, §5.4, §5.7. No CI change, no ruleset work, no build behaviour change.
global.jsonpins the SDK (10.0.100,rollForward: latestFeature), not just the MTP runner..gitignoreand.editorconfigreplaced with the canonical copies.SECURITY.mdadded, with a rewritten scope section — see below.CONTRIBUTING.md,.github/PULL_REQUEST_TEMPLATE.md,CLAUDE.mdadded.Why
§1.9 — an unpinned SDK means a contributor on an older one gets different analyzer results from CI, and
TreatWarningsAsErrorsturns that into a build that fails for them and passes for everyone else.§5.2 — the canonical
.editorconfigcarries one substantive fix over this repo's copy: the private-field naming rule matched constants, because aconstis a field underapplicable_kinds = field, so it demanded_nonceSizeforprivate const int NonceSize. An emptyrequired_modifiersscopes it to instance fields.EnforceCodeStyleInBuildis off (§1.2.1 is blocked), so this changes no build outcome today and is correct for when it does.The canonical
.gitignoreis this repo's own, upstreamed as the canonical copy — the only delta is dropping a duplicate trailingartifacts/the canonical file already covers twice. Verifiedartifacts/is still ignored (git check-ignoreresolves to.gitignore:237).§4.11 —
SECURITY.mdis deliberately not the template verbatim. Reporting and Supported versions are; Scope is rewritten, because the template's scope is about credential storage and would have described types this package does not contain. A security policy describing the wrong library is worse than none. The replacement states what is actually claimed here:AllowInsecureManifestSourceandUseDefaultSha256Verifier = falsedefeat verification by design and are documented as tests/trusted-network only.ZipFile/TarFile's guard, not this library's.GhCliReleaseSourcetrusts whateverghis onPATH.§5.7 —
CLAUDE.mdpoints at the standards repo for the baseline rather than restating clauses locally (a local copy of a clause is a copy that drifts), and spends its repo-specific section on things an agent would otherwise get wrong: why the three-platform matrix is load-bearing here, why one install-lock test returns early on Windows by design, and thatPackageValidationBaselineVersiontracks the last shipped release.Checklist
TreatWarningsAsErrorsis on)CHANGELOG.mdupdated under[Unreleased]Consumer impact
None. No change to the library, its public surface, or the package contents.
<Version>is untouched and no tag is pushed.🤖 Generated with Claude Code