From 97a561c809689260a611df2fd5b1400bbe552242 Mon Sep 17 00:00:00 2001 From: Snider Date: Sun, 22 Feb 2026 23:31:46 +0000 Subject: [PATCH] feat(qa): restore docblock check via go-devops import Now that go-devops imports core/cli (not core/go/pkg/cli), the circular dependency is resolved. Restore the docblock coverage check using qa.CheckDocblockCoverage(). Co-Authored-By: Virgil --- cmd/gocmd/cmd_qa.go | 11 +++++++++-- go.mod | 1 + go.sum | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/cmd/gocmd/cmd_qa.go b/cmd/gocmd/cmd_qa.go index 73a8773..1c9973a 100644 --- a/cmd/gocmd/cmd_qa.go +++ b/cmd/gocmd/cmd_qa.go @@ -11,6 +11,7 @@ import ( "time" "forge.lthn.ai/core/cli/pkg/cli" + "forge.lthn.ai/core/go-devops/cmd/qa" "forge.lthn.ai/core/go/pkg/i18n" ) @@ -613,8 +614,14 @@ func runInternalCheck(check QACheck) (string, error) { return "", runGoFuzz(duration, "", "", qaVerbose) case "docblock": - // TODO: migrate to go-devops/cmd/qa.CheckDocblockCoverage once circular dep resolved - return "", cli.Err("docblock check not yet available (pending go-devops migration)") + result, err := qa.CheckDocblockCoverage([]string{"./..."}) + if err != nil { + return "", err + } + if result.Coverage < qaDocblockThreshold { + return "", cli.Err("docblock coverage %.1f%% below threshold %.1f%%", result.Coverage, qaDocblockThreshold) + } + return fmt.Sprintf("docblock coverage: %.1f%% (%d/%d)", result.Coverage, result.Documented, result.Total), nil default: return "", cli.Err("unknown internal check: %s", check.Name) diff --git a/go.mod b/go.mod index 7af1bd5..e3ffa6e 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( forge.lthn.ai/Snider/Borg v0.2.1 forge.lthn.ai/core/cli v0.0.1 forge.lthn.ai/core/go-crypt v0.0.1 + forge.lthn.ai/core/go-devops v0.0.0-20260222232858-ac6cff9b1868 github.com/aws/aws-sdk-go-v2 v1.41.1 github.com/aws/aws-sdk-go-v2/service/s3 v1.96.0 github.com/gorilla/websocket v1.5.3 diff --git a/go.sum b/go.sum index b93ec83..f2c47e0 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,8 @@ forge.lthn.ai/core/cli v0.0.1 h1:nqpc4Tv8a4H/ERei+/71DVQxkCFU8HPFJP4120qPXgk= forge.lthn.ai/core/cli v0.0.1/go.mod h1:xa3Nqw3sUtYYJ1k+1jYul18tgs6sBevCUsGsHJI1hHA= forge.lthn.ai/core/go-crypt v0.0.1 h1:fmFc2SJ/VOXDRjkcYoLWfL7lI4HfPJeVS/Na6zHHcvw= forge.lthn.ai/core/go-crypt v0.0.1/go.mod h1:/j/rUN2ZMV7x1B5BYxH3QdwkgZg0HNBw5XuyFZeyxBY= +forge.lthn.ai/core/go-devops v0.0.0-20260222232858-ac6cff9b1868 h1:jm2S0VbzjejUbkyA8fW0V1dp6cJOry7twfGzM/R/0Xg= +forge.lthn.ai/core/go-devops v0.0.0-20260222232858-ac6cff9b1868/go.mod h1:A/0iKmL8VcZbclOZvoE2mg8bNi75Sn8Fgzk8hQ8y70k= github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw= github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= github.com/aws/aws-sdk-go-v2 v1.41.1 h1:ABlyEARCDLN034NhxlRUSZr4l71mh+T5KAeGh6cerhU=