Specification

Soustack Specification

1. Scope and Purpose

Soustack is an open specification for representing recipes as structured, interoperable, and progressively computable data.

The primary design goal of this specification is universal adoption: recipes should be publishable with minimal friction, while enabling increasingly powerful capabilities (scaling, timing, scheduling, visualization) as structure is added.

Soustack achieves this by defining:

This document is normative unless otherwise noted.


2. Terminology


3. Profiles (Normative)

Profiles are the primary public contract of the Soustack specification.

A Profile defines a bundle of requirements expressed in terms of:

Profiles support an adoption ladder: publishers can start at Lite with minimal structure, move to Base by adding yield and time, and then opt into stack-backed profiles like Timed, Scalable, or Illustrated as they add structure—without changing the overall document shape.

3.1 Profile Declaration

3.2 Stack Semantics

If a document declares a stack in the stacks map (e.g., "stacks": { "timed": 1 }), it MUST satisfy all requirements of that stack as defined by this specification.

Stacks that impose no additional structural or semantic requirements are not permitted in future major versions.


4. Profile Definitions

Profile: Lite

Purpose: Lowest-friction publishing and ingestion.

Requirements

Guarantees


Profile: Base

Purpose: Minimum cookable baseline.

Requirements

Guarantees


Profile: Illustrated

Purpose: Visually rich, embeddable recipes.

Requirements

Semantic Requirements


Profile: Equipped

Purpose: Declare required tools/equipment.

Requirements


Profile: Prepped

Purpose: Prep guidance and/or mise en place tasks.

Requirements


Profile: Timed

Purpose: Step-level timing.

Requirements


Profile: Scalable

Purpose: Interoperable scaling.

Requirements

Semantic Requirements


5. Stacks

Stacks define capability-specific structural and semantic requirements. Each stack is versioned and defined in its own schema and documentation.

High-value optional stacks include equipment@1 for declaring required equipment with scaling-aware counts and step-level usage references.


6. Semantic Validation

In addition to schema validation, conforming tools MUST enforce semantic rules, including but not limited to:


7. Derived Badges (Informative)

Validators MAY emit derived badges such as:

Badges are informative and do not replace profile conformance.


8. Versioning

This specification uses semantic versioning. Schema identifiers and conformance rules are versioned and MUST be treated as immutable once published.


9. Non-Normative Notes

Non-normative guidance, examples, and adoption notes MAY be published separately and are not part of this specification.

9.1 Legacy Namespace

Note: This section is non-normative.

The canonical host for Soustack schema identifiers and references is https://spec.soustack.org. The previous host https://soustack.spec is legacy and MUST NOT be used for new identifiers or references. Implementations should use https://spec.soustack.org for all schema resolution and validation.

Profiles

Profile Requires Profiles Requires Stacks Description
Base lite Minimum cookable baseline with yield + time
Equipped base equipment Recipe declares required tools/equipment.
Illustrated base illustrated Media present
Lite Lowest-friction publishing with minimal structure
Prepped base prep Recipe includes prep guidance and/or mise en place tasks.
Scalable base quantified, scaling Quantified + scaling
Timed base structured, timed Structured + timed

Stacks

Stack ID Latest Major Requires Required by Profiles Schema Docs
compute 1 quantified, timed stacks/compute.schema.json stacks/compute@1.md
dietary 1 stacks/dietary.schema.json stacks/dietary@1.md
equipment 1 equipped stacks/equipment.schema.json stacks/equipment@1.md
illustrated 1 illustrated stacks/illustrated.schema.json stacks/illustrated@1.md
prep 1 prepped stacks/prep.schema.json stacks/prep@1.md
quantified 1 scalable stacks/quantified.schema.json stacks/quantified@1.md
referenced 1 structured stacks/referenced.schema.json stacks/referenced@1.md
scaling 1 quantified scalable stacks/scaling.schema.json stacks/scaling@1.md
storage 1 stacks/storage.schema.json stacks/storage@1.md
structured 1 timed stacks/structured.schema.json stacks/structured@1.md
substitutions 1 referenced stacks/substitutions.schema.json stacks/substitutions@1.md
techniques 1 stacks/techniques.schema.json stacks/techniques@1.md
timed 1 structured timed stacks/timed.schema.json stacks/timed@1.md