feat: standardize the Go CONTRIBUTING files instead of emptying them - #89
Merged
Conversation
The capability states Go formatting as corpus requirements. Formatting is not externally observable behavior, and the strain shows in the scenarios written to fit the format: "a parameter is added, the diff shows one added line" is a rationale for a preference, not a behavior. The duplication it was written to end has not ended. Every Go repository lists the linter set as errcheck, errname, goimports, govet, prealloc, predeclared, revive, staticcheck. Each .golangci.yml enables unused, which no prose mentions, and puts goimports under formatters. Five copies of one stale approximation of a file beside it. Proposes three homes: policy no tool reports on stays in the corpus, anything a tool enforces becomes its configuration, and the rest returns to CONTRIBUTING.md as a fragment distributed the way shared recipes already are. Planning artifacts only. No repository is touched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Thank you for contributing to this project! 😊🕹️ |
retr0h
added a commit
that referenced
this pull request
Aug 16, 2026
PR #89 was squash-merged from its first commit, so main carries the version that moved conventions out to a fetched fragment. The rewrite that replaced it -- every repository states its conventions in full, with the five files structurally identical -- was pushed to the branch after the merge and never landed. This restores it: the repo-standards delta fixing the middle sections, sentence-case headings, and stating conventions in full, with the shared-contributor-documentation capability dropped. Also syncs repo-standards into openspec/specs/. It existed only inside two unarchived changes, so the delta above had nothing to land on and five repositories cited a capability the corpus did not hold. Merged from the standardize-repository-layout and specify-agent-tool-invocation deltas: 16 requirements, 44 scenarios. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This was referenced Aug 16, 2026
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.
Rewritten after review. The first version moved conventions out of the repositories into a fetched fragment. What's wanted is the opposite: every repository states its conventions in full, and the five files look the same.
Planning artifacts only — no repository is touched, and no convention is relaxed.
The actual problem
repo-standardsfixes the opening and closing sections ofCONTRIBUTING.md, then says: "The middle varies by repository, because what a contributor needs to know differs." That sentence is why the five Go repos disagree:Function signaturesCode styleCode styleCode standardsGo patternsTestingCode styleCode styleCode standardsCode standardsFunction SignaturesFunction signaturesFunction signaturesFunction SignaturesPackage StructureProject Structure+Package StructureProject structureA reader comparing two repos can't tell whether a difference in the document means a difference in the rule.
What changes
repo-standards— the middle becomes named and ordered, like the opening and closing already are:Setup→Project structure→Code style→Code standards→Testing→ (repo-specific, afterTesting)Plus three new requirements:
mdformatdoesn't touch heading case, so nothing enforces it today and three repos are wrong..golangci.yml, don't reproduce it.go-code-standards— still narrows to what no tool reports on (mocks are generated; no re-covering via an exported alias). The five formatting requirements leave the corpus, but they now land in everyCONTRIBUTING.mdrather than in a fragment.Why prose restating config has to go
Every Go repo lists the linters as "errcheck, errname, goimports, govet, prealloc, predeclared, revive, staticcheck". Every
.golangci.ymlenablesunused— mentioned in no prose — and putsgoimportsunderformatters:, not among the linters. Five identical copies of a wrong summary of the file beside them.Blocking dependency
repo-standardsis not inopenspec/specs/. It exists only inside two unarchived changes, so this delta has nothing to land on. Task 1.6 syncs it first — the same step #88 took forgo-code-standards.Trade-off taken deliberately
Five committed copies can drift. That's accepted: identical headings in a fixed order make a diverging body visible in a side-by-side read, which the free-form middle did not.
Also widens the mocks requirement
Three hand-written doubles were found. Two are genuine violations.
osapi'smockPKISignersigns with a real generated ed25519 key pair — converting it would swap working cryptography for a canned return. A scenario now draws that line.Supersedes
osapi-io/osapi-orchestrator#76 is held as a draft and is superseded by task 3.2.
just test— 12 passed, 0 failed.🤖 Generated with Claude Code