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

# formation.research_index/v0.1

Frontmatter fields of a `research_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.research_index/v0.1`
- `kind` (required): exactly `research_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
- `records` (required): array of 0 to 256 items, each map (fields listed below)
- `records[].source_id` (required): research record identifier, pattern `^[a-z0-9](?:[a-z0-9-]{0,126}[a-z0-9])?$`, at most 128 characters. The research record identifier; its page is `records[].path`.
- `records[].path` (required): resource path, pattern `^\/[A-Za-z0-9._~/-]{0,255}$`, at most 256 characters
- `records[].type` (required): one of `empirical_incident`, `paper`
- `records[].confidence` (required): one of `descriptive_only`, `correlational`, `controlled`. What the strongest source behind the record could support, not how much anyone believes it.
- `records[].published_on` (required): source date, pattern `^\d{4}-\d{2}(?:-\d{2})?$`, at most 10 characters
- `records[].patterns` (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`
- `records[].topology_candidates` (required): array of 0 to 16 items, each map (fields listed below)
- `records[].topology_candidates[].id` (required): identifier, pattern `^[a-z][a-z0-9_]{0,63}$`, at most 64 characters
- `records[].topology_candidates[].version` (required): semantic version, pattern `^(?:0|[1-9]\d{0,8})\.(?:0|[1-9]\d{0,8})\.(?:0|[1-9]\d{0,8})(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$`, at most 64 characters
- `records[].topology_candidates[].topology` (required): one of `single`, `reviewer`, `adaptive_review`, `custom`
- `records[].topology_candidates[].patterns` (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`
- `records[].topology_candidates[].vocabulary_refs` (required): array of 1 to 16 items, each map (fields listed below)
- `records[].topology_candidates[].vocabulary_refs[].namespace` (required): vocabulary namespace, pattern `^[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)*$`, at most 96 characters
- `records[].topology_candidates[].vocabulary_refs[].id` (required): vocabulary identifier, pattern `^[a-z][a-z0-9_-]{0,63}$`, at most 64 characters
- `records[].topology_candidates[].vocabulary_refs[].version` (required): semantic version, pattern `^(?:0|[1-9]\d{0,8})\.(?:0|[1-9]\d{0,8})\.(?:0|[1-9]\d{0,8})(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$`, at most 64 characters
- `records[].topology_candidates[].status` (required): one of `proposed`, `experimental`, `validated`
- `records[].qualifies_as_evidence` (required): boolean. Always false: a research record is never evidence.
- `pattern_index` (required): resource path, pattern `^\/[A-Za-z0-9._~/-]{0,255}$`, at most 256 characters
