> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dotready.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Ready Product Tree Manifest Files Schema Reference

> Complete schema reference for all Ready manifest files: the root stage registry, per-stage manifests, governance manifests, and artifact manifests.

Ready product trees use four distinct manifest files to describe structure, stage layout, governance, and artifact organization. Each manifest has a unique `schema` value that tools use to distinguish it from primitive source records and other YAML in the tree. This page documents every field in every manifest type.

## Root manifest (`ready/manifest.yaml`)

The root manifest is the single source of truth for stage discovery. Every tool that loads the product tree must read this file first. Do not infer stage order, default selection, or stage meaning from directory names — read them from this manifest.

**Schema:** `readyroom/product-tree-root/v1`

```yaml theme={null}
schema: "readyroom/product-tree-root/v1"
product: "{{PRODUCT_ID}}"
source_root: "ready"
default_stage: "{{DEFAULT_STAGE_ID}}"
governance_directory: "ready/governance"
ready_standard:
  repository: "https://github.com/seanbhart/ready-standard"
  docs_source: "https://github.com/seanbhart/ready-standard/tree/main/docs"
  skill_package_source: "https://github.com/seanbhart/ready-standard/tree/main/skills"
  templates_source: "https://github.com/seanbhart/ready-standard/tree/main/templates"
stages:
  - id: "m1"
    title: "M1"
    path: "ready/m1"
    manifest: "ready/m1/manifest.yaml"
    kind: "normal"
    status: "active"
    order: 10
    default_candidate: true
    coding_claims_enabled: false
  - id: "end-state"
    title: "End State"
    path: "ready/end-state"
    manifest: "ready/end-state/manifest.yaml"
    kind: "horizon"
    status: "horizon"
    order: 9999
    default_candidate: false
    coding_claims_enabled: false
```

### Root manifest fields

<ParamField path="schema" type="string" required>
  Always `readyroom/product-tree-root/v1`.
</ParamField>

<ParamField path="product" type="string" required>
  A stable identifier for this product. Used by tools to namespace ids and compiled outputs.
</ParamField>

<ParamField path="source_root" type="string" required>
  The root directory of the product tree relative to the repo root. Always `ready` for standard trees.
</ParamField>

<ParamField path="default_stage" type="string">
  The id of the stage that tools should load when no stage is specified. If absent, tools apply the deterministic fallback order: highest `order` normal `default_candidate`, then highest `order` normal stage, then non-normal stages.
</ParamField>

<ParamField path="governance_directory" type="string">
  Path to the governance directory. Defaults to `ready/governance`.
</ParamField>

<ParamField path="ready_standard" type="object">
  References to the Ready standard package. Includes `repository`, `docs_source`, `skill_package_source`, and `templates_source` URLs.
</ParamField>

<ParamField path="stages" type="array" required>
  The ordered list of stage descriptors. Each entry is a stage object documented below.
</ParamField>

### Stage object fields

<ParamField path="id" type="string" required>
  The stable stage identifier — for example `m1`, `m2`, `alpha`, or `end-state`. Must be unique within the stages list.
</ParamField>

<ParamField path="title" type="string" required>
  Human-readable label for the stage, used in compiled views and navigation.
</ParamField>

<ParamField path="path" type="string" required>
  Repo-relative path to the stage directory — for example `ready/m1`.
</ParamField>

<ParamField path="manifest" type="string" required>
  Repo-relative path to the stage manifest file — for example `ready/m1/manifest.yaml`.
</ParamField>

<ParamField path="kind" type="enum" required>
  The stage kind. Valid values:

  * `normal` — a buildable product stage
  * `horizon` — a future product concept shelf, not claimable implementation work
  * `experiment` — an alternative branch or product plan
  * `archive` — a historical stage, not eligible for default selection
  * `template` — a reusable starter shape
</ParamField>

<ParamField path="status" type="string" required>
  The current stage status. Common values: `active`, `complete`, `horizon`.
</ParamField>

<ParamField path="order" type="integer" required>
  Numeric sort order used for default-stage selection and display. Higher numbers come later. The `end-state` horizon stage conventionally uses `9999`.
</ParamField>

<ParamField path="default_candidate" type="boolean" required>
  Set `true` for stages that are eligible to be selected as the default when `default_stage` is absent. Horizon, archive, and template stages should be `false`.
</ParamField>

<ParamField path="coding_claims_enabled" type="boolean" required>
  Set `true` only for stages where seed and delta flags are actively gating coding claims. Leave `false` until the stage is ready for implementation work.
</ParamField>

***

## Stage manifest (`ready/m1/manifest.yaml`)

Each stage directory contains its own manifest. The stage manifest records per-stage metadata, pointers to primitive directories, flag directories, artifact directories, and governance doc paths.

**Schema:** `readyroom/product-tree/v1`

```yaml theme={null}
schema: "readyroom/product-tree/v1"
product: "{{PRODUCT_ID}}"
milestone: "{{MILESTONE_ID}}"
stage:
  id: "{{MILESTONE_ID}}"
  title: "{{MILESTONE_TITLE}}"
  kind: "normal"
  status: "active"
  order: 10
  default_candidate: true
  coding_claims_enabled: false
source_model: "file_per_record_ready_yaml"
source_root: "ready/{{MILESTONE_ID}}"
governance_docs:
  root: "../governance/"
  agent_guidelines: "../governance/agent-guidelines.md"
  product_orchestrator_charter: "../governance/product-orchestrator-charter.md"
  product_process: "../governance/product-process.md"
  workspace_authority_and_access: "../governance/workspace-authority-and-access.md"
ready_standard:
  repository: "https://github.com/seanbhart/ready-standard"
  docs_source: "https://github.com/seanbhart/ready-standard/tree/main/docs"
  skill_package_source: "https://github.com/seanbhart/ready-standard/tree/main/skills"
  templates_source: "https://github.com/seanbhart/ready-standard/tree/main/templates"
primitive_directories:
  premises: "premises/"
  intents: "intents/"
  standards: "standards/"
  services: "services/"
flag_directories:
  seed: "flags/seed/"
  delta: "flags/delta/"
  discovery: "flags/discovery/"
artifact_directories:
  index: "artifacts.md"
  manifest: "artifacts/manifest.yaml"
  samples: "artifacts/samples/"
  resources: "artifacts/resources/"
  snippets: "artifacts/snippets/"
  designs: "artifacts/designs/"
  manifests: "artifacts/manifests/"
```

### Key stage manifest fields

<ParamField path="schema" type="string" required>
  Always `readyroom/product-tree/v1`.
</ParamField>

<ParamField path="milestone" type="string" required>
  The stage id. Matches the `id` value in the root manifest's `stages` list and the `milestone` field on every primitive in this stage.
</ParamField>

<ParamField path="stage" type="object" required>
  A copy of the stage descriptor from the root manifest. Allows the stage manifest to be loaded independently.
</ParamField>

<ParamField path="source_model" type="string" required>
  Always `file_per_record_ready_yaml` for standard trees. Tells importers how to discover primitives.
</ParamField>

<ParamField path="source_root" type="string" required>
  Repo-relative path to the stage directory.
</ParamField>

<ParamField path="governance_docs" type="object">
  Relative paths to each governance document. Tools use these to link primitives to the governing policy documents.
</ParamField>

<ParamField path="primitive_directories" type="object">
  Relative paths to each primitive type directory within the stage. Tools scan these directories for `.ready.yml` files.
</ParamField>

<ParamField path="flag_directories" type="object">
  Relative paths to the seed, delta, and discovery flag directories.
</ParamField>

<ParamField path="artifact_directories" type="object">
  Relative paths to the artifact index file and each artifact subdirectory.
</ParamField>

***

## Governance manifest (`ready/governance/`)

The governance manifest describes the project-specific governance documents stored under `ready/governance/`.

**Schema:** `readyroom/governance-tree/v1`

```yaml theme={null}
schema: "readyroom/governance-tree/v1"
governance_root: "ready/governance"
documents:
  - id: "GV-001"
    path: "ready/governance/agent-guidelines.md"
    role: "agent_behavior_guidelines"
  - id: "GV-002"
    path: "ready/governance/product-orchestrator-charter.md"
    role: "product_orchestrator_charter"
  - id: "GV-003"
    path: "ready/governance/product-process.md"
    role: "source_product_process"
  - id: "GV-004"
    path: "ready/governance/workspace-authority-and-access.md"
    role: "workspace_authority_policy_seed"
rules:
  - "Project-specific governance documents are first-class product-tree records."
  - "Reusable Ready standard resources live in the Ready standard package rather than ready/governance."
  - "Governance documents are not artifacts."
```

<ParamField path="schema" type="string" required>
  Always `readyroom/governance-tree/v1`.
</ParamField>

<ParamField path="governance_root" type="string" required>
  Repo-relative path to the governance directory.
</ParamField>

<ParamField path="documents" type="array" required>
  List of governance document entries. Each entry has an `id`, a `path`, and a `role` that classifies the document's function.
</ParamField>

<ParamField path="rules" type="array">
  Enforcement rules that validators and importers apply to governance content.
</ParamField>

***

## Artifact manifest (`ready/m1/artifacts/manifest.yaml`)

The artifact manifest describes the artifact families available within a stage and the rules that govern them.

**Schema:** `readyroom/artifact-tree/v1`

```yaml theme={null}
schema: "readyroom/artifact-tree/v1"
artifact_root: "ready/m1/artifacts"
artifact_index: "ready/m1/artifacts.md"
artifact_types:
  sample_data:
    id_prefix: "SA"
    directory: "samples/"
    validation: "json_parse"
    privacy: "sanitized_fixture_or_explicit_user_stub"
  resource:
    id_prefix: "RE"
    directory: "resources/"
    validation: "markdown_json_yaml_or_external_ref"
    privacy: "safe_ref_or_public_resource"
  snippet:
    id_prefix: "SN"
    directory: "snippets/"
    validation: "markdown_or_text"
  design:
    id_prefix: "DA"
    directory: "designs/"
    validation: "external_or_binary_ref"
  manifest:
    id_prefix: "MA"
    directory: "manifests/"
    validation: "json_or_yaml_parse"
rules:
  - "Artifacts support primitives, flags, proof, or generated views; they are not product primitives."
  - "Governing docs and standard resources do not live under artifacts."
```

<ParamField path="schema" type="string" required>
  Always `readyroom/artifact-tree/v1`.
</ParamField>

<ParamField path="artifact_root" type="string" required>
  Repo-relative path to the stage's artifact directory.
</ParamField>

<ParamField path="artifact_index" type="string" required>
  Repo-relative path to the human-readable artifact index Markdown file.
</ParamField>

<ParamField path="artifact_types" type="object" required>
  A map of artifact family keys to their configuration. Each family specifies:

  * `id_prefix` — the prefix used for artifact ids in this family
  * `directory` — the subdirectory within `artifact_root`
  * `validation` — the parse or format check applied by validators
  * `privacy` — the required privacy classification for artifacts in this family
</ParamField>

<ParamField path="rules" type="array">
  Enforcement rules applied to artifact content.
</ParamField>

<Note>
  Artifact ids must be unique within their artifact family. The validator checks `SA-*` ids across all `samples/` entries, `RE-*` ids across all `resources/` entries, and so on. See [Validator Rules](/reference/validator-rules) for the full list of checks.
</Note>
