---
schema: formation.doc/v0.1
kind: doc
visibility: public
canonical_url: https://topologyindex.com/docs/schemas/pattern_index/v0.1.md
document_kind: pattern_index
document_schema: formation.pattern_index/v0.1
path: /docs/schemas/pattern_index/v0.1.md
product_api_version: v1
schema_version: v0.1
title: formation.pattern_index/v0.1
---

# formation.pattern_index/v0.1

Frontmatter fields of a `pattern_index` page. This service publishes these pages and never
accepts one, so the schema is a promise about what it serves: its tests check every page
against it. Prose in the body explains; the frontmatter is what to read.

## Fields

- `schema` (required): exactly `formation.pattern_index/v0.1`
- `kind` (required): exactly `pattern_index`
- `visibility` (required): exactly `public`
- `path` (required): resource path, pattern `^\/[A-Za-z0-9._~/-]{0,255}$`, at most 256 characters
- `canonical_url` (required): https URL, pattern `^https:\/\/[A-Za-z0-9.-]+(?:\/\S*)?$`, at most 512 characters
- `product_api_version` (required): API version, pattern `^v\d{1,4}$`, at most 5 characters
- `schema_version` (required): schema version, pattern `^v\d{1,4}\.\d{1,4}$`, at most 11 characters
- `title` (required): title, pattern `^[^\p{Cc}]+$`, at most 200 characters
- `description` (required): description, pattern `^[^\p{Cc}]+$`, at most 400 characters
- `family` (optional): one of `baseline`, `parallelism`, `hierarchy`, `shared_state`, `verification`, `adaptive`, `continuity`. Present only on `/patterns/index.md?family={family}`, the view restricted to one family.
- `choosing` (required): array of 0 to 9 items, each map (fields listed below). The decision guide: where to start by the shape of the task. Every row is a hypothesis to test against a strong single-agent configuration, never a ranking; nothing in it has been measured here.
- `choosing[].shape` (required): one of `small_or_single_owner`, `easier_to_check_than_do`, `needs_rounds_of_criticism`, `splits_into_independent_parts`, `fails_often_attempts_vary`, `needs_plan_before_editing`, `subtasks_unknown_until_started`, `specialist_per_input`, `outlasts_one_context`. Stable identifier of the task shape.
- `choosing[].if_the_task` (required): task shape, pattern `^[^\p{Cc}]+$`, at most 120 characters. The task shape in words, completing "If the task …".
- `choosing[].start_with` (required): one of `single_agent`, `fan_out`, `map_reduce`, `independent_workers`, `lane_swarm`, `supervisor`, `planner_worker`, `role_pipeline`, `hierarchical_delegation`, `blackboard`, `shared_ledger`, `mailbox_network`, `implement_review`, `critic_loop`, `council`, `debate`, `dynamic_spawning`, `coordinator_election`, `adaptive_routing`, `tree_search`, `architecture_search`, `successor_handoff`, `signed_coordination`. The pattern to test first for a task of this shape.
- `choosing[].consider_next` (required): one of `single_agent`, `fan_out`, `map_reduce`, `independent_workers`, `lane_swarm`, `supervisor`, `planner_worker`, `role_pipeline`, `hierarchical_delegation`, `blackboard`, `shared_ledger`, `mailbox_network`, `implement_review`, `critic_loop`, `council`, `debate`, `dynamic_spawning`, `coordinator_election`, `adaptive_routing`, `tree_search`, `architecture_search`, `successor_handoff`, `signed_coordination`. The pattern to test if the first does not fit.
- `choosing[].avoid_when` (required): condition, pattern `^[^\p{Cc}]+$`, at most 160 characters. When the row does not apply.
- `choosing[].common_in` (required): array of 0 to 7 items, each one of `coding`, `research`, `documents`, `reasoning`, `evaluation`, `operations`, `security`. Task domains in which tasks of this shape are common, as a hypothesis; each domain page at `/domains/{domain}.md` gives an example. Never a claim that the row suits the domain.
- `choosing[].starters` (required): array of 0 to 64 items, each resource path, pattern `^\/[A-Za-z0-9._~/-]{0,255}$`, at most 256 characters. Starter formations written for this row (`/starters/{name}/{version}.md`), each declaring the row’s `start_with` pattern: something to copy and adapt once the row is chosen. Unvalidated and unsigned, never evidence; empty when no starter was written for the row.
- `families` (required): array of 1 to 7 items, each map (fields listed below)
- `families[].family` (required): one of `baseline`, `parallelism`, `hierarchy`, `shared_state`, `verification`, `adaptive`, `continuity`
- `families[].patterns` (required): array of 1 to 23 items, each map (fields listed below)
- `families[].patterns[].pattern` (required): one of `single_agent`, `fan_out`, `map_reduce`, `independent_workers`, `lane_swarm`, `supervisor`, `planner_worker`, `role_pipeline`, `hierarchical_delegation`, `blackboard`, `shared_ledger`, `mailbox_network`, `implement_review`, `critic_loop`, `council`, `debate`, `dynamic_spawning`, `coordinator_election`, `adaptive_routing`, `tree_search`, `architecture_search`, `successor_handoff`, `signed_coordination`
- `families[].patterns[].path` (required): resource path, pattern `^\/[A-Za-z0-9._~/-]{0,255}$`, at most 256 characters
- `families[].patterns[].executable_here` (required): boolean. Whether the runner of this deployment provides everything the pattern needs. It says nothing about how well the arrangement works.
- `executable_here` (required): array of 0 to 23 items, each one of `single_agent`, `fan_out`, `map_reduce`, `independent_workers`, `lane_swarm`, `supervisor`, `planner_worker`, `role_pipeline`, `hierarchical_delegation`, `blackboard`, `shared_ledger`, `mailbox_network`, `implement_review`, `critic_loop`, `council`, `debate`, `dynamic_spawning`, `coordinator_election`, `adaptive_routing`, `tree_search`, `architecture_search`, `successor_handoff`, `signed_coordination`. The patterns this deployment can execute, computed from its runner.
- `published_findings` (optional): array of 0 to 64 items, each map (fields listed below). Findings about multi-agent systems in general; on the full index only. The subject of `direction` is multi-agent systems in general.
- `published_findings[].source_id` (required): source identifier, pattern `^(?:arxiv:\d{4}\.\d{4,5}|web:[a-z0-9.-]+(?:\/[A-Za-z0-9._~-]+)+)$`, at most 256 characters. Canonical identifier of the cited source: `arxiv:{id}` for an arXiv paper, `web:{host}{path}` otherwise. One source has one identifier on every page, so findings gathered from several pages can be deduplicated.
- `published_findings[].url` (required): https URL, pattern `^https:\/\/[A-Za-z0-9.-]+(?:\/\S*)?$`, at most 512 characters. The canonical URL of the source.
- `published_findings[].direction` (required): one of `helped`, `no_clear_gain`, `hurt`, `mixed`, `not_tested`. How the page's pattern fared against `compared_against`, as the source reports it: `helped`, the pattern did better than the comparison; `no_clear_gain`, no clear difference between the pattern and the comparison; `hurt`, the pattern did worse than the comparison; `mixed`, better in some conditions and worse in others; `not_tested`, the source documents the problem the pattern addresses but did not test the pattern itself. A direction is a reason to test an arrangement, never a result for it.
- `published_findings[].compared_against` (required): comparison, pattern `^[^\p{Cc}]+$`, at most 200 characters. What the pattern was compared with, in words. It names the comparison, never the page’s own pattern.
- `published_findings[].task_domain` (required): task domain, pattern `^[^\p{Cc}]+$`, at most 160 characters. The task domain as the source states it, in words. Not a closed vocabulary.
- `published_findings[].task_domains` (required): array of 0 to 7 items, each one of `coding`, `research`, `documents`, `reasoning`, `evaluation`, `operations`, `security`. The task domains of `/domains/{domain}.md` the finding belongs to (`TASK_DOMAINS`: `coding`, `research`, `documents`, `reasoning`, `evaluation`, `operations`, `security`); empty when it belongs to none. `security` is agents doing security work; attacks on agents are not tagged with it.
- `published_findings[].benchmarks` (required): array of 0 to 16 items, each benchmark, pattern `^[^\p{Cc}]+$`, at most 80 characters. Benchmark identifiers exactly as the source names them; empty when it names none.
- `research_index` (required): resource path, pattern `^\/[A-Za-z0-9._~/-]{0,255}$`, at most 256 characters
- `contributing` (required): map (fields listed below). The limited outcome-reporting rollout; `guide` holds its terms.
- `contributing.status` (required): exactly `limited_rollout`
- `contributing.guide` (required): resource path, pattern `^\/[A-Za-z0-9._~/-]{0,255}$`, at most 256 characters
