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

# formation.starter_index/v0.1

Frontmatter fields of a `starter_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.starter_index/v0.1`
- `kind` (required): exactly `starter_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
- `task_class` (optional): task class, pattern `^[a-z][a-z0-9_]{0,31}(?:\.[a-z][a-z0-9_]{0,31}){1,3}$`, at most 128 characters. Present only on `/starters/index.md?task_class={task_class}`, the view restricted to starters declaring that exact task class.
- `formation_schema` (required): schema identifier, pattern `^formation\.[a-z][a-z0-9_]{0,63}\/v\d{1,4}\.\d{1,4}$`, at most 96 characters
- `label_extension` (required): extension namespace, pattern `^[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)*$`, at most 96 characters
- `signed` (required): boolean. Always false: starters are never signed or published through the registry.
- `qualifies_as_evidence` (required): boolean. Always false: nobody has run a starter here.
- `starters` (required): array of 0 to 256 items, each map (fields listed below)
- `starters[].name` (required): artifact name, pattern `^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$`, at most 64 characters
- `starters[].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
- `starters[].path` (required): resource path, pattern `^\/[A-Za-z0-9._~/-]{0,255}$`, at most 256 characters
- `starters[].provenance` (required): one of `synthetic`, `reconstructed`. `synthetic` (written here) or `reconstructed` (from research).
- `starters[].status` (required): one of `unvalidated`, `proposed`. `unvalidated` (nobody has run it here) or `proposed`.
- `starters[].topology` (required): one of `single`, `reviewer`, `adaptive_review`, `custom`
- `starters[].topology_id` (required): null or identifier, pattern `^[a-z][a-z0-9_]{0,63}$`, at most 64 characters
- `starters[].task_classes` (required): array of 1 to 32 items, each public task class, pattern `^(?:coding|research|documents|reasoning|evaluation|operations|security)(?:\.[a-z][a-z0-9_]{0,31}){1,3}$`, at most 128 characters. Task classes the starter declares; each starts with a task domain (`TASK_DOMAINS`).
- `starters[].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`
- `starters[].pattern_paths` (required): array of 0 to 64 items, each resource path, pattern `^\/[A-Za-z0-9._~/-]{0,255}$`, at most 256 characters
- `starters[].research_record` (required): null or resource path, pattern `^\/[A-Za-z0-9._~/-]{0,255}$`, at most 256 characters
- `vocabulary` (required): map (fields listed below)
- `vocabulary.topology_labels` (required): array of 0 to 4 items, each one of `single`, `reviewer`, `adaptive_review`, `custom`
- `vocabulary.pattern_index` (required): resource path, pattern `^\/[A-Za-z0-9._~/-]{0,255}$`, at most 256 characters
- `vocabulary.candidates` (required): array of 0 to 256 items, each map (fields listed below)
- `vocabulary.candidates[].id` (required): identifier, pattern `^[a-z][a-z0-9_]{0,63}$`, at most 64 characters
- `vocabulary.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
- `vocabulary.candidates[].status` (required): one of `proposed`, `experimental`, `validated`
- `vocabulary.candidates[].research_record` (required): resource path, pattern `^\/[A-Za-z0-9._~/-]{0,255}$`, at most 256 characters
- `vocabulary.candidates[].vocabulary_refs` (required): array of 1 to 16 items, each map (fields listed below)
- `vocabulary.candidates[].vocabulary_refs[].namespace` (required): vocabulary namespace, pattern `^[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)*$`, at most 96 characters
- `vocabulary.candidates[].vocabulary_refs[].id` (required): vocabulary identifier, pattern `^[a-z][a-z0-9_-]{0,63}$`, at most 64 characters
- `vocabulary.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
- `public_catalog` (required): resource path, pattern `^\/[A-Za-z0-9._~/-]{0,255}$`, at most 256 characters
- `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
