chore: adopt the standard docs, editor config and SDK pin - #11
Merged
Conversation
PR B of the NextIteration.Standards adoption sequence. Closes 1.9, 4.11, 5.2, 5.4 and 5.7 for this repo. Touches no CI and no ruleset. SECURITY.md and CLAUDE.md are written for this repo rather than copied. The template's SECURITY.md scope section describes Auth's credential encryption, which is not what this library does: it writes plain-text JSON, so the useful thing to state is that settings are not secrets and that atomic writes are a crash-consistency guarantee rather than a concurrency one. CLAUDE.md's "easy to get wrong here" list names the four traps this codebase actually has -- the inert-until-Bind rule that stops load from triggering a write, the debounced fire-and-forget path that no test may sleep against, AtomicFile's deliberately per-platform replace primitive, and tolerant deserialisation being the on-disk contract rather than a convenience. global.json gains the SDK pin. It previously set only the test runner, which left the SDK floating, so a contributor on an older SDK gets different analyzer results from CI and TreatWarningsAsErrors turns that into a build that fails for them and passes for everyone else. The canonical .editorconfig scopes the private-field naming rule to instance fields; a const is a field, so the old rule wanted _nonceSize for `private const int NonceSize`. EnforceCodeStyleInBuild is NOT enabled -- 1.2.1 is blocked. No tracked file becomes ignored by the canonical .gitignore. Build clean at zero warnings and 64/64 tests pass on net8.0 and net10.0 with the pinned SDK (10.0.111, via latestFeature from the 10.0.100 band). 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
PR B of the NextIteration.Standards adoption sequence — docs and config. Closes §1.9, §4.11, §5.2, §5.4 and §5.7. Touches no CI and no ruleset.
SECURITY.md,CONTRIBUTING.md,.github/PULL_REQUEST_TEMPLATE.md,CLAUDE.mdadded..gitignoreand.editorconfigreplaced with the canonical copies.global.jsongains the SDK pin.Why
SECURITY.mdandCLAUDE.mdare written for this repo, not copied. The template'sSECURITY.mdscope section describes Auth's credential encryption, which is not what this library does. It writes plain-text JSON, so the useful thing to state is that settings are explicitly not a place for secrets (that is what Auth is for), that the consumer owns the directory it chooses, and that atomic writes are a crash-consistency guarantee rather than a concurrency one.CLAUDE.md's "easy to get wrong here" list names four traps this codebase actually has: the inert-until-Bindrule that stops load from triggering a write; the debounced fire-and-forget path no test may sleep against;AtomicFile's deliberately per-platform replace primitive; and tolerant deserialisation being the on-disk contract rather than a convenience. A genericCLAUDE.mdwould be worth nothing.The SDK pin closes a real asymmetry.
global.jsonpreviously set only the test runner, leaving the SDK floating — so a contributor on an older SDK gets different analyzer results from CI, andTreatWarningsAsErrorsturns that into a build that fails for them and passes for everyone else.EnforceCodeStyleInBuildis not enabled. §1.2.1 is blocked; it produced 490 build errors in Auth.The
.editorconfigchange scopes the private-field naming rule to instance fields — aconstis a field, so the old rule demanded_nonceSizeforprivate const int NonceSize.Consumer impact
None. No public API, target framework, dependency floor or on-disk format change. Verified that no currently tracked file becomes ignored by the canonical
.gitignore.Checklist
TreatWarningsAsErrorsis on)net8.0andnet10.0with the pinned SDK (10.0.111, resolved vialatestFeaturefrom the 10.0.100 band)CHANGELOG.mdupdated under[Unreleased]🤖 Generated with Claude Code