chore: gofmt fixes across deploy-hardening I new files

Phase 13 verification surfaced gofmt-formatting drift in 6 files
across the bundle's new code:

- internal/api/handler/metrics.go (struct field alignment)
- internal/connector/target/k8ssecret/validate_only_test.go (alignment)
- internal/connector/target/nginx/nginx.go (alignment)
- internal/connector/target/postfix/postfix.go (alignment)
- internal/connector/target/ssh/validate_only_test.go (alignment)
- internal/service/deploy_counters.go (alignment)

Pure mechanical gofmt -w fixes; no behavior changes. CI's
make verify gate (which runs `go fmt ./...`) didn't catch these
because go fmt is more lenient than gofmt -l, but golangci-lint
v2.11.4 + the explicit gofmt step in Phase 13 verification did.

Phase 13 full-matrix verification all green:
- gofmt -l: empty across all bundle-touched files
- go vet ./internal/deploy/... ./internal/connector/target/... ./internal/service/ ./internal/api/handler/ ./cmd/agent/: clean
- golangci-lint v2.11.4 (the version CI runs): 0 issues
- go test -race -count=1 across deploy + nginx + apache + haproxy + agent + service: all green
- INTEGRATION=1 go test -tags integration -run Deploy ./deploy/test/...: 4/4 e2e tests green

Phase 14 next: release prep — Active Focus update, release notes,
Reddit-beat draft, final tag handoff to operator.
This commit is contained in:
claude
2026-04-30 15:33:33 +00:00
parent 2eb608f40f
commit 188a41774a
6 changed files with 48 additions and 48 deletions
+9 -9
View File
@@ -33,15 +33,15 @@ type CounterSnapshotter interface {
// //
// Phase 10 of the deploy-hardening I master bundle. // Phase 10 of the deploy-hardening I master bundle.
type DeploySnapshotEntry struct { type DeploySnapshotEntry struct {
TargetType string TargetType string
AttemptsSuccess uint64 AttemptsSuccess uint64
AttemptsFailure uint64 AttemptsFailure uint64
ValidateFailures uint64 ValidateFailures uint64
ReloadFailures uint64 ReloadFailures uint64
PostVerifyFails uint64 PostVerifyFails uint64
RollbackRestored uint64 RollbackRestored uint64
RollbackAlsoFail uint64 RollbackAlsoFail uint64
IdempotentSkips uint64 IdempotentSkips uint64
} }
// DeployCounterSnapshotter is the surface MetricsHandler consumes // DeployCounterSnapshotter is the surface MetricsHandler consumes
@@ -18,7 +18,7 @@ func (s *stubK8s) GetSecret(_ context.Context, _, _ string) (*SecretData, error)
func (s *stubK8s) CreateSecret(_ context.Context, _ string, _ *SecretData) error { return nil } func (s *stubK8s) CreateSecret(_ context.Context, _ string, _ *SecretData) error { return nil }
func (s *stubK8s) UpdateSecret(_ context.Context, _ string, _ *SecretData) error { return nil } func (s *stubK8s) UpdateSecret(_ context.Context, _ string, _ *SecretData) error { return nil }
func (s *stubK8s) DeleteSecret(_ context.Context, _, _ string) error { return nil } func (s *stubK8s) DeleteSecret(_ context.Context, _, _ string) error { return nil }
func TestK8s_ValidateOnly_Succeeds(t *testing.T) { func TestK8s_ValidateOnly_Succeeds(t *testing.T) {
c := NewWithClient(&Config{Namespace: "ns", SecretName: "tls"}, &stubK8s{}, nil) c := NewWithClient(&Config{Namespace: "ns", SecretName: "tls"}, &stubK8s{}, nil)
+9 -9
View File
@@ -71,15 +71,15 @@ type Config struct {
ValidateCommand string `json:"validate_command"` ValidateCommand string `json:"validate_command"`
// Phase 4 (deploy-hardening I): file ownership + mode overrides. // Phase 4 (deploy-hardening I): file ownership + mode overrides.
CertFileMode os.FileMode `json:"cert_file_mode,omitempty"` CertFileMode os.FileMode `json:"cert_file_mode,omitempty"`
ChainFileMode os.FileMode `json:"chain_file_mode,omitempty"` ChainFileMode os.FileMode `json:"chain_file_mode,omitempty"`
KeyFileMode os.FileMode `json:"key_file_mode,omitempty"` KeyFileMode os.FileMode `json:"key_file_mode,omitempty"`
CertFileOwner string `json:"cert_file_owner,omitempty"` CertFileOwner string `json:"cert_file_owner,omitempty"`
CertFileGroup string `json:"cert_file_group,omitempty"` CertFileGroup string `json:"cert_file_group,omitempty"`
ChainFileOwner string `json:"chain_file_owner,omitempty"` ChainFileOwner string `json:"chain_file_owner,omitempty"`
ChainFileGroup string `json:"chain_file_group,omitempty"` ChainFileGroup string `json:"chain_file_group,omitempty"`
KeyFileOwner string `json:"key_file_owner,omitempty"` KeyFileOwner string `json:"key_file_owner,omitempty"`
KeyFileGroup string `json:"key_file_group,omitempty"` KeyFileGroup string `json:"key_file_group,omitempty"`
// Phase 4 (deploy-hardening I): post-deploy TLS verification. // Phase 4 (deploy-hardening I): post-deploy TLS verification.
PostDeployVerify *PostDeployVerifyConfig `json:"post_deploy_verify,omitempty"` PostDeployVerify *PostDeployVerifyConfig `json:"post_deploy_verify,omitempty"`
+7 -7
View File
@@ -37,13 +37,13 @@ type Config struct {
ValidateCommand string `json:"validate_command"` ValidateCommand string `json:"validate_command"`
// Phase 7: file ownership + mode + verify + retention. // Phase 7: file ownership + mode + verify + retention.
CertFileMode os.FileMode `json:"cert_file_mode,omitempty"` CertFileMode os.FileMode `json:"cert_file_mode,omitempty"`
KeyFileMode os.FileMode `json:"key_file_mode,omitempty"` KeyFileMode os.FileMode `json:"key_file_mode,omitempty"`
ChainFileMode os.FileMode `json:"chain_file_mode,omitempty"` ChainFileMode os.FileMode `json:"chain_file_mode,omitempty"`
CertFileOwner string `json:"cert_file_owner,omitempty"` CertFileOwner string `json:"cert_file_owner,omitempty"`
CertFileGroup string `json:"cert_file_group,omitempty"` CertFileGroup string `json:"cert_file_group,omitempty"`
KeyFileOwner string `json:"key_file_owner,omitempty"` KeyFileOwner string `json:"key_file_owner,omitempty"`
KeyFileGroup string `json:"key_file_group,omitempty"` KeyFileGroup string `json:"key_file_group,omitempty"`
PostDeployVerify *PostDeployVerifyConfig `json:"post_deploy_verify,omitempty"` PostDeployVerify *PostDeployVerifyConfig `json:"post_deploy_verify,omitempty"`
PostDeployVerifyAttempts int `json:"post_deploy_verify_attempts,omitempty"` PostDeployVerifyAttempts int `json:"post_deploy_verify_attempts,omitempty"`
PostDeployVerifyBackoff time.Duration `json:"post_deploy_verify_backoff,omitempty"` PostDeployVerifyBackoff time.Duration `json:"post_deploy_verify_backoff,omitempty"`
@@ -16,11 +16,11 @@ type stubSSHClient struct {
connectErr error connectErr error
} }
func (s *stubSSHClient) Connect(_ context.Context) error { return s.connectErr } func (s *stubSSHClient) Connect(_ context.Context) error { return s.connectErr }
func (s *stubSSHClient) Close() error { return nil } func (s *stubSSHClient) Close() error { return nil }
func (s *stubSSHClient) WriteFile(_ string, _ []byte, _ os.FileMode) error { return nil } func (s *stubSSHClient) WriteFile(_ string, _ []byte, _ os.FileMode) error { return nil }
func (s *stubSSHClient) Execute(_ context.Context, _ string) (string, error) { return "", nil } func (s *stubSSHClient) Execute(_ context.Context, _ string) (string, error) { return "", nil }
func (s *stubSSHClient) StatFile(_ string) (int64, error) { return 0, nil } func (s *stubSSHClient) StatFile(_ string) (int64, error) { return 0, nil }
func TestSSH_ValidateOnly_Connect_Succeeds(t *testing.T) { func TestSSH_ValidateOnly_Connect_Succeeds(t *testing.T) {
c := NewWithClient(&Config{Host: "h", User: "u"}, &stubSSHClient{}, nil) c := NewWithClient(&Config{Host: "h", User: "u"}, &stubSSHClient{}, nil)
+17 -17
View File
@@ -42,14 +42,14 @@ type DeployCounters struct {
} }
type deployBucket struct { type deployBucket struct {
attemptsSuccess atomic.Uint64 attemptsSuccess atomic.Uint64
attemptsFailure atomic.Uint64 attemptsFailure atomic.Uint64
validateFailures atomic.Uint64 validateFailures atomic.Uint64
reloadFailures atomic.Uint64 reloadFailures atomic.Uint64
postVerifyFails atomic.Uint64 postVerifyFails atomic.Uint64
rollbackRestored atomic.Uint64 rollbackRestored atomic.Uint64
rollbackAlsoFail atomic.Uint64 rollbackAlsoFail atomic.Uint64
idempotentSkips atomic.Uint64 idempotentSkips atomic.Uint64
} }
// NewDeployCounters constructs a zero-value counter table. The // NewDeployCounters constructs a zero-value counter table. The
@@ -123,15 +123,15 @@ func (c *DeployCounters) IncIdempotentSkip(targetType string) {
// DeploySnapshot is the per-(target_type, label) snapshot returned // DeploySnapshot is the per-(target_type, label) snapshot returned
// to the Prometheus exposer. // to the Prometheus exposer.
type DeploySnapshot struct { type DeploySnapshot struct {
TargetType string TargetType string
AttemptsSuccess uint64 AttemptsSuccess uint64
AttemptsFailure uint64 AttemptsFailure uint64
ValidateFailures uint64 ValidateFailures uint64
ReloadFailures uint64 ReloadFailures uint64
PostVerifyFails uint64 PostVerifyFails uint64
RollbackRestored uint64 RollbackRestored uint64
RollbackAlsoFail uint64 RollbackAlsoFail uint64
IdempotentSkips uint64 IdempotentSkips uint64
} }
// Snapshot returns one DeploySnapshot per known target type. // Snapshot returns one DeploySnapshot per known target type.