Skip to content

[Epic]: Support external validation controller integration #731

Description

@xdu31

Overview

Enable external consumers to use AICR as a validation planning engine by exposing public Go package exports and extracting portable validation types.

Context

External consumers want to use AICR's validation logic programmatically without using the CLI. Use cases include:

  1. Embedding AICR types in custom data structures or APIs
  2. Getting Job specs from AICR and deploying them with custom orchestration
  3. Building higher-level validation workflows using AICR as a library

AICR needs to expose:

  1. Portable Go types that can be embedded or extended
  2. Planning functions that return Job specs without deploying them
  3. Result extraction that is sidecar-safe
  4. Utility functions for common operations

Architecture

  • AICR role: Provide planning functions (build Job specs from validation configs) and result extraction
  • Consumer role: Use AICR types, get Job specs, handle deployment and orchestration
  • Separation: AICR stays focused on validation logic, consumers handle deployment

Required Changes

This is a tracking issue for the following changes:

Phase 1: Extract Portable Types (Parallel)

Phase 2: Core Go Package Exports (Depends on Phase 1)

Deferred (Add Only When Second Consumer Demonstrates Need)

Implementation Order

  1. Phase 1: Extract portable types (Extract Validation as standalone portable type from pkg/recipe #732, Extract ValidatorCatalog as standalone portable type #733 - parallel)
  2. Phase 2: Core Go package exports (Add public RenderJob() function returning Job specs #734, Make ExtractResult sidecar-safe by reading from 'validator' container explicitly #795, Export FilterEntriesBySpec() for external catalog filtering #736 - parallel, depends on Phase 1)
  3. Deferred: Helpers - only if second consumer needs them

Benefits

  • External consumers can use AICR as a library
  • AICR types become reusable in other projects
  • Planning functions enable custom deployment strategies
  • Minimal public Go package surface keeps semver manageable
  • Prevents consumer divergence from AICR renderer
  • Internal testability through Plan() separation

Metadata

Metadata

Assignees

Type

Fields

No fields configured for Epic.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions