Skip to content

[task] Consolidate generic validation functions into validation.go #2277

@github-actions

Description

@github-actions

Objective

Consolidate scattered generic validation functions from multiple files into the central pkg/workflow/validation.go file, while keeping domain-specific validation in their respective files.

Context

Part of issue #2273. Validation logic is scattered across 12 files with 35+ validation functions. Generic validation functions should be centralized in validation.go, while domain-specific validation (e.g., Docker, npm, pip, expression safety) should remain in domain files.

Functions to Move to validation.go

From compiler.go (4 validation functions):

  • Move generic validation functions (identify during implementation)

From cache.go:

  • validateNoDuplicateCacheIDs

From redact_secrets.go:

  • validateSecretReferences

Functions to KEEP in Domain Files

These should NOT be moved (domain-specific validation):

  • expression_safety.go: validateExpressionSafety, validateSingleExpression
  • docker.go: validateDockerImage
  • npm.go: validateNpxPackages
  • pip.go: validatePipPackages, validateUvPackages, etc.
  • strict_mode.go: validateStrictMode, validateStrictPermissions

Approach

  1. Review all validation functions in compiler.go to identify generic ones
  2. Move generic validation functions to validation.go
  3. Move validateNoDuplicateCacheIDs from cache.go
  4. Move validateSecretReferences from redact_secrets.go
  5. Keep domain-specific validation in their respective files
  6. Update imports and references

Files to Modify

  • Update: pkg/workflow/validation.go (add moved functions)
  • Update: pkg/workflow/compiler.go (remove generic validation)
  • Update: pkg/workflow/cache.go (remove validateNoDuplicateCacheIDs)
  • Update: pkg/workflow/redact_secrets.go (remove validateSecretReferences)

Acceptance Criteria

AI generated by Plan Command for #2273

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions