Skip to main content
Primitive records are the atoms of a Ready product tree. Each record is a single .ready.yml file — plain YAML with a distinct extension so importers know exactly how to parse it. You, your agents, and your tools read compiled views in the Ready Room app or docs; the raw file is optimized for parsing, validation, diffing, and merge review. Every value an app, compiler, validator, search index, or agent must read lives in YAML. Reader-friendly summaries, PM briefs, designer views, and customer-facing docs are compiled from these records.

Common structure

Every primitive shares a base template. The fields below appear in all five types:
schema: readyroom/primitive/v1
kind: primitive
id: I-001
type: intent
title: Browse and edit the primitive-backed product spine
milestone: m1
status: active
summary: The concise product-truth statement.
fields:
  value: Why this matters to the user or operator.
  failure_behavior: What happens when the intent cannot be fulfilled.
refs:
  - from: I-001
    role: serves
    to: P-001
artifacts: []
owner_notes: []

Core file rules

Follow these rules for every primitive record you create or edit:
  • One primitive per file. Never combine multiple records in a single .ready.yml.
  • Keep IDs stable. Paths and titles are refactorable; the id field is the durable identity.
  • Store relationships in refs, not prose. Use directed edges: intent --serves--> premise, intent --contains_premise--> premise, intent --requires--> service, intent --governed_by--> standard.
  • Do not store inverse tree edges. Compiled views derive inverse labels automatically. Do not write premise --serves--> intent or service --serves--> intent.
  • Use compact refs only for outgoing edges. Compact refs infer from as the current primitive’s ID.
  • Reference bulky material, don’t embed it. Store samples, mockups, screenshots, snippets, and generated outputs as artifacts referenced by ID or path.
Do not store local chat logs, raw provider transcripts, source diffs, secrets, or unreviewed scratch content in primitive records. Do not store coding lifecycle state on primitives — seed and delta flags gate coding claims.

Primitive types

Premises explain why the product should exist. Every premise needs evidence confidence and provenance in its fields so reviewers can assess how well-founded the reasoning is. A premise inferred only from documents should be marked inferred or low-confidence until the product lead confirms it.
schema: readyroom/primitive/v1
kind: primitive
id: P-001
type: premise
title: Developers lose context switching between product docs and code
milestone: m1
status: active
summary: Context switching between scattered docs and code increases error rates and slows delivery.
fields:
  evidence: User interviews with 12 engineering leads, Q3 research cohort.
  confidence: high
  provenance: Confirmed by product lead 2024-11-14.
  value: Reducing context switches cuts rework and speeds reviews.
refs: []
artifacts: []
owner_notes: []
Mark unconfirmed premises with confidence: low or confidence: inferred until the product lead signs off. Low-confidence premises are valid open questions — not errors.