Classify the OpenResponses surface and the failing test provider

34cc32225094 · AtlantisPleb · · parent 2c26298299a9

Classify the OpenResponses surface and the failing test provider

Two enumeration proofs went red on main. PERSONA-001's adapter and
request-builder populations are exact sets, and the OpenResponses stub and
the fallback bug's failing test provider both arrived without being named
in them.

FailingTestProvider is in-process like the other test providers: it never
leaves the VM, so it has no model to instruct. The OpenResponses surface
relays a caller's own instructions, the same classification the inference
proxy carries, so it joins that list rather than earning a new one — the
property PERSONA-001 needs from it is identical, that it reach no persona
module, and the test proves that for every relay rather than for one named
controller.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KnhfrafYx5ZGaMbzZEJQ2d
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>

Deploy story

What this commit did to the running system — joined from the forge receipt chain, the part a commit page elsewhere cannot show.

pushed
by user · WAL seq 402 · 2026-08-25T15:35:11.612629Z

Changed files

  • modified test/openagents/providers/persona_boundary_test.exs

Diff

1 file changed, +17 -3

test/openagents/providers/persona_boundary_test.exs modified +17 -3

@@ -66,6 +66,7 @@ defmodule OpenAgents.Providers.PersonaBoundaryTest do

66 66
    OpenAgents.Providers.OpenAI => :outbound_http,
67 67
    OpenAgents.Providers.OpenRouter => :outbound_http,
68 68
    OpenAgents.Providers.VercelGateway => :outbound_http,
69
    OpenAgents.Providers.FailingTestProvider => :in_process,
69 70
    OpenAgents.Providers.FallbackTestProvider => :in_process,
70 71
    OpenAgents.Providers.RecordingTestProvider => :in_process,
71 72
    OpenAgents.Providers.Test => :in_process,

@@ -98,10 +99,12 @@ defmodule OpenAgents.Providers.PersonaBoundaryTest do

98 99
    OpenAgents.CompensationFixtures => :composes_installed_persona,
99 100
    OpenAgents.Persona.Evaluation.Runner => :composes_persona_candidate,
100 101
    OpenAgentsWeb.InferenceProxyController => :relays_caller_instructions,
102
    OpenAgentsWeb.ResponsesController => :relays_caller_instructions,
101 103
    OpenAgents.Conversations => :pins_a_composed_request,
102 104
    OpenAgents.Providers.OpenAI => :adapter,
103 105
    OpenAgents.Providers.OpenRouter => :adapter,
104 106
    OpenAgents.Providers.VercelGateway => :adapter,
107
    OpenAgents.Providers.FailingTestProvider => :adapter,
105 108
    OpenAgents.Providers.FallbackTestProvider => :adapter,
106 109
    OpenAgents.Providers.RecordingTestProvider => :adapter,
107 110
    OpenAgents.Providers.Test => :adapter,

@@ -317,9 +320,20 @@ defmodule OpenAgents.Providers.PersonaBoundaryTest do

317 320
      end
318 321
    end
319 322
320
    test "the inference proxy composes no OpenAgents persona" do
321
      relays = for {module, :relays_caller_instructions} <- @request_sites, do: module
322
      assert relays == [OpenAgentsWeb.InferenceProxyController]
323
    test "a surface that relays a caller's instructions composes no OpenAgents persona" do
324
      relays =
325
        for({module, :relays_caller_instructions} <- @request_sites, do: module)
326
        |> Enum.sort()
327
328
      # Both surfaces take a caller's own instructions and answer them. The
329
      # OpenResponses surface joined the inference proxy here rather than
330
      # earning a classification of its own, because the property PERSONA-001
331
      # needs from it is identical: it must reach no persona module.
332
      assert relays ==
333
               Enum.sort([
334
                 OpenAgentsWeb.InferenceProxyController,
335
                 OpenAgentsWeb.ResponsesController
336
               ])
323 337
324 338
      for module <- relays do
325 339
        reached =

This page updates live while a promote is in flight · changelog