ORA Content Model
ORA = "what we have learned while building (primarily) orbit about inter-agent intelligence."
This is the authoritative spec for how ora entries are structured, classified, and evolved. Every new ora entry MUST conform to this model.
1. Purpose
ORA is not code. It is not session continuity. It is not operational rules enforced by runtime.
ORA is the durable narrative of what we learned and why. It exists because: 1. Fleet sessions produce insights that would otherwise evaporate 2. Operational rules in orbit need a trail back to the evidence that produced them 3. Hypotheses about inter-agent intelligence need a place to incubate before they become doctrine
2. The Three-System Boundary
| System | Scope | Decay |
|---|---|---|
| orbit | Operational rules enforced NOW. RULE_DECK cards, charter sections, TRAM protocol. | Changes only via decision record. |
| ora | The narrative of why — observations, patterns, experiments, failures, the path from evidence to doctrine. | Evolves via maturity levels + supersession. |
| memory | Session continuity — who Chad is, what we're working on, recent context. | Short-term; pruned aggressively. |
Litmus test: If you want to enforce something tomorrow, it goes in orbit. If you want to remember why we enforce it, it goes in ora. If you want the next session to know it exists, it goes in memory.
3. Entry Types
ORA has 8 entry types. Every entry declares one in its frontmatter.
| Type | Code | What it captures | Example |
|---|---|---|---|
| Observation | OBS | A thing that happened. No interpretation yet. | "STRAT session 11 burned 3 agents on a dead lane before catching the collision." |
| Pattern | PAT | A recurring shape across ≥2 observations. Interpretation, not yet tested. | "Agents in parallel lanes converge on identical fixes when they lack shared lane awareness." |
| Synthesis | SYN | A cross-entry integration that names what several entries, artifacts, or operator directives mean together. | "Fleet antagonism dynamics elaborate six related doctrines into one operating frame." |
| Hypothesis | HYP | A testable claim derived from patterns. Has a concrete falsification path. | "Adding lane-check to dispatch will reduce collision-driven rework by >50%." |
| Experiment | EXP | A run against a hypothesis. Describes setup, metric, outcome. | "Ran lane-check dispatch on 2026-04-08. Collisions dropped from 4/day to 0." |
| Doctrine | DOC | A distilled rule with enough evidence to justify enforcement. | "Collision Guard: always git log --since before dispatching code work." |
| Decision | DEC | A choice Chad/STRAT/fleet made, with context and alternatives considered. | "Split hcb-gpt into 4 repos (orbit/camber/heartwood/ora) on 2026-04-12." |
| Failure | FAL | A specific failure worth preserving — what broke, why, what we learned. | "Feed append clobbering incident on CAMBER FEED.md, 2026-04-08." |
Invariant: Every DOC must trace to at least one EXP or FAL. Every EXP must cite a HYP. Every HYP must cite PAT or OBS. The chain OBS → PAT → HYP → EXP → DOC is the evidence ladder. A SYN entry is connective tissue: it can cite any entry type or source artifact, but it does not by itself promote evidence up the ladder unless a later PAT, HYP, EXP, or DOC cites it and names the promotion.
4. Maturity Levels
Entries progress through 5 maturity levels. An entry can stall at any level — that's fine, the level tells the reader how much trust to give it.
| Level | Name | Meaning |
|---|---|---|
| M0 | Raw | Captured once, not yet corroborated. Default for new OBS and FAL. |
| M1 | Corroborated | Observed by ≥2 independent sources (different agents, sessions, days). |
| M2 | Tested | Run through at least one EXP with a declared metric. |
| M3 | Proven | Results replicate. Evidence holds across ≥3 runs or extended observation. |
| M4 | Canonical | Elevated to doctrine. Enforced somewhere in orbit (RULE_DECK, charter, boot protocol). |
Who sets maturity: The author sets M0/M1. M2 requires a linked EXP. M3 requires a pass in the index. M4 requires a linked orbit enforcement artifact (e.g., a RULE_DECK card ID).
5. Lifecycle
Orthogonal to maturity, every entry has a status in its lifecycle:
| Status | Meaning |
|---|---|
draft | In progress, not yet reviewable. |
reviewed | Another agent or Chad has read and signed off. |
canonical | Active, load-bearing. Referenced by orbit or other ora entries. |
superseded | Replaced by a newer entry. Must link forward via superseded_by. |
An entry can be canonical at M1 (e.g., a well-documented failure that everyone agrees happened) or draft at M3 (e.g., evidence is strong but the write-up isn't polished). Status ≠ maturity.
6. Frontmatter Schema
Every entry begins with YAML frontmatter:
---
id: ORA-YYYY-NNNN
type: PAT
date: 2026-04-12
author: STRAT-01
author_provider: claude
confidence: 0.7
status: draft
maturity: M1
tags:
- inter-agent
- collision
- dispatch
sources:
- ORA-YYYY-AAAA
- ORA-YYYY-BBBB
supersedes: null
superseded_by: null
related:
- ORA-YYYY-RRRR
---
Required fields:
id— formatORA-YYYY-NNNN(monotonic within year)type— one of OBS, PAT, SYN, HYP, EXP, DOC, DEC, FALdate— ISO 8601 date when the entry was first writtenauthor— agent name (STRAT-01, VP-GEMINI-01, etc.)author_provider— claude, gemini, openai, or humanstatus— one of draft, reviewed, canonical, supersededmaturity— one of M0-M4tier— fortype: DOCentries, one of1,2, or3; non-DOC entries may omit it
Optional fields:
confidence— 0.0-1.0, author's subjective confidencetags— free-form list; use stable vocabulary (see index/tags.md)sources— ORA IDs of entries this one is built from (evidence chain)supersedes— ORA ID this entry replaces (if any)superseded_by— ORA ID that replaces this entry (if retired)related— ORA IDs of entries that share context but aren't direct evidence
Why provider matters: Ora is about inter-agent intelligence. Tracking which provider authored what lets us see patterns in how different models perceive and classify events. This is a chromatic verification hook — disagreement across providers is signal, not noise.
Doctrine tier semantics
tier is required on doctrine entries after the FLT-1340/FLT-1342 backfill lands. During the transition window, a missing tier on an existing doctrine means "unclassified legacy doctrine," not Tier 1 by default.
---
id: ORA-YYYY-NNNN
type: DOC
maturity: M3
tier: 2
---
| Tier | Name | Loading contract | Typical shape |
|---|---|---|---|
1 | Boot hot zone | Eligible for inline provider boot surfaces. Capped at 5-7 active doctrines. | Judgment shapers that should influence every task even before a narrower reference is loaded. |
2 | Mechanical enforcement | Referenced by ID plus validator/helper/runtime gate when possible. | Rules that should be caught by feed-append, doctrine-parity-check, git hooks, launchd checks, templates, or other machinery. |
3 | Reference library | Loaded on demand by ID, tag, domain, or task trigger. | Valuable doctrine for specific contexts that should not compete for every boot's active attention. |
Changing the Tier 1 set is a governance change, not a drive-by edit. It requires a feed peer-sync addressed to Chad and the active ORA lane STRAT with an explicit response menu. Tier 2/3 classification can be applied mechanically once the Tier 1 list is acknowledged or the ticket's stated timeout expires.
7. Body Structure
After the frontmatter, every entry has a body. Minimum viable body:
# {short title}
## Summary
One paragraph. What is this entry about?
## Evidence
For OBS/FAL: what happened, when, where, who saw it.
For PAT: what observations point to this pattern.
For SYN: what sources are being integrated and what new frame or clarification emerges.
For HYP: what pattern this is testing, what the falsification looks like.
For EXP: setup, metric, result.
For DOC: the rule, plus links to the EXPs that earned it.
For DEC: the choice made, alternatives considered, who decided, when.
## Implications
What this means for fleet operations, orbit enforcement, or future work.
## References
Links to TRAM messages, git commits, feed posts, memory files, or external docs.
Type-specific templates live in schema/templates/.
8. ID Generation
IDs are monotonic within a year. To generate the next ID: 1. List entries/*/.md frontmatter ids 2. Filter to current year (ORA-YYYY-*) 3. Take max, add 1 4. Run scripts/ora-entry-id-guard.sh before committing so filename, frontmatter, and heading identity stay unique.
A helper script can automate this; manual is fine for now.
Reserved range: ORA-YYYY-0001 through ORA-YYYY-0099 are reserved for founding entries — things we retroactively import from old docs, CEO sessions, or vision statements. New live entries start at ORA-YYYY-0100.
9. Supersession Rules
When an entry is replaced: 1. New entry declares supersedes: <old-id> 2. Old entry is updated with superseded_by: <new-id> and status: superseded 3. Old entry is NOT deleted — it stays in place as history 4. The supersession chain is discoverable via index/supersession_chains.md
A superseded entry MAY be cited as a source — the fact that we used to believe X and later believed Y is itself evidence of how our understanding evolved.
10. What Does NOT Belong in ORA
- Code — goes in orbit, camber, or heartwood
- Active operational rules — goes in orbit RULE_DECK or charter
- Session-scoped TODOs — goes in memory
- Call transcripts or raw data — goes in camber
- Customer-facing content — goes in heartwood
- Things you're not sure about — write it as
type: OBS, status: draft, maturity: M0. Being unsure is fine; dumping uncategorized content is not.
11. Version
This content model is v1.2 (2026-05-03). Changes to the model itself are tracked as type: DEC entries with tags: [ora-meta].
- v1.0 — adopted by ORA-2026-0001 on 2026-04-12
- v1.1 — added
SYNsynthesis entries by ORA-2026-0108 on 2026-04-28 - v1.2 — added doctrine
tierfrontmatter semantics by FLT-1340 on 2026-05-03