The complete feature reference for Oovra v0.2. Each document is a stand-alone reference for one aspect of the system, with explicit specifications, every flag, every constraint, every error variant, and worked examples.
If you're new to Oovra, start at the parent Documentation/README.md and walk through the demos first — they give you a concrete tour. The v0.1 demos cover architectural properties (lossless round-trip, prose rendering, deep flattening, structural diff, mixed-order regression); the v0.2 demos cover the new operator gamut and sequence-aware compare. This reference is for when you need to look something up: "what does this flag do," "what error can fire here," "what's the formula for body_level."
For first-time readers wanting a top-to-bottom tour of the reference:
-
schema.md — the file format itself. The required fields, the
kind = "atom" | "compound"discriminator, validation rules, joint invariants. Read this first; everything else assumes you know what a valid Oovra file looks like. -
kind-and-delimiters.md — the
body_levelinteger and the chiral delimiter scheme. Foundational for understanding how composition and decomposition actually work mechanically. -
command-create.md — how to author atoms (the only thing you can hand-author).
-
command-compose.md — how to combine atoms (and previously-composed compounds) into deeper compounds. Covers all three modes: file output,
--textprose, and--re-render. -
command-decompose.md — how to recover inputs from a compound. Covers the one-level inspection (default and
--format=json) and the recursive--fulltree extraction. -
command-compare.md — how to diff two files. Covers the kind-aware dispatch (content vs structural) and the new sequence-aware diff that surfaces
movedinputs. -
errors.md — every
OovraErrorvariant catalogued with trigger conditions and canonical messages. Useful both as a debugging reference and for agents that need to parse error output programmatically.
| I want to... | Go to |
|---|---|
| Understand what an Oovra file looks like | schema.md |
| Know what fields are required when | schema.md § joint invariant |
| Compose elements together | command-compose.md |
| Get a paste-ready prompt for an LLM | command-compose.md § Mode 2: --text |
| Recover the inputs of a compound | command-decompose.md |
| Compare two prompts and find what changed (including reorder) | command-compare.md |
| Look up what an error message means | errors.md |
Understand body_level and depth |
kind-and-delimiters.md |
| Add a new atom to an existing library | command-create.md § --new mode |
| Convert an existing Markdown file to an atom | command-create.md § --label mode |
| Migrate a v0.1 library to v0.2 | Run oovra migrate <library-dir>; see schema.md § Migrating from v0.1 |
Get JSON output for use with jq or scripts |
command-decompose.md (--format=json) and command-compare.md (--format=json) |
This reference is for Oovra v0.2. The breaking change from v0.1 was the schema discriminator: numeric order was replaced with explicit kind = "atom" | "compound". The CHANGELOG summarises the full set of changes; v0.2 SPEC is the design document.
- ../demos/ — end-to-end demonstrations of each property in action (split by version:
v0.1/,v0.2/) - build-guide.md — the from-first-principles construction guide for builders reimplementing this from scratch
- ../../CHANGELOG.md — version history
- ../version-reports/v0.1/SPEC-v0.2.md — the v0.2 migration specification