You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Several assessors that should apply to Go projects either skip with "Not applicable" or fail because their measurement logic is Python/JS-specific. Running v2.31.2 against a Go-majority repo (89 Go / 9 Python files) produces false negatives across five attributes and falsely skips two more, materially understating the score.
This was hinted at in #329 (which planned assessors/langs/go.py) but the language-modular work doesn't appear to have shipped yet for Go.
Proposed Solution
Implement assessors/langs/go.py per the structure described in #329, covering:
Attribute
Today on Go repos
What Go offers
test_coverage
Skipped: "Not applicable to YAML/Markdown/Go/JSON/Shell/Python"
go test -cover produces standard coverage.out profiles. Detect via go.mod + *_test.go.
structured_logging
Skipped: "No Python dependency files found"
Detect log/slog (stdlib, Go 1.21+), zap, zerolog, logrus via go.sum import scan.
type_annotations
Fails (24.6% — measures Python type hints)
Go is statically typed by construction. For typed languages, this attribute should pass-by-default or be N/A.
Go's // doc-comment convention on exported identifiers, enforceable via revive / staticcheck.
standard_layout
Fails (0/2 — looks for src/ + tests/)
Go's standard layout is cmd/ + internal/ + pkg/ (reference). Detection signal: go.mod present.
Alternatives Considered
Per-language config overrides — Have users disable irrelevant assessors with --exclude. Doesn't help leaderboard comparability and pushes the work onto every Go-repo submitter.
Mark all five as N/A on Go — Removes the false negative but undercounts coverage; better to measure the Go-equivalent.
Defer to existing Go tooling — gocoverage, staticcheck for docs, etc. as subprocesses. Heavier dependency surface; the detections above are mostly grep-level.
Use Cases
Submitting a Go-majority repo to the leaderboard without first hand-arguing the score (concrete example: fullsend-ai/fullsend submission for fullsend-ai/fullsend#538).
Cross-language fairness on the leaderboard — Python repos shouldn't have a structural advantage from happening to match the assessor's default measurement method.
Problem Statement
Several assessors that should apply to Go projects either skip with "Not applicable" or fail because their measurement logic is Python/JS-specific. Running v2.31.2 against a Go-majority repo (89 Go / 9 Python files) produces false negatives across five attributes and falsely skips two more, materially understating the score.
This was hinted at in #329 (which planned
assessors/langs/go.py) but the language-modular work doesn't appear to have shipped yet for Go.Proposed Solution
Implement
assessors/langs/go.pyper the structure described in #329, covering:test_coveragego test -coverproduces standardcoverage.outprofiles. Detect viago.mod+*_test.go.structured_logginglog/slog(stdlib, Go 1.21+),zap,zerolog,logrusviago.sumimport scan.type_annotationsinline_documentation//doc-comment convention on exported identifiers, enforceable viarevive/staticcheck.standard_layoutsrc/+tests/)cmd/+internal/+pkg/(reference). Detection signal:go.modpresent.Alternatives Considered
--exclude. Doesn't help leaderboard comparability and pushes the work onto every Go-repo submitter.gocoverage,staticcheckfor docs, etc. as subprocesses. Heavier dependency surface; the detections above are mostly grep-level.Use Cases
Additional Context
Reproduction (against
fullsend-ai/fullsend@cba01190):After accounting for the items above, the realistic assessable count is 24/29 and three of those would almost certainly pass.
Acceptance Criteria
assessors/langs/go.pymodule exists per [FEATURE] Extract language-specific assessor logic into separate modules #329's structuretest_coveragerecognises Go (go.mod+*_test.go)structured_loggingrecogniseslog/slog,zap,zerolog,logrustype_annotationseither passes for Go or marks N/A consistently with other typed-by-construction languagesinline_documentationrecognises Go doc-comments on exported identifiersstandard_layoutrecognisescmd/+internal/(and/orpkg/) as a valid layoutPriority