Documentation
¶
Overview ¶
Package quality runs read-only coverage and verification checks for a local repository fleet. It deliberately reports every selected repository instead of stopping at the first failure, so people and AI agents can act on one complete index.
Index ¶
- func SingleWorkerNodeEnv() []string
- func SortVerificationReports(reports []VerificationReport)
- type Check
- type CoverageDiagnostic
- type CoverageDiagnosticFile
- type CoverageDiagnosticManifest
- type CoverageReport
- type ModuleCoverage
- type Progress
- type ProgressState
- type RepositoryCoverage
- type RunOptions
- type Status
- type VerificationEntry
- type VerificationReport
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SingleWorkerNodeEnv ¶ added in v0.88.0
func SingleWorkerNodeEnv() []string
SingleWorkerNodeEnv is the environment a single-worker Node run must carry. It is exported so a caller that composes its own command still states the same environment the profile does.
func SortVerificationReports ¶
func SortVerificationReports(reports []VerificationReport)
SortVerificationReports orders reports for deterministic output.
Types ¶
type Check ¶
type Check string
Check selects a conventional verification class.
func ParseChecks ¶
ParseChecks validates the explicit --checks list. A missing list defaults to the conventional lint, test, build sequence.
type CoverageDiagnostic ¶ added in v0.67.9
type CoverageDiagnostic struct {
Manifest string `yaml:"manifest" json:"manifest"`
SHA256 string `yaml:"sha256" json:"sha256"`
}
CoverageDiagnostic points at the private manifest containing lossless raw output for failed coverage jobs.
type CoverageDiagnosticFile ¶ added in v0.67.9
type CoverageDiagnosticManifest ¶ added in v0.67.9
type CoverageDiagnosticManifest struct {
SchemaVersion int `yaml:"schema_version" json:"schema_version"`
Repository string `yaml:"repository" json:"repository"`
Module string `yaml:"module" json:"module"`
Files []CoverageDiagnosticFile `yaml:"files" json:"files"`
}
CoverageDiagnosticManifest is intentionally separate from CoverageReport: it contains unbounded command output and therefore stays in the private report root rather than crossing the bounded hook/session boundary.
type CoverageReport ¶
type CoverageReport struct {
SchemaVersion int `yaml:"schema_version" json:"schema_version"`
Repositories []RepositoryCoverage `yaml:"repositories" json:"repositories"`
Statements int `yaml:"statements" json:"statements"`
Covered int `yaml:"covered" json:"covered"`
Percentage float64 `yaml:"percentage" json:"percentage"`
}
CoverageReport is a deterministic, machine-readable coverage index.
func NewCoverageReport ¶
func NewCoverageReport(repositories []RepositoryCoverage) CoverageReport
NewCoverageReport aggregates reports in deterministic repository order.
type ModuleCoverage ¶
type ModuleCoverage struct {
Path string `yaml:"path" json:"path"`
Statements int `yaml:"statements" json:"statements"`
Covered int `yaml:"covered" json:"covered"`
Percentage float64 `yaml:"percentage" json:"percentage"`
Attempts int `yaml:"attempts,omitempty" json:"attempts,omitempty"`
}
ModuleCoverage records the statement totals from one Go module's generated coverage profile.
type Progress ¶ added in v0.50.0
type Progress struct {
Repository string
Language string
Module string
Check Check
Command string
State ProgressState
Status Status
Attempts int
}
Progress describes one external check or a completed repository. Repository is filled by the fleet runner, which owns cross-repository scheduling.
type ProgressState ¶ added in v0.50.0
type ProgressState string
ProgressState identifies a visible quality-work transition.
const ( ProgressStarted ProgressState = "started" ProgressCompleted ProgressState = "completed" ProgressRepositoryCompleted ProgressState = "repository_completed" )
type RepositoryCoverage ¶
type RepositoryCoverage struct {
Repository string `yaml:"repository" json:"repository"`
Path string `yaml:"path" json:"path"`
Status Status `yaml:"status" json:"status"`
Modules []ModuleCoverage `yaml:"modules,omitempty" json:"modules,omitempty"`
Statements int `yaml:"statements" json:"statements"`
Covered int `yaml:"covered" json:"covered"`
Percentage float64 `yaml:"percentage" json:"percentage"`
Error string `yaml:"error,omitempty" json:"error,omitempty"`
Diagnostic *CoverageDiagnostic `yaml:"diagnostic,omitempty" json:"diagnostic,omitempty"`
}
RepositoryCoverage records aggregate Go coverage for one repository.
func Cover ¶
func Cover(ctx context.Context, repository, path string) RepositoryCoverage
Cover measures all Go modules below path. It creates profiles in the system temporary directory, never in the repository.
func CoverWithOptions ¶
func CoverWithOptions(ctx context.Context, repository, path string, options RunOptions) RepositoryCoverage
CoverWithOptions measures coverage with a deadline and retries for each Go module's test command.
type RunOptions ¶
type RunOptions struct {
Timeout time.Duration
Retry int
// GoTestShards runs each explicitly named Go package in this many
// process-isolated shards. It is opt-in because TestMain and process-global
// fixtures run once per shard; callers must name packages whose contract
// permits that isolation. Discovery invokes TestMain once before each shard
// process invokes it again.
GoTestShards int
// GoShardPackages are module-relative package patterns such as
// ./internal/worktrees. Packages not named here still run exactly once.
GoShardPackages []string
// CoverageProfile retains the exact merged Go profile for one module.
// Fleet and multi-module adapters reject it rather than inventing names.
CoverageProfile string
// CoverageDiagnosticsDir retains raw output from failed process-isolated
// coverage jobs beside the durable coverage report. The human-facing error
// remains bounded; this private artifact is the lossless recovery path.
CoverageDiagnosticsDir string
// CoverageDiagnosticsRepository identifies the owning repository in the
// private manifest when a fleet runner executes several repositories.
CoverageDiagnosticsRepository string
// SingleWorker constrains every check to one worker, so a verification
// run cannot exceed the workstation's concurrency cap on its own. Go tests
// gain `-p 1` and never `-race`; Node runs gain `--parallel=1` and
// `--maxWorkers=1` with the Nx daemon and cache disabled.
//
// Serialization is deliberately *not* a substitute for per-file
// isolation: nothing here relaxes an isolation flag, because a serialized
// leak is worse than a flake — it is reproducible and misattributed.
SingleWorker bool
// Env is appended to each check's environment as KEY=VALUE entries. It is
// how a caller states the environment a run must carry (GOWORK=off,
// NX_DAEMON=false) rather than leaving it to the shell that invoked wb.
Env []string
// Progress receives lifecycle events for external checks. Callers may use it
// for terminal diagnostics; reports remain the authoritative output.
Progress func(Progress)
}
RunOptions bounds a single external command and retries only failed attempts. Zero Timeout disables the per-command deadline.
func RepositoryRunOptions ¶ added in v0.67.1
func RepositoryRunOptions(root string, base RunOptions) (RunOptions, error)
RepositoryRunOptions applies an explicit repository-owned quality policy to one validation run. Absence is the portable default; malformed or ambiguous policy fails closed rather than silently falling back to a slower or weaker command.
type Status ¶
type Status string
Status is the outcome of a repository or a discrete verification command.
type VerificationEntry ¶
type VerificationEntry struct {
Language string `yaml:"language" json:"language"`
Module string `yaml:"module,omitempty" json:"module,omitempty"`
Check Check `yaml:"check" json:"check"`
Command string `yaml:"command,omitempty" json:"command,omitempty"`
Status Status `yaml:"status" json:"status"`
Detail string `yaml:"detail,omitempty" json:"detail,omitempty"`
Attempts int `yaml:"attempts,omitempty" json:"attempts,omitempty"`
}
VerificationEntry is one command WB attempted or intentionally skipped.
type VerificationReport ¶
type VerificationReport struct {
Repository string `yaml:"repository" json:"repository"`
Path string `yaml:"path" json:"path"`
// Revision and WorkspaceClean are populated by the WB command adapter
// around the complete verification run. They let a downstream receipt bind
// successful mechanisms to the exact clean Git tree they exercised.
Revision string `yaml:"revision,omitempty" json:"revision,omitempty"`
WorkspaceClean bool `yaml:"workspace_clean,omitempty" json:"workspace_clean,omitempty"`
Status Status `yaml:"status" json:"status"`
Results []VerificationEntry `yaml:"results" json:"results"`
}
VerificationReport records all conventional checks applicable to a repository. Unsupported stacks and missing optional Node scripts are skipped rather than treated as failures.
func Verify ¶
func Verify(ctx context.Context, repository, path string, checks []Check) VerificationReport
Verify runs the requested conventional Go and Node checks. The caller owns cross-repository parallelism; checks within one module run in the requested order to keep output and failures clear.
func VerifyWithOptions ¶
func VerifyWithOptions(ctx context.Context, repository, path string, checks []Check, options RunOptions) VerificationReport
VerifyWithOptions runs the requested checks with per-command reliability controls. The returned report includes every attempted, skipped, passed, or failed command.