← Back to TODO 02 PRE BEACON

CRITICAL IMPLEMENTATION GAPS 01

Documentation for CRITICAL_IMPLEMENTATION_GAPS_01 from the Ds ex repository.

I’ll conduct a comprehensive review of your DSPEx implementation to identify what needs to be completed before BEACON integration.Based on my comprehensive review of your DSPEx implementation and analysis of DSPy’s BEACON requirements, I’ve identified several critical gaps that must be addressed before BEACON integration. Let me provide a detailed assessment:

Critical Implementation Gaps for BEACON Integration

1. Missing Core Infrastructure

A. DSPEx.Teleprompter Behavior Not Implemented

  • Status: ❌ CRITICAL MISSING
  • Issue: Your BEACON implementation references @behaviour DSPEx.Teleprompter but this behavior is not defined anywhere in your codebase
  • Required:
    # lib/dspex/teleprompter.ex - MISSING
    defmodule DSPEx.Teleprompter do
      @callback compile(
        student :: DSPEx.Program.t(),
        teacher :: DSPEx.Program.t(), 
        trainset :: [DSPEx.Example.t()],
        metric_fn :: function(),
        opts :: keyword()
      ) :: {:ok, DSPEx.Program.t()} | {:error, term()}
    end
    

B. DSPEx.OptimizedProgram Module Missing

  • Status: ❌ CRITICAL MISSING
  • Issue: BEACON’s create_optimized_student/2 function references DSPEx.OptimizedProgram.new/3 which doesn’t exist
  • Impact: BEACON cannot wrap programs that don’t natively support demos
  • Found in your code: optimized_program.ex exists but may not have the required interface

C. DSPEx.Program Behavior Incomplete

  • Status: ⚠️ PARTIALLY IMPLEMENTED
  • Issues:
    • Missing program_name/1 utility function referenced in telemetry
    • No validation of program behavior implementation
    • Unclear forward/3 vs forward/2 handling in complex scenarios

2. Signature System Gaps

A. Missing Signature Extension Capabilities

  • Status: ❌ MISSING
  • Issue: Your BEACON code references DSPEx.Signature.extend/2 which doesn’t exist
  • Required for: ChainOfThought and other multi-step reasoning programs
  • Needed:
    # In DSPEx.Signature module
    def extend(base_signature, additional_fields) do
      # Create extended signature with reasoning fields
    end
    

B. Signature Introspection Incomplete

  • Status: ⚠️ PARTIALLY IMPLEMENTED
  • Issues:
    • Your signatures have input_fields/0 and output_fields/0 but BEACON needs more introspection
    • Missing description/0 fallback handling in some scenarios
    • No signature validation utilities

3. Client Architecture Issues

A. Multi-Provider Request Handling

  • Status: ⚠️ NEEDS VERIFICATION
  • Issue: BEACON needs to make requests with specific provider selection
  • Your code: Has DSPEx.Client.request/3 but unclear if provider selection works reliably
  • Required verification:
    # Must work reliably
    DSPEx.Client.request(messages, %{provider: :openai, correlation_id: id})
    DSPEx.Client.request(messages, %{provider: :gemini, correlation_id: id})
    

B. GenServer Client State Management

  • Status: ⚠️ INCOMPLETE
  • Issue: Your client_manager.ex shows Foundation integration but actual provider clients may not be production-ready
  • Required: Stable, tested multi-provider client pool

4. Foundation Integration Inconsistencies

A. Telemetry Event Definitions

  • Status: ⚠️ INCONSISTENT
  • Issue: BEACON emits specific telemetry events that may not be properly handled
  • Required events:
    [:dspex, :teleprompter, :beacon, :start]
    [:dspex, :teleprompter, :beacon, :bootstrap, :start]
    [:dspex, :teleprompter, :beacon, :optimization, :start]
    # And corresponding :stop events
    

B. Configuration Management

  • Status: ⚠️ MAY BE INCOMPLETE
  • Issue: BEACON needs reliable access to provider configurations for instruction generation
  • Your code: ConfigManager exists but may not be fully integrated with client selection

5. Testing Infrastructure Gaps

A. Mock Framework

  • Status: ❌ INSUFFICIENT FOR BEACON
  • Issue: BEACON requires sophisticated mocking for:
    • Multi-provider LLM calls
    • Bootstrap demonstration generation
    • Bayesian optimization trials
  • Your code: Has basic mocking but not comprehensive enough for BEACON’s complex workflows

B. Integration Test Setup

  • Status: ❌ MISSING
  • Issue: No end-to-end tests that verify the complete teleprompter workflow
  • Required: Tests that validate student → teacher → optimized student pipeline

Implementation Priority Order

Phase 1: Core Infrastructure (BEFORE BEACON)

  1. Implement DSPEx.Teleprompter Behavior (1-2 days)

    # lib/dspex/teleprompter.ex
    defmodule DSPEx.Teleprompter do
      @callback compile(student, teacher, trainset, metric_fn, opts) :: result
    
      # Helper functions for teleprompter validation
      def validate_student(student), do: # ...
      def validate_teacher(teacher), do: # ...
      def validate_trainset(trainset), do: # ...
    end
    
  2. Complete DSPEx.OptimizedProgram (1 day)

    # Ensure this matches BEACON's expectations
    defmodule DSPEx.OptimizedProgram do
      def new(program, demos, metadata \\ %{})
      def get_demos(optimized_program)
      def get_program(optimized_program)
    end
    
  3. Fix DSPEx.Program Utilities (1 day)

    # Add missing functions referenced by BEACON
    defmodule DSPEx.Program do
      def program_name(program), do: # Extract module name
      def implements_program?(module), do: # Check behavior
    end
    

Phase 2: Enhanced Signature Support (2-3 days)

  1. Add Signature Extension

    defmodule DSPEx.Signature do
      def extend(base_signature, additional_fields)
      def get_field_info(signature, field)
      def validate_signature_compatibility(sig1, sig2)
    end
    
  2. Enhanced Signature Introspection

    • Add better description/0 fallbacks
    • Add signature validation utilities
    • Add field metadata extraction

Phase 3: Client Stability (2-3 days)

  1. Verify Multi-Provider Reliability

    • Test provider switching under load
    • Verify correlation_id propagation
    • Test error handling across providers
  2. Foundation Integration Verification

    • Verify all telemetry events work
    • Test configuration hot-reloading
    • Verify service registry integration

Phase 4: Testing Infrastructure (2-3 days)

  1. Enhanced Mock Framework

    # Better mocking for BEACON's needs
    defmodule DSPEx.Test.MockProvider do
      def setup_bootstrap_mocks(teacher_responses)
      def setup_instruction_generation_mocks(instruction_responses)
      def setup_evaluation_mocks(scores)
    end
    
  2. Integration Test Suite

    • End-to-end teleprompter workflow tests
    • Multi-provider switching tests
    • Error recovery tests

Immediate Action Items

Before BEACON Integration - Essential Steps:

  1. Create lib/dspex/teleprompter.ex with the behavior definition
  2. Verify lib/dspex/optimized_program.ex matches BEACON’s interface expectations
  3. Add missing utility functions to DSPEx.Program
  4. Test client stability under BEACON’s concurrent load patterns
  5. Set up enhanced test mocks for teleprompter workflows

Validation Tests to Run:

# Test these work before BEACON integration
{:ok, student} = DSPEx.Predict.new(TestSignature, :gemini)  
{:ok, teacher} = DSPEx.Predict.new(TestSignature, :openai)
{:ok, response} = DSPEx.Client.request(messages, %{provider: :openai})
{:ok, optimized} = DSPEx.OptimizedProgram.new(student, demos)

Risk Assessment

  • HIGH RISK: Missing teleprompter behavior will cause immediate compilation failures
  • MEDIUM RISK: Client instability could cause intermittent BEACON failures
  • LOW RISK: Missing utilities will cause runtime errors but are easy to fix

Recommendation

Do NOT integrate BEACON yet. Complete Phase 1 infrastructure first, then validate with simple teleprompter tests before adding BEACON’s complexity. The missing DSPEx.Teleprompter behavior alone will prevent compilation.

Your BEACON implementation looks excellent and production-ready, but your core DSPEx infrastructure needs these foundational pieces before it can support sophisticated teleprompters like BEACON.