---
schema: formation.policy/v0.2
kind: formation
capabilities:
  - concurrent_role_invocations
  - isolated_attempts
  - result_selection
dependencies: []
extensions:
  topologyindex.com.catalog:
    values:
      evidence: none
      measured_performance: none
      origin: 'Written by Topology Index for the fails_often_attempts_vary row of the decision guide at /patterns/index.md'
      provenance: synthetic
      signed: 'false'
      status: unvalidated
    version: '0.1.0'
handoffs:
  - from: attempt_a
    max_activations: 1
    to: selector
    when:
      equals: true
      signal: attempt_completed
  - from: attempt_b
    max_activations: 1
    to: selector
    when:
      equals: true
      signal: attempt_completed
  - from: attempt_c
    max_activations: 1
    to: selector
    when:
      equals: true
      signal: attempt_completed
limits:
  max_active_agents: 3
  max_billable_tokens: 300000
  max_model_calls: 48
  max_role_invocations: 6
  max_wall_time_seconds: 1800
name: evaluation-fan-out
patterns:
  - fan_out
roles:
  - allowed_tools:
      - workspace.read
      - workspace.write
    id: attempt_a
    instructions_section: attempt_a
    model_slot: worker_a
  - allowed_tools:
      - workspace.read
      - workspace.write
    id: attempt_b
    instructions_section: attempt_b
    model_slot: worker_b
  - allowed_tools:
      - workspace.read
      - workspace.write
    id: attempt_c
    instructions_section: attempt_c
    model_slot: worker_c
  - allowed_tools:
      - workspace.read
      - checks.run_public
    id: selector
    instructions_section: selector
    model_slot: judge
stop_conditions:
  - accepted_by_external_validator
  - invocation_limit_reached
  - budget_limit_reached
  - wall_time_limit_reached
  - lease_lost
task_classes:
  - evaluation.rubric_judgment
topology: custom
topology_id: parallel_attempts_with_selector
topology_version: '0.1.0'
version: '0.1.0'
---

# Evaluation fan out

Topology Index starter formation. Provenance `synthetic`, status `unvalidated`.
It has never been run or measured by this service, carries no evidence, and is not signed.
Copy it, change what your workload needs, and register it as your own private candidate;
registering it creates no evidence either.

A starting point for the `fails_often_attempts_vary` row of the decision guide at
[/patterns/index.md](/patterns/index.md), which starts with
[fan_out](/patterns/fan_out.md): a hard evaluation task where independent attempts may
differ and a rubric or checker can identify a defensible result. If no outside rule can pick
an attempt, parallel work only multiplies cost and uncertainty.

This deployment cannot execute it:

- its task class is not one this deployment evaluates.
- it declares a `custom` topology with concurrent attempts and an aggregation step.
- its fan-out pattern is not among this deployment’s executable patterns.

A runner here refuses it rather than reducing it to a simpler arrangement. Run it on an
executor that supports each of these, and compare it against a strong single agent on the
same work.

## Attempt a

Solve the evaluation task independently. Record the reasoning and the result in your own
workspace, and do not borrow another attempt’s answer.

## Attempt b

Solve the same task independently using the declared rubric. State uncertainty and leave a
traceable result for the selector.

## Attempt c

Produce another independent result. Look for a materially different route, but do not change
the question or the acceptance rule.

## Selector

Read every completed attempt and apply only the declared rubric or external check. Explain why
the chosen result satisfies it, preserve disagreements, and report when no attempt qualifies.
